Created
August 30, 2009 07:41
-
-
Save dbussink/177899 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
GNU gdb 6.8-debian | |
Copyright (C) 2008 Free Software Foundation, Inc. | |
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> | |
This is free software: you are free to change and redistribute it. | |
There is NO WARRANTY, to the extent permitted by law. Type "show copying" | |
and "show warranty" for details. | |
This GDB was configured as "x86_64-linux-gnu"... | |
(gdb) run | |
Starting program: /home/dbussink/rubinius/bin/rbx -XJ | |
[Thread debugging using libthread_db enabled] | |
[New Thread 0x7fb3a1e7a6f0 (LWP 28777)] | |
[New Thread 0x4257f950 (LWP 28780)] | |
[New Thread 0x40eab950 (LWP 28784)] | |
Overloaded intrinsic has incorrect suffix: '.i31'. It should be '.i63' | |
%0 (i63, i63)* @llvm.ssub.with.overflow.i31 | |
Broken module found, verification continues. | |
ERROR: complication error detected. | |
ERROR: Please report the above message and the | |
code below to http://github.com/evanphx/rubinius/issues | |
define %"struct.rubinius::Object"* @13(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %previous, %"struct.rubinius::Dispatch"* %msg, %"struct.rubinius::Arguments"* %args) { | |
entry: | |
%valid_flag = alloca i1 ; <i1*> [#uses=0] | |
%cfstk = alloca %"struct.rubinius::Object"*, i32 15 ; <%"struct.rubinius::Object"**> [#uses=2] | |
%var_mem = alloca %"struct.rubinius::Object"*, i32 8 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%total_pos = getelementptr %"struct.rubinius::Arguments"* %args, i32 0, i32 2 ; <i32*> [#uses=1] | |
%arg.total = load i32* %total_pos ; <i32> [#uses=1] | |
%arg_cmp = icmp ne i32 %arg.total, 0 ; <i1> [#uses=1] | |
%out_args = alloca %"struct.rubinius::Arguments" ; <%"struct.rubinius::Arguments"*> [#uses=11] | |
%out_args_recv = getelementptr %"struct.rubinius::Arguments"* %out_args, i32 0, i32 0 ; <%"struct.rubinius::Object"**> [#uses=6] | |
%out_args_block = getelementptr %"struct.rubinius::Arguments"* %out_args, i32 0, i32 1 ; <%"struct.rubinius::Object"**> [#uses=6] | |
%out_args_total = getelementptr %"struct.rubinius::Arguments"* %out_args, i32 0, i32 2 ; <i32*> [#uses=6] | |
%out_args_arguments = getelementptr %"struct.rubinius::Arguments"* %out_args, i32 0, i32 3 ; <%"struct.rubinius::Object"***> [#uses=5] | |
%out_args_array = getelementptr %"struct.rubinius::Arguments"* %out_args, i32 0, i32 4 ; <%"struct.rubinius::Array"**> [#uses=6] | |
br i1 %arg_cmp, label %arg_error, label %import_args | |
arg_error: ; preds = %entry | |
%ret = call %"struct.rubinius::Object"* @rbx_arg_error(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %previous, %"struct.rubinius::Dispatch"* %msg, %"struct.rubinius::Arguments"* %args, i32 0) ; <%"struct.rubinius::Object"*> [#uses=1] | |
ret %"struct.rubinius::Object"* %ret | |
import_args: ; preds = %entry | |
%call_frame = bitcast %"struct.rubinius::Object"** %cfstk to %"struct.rubinius::CallFrame"* ; <%"struct.rubinius::CallFrame"*> [#uses=28] | |
%stack = getelementptr %"struct.rubinius::Object"** %cfstk, i32 7 ; <%"struct.rubinius::Object"**> [#uses=85] | |
%vars = bitcast %"struct.rubinius::Object"** %var_mem to %"struct.rubinius::StackVariables"* ; <%"struct.rubinius::StackVariables"*> [#uses=32] | |
%0 = getelementptr %"struct.rubinius::Dispatch"* %msg, i32 0, i32 2 ; <%"struct.rubinius::Executable"**> [#uses=1] | |
%msg.exec = load %"struct.rubinius::Executable"** %0 ; <%"struct.rubinius::Executable"*> [#uses=1] | |
%1 = getelementptr %"struct.rubinius::CallFrame"* %call_frame, i32 0, i32 3 ; <%"struct.rubinius::CompiledMethod"**> [#uses=1] | |
%cm = bitcast %"struct.rubinius::Executable"* %msg.exec to %"struct.rubinius::CompiledMethod"* ; <%"struct.rubinius::CompiledMethod"*> [#uses=1] | |
%2 = getelementptr %"struct.rubinius::CallFrame"* %call_frame, i32 0, i32 0 ; <%"struct.rubinius::CallFrame"**> [#uses=1] | |
store %"struct.rubinius::CallFrame"* %previous, %"struct.rubinius::CallFrame"** %2 | |
%3 = getelementptr %"struct.rubinius::CallFrame"* %call_frame, i32 0, i32 2 ; <%"struct.rubinius::Dispatch"**> [#uses=1] | |
store %"struct.rubinius::Dispatch"* %msg, %"struct.rubinius::Dispatch"** %3 | |
store %"struct.rubinius::CompiledMethod"* %cm, %"struct.rubinius::CompiledMethod"** %1 | |
%4 = getelementptr %"struct.rubinius::CallFrame"* %call_frame, i32 0, i32 4 ; <i32*> [#uses=1] | |
store i32 16, i32* %4 | |
%5 = getelementptr %"struct.rubinius::CallFrame"* %call_frame, i32 0, i32 5 ; <i32*> [#uses=1] | |
store i32 0, i32* %5 | |
%6 = getelementptr %"struct.rubinius::CallFrame"* %call_frame, i32 0, i32 7 ; <%"struct.rubinius::StackVariables"**> [#uses=1] | |
store %"struct.rubinius::StackVariables"* %vars, %"struct.rubinius::StackVariables"** %6 | |
%counter_alloca = alloca i32 ; <i32*> [#uses=3] | |
store i32 0, i32* %counter_alloca | |
br label %stack_nil | |
stack_nil: ; preds = %stack_nil, %import_args | |
%counter = load i32* %counter_alloca ; <i32> [#uses=2] | |
%stack_pos = getelementptr %"struct.rubinius::Object"** %stack, i32 %counter ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i32 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos | |
%added = add i32 %counter, 1 ; <i32> [#uses=2] | |
store i32 %added, i32* %counter_alloca | |
%loop_check = icmp eq i32 %added, 8 ; <i1> [#uses=1] | |
br i1 %loop_check, label %bottom, label %stack_nil | |
bottom: ; preds = %stack_nil | |
%7 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 0 ; <%"struct.rubinius::VariableScope"**> [#uses=1] | |
store %"struct.rubinius::VariableScope"* null, %"struct.rubinius::VariableScope"** %7 | |
%8 = getelementptr %"struct.rubinius::Arguments"* %args, i32 0, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%args.recv = load %"struct.rubinius::Object"** %8 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%9 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %args.recv, %"struct.rubinius::Object"** %9 | |
%10 = getelementptr %"struct.rubinius::Dispatch"* %msg, i32 0, i32 1 ; <%"struct.rubinius::Module"**> [#uses=1] | |
%msg.module = load %"struct.rubinius::Module"** %10 ; <%"struct.rubinius::Module"*> [#uses=1] | |
%11 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 4 ; <%"struct.rubinius::Module"**> [#uses=1] | |
store %"struct.rubinius::Module"* %msg.module, %"struct.rubinius::Module"** %11 | |
%12 = getelementptr %"struct.rubinius::Arguments"* %args, i32 0, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%args.block = load %"struct.rubinius::Object"** %12 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%13 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 3 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %args.block, %"struct.rubinius::Object"** %13 | |
%14 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 1 ; <%"struct.rubinius::VariableScope"**> [#uses=1] | |
store %"struct.rubinius::VariableScope"* null, %"struct.rubinius::VariableScope"** %14 | |
%local_pos = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i32 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %local_pos | |
%local_pos1 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i32 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %local_pos1 | |
%local_pos2 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i32 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %local_pos2 | |
%arg_ary_pos = getelementptr %"struct.rubinius::Arguments"* %args, i32 0, i32 3 ; <%"struct.rubinius::Object"***> [#uses=1] | |
%arg_ary = load %"struct.rubinius::Object"*** %arg_ary_pos ; <%"struct.rubinius::Object"**> [#uses=0] | |
%ci294 = call %"struct.rubinius::Object"* @rbx_check_interrupts(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame) ; <%"struct.rubinius::Object"*> [#uses=1] | |
%15 = icmp eq %"struct.rubinius::Object"* %ci294, null ; <i1> [#uses=1] | |
br i1 %15, label %ret_null293, label %method_body | |
bail_out: ; No predecessors! | |
%rth = call i1 @rbx_return_to_here(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame) ; <i1> [#uses=1] | |
br i1 %rth, label %ret_raise_val, label %ret_null | |
ret_raise_val: ; preds = %bail_out | |
%crv = call %"struct.rubinius::Object"* @rbx_clear_raise_value(%"struct.rubinius::VM"* %state) ; <%"struct.rubinius::Object"*> [#uses=1] | |
ret %"struct.rubinius::Object"* %crv | |
ret_null: ; preds = %continue272, %cont197, %dispatch196, %continue174, %continue136, %ip64, %use_call, %ip48, %dispatch88, %continue57, %ip26, %dispatch, %continue, %continue6, %bail_out | |
ret %"struct.rubinius::Object"* null | |
method_body: ; preds = %bottom | |
%ip_pos = getelementptr %"struct.rubinius::CallFrame"* %call_frame, i32 0, i32 5 ; <i32*> [#uses=15] | |
%self_pos = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self = load %"struct.rubinius::Object"** %self_pos ; <%"struct.rubinius::Object"*> [#uses=1] | |
%obj_array = bitcast %"struct.rubinius::Object"* %self to %"struct.rubinius::Object"** ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field_pos = getelementptr %"struct.rubinius::Object"** %obj_array, i32 4 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field = load %"struct.rubinius::Object"** %field_pos ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos3 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %field, %"struct.rubinius::Object"** %stack_pos3 | |
%stack_pos4 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load = load %"struct.rubinius::Object"** %stack_pos4 ; <%"struct.rubinius::Object"*> [#uses=3] | |
%cast = ptrtoint %"struct.rubinius::Object"* %stack_load to i64 ; <i64> [#uses=1] | |
%masked = and i64 %cast, 3 ; <i64> [#uses=1] | |
%is_reference = icmp eq i64 %masked, 0 ; <i1> [#uses=1] | |
br i1 %is_reference, label %check_class_id, label %fallback | |
continue: ; preds = %continue7 | |
%local_pos9 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_pos10 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load11 = load %"struct.rubinius::Object"** %stack_pos10 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load11, %"struct.rubinius::Object"** %local_pos9 | |
%self_pos12 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self13 = load %"struct.rubinius::Object"** %self_pos12 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%obj_array14 = bitcast %"struct.rubinius::Object"* %self13 to %"struct.rubinius::Object"** ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field_pos15 = getelementptr %"struct.rubinius::Object"** %obj_array14, i32 3 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field16 = load %"struct.rubinius::Object"** %field_pos15 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos17 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %field16, %"struct.rubinius::Object"** %stack_pos17 | |
%local_pos18 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local = load %"struct.rubinius::Object"** %local_pos18 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos19 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local, %"struct.rubinius::Object"** %stack_pos19 | |
%stack_pos20 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i64 7 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos20 | |
%execute = load %"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)** getelementptr (%"struct.rubinius::InlineCache"* inttoptr (i64 35563224 to %"struct.rubinius::InlineCache"*), i32 0, i32 3) ; <%"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)*> [#uses=1] | |
%stack_pos23 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load24 = load %"struct.rubinius::Object"** %stack_pos23 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load24, %"struct.rubinius::Object"** %out_args_recv | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %out_args_block | |
store i32 1, i32* %out_args_total | |
%stack_pos25 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"** %stack_pos25, %"struct.rubinius::Object"*** %out_args_arguments | |
store %"struct.rubinius::Array"* null, %"struct.rubinius::Array"** %out_args_array | |
store i32 13, i32* %ip_pos | |
%ic_send = call %"struct.rubinius::Object"* %execute(%"struct.rubinius::VM"* %state, %"struct.rubinius::InlineCache"* inttoptr (i64 35563224 to %"struct.rubinius::InlineCache"*), %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %out_args) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check27 = icmp eq %"struct.rubinius::Object"* %ic_send, null ; <i1> [#uses=1] | |
br i1 %null_check27, label %ret_null, label %continue26 | |
check_class_id: ; preds = %method_body | |
%class_pos = getelementptr %"struct.rubinius::Object"* %stack_load, i32 0, i32 0, i32 1 ; <%"struct.rubinius::Class"**> [#uses=1] | |
%ref_class = load %"struct.rubinius::Class"** %class_pos ; <%"struct.rubinius::Class"*> [#uses=1] | |
%class_id_pos = getelementptr %"struct.rubinius::Class"* %ref_class, i32 0, i32 3 ; <i32*> [#uses=1] | |
%class_id = load i32* %class_id_pos ; <i32> [#uses=1] | |
%check_class_id5 = icmp eq i32 %class_id, 5 ; <i1> [#uses=1] | |
br i1 %check_class_id5, label %correct_class, label %fallback | |
correct_class: ; preds = %check_class_id | |
%prim_value = call %"struct.rubinius::Object"* @jit_stub_tuple_fields(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Object"* %stack_load) ; <%"struct.rubinius::Object"*> [#uses=3] | |
%ptr2int = ptrtoint %"struct.rubinius::Object"* %prim_value to i64 ; <i64> [#uses=1] | |
%16 = icmp eq i64 %ptr2int, 34 ; <i1> [#uses=1] | |
br i1 %16, label %fallback, label %continue6 | |
fallback: ; preds = %correct_class, %check_class_id, %method_body | |
store i32 2, i32* %ip_pos | |
%17 = call %"struct.rubinius::Object"* @rbx_continue_uncommon(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %args, i64 0) ; <%"struct.rubinius::Object"*> [#uses=1] | |
ret %"struct.rubinius::Object"* %17 | |
continue6: ; preds = %correct_class | |
%null_check = icmp eq %"struct.rubinius::Object"* %prim_value, null ; <i1> [#uses=1] | |
br i1 %null_check, label %ret_null, label %continue7 | |
continue7: ; preds = %continue6 | |
%stack_pos8 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %prim_value, %"struct.rubinius::Object"** %stack_pos8 | |
br label %continue | |
continue26: ; preds = %continue | |
%stack_pos28 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %ic_send, %"struct.rubinius::Object"** %stack_pos28 | |
%stack_pos29 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load30 = load %"struct.rubinius::Object"** %stack_pos29 ; <%"struct.rubinius::Object"*> [#uses=2] | |
%stack_pos31 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load32 = load %"struct.rubinius::Object"** %stack_pos31 ; <%"struct.rubinius::Object"*> [#uses=2] | |
%cast33 = ptrtoint %"struct.rubinius::Object"* %stack_load30 to i64 ; <i64> [#uses=1] | |
%cast34 = ptrtoint %"struct.rubinius::Object"* %stack_load32 to i64 ; <i64> [#uses=1] | |
%both = and i64 %cast33, %cast34 ; <i64> [#uses=1] | |
%masked35 = and i64 %both, 1 ; <i64> [#uses=1] | |
%are_fixnums = icmp eq i64 %masked35, 1 ; <i1> [#uses=1] | |
br i1 %are_fixnums, label %fast, label %dispatch | |
fast: ; preds = %continue26 | |
%imm_cmp = icmp sgt %"struct.rubinius::Object"* %stack_load30, %stack_load32 ; <i1> [#uses=1] | |
%select_bool = select i1 %imm_cmp, %"struct.rubinius::Object"* inttoptr (i64 18 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"* inttoptr (i64 10 to %"struct.rubinius::Object"*) ; <%"struct.rubinius::Object"*> [#uses=1] | |
br label %cont | |
dispatch: ; preds = %continue26 | |
%stack_pos36 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store i32 16, i32* %ip_pos | |
%simple_send = call %"struct.rubinius::Object"* @rbx_simple_send(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Object"* inttoptr (i64 2206 to %"struct.rubinius::Object"*), i64 1, %"struct.rubinius::Object"** %stack_pos36) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check37 = icmp eq %"struct.rubinius::Object"* %simple_send, null ; <i1> [#uses=1] | |
br i1 %null_check37, label %ret_null, label %cont | |
cont: ; preds = %fast, %dispatch | |
%compare = phi %"struct.rubinius::Object"* [ %simple_send, %dispatch ], [ %select_bool, %fast ] ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos38 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %compare, %"struct.rubinius::Object"** %stack_pos38 | |
%stack_pos39 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load40 = load %"struct.rubinius::Object"** %stack_pos39 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%as_int = ptrtoint %"struct.rubinius::Object"* %stack_load40 to i64 ; <i64> [#uses=1] | |
%and = and i64 %as_int, 15 ; <i64> [#uses=1] | |
%is_true = icmp eq i64 %and, 10 ; <i1> [#uses=1] | |
br i1 %is_true, label %ip24, label %continue41 | |
continue41: ; preds = %cont | |
br label %ip20 | |
ip20: ; preds = %continue41 | |
%stack_pos42 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos42 | |
%stack_pos43 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load44 = load %"struct.rubinius::Object"** %stack_pos43 ; <%"struct.rubinius::Object"*> [#uses=1] | |
ret %"struct.rubinius::Object"* %stack_load44 | |
ip24: ; preds = %cont | |
%stack_pos45 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos45 | |
br label %ip26 | |
ip26: ; preds = %continue107, %ip24 | |
%local_pos46 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local47 = load %"struct.rubinius::Object"** %local_pos46 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos48 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local47, %"struct.rubinius::Object"** %stack_pos48 | |
%stack_pos49 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i64 5 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos49 | |
%execute52 = load %"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)** getelementptr (%"struct.rubinius::InlineCache"* inttoptr (i64 35563464 to %"struct.rubinius::InlineCache"*), i32 0, i32 3) ; <%"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)*> [#uses=1] | |
%stack_pos53 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load54 = load %"struct.rubinius::Object"** %stack_pos53 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load54, %"struct.rubinius::Object"** %out_args_recv | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %out_args_block | |
store i32 1, i32* %out_args_total | |
%stack_pos55 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"** %stack_pos55, %"struct.rubinius::Object"*** %out_args_arguments | |
store %"struct.rubinius::Array"* null, %"struct.rubinius::Array"** %out_args_array | |
store i32 29, i32* %ip_pos | |
%ic_send56 = call %"struct.rubinius::Object"* %execute52(%"struct.rubinius::VM"* %state, %"struct.rubinius::InlineCache"* inttoptr (i64 35563464 to %"struct.rubinius::InlineCache"*), %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %out_args) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check58 = icmp eq %"struct.rubinius::Object"* %ic_send56, null ; <i1> [#uses=1] | |
br i1 %null_check58, label %ret_null, label %continue57 | |
continue57: ; preds = %ip26 | |
%stack_pos59 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %ic_send56, %"struct.rubinius::Object"** %stack_pos59 | |
%local_pos60 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_pos61 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load62 = load %"struct.rubinius::Object"** %stack_pos61 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load62, %"struct.rubinius::Object"** %local_pos60 | |
%self_pos63 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self64 = load %"struct.rubinius::Object"** %self_pos63 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%obj_array65 = bitcast %"struct.rubinius::Object"* %self64 to %"struct.rubinius::Object"** ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field_pos66 = getelementptr %"struct.rubinius::Object"** %obj_array65, i32 3 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field67 = load %"struct.rubinius::Object"** %field_pos66 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos68 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %field67, %"struct.rubinius::Object"** %stack_pos68 | |
%local_pos69 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local70 = load %"struct.rubinius::Object"** %local_pos69 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos71 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local70, %"struct.rubinius::Object"** %stack_pos71 | |
%stack_pos72 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i64 13 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos72 | |
%execute75 = load %"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)** getelementptr (%"struct.rubinius::InlineCache"* inttoptr (i64 35563584 to %"struct.rubinius::InlineCache"*), i32 0, i32 3) ; <%"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)*> [#uses=1] | |
%stack_pos76 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load77 = load %"struct.rubinius::Object"** %stack_pos76 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load77, %"struct.rubinius::Object"** %out_args_recv | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %out_args_block | |
store i32 1, i32* %out_args_total | |
%stack_pos78 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"** %stack_pos78, %"struct.rubinius::Object"*** %out_args_arguments | |
store %"struct.rubinius::Array"* null, %"struct.rubinius::Array"** %out_args_array | |
store i32 41, i32* %ip_pos | |
%ic_send79 = call %"struct.rubinius::Object"* %execute75(%"struct.rubinius::VM"* %state, %"struct.rubinius::InlineCache"* inttoptr (i64 35563584 to %"struct.rubinius::InlineCache"*), %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %out_args) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check81 = icmp eq %"struct.rubinius::Object"* %ic_send79, null ; <i1> [#uses=1] | |
br i1 %null_check81, label %ret_null, label %continue80 | |
continue80: ; preds = %continue57 | |
%stack_pos82 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %ic_send79, %"struct.rubinius::Object"** %stack_pos82 | |
%stack_pos83 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load84 = load %"struct.rubinius::Object"** %stack_pos83 ; <%"struct.rubinius::Object"*> [#uses=2] | |
%stack_pos85 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load86 = load %"struct.rubinius::Object"** %stack_pos85 ; <%"struct.rubinius::Object"*> [#uses=2] | |
%cast90 = ptrtoint %"struct.rubinius::Object"* %stack_load84 to i64 ; <i64> [#uses=1] | |
%cast91 = ptrtoint %"struct.rubinius::Object"* %stack_load86 to i64 ; <i64> [#uses=1] | |
%both92 = and i64 %cast90, %cast91 ; <i64> [#uses=1] | |
%masked93 = and i64 %both92, 1 ; <i64> [#uses=1] | |
%are_fixnums94 = icmp eq i64 %masked93, 1 ; <i1> [#uses=1] | |
br i1 %are_fixnums94, label %fast87, label %dispatch88 | |
fast87: ; preds = %continue80 | |
%imm_cmp98 = icmp slt %"struct.rubinius::Object"* %stack_load84, %stack_load86 ; <i1> [#uses=1] | |
%select_bool99 = select i1 %imm_cmp98, %"struct.rubinius::Object"* inttoptr (i64 18 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"* inttoptr (i64 10 to %"struct.rubinius::Object"*) ; <%"struct.rubinius::Object"*> [#uses=1] | |
br label %cont89 | |
dispatch88: ; preds = %continue80 | |
%stack_pos95 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store i32 44, i32* %ip_pos | |
%simple_send96 = call %"struct.rubinius::Object"* @rbx_simple_send(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Object"* inttoptr (i64 2198 to %"struct.rubinius::Object"*), i64 1, %"struct.rubinius::Object"** %stack_pos95) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check97 = icmp eq %"struct.rubinius::Object"* %simple_send96, null ; <i1> [#uses=1] | |
br i1 %null_check97, label %ret_null, label %cont89 | |
cont89: ; preds = %fast87, %dispatch88 | |
%addition = phi %"struct.rubinius::Object"* [ %simple_send96, %dispatch88 ], [ %select_bool99, %fast87 ] ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos100 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %addition, %"struct.rubinius::Object"** %stack_pos100 | |
%stack_pos101 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load102 = load %"struct.rubinius::Object"** %stack_pos101 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%as_int103 = ptrtoint %"struct.rubinius::Object"* %stack_load102 to i64 ; <i64> [#uses=1] | |
%and104 = and i64 %as_int103, 15 ; <i64> [#uses=1] | |
%is_true105 = icmp eq i64 %and104, 10 ; <i1> [#uses=1] | |
br i1 %is_true105, label %ip51, label %continue106 | |
continue106: ; preds = %cont89 | |
br label %ip48 | |
ip48: ; preds = %continue106 | |
store i32 48, i32* %ip_pos | |
%ci = call %"struct.rubinius::Object"* @rbx_check_interrupts(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame) ; <%"struct.rubinius::Object"*> [#uses=1] | |
%null_check108 = icmp eq %"struct.rubinius::Object"* %ci, null ; <i1> [#uses=1] | |
br i1 %null_check108, label %ret_null, label %continue107 | |
continue107: ; preds = %ip48 | |
br label %ip26 | |
continue109: ; No predecessors! | |
br label %ip51 | |
ip51: ; preds = %continue109, %cont89 | |
%stack_pos110 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos110 | |
%global_serial = load i64* inttoptr (i64 32663256 to i64*) ; <i64> [#uses=1] | |
%serial = load i64* inttoptr (i64 140409462604064 to i64*) ; <i64> [#uses=1] | |
%use_cache = icmp eq i64 %global_serial, %serial ; <i1> [#uses=1] | |
br i1 %use_cache, label %use_cache111, label %use_call | |
use_cache111: ; preds = %ip51 | |
%cached_value = load %"struct.rubinius::Object"** inttoptr (i64 140409462604056 to %"struct.rubinius::Object"**; <%"struct.rubinius::Object"*> [#uses=1] | |
br label %continue112 | |
use_call: ; preds = %ip51 | |
store i32 53, i32* %ip_pos | |
%push_const_fast = call %"struct.rubinius::Object"* @rbx_push_const_fast(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Object"* inttoptr (i64 1934 to %"struct.rubinius::Object"*), i32 9) nounwind readonly ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check114 = icmp eq %"struct.rubinius::Object"* %push_const_fast, null ; <i1> [#uses=1] | |
br i1 %null_check114, label %ret_null, label %continue113 | |
continue112: ; preds = %continue113, %use_cache111 | |
%constant = phi %"struct.rubinius::Object"* [ %cached_value, %use_cache111 ], [ %push_const_fast, %continue113 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos115 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %constant, %"struct.rubinius::Object"** %stack_pos115 | |
%stack_pos116 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load117 = load %"struct.rubinius::Object"** %stack_pos116 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store i32 56, i32* %ip_pos | |
%constant118 = call %"struct.rubinius::Object"* @rbx_find_const(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, i32 10, %"struct.rubinius::Object"* %stack_load117) ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos119 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %constant118, %"struct.rubinius::Object"** %stack_pos119 | |
%stack_pos120 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load121 = load %"struct.rubinius::Object"** %stack_pos120 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos122 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load121, %"struct.rubinius::Object"** %stack_pos122 | |
%stack_pos123 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load124 = load %"struct.rubinius::Object"** %stack_pos123 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%cs = call %"struct.rubinius::Object"* @rbx_check_serial(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::InlineCache"* inttoptr (i64 35563824 to %"struct.rubinius::InlineCache"*), i32 47, %"struct.rubinius::Object"* %stack_load124) ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos125 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %cs, %"struct.rubinius::Object"** %stack_pos125 | |
%stack_pos126 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load127 = load %"struct.rubinius::Object"** %stack_pos126 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%as_int128 = ptrtoint %"struct.rubinius::Object"* %stack_load127 to i64 ; <i64> [#uses=1] | |
%and129 = and i64 %as_int128, 15 ; <i64> [#uses=1] | |
%is_true130 = icmp eq i64 %and129, 10 ; <i1> [#uses=1] | |
br i1 %is_true130, label %ip77, label %continue131 | |
continue113: ; preds = %use_call | |
br label %continue112 | |
continue131: ; preds = %continue112 | |
br label %ip64 | |
ip64: ; preds = %continue131 | |
%execute132 = load %"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)** getelementptr (%"struct.rubinius::InlineCache"* inttoptr (i64 35563944 to %"struct.rubinius::InlineCache"*), i32 0, i32 3) ; <%"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)*> [#uses=1] | |
%stack_pos133 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load134 = load %"struct.rubinius::Object"** %stack_pos133 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load134, %"struct.rubinius::Object"** %out_args_recv | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %out_args_block | |
store i32 0, i32* %out_args_total | |
store %"struct.rubinius::Array"* null, %"struct.rubinius::Array"** %out_args_array | |
store i32 65, i32* %ip_pos | |
%ic_send135 = call %"struct.rubinius::Object"* %execute132(%"struct.rubinius::VM"* %state, %"struct.rubinius::InlineCache"* inttoptr (i64 35563944 to %"struct.rubinius::InlineCache"*), %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %out_args) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check137 = icmp eq %"struct.rubinius::Object"* %ic_send135, null ; <i1> [#uses=1] | |
br i1 %null_check137, label %ret_null, label %continue136 | |
continue136: ; preds = %ip64 | |
%stack_pos138 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %ic_send135, %"struct.rubinius::Object"** %stack_pos138 | |
%stack_pos139 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load140 = load %"struct.rubinius::Object"** %stack_pos139 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos141 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load140, %"struct.rubinius::Object"** %stack_pos141 | |
%local_pos142 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local143 = load %"struct.rubinius::Object"** %local_pos142 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos144 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local143, %"struct.rubinius::Object"** %stack_pos144 | |
%execute145 = load %"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)** getelementptr (%"struct.rubinius::InlineCache"* inttoptr (i64 35564064 to %"struct.rubinius::InlineCache"*), i32 0, i32 3) ; <%"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)*> [#uses=1] | |
%stack_pos146 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load147 = load %"struct.rubinius::Object"** %stack_pos146 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load147, %"struct.rubinius::Object"** %out_args_recv | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %out_args_block | |
store i32 1, i32* %out_args_total | |
%stack_pos148 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"** %stack_pos148, %"struct.rubinius::Object"*** %out_args_arguments | |
store %"struct.rubinius::Array"* null, %"struct.rubinius::Array"** %out_args_array | |
store i32 71, i32* %ip_pos | |
%ic_send149 = call %"struct.rubinius::Object"* %execute145(%"struct.rubinius::VM"* %state, %"struct.rubinius::InlineCache"* inttoptr (i64 35564064 to %"struct.rubinius::InlineCache"*), %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %out_args) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check151 = icmp eq %"struct.rubinius::Object"* %ic_send149, null ; <i1> [#uses=1] | |
br i1 %null_check151, label %ret_null, label %continue150 | |
continue150: ; preds = %continue136 | |
%stack_pos152 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %ic_send149, %"struct.rubinius::Object"** %stack_pos152 | |
br label %ip82 | |
continue153: ; No predecessors! | |
br label %ip77 | |
ip77: ; preds = %continue153, %continue112 | |
%local_pos154 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local155 = load %"struct.rubinius::Object"** %local_pos154 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos156 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local155, %"struct.rubinius::Object"** %stack_pos156 | |
%stack_pos159 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load160 = load %"struct.rubinius::Object"** %stack_pos159 ; <%"struct.rubinius::Object"*> [#uses=3] | |
%cast161 = ptrtoint %"struct.rubinius::Object"* %stack_load160 to i64 ; <i64> [#uses=1] | |
%masked162 = and i64 %cast161, 3 ; <i64> [#uses=1] | |
%is_reference163 = icmp eq i64 %masked162, 0 ; <i1> [#uses=1] | |
br i1 %is_reference163, label %check_class_id164, label %fallback157 | |
continue158: ; preds = %continue176 | |
br label %ip82 | |
ip82: ; preds = %continue158, %continue150 | |
%local_pos179 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_pos180 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load181 = load %"struct.rubinius::Object"** %stack_pos180 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load181, %"struct.rubinius::Object"** %local_pos179 | |
%local_pos182 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local183 = load %"struct.rubinius::Object"** %local_pos182 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos184 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local183, %"struct.rubinius::Object"** %stack_pos184 | |
%self_pos185 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self186 = load %"struct.rubinius::Object"** %self_pos185 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%obj_array187 = bitcast %"struct.rubinius::Object"* %self186 to %"struct.rubinius::Object"** ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field_pos188 = getelementptr %"struct.rubinius::Object"** %obj_array187, i32 3 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field189 = load %"struct.rubinius::Object"** %field_pos188 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos190 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %field189, %"struct.rubinius::Object"** %stack_pos190 | |
%stack_pos191 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load192 = load %"struct.rubinius::Object"** %stack_pos191 ; <%"struct.rubinius::Object"*> [#uses=2] | |
%stack_pos193 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load194 = load %"struct.rubinius::Object"** %stack_pos193 ; <%"struct.rubinius::Object"*> [#uses=2] | |
%cast198 = ptrtoint %"struct.rubinius::Object"* %stack_load192 to i64 ; <i64> [#uses=1] | |
%cast199 = ptrtoint %"struct.rubinius::Object"* %stack_load194 to i64 ; <i64> [#uses=1] | |
%both200 = and i64 %cast198, %cast199 ; <i64> [#uses=1] | |
%masked201 = and i64 %both200, 1 ; <i64> [#uses=1] | |
%are_fixnums202 = icmp eq i64 %masked201, 1 ; <i1> [#uses=1] | |
br i1 %are_fixnums202, label %fast195, label %dispatch196 | |
check_class_id164: ; preds = %ip77 | |
%class_pos166 = getelementptr %"struct.rubinius::Object"* %stack_load160, i32 0, i32 0, i32 1 ; <%"struct.rubinius::Class"**> [#uses=1] | |
%ref_class167 = load %"struct.rubinius::Class"** %class_pos166 ; <%"struct.rubinius::Class"*> [#uses=1] | |
%class_id_pos168 = getelementptr %"struct.rubinius::Class"* %ref_class167, i32 0, i32 3 ; <i32*> [#uses=1] | |
%class_id169 = load i32* %class_id_pos168 ; <i32> [#uses=1] | |
%check_class_id170 = icmp eq i32 %class_id169, 14 ; <i1> [#uses=1] | |
br i1 %check_class_id170, label %correct_class165, label %fallback157 | |
correct_class165: ; preds = %check_class_id164 | |
%stack_pos171 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load172 = load %"struct.rubinius::Object"** %stack_pos171 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%prim_value173 = call %"struct.rubinius::Object"* @jit_stub_tuple_allocate(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Object"* %stack_load160, %"struct.rubinius::Object"* %stack_load172) ; <%"struct.rubinius::Object"*> [#uses=3] | |
%ptr2int175 = ptrtoint %"struct.rubinius::Object"* %prim_value173 to i64 ; <i64> [#uses=1] | |
%18 = icmp eq i64 %ptr2int175, 34 ; <i1> [#uses=1] | |
br i1 %18, label %fallback157, label %continue174 | |
fallback157: ; preds = %correct_class165, %check_class_id164, %ip77 | |
store i32 79, i32* %ip_pos | |
%19 = call %"struct.rubinius::Object"* @rbx_continue_uncommon(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %args, i64 1) ; <%"struct.rubinius::Object"*> [#uses=1] | |
ret %"struct.rubinius::Object"* %19 | |
continue174: ; preds = %correct_class165 | |
%null_check177 = icmp eq %"struct.rubinius::Object"* %prim_value173, null ; <i1> [#uses=1] | |
br i1 %null_check177, label %ret_null, label %continue176 | |
continue176: ; preds = %continue174 | |
%stack_pos178 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %prim_value173, %"struct.rubinius::Object"** %stack_pos178 | |
br label %continue158 | |
fast195: ; preds = %ip82 | |
%as_int206 = ptrtoint %"struct.rubinius::Object"* %stack_load192 to i64 ; <i64> [#uses=1] | |
%lshr = lshr i64 %as_int206, 1 ; <i64> [#uses=1] | |
%stripped = trunc i64 %lshr to i63 ; <i63> [#uses=1] | |
%as_int207 = ptrtoint %"struct.rubinius::Object"* %stack_load194 to i64 ; <i64> [#uses=1] | |
%lshr208 = lshr i64 %as_int207, 1 ; <i64> [#uses=1] | |
%stripped209 = trunc i64 %lshr208 to i63 ; <i63> [#uses=1] | |
%sub.overflow = call %0 @llvm.ssub.with.overflow.i31(i63 %stripped, i63 %stripped209) ; <%0> [#uses=2] | |
%sub = extractvalue %0 %sub.overflow, 0 ; <i63> [#uses=1] | |
%did_overflow = extractvalue %0 %sub.overflow, 1 ; <i1> [#uses=1] | |
br i1 %did_overflow, label %dispatch196, label %tagnow | |
dispatch196: ; preds = %fast195, %ip82 | |
%stack_pos203 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store i32 89, i32* %ip_pos | |
%simple_send204 = call %"struct.rubinius::Object"* @rbx_simple_send(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Object"* inttoptr (i64 2166 to %"struct.rubinius::Object"*), i64 1, %"struct.rubinius::Object"** %stack_pos203) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check205 = icmp eq %"struct.rubinius::Object"* %simple_send204, null ; <i1> [#uses=1] | |
br i1 %null_check205, label %ret_null, label %cont197 | |
cont197: ; preds = %tagnow, %dispatch196 | |
%subtraction = phi %"struct.rubinius::Object"* [ %simple_send204, %dispatch196 ], [ %as_obj, %tagnow ] ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos210 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %subtraction, %"struct.rubinius::Object"** %stack_pos210 | |
%stack_pos211 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* inttoptr (i64 5 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %stack_pos211 | |
%execute214 = load %"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)** getelementptr (%"struct.rubinius::InlineCache"* inttoptr (i64 35564424 to %"struct.rubinius::InlineCache"*), i32 0, i32 3) ; <%"struct.rubinius::Object"* (%"struct.rubinius::VM"*, %"struct.rubinius::InlineCache"*, %"struct.rubinius::CallFrame"*, %"struct.rubinius::Arguments"*)*> [#uses=1] | |
%stack_pos215 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load216 = load %"struct.rubinius::Object"** %stack_pos215 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load216, %"struct.rubinius::Object"** %out_args_recv | |
store %"struct.rubinius::Object"* inttoptr (i64 26 to %"struct.rubinius::Object"*), %"struct.rubinius::Object"** %out_args_block | |
store i32 1, i32* %out_args_total | |
%stack_pos217 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"** %stack_pos217, %"struct.rubinius::Object"*** %out_args_arguments | |
store %"struct.rubinius::Array"* null, %"struct.rubinius::Array"** %out_args_array | |
store i32 92, i32* %ip_pos | |
%ic_send218 = call %"struct.rubinius::Object"* %execute214(%"struct.rubinius::VM"* %state, %"struct.rubinius::InlineCache"* inttoptr (i64 35564424 to %"struct.rubinius::InlineCache"*), %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %out_args) ; <%"struct.rubinius::Object"*> [#uses=2] | |
%null_check220 = icmp eq %"struct.rubinius::Object"* %ic_send218, null ; <i1> [#uses=1] | |
br i1 %null_check220, label %ret_null, label %continue219 | |
tagnow: ; preds = %fast195 | |
%as_native_int = zext i63 %sub to i64 ; <i64> [#uses=1] | |
%shl = shl i64 %as_native_int, 1 ; <i64> [#uses=1] | |
%or = or i64 %shl, 1 ; <i64> [#uses=1] | |
%as_obj = inttoptr i64 %or to %"struct.rubinius::Object"* ; <%"struct.rubinius::Object"*> [#uses=1] | |
br label %cont197 | |
continue219: ; preds = %cont197 | |
%stack_pos221 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %ic_send218, %"struct.rubinius::Object"** %stack_pos221 | |
%local_pos222 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_pos223 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load224 = load %"struct.rubinius::Object"** %stack_pos223 ; <%"struct.rubinius::Object"*> [#uses=1] | |
store %"struct.rubinius::Object"* %stack_load224, %"struct.rubinius::Object"** %local_pos222 | |
%local_pos225 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local226 = load %"struct.rubinius::Object"** %local_pos225 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos227 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local226, %"struct.rubinius::Object"** %stack_pos227 | |
%self_pos228 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self229 = load %"struct.rubinius::Object"** %self_pos228 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%obj_array230 = bitcast %"struct.rubinius::Object"* %self229 to %"struct.rubinius::Object"** ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field_pos231 = getelementptr %"struct.rubinius::Object"** %obj_array230, i32 4 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field232 = load %"struct.rubinius::Object"** %field_pos231 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos233 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %field232, %"struct.rubinius::Object"** %stack_pos233 | |
%self_pos234 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self235 = load %"struct.rubinius::Object"** %self_pos234 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%obj_array236 = bitcast %"struct.rubinius::Object"* %self235 to %"struct.rubinius::Object"** ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field_pos237 = getelementptr %"struct.rubinius::Object"** %obj_array236, i32 5 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field238 = load %"struct.rubinius::Object"** %field_pos237 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos239 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %field238, %"struct.rubinius::Object"** %stack_pos239 | |
%self_pos240 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self241 = load %"struct.rubinius::Object"** %self_pos240 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%obj_array242 = bitcast %"struct.rubinius::Object"* %self241 to %"struct.rubinius::Object"** ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field_pos243 = getelementptr %"struct.rubinius::Object"** %obj_array242, i32 3 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%field244 = load %"struct.rubinius::Object"** %field_pos243 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos245 = getelementptr %"struct.rubinius::Object"** %stack, i32 3 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %field244, %"struct.rubinius::Object"** %stack_pos245 | |
%local_pos246 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local247 = load %"struct.rubinius::Object"** %local_pos246 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos248 = getelementptr %"struct.rubinius::Object"** %stack, i32 4 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local247, %"struct.rubinius::Object"** %stack_pos248 | |
%stack_pos251 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load252 = load %"struct.rubinius::Object"** %stack_pos251 ; <%"struct.rubinius::Object"*> [#uses=3] | |
%cast253 = ptrtoint %"struct.rubinius::Object"* %stack_load252 to i64 ; <i64> [#uses=1] | |
%masked254 = and i64 %cast253, 3 ; <i64> [#uses=1] | |
%is_reference255 = icmp eq i64 %masked254, 0 ; <i1> [#uses=1] | |
br i1 %is_reference255, label %check_class_id256, label %fallback249 | |
continue250: ; preds = %continue274 | |
%local_pos277 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local278 = load %"struct.rubinius::Object"** %local_pos277 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos279 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local278, %"struct.rubinius::Object"** %stack_pos279 | |
%20 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self280 = load %"struct.rubinius::Object"** %20 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos281 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load282 = load %"struct.rubinius::Object"** %stack_pos281 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%field283 = call %"struct.rubinius::Object"* @rbx_set_my_field(%"struct.rubinius::VM"* %state, %"struct.rubinius::Object"* %self280, i32 2, %"struct.rubinius::Object"* %stack_load282) ; <%"struct.rubinius::Object"*> [#uses=0] | |
%local_pos284 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 5, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%local285 = load %"struct.rubinius::Object"** %local_pos284 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos286 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %local285, %"struct.rubinius::Object"** %stack_pos286 | |
%21 = getelementptr %"struct.rubinius::StackVariables"* %vars, i32 0, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%self287 = load %"struct.rubinius::Object"** %21 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos288 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load289 = load %"struct.rubinius::Object"** %stack_pos288 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%field290 = call %"struct.rubinius::Object"* @rbx_set_my_field(%"struct.rubinius::VM"* %state, %"struct.rubinius::Object"* %self287, i32 1, %"struct.rubinius::Object"* %stack_load289) ; <%"struct.rubinius::Object"*> [#uses=0] | |
%stack_pos291 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load292 = load %"struct.rubinius::Object"** %stack_pos291 ; <%"struct.rubinius::Object"*> [#uses=1] | |
ret %"struct.rubinius::Object"* %stack_load292 | |
check_class_id256: ; preds = %continue219 | |
%class_pos258 = getelementptr %"struct.rubinius::Object"* %stack_load252, i32 0, i32 0, i32 1 ; <%"struct.rubinius::Class"**> [#uses=1] | |
%ref_class259 = load %"struct.rubinius::Class"** %class_pos258 ; <%"struct.rubinius::Class"*> [#uses=1] | |
%class_id_pos260 = getelementptr %"struct.rubinius::Class"* %ref_class259, i32 0, i32 3 ; <i32*> [#uses=1] | |
%class_id261 = load i32* %class_id_pos260 ; <i32> [#uses=1] | |
%check_class_id262 = icmp eq i32 %class_id261, 5 ; <i1> [#uses=1] | |
br i1 %check_class_id262, label %correct_class257, label %fallback249 | |
correct_class257: ; preds = %check_class_id256 | |
%stack_pos263 = getelementptr %"struct.rubinius::Object"** %stack, i32 1 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load264 = load %"struct.rubinius::Object"** %stack_pos263 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos265 = getelementptr %"struct.rubinius::Object"** %stack, i32 2 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load266 = load %"struct.rubinius::Object"** %stack_pos265 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos267 = getelementptr %"struct.rubinius::Object"** %stack, i32 3 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load268 = load %"struct.rubinius::Object"** %stack_pos267 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%stack_pos269 = getelementptr %"struct.rubinius::Object"** %stack, i32 4 ; <%"struct.rubinius::Object"**> [#uses=1] | |
%stack_load270 = load %"struct.rubinius::Object"** %stack_pos269 ; <%"struct.rubinius::Object"*> [#uses=1] | |
%prim_value271 = call %"struct.rubinius::Object"* @jit_stub_tuple_copy_from(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Object"* %stack_load252, %"struct.rubinius::Object"* %stack_load264, %"struct.rubinius::Object"* %stack_load266, %"struct.rubinius::Object"* %stack_load268, %"struct.rubinius::Object"* %stack_load270) ; <%"struct.rubinius::Object"*> [#uses=3] | |
%ptr2int273 = ptrtoint %"struct.rubinius::Object"* %prim_value271 to i64 ; <i64> [#uses=1] | |
%22 = icmp eq i64 %ptr2int273, 34 ; <i1> [#uses=1] | |
br i1 %22, label %fallback249, label %continue272 | |
fallback249: ; preds = %correct_class257, %check_class_id256, %continue219 | |
store i32 108, i32* %ip_pos | |
%23 = call %"struct.rubinius::Object"* @rbx_continue_uncommon(%"struct.rubinius::VM"* %state, %"struct.rubinius::CallFrame"* %call_frame, %"struct.rubinius::Arguments"* %args, i64 4) ; <%"struct.rubinius::Object"*> [#uses=1] | |
ret %"struct.rubinius::Object"* %23 | |
continue272: ; preds = %correct_class257 | |
%null_check275 = icmp eq %"struct.rubinius::Object"* %prim_value271, null ; <i1> [#uses=1] | |
br i1 %null_check275, label %ret_null, label %continue274 | |
continue274: ; preds = %continue272 | |
%stack_pos276 = getelementptr %"struct.rubinius::Object"** %stack, i32 0 ; <%"struct.rubinius::Object"**> [#uses=1] | |
store %"struct.rubinius::Object"* %prim_value271, %"struct.rubinius::Object"** %stack_pos276 | |
br label %continue250 | |
ret_null293: ; preds = %bottom | |
ret %"struct.rubinius::Object"* null | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment