Module: YTLJit::VM::TypeCodeGen::FloatTypeUnboxedCodeGen

Includes:
AbsArch, CommonCodeGen
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

Methods included from CommonCodeGen

#dump_context, #gen_alloca, #gen_call

Instance Method Details

#gen_boxing(context) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/ytljit/vm_type_gen.rb', line 107

def gen_boxing(context)
  asm = context.assembler
  val = context.ret_reg
  vnode = context.ret_node
  context.start_using_reg(TMPR2)
  context.start_arg_reg(FUNC_FLOAT_ARG)
  context.start_arg_reg
  rbfloatnew = OpMemAddress.new(address_of("rb_float_new"))
=begin
  # This is sample of backtrace
  sh = OpMemAddress.new(address_of("ytl_step_handler"))
  context = gen_call(context, sh, 0, vnode)
=end
  asm.with_retry do
    asm.mov(FUNC_FLOAT_ARG[0], val)
  end
  context.set_reg_content(FUNC_FLOAT_ARG[0].dst_opecode, vnode)
  context = gen_call(context, rbfloatnew, 1, vnode)
  context.end_arg_reg
  context.end_arg_reg(FUNC_FLOAT_ARG)
#          context.end_using_reg(TMPR3)
  context.end_using_reg(TMPR2)
  context.ret_reg = RETR
  context
end

#gen_unboxing(context) ⇒ Object



133
134
135
# File 'lib/ytljit/vm_type_gen.rb', line 133

def gen_unboxing(context)
  context
end