class RubyVM
Constants
- DEFAULT_PARAMS
-
DEFAULT_PARAMS This constant variable shows VM's default parameters. Note that changing these values does not affect VM execution. Specification is not stable and you should not depend on this value. Of course, this constant is MRI specific.
- INSTRUCTION_NAMES
- OPTS
-
OPTS, which shows vm build options
Public Class Methods
stat → Hash Show source
stat(hsh) → hsh
stat(Symbol) → Numeric
static VALUE vm_stat(int argc, VALUE *argv, VALUE self) { static VALUE sym_global_method_state, sym_global_constant_state, sym_class_serial; VALUE arg = Qnil; VALUE hash = Qnil, key = Qnil; if (rb_scan_args(argc, argv, "01", &arg) == 1) { if (SYMBOL_P(arg)) key = arg; else if (RB_TYPE_P(arg, T_HASH)) hash = arg; else rb_raise(rb_eTypeError, "non-hash or symbol given"); } else if (NIL_P(arg)) { hash = rb_hash_new(); } if (sym_global_method_state == 0) { #define S(s) sym_##s = ID2SYM(rb_intern_const(#s)) S(global_method_state); S(global_constant_state); S(class_serial); #undef S } #define SET(name, attr) \ if (key == sym_##name) \ return SERIALT2NUM(attr); \ else if (hash != Qnil) \ rb_hash_aset(hash, sym_##name, SERIALT2NUM(attr)); SET(global_method_state, ruby_vm_global_method_state); SET(global_constant_state, ruby_vm_global_constant_state); SET(class_serial, ruby_vm_class_serial); #undef SET if (!NIL_P(key)) { /* matched key should return above */ rb_raise(rb_eArgError, "unknown key: %"PRIsVALUE, rb_sym2str(key)); } return hash; }
Returns a Hash containing implementation-dependent counters inside the VM.
This hash includes information about method/constant cache serials:
{ :global_method_state=>251, :global_constant_state=>481, :class_serial=>9029 }
The contents of the hash are implementation specific and may be changed in the future.
This method is only expected to work on C Ruby.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.