Class: RubyVM

Inherits:
Object show all
Defined in:
lib/internal/vm/bytedecoder.rb,
lib/internal/vm/iseq/as_code.rb,
lib/internal/method/signature/iseq.rb,
lib/internal/vm/iseq/as_expression.rb,
ext/internal/vm/vm.c,
ext/internal/vm/iseq/iseq.c,
ext/internal/thread/thread.c,
ext/internal/vm/constants/constants.c,
ext/internal/vm/instruction/instruction.c,
ext/internal/vm/inline_cache/inline_cache.c,
ext/internal/vm/control_frame/control_frame.c

Overview

Internal

Defined Under Namespace

Classes: ControlFrame, InlineCache, Instruction, InstructionSequence

Constant Summary collapse

CALL_ARGS_SPLAT_BIT =
INT2NUM(VM_CALL_ARGS_SPLAT_BIT)
CALL_ARGS_BLOCKARG_BIT =
INT2NUM(VM_CALL_ARGS_BLOCKARG_BIT)
CALL_FCALL_BIT =
INT2NUM(VM_CALL_FCALL_BIT)
CALL_VCALL_BIT =
INT2NUM(VM_CALL_VCALL_BIT)
CALL_TAILCALL_BIT =
INT2NUM(VM_CALL_TAILCALL_BIT)
CALL_TAILRECURSION_BIT =
INT2NUM(VM_CALL_TAILRECURSION_BIT)
CALL_SUPER_BIT =
INT2NUM(VM_CALL_SUPER_BIT)
CALL_SEND_BIT =
INT2NUM(VM_CALL_SEND_BIT)
SPECIAL_OBJECT_VMCORE =
INT2NUM(VM_SPECIAL_OBJECT_VMCORE)
SPECIAL_OBJECT_CBASE =
INT2NUM(VM_SPECIAL_OBJECT_CBASE)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.currentRubyVM

Returns the current ruby VM.

Returns:



31
32
33
34
35
36
37
38
39
40
41
42
# File 'ext/internal/vm/vm.c', line 31

static VALUE vm_current(VALUE klass)
{
#ifdef HAVE_TYPE_STRUCT_RTYPEDDATA
  VALUE thread = rb_thread_current();
  rb_thread_t * th;
  ID * local_tbl;
  GetThreadPtr(thread, th);
  return th->vm->self;
#else
  return ruby_current_vm->self;
#endif
}

Instance Method Details

#top_selfObject

Returns the VM’s “top self”.



50
51
52
53
54
55
56
57
# File 'ext/internal/vm/vm.c', line 50

static VALUE vm_top_self(VALUE self)
{
  rb_vm_t * vm;
  
  Data_Get_Struct(self, rb_vm_t, vm);

  return vm->top_self;
}