Module: YTLJit::VM::TypeCodeGen::StringTypeBoxedCodeGen

Includes:
AbsArch
Defined in:
lib/ytljit/vm_type_gen.rb

Constant Summary

Constants included from AbsArch

AbsArch::AL, AbsArch::BL, AbsArch::CL, AbsArch::DL, AbsArch::FUNC_ARG, AbsArch::FUNC_ARG_YTL, AbsArch::FUNC_FLOAT_ARG, AbsArch::FUNC_FLOAT_ARG_YTL, AbsArch::INDIRECT_BPR, AbsArch::INDIRECT_RETR, AbsArch::INDIRECT_SPR, AbsArch::INDIRECT_TMPR, AbsArch::INDIRECT_TMPR2, AbsArch::INDIRECT_TMPR3

Constants included from SSE

SSE::XMM0, SSE::XMM1, SSE::XMM2, SSE::XMM3, SSE::XMM4, SSE::XMM5, SSE::XMM6, SSE::XMM7

Instance Method Summary collapse

Instance Method Details

#gen_copy(context) ⇒ Object



182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/ytljit/vm_type_gen.rb', line 182

def gen_copy(context)
  asm = context.assembler
  val = context.ret_reg
  context.start_using_reg(TMPR2)
  context.start_using_reg(TMPR3)
  context.start_using_reg(FUNC_ARG[0])
  rbstrresurrect = OpMemAddress.new(address_of("rb_str_resurrect"))
  asm.with_retry do
    asm.mov(FUNC_ARG[0], val)
    asm.call_with_arg(rbstrresurrect, 1)
  end
  context.end_using_reg(FUNC_ARG[0])
  context.end_using_reg(TMPR3)
  context.end_using_reg(TMPR2)
  context.ret_reg = RETR

  context
end