22 lines
568 B
Ruby
22 lines
568 B
Ruby
module RubyVM::MJIT
|
|
class Context < Struct.new(
|
|
:stack_size, # @param [Integer] The number of values on the stack
|
|
:sp_offset, # @param [Integer] JIT sp offset relative to the interpreter's sp
|
|
)
|
|
def initialize(stack_size: 0, sp_offset: 0) = super
|
|
|
|
def stack_push(size = 1)
|
|
opnd = [SP, C.VALUE.size * self.sp_offset]
|
|
self.stack_size += size
|
|
self.sp_offset += size
|
|
opnd
|
|
end
|
|
|
|
def stack_pop(size = 1)
|
|
self.stack_size -= size
|
|
self.sp_offset -= size
|
|
[SP, C.VALUE.size * self.sp_offset]
|
|
end
|
|
end
|
|
end
|