Spec-Zone.ru › Ruby 2.6

класс RubyVM

Родитель:
Объект

Модуль RubyVM предоставляет доступ к внутренним компонентам Ruby. Этот модуль предназначен для ограниченного использования, например, для отладки, прототипирования и исследований. Обычным пользователям его использовать не следует.

Константы

DEFAULT_PARAMS

DEFAULT_PARAMS Эта константа отображает параметры по умолчанию виртуальной машины. Обратите внимание, что изменение этих значений не влияет на выполнение виртуальной машины. Спецификация нестабильна, и вы не должны полагаться на это значение. Конечно, эта константа специфична для MRI.

INSTRUCTION_NAMES

INSTRUCTION_NAMES

OPTS

OPTS, который отображает параметры сборки виртуальной машины

Публичные методы класса

stat → Хэш Показать исходный код
stat(hsh) → hsh
stat(Символ) → Число
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_check_arity(argc, 0, 1) == 1) {
        arg = argv[0];
        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 {
        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;
}

Возвращает Hash содержащий зависящие от реализации счетчики внутри виртуальной машины.

Этот хэш содержит информацию о серийных номерах кэша методов/констант:

{
  :global_method_state=>251,
  :global_constant_state=>481,
  :class_serial=>9029
}

Содержимое хэша зависит от реализации и может быть изменено в будущем.

Этот метод ожидается работать только с C Ruby.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API