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