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
155 156 157 |
# File 'lib/ytljit/vm_type_gen.rb', line 155 def include_nil? false end |