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, #gen_save_thepr

Instance Method Details

#gen_boxing(context) ⇒ Object



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/ytljit/vm_type_gen.rb', line 122

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
  addr = lambda {
    a = address_of("rb_float_new")
    $symbol_table[a] = "rb_float_new"
    a
  }
  rbfloatnew = OpVarMemAddress.new(addr)
=begin
  # This is sample of backtrace
  sh = OpMemAddress.new(address_of("ytl_step_handler"))
  context = gen_save_thepr(context)
  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_save_thepr(context)
  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



159
160
161
# File 'lib/ytljit/vm_type_gen.rb', line 159

def gen_unboxing(context)
  context
end

#include_nil?Boolean

Returns:

  • (Boolean)


155
156
157
# File 'lib/ytljit/vm_type_gen.rb', line 155

def include_nil?
  false
end