Skip to content

Instantly share code, notes, and snippets.

@yhara
Created April 24, 2022 04:37
Show Gist options
  • Save yhara/987636179704fb8104f5cdddfe6f57e3 to your computer and use it in GitHub Desktop.
Save yhara/987636179704fb8104f5cdddfe6f57e3 to your computer and use it in GitHub Desktop.
; ModuleID = 'main'
source_filename = "main"
target triple = "x86_64-apple-macosx10.15.7"
%Dict = type { i8*, %Class.0*, %Array* }
%Class.0 = type { i8*, %Class.0*, %String*, %Object*, %Object* }
%String = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Int* }
%"Shiika::Internal::Ptr" = type { i8*, %Class.0*, i8* }
%Int = type { i8*, %Class.0*, i64 }
%Object = type { i8*, %Class.0* }
%Array = type { i8*, %Class.0*, %Int*, %Int*, %"Shiika::Internal::Ptr"* }
%Fn5 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%"Maybe::None" = type { i8*, %Class.0* }
%Fn7 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Void = type { i8*, %Class.0* }
%Math = type { i8*, %Class.0* }
%Fn9 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Fn1 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Triple = type { i8*, %Class.0*, %Object*, %Object*, %Object* }
%Error = type { i8*, %Class.0*, %String* }
%Metaclass = type { i8*, %Class.0*, %String*, %Object*, %Object* }
%Pair = type { i8*, %Class.0*, %Object*, %Object* }
%Never = type { i8*, %Class.0* }
%Fn2 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%"Result::Fail" = type { i8*, %Class.0*, %Object* }
%Fn6 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Bool = type { i8*, %Class.0*, i1 }
%"Result::Ok" = type { i8*, %Class.0*, %Object* }
%"Shiika::Internal::Memory" = type { i8*, %Class.0* }
%Fn0 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Fn = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Maybe = type { i8*, %Class.0* }
%Fn4 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Enumerable = type { i8*, %Class.0* }
%Result = type { i8*, %Class.0* }
%File = type { i8*, %Class.0*, %String*, %Object* }
%Float = type { i8*, %Class.0*, double }
%Fn3 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%"Maybe::Some" = type { i8*, %Class.0*, %Object* }
%"Dict::Table" = type { i8*, %Class.0*, %Array* }
%MutableString = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Int*, %Int* }
%Fn8 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
@putd_tmpl = internal constant [4 x i8] c"%ld\00"
@putf_tmpl = internal constant [3 x i8] c"%f\00"
@str_0 = internal global [4 x i8] c"Fn2\00"
@str_1 = internal global [12 x i8] c"Maybe::None\00"
@str_2 = internal global [5 x i8] c"Pair\00"
@str_3 = internal global [4 x i8] c"Int\00"
@str_4 = internal global [25 x i8] c"Shiika::Internal::Memory\00"
@str_5 = internal global [5 x i8] c"Math\00"
@str_6 = internal global [3 x i8] c"Fn\00"
@str_7 = internal global [6 x i8] c"Maybe\00"
@str_8 = internal global [5 x i8] c"Dict\00"
@str_9 = internal global [4 x i8] c"Fn7\00"
@str_10 = internal global [4 x i8] c"Fn1\00"
@str_11 = internal global [4 x i8] c"Fn0\00"
@str_12 = internal global [6 x i8] c"Class\00"
@str_13 = internal global [4 x i8] c"Fn8\00"
@str_14 = internal global [4 x i8] c"Fn9\00"
@str_15 = internal global [4 x i8] c"Fn4\00"
@str_16 = internal global [5 x i8] c"File\00"
@str_17 = internal global [6 x i8] c"Float\00"
@str_18 = internal global [7 x i8] c"String\00"
@str_19 = internal global [4 x i8] c"Fn3\00"
@str_20 = internal global [13 x i8] c"Result::Fail\00"
@str_21 = internal global [12 x i8] c"Dict::Table\00"
@str_22 = internal global [7 x i8] c"Result\00"
@str_23 = internal global [22 x i8] c"Shiika::Internal::Ptr\00"
@str_24 = internal global [6 x i8] c"Array\00"
@str_25 = internal global [7 x i8] c"Object\00"
@str_26 = internal global [5 x i8] c"Void\00"
@str_27 = internal global [11 x i8] c"Enumerable\00"
@str_28 = internal global [4 x i8] c"Fn5\00"
@str_29 = internal global [12 x i8] c"Maybe::Some\00"
@str_30 = internal global [7 x i8] c"Triple\00"
@str_31 = internal global [6 x i8] c"Error\00"
@str_32 = internal global [14 x i8] c"MutableString\00"
@str_33 = internal global [10 x i8] c"Metaclass\00"
@str_34 = internal global [4 x i8] c"Fn6\00"
@str_35 = internal global [11 x i8] c"Result::Ok\00"
@str_36 = internal global [5 x i8] c"Bool\00"
@str_37 = internal global [6 x i8] c"Never\00"
@str_38 = internal global [25 x i8] c"no matching clause found\00"
@str_39 = internal global [25 x i8] c"no matching clause found\00"
@str_40 = internal global [2 x i8] c">\00"
@str_41 = internal global [8 x i8] c"#<Some \00"
@str_42 = internal global [8 x i8] c"#<None>\00"
@str_43 = internal global [25 x i8] c"no matching clause found\00"
@str_44 = internal global [34 x i8] c"[Array#[]=: index less than zero]\00"
@str_45 = internal global [29 x i8] c"[Array#[]=: index too large]\00"
@str_46 = internal global [2 x i8] c"[\00"
@str_47 = internal global [3 x i8] c", \00"
@str_48 = internal global [2 x i8] c"]\00"
@str_49 = internal global [28 x i8] c"[Array#pop: array is empty]\00"
@str_50 = internal global [5 x i8] c"true\00"
@str_51 = internal global [6 x i8] c"false\00"
@str_52 = internal global [2 x i8] c">\00"
@str_53 = internal global [9 x i8] c"#<class \00"
@str_54 = internal global [2 x i8] c"-\00"
@str_55 = internal global [10 x i8] c"Metaclass\00"
@str_56 = internal global [10 x i8] c"Metaclass\00"
@str_57 = internal global [6 x i8] c"Meta:\00"
@str_58 = internal global [2 x i8] c">\00"
@str_59 = internal global [13 x i8] c"#<metaclass \00"
@str_60 = internal global [40 x i8] c"[String#nth_byte: index less than zero]\00"
@str_61 = internal global [35 x i8] c"[String#nth_byte: index too large]\00"
@str_62 = internal global [42 x i8] c"[String#write_byte: index less than zero]\00"
@str_63 = internal global [41 x i8] c"[String#write_byte: byte less than zero]\00"
@str_64 = internal global [42 x i8] c"[String#write_byte: byte larger than 255]\00"
@str_65 = internal global [40 x i8] c"[`<` is not implemented for this class]\00"
@str_66 = internal global [2 x i8] c">\00"
@str_67 = internal global [2 x i8] c":\00"
@str_68 = internal global [3 x i8] c"#<\00"
@str_69 = internal global [2 x i8] c"\22\00"
@str_70 = internal global [2 x i8] c"\22\00"
@str_71 = internal global [2 x i8] c"\0A\00"
@str_72 = internal global [40 x i8] c"[String#nth_byte: index less than zero]\00"
@str_73 = internal global [35 x i8] c"[String#nth_byte: index too large]\00"
@str_74 = internal global [3 x i8] c")]\00"
@str_75 = internal global [10 x i8] c", bytes: \00"
@str_76 = internal global [54 x i8] c"[String#slice_bytes: `from` is less than zero (from: \00"
@str_77 = internal global [3 x i8] c")]\00"
@str_78 = internal global [18 x i8] c", self.bytesize: \00"
@str_79 = internal global [10 x i8] c", bytes: \00"
@str_80 = internal global [54 x i8] c"[String#slice_bytes: `from + bytes` too large (from: \00"
@str_81 = internal global [2 x i8] c"+\00"
@str_82 = internal global [2 x i8] c"-\00"
@str_83 = internal global [5 x i8] c"Void\00"
@"::Dict" = global %Dict* null
@"::Fn5" = global %Fn5* null
@"::Maybe::None" = global %"Maybe::None"* null
@"::Fn7" = global %Fn7* null
@"::Void" = global %Void* null
@"::Math" = global %Math* null
@"::Fn9" = global %Fn9* null
@"::Object" = global %Object* null
@"::Fn1" = global %Fn1* null
@"::Triple" = global %Triple* null
@"::Error" = global %Error* null
@"::Metaclass" = global %Metaclass* null
@"::None" = global %"Maybe::None"* null
@"::Pair" = global %Pair* null
@"::Never" = global %Never* null
@"::Fn2" = global %Fn2* null
@"::Result::Fail" = global %"Result::Fail"* null
@"::Fn6" = global %Fn6* null
@"::Bool" = global %Bool* null
@"::Ok" = global %"Result::Ok"* null
@"::Shiika::Internal::Memory" = global %"Shiika::Internal::Memory"* null
@"::Array::BYTES_OF_PTR" = global %Int* null
@"::Array" = global %Array* null
@"::Int" = global %Int* null
@"::Fn0" = global %Fn0* null
@"::Result::Ok" = global %"Result::Ok"* null
@"::Fn::EXIT_NORMAL" = global %Int* null
@"::Fn" = global %Fn* null
@"::Dict::N_TABLES" = global %Int* null
@"::Maybe" = global %Maybe* null
@"::Fn4" = global %Fn4* null
@"::Class" = global %Class.0* null
@"::Enumerable" = global %Enumerable* null
@"::Fail" = global %"Result::Fail"* null
@"::String" = global %String* null
@"::Result" = global %Result* null
@"::File" = global %File* null
@"::Float" = global %Float* null
@"::Fn3" = global %Fn3* null
@"::Fn::EXIT_BREAK" = global %Int* null
@"::Some" = global %"Maybe::Some"* null
@"::Dict::Table" = global %"Dict::Table"* null
@"::Maybe::Some" = global %"Maybe::Some"* null
@"::Array::INITIAL_CAPA" = global %Int* null
@"::Shiika::Internal::Ptr" = global %"Shiika::Internal::Ptr"* null
@"::MutableString" = global %MutableString* null
@"::MutableString::INITIAL_STR_CAPA" = global %Int* null
@"::Fn8" = global %Fn8* null
@shiika_vtable_Fn0 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Fn6 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Fn7 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Int" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Int* (%Int*)* @Meta_Int_new to i8*)]
@"shiika_vtable_Meta:Pair" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Pair* (%Pair*, %Object*, %Object*)* @Meta_Pair_new to i8*)]
@"shiika_vtable_Meta:Never" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:Fn" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn_new to i8*)]
@shiika_vtable_Never = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Result::Ok" = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Result::Ok"*, %Object*)* @Result_Ok_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%"Result::Ok"*)* @Result_Ok_value to i8*), i8* bitcast (%Object* (%"Result::Ok"*, %Object*)* @_set_Result_Ok_value to i8*)]
@shiika_vtable_Fn4 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Float" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Float* (%Float*)* @Meta_Float_new to i8*)]
@shiika_vtable_String = constant [35 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%String*, %String*)* @String_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%String*, %"Shiika::Internal::Ptr"*, %Int*)* @String_initialize to i8*), i8* bitcast (%String* (%String*)* @String_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%String*)* @String_to__s to i8*), i8* bitcast (%String* (%String*, %Int*)* @String_mul_ to i8*), i8* bitcast (%String* (%String*, %String*)* @String_add_ to i8*), i8* bitcast (%Array* (%String*)* @String_bytes to i8*), i8* bitcast (%Int* (%String*)* @String_bytesize to i8*), i8* bitcast (%Int* (%String*, %Int*)* @_set_String_bytesize to i8*), i8* bitcast (%Void* (%String*, %Fn1*)* @String_each__byte to i8*), i8* bitcast (%Void* (%String*, %Fn1*)* @String_each__char to i8*), i8* bitcast (%Void* (%String*, %Fn1*)* @String_each__line to i8*), i8* bitcast (%Bool* (%String*)* @"String_empty?" to i8*), i8* bitcast (%Bool* (%String*, %String*)* @"String_ends__with?" to i8*), i8* bitcast (%Array* (%String*)* @String_lines to i8*), i8* bitcast (%Int* (%String*, %Int*)* @String_nth__byte to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%String*)* @String_ptr to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%String*, %"Shiika::Internal::Ptr"*)* @_set_String_ptr to i8*), i8* bitcast (%String* (%String*, %Int*, %Int*)* @String_slice__bytes to i8*), i8* bitcast (%Array* (%String*, %String*)* @String_split to i8*), i8* bitcast (%Bool* (%String*, %String*)* @"String_starts__with?" to i8*), i8* bitcast (%Int* (%String*)* @String_to__i to i8*), i8* bitcast (%MutableString* (%String*)* @String_to__mutable to i8*)]
@shiika_vtable_Void = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Void*)* @Void_to__s to i8*)]
@shiika_vtable_Fn5 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Dict = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Dict*)* @Dict_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Maybe* (%Dict*, %Object*)* @Dict_aref_ to i8*), i8* bitcast (%Void* (%Dict*, %Object*, %Object*)* @Dict_aset_ to i8*), i8* bitcast (%"Dict::Table"* (%Dict*, %Object*)* @Dict___table to i8*), i8* bitcast (%Bool* (%Dict*, %Object*)* @"Dict_has__key?" to i8*), i8* bitcast (%Array* (%Dict*)* @Dict_keys to i8*), i8* bitcast (%Array* (%Dict*)* @Dict_tables to i8*), i8* bitcast (%Array* (%Dict*, %Array*)* @_set_Dict_tables to i8*), i8* bitcast (%Array* (%Dict*)* @Dict_values to i8*)]
@"shiika_vtable_Meta:Dict" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Dict* (%Dict*)* @Meta_Dict_new to i8*)]
@"shiika_vtable_Meta:Fn1" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn1* (%Fn1*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn1_new to i8*)]
@shiika_vtable_Float = constant [25 x i8*] [i8* bitcast (%Bool* (%Float*, %Float*)* @Float_lt_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_le_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_eq_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_gt_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Float*)* @Float_to__s to i8*), i8* bitcast (%Float* (%Float*, %Int*)* @Float_mod_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_mul_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_add_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_sub_ to i8*), i8* bitcast (%Float* (%Float*)* @Float_uminus_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_div_ to i8*), i8* bitcast (%Float* (%Float*)* @Float_abs to i8*), i8* bitcast (%Float* (%Float*)* @Float_floor to i8*), i8* bitcast (%Int* (%Float*)* @Float_to__i to i8*)]
@"shiika_vtable_Meta:Maybe::Some" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Maybe::Some"* (%"Maybe::Some"*, %Object*)* @Meta_Maybe_Some_new to i8*)]
@shiika_vtable_Pair = constant [20 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Pair*, %Object*, %Object*)* @Pair_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Pair*)* @Pair_fst to i8*), i8* bitcast (%Object* (%Pair*, %Object*)* @_set_Pair_fst to i8*), i8* bitcast (%Object* (%Pair*)* @Pair_snd to i8*), i8* bitcast (%Object* (%Pair*, %Object*)* @_set_Pair_snd to i8*)]
@"shiika_vtable_Meta:Array" = constant [25 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Array* (%Array*, %Int*, %Fn1*)* @Meta_Array_build to i8*), i8* bitcast (%Array* (%Array*)* @Meta_Array_new to i8*), i8* bitcast (%Array* (%Array*, %Object*, %Int*)* @Meta_Array_repeat to i8*)]
@"shiika_vtable_Meta:Object" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Object* (%Object*)* @Meta_Object_new to i8*)]
@"shiika_vtable_Meta:Fn9" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn9* (%Fn9*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn9_new to i8*)]
@"shiika_vtable_Meta:Enumerable" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Shiika::Internal::Memory" = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@shiika_vtable_Fn3 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Fn8 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Fn2" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn2* (%Fn2*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn2_new to i8*)]
@shiika_vtable_Error = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Error*, %String*)* @Error_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%String* (%Error*)* @Error_msg to i8*), i8* bitcast (%String* (%Error*, %String*)* @_set_Error_msg to i8*)]
@"shiika_vtable_Dict::Table" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Dict::Table"*)* @Dict_Table_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Maybe* (%"Dict::Table"*, %Object*)* @Dict_Table_aref_ to i8*), i8* bitcast (%Void* (%"Dict::Table"*, %Object*, %Object*)* @Dict_Table_aset_ to i8*), i8* bitcast (%Bool* (%"Dict::Table"*, %Object*)* @"Dict_Table_has__key?" to i8*), i8* bitcast (%Array* (%"Dict::Table"*)* @Dict_Table_keys to i8*), i8* bitcast (%Array* (%"Dict::Table"*)* @Dict_Table_pairs to i8*), i8* bitcast (%Array* (%"Dict::Table"*, %Array*)* @_set_Dict_Table_pairs to i8*), i8* bitcast (%Array* (%"Dict::Table"*)* @Dict_Table_values to i8*)]
@"shiika_vtable_Meta:Dict::Table" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Dict::Table"* (%"Dict::Table"*)* @Meta_Dict_Table_new to i8*)]
@shiika_vtable_Class = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:String" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%String* (%String*, %"Shiika::Internal::Ptr"*, %Int*)* @Meta_String_new to i8*)]
@shiika_vtable_Fn9 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Math = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Meta:Bool" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Bool* (%Bool*)* @Meta_Bool_new to i8*)]
@"shiika_vtable_Meta:Fn3" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn3* (%Fn3*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn3_new to i8*)]
@"shiika_vtable_Meta:Maybe" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:MutableString" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%MutableString* (%MutableString*)* @Meta_MutableString_new to i8*)]
@"shiika_vtable_Meta:Fn6" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn6* (%Fn6*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn6_new to i8*)]
@shiika_vtable_Object = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Maybe::Some" = constant [20 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Maybe::Some"*, %Object*)* @Maybe_Some_initialize to i8*), i8* bitcast (%String* (%Maybe*)* @Maybe_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Maybe*, %String*)* @Maybe_expect to i8*), i8* bitcast (%Maybe* (%Maybe*, %Fn1*)* @Maybe_map to i8*), i8* bitcast (%Object* (%"Maybe::Some"*)* @Maybe_Some_value to i8*), i8* bitcast (%Object* (%"Maybe::Some"*, %Object*)* @_set_Maybe_Some_value to i8*)]
@shiika_vtable_Metaclass = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Metaclass*)* @Metaclass_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Metaclass*)* @Metaclass_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Metaclass* (%Metaclass*, %String*, %Object*, %Metaclass*)* @Metaclass_new to i8*)]
@"shiika_vtable_Maybe::None" = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Maybe::None"*)* @Maybe_None_initialize to i8*), i8* bitcast (%String* (%Maybe*)* @Maybe_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Maybe*, %String*)* @Maybe_expect to i8*), i8* bitcast (%Maybe* (%Maybe*, %Fn1*)* @Maybe_map to i8*)]
@"shiika_vtable_Meta:Fn7" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn7* (%Fn7*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn7_new to i8*)]
@shiika_vtable_MutableString = constant [28 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%MutableString*)* @MutableString_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%MutableString*)* @MutableString_to__s to i8*), i8* bitcast (%Void* (%MutableString*, %Int*)* @MutableString___realloc__if__needed to i8*), i8* bitcast (%String* (%MutableString*)* @MutableString___unsafe__to__s to i8*), i8* bitcast (%Void* (%MutableString*, %String*)* @MutableString_append to i8*), i8* bitcast (%Void* (%MutableString*, %Int*)* @MutableString_append__byte to i8*), i8* bitcast (%Int* (%MutableString*)* @MutableString_bytesize to i8*), i8* bitcast (%Int* (%MutableString*, %Int*)* @_set_MutableString_bytesize to i8*), i8* bitcast (%Int* (%MutableString*)* @MutableString_capa to i8*), i8* bitcast (%Int* (%MutableString*, %Int*)* @_set_MutableString_capa to i8*), i8* bitcast (%Int* (%MutableString*, %Int*)* @MutableString_nth__byte to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%MutableString*)* @MutableString_ptr to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%MutableString*, %"Shiika::Internal::Ptr"*)* @_set_MutableString_ptr to i8*), i8* bitcast (%Void* (%MutableString*, %Int*, %Int*)* @MutableString_write__byte to i8*)]
@"shiika_vtable_Meta:Result::Fail" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Result::Fail"* (%"Result::Fail"*, %Object*)* @Meta_Result_Fail_new to i8*)]
@"shiika_vtable_Shiika::Internal::Ptr" = constant [21 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)* @Shiika_Internal_Ptr_add_ to i8*), i8* bitcast (%Object* (%"Shiika::Internal::Ptr"*)* @Shiika_Internal_Ptr_load to i8*), i8* bitcast (%Int* (%"Shiika::Internal::Ptr"*)* @Shiika_Internal_Ptr_read to i8*), i8* bitcast (%Void* (%"Shiika::Internal::Ptr"*, %Object*)* @Shiika_Internal_Ptr_store to i8*), i8* bitcast (%Void* (%"Shiika::Internal::Ptr"*, %Int*)* @Shiika_Internal_Ptr_write to i8*)]
@"shiika_vtable_Meta:Void" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Void* (%Void*)* @Meta_Void_new to i8*)]
@"shiika_vtable_Meta:Class" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Class.0* (%Class.0*, %String*, %Object*, %Metaclass*)* @Meta_Class_new to i8*)]
@"shiika_vtable_Meta:Fn8" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn8* (%Fn8*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn8_new to i8*)]
@"shiika_vtable_Meta:File" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%File* (%File*, %String*, %Object*)* @Meta_File_new to i8*)]
@"shiika_vtable_Meta:Math" = constant [25 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Float* (%Math*, %Float*)* @Meta_Math_cos to i8*), i8* bitcast (%Float* (%Math*, %Float*)* @Meta_Math_sin to i8*), i8* bitcast (%Float* (%Math*, %Float*)* @Meta_Math_sqrt to i8*)]
@shiika_vtable_Bool = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Bool*)* @Bool_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@shiika_vtable_File = constant [20 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%File*, %String*, %Object*)* @File_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%File*)* @File_file to i8*), i8* bitcast (%Object* (%File*, %Object*)* @_set_File_file to i8*), i8* bitcast (%String* (%File*)* @File_path to i8*), i8* bitcast (%String* (%File*, %String*)* @_set_File_path to i8*)]
@"shiika_vtable_Meta:Triple" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Triple* (%Triple*, %Object*, %Object*, %Object*)* @Meta_Triple_new to i8*)]
@"shiika_vtable_Meta:Fn4" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn4* (%Fn4*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn4_new to i8*)]
@shiika_vtable_Triple = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Triple*, %Object*, %Object*, %Object*)* @Triple_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Triple*)* @Triple_fst to i8*), i8* bitcast (%Object* (%Triple*, %Object*)* @_set_Triple_fst to i8*), i8* bitcast (%Object* (%Triple*)* @Triple_snd to i8*), i8* bitcast (%Object* (%Triple*, %Object*)* @_set_Triple_snd to i8*), i8* bitcast (%Object* (%Triple*)* @Triple_thd to i8*), i8* bitcast (%Object* (%Triple*, %Object*)* @_set_Triple_thd to i8*)]
@"shiika_vtable_Meta:Fn0" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn0* (%Fn0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn0_new to i8*)]
@"shiika_vtable_Meta:Shiika::Internal::Memory" = constant [25 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %Int*)* @Meta_Shiika_Internal_Memory_gc__malloc to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %Int*)* @Meta_Shiika_Internal_Memory_gc__realloc to i8*), i8* bitcast (%Void* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"*, %Int*)* @Meta_Shiika_Internal_Memory_memcpy to i8*)]
@"shiika_vtable_Meta:Maybe::None" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Maybe::None"* (%"Maybe::None"*)* @Meta_Maybe_None_new to i8*)]
@shiika_vtable_Result = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Meta:Result::Ok" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Result::Ok"* (%"Result::Ok"*, %Object*)* @Meta_Result_Ok_new to i8*)]
@"shiika_vtable_Meta:Fn5" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn5* (%Fn5*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn5_new to i8*)]
@shiika_vtable_Fn1 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Result::Fail" = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Result::Fail"*, %Object*)* @Result_Fail_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%"Result::Fail"*)* @Result_Fail_err to i8*), i8* bitcast (%Object* (%"Result::Fail"*, %Object*)* @_set_Result_Fail_err to i8*)]
@"shiika_vtable_Meta:Result" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@shiika_vtable_Fn = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Shiika::Internal::Ptr" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:Error" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Error* (%Error*, %String*)* @Meta_Error_new to i8*)]
@shiika_vtable_Fn2 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Array = constant [54 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Array*, %Array*)* @Array_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Array*)* @Array_initialize to i8*), i8* bitcast (%String* (%Array*)* @Array_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Array*, %Int*)* @Array_aref_ to i8*), i8* bitcast (%Void* (%Array*, %Int*, %Object*)* @Array_aset_ to i8*), i8* bitcast (%Int* (%Array*, %Int*, %Int*)* @Array___choose__pivot to i8*), i8* bitcast (%Int* (%Array*, %Int*, %Int*, %Object*)* @Array___partition to i8*), i8* bitcast (%Void* (%Array*, %Int*, %Int*)* @Array___quicksort to i8*), i8* bitcast (%Bool* (%Array*, %Fn1*)* @"Array_all?" to i8*), i8* bitcast (%Bool* (%Array*, %Fn1*)* @"Array_any?" to i8*), i8* bitcast (%Void* (%Array*, %Array*)* @Array_append to i8*), i8* bitcast (%Int* (%Array*)* @Array_capa to i8*), i8* bitcast (%Int* (%Array*, %Int*)* @_set_Array_capa to i8*), i8* bitcast (%Void* (%Array*)* @Array_clear to i8*), i8* bitcast (%Array* (%Array*)* @Array_clone to i8*), i8* bitcast (%Array* (%Array*, %Int*)* @Array_drop to i8*), i8* bitcast (%Void* (%Array*, %Fn1*)* @Array_each to i8*), i8* bitcast (%Bool* (%Array*)* @"Array_empty?" to i8*), i8* bitcast (%Maybe* (%Array*)* @Array_first to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_flat__map to i8*), i8* bitcast (%Object* (%Array*, %Object*, %Fn2*)* @Array_fold to i8*), i8* bitcast (%Bool* (%Array*, %Object*)* @"Array_includes?" to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Array*)* @Array_items to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Array*, %"Shiika::Internal::Ptr"*)* @_set_Array_items to i8*), i8* bitcast (%String* (%Array*, %String*)* @Array_join to i8*), i8* bitcast (%Maybe* (%Array*)* @Array_last to i8*), i8* bitcast (%Int* (%Array*)* @Array_length to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_map to i8*), i8* bitcast (%Int* (%Array*)* @Array_n__items to i8*), i8* bitcast (%Int* (%Array*, %Int*)* @_set_Array_n__items to i8*), i8* bitcast (%Bool* (%Array*, %Fn1*)* @"Array_none?" to i8*), i8* bitcast (%Object* (%Array*)* @Array_pop to i8*), i8* bitcast (%Void* (%Array*, %Object*)* @Array_push to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_reject to i8*), i8* bitcast (%Void* (%Array*, %Int*)* @Array_reserve to i8*), i8* bitcast (%Array* (%Array*)* @Array_reverse to i8*), i8* bitcast (%Void* (%Array*, %Fn1*)* @Array_reverse__each to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_select to i8*), i8* bitcast (%Maybe* (%Array*)* @Array_shift to i8*), i8* bitcast (%Array* (%Array*)* @Array_sort to i8*), i8* bitcast (%Void* (%Array*)* @Array_sort__inplace to i8*)]
@shiika_vtable_Maybe = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Maybe*)* @Maybe_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Maybe*, %String*)* @Maybe_expect to i8*), i8* bitcast (%Maybe* (%Maybe*, %Fn1*)* @Maybe_map to i8*)]
@shiika_vtable_Int = constant [35 x i8*] [i8* bitcast (%Bool* (%Int*, %Int*)* @Int_lt_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_le_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_eq_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_gt_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Int*)* @Int_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Int*)* @Int_to__s to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_mod_ to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_mul_ to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_add_ to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_sub_ to i8*), i8* bitcast (%Int* (%Int*)* @Int_uminus_ to i8*), i8* bitcast (%Float* (%Int*, %Int*)* @Int_div_ to i8*), i8* bitcast (%Int* (%Int*)* @Int_abs to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_and to i8*), i8* bitcast (%Void* (%Int*, %Int*, %Fn1*)* @Int_downto to i8*), i8* bitcast (%Bool* (%Int*)* @"Int_even?" to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_lshift to i8*), i8* bitcast (%Bool* (%Int*)* @"Int_odd?" to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_or to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_rshift to i8*), i8* bitcast (%Void* (%Int*, %Fn1*)* @Int_times to i8*), i8* bitcast (%Float* (%Int*)* @Int_to__f to i8*), i8* bitcast (%Int* (%Int*)* @Int_to__i to i8*), i8* bitcast (%Void* (%Int*, %Int*, %Fn1*)* @Int_upto to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_xor to i8*)]
declare void @GC_init()
declare i8* @shiika_malloc(i64)
declare i8* @shiika_realloc(i8*, i64)
declare i8* @shiika_lookup_wtable(i8*, i64, i64)
define %Bool* @box_bool(i1 %0) {
%class_obj = load %Bool*, %Bool** @"::Bool", align 8
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Bool* getelementptr (%Bool, %Bool* null, i32 1) to i64))
%sk_bool = bitcast i8* %mem to %Bool*
%addr_vtable = getelementptr inbounds %Bool, %Bool* %sk_bool, i32 0, i32 0
store i8* bitcast ([16 x i8*]* @shiika_vtable_Bool to i8*), i8** %addr_vtable, align 8
%class = bitcast %Bool* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %Bool, %Bool* %sk_bool, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_bool" = getelementptr inbounds %Bool, %Bool* %sk_bool, i32 0, i32 2
store i1 %0, i1* %"addr_@llvm_bool", align 1
ret %Bool* %sk_bool
}
define i1 @unbox_bool(%Bool* %0) {
%"addr_@llvm_bool" = getelementptr inbounds %Bool, %Bool* %0, i32 0, i32 2
%"@llvm_bool" = load i1, i1* %"addr_@llvm_bool", align 1
ret i1 %"@llvm_bool"
}
define %Int* @box_int(i64 %0) {
%class_obj = load %Int*, %Int** @"::Int", align 8
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Int* getelementptr (%Int, %Int* null, i32 1) to i64))
%sk_int = bitcast i8* %mem to %Int*
%addr_vtable = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 0
store i8* bitcast ([35 x i8*]* @shiika_vtable_Int to i8*), i8** %addr_vtable, align 8
%class = bitcast %Int* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_int" = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 2
store i64 %0, i64* %"addr_@llvm_int", align 4
ret %Int* %sk_int
}
define i64 @unbox_int(%Int* %0) {
%"addr_@llvm_int" = getelementptr inbounds %Int, %Int* %0, i32 0, i32 2
%"@llvm_int" = load i64, i64* %"addr_@llvm_int", align 4
ret i64 %"@llvm_int"
}
define %Float* @box_float(double %0) {
%class_obj = load %Float*, %Float** @"::Float", align 8
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Float* getelementptr (%Float, %Float* null, i32 1) to i64))
%sk_float = bitcast i8* %mem to %Float*
%addr_vtable = getelementptr inbounds %Float, %Float* %sk_float, i32 0, i32 0
store i8* bitcast ([25 x i8*]* @shiika_vtable_Float to i8*), i8** %addr_vtable, align 8
%class = bitcast %Float* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %Float, %Float* %sk_float, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_float" = getelementptr inbounds %Float, %Float* %sk_float, i32 0, i32 2
store double %0, double* %"addr_@llvm_float", align 8
ret %Float* %sk_float
}
define double @unbox_float(%Float* %0) {
%"addr_@llvm_float" = getelementptr inbounds %Float, %Float* %0, i32 0, i32 2
%"@llvm_float" = load double, double* %"addr_@llvm_float", align 8
ret double %"@llvm_float"
}
define %"Shiika::Internal::Ptr"* @box_i8ptr(i8* %0) {
%class_obj = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** @"::Shiika::Internal::Ptr", align 8
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%sk_ptr = bitcast i8* %mem to %"Shiika::Internal::Ptr"*
%addr_vtable = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %sk_ptr, i32 0, i32 0
store i8* bitcast ([21 x i8*]* @"shiika_vtable_Shiika::Internal::Ptr" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Shiika::Internal::Ptr"* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %sk_ptr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_i8ptr" = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %sk_ptr, i32 0, i32 2
store i8* %0, i8** %"addr_@llvm_i8ptr", align 8
ret %"Shiika::Internal::Ptr"* %sk_ptr
}
define i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %0) {
%"addr_@llvm_i8ptr" = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %0, i32 0, i32 2
%"@llvm_i8ptr" = load i8*, i8** %"addr_@llvm_i8ptr", align 8
ret i8* %"@llvm_i8ptr"
}
define %String* @gen_literal_string(i8* %0, i64 %1) {
%"::String" = load %String*, %String** @"::String", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* %0)
%sk_int = call %Int* @box_int(i64 %1)
%sk_str = call %String* @Meta_String_new(%String* %"::String", %"Shiika::Internal::Ptr"* %sk_ptr, %Int* %sk_int)
ret %String* %sk_str
}
define %Void* @Triple_initialize(%Triple* %self, %Object* %"@fst", %Object* %"@snd", %Object* %"@thd") {
%"addr_@fst" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 2
store %Object* %"@fst", %Object** %"addr_@fst", align 8
%"addr_@snd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 3
store %Object* %"@snd", %Object** %"addr_@snd", align 8
%"addr_@thd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 4
store %Object* %"@thd", %Object** %"addr_@thd", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %Object* @Triple_fst(%Triple* %self) {
%"addr_@fst" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 2
%"@fst" = load %Object*, %Object** %"addr_@fst", align 8
ret %Object* %"@fst"
}
define %Object* @_set_Triple_fst(%Triple* %self, %Object* %fst) {
%"addr_@fst" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 2
store %Object* %fst, %Object** %"addr_@fst", align 8
ret %Object* %fst
}
define %Object* @Triple_thd(%Triple* %self) {
%"addr_@thd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 4
%"@thd" = load %Object*, %Object** %"addr_@thd", align 8
ret %Object* %"@thd"
}
define %Object* @_set_Triple_thd(%Triple* %self, %Object* %thd) {
%"addr_@thd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 4
store %Object* %thd, %Object** %"addr_@thd", align 8
ret %Object* %thd
}
define %Object* @Triple_snd(%Triple* %self) {
%"addr_@snd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 3
%"@snd" = load %Object*, %Object** %"addr_@snd", align 8
ret %Object* %"@snd"
}
define %Object* @_set_Triple_snd(%Triple* %self, %Object* %snd) {
%"addr_@snd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 3
store %Object* %snd, %Object** %"addr_@snd", align 8
ret %Object* %snd
}
define %Error* @Meta_Error_new(%Error* %self, %String* %"@msg") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %Error*
%addr_vtable = getelementptr inbounds %Error, %Error* %addr, i32 0, i32 0
store i8* bitcast ([18 x i8*]* @shiika_vtable_Error to i8*), i8** %addr_vtable, align 8
%class = bitcast %Error* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Error, %Error* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Error_initialize(%Error* %addr, %String* %"@msg")
ret %Error* %addr
}
define %Array* @Meta_Array_new(%Array* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%addr = bitcast i8* %mem to %Array*
%addr_vtable = getelementptr inbounds %Array, %Array* %addr, i32 0, i32 0
store i8* bitcast ([54 x i8*]* @shiika_vtable_Array to i8*), i8** %addr_vtable, align 8
%class = bitcast %Array* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Array, %Array* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Array_initialize(%Array* %addr)
ret %Array* %addr
}
define %Array* @Meta_Array_build(%Array* %self, %Int* %len, %Fn1* %f) {
alloca:
%"ary@4_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret70, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@4_", align 8
%"ary@4_10" = load %Array*, %Array** %"ary@4_", align 8
%"::Object" = load %Object*, %Object** @"::Object", align 8
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable11 = getelementptr inbounds %Array, %Array* %"ary@4_10", i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [54 x i8*]*
%vtable14 = load [54 x i8*], [54 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [54 x i8*] %vtable14, 45
%func16 = bitcast i8* %func_raw15 to %Void* (%Array*, %Object*)*
%result17 = call %Void* %func16(%Array* %"ary@4_10", %Object* %"::Object")
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@4_18" = load %Array*, %Array** %"ary@4_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 16
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*, %Array*)*
%result25 = call %Array* %func24(%Array* %"::Array", %Array* %"ary@4_18")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable26 = getelementptr inbounds %Array, %Array* %result25, i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [25 x i8*]*
%vtable29 = load [25 x i8*], [25 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [25 x i8*] %vtable29, 23
%func31 = bitcast i8* %func_raw30 to %Array* (%Array*)*
%result32 = call %Array* %func31(%Array* %result25)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result32, %Array** %ret, align 8
%ret33 = load %Array*, %Array** %ret, align 8
%as = bitcast %Int* %len to %Object*
br label %"Invoke_Array#reserve"
"Invoke_Array#reserve": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable34 = getelementptr inbounds %Array, %Array* %ret33, i32 0, i32 0
%vtable35 = load i8*, i8** %addr_vtable34, align 8
%vtable_ptr36 = bitcast i8* %vtable35 to [54 x i8*]*
%vtable37 = load [54 x i8*], [54 x i8*]* %vtable_ptr36, align 8
%func_raw38 = extractvalue [54 x i8*] %vtable37, 47
%func39 = bitcast i8* %func_raw38 to %Void* (%Array*, %Object*)*
%result40 = call %Void* %func39(%Array* %ret33, %Object* %as)
br label %"Invoke_Array#reserve_end"
"Invoke_Array#reserve_end": ; preds = %"Invoke_Array#reserve"
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
WhileBegin: ; preds = %"Invoke_Int#+_end", %"Invoke_Array#reserve_end"
%i41 = load %Int*, %Int** %i, align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable42 = getelementptr inbounds %Int, %Int* %i41, i32 0, i32 0
%vtable43 = load i8*, i8** %addr_vtable42, align 8
%vtable_ptr44 = bitcast i8* %vtable43 to [35 x i8*]*
%vtable45 = load [35 x i8*], [35 x i8*]* %vtable_ptr44, align 8
%func_raw46 = extractvalue [35 x i8*] %vtable45, 0
%func47 = bitcast i8* %func_raw46 to %Bool* (%Int*, %Int*)*
%result48 = call %Bool* %func47(%Int* %i41, %Int* %len)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result48)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%ret49 = load %Array*, %Array** %ret, align 8
%i50 = load %Int*, %Int** %i, align 8
br label %Invoke_lambda
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%ret70 = load %Array*, %Array** %ret, align 8
br label %Ret
Invoke_lambda: ; preds = %WhileBody
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Object* (%Fn1*, %Int*)*
%result51 = call %Object* %0(%Fn1* %f, %Int* %i50)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
br label %"Invoke_Array#push52"
"Invoke_Array#push52": ; preds = %Invoke_lambda_end
%addr_vtable53 = getelementptr inbounds %Array, %Array* %ret49, i32 0, i32 0
%vtable54 = load i8*, i8** %addr_vtable53, align 8
%vtable_ptr55 = bitcast i8* %vtable54 to [54 x i8*]*
%vtable56 = load [54 x i8*], [54 x i8*]* %vtable_ptr55, align 8
%func_raw57 = extractvalue [54 x i8*] %vtable56, 45
%func58 = bitcast i8* %func_raw57 to %Void* (%Array*, %Object*)*
%result59 = call %Void* %func58(%Array* %ret49, %Object* %result51)
br label %"Invoke_Array#push_end60"
"Invoke_Array#push_end60": ; preds = %"Invoke_Array#push52"
%i61 = load %Int*, %Int** %i, align 8
%sk_int62 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %"Invoke_Array#push_end60"
%addr_vtable63 = getelementptr inbounds %Int, %Int* %i61, i32 0, i32 0
%vtable64 = load i8*, i8** %addr_vtable63, align 8
%vtable_ptr65 = bitcast i8* %vtable64 to [35 x i8*]*
%vtable66 = load [35 x i8*], [35 x i8*]* %vtable_ptr65, align 8
%func_raw67 = extractvalue [35 x i8*] %vtable66, 18
%func68 = bitcast i8* %func_raw67 to %Int* (%Int*, %Int*)*
%result69 = call %Int* %func68(%Int* %i61, %Int* %sk_int62)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result69, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Array* @Meta_Array_repeat(%Array* %self, %Object* %item, %Int* %len) {
alloca:
%ret = alloca %Array*, align 8
%i = alloca %Int*, align 8
%"ary@5_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret68, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@5_", align 8
%"ary@5_10" = load %Array*, %Array** %"ary@5_", align 8
%"::Object" = load %Object*, %Object** @"::Object", align 8
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable11 = getelementptr inbounds %Array, %Array* %"ary@5_10", i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [54 x i8*]*
%vtable14 = load [54 x i8*], [54 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [54 x i8*] %vtable14, 45
%func16 = bitcast i8* %func_raw15 to %Void* (%Array*, %Object*)*
%result17 = call %Void* %func16(%Array* %"ary@5_10", %Object* %"::Object")
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@5_18" = load %Array*, %Array** %"ary@5_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 16
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*, %Array*)*
%result25 = call %Array* %func24(%Array* %"::Array", %Array* %"ary@5_18")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable26 = getelementptr inbounds %Array, %Array* %result25, i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [25 x i8*]*
%vtable29 = load [25 x i8*], [25 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [25 x i8*] %vtable29, 23
%func31 = bitcast i8* %func_raw30 to %Array* (%Array*)*
%result32 = call %Array* %func31(%Array* %result25)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result32, %Array** %ret, align 8
%ret33 = load %Array*, %Array** %ret, align 8
%as = bitcast %Int* %len to %Object*
br label %"Invoke_Array#reserve"
"Invoke_Array#reserve": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable34 = getelementptr inbounds %Array, %Array* %ret33, i32 0, i32 0
%vtable35 = load i8*, i8** %addr_vtable34, align 8
%vtable_ptr36 = bitcast i8* %vtable35 to [54 x i8*]*
%vtable37 = load [54 x i8*], [54 x i8*]* %vtable_ptr36, align 8
%func_raw38 = extractvalue [54 x i8*] %vtable37, 47
%func39 = bitcast i8* %func_raw38 to %Void* (%Array*, %Object*)*
%result40 = call %Void* %func39(%Array* %ret33, %Object* %as)
br label %"Invoke_Array#reserve_end"
"Invoke_Array#reserve_end": ; preds = %"Invoke_Array#reserve"
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
WhileBegin: ; preds = %"Invoke_Int#+_end", %"Invoke_Array#reserve_end"
%i41 = load %Int*, %Int** %i, align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable42 = getelementptr inbounds %Int, %Int* %i41, i32 0, i32 0
%vtable43 = load i8*, i8** %addr_vtable42, align 8
%vtable_ptr44 = bitcast i8* %vtable43 to [35 x i8*]*
%vtable45 = load [35 x i8*], [35 x i8*]* %vtable_ptr44, align 8
%func_raw46 = extractvalue [35 x i8*] %vtable45, 0
%func47 = bitcast i8* %func_raw46 to %Bool* (%Int*, %Int*)*
%result48 = call %Bool* %func47(%Int* %i41, %Int* %len)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result48)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%ret49 = load %Array*, %Array** %ret, align 8
br label %"Invoke_Array#push50"
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%ret68 = load %Array*, %Array** %ret, align 8
br label %Ret
"Invoke_Array#push50": ; preds = %WhileBody
%addr_vtable51 = getelementptr inbounds %Array, %Array* %ret49, i32 0, i32 0
%vtable52 = load i8*, i8** %addr_vtable51, align 8
%vtable_ptr53 = bitcast i8* %vtable52 to [54 x i8*]*
%vtable54 = load [54 x i8*], [54 x i8*]* %vtable_ptr53, align 8
%func_raw55 = extractvalue [54 x i8*] %vtable54, 45
%func56 = bitcast i8* %func_raw55 to %Void* (%Array*, %Object*)*
%result57 = call %Void* %func56(%Array* %ret49, %Object* %item)
br label %"Invoke_Array#push_end58"
"Invoke_Array#push_end58": ; preds = %"Invoke_Array#push50"
%i59 = load %Int*, %Int** %i, align 8
%sk_int60 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %"Invoke_Array#push_end58"
%addr_vtable61 = getelementptr inbounds %Int, %Int* %i59, i32 0, i32 0
%vtable62 = load i8*, i8** %addr_vtable61, align 8
%vtable_ptr63 = bitcast i8* %vtable62 to [35 x i8*]*
%vtable64 = load [35 x i8*], [35 x i8*]* %vtable_ptr63, align 8
%func_raw65 = extractvalue [35 x i8*] %vtable64, 18
%func66 = bitcast i8* %func_raw65 to %Int* (%Int*, %Int*)*
%result67 = call %Int* %func66(%Int* %i59, %Int* %sk_int60)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result67, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Fn9* @Meta_Fn9_new(%Fn9* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn9*
%addr_vtable = getelementptr inbounds %Fn9, %Fn9* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn9 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn9* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn9, %Fn9* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn9* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn9* %addr
}
define %Fn5* @Meta_Fn5_new(%Fn5* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn5*
%addr_vtable = getelementptr inbounds %Fn5, %Fn5* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn5 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn5* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn5, %Fn5* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn5* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn5* %addr
}
define %"Maybe::None"* @Meta_Maybe_None_new(%"Maybe::None"* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 2))
%addr = bitcast i8* %mem to %"Maybe::None"*
%addr_vtable = getelementptr inbounds %"Maybe::None", %"Maybe::None"* %addr, i32 0, i32 0
store i8* bitcast ([18 x i8*]* @"shiika_vtable_Maybe::None" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Maybe::None"* %self to %Class.0*
%addr_my_class = getelementptr inbounds %"Maybe::None", %"Maybe::None"* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Maybe_None_initialize(%"Maybe::None"* %addr)
ret %"Maybe::None"* %addr
}
define %Metaclass* @Metaclass_new(%Metaclass* %self, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%addr = bitcast i8* %mem to %Metaclass*
%addr_vtable = getelementptr inbounds %Metaclass, %Metaclass* %addr, i32 0, i32 0
store i8* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to i8*), i8** %addr_vtable, align 8
%class = bitcast %Metaclass* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Metaclass, %Metaclass* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Metaclass* %addr to %Class.0*
%1 = call %Void* @Class_initialize(%Class.0* %obj_as_super, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj)
ret %Metaclass* %addr
}
define %String* @Metaclass_name(%Metaclass* %self) {
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %String* [ %ifResult, %Ret ]
ret %String* %methodResult
IfBegin: ; preds = %0
%"addr_@name" = getelementptr inbounds %Metaclass, %Metaclass* %self, i32 0, i32 2
%"@name" = load %String*, %String** %"addr_@name", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str_55, i32 0, i32 0), i64 9)
br label %"Invoke_String#=="
IfThen: ; preds = %"Invoke_String#==_end"
%sk_str2 = call %String* @gen_literal_string(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str_56, i32 0, i32 0), i64 9)
br label %IfEnd
IfElse: ; preds = %"Invoke_String#==_end"
%sk_str3 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_57, i32 0, i32 0), i64 5)
%"addr_@name4" = getelementptr inbounds %Metaclass, %Metaclass* %self, i32 0, i32 2
%"@name5" = load %String*, %String** %"addr_@name4", align 8
br label %"Invoke_String#+"
IfEnd: ; preds = %"Invoke_String#+_end", %IfThen
%ifResult = phi %String* [ %sk_str2, %IfThen ], [ %result12, %"Invoke_String#+_end" ]
br label %Ret
"Invoke_String#==": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %String, %String* %"@name", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%String*, %String*)*
%result = call %Bool* %func(%String* %"@name", %String* %sk_str)
br label %"Invoke_String#==_end"
"Invoke_String#==_end": ; preds = %"Invoke_String#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_String#+": ; preds = %IfElse
%addr_vtable6 = getelementptr inbounds %String, %String* %sk_str3, i32 0, i32 0
%vtable7 = load i8*, i8** %addr_vtable6, align 8
%vtable_ptr8 = bitcast i8* %vtable7 to [35 x i8*]*
%vtable9 = load [35 x i8*], [35 x i8*]* %vtable_ptr8, align 8
%func_raw10 = extractvalue [35 x i8*] %vtable9, 17
%func11 = bitcast i8* %func_raw10 to %String* (%String*, %String*)*
%result12 = call %String* %func11(%String* %sk_str3, %String* %"@name5")
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %String* @Metaclass_inspect(%Metaclass* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str_59, i32 0, i32 0), i64 12)
br label %"Invoke_Metaclass#name"
End: ; preds = %Ret
%methodResult = phi %String* [ %result17, %Ret ]
ret %String* %methodResult
"Invoke_Metaclass#name": ; preds = %0
%addr_vtable = getelementptr inbounds %Metaclass, %Metaclass* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 20
%func = bitcast i8* %func_raw to %String* (%Metaclass*)*
%result = call %String* %func(%Metaclass* %self)
br label %"Invoke_Metaclass#name_end"
"Invoke_Metaclass#name_end": ; preds = %"Invoke_Metaclass#name"
br label %"Invoke_String#+"
"Invoke_String#+": ; preds = %"Invoke_Metaclass#name_end"
%addr_vtable2 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 17
%func7 = bitcast i8* %func_raw6 to %String* (%String*, %String*)*
%result8 = call %String* %func7(%String* %sk_str, %String* %result)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str9 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_58, i32 0, i32 0), i64 1)
br label %"Invoke_String#+10"
"Invoke_String#+10": ; preds = %"Invoke_String#+_end"
%addr_vtable11 = getelementptr inbounds %String, %String* %result8, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 17
%func16 = bitcast i8* %func_raw15 to %String* (%String*, %String*)*
%result17 = call %String* %func16(%String* %result8, %String* %sk_str9)
br label %"Invoke_String#+_end18"
"Invoke_String#+_end18": ; preds = %"Invoke_String#+10"
br label %Ret
Ret: ; preds = %"Invoke_String#+_end18"
br label %End
}
define %"Dict::Table"* @Meta_Dict_Table_new(%"Dict::Table"* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %"Dict::Table"*
%addr_vtable = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %addr, i32 0, i32 0
store i8* bitcast ([23 x i8*]* @"shiika_vtable_Dict::Table" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Dict::Table"* %self to %Class.0*
%addr_my_class = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Dict_Table_initialize(%"Dict::Table"* %addr)
ret %"Dict::Table"* %addr
}
define %Void* @Class_initialize(%Class.0* %self, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj) {
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
store %String* %"@name", %String** %"addr_@name", align 8
br label %"Invoke_Class#_initialize_rustlib"
End: ; preds = %Ret
%"::Void3" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void3"
"Invoke_Class#_initialize_rustlib": ; preds = %0
%addr_vtable = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 0
%vtable1 = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable1 to [22 x i8*]*
%vtable2 = load [22 x i8*], [22 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [22 x i8*] %vtable2, 17
%func = bitcast i8* %func_raw to %Object* (%Class.0*, %Object*, %Metaclass*)*
%result = call %Object* %func(%Class.0* %self, %Object* %vtable, %Metaclass* %metacls_obj)
br label %"Invoke_Class#_initialize_rustlib_end"
"Invoke_Class#_initialize_rustlib_end": ; preds = %"Invoke_Class#_initialize_rustlib"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Class#_initialize_rustlib_end"
br label %End
}
define %String* @_set_Class_name(%Class.0* %self, %String* %name) {
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
store %String* %name, %String** %"addr_@name", align 8
ret %String* %name
}
define %String* @Class_name(%Class.0* %self) {
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
%"@name" = load %String*, %String** %"addr_@name", align 8
br label %Ret
End: ; preds = %Ret
%methodResult = phi %String* [ %"@name", %Ret ]
ret %String* %methodResult
Ret: ; preds = %0
br label %End
}
define %String* @Class_inspect(%Class.0* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str_53, i32 0, i32 0), i64 8)
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
%"@name" = load %String*, %String** %"addr_@name", align 8
br label %"Invoke_String#to_s"
End: ; preds = %Ret
%methodResult = phi %String* [ %result17, %Ret ]
ret %String* %methodResult
"Invoke_String#to_s": ; preds = %0
%addr_vtable = getelementptr inbounds %String, %String* %"@name", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 15
%func = bitcast i8* %func_raw to %String* (%String*)*
%result = call %String* %func(%String* %"@name")
br label %"Invoke_String#to_s_end"
"Invoke_String#to_s_end": ; preds = %"Invoke_String#to_s"
br label %"Invoke_String#+"
"Invoke_String#+": ; preds = %"Invoke_String#to_s_end"
%addr_vtable2 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 17
%func7 = bitcast i8* %func_raw6 to %String* (%String*, %String*)*
%result8 = call %String* %func7(%String* %sk_str, %String* %result)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str9 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_52, i32 0, i32 0), i64 1)
br label %"Invoke_String#+10"
"Invoke_String#+10": ; preds = %"Invoke_String#+_end"
%addr_vtable11 = getelementptr inbounds %String, %String* %result8, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 17
%func16 = bitcast i8* %func_raw15 to %String* (%String*, %String*)*
%result17 = call %String* %func16(%String* %result8, %String* %sk_str9)
br label %"Invoke_String#+_end18"
"Invoke_String#+_end18": ; preds = %"Invoke_String#+10"
br label %Ret
Ret: ; preds = %"Invoke_String#+_end18"
br label %End
}
define %String* @Class_to__s(%Class.0* %self) {
br label %"Invoke_Class#name"
End: ; preds = %Ret
%methodResult = phi %String* [ %result, %Ret ]
ret %String* %methodResult
"Invoke_Class#name": ; preds = %0
%addr_vtable = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [22 x i8*]*
%vtable1 = load [22 x i8*], [22 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [22 x i8*] %vtable1, 20
%func = bitcast i8* %func_raw to %String* (%Class.0*)*
%result = call %String* %func(%Class.0* %self)
br label %"Invoke_Class#name_end"
"Invoke_Class#name_end": ; preds = %"Invoke_Class#name"
br label %Ret
Ret: ; preds = %"Invoke_Class#name_end"
br label %End
}
declare %Object* @Class___initialize__rustlib(%Class.0*, %Object*, %Object*)
declare %Class.0* @Class_lt_gt_(%Class.0*, %Array*)
declare %Class.0* @Class___specialize1(%Class.0*, %Array*)
declare %Class.0* @Class___type__argument(%Class.0*, %Int*)
define %Object* @Meta_Object_new(%Object* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 2))
%addr = bitcast i8* %mem to %Object*
%addr_vtable = getelementptr inbounds %Object, %Object* %addr, i32 0, i32 0
store i8* bitcast ([16 x i8*]* @shiika_vtable_Object to i8*), i8** %addr_vtable, align 8
%class = bitcast %Object* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Object, %Object* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Object_initialize(%Object* %addr)
ret %Object* %addr
}
define %Void* @Array_initialize(%Array* %self) {
%"::Array::INITIAL_CAPA" = load %Int*, %Int** @"::Array::INITIAL_CAPA", align 8
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %"::Array::INITIAL_CAPA", %Int** %"addr_@capa", align 8
%sk_int = call %Int* @box_int(i64 0)
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %sk_int, %Int** %"addr_@n_items", align 8
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"::Array::BYTES_OF_PTR" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
%"::Array::INITIAL_CAPA1" = load %Int*, %Int** @"::Array::INITIAL_CAPA", align 8
br label %"Invoke_Int#*"
End: ; preds = %Ret
%"::Void10" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void10"
"Invoke_Int#*": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"::Array::BYTES_OF_PTR", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 17
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %"::Array::BYTES_OF_PTR", %Int* %"::Array::INITIAL_CAPA1")
br label %"Invoke_Int#*_end"
"Invoke_Int#*_end": ; preds = %"Invoke_Int#*"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc": ; preds = %"Invoke_Int#*_end"
%addr_vtable3 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 22
%func8 = bitcast i8* %func_raw7 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %Int*)*
%result9 = call %"Shiika::Internal::Ptr"* %func8(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %Int* %result)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
store %"Shiika::Internal::Ptr"* %result9, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
br label %End
}
define %Int* @Array_n__items(%Array* %self) {
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
ret %Int* %"@n_items"
}
define %Int* @_set_Array_n__items(%Array* %self, %Int* %n_items) {
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %n_items, %Int** %"addr_@n_items", align 8
ret %Int* %n_items
}
define %Int* @Array_capa(%Array* %self) {
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa" = load %Int*, %Int** %"addr_@capa", align 8
ret %Int* %"@capa"
}
define %Int* @_set_Array_capa(%Array* %self, %Int* %capa) {
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %capa, %Int** %"addr_@capa", align 8
ret %Int* %capa
}
define %"Shiika::Internal::Ptr"* @Array_items(%Array* %self) {
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
ret %"Shiika::Internal::Ptr"* %"@items"
}
define %"Shiika::Internal::Ptr"* @_set_Array_items(%Array* %self, %"Shiika::Internal::Ptr"* %items) {
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
store %"Shiika::Internal::Ptr"* %items, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
ret %"Shiika::Internal::Ptr"* %items
}
define %Bool* @Array_eq_(%Array* %self, %Array* %other) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ifResult, %Ret ]
ret %Bool* %methodResult
IfBegin: ; preds = %alloca_End
br label %"Invoke_Array#length"
IfThen: ; preds = %"Invoke_Int#==_end"
%sk_bool19 = call %Bool* @box_bool(i1 false)
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#==_end"
%sk_bool20 = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool20, %Bool** %ret, align 8
%sk_int = call %Int* @box_int(i64 0)
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int21 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
IfEnd: ; preds = %"Invoke_Int#upto_end", %IfThen
%ifResult = phi %Bool* [ %sk_bool19, %IfThen ], [ %ret40, %"Invoke_Int#upto_end" ]
br label %Ret
"Invoke_Array#length": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 39
%func = bitcast i8* %func_raw to %Int* (%Array*)*
%result = call %Int* %func(%Array* %self)
br label %"Invoke_Array#length_end"
"Invoke_Array#length_end": ; preds = %"Invoke_Array#length"
br label %"Invoke_Array#length2"
"Invoke_Array#length2": ; preds = %"Invoke_Array#length_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %other, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 39
%func8 = bitcast i8* %func_raw7 to %Int* (%Array*)*
%result9 = call %Int* %func8(%Array* %other)
br label %"Invoke_Array#length_end10"
"Invoke_Array#length_end10": ; preds = %"Invoke_Array#length2"
br label %"Invoke_Int#=="
"Invoke_Int#==": ; preds = %"Invoke_Array#length_end10"
%addr_vtable11 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 2
%func16 = bitcast i8* %func_raw15 to %Bool* (%Int*, %Int*)*
%result17 = call %Bool* %func16(%Int* %result, %Int* %result9)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result17)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
%llvm_bool18 = call i1 @unbox_bool(%Bool* %sk_bool)
%istrue = icmp eq i1 %llvm_bool18, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#-": ; preds = %IfElse
%addr_vtable22 = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable23 = load i8*, i8** %addr_vtable22, align 8
%vtable_ptr24 = bitcast i8* %vtable23 to [35 x i8*]*
%vtable25 = load [35 x i8*], [35 x i8*]* %vtable_ptr24, align 8
%func_raw26 = extractvalue [35 x i8*] %vtable25, 19
%func27 = bitcast i8* %func_raw26 to %Int* (%Int*, %Int*)*
%result28 = call %Int* %func27(%Int* %"@n_items", %Int* %sk_int21)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_1_in_Array#==" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result29 = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Array* %other to %Object*
%_ = call %Void* @Array_push(%Array* %result29, %Object* %capture_item)
%capture_item30 = bitcast %Bool** %ret to %Object*
%_31 = call %Void* @Array_push(%Array* %result29, %Object* %capture_item30)
%result32 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result29)
br label %"Invoke_Int#upto"
"Invoke_Int#upto": ; preds = %"Invoke_Int#-_end"
%addr_vtable33 = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [35 x i8*]*
%vtable36 = load [35 x i8*], [35 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [35 x i8*] %vtable36, 33
%func38 = bitcast i8* %func_raw37 to %Void* (%Int*, %Int*, %Fn1*)*
%result39 = call %Void* %func38(%Int* %sk_int, %Int* %result28, %Fn1* %result32)
br label %"Invoke_Int#upto_end"
"Invoke_Int#upto_end": ; preds = %"Invoke_Int#upto"
%ret40 = load %Bool*, %Bool** %ret, align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @Array_aset_(%Array* %self, %Int* %i, %Object* %obj) {
alloca:
%idx = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%"::Void85" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void85"
IfBegin: ; preds = %alloca_End
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
br label %"Invoke_Int#+"
IfElse: ; preds = %"Invoke_Int#<_end"
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Int#+_end"
%ifResult = phi %Int* [ %result8, %"Invoke_Int#+_end" ], [ %i, %IfElse ]
store %Int* %ifResult, %Int** %idx, align 8
br label %IfBegin9
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i, %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#+": ; preds = %IfThen
%addr_vtable2 = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 18
%func7 = bitcast i8* %func_raw6 to %Int* (%Int*, %Int*)*
%result8 = call %Int* %func7(%Int* %"@n_items", %Int* %i)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
br label %IfEnd
IfBegin9: ; preds = %IfEnd
%idx13 = load %Int*, %Int** %idx, align 8
%sk_int14 = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<15"
IfThen10: ; preds = %"Invoke_Int#<_end23"
%as = bitcast %Array* %self to %Object*
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @str_44, i32 0, i32 0), i64 33)
%as26 = bitcast %String* %sk_str to %Object*
br label %"Invoke_Object#panic"
IfElse11: ; preds = %"Invoke_Int#<_end23"
%"::Void33" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd12
IfEnd12: ; preds = %IfElse11
br label %IfBegin34
"Invoke_Int#<15": ; preds = %IfBegin9
%addr_vtable16 = getelementptr inbounds %Int, %Int* %idx13, i32 0, i32 0
%vtable17 = load i8*, i8** %addr_vtable16, align 8
%vtable_ptr18 = bitcast i8* %vtable17 to [35 x i8*]*
%vtable19 = load [35 x i8*], [35 x i8*]* %vtable_ptr18, align 8
%func_raw20 = extractvalue [35 x i8*] %vtable19, 0
%func21 = bitcast i8* %func_raw20 to %Bool* (%Int*, %Int*)*
%result22 = call %Bool* %func21(%Int* %idx13, %Int* %sk_int14)
br label %"Invoke_Int#<_end23"
"Invoke_Int#<_end23": ; preds = %"Invoke_Int#<15"
%llvm_bool24 = call i1 @unbox_bool(%Bool* %result22)
%istrue25 = icmp eq i1 %llvm_bool24, true
br i1 %istrue25, label %IfThen10, label %IfElse11
"Invoke_Object#panic": ; preds = %IfThen10
%addr_vtable27 = getelementptr inbounds %Object, %Object* %as, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [16 x i8*]*
%vtable30 = load [16 x i8*], [16 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [16 x i8*] %vtable30, 12
%func32 = bitcast i8* %func_raw31 to void (%Object*, %Object*)*
call void %func32(%Object* %as, %Object* %as26)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
IfBegin34: ; preds = %IfEnd12
%idx38 = load %Int*, %Int** %idx, align 8
%"addr_@n_items39" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items40" = load %Int*, %Int** %"addr_@n_items39", align 8
br label %"Invoke_Int#>="
IfThen35: ; preds = %"Invoke_Int#>=_end"
%as50 = bitcast %Array* %self to %Object*
%sk_str51 = call %String* @gen_literal_string(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str_45, i32 0, i32 0), i64 28)
%as52 = bitcast %String* %sk_str51 to %Object*
br label %"Invoke_Object#panic53"
IfElse36: ; preds = %"Invoke_Int#>=_end"
%"::Void61" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd37
IfEnd37: ; preds = %IfElse36
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
%idx62 = load %Int*, %Int** %idx, align 8
%"::Array::BYTES_OF_PTR" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
br label %"Invoke_Int#*"
"Invoke_Int#>=": ; preds = %IfBegin34
%addr_vtable41 = getelementptr inbounds %Int, %Int* %idx38, i32 0, i32 0
%vtable42 = load i8*, i8** %addr_vtable41, align 8
%vtable_ptr43 = bitcast i8* %vtable42 to [35 x i8*]*
%vtable44 = load [35 x i8*], [35 x i8*]* %vtable_ptr43, align 8
%func_raw45 = extractvalue [35 x i8*] %vtable44, 4
%func46 = bitcast i8* %func_raw45 to %Bool* (%Int*, %Int*)*
%result47 = call %Bool* %func46(%Int* %idx38, %Int* %"@n_items40")
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool48 = call i1 @unbox_bool(%Bool* %result47)
%istrue49 = icmp eq i1 %llvm_bool48, true
br i1 %istrue49, label %IfThen35, label %IfElse36
"Invoke_Object#panic53": ; preds = %IfThen35
%addr_vtable54 = getelementptr inbounds %Object, %Object* %as50, i32 0, i32 0
%vtable55 = load i8*, i8** %addr_vtable54, align 8
%vtable_ptr56 = bitcast i8* %vtable55 to [16 x i8*]*
%vtable57 = load [16 x i8*], [16 x i8*]* %vtable_ptr56, align 8
%func_raw58 = extractvalue [16 x i8*] %vtable57, 12
%func59 = bitcast i8* %func_raw58 to void (%Object*, %Object*)*
call void %func59(%Object* %as50, %Object* %as52)
%"::Void60" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_Int#*": ; preds = %IfEnd37
%addr_vtable63 = getelementptr inbounds %Int, %Int* %idx62, i32 0, i32 0
%vtable64 = load i8*, i8** %addr_vtable63, align 8
%vtable_ptr65 = bitcast i8* %vtable64 to [35 x i8*]*
%vtable66 = load [35 x i8*], [35 x i8*]* %vtable_ptr65, align 8
%func_raw67 = extractvalue [35 x i8*] %vtable66, 17
%func68 = bitcast i8* %func_raw67 to %Int* (%Int*, %Int*)*
%result69 = call %Int* %func68(%Int* %idx62, %Int* %"::Array::BYTES_OF_PTR")
br label %"Invoke_Int#*_end"
"Invoke_Int#*_end": ; preds = %"Invoke_Int#*"
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Shiika::Internal::Ptr#+": ; preds = %"Invoke_Int#*_end"
%addr_vtable70 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@items", i32 0, i32 0
%vtable71 = load i8*, i8** %addr_vtable70, align 8
%vtable_ptr72 = bitcast i8* %vtable71 to [21 x i8*]*
%vtable73 = load [21 x i8*], [21 x i8*]* %vtable_ptr72, align 8
%func_raw74 = extractvalue [21 x i8*] %vtable73, 16
%func75 = bitcast i8* %func_raw74 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result76 = call %"Shiika::Internal::Ptr"* %func75(%"Shiika::Internal::Ptr"* %"@items", %Int* %result69)
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
br label %"Invoke_Shiika::Internal::Ptr#store"
"Invoke_Shiika::Internal::Ptr#store": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable77 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %result76, i32 0, i32 0
%vtable78 = load i8*, i8** %addr_vtable77, align 8
%vtable_ptr79 = bitcast i8* %vtable78 to [21 x i8*]*
%vtable80 = load [21 x i8*], [21 x i8*]* %vtable_ptr79, align 8
%func_raw81 = extractvalue [21 x i8*] %vtable80, 19
%func82 = bitcast i8* %func_raw81 to %Void* (%"Shiika::Internal::Ptr"*, %Object*)*
%result83 = call %Void* %func82(%"Shiika::Internal::Ptr"* %result76, %Object* %obj)
br label %"Invoke_Shiika::Internal::Ptr#store_end"
"Invoke_Shiika::Internal::Ptr#store_end": ; preds = %"Invoke_Shiika::Internal::Ptr#store"
%"::Void84" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Shiika::Internal::Ptr#store_end"
br label %End
}
define %Bool* @"Array_all?"(%Array* %self, %Fn1* %f) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_2_in_Array#all?" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%capture_item1 = bitcast %Bool** %ret to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item1)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result3 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret6, %Ret ]
ret %Bool* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable4 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable4, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result5 = call %Void* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret6 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Bool* @"Array_any?"(%Array* %self, %Fn1* %f) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_3_in_Array#any?" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%capture_item1 = bitcast %Bool** %ret to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item1)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result3 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret6, %Ret ]
ret %Bool* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable4 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable4, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result5 = call %Void* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret6 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Void* @Array_append(%Array* %self, %Array* %other) {
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_4_in_Array#append" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%result1 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result1 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%"::Void4" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void4"
"Invoke_Array#each": ; preds = %0
%addr_vtable = getelementptr inbounds %Array, %Array* %other, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable2 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable2, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result3 = call %Void* %func(%Array* %other, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Void* @Array_clear(%Array* %self) {
%sk_int = call %Int* @box_int(i64 0)
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %sk_int, %Int** %"addr_@n_items", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %Array* @Array_clone(%Array* %self) {
alloca:
%"ary@6_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@6_", align 8
%"ary@6_10" = load %Array*, %Array** %"ary@6_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@6_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@6_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@6_19" = load %Array*, %Array** %"ary@6_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@6_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_5_in_Array#clone" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%result36 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as37 = bitcast %Fn1* %result36 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 29
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %self, %Object* %as37)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Array* @Array_drop(%Array* %self, %Int* %n) {
alloca:
%"ary@7_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret52, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@7_", align 8
%"ary@7_10" = load %Array*, %Array** %"ary@7_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@7_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@7_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@7_19" = load %Array*, %Array** %"ary@7_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@7_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int34 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable35 = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable36 = load i8*, i8** %addr_vtable35, align 8
%vtable_ptr37 = bitcast i8* %vtable36 to [35 x i8*]*
%vtable38 = load [35 x i8*], [35 x i8*]* %vtable_ptr37, align 8
%func_raw39 = extractvalue [35 x i8*] %vtable38, 19
%func40 = bitcast i8* %func_raw39 to %Int* (%Int*, %Int*)*
%result41 = call %Int* %func40(%Int* %"@n_items", %Int* %sk_int34)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_6_in_Array#drop" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array42" = load %Array*, %Array** @"::Array", align 8
%result43 = call %Array* @Meta_Array_new(%Array* %"::Array42")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result43, %Object* %capture_item)
%result44 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result43)
br label %"Invoke_Int#upto"
"Invoke_Int#upto": ; preds = %"Invoke_Int#-_end"
%addr_vtable45 = getelementptr inbounds %Int, %Int* %n, i32 0, i32 0
%vtable46 = load i8*, i8** %addr_vtable45, align 8
%vtable_ptr47 = bitcast i8* %vtable46 to [35 x i8*]*
%vtable48 = load [35 x i8*], [35 x i8*]* %vtable_ptr47, align 8
%func_raw49 = extractvalue [35 x i8*] %vtable48, 33
%func50 = bitcast i8* %func_raw49 to %Void* (%Int*, %Int*, %Fn1*)*
%result51 = call %Void* %func50(%Int* %n, %Int* %result41, %Fn1* %result44)
br label %"Invoke_Int#upto_end"
"Invoke_Int#upto_end": ; preds = %"Invoke_Int#upto"
%ret52 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Int#upto_end"
br label %End
}
define %Void* @Array_each(%Array* %self, %Fn1* %f) {
alloca:
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
End: ; preds = %Ret, %Invoke_lambda
%"::Void26" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void26"
WhileBegin: ; preds = %"Invoke_Int#+_end", %alloca_End
%i1 = load %Int*, %Int** %i, align 8
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i1, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i1, %Int* %"@n_items")
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%i3 = load %Int*, %Int** %i, align 8
%as = bitcast %Int* %i3 to %Object*
br label %"Invoke_Array#[]"
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void25" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Array#[]": ; preds = %WhileBody
%addr_vtable4 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [54 x i8*]*
%vtable7 = load [54 x i8*], [54 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [54 x i8*] %vtable7, 16
%func9 = bitcast i8* %func_raw8 to %Object* (%Array*, %Object*)*
%result10 = call %Object* %func9(%Array* %self, %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %Invoke_lambda
Invoke_lambda: ; preds = %"Invoke_Array#[]_end"
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %Object*)*
%result11 = call %Void* %0(%Fn1* %f, %Object* %result10)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int12 = call %Int* @box_int(i64 1)
%result13 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int12)
%llvm_bool14 = call i1 @unbox_bool(%Bool* %result13)
%istrue15 = icmp eq i1 %llvm_bool14, true
br i1 %istrue15, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%i16 = load %Int*, %Int** %i, align 8
%sk_int17 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %Invoke_lambda_end
%addr_vtable18 = getelementptr inbounds %Int, %Int* %i16, i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [35 x i8*]*
%vtable21 = load [35 x i8*], [35 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [35 x i8*] %vtable21, 18
%func23 = bitcast i8* %func_raw22 to %Int* (%Int*, %Int*)*
%result24 = call %Int* %func23(%Int* %i16, %Int* %sk_int17)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result24, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Maybe* @Array_first(%Array* %self) {
alloca:
%"ary@8_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Maybe* [ %ifResult, %Ret ]
ret %Maybe* %methodResult
IfBegin: ; preds = %alloca_End
br label %"Invoke_Array#empty?"
IfThen: ; preds = %"Invoke_Array#empty?_end"
%"::None" = load %"Maybe::None"*, %"Maybe::None"** @"::None", align 8
%as = bitcast %"Maybe::None"* %"::None" to %Maybe*
br label %IfEnd
IfElse: ; preds = %"Invoke_Array#empty?_end"
%"::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Some", align 8
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
IfEnd: ; preds = %"Invoke_Meta:Maybe::Some#new_end", %IfThen
%ifResult = phi %Maybe* [ %as, %IfThen ], [ %as50, %"Invoke_Meta:Maybe::Some#new_end" ]
br label %Ret
"Invoke_Array#empty?": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 30
%func = bitcast i8* %func_raw to %Bool* (%Array*)*
%result = call %Bool* %func(%Array* %self)
br label %"Invoke_Array#empty?_end"
"Invoke_Array#empty?_end": ; preds = %"Invoke_Array#empty?"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Class#_specialize1": ; preds = %IfElse
%addr_vtable2 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [25 x i8*]*
%vtable5 = load [25 x i8*], [25 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [25 x i8*] %vtable5, 18
%func7 = bitcast i8* %func_raw6 to %Array* (%Array*, %Class.0*)*
%result8 = call %Array* %func7(%Array* %"::Array", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable9 = getelementptr inbounds %Array, %Array* %result8, i32 0, i32 0
%vtable10 = load i8*, i8** %addr_vtable9, align 8
%vtable_ptr11 = bitcast i8* %vtable10 to [25 x i8*]*
%vtable12 = load [25 x i8*], [25 x i8*]* %vtable_ptr11, align 8
%func_raw13 = extractvalue [25 x i8*] %vtable12, 23
%func14 = bitcast i8* %func_raw13 to %Array* (%Array*)*
%result15 = call %Array* %func14(%Array* %result8)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result15, %Array** %"ary@8_", align 8
%"ary@8_16" = load %Array*, %Array** %"ary@8_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result17 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as18 = bitcast %Class.0* %result17 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %"ary@8_16", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [54 x i8*]*
%vtable22 = load [54 x i8*], [54 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [54 x i8*] %vtable22, 45
%func24 = bitcast i8* %func_raw23 to %Void* (%Array*, %Object*)*
%result25 = call %Void* %func24(%Array* %"ary@8_16", %Object* %as18)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@8_26" = load %Array*, %Array** %"ary@8_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable27 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Some", i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [23 x i8*]*
%vtable30 = load [23 x i8*], [23 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [23 x i8*] %vtable30, 16
%func32 = bitcast i8* %func_raw31 to %"Maybe::Some"* (%"Maybe::Some"*, %Array*)*
%result33 = call %"Maybe::Some"* %func32(%"Maybe::Some"* %"::Some", %Array* %"ary@8_26")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
%sk_int34 = call %Int* @box_int(i64 0)
%as35 = bitcast %Int* %sk_int34 to %Object*
br label %"Invoke_Array#[]"
"Invoke_Array#[]": ; preds = %"Invoke_Class#<>_end"
%addr_vtable36 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable37 = load i8*, i8** %addr_vtable36, align 8
%vtable_ptr38 = bitcast i8* %vtable37 to [54 x i8*]*
%vtable39 = load [54 x i8*], [54 x i8*]* %vtable_ptr38, align 8
%func_raw40 = extractvalue [54 x i8*] %vtable39, 16
%func41 = bitcast i8* %func_raw40 to %Object* (%Array*, %Object*)*
%result42 = call %Object* %func41(%Array* %self, %Object* %as35)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %"Invoke_Meta:Maybe::Some#new"
"Invoke_Meta:Maybe::Some#new": ; preds = %"Invoke_Array#[]_end"
%addr_vtable43 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %result33, i32 0, i32 0
%vtable44 = load i8*, i8** %addr_vtable43, align 8
%vtable_ptr45 = bitcast i8* %vtable44 to [23 x i8*]*
%vtable46 = load [23 x i8*], [23 x i8*]* %vtable_ptr45, align 8
%func_raw47 = extractvalue [23 x i8*] %vtable46, 22
%func48 = bitcast i8* %func_raw47 to %"Maybe::Some"* (%"Maybe::Some"*, %Object*)*
%result49 = call %"Maybe::Some"* %func48(%"Maybe::Some"* %result33, %Object* %result42)
br label %"Invoke_Meta:Maybe::Some#new_end"
"Invoke_Meta:Maybe::Some#new_end": ; preds = %"Invoke_Meta:Maybe::Some#new"
%as50 = bitcast %"Maybe::Some"* %result49 to %Maybe*
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Array* @Array_flat__map(%Array* %self, %Fn1* %f) {
alloca:
%"ary@10_" = alloca %Array*, align 8
%"ary@11_" = alloca %Array*, align 8
%"ary@9_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%as = bitcast %Fn1* %f to %Object*
br label %"Invoke_Array#map"
End: ; preds = %Ret
%methodResult = phi %Array* [ %result51, %Ret ]
ret %Array* %methodResult
"Invoke_Array#map": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 40
%func = bitcast i8* %func_raw to %Array* (%Array*, %Object*)*
%result = call %Array* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#map_end"
"Invoke_Array#map_end": ; preds = %"Invoke_Array#map"
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array2" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
"Invoke_Class#_specialize1": ; preds = %"Invoke_Array#map_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %"::Array2", i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 18
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*, %Class.0*)*
%result9 = call %Array* %func8(%Array* %"::Array2", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable10 = getelementptr inbounds %Array, %Array* %result9, i32 0, i32 0
%vtable11 = load i8*, i8** %addr_vtable10, align 8
%vtable_ptr12 = bitcast i8* %vtable11 to [25 x i8*]*
%vtable13 = load [25 x i8*], [25 x i8*]* %vtable_ptr12, align 8
%func_raw14 = extractvalue [25 x i8*] %vtable13, 23
%func15 = bitcast i8* %func_raw14 to %Array* (%Array*)*
%result16 = call %Array* %func15(%Array* %result9)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result16, %Array** %"ary@9_", align 8
%"ary@9_17" = load %Array*, %Array** %"ary@9_", align 8
%"::Object" = load %Object*, %Object** @"::Object", align 8
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable18 = getelementptr inbounds %Array, %Array* %"ary@9_17", i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [54 x i8*]*
%vtable21 = load [54 x i8*], [54 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [54 x i8*] %vtable21, 45
%func23 = bitcast i8* %func_raw22 to %Void* (%Array*, %Object*)*
%result24 = call %Void* %func23(%Array* %"ary@9_17", %Object* %"::Object")
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@9_25" = load %Array*, %Array** %"ary@9_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable26 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [25 x i8*]*
%vtable29 = load [25 x i8*], [25 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [25 x i8*] %vtable29, 16
%func31 = bitcast i8* %func_raw30 to %Array* (%Array*, %Array*)*
%result32 = call %Array* %func31(%Array* %"::Array", %Array* %"ary@9_25")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable33 = getelementptr inbounds %Array, %Array* %result32, i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [25 x i8*]*
%vtable36 = load [25 x i8*], [25 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [25 x i8*] %vtable36, 23
%func38 = bitcast i8* %func_raw37 to %Array* (%Array*)*
%result39 = call %Array* %func38(%Array* %result32)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
%as40 = bitcast %Array* %result39 to %Object*
%"::Fn2" = load %Fn2*, %Fn2** @"::Fn2", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Array* (%Fn2*, %Object*, %Object*)* @"lambda_7_in_Array#flat_map" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array41" = load %Array*, %Array** @"::Array", align 8
%result42 = call %Array* @Meta_Array_new(%Array* %"::Array41")
%result43 = call %Fn2* @Meta_Fn2_new(%Fn2* %"::Fn2", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result42)
%as44 = bitcast %Fn2* %result43 to %Object*
br label %"Invoke_Array#fold"
"Invoke_Array#fold": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable45 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable46 = load i8*, i8** %addr_vtable45, align 8
%vtable_ptr47 = bitcast i8* %vtable46 to [54 x i8*]*
%vtable48 = load [54 x i8*], [54 x i8*]* %vtable_ptr47, align 8
%func_raw49 = extractvalue [54 x i8*] %vtable48, 33
%func50 = bitcast i8* %func_raw49 to %Array* (%Array*, %Object*, %Object*)*
%result51 = call %Array* %func50(%Array* %result, %Object* %as40, %Object* %as44)
br label %"Invoke_Array#fold_end"
"Invoke_Array#fold_end": ; preds = %"Invoke_Array#fold"
br label %Ret
Ret: ; preds = %"Invoke_Array#fold_end"
br label %End
}
define %Object* @Array_fold(%Array* %self, %Object* %initial_sum, %Fn2* %f) {
alloca:
%sum = alloca %Object*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
store %Object* %initial_sum, %Object** %sum, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Object* (%Fn1*, %Object*)* @"lambda_8_in_Array#fold" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Object** %sum to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%capture_item1 = bitcast %Fn2* %f to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item1)
%capture_item3 = bitcast %Object** %sum to %Object*
%_4 = call %Void* @Array_push(%Array* %result, %Object* %capture_item3)
%result5 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result5 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Object* [ %sum8, %Ret ]
ret %Object* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable6, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result7 = call %Void* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%sum8 = load %Object*, %Object** %sum, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Bool* @"Array_includes?"(%Array* %self, %Object* %item) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_9_in_Array#includes?" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%_ = call %Void* @Array_push(%Array* %result, %Object* %item)
%capture_item = bitcast %Bool** %ret to %Object*
%_1 = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%result2 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result2 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret5, %Ret ]
ret %Bool* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable3 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable3, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result4 = call %Void* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret5 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %String* @Array_inspect(%Array* %self) {
alloca:
%first = alloca %Bool*, align 8
%ret = alloca %MutableString*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %first, align 8
%"::MutableString" = load %MutableString*, %MutableString** @"::MutableString", align 8
br label %"Invoke_Meta:MutableString#new"
End: ; preds = %Ret
%methodResult = phi %String* [ %result43, %Ret ]
ret %String* %methodResult
"Invoke_Meta:MutableString#new": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %"::MutableString", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 22
%func = bitcast i8* %func_raw to %MutableString* (%MutableString*)*
%result = call %MutableString* %func(%MutableString* %"::MutableString")
br label %"Invoke_Meta:MutableString#new_end"
"Invoke_Meta:MutableString#new_end": ; preds = %"Invoke_Meta:MutableString#new"
store %MutableString* %result, %MutableString** %ret, align 8
%ret2 = load %MutableString*, %MutableString** %ret, align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_46, i32 0, i32 0), i64 1)
br label %"Invoke_MutableString#append"
"Invoke_MutableString#append": ; preds = %"Invoke_Meta:MutableString#new_end"
%addr_vtable3 = getelementptr inbounds %MutableString, %MutableString* %ret2, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [28 x i8*]*
%vtable6 = load [28 x i8*], [28 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [28 x i8*] %vtable6, 18
%func8 = bitcast i8* %func_raw7 to %Void* (%MutableString*, %String*)*
%result9 = call %Void* %func8(%MutableString* %ret2, %String* %sk_str)
br label %"Invoke_MutableString#append_end"
"Invoke_MutableString#append_end": ; preds = %"Invoke_MutableString#append"
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_10_in_Array#inspect" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result10 = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Bool** %first to %Object*
%_ = call %Void* @Array_push(%Array* %result10, %Object* %capture_item)
%capture_item11 = bitcast %Bool** %first to %Object*
%_12 = call %Void* @Array_push(%Array* %result10, %Object* %capture_item11)
%capture_item13 = bitcast %MutableString** %ret to %Object*
%_14 = call %Void* @Array_push(%Array* %result10, %Object* %capture_item13)
%capture_item15 = bitcast %MutableString** %ret to %Object*
%_16 = call %Void* @Array_push(%Array* %result10, %Object* %capture_item15)
%result17 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result10)
%as = bitcast %Fn1* %result17 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_MutableString#append_end"
%addr_vtable18 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [54 x i8*]*
%vtable21 = load [54 x i8*], [54 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [54 x i8*] %vtable21, 29
%func23 = bitcast i8* %func_raw22 to %Void* (%Array*, %Object*)*
%result24 = call %Void* %func23(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret25 = load %MutableString*, %MutableString** %ret, align 8
%sk_str26 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_48, i32 0, i32 0), i64 1)
br label %"Invoke_MutableString#append27"
"Invoke_MutableString#append27": ; preds = %"Invoke_Array#each_end"
%addr_vtable28 = getelementptr inbounds %MutableString, %MutableString* %ret25, i32 0, i32 0
%vtable29 = load i8*, i8** %addr_vtable28, align 8
%vtable_ptr30 = bitcast i8* %vtable29 to [28 x i8*]*
%vtable31 = load [28 x i8*], [28 x i8*]* %vtable_ptr30, align 8
%func_raw32 = extractvalue [28 x i8*] %vtable31, 18
%func33 = bitcast i8* %func_raw32 to %Void* (%MutableString*, %String*)*
%result34 = call %Void* %func33(%MutableString* %ret25, %String* %sk_str26)
br label %"Invoke_MutableString#append_end35"
"Invoke_MutableString#append_end35": ; preds = %"Invoke_MutableString#append27"
%ret36 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#_unsafe_to_s"
"Invoke_MutableString#_unsafe_to_s": ; preds = %"Invoke_MutableString#append_end35"
%addr_vtable37 = getelementptr inbounds %MutableString, %MutableString* %ret36, i32 0, i32 0
%vtable38 = load i8*, i8** %addr_vtable37, align 8
%vtable_ptr39 = bitcast i8* %vtable38 to [28 x i8*]*
%vtable40 = load [28 x i8*], [28 x i8*]* %vtable_ptr39, align 8
%func_raw41 = extractvalue [28 x i8*] %vtable40, 17
%func42 = bitcast i8* %func_raw41 to %String* (%MutableString*)*
%result43 = call %String* %func42(%MutableString* %ret36)
br label %"Invoke_MutableString#_unsafe_to_s_end"
"Invoke_MutableString#_unsafe_to_s_end": ; preds = %"Invoke_MutableString#_unsafe_to_s"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#_unsafe_to_s_end"
br label %End
}
define %Bool* @"Array_empty?"(%Array* %self) {
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
End: ; preds = %Ret
%methodResult = phi %Bool* [ %result, %Ret ]
ret %Bool* %methodResult
"Invoke_Int#==": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %"@n_items", %Int* %sk_int)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
br label %Ret
Ret: ; preds = %"Invoke_Int#==_end"
br label %End
}
define %String* @Array_join(%Array* %self, %String* %separator) {
alloca:
%first = alloca %Bool*, align 8
%ret = alloca %MutableString*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %first, align 8
%"::MutableString" = load %MutableString*, %MutableString** @"::MutableString", align 8
br label %"Invoke_Meta:MutableString#new"
End: ; preds = %Ret
%methodResult = phi %String* [ %result26, %Ret ]
ret %String* %methodResult
"Invoke_Meta:MutableString#new": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %"::MutableString", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 22
%func = bitcast i8* %func_raw to %MutableString* (%MutableString*)*
%result = call %MutableString* %func(%MutableString* %"::MutableString")
br label %"Invoke_Meta:MutableString#new_end"
"Invoke_Meta:MutableString#new_end": ; preds = %"Invoke_Meta:MutableString#new"
store %MutableString* %result, %MutableString** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_11_in_Array#join" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result2 = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Bool** %first to %Object*
%_ = call %Void* @Array_push(%Array* %result2, %Object* %capture_item)
%capture_item3 = bitcast %Bool** %first to %Object*
%_4 = call %Void* @Array_push(%Array* %result2, %Object* %capture_item3)
%capture_item5 = bitcast %String* %separator to %Object*
%_6 = call %Void* @Array_push(%Array* %result2, %Object* %capture_item5)
%capture_item7 = bitcast %MutableString** %ret to %Object*
%_8 = call %Void* @Array_push(%Array* %result2, %Object* %capture_item7)
%capture_item9 = bitcast %MutableString** %ret to %Object*
%_10 = call %Void* @Array_push(%Array* %result2, %Object* %capture_item9)
%result11 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result2)
%as = bitcast %Fn1* %result11 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:MutableString#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 29
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret19 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#_unsafe_to_s"
"Invoke_MutableString#_unsafe_to_s": ; preds = %"Invoke_Array#each_end"
%addr_vtable20 = getelementptr inbounds %MutableString, %MutableString* %ret19, i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [28 x i8*]*
%vtable23 = load [28 x i8*], [28 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [28 x i8*] %vtable23, 17
%func25 = bitcast i8* %func_raw24 to %String* (%MutableString*)*
%result26 = call %String* %func25(%MutableString* %ret19)
br label %"Invoke_MutableString#_unsafe_to_s_end"
"Invoke_MutableString#_unsafe_to_s_end": ; preds = %"Invoke_MutableString#_unsafe_to_s"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#_unsafe_to_s_end"
br label %End
}
define %Maybe* @Array_last(%Array* %self) {
alloca:
%"ary@12_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Maybe* [ %ifResult, %Ret ]
ret %Maybe* %methodResult
IfBegin: ; preds = %alloca_End
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
IfThen: ; preds = %"Invoke_Int#==_end"
%"::None" = load %"Maybe::None"*, %"Maybe::None"** @"::None", align 8
%as = bitcast %"Maybe::None"* %"::None" to %Maybe*
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#==_end"
%"::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Some", align 8
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
IfEnd: ; preds = %"Invoke_Meta:Maybe::Some#new_end", %IfThen
%ifResult = phi %Maybe* [ %as, %IfThen ], [ %as60, %"Invoke_Meta:Maybe::Some#new_end" ]
br label %Ret
"Invoke_Int#==": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %"@n_items", %Int* %sk_int)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Class#_specialize1": ; preds = %IfElse
%addr_vtable2 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [25 x i8*]*
%vtable5 = load [25 x i8*], [25 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [25 x i8*] %vtable5, 18
%func7 = bitcast i8* %func_raw6 to %Array* (%Array*, %Class.0*)*
%result8 = call %Array* %func7(%Array* %"::Array", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable9 = getelementptr inbounds %Array, %Array* %result8, i32 0, i32 0
%vtable10 = load i8*, i8** %addr_vtable9, align 8
%vtable_ptr11 = bitcast i8* %vtable10 to [25 x i8*]*
%vtable12 = load [25 x i8*], [25 x i8*]* %vtable_ptr11, align 8
%func_raw13 = extractvalue [25 x i8*] %vtable12, 23
%func14 = bitcast i8* %func_raw13 to %Array* (%Array*)*
%result15 = call %Array* %func14(%Array* %result8)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result15, %Array** %"ary@12_", align 8
%"ary@12_16" = load %Array*, %Array** %"ary@12_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int17 = call %Int* @box_int(i64 0)
%result18 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int17)
%as19 = bitcast %Class.0* %result18 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"ary@12_16", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [54 x i8*]*
%vtable23 = load [54 x i8*], [54 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [54 x i8*] %vtable23, 45
%func25 = bitcast i8* %func_raw24 to %Void* (%Array*, %Object*)*
%result26 = call %Void* %func25(%Array* %"ary@12_16", %Object* %as19)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@12_27" = load %Array*, %Array** %"ary@12_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable28 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Some", i32 0, i32 0
%vtable29 = load i8*, i8** %addr_vtable28, align 8
%vtable_ptr30 = bitcast i8* %vtable29 to [23 x i8*]*
%vtable31 = load [23 x i8*], [23 x i8*]* %vtable_ptr30, align 8
%func_raw32 = extractvalue [23 x i8*] %vtable31, 16
%func33 = bitcast i8* %func_raw32 to %"Maybe::Some"* (%"Maybe::Some"*, %Array*)*
%result34 = call %"Maybe::Some"* %func33(%"Maybe::Some"* %"::Some", %Array* %"ary@12_27")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
%"addr_@n_items35" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items36" = load %Int*, %Int** %"addr_@n_items35", align 8
%sk_int37 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_Class#<>_end"
%addr_vtable38 = getelementptr inbounds %Int, %Int* %"@n_items36", i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [35 x i8*]*
%vtable41 = load [35 x i8*], [35 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [35 x i8*] %vtable41, 19
%func43 = bitcast i8* %func_raw42 to %Int* (%Int*, %Int*)*
%result44 = call %Int* %func43(%Int* %"@n_items36", %Int* %sk_int37)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%as45 = bitcast %Int* %result44 to %Object*
br label %"Invoke_Array#[]"
"Invoke_Array#[]": ; preds = %"Invoke_Int#-_end"
%addr_vtable46 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable47 = load i8*, i8** %addr_vtable46, align 8
%vtable_ptr48 = bitcast i8* %vtable47 to [54 x i8*]*
%vtable49 = load [54 x i8*], [54 x i8*]* %vtable_ptr48, align 8
%func_raw50 = extractvalue [54 x i8*] %vtable49, 16
%func51 = bitcast i8* %func_raw50 to %Object* (%Array*, %Object*)*
%result52 = call %Object* %func51(%Array* %self, %Object* %as45)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %"Invoke_Meta:Maybe::Some#new"
"Invoke_Meta:Maybe::Some#new": ; preds = %"Invoke_Array#[]_end"
%addr_vtable53 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %result34, i32 0, i32 0
%vtable54 = load i8*, i8** %addr_vtable53, align 8
%vtable_ptr55 = bitcast i8* %vtable54 to [23 x i8*]*
%vtable56 = load [23 x i8*], [23 x i8*]* %vtable_ptr55, align 8
%func_raw57 = extractvalue [23 x i8*] %vtable56, 22
%func58 = bitcast i8* %func_raw57 to %"Maybe::Some"* (%"Maybe::Some"*, %Object*)*
%result59 = call %"Maybe::Some"* %func58(%"Maybe::Some"* %result34, %Object* %result52)
br label %"Invoke_Meta:Maybe::Some#new_end"
"Invoke_Meta:Maybe::Some#new_end": ; preds = %"Invoke_Meta:Maybe::Some#new"
%as60 = bitcast %"Maybe::Some"* %result59 to %Maybe*
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Int* @Array_length(%Array* %self) {
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
br label %Ret
End: ; preds = %Ret
%methodResult = phi %Int* [ %"@n_items", %Ret ]
ret %Int* %methodResult
Ret: ; preds = %0
br label %End
}
define %Array* @Array_map(%Array* %self, %Fn1* %f) {
alloca:
%ret = alloca %Array*, align 8
%"ary@13_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@13_", align 8
%"ary@13_10" = load %Array*, %Array** %"ary@13_", align 8
%"::Object" = load %Object*, %Object** @"::Object", align 8
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable11 = getelementptr inbounds %Array, %Array* %"ary@13_10", i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [54 x i8*]*
%vtable14 = load [54 x i8*], [54 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [54 x i8*] %vtable14, 45
%func16 = bitcast i8* %func_raw15 to %Void* (%Array*, %Object*)*
%result17 = call %Void* %func16(%Array* %"ary@13_10", %Object* %"::Object")
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@13_18" = load %Array*, %Array** %"ary@13_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 16
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*, %Array*)*
%result25 = call %Array* %func24(%Array* %"::Array", %Array* %"ary@13_18")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable26 = getelementptr inbounds %Array, %Array* %result25, i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [25 x i8*]*
%vtable29 = load [25 x i8*], [25 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [25 x i8*] %vtable29, 23
%func31 = bitcast i8* %func_raw30 to %Array* (%Array*)*
%result32 = call %Array* %func31(%Array* %result25)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result32, %Array** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_12_in_Array#map" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array33" = load %Array*, %Array** @"::Array", align 8
%result34 = call %Array* @Meta_Array_new(%Array* %"::Array33")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result34, %Object* %capture_item)
%capture_item35 = bitcast %Array** %ret to %Object*
%_36 = call %Void* @Array_push(%Array* %result34, %Object* %capture_item35)
%result37 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result34)
%as = bitcast %Fn1* %result37 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 29
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Bool* @"Array_none?"(%Array* %self, %Fn1* %f) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_13_in_Array#none?" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%capture_item1 = bitcast %Bool** %ret to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item1)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result3 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret6, %Ret ]
ret %Bool* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable4 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable4, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result5 = call %Void* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret6 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Object* @Array_pop(%Array* %self) {
alloca:
%ret = alloca %Object*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Object* [ %ret41, %Ret ]
ret %Object* %methodResult
IfBegin: ; preds = %alloca_End
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
IfThen: ; preds = %"Invoke_Int#==_end"
%as = bitcast %Array* %self to %Object*
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str_49, i32 0, i32 0), i64 27)
%as2 = bitcast %String* %sk_str to %Object*
br label %"Invoke_Object#panic"
IfElse: ; preds = %"Invoke_Int#==_end"
%"::Void9" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse
%"addr_@n_items10" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items11" = load %Int*, %Int** %"addr_@n_items10", align 8
%sk_int12 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#==": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %"@n_items", %Int* %sk_int)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Object#panic": ; preds = %IfThen
%addr_vtable3 = getelementptr inbounds %Object, %Object* %as, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [16 x i8*]*
%vtable6 = load [16 x i8*], [16 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [16 x i8*] %vtable6, 12
%func8 = bitcast i8* %func_raw7 to void (%Object*, %Object*)*
call void %func8(%Object* %as, %Object* %as2)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_Int#-": ; preds = %IfEnd
%addr_vtable13 = getelementptr inbounds %Int, %Int* %"@n_items11", i32 0, i32 0
%vtable14 = load i8*, i8** %addr_vtable13, align 8
%vtable_ptr15 = bitcast i8* %vtable14 to [35 x i8*]*
%vtable16 = load [35 x i8*], [35 x i8*]* %vtable_ptr15, align 8
%func_raw17 = extractvalue [35 x i8*] %vtable16, 19
%func18 = bitcast i8* %func_raw17 to %Int* (%Int*, %Int*)*
%result19 = call %Int* %func18(%Int* %"@n_items11", %Int* %sk_int12)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%as20 = bitcast %Int* %result19 to %Object*
br label %"Invoke_Array#[]"
"Invoke_Array#[]": ; preds = %"Invoke_Int#-_end"
%addr_vtable21 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable22 = load i8*, i8** %addr_vtable21, align 8
%vtable_ptr23 = bitcast i8* %vtable22 to [54 x i8*]*
%vtable24 = load [54 x i8*], [54 x i8*]* %vtable_ptr23, align 8
%func_raw25 = extractvalue [54 x i8*] %vtable24, 16
%func26 = bitcast i8* %func_raw25 to %Object* (%Array*, %Object*)*
%result27 = call %Object* %func26(%Array* %self, %Object* %as20)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
store %Object* %result27, %Object** %ret, align 8
%"addr_@n_items28" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items29" = load %Int*, %Int** %"addr_@n_items28", align 8
%sk_int30 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-31"
"Invoke_Int#-31": ; preds = %"Invoke_Array#[]_end"
%addr_vtable32 = getelementptr inbounds %Int, %Int* %"@n_items29", i32 0, i32 0
%vtable33 = load i8*, i8** %addr_vtable32, align 8
%vtable_ptr34 = bitcast i8* %vtable33 to [35 x i8*]*
%vtable35 = load [35 x i8*], [35 x i8*]* %vtable_ptr34, align 8
%func_raw36 = extractvalue [35 x i8*] %vtable35, 19
%func37 = bitcast i8* %func_raw36 to %Int* (%Int*, %Int*)*
%result38 = call %Int* %func37(%Int* %"@n_items29", %Int* %sk_int30)
br label %"Invoke_Int#-_end39"
"Invoke_Int#-_end39": ; preds = %"Invoke_Int#-31"
%"addr_@n_items40" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %result38, %Int** %"addr_@n_items40", align 8
%ret41 = load %Object*, %Object** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Int#-_end39"
br label %End
}
define %Void* @Array_push(%Array* %self, %Object* %value) {
alloca:
%ptr = alloca %"Shiika::Internal::Ptr"*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%"::Void113" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void113"
IfBegin: ; preds = %alloca_End
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa" = load %Int*, %Int** %"addr_@capa", align 8
br label %"Invoke_Int#=="
IfThen: ; preds = %"Invoke_Int#==_end"
br label %IfBegin2
IfElse: ; preds = %"Invoke_Int#==_end"
%"::Void68" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end"
%ifResult69 = phi %Void* [ %"::Void", %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end" ], [ %"::Void68", %IfElse ]
%"addr_@items70" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items71" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items70", align 8
%"addr_@n_items72" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items73" = load %Int*, %Int** %"addr_@n_items72", align 8
%"::Array::BYTES_OF_PTR74" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
br label %"Invoke_Int#*75"
"Invoke_Int#==": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %"@n_items", %Int* %"@capa")
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
IfBegin2: ; preds = %IfThen
%"addr_@capa6" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa7" = load %Int*, %Int** %"addr_@capa6", align 8
%sk_int = call %Int* @box_int(i64 1024)
br label %"Invoke_Int#<"
IfThen3: ; preds = %"Invoke_Int#<_end"
%"addr_@capa17" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa18" = load %Int*, %Int** %"addr_@capa17", align 8
%sk_int19 = call %Int* @box_int(i64 2)
br label %"Invoke_Int#*"
IfElse4: ; preds = %"Invoke_Int#<_end"
%"addr_@capa28" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa29" = load %Int*, %Int** %"addr_@capa28", align 8
%sk_int30 = call %Int* @box_int(i64 256)
br label %"Invoke_Int#+"
IfEnd5: ; preds = %"Invoke_Int#+_end", %"Invoke_Int#*_end"
%ifResult = phi %Int* [ %result26, %"Invoke_Int#*_end" ], [ %result37, %"Invoke_Int#+_end" ]
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
%"::Array::BYTES_OF_PTR" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
%"addr_@capa39" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa40" = load %Int*, %Int** %"addr_@capa39", align 8
br label %"Invoke_Int#*41"
"Invoke_Int#<": ; preds = %IfBegin2
%addr_vtable8 = getelementptr inbounds %Int, %Int* %"@capa7", i32 0, i32 0
%vtable9 = load i8*, i8** %addr_vtable8, align 8
%vtable_ptr10 = bitcast i8* %vtable9 to [35 x i8*]*
%vtable11 = load [35 x i8*], [35 x i8*]* %vtable_ptr10, align 8
%func_raw12 = extractvalue [35 x i8*] %vtable11, 0
%func13 = bitcast i8* %func_raw12 to %Bool* (%Int*, %Int*)*
%result14 = call %Bool* %func13(%Int* %"@capa7", %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool15 = call i1 @unbox_bool(%Bool* %result14)
%istrue16 = icmp eq i1 %llvm_bool15, true
br i1 %istrue16, label %IfThen3, label %IfElse4
"Invoke_Int#*": ; preds = %IfThen3
%addr_vtable20 = getelementptr inbounds %Int, %Int* %"@capa18", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [35 x i8*]*
%vtable23 = load [35 x i8*], [35 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [35 x i8*] %vtable23, 17
%func25 = bitcast i8* %func_raw24 to %Int* (%Int*, %Int*)*
%result26 = call %Int* %func25(%Int* %"@capa18", %Int* %sk_int19)
br label %"Invoke_Int#*_end"
"Invoke_Int#*_end": ; preds = %"Invoke_Int#*"
%"addr_@capa27" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %result26, %Int** %"addr_@capa27", align 8
br label %IfEnd5
"Invoke_Int#+": ; preds = %IfElse4
%addr_vtable31 = getelementptr inbounds %Int, %Int* %"@capa29", i32 0, i32 0
%vtable32 = load i8*, i8** %addr_vtable31, align 8
%vtable_ptr33 = bitcast i8* %vtable32 to [35 x i8*]*
%vtable34 = load [35 x i8*], [35 x i8*]* %vtable_ptr33, align 8
%func_raw35 = extractvalue [35 x i8*] %vtable34, 18
%func36 = bitcast i8* %func_raw35 to %Int* (%Int*, %Int*)*
%result37 = call %Int* %func36(%Int* %"@capa29", %Int* %sk_int30)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
%"addr_@capa38" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %result37, %Int** %"addr_@capa38", align 8
br label %IfEnd5
"Invoke_Int#*41": ; preds = %IfEnd5
%addr_vtable42 = getelementptr inbounds %Int, %Int* %"::Array::BYTES_OF_PTR", i32 0, i32 0
%vtable43 = load i8*, i8** %addr_vtable42, align 8
%vtable_ptr44 = bitcast i8* %vtable43 to [35 x i8*]*
%vtable45 = load [35 x i8*], [35 x i8*]* %vtable_ptr44, align 8
%func_raw46 = extractvalue [35 x i8*] %vtable45, 17
%func47 = bitcast i8* %func_raw46 to %Int* (%Int*, %Int*)*
%result48 = call %Int* %func47(%Int* %"::Array::BYTES_OF_PTR", %Int* %"@capa40")
br label %"Invoke_Int#*_end49"
"Invoke_Int#*_end49": ; preds = %"Invoke_Int#*41"
%sk_int50 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+51"
"Invoke_Int#+51": ; preds = %"Invoke_Int#*_end49"
%addr_vtable52 = getelementptr inbounds %Int, %Int* %result48, i32 0, i32 0
%vtable53 = load i8*, i8** %addr_vtable52, align 8
%vtable_ptr54 = bitcast i8* %vtable53 to [35 x i8*]*
%vtable55 = load [35 x i8*], [35 x i8*]* %vtable_ptr54, align 8
%func_raw56 = extractvalue [35 x i8*] %vtable55, 18
%func57 = bitcast i8* %func_raw56 to %Int* (%Int*, %Int*)*
%result58 = call %Int* %func57(%Int* %result48, %Int* %sk_int50)
br label %"Invoke_Int#+_end59"
"Invoke_Int#+_end59": ; preds = %"Invoke_Int#+51"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_realloc": ; preds = %"Invoke_Int#+_end59"
%addr_vtable60 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable61 = load i8*, i8** %addr_vtable60, align 8
%vtable_ptr62 = bitcast i8* %vtable61 to [25 x i8*]*
%vtable63 = load [25 x i8*], [25 x i8*]* %vtable_ptr62, align 8
%func_raw64 = extractvalue [25 x i8*] %vtable63, 23
%func65 = bitcast i8* %func_raw64 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %Int*)*
%result66 = call %"Shiika::Internal::Ptr"* %func65(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %"Shiika::Internal::Ptr"* %"@items", %Int* %result58)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc"
%"addr_@items67" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
store %"Shiika::Internal::Ptr"* %result66, %"Shiika::Internal::Ptr"** %"addr_@items67", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
"Invoke_Int#*75": ; preds = %IfEnd
%addr_vtable76 = getelementptr inbounds %Int, %Int* %"@n_items73", i32 0, i32 0
%vtable77 = load i8*, i8** %addr_vtable76, align 8
%vtable_ptr78 = bitcast i8* %vtable77 to [35 x i8*]*
%vtable79 = load [35 x i8*], [35 x i8*]* %vtable_ptr78, align 8
%func_raw80 = extractvalue [35 x i8*] %vtable79, 17
%func81 = bitcast i8* %func_raw80 to %Int* (%Int*, %Int*)*
%result82 = call %Int* %func81(%Int* %"@n_items73", %Int* %"::Array::BYTES_OF_PTR74")
br label %"Invoke_Int#*_end83"
"Invoke_Int#*_end83": ; preds = %"Invoke_Int#*75"
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Shiika::Internal::Ptr#+": ; preds = %"Invoke_Int#*_end83"
%addr_vtable84 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@items71", i32 0, i32 0
%vtable85 = load i8*, i8** %addr_vtable84, align 8
%vtable_ptr86 = bitcast i8* %vtable85 to [21 x i8*]*
%vtable87 = load [21 x i8*], [21 x i8*]* %vtable_ptr86, align 8
%func_raw88 = extractvalue [21 x i8*] %vtable87, 16
%func89 = bitcast i8* %func_raw88 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result90 = call %"Shiika::Internal::Ptr"* %func89(%"Shiika::Internal::Ptr"* %"@items71", %Int* %result82)
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
store %"Shiika::Internal::Ptr"* %result90, %"Shiika::Internal::Ptr"** %ptr, align 8
%ptr91 = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %ptr, align 8
br label %"Invoke_Shiika::Internal::Ptr#store"
"Invoke_Shiika::Internal::Ptr#store": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable92 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %ptr91, i32 0, i32 0
%vtable93 = load i8*, i8** %addr_vtable92, align 8
%vtable_ptr94 = bitcast i8* %vtable93 to [21 x i8*]*
%vtable95 = load [21 x i8*], [21 x i8*]* %vtable_ptr94, align 8
%func_raw96 = extractvalue [21 x i8*] %vtable95, 19
%func97 = bitcast i8* %func_raw96 to %Void* (%"Shiika::Internal::Ptr"*, %Object*)*
%result98 = call %Void* %func97(%"Shiika::Internal::Ptr"* %ptr91, %Object* %value)
br label %"Invoke_Shiika::Internal::Ptr#store_end"
"Invoke_Shiika::Internal::Ptr#store_end": ; preds = %"Invoke_Shiika::Internal::Ptr#store"
%"addr_@n_items99" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items100" = load %Int*, %Int** %"addr_@n_items99", align 8
%sk_int101 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+102"
"Invoke_Int#+102": ; preds = %"Invoke_Shiika::Internal::Ptr#store_end"
%addr_vtable103 = getelementptr inbounds %Int, %Int* %"@n_items100", i32 0, i32 0
%vtable104 = load i8*, i8** %addr_vtable103, align 8
%vtable_ptr105 = bitcast i8* %vtable104 to [35 x i8*]*
%vtable106 = load [35 x i8*], [35 x i8*]* %vtable_ptr105, align 8
%func_raw107 = extractvalue [35 x i8*] %vtable106, 18
%func108 = bitcast i8* %func_raw107 to %Int* (%Int*, %Int*)*
%result109 = call %Int* %func108(%Int* %"@n_items100", %Int* %sk_int101)
br label %"Invoke_Int#+_end110"
"Invoke_Int#+_end110": ; preds = %"Invoke_Int#+102"
%"addr_@n_items111" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %result109, %Int** %"addr_@n_items111", align 8
%"::Void112" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Int#+_end110"
br label %End
}
define %Array* @Array_reject(%Array* %self, %Fn1* %f) {
alloca:
%"ary@14_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret47, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@14_", align 8
%"ary@14_10" = load %Array*, %Array** %"ary@14_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@14_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@14_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@14_19" = load %Array*, %Array** %"ary@14_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@14_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_14_in_Array#reject" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%capture_item36 = bitcast %Array** %ret to %Object*
%_37 = call %Void* @Array_push(%Array* %result35, %Object* %capture_item36)
%result38 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as39 = bitcast %Fn1* %result38 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable40 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable41 = load i8*, i8** %addr_vtable40, align 8
%vtable_ptr42 = bitcast i8* %vtable41 to [54 x i8*]*
%vtable43 = load [54 x i8*], [54 x i8*]* %vtable_ptr42, align 8
%func_raw44 = extractvalue [54 x i8*] %vtable43, 29
%func45 = bitcast i8* %func_raw44 to %Void* (%Array*, %Object*)*
%result46 = call %Void* %func45(%Array* %self, %Object* %as39)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret47 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Void* @Array_reserve(%Array* %self, %Int* %additional) {
alloca:
%new_capa = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
br label %"Invoke_Int#+"
End: ; preds = %Ret
%"::Void30" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void30"
"Invoke_Int#+": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %"@n_items", %Int* %additional)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result, %Int** %new_capa, align 8
br label %IfBegin
IfBegin: ; preds = %"Invoke_Int#+_end"
%new_capa2 = load %Int*, %Int** %new_capa, align 8
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa" = load %Int*, %Int** %"addr_@capa", align 8
br label %"Invoke_Int#>"
IfThen: ; preds = %"Invoke_Int#>_end"
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
%"::Array::BYTES_OF_PTR" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
%new_capa10 = load %Int*, %Int** %new_capa, align 8
br label %"Invoke_Int#*"
IfElse: ; preds = %"Invoke_Int#>_end"
%"::Void28" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end"
%ifResult = phi %Void* [ %"::Void", %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end" ], [ %"::Void28", %IfElse ]
%"::Void29" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Int#>": ; preds = %IfBegin
%addr_vtable3 = getelementptr inbounds %Int, %Int* %new_capa2, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [35 x i8*]*
%vtable6 = load [35 x i8*], [35 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [35 x i8*] %vtable6, 3
%func8 = bitcast i8* %func_raw7 to %Bool* (%Int*, %Int*)*
%result9 = call %Bool* %func8(%Int* %new_capa2, %Int* %"@capa")
br label %"Invoke_Int#>_end"
"Invoke_Int#>_end": ; preds = %"Invoke_Int#>"
%llvm_bool = call i1 @unbox_bool(%Bool* %result9)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#*": ; preds = %IfThen
%addr_vtable11 = getelementptr inbounds %Int, %Int* %"::Array::BYTES_OF_PTR", i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 17
%func16 = bitcast i8* %func_raw15 to %Int* (%Int*, %Int*)*
%result17 = call %Int* %func16(%Int* %"::Array::BYTES_OF_PTR", %Int* %new_capa10)
br label %"Invoke_Int#*_end"
"Invoke_Int#*_end": ; preds = %"Invoke_Int#*"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_realloc": ; preds = %"Invoke_Int#*_end"
%addr_vtable18 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [25 x i8*]*
%vtable21 = load [25 x i8*], [25 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [25 x i8*] %vtable21, 23
%func23 = bitcast i8* %func_raw22 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %Int*)*
%result24 = call %"Shiika::Internal::Ptr"* %func23(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %"Shiika::Internal::Ptr"* %"@items", %Int* %result17)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc"
%"addr_@items25" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
store %"Shiika::Internal::Ptr"* %result24, %"Shiika::Internal::Ptr"** %"addr_@items25", align 8
%new_capa26 = load %Int*, %Int** %new_capa, align 8
%"addr_@capa27" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %new_capa26, %Int** %"addr_@capa27", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Array* @Array_reverse(%Array* %self) {
alloca:
%"ary@15_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@15_", align 8
%"ary@15_10" = load %Array*, %Array** %"ary@15_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@15_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@15_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@15_19" = load %Array*, %Array** %"ary@15_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@15_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_15_in_Array#reverse" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%result36 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as37 = bitcast %Fn1* %result36 to %Object*
br label %"Invoke_Array#reverse_each"
"Invoke_Array#reverse_each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 49
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %self, %Object* %as37)
br label %"Invoke_Array#reverse_each_end"
"Invoke_Array#reverse_each_end": ; preds = %"Invoke_Array#reverse_each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#reverse_each_end"
br label %End
}
define %Void* @Array_reverse__each(%Array* %self, %Fn1* %f) {
alloca:
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
End: ; preds = %Ret, %Invoke_lambda
%"::Void36" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void36"
"Invoke_Int#-": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 19
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %"@n_items", %Int* %sk_int)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
store %Int* %result, %Int** %i, align 8
br label %WhileBegin
WhileBegin: ; preds = %"Invoke_Int#-_end34", %"Invoke_Int#-_end"
%i2 = load %Int*, %Int** %i, align 8
%sk_int3 = call %Int* @box_int(i64 0)
br label %"Invoke_Int#>="
"Invoke_Int#>=": ; preds = %WhileBegin
%addr_vtable4 = getelementptr inbounds %Int, %Int* %i2, i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [35 x i8*]*
%vtable7 = load [35 x i8*], [35 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [35 x i8*] %vtable7, 4
%func9 = bitcast i8* %func_raw8 to %Bool* (%Int*, %Int*)*
%result10 = call %Bool* %func9(%Int* %i2, %Int* %sk_int3)
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool = call i1 @unbox_bool(%Bool* %result10)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#>=_end"
%i11 = load %Int*, %Int** %i, align 8
%as = bitcast %Int* %i11 to %Object*
br label %"Invoke_Array#[]"
WhileEnd: ; preds = %"Invoke_Int#>=_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void35" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Array#[]": ; preds = %WhileBody
%addr_vtable12 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 16
%func17 = bitcast i8* %func_raw16 to %Object* (%Array*, %Object*)*
%result18 = call %Object* %func17(%Array* %self, %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %Invoke_lambda
Invoke_lambda: ; preds = %"Invoke_Array#[]_end"
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %Object*)*
%result19 = call %Void* %0(%Fn1* %f, %Object* %result18)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int20 = call %Int* @box_int(i64 1)
%result21 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int20)
%llvm_bool22 = call i1 @unbox_bool(%Bool* %result21)
%istrue23 = icmp eq i1 %llvm_bool22, true
br i1 %istrue23, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%i24 = load %Int*, %Int** %i, align 8
%sk_int25 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-26"
"Invoke_Int#-26": ; preds = %Invoke_lambda_end
%addr_vtable27 = getelementptr inbounds %Int, %Int* %i24, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [35 x i8*]*
%vtable30 = load [35 x i8*], [35 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [35 x i8*] %vtable30, 19
%func32 = bitcast i8* %func_raw31 to %Int* (%Int*, %Int*)*
%result33 = call %Int* %func32(%Int* %i24, %Int* %sk_int25)
br label %"Invoke_Int#-_end34"
"Invoke_Int#-_end34": ; preds = %"Invoke_Int#-26"
store %Int* %result33, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Array* @Array_select(%Array* %self, %Fn1* %f) {
alloca:
%"ary@16_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret47, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@16_", align 8
%"ary@16_10" = load %Array*, %Array** %"ary@16_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@16_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@16_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@16_19" = load %Array*, %Array** %"ary@16_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@16_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_16_in_Array#select" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%capture_item36 = bitcast %Array** %ret to %Object*
%_37 = call %Void* @Array_push(%Array* %result35, %Object* %capture_item36)
%result38 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as39 = bitcast %Fn1* %result38 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable40 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable41 = load i8*, i8** %addr_vtable40, align 8
%vtable_ptr42 = bitcast i8* %vtable41 to [54 x i8*]*
%vtable43 = load [54 x i8*], [54 x i8*]* %vtable_ptr42, align 8
%func_raw44 = extractvalue [54 x i8*] %vtable43, 29
%func45 = bitcast i8* %func_raw44 to %Void* (%Array*, %Object*)*
%result46 = call %Void* %func45(%Array* %self, %Object* %as39)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret47 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Maybe* @Array_shift(%Array* %self) {
alloca:
%ret = alloca %Object*, align 8
%"ary@17_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Maybe* [ %ifResult, %Ret ]
ret %Maybe* %methodResult
IfBegin: ; preds = %alloca_End
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
IfThen: ; preds = %"Invoke_Int#==_end"
%"::None" = load %"Maybe::None"*, %"Maybe::None"** @"::None", align 8
%as = bitcast %"Maybe::None"* %"::None" to %Maybe*
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#==_end"
%sk_int2 = call %Int* @box_int(i64 0)
%as3 = bitcast %Int* %sk_int2 to %Object*
br label %"Invoke_Array#[]"
IfEnd: ; preds = %"Invoke_Meta:Maybe::Some#new_end", %IfThen
%ifResult = phi %Maybe* [ %as, %IfThen ], [ %as82, %"Invoke_Meta:Maybe::Some#new_end" ]
br label %Ret
"Invoke_Int#==": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %"@n_items", %Int* %sk_int)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Array#[]": ; preds = %IfElse
%addr_vtable4 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [54 x i8*]*
%vtable7 = load [54 x i8*], [54 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [54 x i8*] %vtable7, 16
%func9 = bitcast i8* %func_raw8 to %Object* (%Array*, %Object*)*
%result10 = call %Object* %func9(%Array* %self, %Object* %as3)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
store %Object* %result10, %Object** %ret, align 8
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa" = load %Int*, %Int** %"addr_@capa", align 8
%sk_int11 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_Array#[]_end"
%addr_vtable12 = getelementptr inbounds %Int, %Int* %"@capa", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [35 x i8*]*
%vtable15 = load [35 x i8*], [35 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [35 x i8*] %vtable15, 19
%func17 = bitcast i8* %func_raw16 to %Int* (%Int*, %Int*)*
%result18 = call %Int* %func17(%Int* %"@capa", %Int* %sk_int11)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%"addr_@capa19" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %result18, %Int** %"addr_@capa19", align 8
%"addr_@n_items20" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items21" = load %Int*, %Int** %"addr_@n_items20", align 8
%sk_int22 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-23"
"Invoke_Int#-23": ; preds = %"Invoke_Int#-_end"
%addr_vtable24 = getelementptr inbounds %Int, %Int* %"@n_items21", i32 0, i32 0
%vtable25 = load i8*, i8** %addr_vtable24, align 8
%vtable_ptr26 = bitcast i8* %vtable25 to [35 x i8*]*
%vtable27 = load [35 x i8*], [35 x i8*]* %vtable_ptr26, align 8
%func_raw28 = extractvalue [35 x i8*] %vtable27, 19
%func29 = bitcast i8* %func_raw28 to %Int* (%Int*, %Int*)*
%result30 = call %Int* %func29(%Int* %"@n_items21", %Int* %sk_int22)
br label %"Invoke_Int#-_end31"
"Invoke_Int#-_end31": ; preds = %"Invoke_Int#-23"
%"addr_@n_items32" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %result30, %Int** %"addr_@n_items32", align 8
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
%"::Array::BYTES_OF_PTR" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Shiika::Internal::Ptr#+": ; preds = %"Invoke_Int#-_end31"
%addr_vtable33 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@items", i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [21 x i8*]*
%vtable36 = load [21 x i8*], [21 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [21 x i8*] %vtable36, 16
%func38 = bitcast i8* %func_raw37 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result39 = call %"Shiika::Internal::Ptr"* %func38(%"Shiika::Internal::Ptr"* %"@items", %Int* %"::Array::BYTES_OF_PTR")
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
%"addr_@items40" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
store %"Shiika::Internal::Ptr"* %result39, %"Shiika::Internal::Ptr"** %"addr_@items40", align 8
%"::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Some", align 8
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
"Invoke_Class#_specialize1": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable41 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable42 = load i8*, i8** %addr_vtable41, align 8
%vtable_ptr43 = bitcast i8* %vtable42 to [25 x i8*]*
%vtable44 = load [25 x i8*], [25 x i8*]* %vtable_ptr43, align 8
%func_raw45 = extractvalue [25 x i8*] %vtable44, 18
%func46 = bitcast i8* %func_raw45 to %Array* (%Array*, %Class.0*)*
%result47 = call %Array* %func46(%Array* %"::Array", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable48 = getelementptr inbounds %Array, %Array* %result47, i32 0, i32 0
%vtable49 = load i8*, i8** %addr_vtable48, align 8
%vtable_ptr50 = bitcast i8* %vtable49 to [25 x i8*]*
%vtable51 = load [25 x i8*], [25 x i8*]* %vtable_ptr50, align 8
%func_raw52 = extractvalue [25 x i8*] %vtable51, 23
%func53 = bitcast i8* %func_raw52 to %Array* (%Array*)*
%result54 = call %Array* %func53(%Array* %result47)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result54, %Array** %"ary@17_", align 8
%"ary@17_55" = load %Array*, %Array** %"ary@17_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int56 = call %Int* @box_int(i64 0)
%result57 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int56)
%as58 = bitcast %Class.0* %result57 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable59 = getelementptr inbounds %Array, %Array* %"ary@17_55", i32 0, i32 0
%vtable60 = load i8*, i8** %addr_vtable59, align 8
%vtable_ptr61 = bitcast i8* %vtable60 to [54 x i8*]*
%vtable62 = load [54 x i8*], [54 x i8*]* %vtable_ptr61, align 8
%func_raw63 = extractvalue [54 x i8*] %vtable62, 45
%func64 = bitcast i8* %func_raw63 to %Void* (%Array*, %Object*)*
%result65 = call %Void* %func64(%Array* %"ary@17_55", %Object* %as58)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@17_66" = load %Array*, %Array** %"ary@17_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable67 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Some", i32 0, i32 0
%vtable68 = load i8*, i8** %addr_vtable67, align 8
%vtable_ptr69 = bitcast i8* %vtable68 to [23 x i8*]*
%vtable70 = load [23 x i8*], [23 x i8*]* %vtable_ptr69, align 8
%func_raw71 = extractvalue [23 x i8*] %vtable70, 16
%func72 = bitcast i8* %func_raw71 to %"Maybe::Some"* (%"Maybe::Some"*, %Array*)*
%result73 = call %"Maybe::Some"* %func72(%"Maybe::Some"* %"::Some", %Array* %"ary@17_66")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
%ret74 = load %Object*, %Object** %ret, align 8
br label %"Invoke_Meta:Maybe::Some#new"
"Invoke_Meta:Maybe::Some#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable75 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %result73, i32 0, i32 0
%vtable76 = load i8*, i8** %addr_vtable75, align 8
%vtable_ptr77 = bitcast i8* %vtable76 to [23 x i8*]*
%vtable78 = load [23 x i8*], [23 x i8*]* %vtable_ptr77, align 8
%func_raw79 = extractvalue [23 x i8*] %vtable78, 22
%func80 = bitcast i8* %func_raw79 to %"Maybe::Some"* (%"Maybe::Some"*, %Object*)*
%result81 = call %"Maybe::Some"* %func80(%"Maybe::Some"* %result73, %Object* %ret74)
br label %"Invoke_Meta:Maybe::Some#new_end"
"Invoke_Meta:Maybe::Some#new_end": ; preds = %"Invoke_Meta:Maybe::Some#new"
%as82 = bitcast %"Maybe::Some"* %result81 to %Maybe*
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Array* @Array_sort(%Array* %self) {
alloca:
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %"Invoke_Array#clone"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret10, %Ret ]
ret %Array* %methodResult
"Invoke_Array#clone": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 27
%func = bitcast i8* %func_raw to %Array* (%Array*)*
%result = call %Array* %func(%Array* %self)
br label %"Invoke_Array#clone_end"
"Invoke_Array#clone_end": ; preds = %"Invoke_Array#clone"
store %Array* %result, %Array** %ret, align 8
%ret2 = load %Array*, %Array** %ret, align 8
br label %"Invoke_Array#sort_inplace"
"Invoke_Array#sort_inplace": ; preds = %"Invoke_Array#clone_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %ret2, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 53
%func8 = bitcast i8* %func_raw7 to %Void* (%Array*)*
%result9 = call %Void* %func8(%Array* %ret2)
br label %"Invoke_Array#sort_inplace_end"
"Invoke_Array#sort_inplace_end": ; preds = %"Invoke_Array#sort_inplace"
%ret10 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#sort_inplace_end"
br label %End
}
define %Void* @Array_sort__inplace(%Array* %self) {
br label %IfBegin
End: ; preds = %Ret
%"::Void20" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void20"
IfBegin: ; preds = %0
br label %"Invoke_Array#empty?"
IfThen: ; preds = %"Invoke_Array#empty?_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfElse: ; preds = %"Invoke_Array#empty?_end"
%sk_int = call %Int* @box_int(i64 0)
%as = bitcast %Int* %sk_int to %Object*
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int2 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
IfEnd: ; preds = %"Invoke_Array#_quicksort_end", %IfThen
%ifResult = phi %Void* [ %"::Void", %IfThen ], [ %"::Void18", %"Invoke_Array#_quicksort_end" ]
%"::Void19" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Array#empty?": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 30
%func = bitcast i8* %func_raw to %Bool* (%Array*)*
%result = call %Bool* %func(%Array* %self)
br label %"Invoke_Array#empty?_end"
"Invoke_Array#empty?_end": ; preds = %"Invoke_Array#empty?"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#-": ; preds = %IfElse
%addr_vtable3 = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [35 x i8*]*
%vtable6 = load [35 x i8*], [35 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [35 x i8*] %vtable6, 19
%func8 = bitcast i8* %func_raw7 to %Int* (%Int*, %Int*)*
%result9 = call %Int* %func8(%Int* %"@n_items", %Int* %sk_int2)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%as10 = bitcast %Int* %result9 to %Object*
br label %"Invoke_Array#_quicksort"
"Invoke_Array#_quicksort": ; preds = %"Invoke_Int#-_end"
%addr_vtable11 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [54 x i8*]*
%vtable14 = load [54 x i8*], [54 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [54 x i8*] %vtable14, 20
%func16 = bitcast i8* %func_raw15 to %Void* (%Array*, %Object*, %Object*)*
%result17 = call %Void* %func16(%Array* %self, %Object* %as, %Object* %as10)
br label %"Invoke_Array#_quicksort_end"
"Invoke_Array#_quicksort_end": ; preds = %"Invoke_Array#_quicksort"
%"::Void18" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @Array___quicksort(%Array* %self, %Int* %i, %Int* %j) {
alloca:
%k = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%"::Void58" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void58"
IfBegin: ; preds = %alloca_End
br label %"Invoke_Int#=="
IfThen: ; preds = %"Invoke_Int#==_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#==_end"
%as = bitcast %Int* %i to %Object*
%as2 = bitcast %Int* %j to %Object*
%as3 = bitcast %Int* %i to %Object*
%as4 = bitcast %Int* %j to %Object*
br label %"Invoke_Array#_choose_pivot"
IfEnd: ; preds = %"Invoke_Array#_quicksort_end55", %IfThen
%ifResult = phi %Void* [ %"::Void", %IfThen ], [ %"::Void56", %"Invoke_Array#_quicksort_end55" ]
%"::Void57" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Int#==": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i, %Int* %j)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Array#_choose_pivot": ; preds = %IfElse
%addr_vtable5 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable6 = load i8*, i8** %addr_vtable5, align 8
%vtable_ptr7 = bitcast i8* %vtable6 to [54 x i8*]*
%vtable8 = load [54 x i8*], [54 x i8*]* %vtable_ptr7, align 8
%func_raw9 = extractvalue [54 x i8*] %vtable8, 18
%func10 = bitcast i8* %func_raw9 to %Int* (%Array*, %Object*, %Object*)*
%result11 = call %Int* %func10(%Array* %self, %Object* %as3, %Object* %as4)
br label %"Invoke_Array#_choose_pivot_end"
"Invoke_Array#_choose_pivot_end": ; preds = %"Invoke_Array#_choose_pivot"
%as12 = bitcast %Int* %result11 to %Object*
br label %"Invoke_Array#[]"
"Invoke_Array#[]": ; preds = %"Invoke_Array#_choose_pivot_end"
%addr_vtable13 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable14 = load i8*, i8** %addr_vtable13, align 8
%vtable_ptr15 = bitcast i8* %vtable14 to [54 x i8*]*
%vtable16 = load [54 x i8*], [54 x i8*]* %vtable_ptr15, align 8
%func_raw17 = extractvalue [54 x i8*] %vtable16, 16
%func18 = bitcast i8* %func_raw17 to %Object* (%Array*, %Object*)*
%result19 = call %Object* %func18(%Array* %self, %Object* %as12)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %"Invoke_Array#_partition"
"Invoke_Array#_partition": ; preds = %"Invoke_Array#[]_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [54 x i8*]*
%vtable23 = load [54 x i8*], [54 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [54 x i8*] %vtable23, 19
%func25 = bitcast i8* %func_raw24 to %Int* (%Array*, %Object*, %Object*, %Object*)*
%result26 = call %Int* %func25(%Array* %self, %Object* %as, %Object* %as2, %Object* %result19)
br label %"Invoke_Array#_partition_end"
"Invoke_Array#_partition_end": ; preds = %"Invoke_Array#_partition"
store %Int* %result26, %Int** %k, align 8
%as27 = bitcast %Int* %i to %Object*
%k28 = load %Int*, %Int** %k, align 8
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_Array#_partition_end"
%addr_vtable29 = getelementptr inbounds %Int, %Int* %k28, i32 0, i32 0
%vtable30 = load i8*, i8** %addr_vtable29, align 8
%vtable_ptr31 = bitcast i8* %vtable30 to [35 x i8*]*
%vtable32 = load [35 x i8*], [35 x i8*]* %vtable_ptr31, align 8
%func_raw33 = extractvalue [35 x i8*] %vtable32, 19
%func34 = bitcast i8* %func_raw33 to %Int* (%Int*, %Int*)*
%result35 = call %Int* %func34(%Int* %k28, %Int* %sk_int)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%as36 = bitcast %Int* %result35 to %Object*
br label %"Invoke_Array#_quicksort"
"Invoke_Array#_quicksort": ; preds = %"Invoke_Int#-_end"
%addr_vtable37 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable38 = load i8*, i8** %addr_vtable37, align 8
%vtable_ptr39 = bitcast i8* %vtable38 to [54 x i8*]*
%vtable40 = load [54 x i8*], [54 x i8*]* %vtable_ptr39, align 8
%func_raw41 = extractvalue [54 x i8*] %vtable40, 20
%func42 = bitcast i8* %func_raw41 to %Void* (%Array*, %Object*, %Object*)*
%result43 = call %Void* %func42(%Array* %self, %Object* %as27, %Object* %as36)
br label %"Invoke_Array#_quicksort_end"
"Invoke_Array#_quicksort_end": ; preds = %"Invoke_Array#_quicksort"
%k44 = load %Int*, %Int** %k, align 8
%as45 = bitcast %Int* %k44 to %Object*
%as46 = bitcast %Int* %j to %Object*
br label %"Invoke_Array#_quicksort47"
"Invoke_Array#_quicksort47": ; preds = %"Invoke_Array#_quicksort_end"
%addr_vtable48 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable49 = load i8*, i8** %addr_vtable48, align 8
%vtable_ptr50 = bitcast i8* %vtable49 to [54 x i8*]*
%vtable51 = load [54 x i8*], [54 x i8*]* %vtable_ptr50, align 8
%func_raw52 = extractvalue [54 x i8*] %vtable51, 20
%func53 = bitcast i8* %func_raw52 to %Void* (%Array*, %Object*, %Object*)*
%result54 = call %Void* %func53(%Array* %self, %Object* %as45, %Object* %as46)
br label %"Invoke_Array#_quicksort_end55"
"Invoke_Array#_quicksort_end55": ; preds = %"Invoke_Array#_quicksort47"
%"::Void56" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Int* @Array___choose__pivot(%Array* %self, %Int* %i, %Int* %j) {
alloca:
%k = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
End: ; preds = %Ret
%methodResult = phi %Int* [ %ifResult101, %Ret ]
ret %Int* %methodResult
"Invoke_Int#+": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Int, %Int* %i, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %i, %Int* %sk_int)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result, %Int** %k, align 8
br label %WhileBegin
WhileBegin: ; preds = %"Invoke_Int#+_end47", %"Invoke_Int#+_end"
br label %AndBegin
AndBegin: ; preds = %WhileBegin
%k2 = load %Int*, %Int** %k, align 8
br label %"Invoke_Int#<="
AndMore: ; preds = %"Invoke_Int#<=_end"
%as = bitcast %Int* %i to %Object*
br label %"Invoke_Array#[]"
AndEnd: ; preds = %"Invoke_Object#==_end", %"Invoke_Int#<=_end"
%AndResult = phi %Bool* [ %result9, %"Invoke_Int#<=_end" ], [ %result34, %"Invoke_Object#==_end" ]
%llvm_bool35 = call i1 @unbox_bool(%Bool* %AndResult)
%istrue36 = icmp eq i1 %llvm_bool35, true
br i1 %istrue36, label %WhileBody, label %WhileEnd
"Invoke_Int#<=": ; preds = %AndBegin
%addr_vtable3 = getelementptr inbounds %Int, %Int* %k2, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [35 x i8*]*
%vtable6 = load [35 x i8*], [35 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [35 x i8*] %vtable6, 1
%func8 = bitcast i8* %func_raw7 to %Bool* (%Int*, %Int*)*
%result9 = call %Bool* %func8(%Int* %k2, %Int* %j)
br label %"Invoke_Int#<=_end"
"Invoke_Int#<=_end": ; preds = %"Invoke_Int#<="
%llvm_bool = call i1 @unbox_bool(%Bool* %result9)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %AndMore, label %AndEnd
"Invoke_Array#[]": ; preds = %AndMore
%addr_vtable10 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable11 = load i8*, i8** %addr_vtable10, align 8
%vtable_ptr12 = bitcast i8* %vtable11 to [54 x i8*]*
%vtable13 = load [54 x i8*], [54 x i8*]* %vtable_ptr12, align 8
%func_raw14 = extractvalue [54 x i8*] %vtable13, 16
%func15 = bitcast i8* %func_raw14 to %Object* (%Array*, %Object*)*
%result16 = call %Object* %func15(%Array* %self, %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
%k17 = load %Int*, %Int** %k, align 8
%as18 = bitcast %Int* %k17 to %Object*
br label %"Invoke_Array#[]19"
"Invoke_Array#[]19": ; preds = %"Invoke_Array#[]_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [54 x i8*]*
%vtable23 = load [54 x i8*], [54 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [54 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Object* (%Array*, %Object*)*
%result26 = call %Object* %func25(%Array* %self, %Object* %as18)
br label %"Invoke_Array#[]_end27"
"Invoke_Array#[]_end27": ; preds = %"Invoke_Array#[]19"
br label %"Invoke_Object#=="
"Invoke_Object#==": ; preds = %"Invoke_Array#[]_end27"
%addr_vtable28 = getelementptr inbounds %Object, %Object* %result16, i32 0, i32 0
%vtable29 = load i8*, i8** %addr_vtable28, align 8
%vtable_ptr30 = bitcast i8* %vtable29 to [16 x i8*]*
%vtable31 = load [16 x i8*], [16 x i8*]* %vtable_ptr30, align 8
%func_raw32 = extractvalue [16 x i8*] %vtable31, 2
%func33 = bitcast i8* %func_raw32 to %Bool* (%Object*, %Object*)*
%result34 = call %Bool* %func33(%Object* %result16, %Object* %result26)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
br label %AndEnd
WhileBody: ; preds = %AndEnd
%k37 = load %Int*, %Int** %k, align 8
%sk_int38 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+39"
WhileEnd: ; preds = %AndEnd
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfBegin
"Invoke_Int#+39": ; preds = %WhileBody
%addr_vtable40 = getelementptr inbounds %Int, %Int* %k37, i32 0, i32 0
%vtable41 = load i8*, i8** %addr_vtable40, align 8
%vtable_ptr42 = bitcast i8* %vtable41 to [35 x i8*]*
%vtable43 = load [35 x i8*], [35 x i8*]* %vtable_ptr42, align 8
%func_raw44 = extractvalue [35 x i8*] %vtable43, 18
%func45 = bitcast i8* %func_raw44 to %Int* (%Int*, %Int*)*
%result46 = call %Int* %func45(%Int* %k37, %Int* %sk_int38)
br label %"Invoke_Int#+_end47"
"Invoke_Int#+_end47": ; preds = %"Invoke_Int#+39"
store %Int* %result46, %Int** %k, align 8
br label %WhileBegin
IfBegin: ; preds = %WhileEnd
%k48 = load %Int*, %Int** %k, align 8
br label %"Invoke_Int#>"
IfThen: ; preds = %"Invoke_Int#>_end"
%sk_int58 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-@"
IfElse: ; preds = %"Invoke_Int#>_end"
br label %IfBegin66
IfEnd: ; preds = %IfEnd69, %"Invoke_Int#-@_end"
%ifResult101 = phi %Int* [ %result65, %"Invoke_Int#-@_end" ], [ %ifResult, %IfEnd69 ]
br label %Ret
"Invoke_Int#>": ; preds = %IfBegin
%addr_vtable49 = getelementptr inbounds %Int, %Int* %k48, i32 0, i32 0
%vtable50 = load i8*, i8** %addr_vtable49, align 8
%vtable_ptr51 = bitcast i8* %vtable50 to [35 x i8*]*
%vtable52 = load [35 x i8*], [35 x i8*]* %vtable_ptr51, align 8
%func_raw53 = extractvalue [35 x i8*] %vtable52, 3
%func54 = bitcast i8* %func_raw53 to %Bool* (%Int*, %Int*)*
%result55 = call %Bool* %func54(%Int* %k48, %Int* %j)
br label %"Invoke_Int#>_end"
"Invoke_Int#>_end": ; preds = %"Invoke_Int#>"
%llvm_bool56 = call i1 @unbox_bool(%Bool* %result55)
%istrue57 = icmp eq i1 %llvm_bool56, true
br i1 %istrue57, label %IfThen, label %IfElse
"Invoke_Int#-@": ; preds = %IfThen
%addr_vtable59 = getelementptr inbounds %Int, %Int* %sk_int58, i32 0, i32 0
%vtable60 = load i8*, i8** %addr_vtable59, align 8
%vtable_ptr61 = bitcast i8* %vtable60 to [35 x i8*]*
%vtable62 = load [35 x i8*], [35 x i8*]* %vtable_ptr61, align 8
%func_raw63 = extractvalue [35 x i8*] %vtable62, 20
%func64 = bitcast i8* %func_raw63 to %Int* (%Int*)*
%result65 = call %Int* %func64(%Int* %sk_int58)
br label %"Invoke_Int#-@_end"
"Invoke_Int#-@_end": ; preds = %"Invoke_Int#-@"
br label %IfEnd
IfBegin66: ; preds = %IfElse
%as70 = bitcast %Int* %i to %Object*
br label %"Invoke_Array#[]71"
IfThen67: ; preds = %"Invoke_Object#>=_end"
br label %IfEnd69
IfElse68: ; preds = %"Invoke_Object#>=_end"
%k100 = load %Int*, %Int** %k, align 8
br label %IfEnd69
IfEnd69: ; preds = %IfElse68, %IfThen67
%ifResult = phi %Int* [ %i, %IfThen67 ], [ %k100, %IfElse68 ]
br label %IfEnd
"Invoke_Array#[]71": ; preds = %IfBegin66
%addr_vtable72 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable73 = load i8*, i8** %addr_vtable72, align 8
%vtable_ptr74 = bitcast i8* %vtable73 to [54 x i8*]*
%vtable75 = load [54 x i8*], [54 x i8*]* %vtable_ptr74, align 8
%func_raw76 = extractvalue [54 x i8*] %vtable75, 16
%func77 = bitcast i8* %func_raw76 to %Object* (%Array*, %Object*)*
%result78 = call %Object* %func77(%Array* %self, %Object* %as70)
br label %"Invoke_Array#[]_end79"
"Invoke_Array#[]_end79": ; preds = %"Invoke_Array#[]71"
%k80 = load %Int*, %Int** %k, align 8
%as81 = bitcast %Int* %k80 to %Object*
br label %"Invoke_Array#[]82"
"Invoke_Array#[]82": ; preds = %"Invoke_Array#[]_end79"
%addr_vtable83 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable84 = load i8*, i8** %addr_vtable83, align 8
%vtable_ptr85 = bitcast i8* %vtable84 to [54 x i8*]*
%vtable86 = load [54 x i8*], [54 x i8*]* %vtable_ptr85, align 8
%func_raw87 = extractvalue [54 x i8*] %vtable86, 16
%func88 = bitcast i8* %func_raw87 to %Object* (%Array*, %Object*)*
%result89 = call %Object* %func88(%Array* %self, %Object* %as81)
br label %"Invoke_Array#[]_end90"
"Invoke_Array#[]_end90": ; preds = %"Invoke_Array#[]82"
br label %"Invoke_Object#>="
"Invoke_Object#>=": ; preds = %"Invoke_Array#[]_end90"
%addr_vtable91 = getelementptr inbounds %Object, %Object* %result78, i32 0, i32 0
%vtable92 = load i8*, i8** %addr_vtable91, align 8
%vtable_ptr93 = bitcast i8* %vtable92 to [16 x i8*]*
%vtable94 = load [16 x i8*], [16 x i8*]* %vtable_ptr93, align 8
%func_raw95 = extractvalue [16 x i8*] %vtable94, 4
%func96 = bitcast i8* %func_raw95 to %Bool* (%Object*, %Object*)*
%result97 = call %Bool* %func96(%Object* %result78, %Object* %result89)
br label %"Invoke_Object#>=_end"
"Invoke_Object#>=_end": ; preds = %"Invoke_Object#>="
%llvm_bool98 = call i1 @unbox_bool(%Bool* %result97)
%istrue99 = icmp eq i1 %llvm_bool98, true
br i1 %istrue99, label %IfThen67, label %IfElse68
Ret: ; preds = %IfEnd
br label %End
}
define %Int* @Array___partition(%Array* %self, %Int* %i, %Int* %j, %Object* %pivot) {
alloca:
%l = alloca %Int*, align 8
%r = alloca %Int*, align 8
%tmp = alloca %Object*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
store %Int* %i, %Int** %l, align 8
store %Int* %j, %Int** %r, align 8
br label %WhileBegin
End: ; preds = %Ret
%methodResult = phi %Int* [ %l170, %Ret ]
ret %Int* %methodResult
WhileBegin: ; preds = %IfEnd, %alloca_End
%l1 = load %Int*, %Int** %l, align 8
%r2 = load %Int*, %Int** %r, align 8
br label %"Invoke_Int#<="
"Invoke_Int#<=": ; preds = %WhileBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %l1, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable3 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable3, 1
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %l1, %Int* %r2)
br label %"Invoke_Int#<=_end"
"Invoke_Int#<=_end": ; preds = %"Invoke_Int#<="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<=_end"
br label %WhileBegin4
WhileEnd: ; preds = %"Invoke_Int#<=_end"
%"::Void169" = load %Void*, %Void** @"::Void", align 8
%l170 = load %Int*, %Int** %l, align 8
br label %Ret
WhileBegin4: ; preds = %"Invoke_Int#+_end", %WhileBody
br label %AndBegin
AndBegin: ; preds = %WhileBegin4
%l5 = load %Int*, %Int** %l, align 8
br label %"Invoke_Int#<=6"
AndMore: ; preds = %"Invoke_Int#<=_end14"
%l17 = load %Int*, %Int** %l, align 8
%as = bitcast %Int* %l17 to %Object*
br label %"Invoke_Array#[]"
AndEnd: ; preds = %"Invoke_Object#<_end", %"Invoke_Int#<=_end14"
%AndResult = phi %Bool* [ %result13, %"Invoke_Int#<=_end14" ], [ %result31, %"Invoke_Object#<_end" ]
%llvm_bool34 = call i1 @unbox_bool(%Bool* %AndResult)
%istrue35 = icmp eq i1 %llvm_bool34, true
br i1 %istrue35, label %WhileBody32, label %WhileEnd33
"Invoke_Int#<=6": ; preds = %AndBegin
%addr_vtable7 = getelementptr inbounds %Int, %Int* %l5, i32 0, i32 0
%vtable8 = load i8*, i8** %addr_vtable7, align 8
%vtable_ptr9 = bitcast i8* %vtable8 to [35 x i8*]*
%vtable10 = load [35 x i8*], [35 x i8*]* %vtable_ptr9, align 8
%func_raw11 = extractvalue [35 x i8*] %vtable10, 1
%func12 = bitcast i8* %func_raw11 to %Bool* (%Int*, %Int*)*
%result13 = call %Bool* %func12(%Int* %l5, %Int* %j)
br label %"Invoke_Int#<=_end14"
"Invoke_Int#<=_end14": ; preds = %"Invoke_Int#<=6"
%llvm_bool15 = call i1 @unbox_bool(%Bool* %result13)
%istrue16 = icmp eq i1 %llvm_bool15, true
br i1 %istrue16, label %AndMore, label %AndEnd
"Invoke_Array#[]": ; preds = %AndMore
%addr_vtable18 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [54 x i8*]*
%vtable21 = load [54 x i8*], [54 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [54 x i8*] %vtable21, 16
%func23 = bitcast i8* %func_raw22 to %Object* (%Array*, %Object*)*
%result24 = call %Object* %func23(%Array* %self, %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %"Invoke_Object#<"
"Invoke_Object#<": ; preds = %"Invoke_Array#[]_end"
%addr_vtable25 = getelementptr inbounds %Object, %Object* %result24, i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [16 x i8*]*
%vtable28 = load [16 x i8*], [16 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [16 x i8*] %vtable28, 0
%func30 = bitcast i8* %func_raw29 to %Bool* (%Object*, %Object*)*
%result31 = call %Bool* %func30(%Object* %result24, %Object* %pivot)
br label %"Invoke_Object#<_end"
"Invoke_Object#<_end": ; preds = %"Invoke_Object#<"
br label %AndEnd
WhileBody32: ; preds = %AndEnd
%l36 = load %Int*, %Int** %l, align 8
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
WhileEnd33: ; preds = %AndEnd
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %WhileBegin44
"Invoke_Int#+": ; preds = %WhileBody32
%addr_vtable37 = getelementptr inbounds %Int, %Int* %l36, i32 0, i32 0
%vtable38 = load i8*, i8** %addr_vtable37, align 8
%vtable_ptr39 = bitcast i8* %vtable38 to [35 x i8*]*
%vtable40 = load [35 x i8*], [35 x i8*]* %vtable_ptr39, align 8
%func_raw41 = extractvalue [35 x i8*] %vtable40, 18
%func42 = bitcast i8* %func_raw41 to %Int* (%Int*, %Int*)*
%result43 = call %Int* %func42(%Int* %l36, %Int* %sk_int)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result43, %Int** %l, align 8
br label %WhileBegin4
WhileBegin44: ; preds = %"Invoke_Int#-_end", %WhileEnd33
br label %AndBegin45
AndBegin45: ; preds = %WhileBegin44
%r48 = load %Int*, %Int** %r, align 8
br label %"Invoke_Int#>="
AndMore46: ; preds = %"Invoke_Int#>=_end"
%r58 = load %Int*, %Int** %r, align 8
%as59 = bitcast %Int* %r58 to %Object*
br label %"Invoke_Array#[]60"
AndEnd47: ; preds = %"Invoke_Object#>=_end", %"Invoke_Int#>=_end"
%AndResult76 = phi %Bool* [ %result55, %"Invoke_Int#>=_end" ], [ %result75, %"Invoke_Object#>=_end" ]
%llvm_bool79 = call i1 @unbox_bool(%Bool* %AndResult76)
%istrue80 = icmp eq i1 %llvm_bool79, true
br i1 %istrue80, label %WhileBody77, label %WhileEnd78
"Invoke_Int#>=": ; preds = %AndBegin45
%addr_vtable49 = getelementptr inbounds %Int, %Int* %r48, i32 0, i32 0
%vtable50 = load i8*, i8** %addr_vtable49, align 8
%vtable_ptr51 = bitcast i8* %vtable50 to [35 x i8*]*
%vtable52 = load [35 x i8*], [35 x i8*]* %vtable_ptr51, align 8
%func_raw53 = extractvalue [35 x i8*] %vtable52, 4
%func54 = bitcast i8* %func_raw53 to %Bool* (%Int*, %Int*)*
%result55 = call %Bool* %func54(%Int* %r48, %Int* %i)
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool56 = call i1 @unbox_bool(%Bool* %result55)
%istrue57 = icmp eq i1 %llvm_bool56, true
br i1 %istrue57, label %AndMore46, label %AndEnd47
"Invoke_Array#[]60": ; preds = %AndMore46
%addr_vtable61 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable62 = load i8*, i8** %addr_vtable61, align 8
%vtable_ptr63 = bitcast i8* %vtable62 to [54 x i8*]*
%vtable64 = load [54 x i8*], [54 x i8*]* %vtable_ptr63, align 8
%func_raw65 = extractvalue [54 x i8*] %vtable64, 16
%func66 = bitcast i8* %func_raw65 to %Object* (%Array*, %Object*)*
%result67 = call %Object* %func66(%Array* %self, %Object* %as59)
br label %"Invoke_Array#[]_end68"
"Invoke_Array#[]_end68": ; preds = %"Invoke_Array#[]60"
br label %"Invoke_Object#>="
"Invoke_Object#>=": ; preds = %"Invoke_Array#[]_end68"
%addr_vtable69 = getelementptr inbounds %Object, %Object* %result67, i32 0, i32 0
%vtable70 = load i8*, i8** %addr_vtable69, align 8
%vtable_ptr71 = bitcast i8* %vtable70 to [16 x i8*]*
%vtable72 = load [16 x i8*], [16 x i8*]* %vtable_ptr71, align 8
%func_raw73 = extractvalue [16 x i8*] %vtable72, 4
%func74 = bitcast i8* %func_raw73 to %Bool* (%Object*, %Object*)*
%result75 = call %Bool* %func74(%Object* %result67, %Object* %pivot)
br label %"Invoke_Object#>=_end"
"Invoke_Object#>=_end": ; preds = %"Invoke_Object#>="
br label %AndEnd47
WhileBody77: ; preds = %AndEnd47
%r81 = load %Int*, %Int** %r, align 8
%sk_int82 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
WhileEnd78: ; preds = %AndEnd47
%"::Void90" = load %Void*, %Void** @"::Void", align 8
br label %IfBegin
"Invoke_Int#-": ; preds = %WhileBody77
%addr_vtable83 = getelementptr inbounds %Int, %Int* %r81, i32 0, i32 0
%vtable84 = load i8*, i8** %addr_vtable83, align 8
%vtable_ptr85 = bitcast i8* %vtable84 to [35 x i8*]*
%vtable86 = load [35 x i8*], [35 x i8*]* %vtable_ptr85, align 8
%func_raw87 = extractvalue [35 x i8*] %vtable86, 19
%func88 = bitcast i8* %func_raw87 to %Int* (%Int*, %Int*)*
%result89 = call %Int* %func88(%Int* %r81, %Int* %sk_int82)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
store %Int* %result89, %Int** %r, align 8
br label %WhileBegin44
IfBegin: ; preds = %WhileEnd78
%l91 = load %Int*, %Int** %l, align 8
%r92 = load %Int*, %Int** %r, align 8
br label %"Invoke_Int#>"
IfThen: ; preds = %"Invoke_Int#>_end"
%"::Void102" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#>_end"
%l103 = load %Int*, %Int** %l, align 8
%as104 = bitcast %Int* %l103 to %Object*
br label %"Invoke_Array#[]105"
IfEnd: ; preds = %"Invoke_Int#-_end167", %IfThen
%ifResult = phi %Void* [ %"::Void102", %IfThen ], [ %"::Void168", %"Invoke_Int#-_end167" ]
br label %WhileBegin
"Invoke_Int#>": ; preds = %IfBegin
%addr_vtable93 = getelementptr inbounds %Int, %Int* %l91, i32 0, i32 0
%vtable94 = load i8*, i8** %addr_vtable93, align 8
%vtable_ptr95 = bitcast i8* %vtable94 to [35 x i8*]*
%vtable96 = load [35 x i8*], [35 x i8*]* %vtable_ptr95, align 8
%func_raw97 = extractvalue [35 x i8*] %vtable96, 3
%func98 = bitcast i8* %func_raw97 to %Bool* (%Int*, %Int*)*
%result99 = call %Bool* %func98(%Int* %l91, %Int* %r92)
br label %"Invoke_Int#>_end"
"Invoke_Int#>_end": ; preds = %"Invoke_Int#>"
%llvm_bool100 = call i1 @unbox_bool(%Bool* %result99)
%istrue101 = icmp eq i1 %llvm_bool100, true
br i1 %istrue101, label %IfThen, label %IfElse
"Invoke_Array#[]105": ; preds = %IfElse
%addr_vtable106 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable107 = load i8*, i8** %addr_vtable106, align 8
%vtable_ptr108 = bitcast i8* %vtable107 to [54 x i8*]*
%vtable109 = load [54 x i8*], [54 x i8*]* %vtable_ptr108, align 8
%func_raw110 = extractvalue [54 x i8*] %vtable109, 16
%func111 = bitcast i8* %func_raw110 to %Object* (%Array*, %Object*)*
%result112 = call %Object* %func111(%Array* %self, %Object* %as104)
br label %"Invoke_Array#[]_end113"
"Invoke_Array#[]_end113": ; preds = %"Invoke_Array#[]105"
store %Object* %result112, %Object** %tmp, align 8
%l114 = load %Int*, %Int** %l, align 8
%as115 = bitcast %Int* %l114 to %Object*
%r116 = load %Int*, %Int** %r, align 8
%as117 = bitcast %Int* %r116 to %Object*
br label %"Invoke_Array#[]118"
"Invoke_Array#[]118": ; preds = %"Invoke_Array#[]_end113"
%addr_vtable119 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable120 = load i8*, i8** %addr_vtable119, align 8
%vtable_ptr121 = bitcast i8* %vtable120 to [54 x i8*]*
%vtable122 = load [54 x i8*], [54 x i8*]* %vtable_ptr121, align 8
%func_raw123 = extractvalue [54 x i8*] %vtable122, 16
%func124 = bitcast i8* %func_raw123 to %Object* (%Array*, %Object*)*
%result125 = call %Object* %func124(%Array* %self, %Object* %as117)
br label %"Invoke_Array#[]_end126"
"Invoke_Array#[]_end126": ; preds = %"Invoke_Array#[]118"
br label %"Invoke_Array#[]="
"Invoke_Array#[]=": ; preds = %"Invoke_Array#[]_end126"
%addr_vtable127 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable128 = load i8*, i8** %addr_vtable127, align 8
%vtable_ptr129 = bitcast i8* %vtable128 to [54 x i8*]*
%vtable130 = load [54 x i8*], [54 x i8*]* %vtable_ptr129, align 8
%func_raw131 = extractvalue [54 x i8*] %vtable130, 17
%func132 = bitcast i8* %func_raw131 to %Void* (%Array*, %Object*, %Object*)*
%result133 = call %Void* %func132(%Array* %self, %Object* %as115, %Object* %result125)
br label %"Invoke_Array#[]=_end"
"Invoke_Array#[]=_end": ; preds = %"Invoke_Array#[]="
%r134 = load %Int*, %Int** %r, align 8
%as135 = bitcast %Int* %r134 to %Object*
%tmp136 = load %Object*, %Object** %tmp, align 8
br label %"Invoke_Array#[]=137"
"Invoke_Array#[]=137": ; preds = %"Invoke_Array#[]=_end"
%addr_vtable138 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable139 = load i8*, i8** %addr_vtable138, align 8
%vtable_ptr140 = bitcast i8* %vtable139 to [54 x i8*]*
%vtable141 = load [54 x i8*], [54 x i8*]* %vtable_ptr140, align 8
%func_raw142 = extractvalue [54 x i8*] %vtable141, 17
%func143 = bitcast i8* %func_raw142 to %Void* (%Array*, %Object*, %Object*)*
%result144 = call %Void* %func143(%Array* %self, %Object* %as135, %Object* %tmp136)
br label %"Invoke_Array#[]=_end145"
"Invoke_Array#[]=_end145": ; preds = %"Invoke_Array#[]=137"
%l146 = load %Int*, %Int** %l, align 8
%sk_int147 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+148"
"Invoke_Int#+148": ; preds = %"Invoke_Array#[]=_end145"
%addr_vtable149 = getelementptr inbounds %Int, %Int* %l146, i32 0, i32 0
%vtable150 = load i8*, i8** %addr_vtable149, align 8
%vtable_ptr151 = bitcast i8* %vtable150 to [35 x i8*]*
%vtable152 = load [35 x i8*], [35 x i8*]* %vtable_ptr151, align 8
%func_raw153 = extractvalue [35 x i8*] %vtable152, 18
%func154 = bitcast i8* %func_raw153 to %Int* (%Int*, %Int*)*
%result155 = call %Int* %func154(%Int* %l146, %Int* %sk_int147)
br label %"Invoke_Int#+_end156"
"Invoke_Int#+_end156": ; preds = %"Invoke_Int#+148"
store %Int* %result155, %Int** %l, align 8
%r157 = load %Int*, %Int** %r, align 8
%sk_int158 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-159"
"Invoke_Int#-159": ; preds = %"Invoke_Int#+_end156"
%addr_vtable160 = getelementptr inbounds %Int, %Int* %r157, i32 0, i32 0
%vtable161 = load i8*, i8** %addr_vtable160, align 8
%vtable_ptr162 = bitcast i8* %vtable161 to [35 x i8*]*
%vtable163 = load [35 x i8*], [35 x i8*]* %vtable_ptr162, align 8
%func_raw164 = extractvalue [35 x i8*] %vtable163, 19
%func165 = bitcast i8* %func_raw164 to %Int* (%Int*, %Int*)*
%result166 = call %Int* %func165(%Int* %r157, %Int* %sk_int158)
br label %"Invoke_Int#-_end167"
"Invoke_Int#-_end167": ; preds = %"Invoke_Int#-159"
store %Int* %result166, %Int** %r, align 8
%"::Void168" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %WhileEnd
br label %End
}
declare %Object* @Array_aref_(%Array*, %Int*)
define %String* @Meta_String_new(%String* %self, %"Shiika::Internal::Ptr"* %ptr, %Int* %bytesize) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 4))
%addr = bitcast i8* %mem to %String*
%addr_vtable = getelementptr inbounds %String, %String* %addr, i32 0, i32 0
store i8* bitcast ([35 x i8*]* @shiika_vtable_String to i8*), i8** %addr_vtable, align 8
%class = bitcast %String* %self to %Class.0*
%addr_my_class = getelementptr inbounds %String, %String* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @String_initialize(%String* %addr, %"Shiika::Internal::Ptr"* %ptr, %Int* %bytesize)
ret %String* %addr
}
define %"Result::Fail"* @Meta_Result_Fail_new(%"Result::Fail"* %self, %Object* %err) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %"Result::Fail"*
%addr_vtable = getelementptr inbounds %"Result::Fail", %"Result::Fail"* %addr, i32 0, i32 0
store i8* bitcast ([18 x i8*]* @"shiika_vtable_Result::Fail" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Result::Fail"* %self to %Class.0*
%addr_my_class = getelementptr inbounds %"Result::Fail", %"Result::Fail"* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Result_Fail_initialize(%"Result::Fail"* %addr, %Object* %err)
ret %"Result::Fail"* %addr
}
define %Fn* @Meta_Fn_new(%Fn* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn*
%addr_vtable = getelementptr inbounds %Fn, %Fn* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn, %Fn* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Fn_initialize(%Fn* %addr, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn* %addr
}
define %File* @Meta_File_new(%File* %self, %String* %"@path", %Object* %"@file") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 4))
%addr = bitcast i8* %mem to %File*
%addr_vtable = getelementptr inbounds %File, %File* %addr, i32 0, i32 0
store i8* bitcast ([20 x i8*]* @shiika_vtable_File to i8*), i8** %addr_vtable, align 8
%class = bitcast %File* %self to %Class.0*
%addr_my_class = getelementptr inbounds %File, %File* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @File_initialize(%File* %addr, %String* %"@path", %Object* %"@file")
ret %File* %addr
}
define %Bool* @Object_lt_(%Object* %self, %Object* %other) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str_65, i32 0, i32 0), i64 39)
br label %"Invoke_Object#panic"
End: ; No predecessors!
ret %Bool* null
"Invoke_Object#panic": ; preds = %0
%addr_vtable = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 12
%func = bitcast i8* %func_raw to void (%Object*, %String*)*
call void %func(%Object* %self, %String* %sk_str)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
}
define %Bool* @Object_gt_(%Object* %self, %Object* %other) {
br label %"Invoke_Object#<"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %result, %Ret ]
ret %Bool* %methodResult
"Invoke_Object#<": ; preds = %0
%addr_vtable = getelementptr inbounds %Object, %Object* %other, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Object*, %Object*)*
%result = call %Bool* %func(%Object* %other, %Object* %self)
br label %"Invoke_Object#<_end"
"Invoke_Object#<_end": ; preds = %"Invoke_Object#<"
br label %Ret
Ret: ; preds = %"Invoke_Object#<_end"
br label %End
}
define %Bool* @Object_le_(%Object* %self, %Object* %other) {
br label %OrBegin
End: ; preds = %Ret
%methodResult = phi %Bool* [ %OrResult, %Ret ]
ret %Bool* %methodResult
OrBegin: ; preds = %0
br label %"Invoke_Object#<"
OrElse: ; preds = %"Invoke_Object#<_end"
br label %"Invoke_Object#=="
OrEnd: ; preds = %"Invoke_Object#==_end", %"Invoke_Object#<_end"
%OrResult = phi %Bool* [ %result, %"Invoke_Object#<_end" ], [ %result8, %"Invoke_Object#==_end" ]
br label %Ret
"Invoke_Object#<": ; preds = %OrBegin
%addr_vtable = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Object*, %Object*)*
%result = call %Bool* %func(%Object* %self, %Object* %other)
br label %"Invoke_Object#<_end"
"Invoke_Object#<_end": ; preds = %"Invoke_Object#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %OrEnd, label %OrElse
"Invoke_Object#==": ; preds = %OrElse
%addr_vtable2 = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [16 x i8*]*
%vtable5 = load [16 x i8*], [16 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [16 x i8*] %vtable5, 2
%func7 = bitcast i8* %func_raw6 to %Bool* (%Object*, %Object*)*
%result8 = call %Bool* %func7(%Object* %self, %Object* %other)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
br label %OrEnd
Ret: ; preds = %OrEnd
br label %End
}
define %Bool* @Object_ge_(%Object* %self, %Object* %other) {
br label %OrBegin
End: ; preds = %Ret
%methodResult = phi %Bool* [ %OrResult, %Ret ]
ret %Bool* %methodResult
OrBegin: ; preds = %0
br label %"Invoke_Object#>"
OrElse: ; preds = %"Invoke_Object#>_end"
br label %"Invoke_Object#=="
OrEnd: ; preds = %"Invoke_Object#==_end", %"Invoke_Object#>_end"
%OrResult = phi %Bool* [ %result, %"Invoke_Object#>_end" ], [ %result8, %"Invoke_Object#==_end" ]
br label %Ret
"Invoke_Object#>": ; preds = %OrBegin
%addr_vtable = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 3
%func = bitcast i8* %func_raw to %Bool* (%Object*, %Object*)*
%result = call %Bool* %func(%Object* %self, %Object* %other)
br label %"Invoke_Object#>_end"
"Invoke_Object#>_end": ; preds = %"Invoke_Object#>"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %OrEnd, label %OrElse
"Invoke_Object#==": ; preds = %OrElse
%addr_vtable2 = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [16 x i8*]*
%vtable5 = load [16 x i8*], [16 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [16 x i8*] %vtable5, 2
%func7 = bitcast i8* %func_raw6 to %Bool* (%Object*, %Object*)*
%result8 = call %Bool* %func7(%Object* %self, %Object* %other)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
br label %OrEnd
Ret: ; preds = %OrEnd
br label %End
}
define %Int* @Object_hash(%Object* %self) {
%sk_int = call %Int* @box_int(i64 0)
br label %Ret
End: ; preds = %Ret
%methodResult = phi %Int* [ %sk_int, %Ret ]
ret %Int* %methodResult
Ret: ; preds = %0
br label %End
}
define %String* @Object_inspect(%Object* %self) {
br label %"Invoke_Object#to_s"
End: ; preds = %Ret
%methodResult = phi %String* [ %result, %Ret ]
ret %String* %methodResult
"Invoke_Object#to_s": ; preds = %0
%addr_vtable = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 15
%func = bitcast i8* %func_raw to %String* (%Object*)*
%result = call %String* %func(%Object* %self)
br label %"Invoke_Object#to_s_end"
"Invoke_Object#to_s_end": ; preds = %"Invoke_Object#to_s"
br label %Ret
Ret: ; preds = %"Invoke_Object#to_s_end"
br label %End
}
define %Void* @Object_p(%Object* %self, %Object* %obj) {
br label %"Invoke_Object#inspect"
End: ; preds = %Ret
%"::Void9" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void9"
"Invoke_Object#inspect": ; preds = %0
%addr_vtable = getelementptr inbounds %Object, %Object* %obj, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 9
%func = bitcast i8* %func_raw to %String* (%Object*)*
%result = call %String* %func(%Object* %obj)
br label %"Invoke_Object#inspect_end"
"Invoke_Object#inspect_end": ; preds = %"Invoke_Object#inspect"
br label %"Invoke_Object#puts"
"Invoke_Object#puts": ; preds = %"Invoke_Object#inspect_end"
%addr_vtable2 = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [16 x i8*]*
%vtable5 = load [16 x i8*], [16 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [16 x i8*] %vtable5, 14
%func7 = bitcast i8* %func_raw6 to %Void* (%Object*, %String*)*
%result8 = call %Void* %func7(%Object* %self, %String* %result)
br label %"Invoke_Object#puts_end"
"Invoke_Object#puts_end": ; preds = %"Invoke_Object#puts"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Object#puts_end"
br label %End
}
define void @Object_panic(%Object* %self, %String* %msg) {
br label %"Invoke_Object#puts"
End: ; No predecessors!
ret void
"Invoke_Object#puts": ; preds = %0
%addr_vtable = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 14
%func = bitcast i8* %func_raw to %Void* (%Object*, %String*)*
%result = call %Void* %func(%Object* %self, %String* %msg)
br label %"Invoke_Object#puts_end"
"Invoke_Object#puts_end": ; preds = %"Invoke_Object#puts"
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Object#exit"
"Invoke_Object#exit": ; preds = %"Invoke_Object#puts_end"
%addr_vtable2 = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [16 x i8*]*
%vtable5 = load [16 x i8*], [16 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [16 x i8*] %vtable5, 6
%func7 = bitcast i8* %func_raw6 to void (%Object*, %Int*)*
call void %func7(%Object* %self, %Int* %sk_int)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
}
define %String* @Object_to__s(%Object* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str_68, i32 0, i32 0), i64 2)
br label %"Invoke_Object#class"
End: ; preds = %Ret
%methodResult = phi %String* [ %result64, %Ret ]
ret %String* %methodResult
"Invoke_Object#class": ; preds = %0
%addr_vtable = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 5
%func = bitcast i8* %func_raw to %Class.0* (%Object*)*
%result = call %Class.0* %func(%Object* %self)
br label %"Invoke_Object#class_end"
"Invoke_Object#class_end": ; preds = %"Invoke_Object#class"
br label %"Invoke_Class#name"
"Invoke_Class#name": ; preds = %"Invoke_Object#class_end"
%addr_vtable2 = getelementptr inbounds %Class.0, %Class.0* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [22 x i8*]*
%vtable5 = load [22 x i8*], [22 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [22 x i8*] %vtable5, 20
%func7 = bitcast i8* %func_raw6 to %String* (%Class.0*)*
%result8 = call %String* %func7(%Class.0* %result)
br label %"Invoke_Class#name_end"
"Invoke_Class#name_end": ; preds = %"Invoke_Class#name"
br label %"Invoke_String#to_s"
"Invoke_String#to_s": ; preds = %"Invoke_Class#name_end"
%addr_vtable9 = getelementptr inbounds %String, %String* %result8, i32 0, i32 0
%vtable10 = load i8*, i8** %addr_vtable9, align 8
%vtable_ptr11 = bitcast i8* %vtable10 to [35 x i8*]*
%vtable12 = load [35 x i8*], [35 x i8*]* %vtable_ptr11, align 8
%func_raw13 = extractvalue [35 x i8*] %vtable12, 15
%func14 = bitcast i8* %func_raw13 to %String* (%String*)*
%result15 = call %String* %func14(%String* %result8)
br label %"Invoke_String#to_s_end"
"Invoke_String#to_s_end": ; preds = %"Invoke_String#to_s"
br label %"Invoke_String#+"
"Invoke_String#+": ; preds = %"Invoke_String#to_s_end"
%addr_vtable16 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable17 = load i8*, i8** %addr_vtable16, align 8
%vtable_ptr18 = bitcast i8* %vtable17 to [35 x i8*]*
%vtable19 = load [35 x i8*], [35 x i8*]* %vtable_ptr18, align 8
%func_raw20 = extractvalue [35 x i8*] %vtable19, 17
%func21 = bitcast i8* %func_raw20 to %String* (%String*, %String*)*
%result22 = call %String* %func21(%String* %sk_str, %String* %result15)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str23 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_67, i32 0, i32 0), i64 1)
br label %"Invoke_String#+24"
"Invoke_String#+24": ; preds = %"Invoke_String#+_end"
%addr_vtable25 = getelementptr inbounds %String, %String* %result22, i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [35 x i8*]*
%vtable28 = load [35 x i8*], [35 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [35 x i8*] %vtable28, 17
%func30 = bitcast i8* %func_raw29 to %String* (%String*, %String*)*
%result31 = call %String* %func30(%String* %result22, %String* %sk_str23)
br label %"Invoke_String#+_end32"
"Invoke_String#+_end32": ; preds = %"Invoke_String#+24"
br label %"Invoke_Object#object_id"
"Invoke_Object#object_id": ; preds = %"Invoke_String#+_end32"
%addr_vtable33 = getelementptr inbounds %Object, %Object* %self, i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [16 x i8*]*
%vtable36 = load [16 x i8*], [16 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [16 x i8*] %vtable36, 10
%func38 = bitcast i8* %func_raw37 to %Int* (%Object*)*
%result39 = call %Int* %func38(%Object* %self)
br label %"Invoke_Object#object_id_end"
"Invoke_Object#object_id_end": ; preds = %"Invoke_Object#object_id"
br label %"Invoke_Int#to_s"
"Invoke_Int#to_s": ; preds = %"Invoke_Object#object_id_end"
%addr_vtable40 = getelementptr inbounds %Int, %Int* %result39, i32 0, i32 0
%vtable41 = load i8*, i8** %addr_vtable40, align 8
%vtable_ptr42 = bitcast i8* %vtable41 to [35 x i8*]*
%vtable43 = load [35 x i8*], [35 x i8*]* %vtable_ptr42, align 8
%func_raw44 = extractvalue [35 x i8*] %vtable43, 15
%func45 = bitcast i8* %func_raw44 to %String* (%Int*)*
%result46 = call %String* %func45(%Int* %result39)
br label %"Invoke_Int#to_s_end"
"Invoke_Int#to_s_end": ; preds = %"Invoke_Int#to_s"
br label %"Invoke_String#+47"
"Invoke_String#+47": ; preds = %"Invoke_Int#to_s_end"
%addr_vtable48 = getelementptr inbounds %String, %String* %result31, i32 0, i32 0
%vtable49 = load i8*, i8** %addr_vtable48, align 8
%vtable_ptr50 = bitcast i8* %vtable49 to [35 x i8*]*
%vtable51 = load [35 x i8*], [35 x i8*]* %vtable_ptr50, align 8
%func_raw52 = extractvalue [35 x i8*] %vtable51, 17
%func53 = bitcast i8* %func_raw52 to %String* (%String*, %String*)*
%result54 = call %String* %func53(%String* %result31, %String* %result46)
br label %"Invoke_String#+_end55"
"Invoke_String#+_end55": ; preds = %"Invoke_String#+47"
%sk_str56 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_66, i32 0, i32 0), i64 1)
br label %"Invoke_String#+57"
"Invoke_String#+57": ; preds = %"Invoke_String#+_end55"
%addr_vtable58 = getelementptr inbounds %String, %String* %result54, i32 0, i32 0
%vtable59 = load i8*, i8** %addr_vtable58, align 8
%vtable_ptr60 = bitcast i8* %vtable59 to [35 x i8*]*
%vtable61 = load [35 x i8*], [35 x i8*]* %vtable_ptr60, align 8
%func_raw62 = extractvalue [35 x i8*] %vtable61, 17
%func63 = bitcast i8* %func_raw62 to %String* (%String*, %String*)*
%result64 = call %String* %func63(%String* %result54, %String* %sk_str56)
br label %"Invoke_String#+_end65"
"Invoke_String#+_end65": ; preds = %"Invoke_String#+57"
br label %Ret
Ret: ; preds = %"Invoke_String#+_end65"
br label %End
}
define %Void* @Object_initialize(%Object* %self) {
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
declare %Bool* @Object_eq_(%Object*, %Object*)
declare %Class.0* @Object_class(%Object*)
declare void @Object_exit(%Object*, %Int*)
declare %Int* @Object_object__id(%Object*)
declare %Void* @Object_print(%Object*, %String*)
declare %Void* @Object_puts(%Object*, %String*)
define %Fn1* @Meta_Fn1_new(%Fn1* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn1*
%addr_vtable = getelementptr inbounds %Fn1, %Fn1* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn1 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn1* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn1, %Fn1* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn1* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn1* %addr
}
define %Void* @Dict_Table_initialize(%"Dict::Table"* %self) {
alloca:
%"ary@21_" = alloca %Array*, align 8
%"ary@22_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%"::Void90" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void90"
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@22_", align 8
%"ary@22_10" = load %Array*, %Array** %"ary@22_", align 8
%"::Pair" = load %Pair*, %Pair** @"::Pair", align 8
%"::Array11" = load %Array*, %Array** @"::Array", align 8
%"::Class12" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize113"
"Invoke_Class#_specialize113": ; preds = %"Invoke_Array#new_end"
%addr_vtable14 = getelementptr inbounds %Array, %Array* %"::Array11", i32 0, i32 0
%vtable15 = load i8*, i8** %addr_vtable14, align 8
%vtable_ptr16 = bitcast i8* %vtable15 to [25 x i8*]*
%vtable17 = load [25 x i8*], [25 x i8*]* %vtable_ptr16, align 8
%func_raw18 = extractvalue [25 x i8*] %vtable17, 18
%func19 = bitcast i8* %func_raw18 to %Array* (%Array*, %Class.0*)*
%result20 = call %Array* %func19(%Array* %"::Array11", %Class.0* %"::Class12")
br label %"Invoke_Class#_specialize1_end21"
"Invoke_Class#_specialize1_end21": ; preds = %"Invoke_Class#_specialize113"
br label %"Invoke_Array#new22"
"Invoke_Array#new22": ; preds = %"Invoke_Class#_specialize1_end21"
%addr_vtable23 = getelementptr inbounds %Array, %Array* %result20, i32 0, i32 0
%vtable24 = load i8*, i8** %addr_vtable23, align 8
%vtable_ptr25 = bitcast i8* %vtable24 to [25 x i8*]*
%vtable26 = load [25 x i8*], [25 x i8*]* %vtable_ptr25, align 8
%func_raw27 = extractvalue [25 x i8*] %vtable26, 23
%func28 = bitcast i8* %func_raw27 to %Array* (%Array*)*
%result29 = call %Array* %func28(%Array* %result20)
br label %"Invoke_Array#new_end30"
"Invoke_Array#new_end30": ; preds = %"Invoke_Array#new22"
store %Array* %result29, %Array** %"ary@21_", align 8
%"ary@21_31" = load %Array*, %Array** %"ary@21_", align 8
%addr_class = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result32 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result32 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end30"
%addr_vtable33 = getelementptr inbounds %Array, %Array* %"ary@21_31", i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [54 x i8*]*
%vtable36 = load [54 x i8*], [54 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [54 x i8*] %vtable36, 45
%func38 = bitcast i8* %func_raw37 to %Void* (%Array*, %Object*)*
%result39 = call %Void* %func38(%Array* %"ary@21_31", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@21_40" = load %Array*, %Array** %"ary@21_", align 8
%addr_class41 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 1
%class42 = load %Class.0*, %Class.0** %addr_class41, align 8
%sk_int43 = call %Int* @box_int(i64 1)
%result44 = call %Class.0* @Class___type__argument(%Class.0* %class42, %Int* %sk_int43)
%as45 = bitcast %Class.0* %result44 to %Object*
br label %"Invoke_Array#push46"
"Invoke_Array#push46": ; preds = %"Invoke_Array#push_end"
%addr_vtable47 = getelementptr inbounds %Array, %Array* %"ary@21_40", i32 0, i32 0
%vtable48 = load i8*, i8** %addr_vtable47, align 8
%vtable_ptr49 = bitcast i8* %vtable48 to [54 x i8*]*
%vtable50 = load [54 x i8*], [54 x i8*]* %vtable_ptr49, align 8
%func_raw51 = extractvalue [54 x i8*] %vtable50, 45
%func52 = bitcast i8* %func_raw51 to %Void* (%Array*, %Object*)*
%result53 = call %Void* %func52(%Array* %"ary@21_40", %Object* %as45)
br label %"Invoke_Array#push_end54"
"Invoke_Array#push_end54": ; preds = %"Invoke_Array#push46"
%"ary@21_55" = load %Array*, %Array** %"ary@21_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end54"
%addr_vtable56 = getelementptr inbounds %Pair, %Pair* %"::Pair", i32 0, i32 0
%vtable57 = load i8*, i8** %addr_vtable56, align 8
%vtable_ptr58 = bitcast i8* %vtable57 to [23 x i8*]*
%vtable59 = load [23 x i8*], [23 x i8*]* %vtable_ptr58, align 8
%func_raw60 = extractvalue [23 x i8*] %vtable59, 16
%func61 = bitcast i8* %func_raw60 to %Pair* (%Pair*, %Array*)*
%result62 = call %Pair* %func61(%Pair* %"::Pair", %Array* %"ary@21_55")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
%as63 = bitcast %Pair* %result62 to %Object*
br label %"Invoke_Array#push64"
"Invoke_Array#push64": ; preds = %"Invoke_Class#<>_end"
%addr_vtable65 = getelementptr inbounds %Array, %Array* %"ary@22_10", i32 0, i32 0
%vtable66 = load i8*, i8** %addr_vtable65, align 8
%vtable_ptr67 = bitcast i8* %vtable66 to [54 x i8*]*
%vtable68 = load [54 x i8*], [54 x i8*]* %vtable_ptr67, align 8
%func_raw69 = extractvalue [54 x i8*] %vtable68, 45
%func70 = bitcast i8* %func_raw69 to %Void* (%Array*, %Object*)*
%result71 = call %Void* %func70(%Array* %"ary@22_10", %Object* %as63)
br label %"Invoke_Array#push_end72"
"Invoke_Array#push_end72": ; preds = %"Invoke_Array#push64"
%"ary@22_73" = load %Array*, %Array** %"ary@22_", align 8
br label %"Invoke_Class#<>74"
"Invoke_Class#<>74": ; preds = %"Invoke_Array#push_end72"
%addr_vtable75 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable76 = load i8*, i8** %addr_vtable75, align 8
%vtable_ptr77 = bitcast i8* %vtable76 to [25 x i8*]*
%vtable78 = load [25 x i8*], [25 x i8*]* %vtable_ptr77, align 8
%func_raw79 = extractvalue [25 x i8*] %vtable78, 16
%func80 = bitcast i8* %func_raw79 to %Array* (%Array*, %Array*)*
%result81 = call %Array* %func80(%Array* %"::Array", %Array* %"ary@22_73")
br label %"Invoke_Class#<>_end82"
"Invoke_Class#<>_end82": ; preds = %"Invoke_Class#<>74"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end82"
%addr_vtable83 = getelementptr inbounds %Array, %Array* %result81, i32 0, i32 0
%vtable84 = load i8*, i8** %addr_vtable83, align 8
%vtable_ptr85 = bitcast i8* %vtable84 to [25 x i8*]*
%vtable86 = load [25 x i8*], [25 x i8*]* %vtable_ptr85, align 8
%func_raw87 = extractvalue [25 x i8*] %vtable86, 23
%func88 = bitcast i8* %func_raw87 to %Array* (%Array*)*
%result89 = call %Array* %func88(%Array* %result81)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
store %Array* %result89, %Array** %"addr_@pairs", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Meta:Array#new_end"
br label %End
}
define %Array* @Dict_Table_pairs(%"Dict::Table"* %self) {
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
%"@pairs" = load %Array*, %Array** %"addr_@pairs", align 8
ret %Array* %"@pairs"
}
define %Array* @_set_Dict_Table_pairs(%"Dict::Table"* %self, %Array* %pairs) {
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
store %Array* %pairs, %Array** %"addr_@pairs", align 8
ret %Array* %pairs
}
define %Void* @Dict_Table_aset_(%"Dict::Table"* %self, %Object* %key, %Object* %value) {
alloca:
%done = alloca %Bool*, align 8
%"ary@23_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %done, align 8
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
%"@pairs" = load %Array*, %Array** %"addr_@pairs", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_18_in_Dict::Table#[]=" to i8*))
%the_main = bitcast %"Dict::Table"* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%_ = call %Void* @Array_push(%Array* %result, %Object* %key)
%_1 = call %Void* @Array_push(%Array* %result, %Object* %value)
%capture_item = bitcast %Bool** %done to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result3 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%"::Void78" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void78"
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"@pairs", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable4 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable4, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result5 = call %Void* %func(%Array* %"@pairs", %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
br label %IfBegin
IfBegin: ; preds = %"Invoke_Array#each_end"
%done6 = load %Bool*, %Bool** %done, align 8
%llvm_bool = call i1 @unbox_bool(%Bool* %done6)
%b2 = xor i1 %llvm_bool, true
%sk_bool7 = call %Bool* @box_bool(i1 %b2)
%llvm_bool8 = call i1 @unbox_bool(%Bool* %sk_bool7)
%istrue = icmp eq i1 %llvm_bool8, true
br i1 %istrue, label %IfThen, label %IfElse
IfThen: ; preds = %IfBegin
%"addr_@pairs9" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
%"@pairs10" = load %Array*, %Array** %"addr_@pairs9", align 8
%"::Pair" = load %Pair*, %Pair** @"::Pair", align 8
%"::Array11" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
IfElse: ; preds = %IfBegin
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void76" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Array#push_end75"
%ifResult = phi %Void* [ %result74, %"Invoke_Array#push_end75" ], [ %"::Void76", %IfElse ]
%"::Void77" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Class#_specialize1": ; preds = %IfThen
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"::Array11", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [25 x i8*]*
%vtable15 = load [25 x i8*], [25 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [25 x i8*] %vtable15, 18
%func17 = bitcast i8* %func_raw16 to %Array* (%Array*, %Class.0*)*
%result18 = call %Array* %func17(%Array* %"::Array11", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %result18, i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 23
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*)*
%result25 = call %Array* %func24(%Array* %result18)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result25, %Array** %"ary@23_", align 8
%"ary@23_26" = load %Array*, %Array** %"ary@23_", align 8
%addr_class = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result27 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as28 = bitcast %Class.0* %result27 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable29 = getelementptr inbounds %Array, %Array* %"ary@23_26", i32 0, i32 0
%vtable30 = load i8*, i8** %addr_vtable29, align 8
%vtable_ptr31 = bitcast i8* %vtable30 to [54 x i8*]*
%vtable32 = load [54 x i8*], [54 x i8*]* %vtable_ptr31, align 8
%func_raw33 = extractvalue [54 x i8*] %vtable32, 45
%func34 = bitcast i8* %func_raw33 to %Void* (%Array*, %Object*)*
%result35 = call %Void* %func34(%Array* %"ary@23_26", %Object* %as28)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@23_36" = load %Array*, %Array** %"ary@23_", align 8
%addr_class37 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 1
%class38 = load %Class.0*, %Class.0** %addr_class37, align 8
%sk_int39 = call %Int* @box_int(i64 1)
%result40 = call %Class.0* @Class___type__argument(%Class.0* %class38, %Int* %sk_int39)
%as41 = bitcast %Class.0* %result40 to %Object*
br label %"Invoke_Array#push42"
"Invoke_Array#push42": ; preds = %"Invoke_Array#push_end"
%addr_vtable43 = getelementptr inbounds %Array, %Array* %"ary@23_36", i32 0, i32 0
%vtable44 = load i8*, i8** %addr_vtable43, align 8
%vtable_ptr45 = bitcast i8* %vtable44 to [54 x i8*]*
%vtable46 = load [54 x i8*], [54 x i8*]* %vtable_ptr45, align 8
%func_raw47 = extractvalue [54 x i8*] %vtable46, 45
%func48 = bitcast i8* %func_raw47 to %Void* (%Array*, %Object*)*
%result49 = call %Void* %func48(%Array* %"ary@23_36", %Object* %as41)
br label %"Invoke_Array#push_end50"
"Invoke_Array#push_end50": ; preds = %"Invoke_Array#push42"
%"ary@23_51" = load %Array*, %Array** %"ary@23_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end50"
%addr_vtable52 = getelementptr inbounds %Pair, %Pair* %"::Pair", i32 0, i32 0
%vtable53 = load i8*, i8** %addr_vtable52, align 8
%vtable_ptr54 = bitcast i8* %vtable53 to [23 x i8*]*
%vtable55 = load [23 x i8*], [23 x i8*]* %vtable_ptr54, align 8
%func_raw56 = extractvalue [23 x i8*] %vtable55, 16
%func57 = bitcast i8* %func_raw56 to %Pair* (%Pair*, %Array*)*
%result58 = call %Pair* %func57(%Pair* %"::Pair", %Array* %"ary@23_51")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Pair#new"
"Invoke_Meta:Pair#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable59 = getelementptr inbounds %Pair, %Pair* %result58, i32 0, i32 0
%vtable60 = load i8*, i8** %addr_vtable59, align 8
%vtable_ptr61 = bitcast i8* %vtable60 to [23 x i8*]*
%vtable62 = load [23 x i8*], [23 x i8*]* %vtable_ptr61, align 8
%func_raw63 = extractvalue [23 x i8*] %vtable62, 22
%func64 = bitcast i8* %func_raw63 to %Pair* (%Pair*, %Object*, %Object*)*
%result65 = call %Pair* %func64(%Pair* %result58, %Object* %key, %Object* %value)
br label %"Invoke_Meta:Pair#new_end"
"Invoke_Meta:Pair#new_end": ; preds = %"Invoke_Meta:Pair#new"
%as66 = bitcast %Pair* %result65 to %Object*
br label %"Invoke_Array#push67"
"Invoke_Array#push67": ; preds = %"Invoke_Meta:Pair#new_end"
%addr_vtable68 = getelementptr inbounds %Array, %Array* %"@pairs10", i32 0, i32 0
%vtable69 = load i8*, i8** %addr_vtable68, align 8
%vtable_ptr70 = bitcast i8* %vtable69 to [54 x i8*]*
%vtable71 = load [54 x i8*], [54 x i8*]* %vtable_ptr70, align 8
%func_raw72 = extractvalue [54 x i8*] %vtable71, 45
%func73 = bitcast i8* %func_raw72 to %Void* (%Array*, %Object*)*
%result74 = call %Void* %func73(%Array* %"@pairs10", %Object* %as66)
br label %"Invoke_Array#push_end75"
"Invoke_Array#push_end75": ; preds = %"Invoke_Array#push67"
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Maybe* @Dict_Table_aref_(%"Dict::Table"* %self, %Object* %key) {
alloca:
%ret = alloca %"Maybe::None"*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::None" = load %"Maybe::None"*, %"Maybe::None"** @"::None", align 8
store %"Maybe::None"* %"::None", %"Maybe::None"** %ret, align 8
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
%"@pairs" = load %Array*, %Array** %"addr_@pairs", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_19_in_Dict::Table#[]" to i8*))
%the_main = bitcast %"Dict::Table"* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%_ = call %Void* @Array_push(%Array* %result, %Object* %key)
%capture_item = bitcast %"Maybe::None"** %ret to %Object*
%_1 = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%result2 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result2 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Maybe* [ %as6, %Ret ]
ret %Maybe* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"@pairs", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable3 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable3, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result4 = call %Void* %func(%Array* %"@pairs", %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret5 = load %"Maybe::None"*, %"Maybe::None"** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
%as6 = bitcast %"Maybe::None"* %ret5 to %Maybe*
br label %End
}
define %Bool* @"Dict_Table_has__key?"(%"Dict::Table"* %self, %Object* %key) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
%"@pairs" = load %Array*, %Array** %"addr_@pairs", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_20_in_Dict::Table#has_key?" to i8*))
%the_main = bitcast %"Dict::Table"* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%_ = call %Void* @Array_push(%Array* %result, %Object* %key)
%capture_item = bitcast %Bool** %ret to %Object*
%_1 = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%result2 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result2 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret5, %Ret ]
ret %Bool* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"@pairs", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable3 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable3, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result4 = call %Void* %func(%Array* %"@pairs", %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret5 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Array* @Dict_Table_keys(%"Dict::Table"* %self) {
alloca:
%ret = alloca %Array*, align 8
%"ary@24_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@24_", align 8
%"ary@24_10" = load %Array*, %Array** %"ary@24_", align 8
%addr_class = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@24_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@24_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@24_19" = load %Array*, %Array** %"ary@24_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@24_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
%"@pairs" = load %Array*, %Array** %"addr_@pairs", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_21_in_Dict::Table#keys" to i8*))
%the_main = bitcast %"Dict::Table"* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%result36 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as37 = bitcast %Fn1* %result36 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %"@pairs", i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 29
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %"@pairs", %Object* %as37)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Array* @Dict_Table_values(%"Dict::Table"* %self) {
alloca:
%ret = alloca %Array*, align 8
%"ary@25_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@25_", align 8
%"ary@25_10" = load %Array*, %Array** %"ary@25_", align 8
%addr_class = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 1)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@25_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@25_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@25_19" = load %Array*, %Array** %"ary@25_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@25_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"addr_@pairs" = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %self, i32 0, i32 2
%"@pairs" = load %Array*, %Array** %"addr_@pairs", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_22_in_Dict::Table#values" to i8*))
%the_main = bitcast %"Dict::Table"* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%result36 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as37 = bitcast %Fn1* %result36 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %"@pairs", i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 29
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %"@pairs", %Object* %as37)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Bool* @Meta_Bool_new(%Bool* %self) {
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Bool* getelementptr (%Bool, %Bool* null, i32 1) to i64))
%addr = bitcast i8* %mem to %Bool*
%addr_vtable = getelementptr inbounds %Bool, %Bool* %addr, i32 0, i32 0
store i8* bitcast ([16 x i8*]* @shiika_vtable_Bool to i8*), i8** %addr_vtable, align 8
%class = bitcast %Bool* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Bool, %Bool* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Bool* %addr to %Object*
%1 = call %Void* @Object_initialize(%Object* %obj_as_super)
ret %Bool* %addr
}
define %Int* @Meta_Int_new(%Int* %self) {
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Int* getelementptr (%Int, %Int* null, i32 1) to i64))
%addr = bitcast i8* %mem to %Int*
%addr_vtable = getelementptr inbounds %Int, %Int* %addr, i32 0, i32 0
store i8* bitcast ([35 x i8*]* @shiika_vtable_Int to i8*), i8** %addr_vtable, align 8
%class = bitcast %Int* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Int, %Int* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Int* %addr to %Object*
%1 = call %Void* @Object_initialize(%Object* %obj_as_super)
ret %Int* %addr
}
define %Fn4* @Meta_Fn4_new(%Fn4* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn4*
%addr_vtable = getelementptr inbounds %Fn4, %Fn4* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn4 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn4* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn4, %Fn4* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn4* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn4* %addr
}
define %Fn2* @Meta_Fn2_new(%Fn2* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn2*
%addr_vtable = getelementptr inbounds %Fn2, %Fn2* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn2 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn2* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn2, %Fn2* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn2* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn2* %addr
}
define %Float* @Float_mod_(%Float* %self, %Int* %other) {
br label %"Invoke_Int#to_f"
End: ; preds = %Ret
%methodResult = phi %Float* [ %result38, %Ret ]
ret %Float* %methodResult
"Invoke_Int#to_f": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %other, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 31
%func = bitcast i8* %func_raw to %Float* (%Int*)*
%result = call %Float* %func(%Int* %other)
br label %"Invoke_Int#to_f_end"
"Invoke_Int#to_f_end": ; preds = %"Invoke_Int#to_f"
br label %"Invoke_Int#to_f2"
"Invoke_Int#to_f2": ; preds = %"Invoke_Int#to_f_end"
%addr_vtable3 = getelementptr inbounds %Int, %Int* %other, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [35 x i8*]*
%vtable6 = load [35 x i8*], [35 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [35 x i8*] %vtable6, 31
%func8 = bitcast i8* %func_raw7 to %Float* (%Int*)*
%result9 = call %Float* %func8(%Int* %other)
br label %"Invoke_Int#to_f_end10"
"Invoke_Int#to_f_end10": ; preds = %"Invoke_Int#to_f2"
br label %"Invoke_Float#/"
"Invoke_Float#/": ; preds = %"Invoke_Int#to_f_end10"
%addr_vtable11 = getelementptr inbounds %Float, %Float* %self, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [25 x i8*]*
%vtable14 = load [25 x i8*], [25 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [25 x i8*] %vtable14, 21
%func16 = bitcast i8* %func_raw15 to %Float* (%Float*, %Float*)*
%result17 = call %Float* %func16(%Float* %self, %Float* %result9)
br label %"Invoke_Float#/_end"
"Invoke_Float#/_end": ; preds = %"Invoke_Float#/"
br label %"Invoke_Float#floor"
"Invoke_Float#floor": ; preds = %"Invoke_Float#/_end"
%addr_vtable18 = getelementptr inbounds %Float, %Float* %result17, i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [25 x i8*]*
%vtable21 = load [25 x i8*], [25 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [25 x i8*] %vtable21, 23
%func23 = bitcast i8* %func_raw22 to %Float* (%Float*)*
%result24 = call %Float* %func23(%Float* %result17)
br label %"Invoke_Float#floor_end"
"Invoke_Float#floor_end": ; preds = %"Invoke_Float#floor"
br label %"Invoke_Float#*"
"Invoke_Float#*": ; preds = %"Invoke_Float#floor_end"
%addr_vtable25 = getelementptr inbounds %Float, %Float* %result, i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [25 x i8*]*
%vtable28 = load [25 x i8*], [25 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [25 x i8*] %vtable28, 17
%func30 = bitcast i8* %func_raw29 to %Float* (%Float*, %Float*)*
%result31 = call %Float* %func30(%Float* %result, %Float* %result24)
br label %"Invoke_Float#*_end"
"Invoke_Float#*_end": ; preds = %"Invoke_Float#*"
br label %"Invoke_Float#-"
"Invoke_Float#-": ; preds = %"Invoke_Float#*_end"
%addr_vtable32 = getelementptr inbounds %Float, %Float* %self, i32 0, i32 0
%vtable33 = load i8*, i8** %addr_vtable32, align 8
%vtable_ptr34 = bitcast i8* %vtable33 to [25 x i8*]*
%vtable35 = load [25 x i8*], [25 x i8*]* %vtable_ptr34, align 8
%func_raw36 = extractvalue [25 x i8*] %vtable35, 19
%func37 = bitcast i8* %func_raw36 to %Float* (%Float*, %Float*)*
%result38 = call %Float* %func37(%Float* %self, %Float* %result31)
br label %"Invoke_Float#-_end"
"Invoke_Float#-_end": ; preds = %"Invoke_Float#-"
br label %Ret
Ret: ; preds = %"Invoke_Float#-_end"
br label %End
}
declare %Float* @Float_uminus_(%Float*)
declare %Float* @Float_add_(%Float*, %Float*)
declare %Float* @Float_sub_(%Float*, %Float*)
declare %Float* @Float_mul_(%Float*, %Float*)
declare %Float* @Float_div_(%Float*, %Float*)
declare %Bool* @Float_lt_(%Float*, %Float*)
declare %Bool* @Float_le_(%Float*, %Float*)
declare %Bool* @Float_gt_(%Float*, %Float*)
declare %Bool* @Float_ge_(%Float*, %Float*)
declare %Bool* @Float_eq_(%Float*, %Float*)
declare %Float* @Float_abs(%Float*)
declare %Float* @Float_floor(%Float*)
declare %Int* @Float_to__i(%Float*)
declare %String* @Float_to__s(%Float*)
define %Void* @Meta_Void_new(%Void* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 2))
%addr = bitcast i8* %mem to %Void*
%addr_vtable = getelementptr inbounds %Void, %Void* %addr, i32 0, i32 0
store i8* bitcast ([16 x i8*]* @shiika_vtable_Void to i8*), i8** %addr_vtable, align 8
%class = bitcast %Void* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Void, %Void* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Void* %addr to %Object*
%1 = call %Void* @Object_initialize(%Object* %obj_as_super)
ret %Void* %addr
}
define %"Result::Ok"* @Meta_Result_Ok_new(%"Result::Ok"* %self, %Object* %value) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %"Result::Ok"*
%addr_vtable = getelementptr inbounds %"Result::Ok", %"Result::Ok"* %addr, i32 0, i32 0
store i8* bitcast ([18 x i8*]* @"shiika_vtable_Result::Ok" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Result::Ok"* %self to %Class.0*
%addr_my_class = getelementptr inbounds %"Result::Ok", %"Result::Ok"* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Result_Ok_initialize(%"Result::Ok"* %addr, %Object* %value)
ret %"Result::Ok"* %addr
}
define %Void* @Maybe_None_initialize(%"Maybe::None"* %self) {
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %String* @Bool_inspect(%Bool* %self) {
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %String* [ %ifResult, %Ret ]
ret %String* %methodResult
IfBegin: ; preds = %0
%llvm_bool = call i1 @unbox_bool(%Bool* %self)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
IfThen: ; preds = %IfBegin
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_50, i32 0, i32 0), i64 4)
br label %IfEnd
IfElse: ; preds = %IfBegin
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_51, i32 0, i32 0), i64 5)
br label %IfEnd
IfEnd: ; preds = %IfElse, %IfThen
%ifResult = phi %String* [ %sk_str, %IfThen ], [ %sk_str1, %IfElse ]
br label %Ret
Ret: ; preds = %IfEnd
br label %End
}
define %Int* @Int_abs(%Int* %self) {
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Int* [ %ifResult, %Ret ]
ret %Int* %methodResult
IfBegin: ; preds = %0
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#>="
IfThen: ; preds = %"Invoke_Int#>=_end"
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#>=_end"
br label %"Invoke_Int#-@"
IfEnd: ; preds = %"Invoke_Int#-@_end", %IfThen
%ifResult = phi %Int* [ %self, %IfThen ], [ %result8, %"Invoke_Int#-@_end" ]
br label %Ret
"Invoke_Int#>=": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 4
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %self, %Int* %sk_int)
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#-@": ; preds = %IfElse
%addr_vtable2 = getelementptr inbounds %Int, %Int* %self, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 20
%func7 = bitcast i8* %func_raw6 to %Int* (%Int*)*
%result8 = call %Int* %func7(%Int* %self)
br label %"Invoke_Int#-@_end"
"Invoke_Int#-@_end": ; preds = %"Invoke_Int#-@"
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @Int_downto(%Int* %self, %Int* %n, %Fn1* %f) {
alloca:
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
store %Int* %self, %Int** %i, align 8
br label %WhileBegin
End: ; preds = %Ret, %Invoke_lambda
%"::Void18" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void18"
WhileBegin: ; preds = %"Invoke_Int#-_end", %alloca_End
%i1 = load %Int*, %Int** %i, align 8
br label %"Invoke_Int#>="
"Invoke_Int#>=": ; preds = %WhileBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i1, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 4
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i1, %Int* %n)
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#>=_end"
%i3 = load %Int*, %Int** %i, align 8
br label %Invoke_lambda
WhileEnd: ; preds = %"Invoke_Int#>=_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void17" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Invoke_lambda: ; preds = %WhileBody
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %Int*)*
%result4 = call %Void* %0(%Fn1* %f, %Int* %i3)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int = call %Int* @box_int(i64 1)
%result5 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int)
%llvm_bool6 = call i1 @unbox_bool(%Bool* %result5)
%istrue7 = icmp eq i1 %llvm_bool6, true
br i1 %istrue7, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%i8 = load %Int*, %Int** %i, align 8
%sk_int9 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %Invoke_lambda_end
%addr_vtable10 = getelementptr inbounds %Int, %Int* %i8, i32 0, i32 0
%vtable11 = load i8*, i8** %addr_vtable10, align 8
%vtable_ptr12 = bitcast i8* %vtable11 to [35 x i8*]*
%vtable13 = load [35 x i8*], [35 x i8*]* %vtable_ptr12, align 8
%func_raw14 = extractvalue [35 x i8*] %vtable13, 19
%func15 = bitcast i8* %func_raw14 to %Int* (%Int*, %Int*)*
%result16 = call %Int* %func15(%Int* %i8, %Int* %sk_int9)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
store %Int* %result16, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Bool* @"Int_even?"(%Int* %self) {
%sk_int = call %Int* @box_int(i64 2)
br label %"Invoke_Int#%"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %result9, %Ret ]
ret %Bool* %methodResult
"Invoke_Int#%": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %self, %Int* %sk_int)
br label %"Invoke_Int#%_end"
"Invoke_Int#%_end": ; preds = %"Invoke_Int#%"
%sk_int2 = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
"Invoke_Int#==": ; preds = %"Invoke_Int#%_end"
%addr_vtable3 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [35 x i8*]*
%vtable6 = load [35 x i8*], [35 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [35 x i8*] %vtable6, 2
%func8 = bitcast i8* %func_raw7 to %Bool* (%Int*, %Int*)*
%result9 = call %Bool* %func8(%Int* %result, %Int* %sk_int2)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
br label %Ret
Ret: ; preds = %"Invoke_Int#==_end"
br label %End
}
define %Bool* @"Int_odd?"(%Int* %self) {
%sk_int = call %Int* @box_int(i64 2)
br label %"Invoke_Int#%"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %sk_bool, %Ret ]
ret %Bool* %methodResult
"Invoke_Int#%": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %self, %Int* %sk_int)
br label %"Invoke_Int#%_end"
"Invoke_Int#%_end": ; preds = %"Invoke_Int#%"
%sk_int2 = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
"Invoke_Int#==": ; preds = %"Invoke_Int#%_end"
%addr_vtable3 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [35 x i8*]*
%vtable6 = load [35 x i8*], [35 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [35 x i8*] %vtable6, 2
%func8 = bitcast i8* %func_raw7 to %Bool* (%Int*, %Int*)*
%result9 = call %Bool* %func8(%Int* %result, %Int* %sk_int2)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result9)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
br label %Ret
Ret: ; preds = %"Invoke_Int#==_end"
br label %End
}
define %Int* @Int_hash(%Int* %self) {
br label %Ret
End: ; preds = %Ret
%methodResult = phi %Int* [ %self, %Ret ]
ret %Int* %methodResult
Ret: ; preds = %0
br label %End
}
define %Void* @Int_times(%Int* %self, %Fn1* %f) {
alloca:
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
End: ; preds = %Ret, %Invoke_lambda
%"::Void19" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void19"
WhileBegin: ; preds = %"Invoke_Int#+_end", %alloca_End
%i1 = load %Int*, %Int** %i, align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i1, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i1, %Int* %self)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%i3 = load %Int*, %Int** %i, align 8
br label %Invoke_lambda
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void18" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Invoke_lambda: ; preds = %WhileBody
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %Int*)*
%result4 = call %Void* %0(%Fn1* %f, %Int* %i3)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int5 = call %Int* @box_int(i64 1)
%result6 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int5)
%llvm_bool7 = call i1 @unbox_bool(%Bool* %result6)
%istrue8 = icmp eq i1 %llvm_bool7, true
br i1 %istrue8, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%i9 = load %Int*, %Int** %i, align 8
%sk_int10 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %Invoke_lambda_end
%addr_vtable11 = getelementptr inbounds %Int, %Int* %i9, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 18
%func16 = bitcast i8* %func_raw15 to %Int* (%Int*, %Int*)*
%result17 = call %Int* %func16(%Int* %i9, %Int* %sk_int10)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result17, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Int* @Int_to__i(%Int* %self) {
br label %Ret
End: ; preds = %Ret
%methodResult = phi %Int* [ %self, %Ret ]
ret %Int* %methodResult
Ret: ; preds = %0
br label %End
}
define %String* @Int_to__s(%Int* %self) {
alloca:
%minus = alloca %Bool*, align 8
%n = alloca %Int*, align 8
%"ary@28_" = alloca %Array*, align 8
%ret = alloca %MutableString*, align 8
%a = alloca %Array*, align 8
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %minus, align 8
store %Int* %self, %Int** %n, align 8
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %String* [ %result165, %Ret ]
ret %String* %methodResult
IfBegin: ; preds = %alloca_End
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%sk_bool2 = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool2, %Bool** %minus, align 8
br label %"Invoke_Int#-@"
IfElse: ; preds = %"Invoke_Int#<_end"
%"::Void10" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Int#-@_end"
%ifResult = phi %Void* [ %"::Void", %"Invoke_Int#-@_end" ], [ %"::Void10", %IfElse ]
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array11" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %self, %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#-@": ; preds = %IfThen
%addr_vtable3 = getelementptr inbounds %Int, %Int* %self, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [35 x i8*]*
%vtable6 = load [35 x i8*], [35 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [35 x i8*] %vtable6, 20
%func8 = bitcast i8* %func_raw7 to %Int* (%Int*)*
%result9 = call %Int* %func8(%Int* %self)
br label %"Invoke_Int#-@_end"
"Invoke_Int#-@_end": ; preds = %"Invoke_Int#-@"
store %Int* %result9, %Int** %n, align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
"Invoke_Class#_specialize1": ; preds = %IfEnd
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"::Array11", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [25 x i8*]*
%vtable15 = load [25 x i8*], [25 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [25 x i8*] %vtable15, 18
%func17 = bitcast i8* %func_raw16 to %Array* (%Array*, %Class.0*)*
%result18 = call %Array* %func17(%Array* %"::Array11", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %result18, i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 23
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*)*
%result25 = call %Array* %func24(%Array* %result18)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result25, %Array** %"ary@28_", align 8
%"ary@28_26" = load %Array*, %Array** %"ary@28_", align 8
%"::Int" = load %Int*, %Int** @"::Int", align 8
%as = bitcast %Int* %"::Int" to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %"ary@28_26", i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [54 x i8*]*
%vtable30 = load [54 x i8*], [54 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [54 x i8*] %vtable30, 45
%func32 = bitcast i8* %func_raw31 to %Void* (%Array*, %Object*)*
%result33 = call %Void* %func32(%Array* %"ary@28_26", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@28_34" = load %Array*, %Array** %"ary@28_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable35 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable36 = load i8*, i8** %addr_vtable35, align 8
%vtable_ptr37 = bitcast i8* %vtable36 to [25 x i8*]*
%vtable38 = load [25 x i8*], [25 x i8*]* %vtable_ptr37, align 8
%func_raw39 = extractvalue [25 x i8*] %vtable38, 16
%func40 = bitcast i8* %func_raw39 to %Array* (%Array*, %Array*)*
%result41 = call %Array* %func40(%Array* %"::Array", %Array* %"ary@28_34")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable42 = getelementptr inbounds %Array, %Array* %result41, i32 0, i32 0
%vtable43 = load i8*, i8** %addr_vtable42, align 8
%vtable_ptr44 = bitcast i8* %vtable43 to [25 x i8*]*
%vtable45 = load [25 x i8*], [25 x i8*]* %vtable_ptr44, align 8
%func_raw46 = extractvalue [25 x i8*] %vtable45, 23
%func47 = bitcast i8* %func_raw46 to %Array* (%Array*)*
%result48 = call %Array* %func47(%Array* %result41)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result48, %Array** %a, align 8
br label %WhileBegin
WhileBegin: ; preds = %IfEnd99, %"Invoke_Meta:Array#new_end"
%sk_bool49 = call %Bool* @box_bool(i1 true)
%llvm_bool50 = call i1 @unbox_bool(%Bool* %sk_bool49)
%istrue51 = icmp eq i1 %llvm_bool50, true
br i1 %istrue51, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %WhileBegin
%a52 = load %Array*, %Array** %a, align 8
%n53 = load %Int*, %Int** %n, align 8
%sk_int54 = call %Int* @box_int(i64 10)
br label %"Invoke_Int#%"
WhileEnd: ; preds = %IfThen97, %WhileBegin
%"::Void112" = load %Void*, %Void** @"::Void", align 8
%"::MutableString" = load %MutableString*, %MutableString** @"::MutableString", align 8
br label %"Invoke_Meta:MutableString#new"
"Invoke_Int#%": ; preds = %WhileBody
%addr_vtable55 = getelementptr inbounds %Int, %Int* %n53, i32 0, i32 0
%vtable56 = load i8*, i8** %addr_vtable55, align 8
%vtable_ptr57 = bitcast i8* %vtable56 to [35 x i8*]*
%vtable58 = load [35 x i8*], [35 x i8*]* %vtable_ptr57, align 8
%func_raw59 = extractvalue [35 x i8*] %vtable58, 16
%func60 = bitcast i8* %func_raw59 to %Int* (%Int*, %Int*)*
%result61 = call %Int* %func60(%Int* %n53, %Int* %sk_int54)
br label %"Invoke_Int#%_end"
"Invoke_Int#%_end": ; preds = %"Invoke_Int#%"
%sk_int62 = call %Int* @box_int(i64 48)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %"Invoke_Int#%_end"
%addr_vtable63 = getelementptr inbounds %Int, %Int* %result61, i32 0, i32 0
%vtable64 = load i8*, i8** %addr_vtable63, align 8
%vtable_ptr65 = bitcast i8* %vtable64 to [35 x i8*]*
%vtable66 = load [35 x i8*], [35 x i8*]* %vtable_ptr65, align 8
%func_raw67 = extractvalue [35 x i8*] %vtable66, 18
%func68 = bitcast i8* %func_raw67 to %Int* (%Int*, %Int*)*
%result69 = call %Int* %func68(%Int* %result61, %Int* %sk_int62)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
%as70 = bitcast %Int* %result69 to %Object*
br label %"Invoke_Array#push71"
"Invoke_Array#push71": ; preds = %"Invoke_Int#+_end"
%addr_vtable72 = getelementptr inbounds %Array, %Array* %a52, i32 0, i32 0
%vtable73 = load i8*, i8** %addr_vtable72, align 8
%vtable_ptr74 = bitcast i8* %vtable73 to [54 x i8*]*
%vtable75 = load [54 x i8*], [54 x i8*]* %vtable_ptr74, align 8
%func_raw76 = extractvalue [54 x i8*] %vtable75, 45
%func77 = bitcast i8* %func_raw76 to %Void* (%Array*, %Object*)*
%result78 = call %Void* %func77(%Array* %a52, %Object* %as70)
br label %"Invoke_Array#push_end79"
"Invoke_Array#push_end79": ; preds = %"Invoke_Array#push71"
%n80 = load %Int*, %Int** %n, align 8
%sk_int81 = call %Int* @box_int(i64 10)
br label %"Invoke_Int#/"
"Invoke_Int#/": ; preds = %"Invoke_Array#push_end79"
%addr_vtable82 = getelementptr inbounds %Int, %Int* %n80, i32 0, i32 0
%vtable83 = load i8*, i8** %addr_vtable82, align 8
%vtable_ptr84 = bitcast i8* %vtable83 to [35 x i8*]*
%vtable85 = load [35 x i8*], [35 x i8*]* %vtable_ptr84, align 8
%func_raw86 = extractvalue [35 x i8*] %vtable85, 21
%func87 = bitcast i8* %func_raw86 to %Float* (%Int*, %Int*)*
%result88 = call %Float* %func87(%Int* %n80, %Int* %sk_int81)
br label %"Invoke_Int#/_end"
"Invoke_Int#/_end": ; preds = %"Invoke_Int#/"
br label %"Invoke_Float#to_i"
"Invoke_Float#to_i": ; preds = %"Invoke_Int#/_end"
%addr_vtable89 = getelementptr inbounds %Float, %Float* %result88, i32 0, i32 0
%vtable90 = load i8*, i8** %addr_vtable89, align 8
%vtable_ptr91 = bitcast i8* %vtable90 to [25 x i8*]*
%vtable92 = load [25 x i8*], [25 x i8*]* %vtable_ptr91, align 8
%func_raw93 = extractvalue [25 x i8*] %vtable92, 24
%func94 = bitcast i8* %func_raw93 to %Int* (%Float*)*
%result95 = call %Int* %func94(%Float* %result88)
br label %"Invoke_Float#to_i_end"
"Invoke_Float#to_i_end": ; preds = %"Invoke_Float#to_i"
store %Int* %result95, %Int** %n, align 8
br label %IfBegin96
IfBegin96: ; preds = %"Invoke_Float#to_i_end"
%n100 = load %Int*, %Int** %n, align 8
%sk_int101 = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
IfThen97: ; preds = %"Invoke_Int#==_end"
br label %WhileEnd
IfElse98: ; preds = %"Invoke_Int#==_end"
%"::Void111" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd99
IfEnd99: ; preds = %IfElse98
br label %WhileBegin
"Invoke_Int#==": ; preds = %IfBegin96
%addr_vtable102 = getelementptr inbounds %Int, %Int* %n100, i32 0, i32 0
%vtable103 = load i8*, i8** %addr_vtable102, align 8
%vtable_ptr104 = bitcast i8* %vtable103 to [35 x i8*]*
%vtable105 = load [35 x i8*], [35 x i8*]* %vtable_ptr104, align 8
%func_raw106 = extractvalue [35 x i8*] %vtable105, 2
%func107 = bitcast i8* %func_raw106 to %Bool* (%Int*, %Int*)*
%result108 = call %Bool* %func107(%Int* %n100, %Int* %sk_int101)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool109 = call i1 @unbox_bool(%Bool* %result108)
%istrue110 = icmp eq i1 %llvm_bool109, true
br i1 %istrue110, label %IfThen97, label %IfElse98
"Invoke_Meta:MutableString#new": ; preds = %WhileEnd
%addr_vtable113 = getelementptr inbounds %MutableString, %MutableString* %"::MutableString", i32 0, i32 0
%vtable114 = load i8*, i8** %addr_vtable113, align 8
%vtable_ptr115 = bitcast i8* %vtable114 to [23 x i8*]*
%vtable116 = load [23 x i8*], [23 x i8*]* %vtable_ptr115, align 8
%func_raw117 = extractvalue [23 x i8*] %vtable116, 22
%func118 = bitcast i8* %func_raw117 to %MutableString* (%MutableString*)*
%result119 = call %MutableString* %func118(%MutableString* %"::MutableString")
br label %"Invoke_Meta:MutableString#new_end"
"Invoke_Meta:MutableString#new_end": ; preds = %"Invoke_Meta:MutableString#new"
store %MutableString* %result119, %MutableString** %ret, align 8
%sk_int120 = call %Int* @box_int(i64 0)
store %Int* %sk_int120, %Int** %i, align 8
br label %IfBegin121
IfBegin121: ; preds = %"Invoke_Meta:MutableString#new_end"
%minus125 = load %Bool*, %Bool** %minus, align 8
%llvm_bool126 = call i1 @unbox_bool(%Bool* %minus125)
%istrue127 = icmp eq i1 %llvm_bool126, true
br i1 %istrue127, label %IfThen122, label %IfElse123
IfThen122: ; preds = %IfBegin121
%ret128 = load %MutableString*, %MutableString** %ret, align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_54, i32 0, i32 0), i64 1)
br label %"Invoke_MutableString#append"
IfElse123: ; preds = %IfBegin121
%"::Void138" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd124
IfEnd124: ; preds = %IfElse123, %"Invoke_MutableString#append_end"
%ifResult139 = phi %Void* [ %"::Void137", %"Invoke_MutableString#append_end" ], [ %"::Void138", %IfElse123 ]
%a140 = load %Array*, %Array** %a, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Int* (%Fn1*, %Object*)* @"lambda_26_in_Int#to_s" to i8*))
%the_main = bitcast %Int* %self to %Object*
%"::Array141" = load %Array*, %Array** @"::Array", align 8
%result142 = call %Array* @Meta_Array_new(%Array* %"::Array141")
%capture_item = bitcast %Int** %i to %Object*
%_ = call %Void* @Array_push(%Array* %result142, %Object* %capture_item)
%capture_item143 = bitcast %MutableString** %ret to %Object*
%_144 = call %Void* @Array_push(%Array* %result142, %Object* %capture_item143)
%capture_item145 = bitcast %Int** %i to %Object*
%_146 = call %Void* @Array_push(%Array* %result142, %Object* %capture_item145)
%capture_item147 = bitcast %Int** %i to %Object*
%_148 = call %Void* @Array_push(%Array* %result142, %Object* %capture_item147)
%result149 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result142)
%as150 = bitcast %Fn1* %result149 to %Object*
br label %"Invoke_Array#reverse_each"
"Invoke_MutableString#append": ; preds = %IfThen122
%addr_vtable129 = getelementptr inbounds %MutableString, %MutableString* %ret128, i32 0, i32 0
%vtable130 = load i8*, i8** %addr_vtable129, align 8
%vtable_ptr131 = bitcast i8* %vtable130 to [28 x i8*]*
%vtable132 = load [28 x i8*], [28 x i8*]* %vtable_ptr131, align 8
%func_raw133 = extractvalue [28 x i8*] %vtable132, 18
%func134 = bitcast i8* %func_raw133 to %Void* (%MutableString*, %String*)*
%result135 = call %Void* %func134(%MutableString* %ret128, %String* %sk_str)
br label %"Invoke_MutableString#append_end"
"Invoke_MutableString#append_end": ; preds = %"Invoke_MutableString#append"
%sk_int136 = call %Int* @box_int(i64 1)
store %Int* %sk_int136, %Int** %i, align 8
%"::Void137" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd124
"Invoke_Array#reverse_each": ; preds = %IfEnd124
%addr_vtable151 = getelementptr inbounds %Array, %Array* %a140, i32 0, i32 0
%vtable152 = load i8*, i8** %addr_vtable151, align 8
%vtable_ptr153 = bitcast i8* %vtable152 to [54 x i8*]*
%vtable154 = load [54 x i8*], [54 x i8*]* %vtable_ptr153, align 8
%func_raw155 = extractvalue [54 x i8*] %vtable154, 49
%func156 = bitcast i8* %func_raw155 to %Void* (%Array*, %Object*)*
%result157 = call %Void* %func156(%Array* %a140, %Object* %as150)
br label %"Invoke_Array#reverse_each_end"
"Invoke_Array#reverse_each_end": ; preds = %"Invoke_Array#reverse_each"
%ret158 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#_unsafe_to_s"
"Invoke_MutableString#_unsafe_to_s": ; preds = %"Invoke_Array#reverse_each_end"
%addr_vtable159 = getelementptr inbounds %MutableString, %MutableString* %ret158, i32 0, i32 0
%vtable160 = load i8*, i8** %addr_vtable159, align 8
%vtable_ptr161 = bitcast i8* %vtable160 to [28 x i8*]*
%vtable162 = load [28 x i8*], [28 x i8*]* %vtable_ptr161, align 8
%func_raw163 = extractvalue [28 x i8*] %vtable162, 17
%func164 = bitcast i8* %func_raw163 to %String* (%MutableString*)*
%result165 = call %String* %func164(%MutableString* %ret158)
br label %"Invoke_MutableString#_unsafe_to_s_end"
"Invoke_MutableString#_unsafe_to_s_end": ; preds = %"Invoke_MutableString#_unsafe_to_s"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#_unsafe_to_s_end"
br label %End
}
define %Void* @Int_upto(%Int* %self, %Int* %n, %Fn1* %f) {
alloca:
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
store %Int* %self, %Int** %i, align 8
br label %WhileBegin
End: ; preds = %Ret, %Invoke_lambda
%"::Void18" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void18"
WhileBegin: ; preds = %"Invoke_Int#+_end", %alloca_End
%i1 = load %Int*, %Int** %i, align 8
br label %"Invoke_Int#<="
"Invoke_Int#<=": ; preds = %WhileBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i1, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 1
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i1, %Int* %n)
br label %"Invoke_Int#<=_end"
"Invoke_Int#<=_end": ; preds = %"Invoke_Int#<="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<=_end"
%i3 = load %Int*, %Int** %i, align 8
br label %Invoke_lambda
WhileEnd: ; preds = %"Invoke_Int#<=_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void17" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Invoke_lambda: ; preds = %WhileBody
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %Int*)*
%result4 = call %Void* %0(%Fn1* %f, %Int* %i3)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int = call %Int* @box_int(i64 1)
%result5 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int)
%llvm_bool6 = call i1 @unbox_bool(%Bool* %result5)
%istrue7 = icmp eq i1 %llvm_bool6, true
br i1 %istrue7, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%i8 = load %Int*, %Int** %i, align 8
%sk_int9 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %Invoke_lambda_end
%addr_vtable10 = getelementptr inbounds %Int, %Int* %i8, i32 0, i32 0
%vtable11 = load i8*, i8** %addr_vtable10, align 8
%vtable_ptr12 = bitcast i8* %vtable11 to [35 x i8*]*
%vtable13 = load [35 x i8*], [35 x i8*]* %vtable_ptr12, align 8
%func_raw14 = extractvalue [35 x i8*] %vtable13, 18
%func15 = bitcast i8* %func_raw14 to %Int* (%Int*, %Int*)*
%result16 = call %Int* %func15(%Int* %i8, %Int* %sk_int9)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result16, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
declare %Int* @Int_uminus_(%Int*)
declare %Int* @Int_add_(%Int*, %Int*)
declare %Int* @Int_sub_(%Int*, %Int*)
declare %Int* @Int_mul_(%Int*, %Int*)
declare %Float* @Int_div_(%Int*, %Int*)
declare %Int* @Int_mod_(%Int*, %Int*)
declare %Int* @Int_and(%Int*, %Int*)
declare %Int* @Int_or(%Int*, %Int*)
declare %Int* @Int_xor(%Int*, %Int*)
declare %Int* @Int_lshift(%Int*, %Int*)
declare %Int* @Int_rshift(%Int*, %Int*)
declare %Bool* @Int_lt_(%Int*, %Int*)
declare %Bool* @Int_le_(%Int*, %Int*)
declare %Bool* @Int_gt_(%Int*, %Int*)
declare %Bool* @Int_ge_(%Int*, %Int*)
declare %Bool* @Int_eq_(%Int*, %Int*)
declare %Float* @Int_to__f(%Int*)
define %Void* @MutableString_initialize(%MutableString* %self) {
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"::MutableString::INITIAL_STR_CAPA" = load %Int*, %Int** @"::MutableString::INITIAL_STR_CAPA", align 8
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
End: ; preds = %Ret
%"::Void11" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void11"
"Invoke_Int#+": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"::MutableString::INITIAL_STR_CAPA", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %"::MutableString::INITIAL_STR_CAPA", %Int* %sk_int)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc": ; preds = %"Invoke_Int#+_end"
%addr_vtable2 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [25 x i8*]*
%vtable5 = load [25 x i8*], [25 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [25 x i8*] %vtable5, 22
%func7 = bitcast i8* %func_raw6 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %Int*)*
%result8 = call %"Shiika::Internal::Ptr"* %func7(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %Int* %result)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
store %"Shiika::Internal::Ptr"* %result8, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
%"::MutableString::INITIAL_STR_CAPA9" = load %Int*, %Int** @"::MutableString::INITIAL_STR_CAPA", align 8
%"addr_@capa" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 3
store %Int* %"::MutableString::INITIAL_STR_CAPA9", %Int** %"addr_@capa", align 8
%sk_int10 = call %Int* @box_int(i64 0)
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
store %Int* %sk_int10, %Int** %"addr_@bytesize", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
br label %End
}
define %"Shiika::Internal::Ptr"* @MutableString_ptr(%MutableString* %self) {
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
ret %"Shiika::Internal::Ptr"* %"@ptr"
}
define %"Shiika::Internal::Ptr"* @_set_MutableString_ptr(%MutableString* %self, %"Shiika::Internal::Ptr"* %ptr) {
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
store %"Shiika::Internal::Ptr"* %ptr, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
ret %"Shiika::Internal::Ptr"* %ptr
}
define %Int* @MutableString_capa(%MutableString* %self) {
%"addr_@capa" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 3
%"@capa" = load %Int*, %Int** %"addr_@capa", align 8
ret %Int* %"@capa"
}
define %Int* @_set_MutableString_capa(%MutableString* %self, %Int* %capa) {
%"addr_@capa" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 3
store %Int* %capa, %Int** %"addr_@capa", align 8
ret %Int* %capa
}
define %Int* @MutableString_bytesize(%MutableString* %self) {
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
ret %Int* %"@bytesize"
}
define %Int* @_set_MutableString_bytesize(%MutableString* %self, %Int* %bytesize) {
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
store %Int* %bytesize, %Int** %"addr_@bytesize", align 8
ret %Int* %bytesize
}
define %Int* @MutableString_nth__byte(%MutableString* %self, %Int* %n) {
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Int* [ %result46, %Ret ]
ret %Int* %methodResult
IfBegin: ; preds = %0
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%as = bitcast %MutableString* %self to %Object*
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str_60, i32 0, i32 0), i64 39)
br label %"Invoke_Object#panic"
IfElse: ; preds = %"Invoke_Int#<_end"
%"::Void8" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse
br label %IfBegin9
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %n, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %n, %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Object#panic": ; preds = %IfThen
%addr_vtable2 = getelementptr inbounds %Object, %Object* %as, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [16 x i8*]*
%vtable5 = load [16 x i8*], [16 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [16 x i8*] %vtable5, 12
%func7 = bitcast i8* %func_raw6 to void (%Object*, %String*)*
call void %func7(%Object* %as, %String* %sk_str)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
IfBegin9: ; preds = %IfEnd
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#>="
IfThen10: ; preds = %"Invoke_Int#>=_end"
%as22 = bitcast %MutableString* %self to %Object*
%sk_str23 = call %String* @gen_literal_string(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str_61, i32 0, i32 0), i64 34)
br label %"Invoke_Object#panic24"
IfElse11: ; preds = %"Invoke_Int#>=_end"
%"::Void32" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd12
IfEnd12: ; preds = %IfElse11
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Int#>=": ; preds = %IfBegin9
%addr_vtable13 = getelementptr inbounds %Int, %Int* %n, i32 0, i32 0
%vtable14 = load i8*, i8** %addr_vtable13, align 8
%vtable_ptr15 = bitcast i8* %vtable14 to [35 x i8*]*
%vtable16 = load [35 x i8*], [35 x i8*]* %vtable_ptr15, align 8
%func_raw17 = extractvalue [35 x i8*] %vtable16, 4
%func18 = bitcast i8* %func_raw17 to %Bool* (%Int*, %Int*)*
%result19 = call %Bool* %func18(%Int* %n, %Int* %"@bytesize")
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool20 = call i1 @unbox_bool(%Bool* %result19)
%istrue21 = icmp eq i1 %llvm_bool20, true
br i1 %istrue21, label %IfThen10, label %IfElse11
"Invoke_Object#panic24": ; preds = %IfThen10
%addr_vtable25 = getelementptr inbounds %Object, %Object* %as22, i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [16 x i8*]*
%vtable28 = load [16 x i8*], [16 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [16 x i8*] %vtable28, 12
%func30 = bitcast i8* %func_raw29 to void (%Object*, %String*)*
call void %func30(%Object* %as22, %String* %sk_str23)
%"::Void31" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_Shiika::Internal::Ptr#+": ; preds = %IfEnd12
%addr_vtable33 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@ptr", i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [21 x i8*]*
%vtable36 = load [21 x i8*], [21 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [21 x i8*] %vtable36, 16
%func38 = bitcast i8* %func_raw37 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result39 = call %"Shiika::Internal::Ptr"* %func38(%"Shiika::Internal::Ptr"* %"@ptr", %Int* %n)
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
br label %"Invoke_Shiika::Internal::Ptr#read"
"Invoke_Shiika::Internal::Ptr#read": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable40 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %result39, i32 0, i32 0
%vtable41 = load i8*, i8** %addr_vtable40, align 8
%vtable_ptr42 = bitcast i8* %vtable41 to [21 x i8*]*
%vtable43 = load [21 x i8*], [21 x i8*]* %vtable_ptr42, align 8
%func_raw44 = extractvalue [21 x i8*] %vtable43, 18
%func45 = bitcast i8* %func_raw44 to %Int* (%"Shiika::Internal::Ptr"*)*
%result46 = call %Int* %func45(%"Shiika::Internal::Ptr"* %result39)
br label %"Invoke_Shiika::Internal::Ptr#read_end"
"Invoke_Shiika::Internal::Ptr#read_end": ; preds = %"Invoke_Shiika::Internal::Ptr#read"
br label %Ret
Ret: ; preds = %"Invoke_Shiika::Internal::Ptr#read_end"
br label %End
}
define %Void* @MutableString_append(%MutableString* %self, %String* %other) {
alloca:
%new_bytesize = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_String#bytesize"
End: ; preds = %Ret
%"::Void51" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void51"
"Invoke_String#bytesize": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %String, %String* %other, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 19
%func = bitcast i8* %func_raw to %Int* (%String*)*
%result = call %Int* %func(%String* %other)
br label %"Invoke_String#bytesize_end"
"Invoke_String#bytesize_end": ; preds = %"Invoke_String#bytesize"
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %"Invoke_String#bytesize_end"
%addr_vtable2 = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 18
%func7 = bitcast i8* %func_raw6 to %Int* (%Int*, %Int*)*
%result8 = call %Int* %func7(%Int* %"@bytesize", %Int* %result)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result8, %Int** %new_bytesize, align 8
%new_bytesize9 = load %Int*, %Int** %new_bytesize, align 8
br label %"Invoke_MutableString#_realloc_if_needed"
"Invoke_MutableString#_realloc_if_needed": ; preds = %"Invoke_Int#+_end"
%addr_vtable10 = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 0
%vtable11 = load i8*, i8** %addr_vtable10, align 8
%vtable_ptr12 = bitcast i8* %vtable11 to [28 x i8*]*
%vtable13 = load [28 x i8*], [28 x i8*]* %vtable_ptr12, align 8
%func_raw14 = extractvalue [28 x i8*] %vtable13, 16
%func15 = bitcast i8* %func_raw14 to %Void* (%MutableString*, %Int*)*
%result16 = call %Void* %func15(%MutableString* %self, %Int* %new_bytesize9)
br label %"Invoke_MutableString#_realloc_if_needed_end"
"Invoke_MutableString#_realloc_if_needed_end": ; preds = %"Invoke_MutableString#_realloc_if_needed"
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
%"addr_@bytesize17" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize18" = load %Int*, %Int** %"addr_@bytesize17", align 8
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Shiika::Internal::Ptr#+": ; preds = %"Invoke_MutableString#_realloc_if_needed_end"
%addr_vtable19 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@ptr", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [21 x i8*]*
%vtable22 = load [21 x i8*], [21 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [21 x i8*] %vtable22, 16
%func24 = bitcast i8* %func_raw23 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result25 = call %"Shiika::Internal::Ptr"* %func24(%"Shiika::Internal::Ptr"* %"@ptr", %Int* %"@bytesize18")
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
br label %"Invoke_String#ptr"
"Invoke_String#ptr": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable26 = getelementptr inbounds %String, %String* %other, i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [35 x i8*]*
%vtable29 = load [35 x i8*], [35 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [35 x i8*] %vtable29, 28
%func31 = bitcast i8* %func_raw30 to %"Shiika::Internal::Ptr"* (%String*)*
%result32 = call %"Shiika::Internal::Ptr"* %func31(%String* %other)
br label %"Invoke_String#ptr_end"
"Invoke_String#ptr_end": ; preds = %"Invoke_String#ptr"
br label %"Invoke_String#bytesize33"
"Invoke_String#bytesize33": ; preds = %"Invoke_String#ptr_end"
%addr_vtable34 = getelementptr inbounds %String, %String* %other, i32 0, i32 0
%vtable35 = load i8*, i8** %addr_vtable34, align 8
%vtable_ptr36 = bitcast i8* %vtable35 to [35 x i8*]*
%vtable37 = load [35 x i8*], [35 x i8*]* %vtable_ptr36, align 8
%func_raw38 = extractvalue [35 x i8*] %vtable37, 19
%func39 = bitcast i8* %func_raw38 to %Int* (%String*)*
%result40 = call %Int* %func39(%String* %other)
br label %"Invoke_String#bytesize_end41"
"Invoke_String#bytesize_end41": ; preds = %"Invoke_String#bytesize33"
br label %"Invoke_Meta:Shiika::Internal::Memory#memcpy"
"Invoke_Meta:Shiika::Internal::Memory#memcpy": ; preds = %"Invoke_String#bytesize_end41"
%addr_vtable42 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable43 = load i8*, i8** %addr_vtable42, align 8
%vtable_ptr44 = bitcast i8* %vtable43 to [25 x i8*]*
%vtable45 = load [25 x i8*], [25 x i8*]* %vtable_ptr44, align 8
%func_raw46 = extractvalue [25 x i8*] %vtable45, 24
%func47 = bitcast i8* %func_raw46 to %Void* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"*, %Int*)*
%result48 = call %Void* %func47(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %"Shiika::Internal::Ptr"* %result25, %"Shiika::Internal::Ptr"* %result32, %Int* %result40)
br label %"Invoke_Meta:Shiika::Internal::Memory#memcpy_end"
"Invoke_Meta:Shiika::Internal::Memory#memcpy_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#memcpy"
%new_bytesize49 = load %Int*, %Int** %new_bytesize, align 8
%"addr_@bytesize50" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
store %Int* %new_bytesize49, %Int** %"addr_@bytesize50", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Meta:Shiika::Internal::Memory#memcpy_end"
br label %End
}
define %Void* @MutableString_append__byte(%MutableString* %self, %Int* %b) {
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
End: ; preds = %Ret
%"::Void29" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void29"
"Invoke_Int#+": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %"@bytesize", %Int* %sk_int)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
%"addr_@bytesize2" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
store %Int* %result, %Int** %"addr_@bytesize2", align 8
%"addr_@bytesize3" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize4" = load %Int*, %Int** %"addr_@bytesize3", align 8
br label %"Invoke_MutableString#_realloc_if_needed"
"Invoke_MutableString#_realloc_if_needed": ; preds = %"Invoke_Int#+_end"
%addr_vtable5 = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 0
%vtable6 = load i8*, i8** %addr_vtable5, align 8
%vtable_ptr7 = bitcast i8* %vtable6 to [28 x i8*]*
%vtable8 = load [28 x i8*], [28 x i8*]* %vtable_ptr7, align 8
%func_raw9 = extractvalue [28 x i8*] %vtable8, 16
%func10 = bitcast i8* %func_raw9 to %Void* (%MutableString*, %Int*)*
%result11 = call %Void* %func10(%MutableString* %self, %Int* %"@bytesize4")
br label %"Invoke_MutableString#_realloc_if_needed_end"
"Invoke_MutableString#_realloc_if_needed_end": ; preds = %"Invoke_MutableString#_realloc_if_needed"
%"addr_@bytesize12" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize13" = load %Int*, %Int** %"addr_@bytesize12", align 8
%sk_int14 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_MutableString#_realloc_if_needed_end"
%addr_vtable15 = getelementptr inbounds %Int, %Int* %"@bytesize13", i32 0, i32 0
%vtable16 = load i8*, i8** %addr_vtable15, align 8
%vtable_ptr17 = bitcast i8* %vtable16 to [35 x i8*]*
%vtable18 = load [35 x i8*], [35 x i8*]* %vtable_ptr17, align 8
%func_raw19 = extractvalue [35 x i8*] %vtable18, 19
%func20 = bitcast i8* %func_raw19 to %Int* (%Int*, %Int*)*
%result21 = call %Int* %func20(%Int* %"@bytesize13", %Int* %sk_int14)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
br label %"Invoke_MutableString#write_byte"
"Invoke_MutableString#write_byte": ; preds = %"Invoke_Int#-_end"
%addr_vtable22 = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 0
%vtable23 = load i8*, i8** %addr_vtable22, align 8
%vtable_ptr24 = bitcast i8* %vtable23 to [28 x i8*]*
%vtable25 = load [28 x i8*], [28 x i8*]* %vtable_ptr24, align 8
%func_raw26 = extractvalue [28 x i8*] %vtable25, 27
%func27 = bitcast i8* %func_raw26 to %Void* (%MutableString*, %Int*, %Int*)*
%result28 = call %Void* %func27(%MutableString* %self, %Int* %result21, %Int* %b)
br label %"Invoke_MutableString#write_byte_end"
"Invoke_MutableString#write_byte_end": ; preds = %"Invoke_MutableString#write_byte"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_MutableString#write_byte_end"
br label %End
}
define %String* @MutableString_to__s(%MutableString* %self) {
alloca:
%newptr = alloca %"Shiika::Internal::Ptr"*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
End: ; preds = %Ret
%methodResult = phi %String* [ %result29, %Ret ]
ret %String* %methodResult
"Invoke_Int#+": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %"@bytesize", %Int* %sk_int)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc": ; preds = %"Invoke_Int#+_end"
%addr_vtable2 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [25 x i8*]*
%vtable5 = load [25 x i8*], [25 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [25 x i8*] %vtable5, 22
%func7 = bitcast i8* %func_raw6 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %Int*)*
%result8 = call %"Shiika::Internal::Ptr"* %func7(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %Int* %result)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
store %"Shiika::Internal::Ptr"* %result8, %"Shiika::Internal::Ptr"** %newptr, align 8
%"::Shiika::Internal::Memory9" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%newptr10 = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %newptr, align 8
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
%"addr_@bytesize11" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize12" = load %Int*, %Int** %"addr_@bytesize11", align 8
br label %"Invoke_Meta:Shiika::Internal::Memory#memcpy"
"Invoke_Meta:Shiika::Internal::Memory#memcpy": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
%addr_vtable13 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory9", i32 0, i32 0
%vtable14 = load i8*, i8** %addr_vtable13, align 8
%vtable_ptr15 = bitcast i8* %vtable14 to [25 x i8*]*
%vtable16 = load [25 x i8*], [25 x i8*]* %vtable_ptr15, align 8
%func_raw17 = extractvalue [25 x i8*] %vtable16, 24
%func18 = bitcast i8* %func_raw17 to %Void* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"*, %Int*)*
%result19 = call %Void* %func18(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory9", %"Shiika::Internal::Ptr"* %newptr10, %"Shiika::Internal::Ptr"* %"@ptr", %Int* %"@bytesize12")
br label %"Invoke_Meta:Shiika::Internal::Memory#memcpy_end"
"Invoke_Meta:Shiika::Internal::Memory#memcpy_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#memcpy"
%"::String" = load %String*, %String** @"::String", align 8
%newptr20 = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %newptr, align 8
%"addr_@bytesize21" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize22" = load %Int*, %Int** %"addr_@bytesize21", align 8
br label %"Invoke_Meta:String#new"
"Invoke_Meta:String#new": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#memcpy_end"
%addr_vtable23 = getelementptr inbounds %String, %String* %"::String", i32 0, i32 0
%vtable24 = load i8*, i8** %addr_vtable23, align 8
%vtable_ptr25 = bitcast i8* %vtable24 to [23 x i8*]*
%vtable26 = load [23 x i8*], [23 x i8*]* %vtable_ptr25, align 8
%func_raw27 = extractvalue [23 x i8*] %vtable26, 22
%func28 = bitcast i8* %func_raw27 to %String* (%String*, %"Shiika::Internal::Ptr"*, %Int*)*
%result29 = call %String* %func28(%String* %"::String", %"Shiika::Internal::Ptr"* %newptr20, %Int* %"@bytesize22")
br label %"Invoke_Meta:String#new_end"
"Invoke_Meta:String#new_end": ; preds = %"Invoke_Meta:String#new"
br label %Ret
Ret: ; preds = %"Invoke_Meta:String#new_end"
br label %End
}
define %Void* @MutableString_write__byte(%MutableString* %self, %Int* %nth, %Int* %byte) {
br label %IfBegin
End: ; preds = %Ret
%"::Void107" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void107"
IfBegin: ; preds = %0
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%as = bitcast %MutableString* %self to %Object*
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str_62, i32 0, i32 0), i64 41)
br label %"Invoke_Object#panic"
IfElse: ; preds = %"Invoke_Int#<_end"
%"::Void8" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse
br label %IfBegin9
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %nth, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %nth, %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Object#panic": ; preds = %IfThen
%addr_vtable2 = getelementptr inbounds %Object, %Object* %as, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [16 x i8*]*
%vtable5 = load [16 x i8*], [16 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [16 x i8*] %vtable5, 12
%func7 = bitcast i8* %func_raw6 to void (%Object*, %String*)*
call void %func7(%Object* %as, %String* %sk_str)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
IfBegin9: ; preds = %IfEnd
%sk_int13 = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<14"
IfThen10: ; preds = %"Invoke_Int#<_end22"
%as25 = bitcast %MutableString* %self to %Object*
%sk_str26 = call %String* @gen_literal_string(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @str_63, i32 0, i32 0), i64 40)
br label %"Invoke_Object#panic27"
IfElse11: ; preds = %"Invoke_Int#<_end22"
%"::Void35" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd12
IfEnd12: ; preds = %IfElse11
br label %IfBegin36
"Invoke_Int#<14": ; preds = %IfBegin9
%addr_vtable15 = getelementptr inbounds %Int, %Int* %byte, i32 0, i32 0
%vtable16 = load i8*, i8** %addr_vtable15, align 8
%vtable_ptr17 = bitcast i8* %vtable16 to [35 x i8*]*
%vtable18 = load [35 x i8*], [35 x i8*]* %vtable_ptr17, align 8
%func_raw19 = extractvalue [35 x i8*] %vtable18, 0
%func20 = bitcast i8* %func_raw19 to %Bool* (%Int*, %Int*)*
%result21 = call %Bool* %func20(%Int* %byte, %Int* %sk_int13)
br label %"Invoke_Int#<_end22"
"Invoke_Int#<_end22": ; preds = %"Invoke_Int#<14"
%llvm_bool23 = call i1 @unbox_bool(%Bool* %result21)
%istrue24 = icmp eq i1 %llvm_bool23, true
br i1 %istrue24, label %IfThen10, label %IfElse11
"Invoke_Object#panic27": ; preds = %IfThen10
%addr_vtable28 = getelementptr inbounds %Object, %Object* %as25, i32 0, i32 0
%vtable29 = load i8*, i8** %addr_vtable28, align 8
%vtable_ptr30 = bitcast i8* %vtable29 to [16 x i8*]*
%vtable31 = load [16 x i8*], [16 x i8*]* %vtable_ptr30, align 8
%func_raw32 = extractvalue [16 x i8*] %vtable31, 12
%func33 = bitcast i8* %func_raw32 to void (%Object*, %String*)*
call void %func33(%Object* %as25, %String* %sk_str26)
%"::Void34" = load %Void*, %Void** @"::Void", align 8
unreachable
IfBegin36: ; preds = %IfEnd12
%sk_int40 = call %Int* @box_int(i64 256)
br label %"Invoke_Int#>="
IfThen37: ; preds = %"Invoke_Int#>=_end"
%as50 = bitcast %MutableString* %self to %Object*
%sk_str51 = call %String* @gen_literal_string(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str_64, i32 0, i32 0), i64 41)
br label %"Invoke_Object#panic52"
IfElse38: ; preds = %"Invoke_Int#>=_end"
%"::Void60" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd39
IfEnd39: ; preds = %IfElse38
br label %"Invoke_MutableString#_realloc_if_needed"
"Invoke_Int#>=": ; preds = %IfBegin36
%addr_vtable41 = getelementptr inbounds %Int, %Int* %byte, i32 0, i32 0
%vtable42 = load i8*, i8** %addr_vtable41, align 8
%vtable_ptr43 = bitcast i8* %vtable42 to [35 x i8*]*
%vtable44 = load [35 x i8*], [35 x i8*]* %vtable_ptr43, align 8
%func_raw45 = extractvalue [35 x i8*] %vtable44, 4
%func46 = bitcast i8* %func_raw45 to %Bool* (%Int*, %Int*)*
%result47 = call %Bool* %func46(%Int* %byte, %Int* %sk_int40)
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool48 = call i1 @unbox_bool(%Bool* %result47)
%istrue49 = icmp eq i1 %llvm_bool48, true
br i1 %istrue49, label %IfThen37, label %IfElse38
"Invoke_Object#panic52": ; preds = %IfThen37
%addr_vtable53 = getelementptr inbounds %Object, %Object* %as50, i32 0, i32 0
%vtable54 = load i8*, i8** %addr_vtable53, align 8
%vtable_ptr55 = bitcast i8* %vtable54 to [16 x i8*]*
%vtable56 = load [16 x i8*], [16 x i8*]* %vtable_ptr55, align 8
%func_raw57 = extractvalue [16 x i8*] %vtable56, 12
%func58 = bitcast i8* %func_raw57 to void (%Object*, %String*)*
call void %func58(%Object* %as50, %String* %sk_str51)
%"::Void59" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_MutableString#_realloc_if_needed": ; preds = %IfEnd39
%addr_vtable61 = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 0
%vtable62 = load i8*, i8** %addr_vtable61, align 8
%vtable_ptr63 = bitcast i8* %vtable62 to [28 x i8*]*
%vtable64 = load [28 x i8*], [28 x i8*]* %vtable_ptr63, align 8
%func_raw65 = extractvalue [28 x i8*] %vtable64, 16
%func66 = bitcast i8* %func_raw65 to %Void* (%MutableString*, %Int*)*
%result67 = call %Void* %func66(%MutableString* %self, %Int* %nth)
br label %"Invoke_MutableString#_realloc_if_needed_end"
"Invoke_MutableString#_realloc_if_needed_end": ; preds = %"Invoke_MutableString#_realloc_if_needed"
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Shiika::Internal::Ptr#+": ; preds = %"Invoke_MutableString#_realloc_if_needed_end"
%addr_vtable68 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@ptr", i32 0, i32 0
%vtable69 = load i8*, i8** %addr_vtable68, align 8
%vtable_ptr70 = bitcast i8* %vtable69 to [21 x i8*]*
%vtable71 = load [21 x i8*], [21 x i8*]* %vtable_ptr70, align 8
%func_raw72 = extractvalue [21 x i8*] %vtable71, 16
%func73 = bitcast i8* %func_raw72 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result74 = call %"Shiika::Internal::Ptr"* %func73(%"Shiika::Internal::Ptr"* %"@ptr", %Int* %nth)
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
br label %"Invoke_Shiika::Internal::Ptr#write"
"Invoke_Shiika::Internal::Ptr#write": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable75 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %result74, i32 0, i32 0
%vtable76 = load i8*, i8** %addr_vtable75, align 8
%vtable_ptr77 = bitcast i8* %vtable76 to [21 x i8*]*
%vtable78 = load [21 x i8*], [21 x i8*]* %vtable_ptr77, align 8
%func_raw79 = extractvalue [21 x i8*] %vtable78, 20
%func80 = bitcast i8* %func_raw79 to %Void* (%"Shiika::Internal::Ptr"*, %Int*)*
%result81 = call %Void* %func80(%"Shiika::Internal::Ptr"* %result74, %Int* %byte)
br label %"Invoke_Shiika::Internal::Ptr#write_end"
"Invoke_Shiika::Internal::Ptr#write_end": ; preds = %"Invoke_Shiika::Internal::Ptr#write"
br label %IfBegin82
IfBegin82: ; preds = %"Invoke_Shiika::Internal::Ptr#write_end"
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#<="
IfThen83: ; preds = %"Invoke_Int#<=_end"
%sk_int95 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
IfElse84: ; preds = %"Invoke_Int#<=_end"
%"::Void105" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd85
IfEnd85: ; preds = %IfElse84, %"Invoke_Int#+_end"
%ifResult = phi %Void* [ %"::Void104", %"Invoke_Int#+_end" ], [ %"::Void105", %IfElse84 ]
%"::Void106" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Int#<=": ; preds = %IfBegin82
%addr_vtable86 = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable87 = load i8*, i8** %addr_vtable86, align 8
%vtable_ptr88 = bitcast i8* %vtable87 to [35 x i8*]*
%vtable89 = load [35 x i8*], [35 x i8*]* %vtable_ptr88, align 8
%func_raw90 = extractvalue [35 x i8*] %vtable89, 1
%func91 = bitcast i8* %func_raw90 to %Bool* (%Int*, %Int*)*
%result92 = call %Bool* %func91(%Int* %"@bytesize", %Int* %nth)
br label %"Invoke_Int#<=_end"
"Invoke_Int#<=_end": ; preds = %"Invoke_Int#<="
%llvm_bool93 = call i1 @unbox_bool(%Bool* %result92)
%istrue94 = icmp eq i1 %llvm_bool93, true
br i1 %istrue94, label %IfThen83, label %IfElse84
"Invoke_Int#+": ; preds = %IfThen83
%addr_vtable96 = getelementptr inbounds %Int, %Int* %nth, i32 0, i32 0
%vtable97 = load i8*, i8** %addr_vtable96, align 8
%vtable_ptr98 = bitcast i8* %vtable97 to [35 x i8*]*
%vtable99 = load [35 x i8*], [35 x i8*]* %vtable_ptr98, align 8
%func_raw100 = extractvalue [35 x i8*] %vtable99, 18
%func101 = bitcast i8* %func_raw100 to %Int* (%Int*, %Int*)*
%result102 = call %Int* %func101(%Int* %nth, %Int* %sk_int95)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
%"addr_@bytesize103" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
store %Int* %result102, %Int** %"addr_@bytesize103", align 8
%"::Void104" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd85
Ret: ; preds = %IfEnd85
br label %End
}
define %Void* @MutableString___realloc__if__needed(%MutableString* %self, %Int* %new_bytesize) {
br label %IfBegin
End: ; preds = %Ret
%"::Void20" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void20"
IfBegin: ; preds = %0
%"addr_@capa" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 3
%"@capa" = load %Int*, %Int** %"addr_@capa", align 8
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
%sk_int = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
IfElse: ; preds = %"Invoke_Int#<_end"
%"::Void18" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end"
%ifResult = phi %Void* [ %"::Void", %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end" ], [ %"::Void18", %IfElse ]
%"::Void19" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %"@capa", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %"@capa", %Int* %new_bytesize)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#+": ; preds = %IfThen
%addr_vtable2 = getelementptr inbounds %Int, %Int* %new_bytesize, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 18
%func7 = bitcast i8* %func_raw6 to %Int* (%Int*, %Int*)*
%result8 = call %Int* %func7(%Int* %new_bytesize, %Int* %sk_int)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_realloc": ; preds = %"Invoke_Int#+_end"
%addr_vtable9 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable10 = load i8*, i8** %addr_vtable9, align 8
%vtable_ptr11 = bitcast i8* %vtable10 to [25 x i8*]*
%vtable12 = load [25 x i8*], [25 x i8*]* %vtable_ptr11, align 8
%func_raw13 = extractvalue [25 x i8*] %vtable12, 23
%func14 = bitcast i8* %func_raw13 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %Int*)*
%result15 = call %"Shiika::Internal::Ptr"* %func14(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %"Shiika::Internal::Ptr"* %"@ptr", %Int* %result8)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_realloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_realloc"
%"addr_@ptr16" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
store %"Shiika::Internal::Ptr"* %result15, %"Shiika::Internal::Ptr"** %"addr_@ptr16", align 8
%"addr_@capa17" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 3
store %Int* %new_bytesize, %Int** %"addr_@capa17", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %String* @MutableString___unsafe__to__s(%MutableString* %self) {
%"::String" = load %String*, %String** @"::String", align 8
%"addr_@ptr" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
%"addr_@bytesize" = getelementptr inbounds %MutableString, %MutableString* %self, i32 0, i32 4
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Meta:String#new"
End: ; preds = %Ret
%methodResult = phi %String* [ %result, %Ret ]
ret %String* %methodResult
"Invoke_Meta:String#new": ; preds = %0
%addr_vtable = getelementptr inbounds %String, %String* %"::String", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 22
%func = bitcast i8* %func_raw to %String* (%String*, %"Shiika::Internal::Ptr"*, %Int*)*
%result = call %String* %func(%String* %"::String", %"Shiika::Internal::Ptr"* %"@ptr", %Int* %"@bytesize")
br label %"Invoke_Meta:String#new_end"
"Invoke_Meta:String#new_end": ; preds = %"Invoke_Meta:String#new"
br label %Ret
Ret: ; preds = %"Invoke_Meta:String#new_end"
br label %End
}
define %Float* @Meta_Float_new(%Float* %self) {
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Float* getelementptr (%Float, %Float* null, i32 1) to i64))
%addr = bitcast i8* %mem to %Float*
%addr_vtable = getelementptr inbounds %Float, %Float* %addr, i32 0, i32 0
store i8* bitcast ([25 x i8*]* @shiika_vtable_Float to i8*), i8** %addr_vtable, align 8
%class = bitcast %Float* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Float, %Float* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Float* %addr to %Object*
%1 = call %Void* @Object_initialize(%Object* %obj_as_super)
ret %Float* %addr
}
define %Triple* @Meta_Triple_new(%Triple* %self, %Object* %"@fst", %Object* %"@snd", %Object* %"@thd") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%addr = bitcast i8* %mem to %Triple*
%addr_vtable = getelementptr inbounds %Triple, %Triple* %addr, i32 0, i32 0
store i8* bitcast ([22 x i8*]* @shiika_vtable_Triple to i8*), i8** %addr_vtable, align 8
%class = bitcast %Triple* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Triple, %Triple* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Triple_initialize(%Triple* %addr, %Object* %"@fst", %Object* %"@snd", %Object* %"@thd")
ret %Triple* %addr
}
define %Void* @Maybe_Some_initialize(%"Maybe::Some"* %self, %Object* %value) {
%addr_value = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %self, i32 0, i32 2
store %Object* %value, %Object** %addr_value, align 8
br label %Ret
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
Ret: ; preds = %0
%as = bitcast %Object* %value to %Void*
br label %End
}
define %Object* @Maybe_Some_value(%"Maybe::Some"* %self) {
%addr_value = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %self, i32 0, i32 2
%value = load %Object*, %Object** %addr_value, align 8
ret %Object* %value
}
define %Object* @_set_Maybe_Some_value(%"Maybe::Some"* %self, %Object* %value) {
%addr_value = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %self, i32 0, i32 2
store %Object* %value, %Object** %addr_value, align 8
ret %Object* %value
}
define %Void* @Result_Fail_initialize(%"Result::Fail"* %self, %Object* %err) {
%addr_err = getelementptr inbounds %"Result::Fail", %"Result::Fail"* %self, i32 0, i32 2
store %Object* %err, %Object** %addr_err, align 8
br label %Ret
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
Ret: ; preds = %0
%as = bitcast %Object* %err to %Void*
br label %End
}
define %Object* @Result_Fail_err(%"Result::Fail"* %self) {
%addr_err = getelementptr inbounds %"Result::Fail", %"Result::Fail"* %self, i32 0, i32 2
%err = load %Object*, %Object** %addr_err, align 8
ret %Object* %err
}
define %Object* @_set_Result_Fail_err(%"Result::Fail"* %self, %Object* %err) {
%addr_err = getelementptr inbounds %"Result::Fail", %"Result::Fail"* %self, i32 0, i32 2
store %Object* %err, %Object** %addr_err, align 8
ret %Object* %err
}
define %Void* @Pair_initialize(%Pair* %self, %Object* %"@fst", %Object* %"@snd") {
%"addr_@fst" = getelementptr inbounds %Pair, %Pair* %self, i32 0, i32 2
store %Object* %"@fst", %Object** %"addr_@fst", align 8
%"addr_@snd" = getelementptr inbounds %Pair, %Pair* %self, i32 0, i32 3
store %Object* %"@snd", %Object** %"addr_@snd", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %Object* @Pair_snd(%Pair* %self) {
%"addr_@snd" = getelementptr inbounds %Pair, %Pair* %self, i32 0, i32 3
%"@snd" = load %Object*, %Object** %"addr_@snd", align 8
ret %Object* %"@snd"
}
define %Object* @_set_Pair_snd(%Pair* %self, %Object* %snd) {
%"addr_@snd" = getelementptr inbounds %Pair, %Pair* %self, i32 0, i32 3
store %Object* %snd, %Object** %"addr_@snd", align 8
ret %Object* %snd
}
define %Object* @Pair_fst(%Pair* %self) {
%"addr_@fst" = getelementptr inbounds %Pair, %Pair* %self, i32 0, i32 2
%"@fst" = load %Object*, %Object** %"addr_@fst", align 8
ret %Object* %"@fst"
}
define %Object* @_set_Pair_fst(%Pair* %self, %Object* %fst) {
%"addr_@fst" = getelementptr inbounds %Pair, %Pair* %self, i32 0, i32 2
store %Object* %fst, %Object** %"addr_@fst", align 8
ret %Object* %fst
}
define %MutableString* @Meta_MutableString_new(%MutableString* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%addr = bitcast i8* %mem to %MutableString*
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %addr, i32 0, i32 0
store i8* bitcast ([28 x i8*]* @shiika_vtable_MutableString to i8*), i8** %addr_vtable, align 8
%class = bitcast %MutableString* %self to %Class.0*
%addr_my_class = getelementptr inbounds %MutableString, %MutableString* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @MutableString_initialize(%MutableString* %addr)
ret %MutableString* %addr
}
define %Void* @Result_Ok_initialize(%"Result::Ok"* %self, %Object* %value) {
%addr_value = getelementptr inbounds %"Result::Ok", %"Result::Ok"* %self, i32 0, i32 2
store %Object* %value, %Object** %addr_value, align 8
br label %Ret
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
Ret: ; preds = %0
%as = bitcast %Object* %value to %Void*
br label %End
}
define %Object* @Result_Ok_value(%"Result::Ok"* %self) {
%addr_value = getelementptr inbounds %"Result::Ok", %"Result::Ok"* %self, i32 0, i32 2
%value = load %Object*, %Object** %addr_value, align 8
ret %Object* %value
}
define %Object* @_set_Result_Ok_value(%"Result::Ok"* %self, %Object* %value) {
%addr_value = getelementptr inbounds %"Result::Ok", %"Result::Ok"* %self, i32 0, i32 2
store %Object* %value, %Object** %addr_value, align 8
ret %Object* %value
}
define %Void* @String_initialize(%String* %self, %"Shiika::Internal::Ptr"* %ptr, %Int* %bytesize) {
%"addr_@ptr" = getelementptr inbounds %String, %String* %self, i32 0, i32 2
store %"Shiika::Internal::Ptr"* %ptr, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
store %Int* %bytesize, %Int** %"addr_@bytesize", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %"Shiika::Internal::Ptr"* @_set_String_ptr(%String* %self, %"Shiika::Internal::Ptr"* %ptr) {
%"addr_@ptr" = getelementptr inbounds %String, %String* %self, i32 0, i32 2
store %"Shiika::Internal::Ptr"* %ptr, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
ret %"Shiika::Internal::Ptr"* %ptr
}
define %Int* @_set_String_bytesize(%String* %self, %Int* %bytesize) {
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
store %Int* %bytesize, %Int** %"addr_@bytesize", align 8
ret %Int* %bytesize
}
define %Int* @String_bytesize(%String* %self) {
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %Ret
End: ; preds = %Ret
%methodResult = phi %Int* [ %"@bytesize", %Ret ]
ret %Int* %methodResult
Ret: ; preds = %0
br label %End
}
define %"Shiika::Internal::Ptr"* @String_ptr(%String* %self) {
%"addr_@ptr" = getelementptr inbounds %String, %String* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
br label %Ret
End: ; preds = %Ret
%methodResult = phi %"Shiika::Internal::Ptr"* [ %"@ptr", %Ret ]
ret %"Shiika::Internal::Ptr"* %methodResult
Ret: ; preds = %0
br label %End
}
define %String* @String_add_(%String* %self, %String* %other) {
alloca:
%ret = alloca %MutableString*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::MutableString" = load %MutableString*, %MutableString** @"::MutableString", align 8
br label %"Invoke_Meta:MutableString#new"
End: ; preds = %Ret
%methodResult = phi %String* [ %result27, %Ret ]
ret %String* %methodResult
"Invoke_Meta:MutableString#new": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %"::MutableString", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 22
%func = bitcast i8* %func_raw to %MutableString* (%MutableString*)*
%result = call %MutableString* %func(%MutableString* %"::MutableString")
br label %"Invoke_Meta:MutableString#new_end"
"Invoke_Meta:MutableString#new_end": ; preds = %"Invoke_Meta:MutableString#new"
store %MutableString* %result, %MutableString** %ret, align 8
%ret2 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#append"
"Invoke_MutableString#append": ; preds = %"Invoke_Meta:MutableString#new_end"
%addr_vtable3 = getelementptr inbounds %MutableString, %MutableString* %ret2, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [28 x i8*]*
%vtable6 = load [28 x i8*], [28 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [28 x i8*] %vtable6, 18
%func8 = bitcast i8* %func_raw7 to %Void* (%MutableString*, %String*)*
%result9 = call %Void* %func8(%MutableString* %ret2, %String* %self)
br label %"Invoke_MutableString#append_end"
"Invoke_MutableString#append_end": ; preds = %"Invoke_MutableString#append"
%ret10 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#append11"
"Invoke_MutableString#append11": ; preds = %"Invoke_MutableString#append_end"
%addr_vtable12 = getelementptr inbounds %MutableString, %MutableString* %ret10, i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [28 x i8*]*
%vtable15 = load [28 x i8*], [28 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [28 x i8*] %vtable15, 18
%func17 = bitcast i8* %func_raw16 to %Void* (%MutableString*, %String*)*
%result18 = call %Void* %func17(%MutableString* %ret10, %String* %other)
br label %"Invoke_MutableString#append_end19"
"Invoke_MutableString#append_end19": ; preds = %"Invoke_MutableString#append11"
%ret20 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#_unsafe_to_s"
"Invoke_MutableString#_unsafe_to_s": ; preds = %"Invoke_MutableString#append_end19"
%addr_vtable21 = getelementptr inbounds %MutableString, %MutableString* %ret20, i32 0, i32 0
%vtable22 = load i8*, i8** %addr_vtable21, align 8
%vtable_ptr23 = bitcast i8* %vtable22 to [28 x i8*]*
%vtable24 = load [28 x i8*], [28 x i8*]* %vtable_ptr23, align 8
%func_raw25 = extractvalue [28 x i8*] %vtable24, 17
%func26 = bitcast i8* %func_raw25 to %String* (%MutableString*)*
%result27 = call %String* %func26(%MutableString* %ret20)
br label %"Invoke_MutableString#_unsafe_to_s_end"
"Invoke_MutableString#_unsafe_to_s_end": ; preds = %"Invoke_MutableString#_unsafe_to_s"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#_unsafe_to_s_end"
br label %End
}
define %String* @String_mul_(%String* %self, %Int* %n) {
alloca:
%ret = alloca %MutableString*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::MutableString" = load %MutableString*, %MutableString** @"::MutableString", align 8
br label %"Invoke_Meta:MutableString#new"
End: ; preds = %Ret
%methodResult = phi %String* [ %result18, %Ret ]
ret %String* %methodResult
"Invoke_Meta:MutableString#new": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %"::MutableString", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 22
%func = bitcast i8* %func_raw to %MutableString* (%MutableString*)*
%result = call %MutableString* %func(%MutableString* %"::MutableString")
br label %"Invoke_Meta:MutableString#new_end"
"Invoke_Meta:MutableString#new_end": ; preds = %"Invoke_Meta:MutableString#new"
store %MutableString* %result, %MutableString** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_27_in_String#*" to i8*))
%the_main = bitcast %String* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result2 = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %MutableString** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result2, %Object* %capture_item)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result2)
br label %"Invoke_Int#times"
"Invoke_Int#times": ; preds = %"Invoke_Meta:MutableString#new_end"
%addr_vtable4 = getelementptr inbounds %Int, %Int* %n, i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [35 x i8*]*
%vtable7 = load [35 x i8*], [35 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [35 x i8*] %vtable7, 30
%func9 = bitcast i8* %func_raw8 to %Void* (%Int*, %Fn1*)*
%result10 = call %Void* %func9(%Int* %n, %Fn1* %result3)
br label %"Invoke_Int#times_end"
"Invoke_Int#times_end": ; preds = %"Invoke_Int#times"
%ret11 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#_unsafe_to_s"
"Invoke_MutableString#_unsafe_to_s": ; preds = %"Invoke_Int#times_end"
%addr_vtable12 = getelementptr inbounds %MutableString, %MutableString* %ret11, i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [28 x i8*]*
%vtable15 = load [28 x i8*], [28 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [28 x i8*] %vtable15, 17
%func17 = bitcast i8* %func_raw16 to %String* (%MutableString*)*
%result18 = call %String* %func17(%MutableString* %ret11)
br label %"Invoke_MutableString#_unsafe_to_s_end"
"Invoke_MutableString#_unsafe_to_s_end": ; preds = %"Invoke_MutableString#_unsafe_to_s"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#_unsafe_to_s_end"
br label %End
}
define %Bool* @String_eq_(%String* %self, %String* %other) {
alloca:
%ret = alloca %Bool*, align 8
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ifResult73, %Ret ]
ret %Bool* %methodResult
IfBegin: ; preds = %alloca_End
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_String#bytesize"
IfThen: ; preds = %"Invoke_Int#==_end"
%sk_bool10 = call %Bool* @box_bool(i1 false)
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#==_end"
%sk_bool11 = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool11, %Bool** %ret, align 8
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
IfEnd: ; preds = %WhileEnd, %IfThen
%ifResult73 = phi %Bool* [ %sk_bool10, %IfThen ], [ %ret72, %WhileEnd ]
br label %Ret
"Invoke_String#bytesize": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %String, %String* %other, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 19
%func = bitcast i8* %func_raw to %Int* (%String*)*
%result = call %Int* %func(%String* %other)
br label %"Invoke_String#bytesize_end"
"Invoke_String#bytesize_end": ; preds = %"Invoke_String#bytesize"
br label %"Invoke_Int#=="
"Invoke_Int#==": ; preds = %"Invoke_String#bytesize_end"
%addr_vtable2 = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 2
%func7 = bitcast i8* %func_raw6 to %Bool* (%Int*, %Int*)*
%result8 = call %Bool* %func7(%Int* %"@bytesize", %Int* %result)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result8)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
%llvm_bool9 = call i1 @unbox_bool(%Bool* %sk_bool)
%istrue = icmp eq i1 %llvm_bool9, true
br i1 %istrue, label %IfThen, label %IfElse
WhileBegin: ; preds = %"Invoke_Int#+_end", %IfElse
%i12 = load %Int*, %Int** %i, align 8
%"addr_@bytesize13" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize14" = load %Int*, %Int** %"addr_@bytesize13", align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable15 = getelementptr inbounds %Int, %Int* %i12, i32 0, i32 0
%vtable16 = load i8*, i8** %addr_vtable15, align 8
%vtable_ptr17 = bitcast i8* %vtable16 to [35 x i8*]*
%vtable18 = load [35 x i8*], [35 x i8*]* %vtable_ptr17, align 8
%func_raw19 = extractvalue [35 x i8*] %vtable18, 0
%func20 = bitcast i8* %func_raw19 to %Bool* (%Int*, %Int*)*
%result21 = call %Bool* %func20(%Int* %i12, %Int* %"@bytesize14")
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool22 = call i1 @unbox_bool(%Bool* %result21)
%istrue23 = icmp eq i1 %llvm_bool22, true
br i1 %istrue23, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
br label %IfBegin24
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void71" = load %Void*, %Void** @"::Void", align 8
%ret72 = load %Bool*, %Bool** %ret, align 8
br label %IfEnd
IfBegin24: ; preds = %WhileBody
%i28 = load %Int*, %Int** %i, align 8
br label %"Invoke_String#nth_byte"
IfThen25: ; preds = %"Invoke_Int#==_end54"
%sk_bool60 = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool60, %Bool** %ret, align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd27
IfElse26: ; preds = %"Invoke_Int#==_end54"
%"::Void61" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd27
IfEnd27: ; preds = %IfElse26, %IfThen25
%ifResult = phi %Void* [ %"::Void", %IfThen25 ], [ %"::Void61", %IfElse26 ]
%i62 = load %Int*, %Int** %i, align 8
%sk_int63 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_String#nth_byte": ; preds = %IfBegin24
%addr_vtable29 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable30 = load i8*, i8** %addr_vtable29, align 8
%vtable_ptr31 = bitcast i8* %vtable30 to [35 x i8*]*
%vtable32 = load [35 x i8*], [35 x i8*]* %vtable_ptr31, align 8
%func_raw33 = extractvalue [35 x i8*] %vtable32, 27
%func34 = bitcast i8* %func_raw33 to %Int* (%String*, %Int*)*
%result35 = call %Int* %func34(%String* %self, %Int* %i28)
br label %"Invoke_String#nth_byte_end"
"Invoke_String#nth_byte_end": ; preds = %"Invoke_String#nth_byte"
%i36 = load %Int*, %Int** %i, align 8
br label %"Invoke_String#nth_byte37"
"Invoke_String#nth_byte37": ; preds = %"Invoke_String#nth_byte_end"
%addr_vtable38 = getelementptr inbounds %String, %String* %other, i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [35 x i8*]*
%vtable41 = load [35 x i8*], [35 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [35 x i8*] %vtable41, 27
%func43 = bitcast i8* %func_raw42 to %Int* (%String*, %Int*)*
%result44 = call %Int* %func43(%String* %other, %Int* %i36)
br label %"Invoke_String#nth_byte_end45"
"Invoke_String#nth_byte_end45": ; preds = %"Invoke_String#nth_byte37"
br label %"Invoke_Int#==46"
"Invoke_Int#==46": ; preds = %"Invoke_String#nth_byte_end45"
%addr_vtable47 = getelementptr inbounds %Int, %Int* %result35, i32 0, i32 0
%vtable48 = load i8*, i8** %addr_vtable47, align 8
%vtable_ptr49 = bitcast i8* %vtable48 to [35 x i8*]*
%vtable50 = load [35 x i8*], [35 x i8*]* %vtable_ptr49, align 8
%func_raw51 = extractvalue [35 x i8*] %vtable50, 2
%func52 = bitcast i8* %func_raw51 to %Bool* (%Int*, %Int*)*
%result53 = call %Bool* %func52(%Int* %result35, %Int* %result44)
br label %"Invoke_Int#==_end54"
"Invoke_Int#==_end54": ; preds = %"Invoke_Int#==46"
%llvm_bool55 = call i1 @unbox_bool(%Bool* %result53)
%b256 = xor i1 %llvm_bool55, true
%sk_bool57 = call %Bool* @box_bool(i1 %b256)
%llvm_bool58 = call i1 @unbox_bool(%Bool* %sk_bool57)
%istrue59 = icmp eq i1 %llvm_bool58, true
br i1 %istrue59, label %IfThen25, label %IfElse26
"Invoke_Int#+": ; preds = %IfEnd27
%addr_vtable64 = getelementptr inbounds %Int, %Int* %i62, i32 0, i32 0
%vtable65 = load i8*, i8** %addr_vtable64, align 8
%vtable_ptr66 = bitcast i8* %vtable65 to [35 x i8*]*
%vtable67 = load [35 x i8*], [35 x i8*]* %vtable_ptr66, align 8
%func_raw68 = extractvalue [35 x i8*] %vtable67, 18
%func69 = bitcast i8* %func_raw68 to %Int* (%Int*, %Int*)*
%result70 = call %Int* %func69(%Int* %i62, %Int* %sk_int63)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result70, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %IfEnd
br label %End
}
define %Array* @String_bytes(%String* %self) {
alloca:
%"ary@29_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret43, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@29_", align 8
%"ary@29_10" = load %Array*, %Array** %"ary@29_", align 8
%"::Int" = load %Int*, %Int** @"::Int", align 8
%as = bitcast %Int* %"::Int" to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable11 = getelementptr inbounds %Array, %Array* %"ary@29_10", i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [54 x i8*]*
%vtable14 = load [54 x i8*], [54 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [54 x i8*] %vtable14, 45
%func16 = bitcast i8* %func_raw15 to %Void* (%Array*, %Object*)*
%result17 = call %Void* %func16(%Array* %"ary@29_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@29_18" = load %Array*, %Array** %"ary@29_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 16
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*, %Array*)*
%result25 = call %Array* %func24(%Array* %"::Array", %Array* %"ary@29_18")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable26 = getelementptr inbounds %Array, %Array* %result25, i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [25 x i8*]*
%vtable29 = load [25 x i8*], [25 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [25 x i8*] %vtable29, 23
%func31 = bitcast i8* %func_raw30 to %Array* (%Array*)*
%result32 = call %Array* %func31(%Array* %result25)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result32, %Array** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_28_in_String#bytes" to i8*))
%the_main = bitcast %String* %self to %Object*
%"::Array33" = load %Array*, %Array** @"::Array", align 8
%result34 = call %Array* @Meta_Array_new(%Array* %"::Array33")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result34, %Object* %capture_item)
%result35 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result34)
br label %"Invoke_String#each_byte"
"Invoke_String#each_byte": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable36 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable37 = load i8*, i8** %addr_vtable36, align 8
%vtable_ptr38 = bitcast i8* %vtable37 to [35 x i8*]*
%vtable39 = load [35 x i8*], [35 x i8*]* %vtable_ptr38, align 8
%func_raw40 = extractvalue [35 x i8*] %vtable39, 21
%func41 = bitcast i8* %func_raw40 to %Void* (%String*, %Fn1*)*
%result42 = call %Void* %func41(%String* %self, %Fn1* %result35)
br label %"Invoke_String#each_byte_end"
"Invoke_String#each_byte_end": ; preds = %"Invoke_String#each_byte"
%ret43 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_String#each_byte_end"
br label %End
}
define %Void* @String_each__byte(%String* %self, %Fn1* %f) {
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_29_in_String#each_byte" to i8*))
%the_main = bitcast %String* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%result1 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
br label %"Invoke_Int#times"
End: ; preds = %Ret
%"::Void4" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void4"
"Invoke_Int#times": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 30
%func = bitcast i8* %func_raw to %Void* (%Int*, %Fn1*)*
%result3 = call %Void* %func(%Int* %"@bytesize", %Fn1* %result1)
br label %"Invoke_Int#times_end"
"Invoke_Int#times_end": ; preds = %"Invoke_Int#times"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Int#times_end"
br label %End
}
define %Void* @String_each__char(%String* %self, %Fn1* %f) {
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_30_in_String#each_char" to i8*))
%the_main = bitcast %String* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%result1 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
br label %"Invoke_Int#times"
End: ; preds = %Ret
%"::Void4" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void4"
"Invoke_Int#times": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 30
%func = bitcast i8* %func_raw to %Void* (%Int*, %Fn1*)*
%result3 = call %Void* %func(%Int* %"@bytesize", %Fn1* %result1)
br label %"Invoke_Int#times_end"
"Invoke_Int#times_end": ; preds = %"Invoke_Int#times"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Int#times_end"
br label %End
}
define %Void* @String_each__line(%String* %self, %Fn1* %f) {
br label %"Invoke_String#lines"
End: ; preds = %Ret
%"::Void9" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void9"
"Invoke_String#lines": ; preds = %0
%addr_vtable = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 26
%func = bitcast i8* %func_raw to %Array* (%String*)*
%result = call %Array* %func(%String* %self)
br label %"Invoke_String#lines_end"
"Invoke_String#lines_end": ; preds = %"Invoke_String#lines"
%as = bitcast %Fn1* %f to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_String#lines_end"
%addr_vtable2 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [54 x i8*]*
%vtable5 = load [54 x i8*], [54 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [54 x i8*] %vtable5, 29
%func7 = bitcast i8* %func_raw6 to %Void* (%Array*, %Object*)*
%result8 = call %Void* %func7(%Array* %result, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Bool* @"String_ends__with?"(%String* %self, %String* %s) {
alloca:
%from = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ifResult, %Ret ]
ret %Bool* %methodResult
IfBegin: ; preds = %alloca_End
br label %"Invoke_String#bytesize"
IfThen: ; preds = %"Invoke_Int#>_end"
%sk_bool = call %Bool* @box_bool(i1 false)
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#>_end"
%"addr_@bytesize9" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize10" = load %Int*, %Int** %"addr_@bytesize9", align 8
br label %"Invoke_String#bytesize11"
IfEnd: ; preds = %"Invoke_String#==_end", %IfThen
%ifResult = phi %Bool* [ %sk_bool, %IfThen ], [ %result50, %"Invoke_String#==_end" ]
br label %Ret
"Invoke_String#bytesize": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %String, %String* %s, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 19
%func = bitcast i8* %func_raw to %Int* (%String*)*
%result = call %Int* %func(%String* %s)
br label %"Invoke_String#bytesize_end"
"Invoke_String#bytesize_end": ; preds = %"Invoke_String#bytesize"
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#>"
"Invoke_Int#>": ; preds = %"Invoke_String#bytesize_end"
%addr_vtable2 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 3
%func7 = bitcast i8* %func_raw6 to %Bool* (%Int*, %Int*)*
%result8 = call %Bool* %func7(%Int* %result, %Int* %"@bytesize")
br label %"Invoke_Int#>_end"
"Invoke_Int#>_end": ; preds = %"Invoke_Int#>"
%llvm_bool = call i1 @unbox_bool(%Bool* %result8)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_String#bytesize11": ; preds = %IfElse
%addr_vtable12 = getelementptr inbounds %String, %String* %s, i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [35 x i8*]*
%vtable15 = load [35 x i8*], [35 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [35 x i8*] %vtable15, 19
%func17 = bitcast i8* %func_raw16 to %Int* (%String*)*
%result18 = call %Int* %func17(%String* %s)
br label %"Invoke_String#bytesize_end19"
"Invoke_String#bytesize_end19": ; preds = %"Invoke_String#bytesize11"
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_String#bytesize_end19"
%addr_vtable20 = getelementptr inbounds %Int, %Int* %"@bytesize10", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [35 x i8*]*
%vtable23 = load [35 x i8*], [35 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [35 x i8*] %vtable23, 19
%func25 = bitcast i8* %func_raw24 to %Int* (%Int*, %Int*)*
%result26 = call %Int* %func25(%Int* %"@bytesize10", %Int* %result18)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
store %Int* %result26, %Int** %from, align 8
%from27 = load %Int*, %Int** %from, align 8
br label %"Invoke_String#bytesize28"
"Invoke_String#bytesize28": ; preds = %"Invoke_Int#-_end"
%addr_vtable29 = getelementptr inbounds %String, %String* %s, i32 0, i32 0
%vtable30 = load i8*, i8** %addr_vtable29, align 8
%vtable_ptr31 = bitcast i8* %vtable30 to [35 x i8*]*
%vtable32 = load [35 x i8*], [35 x i8*]* %vtable_ptr31, align 8
%func_raw33 = extractvalue [35 x i8*] %vtable32, 19
%func34 = bitcast i8* %func_raw33 to %Int* (%String*)*
%result35 = call %Int* %func34(%String* %s)
br label %"Invoke_String#bytesize_end36"
"Invoke_String#bytesize_end36": ; preds = %"Invoke_String#bytesize28"
br label %"Invoke_String#slice_bytes"
"Invoke_String#slice_bytes": ; preds = %"Invoke_String#bytesize_end36"
%addr_vtable37 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable38 = load i8*, i8** %addr_vtable37, align 8
%vtable_ptr39 = bitcast i8* %vtable38 to [35 x i8*]*
%vtable40 = load [35 x i8*], [35 x i8*]* %vtable_ptr39, align 8
%func_raw41 = extractvalue [35 x i8*] %vtable40, 30
%func42 = bitcast i8* %func_raw41 to %String* (%String*, %Int*, %Int*)*
%result43 = call %String* %func42(%String* %self, %Int* %from27, %Int* %result35)
br label %"Invoke_String#slice_bytes_end"
"Invoke_String#slice_bytes_end": ; preds = %"Invoke_String#slice_bytes"
br label %"Invoke_String#=="
"Invoke_String#==": ; preds = %"Invoke_String#slice_bytes_end"
%addr_vtable44 = getelementptr inbounds %String, %String* %result43, i32 0, i32 0
%vtable45 = load i8*, i8** %addr_vtable44, align 8
%vtable_ptr46 = bitcast i8* %vtable45 to [35 x i8*]*
%vtable47 = load [35 x i8*], [35 x i8*]* %vtable_ptr46, align 8
%func_raw48 = extractvalue [35 x i8*] %vtable47, 2
%func49 = bitcast i8* %func_raw48 to %Bool* (%String*, %String*)*
%result50 = call %Bool* %func49(%String* %result43, %String* %s)
br label %"Invoke_String#==_end"
"Invoke_String#==_end": ; preds = %"Invoke_String#=="
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %String* @String_inspect(%String* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_70, i32 0, i32 0), i64 1)
br label %"Invoke_String#+"
End: ; preds = %Ret
%methodResult = phi %String* [ %result10, %Ret ]
ret %String* %methodResult
"Invoke_String#+": ; preds = %0
%addr_vtable = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 17
%func = bitcast i8* %func_raw to %String* (%String*, %String*)*
%result = call %String* %func(%String* %sk_str, %String* %self)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str2 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_69, i32 0, i32 0), i64 1)
br label %"Invoke_String#+3"
"Invoke_String#+3": ; preds = %"Invoke_String#+_end"
%addr_vtable4 = getelementptr inbounds %String, %String* %result, i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [35 x i8*]*
%vtable7 = load [35 x i8*], [35 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [35 x i8*] %vtable7, 17
%func9 = bitcast i8* %func_raw8 to %String* (%String*, %String*)*
%result10 = call %String* %func9(%String* %result, %String* %sk_str2)
br label %"Invoke_String#+_end11"
"Invoke_String#+_end11": ; preds = %"Invoke_String#+3"
br label %Ret
Ret: ; preds = %"Invoke_String#+_end11"
br label %End
}
define %Bool* @"String_empty?"(%String* %self) {
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
End: ; preds = %Ret
%methodResult = phi %Bool* [ %result, %Ret ]
ret %Bool* %methodResult
"Invoke_Int#==": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"@bytesize", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %"@bytesize", %Int* %sk_int)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
br label %Ret
Ret: ; preds = %"Invoke_Int#==_end"
br label %End
}
define %Array* @String_lines(%String* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_71, i32 0, i32 0), i64 1)
br label %"Invoke_String#split"
End: ; preds = %Ret
%methodResult = phi %Array* [ %result, %Ret ]
ret %Array* %methodResult
"Invoke_String#split": ; preds = %0
%addr_vtable = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 31
%func = bitcast i8* %func_raw to %Array* (%String*, %String*)*
%result = call %Array* %func(%String* %self, %String* %sk_str)
br label %"Invoke_String#split_end"
"Invoke_String#split_end": ; preds = %"Invoke_String#split"
br label %Ret
Ret: ; preds = %"Invoke_String#split_end"
br label %End
}
define %Int* @String_nth__byte(%String* %self, %Int* %n) {
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Int* [ %result46, %Ret ]
ret %Int* %methodResult
IfBegin: ; preds = %0
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%as = bitcast %String* %self to %Object*
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str_72, i32 0, i32 0), i64 39)
br label %"Invoke_Object#panic"
IfElse: ; preds = %"Invoke_Int#<_end"
%"::Void8" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse
br label %IfBegin9
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %n, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %n, %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Object#panic": ; preds = %IfThen
%addr_vtable2 = getelementptr inbounds %Object, %Object* %as, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [16 x i8*]*
%vtable5 = load [16 x i8*], [16 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [16 x i8*] %vtable5, 12
%func7 = bitcast i8* %func_raw6 to void (%Object*, %String*)*
call void %func7(%Object* %as, %String* %sk_str)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
IfBegin9: ; preds = %IfEnd
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#>="
IfThen10: ; preds = %"Invoke_Int#>=_end"
%as22 = bitcast %String* %self to %Object*
%sk_str23 = call %String* @gen_literal_string(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str_73, i32 0, i32 0), i64 34)
br label %"Invoke_Object#panic24"
IfElse11: ; preds = %"Invoke_Int#>=_end"
%"::Void32" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd12
IfEnd12: ; preds = %IfElse11
%"addr_@ptr" = getelementptr inbounds %String, %String* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Int#>=": ; preds = %IfBegin9
%addr_vtable13 = getelementptr inbounds %Int, %Int* %n, i32 0, i32 0
%vtable14 = load i8*, i8** %addr_vtable13, align 8
%vtable_ptr15 = bitcast i8* %vtable14 to [35 x i8*]*
%vtable16 = load [35 x i8*], [35 x i8*]* %vtable_ptr15, align 8
%func_raw17 = extractvalue [35 x i8*] %vtable16, 4
%func18 = bitcast i8* %func_raw17 to %Bool* (%Int*, %Int*)*
%result19 = call %Bool* %func18(%Int* %n, %Int* %"@bytesize")
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool20 = call i1 @unbox_bool(%Bool* %result19)
%istrue21 = icmp eq i1 %llvm_bool20, true
br i1 %istrue21, label %IfThen10, label %IfElse11
"Invoke_Object#panic24": ; preds = %IfThen10
%addr_vtable25 = getelementptr inbounds %Object, %Object* %as22, i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [16 x i8*]*
%vtable28 = load [16 x i8*], [16 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [16 x i8*] %vtable28, 12
%func30 = bitcast i8* %func_raw29 to void (%Object*, %String*)*
call void %func30(%Object* %as22, %String* %sk_str23)
%"::Void31" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_Shiika::Internal::Ptr#+": ; preds = %IfEnd12
%addr_vtable33 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@ptr", i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [21 x i8*]*
%vtable36 = load [21 x i8*], [21 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [21 x i8*] %vtable36, 16
%func38 = bitcast i8* %func_raw37 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result39 = call %"Shiika::Internal::Ptr"* %func38(%"Shiika::Internal::Ptr"* %"@ptr", %Int* %n)
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
br label %"Invoke_Shiika::Internal::Ptr#read"
"Invoke_Shiika::Internal::Ptr#read": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable40 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %result39, i32 0, i32 0
%vtable41 = load i8*, i8** %addr_vtable40, align 8
%vtable_ptr42 = bitcast i8* %vtable41 to [21 x i8*]*
%vtable43 = load [21 x i8*], [21 x i8*]* %vtable_ptr42, align 8
%func_raw44 = extractvalue [21 x i8*] %vtable43, 18
%func45 = bitcast i8* %func_raw44 to %Int* (%"Shiika::Internal::Ptr"*)*
%result46 = call %Int* %func45(%"Shiika::Internal::Ptr"* %result39)
br label %"Invoke_Shiika::Internal::Ptr#read_end"
"Invoke_Shiika::Internal::Ptr#read_end": ; preds = %"Invoke_Shiika::Internal::Ptr#read"
br label %Ret
Ret: ; preds = %"Invoke_Shiika::Internal::Ptr#read_end"
br label %End
}
define %String* @String_slice__bytes(%String* %self, %Int* %from, %Int* %bytes) {
alloca:
%newptr = alloca %"Shiika::Internal::Ptr"*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %String* [ %result223, %Ret ]
ret %String* %methodResult
IfBegin: ; preds = %alloca_End
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%as = bitcast %String* %self to %Object*
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @str_76, i32 0, i32 0), i64 53)
%as2 = bitcast %Int* %from to %Object*
br label %"Invoke_Object#inspect"
IfElse: ; preds = %"Invoke_Int#<_end"
%"::Void62" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse
br label %IfBegin63
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %from, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %from, %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Object#inspect": ; preds = %IfThen
%addr_vtable3 = getelementptr inbounds %Object, %Object* %as2, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [16 x i8*]*
%vtable6 = load [16 x i8*], [16 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [16 x i8*] %vtable6, 9
%func8 = bitcast i8* %func_raw7 to %String* (%Object*)*
%result9 = call %String* %func8(%Object* %as2)
br label %"Invoke_Object#inspect_end"
"Invoke_Object#inspect_end": ; preds = %"Invoke_Object#inspect"
br label %"Invoke_String#+"
"Invoke_String#+": ; preds = %"Invoke_Object#inspect_end"
%addr_vtable10 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable11 = load i8*, i8** %addr_vtable10, align 8
%vtable_ptr12 = bitcast i8* %vtable11 to [35 x i8*]*
%vtable13 = load [35 x i8*], [35 x i8*]* %vtable_ptr12, align 8
%func_raw14 = extractvalue [35 x i8*] %vtable13, 17
%func15 = bitcast i8* %func_raw14 to %String* (%String*, %String*)*
%result16 = call %String* %func15(%String* %sk_str, %String* %result9)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str17 = call %String* @gen_literal_string(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str_75, i32 0, i32 0), i64 9)
br label %"Invoke_String#+18"
"Invoke_String#+18": ; preds = %"Invoke_String#+_end"
%addr_vtable19 = getelementptr inbounds %String, %String* %result16, i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [35 x i8*]*
%vtable22 = load [35 x i8*], [35 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [35 x i8*] %vtable22, 17
%func24 = bitcast i8* %func_raw23 to %String* (%String*, %String*)*
%result25 = call %String* %func24(%String* %result16, %String* %sk_str17)
br label %"Invoke_String#+_end26"
"Invoke_String#+_end26": ; preds = %"Invoke_String#+18"
%as27 = bitcast %Int* %bytes to %Object*
br label %"Invoke_Object#inspect28"
"Invoke_Object#inspect28": ; preds = %"Invoke_String#+_end26"
%addr_vtable29 = getelementptr inbounds %Object, %Object* %as27, i32 0, i32 0
%vtable30 = load i8*, i8** %addr_vtable29, align 8
%vtable_ptr31 = bitcast i8* %vtable30 to [16 x i8*]*
%vtable32 = load [16 x i8*], [16 x i8*]* %vtable_ptr31, align 8
%func_raw33 = extractvalue [16 x i8*] %vtable32, 9
%func34 = bitcast i8* %func_raw33 to %String* (%Object*)*
%result35 = call %String* %func34(%Object* %as27)
br label %"Invoke_Object#inspect_end36"
"Invoke_Object#inspect_end36": ; preds = %"Invoke_Object#inspect28"
br label %"Invoke_String#+37"
"Invoke_String#+37": ; preds = %"Invoke_Object#inspect_end36"
%addr_vtable38 = getelementptr inbounds %String, %String* %result25, i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [35 x i8*]*
%vtable41 = load [35 x i8*], [35 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [35 x i8*] %vtable41, 17
%func43 = bitcast i8* %func_raw42 to %String* (%String*, %String*)*
%result44 = call %String* %func43(%String* %result25, %String* %result35)
br label %"Invoke_String#+_end45"
"Invoke_String#+_end45": ; preds = %"Invoke_String#+37"
%sk_str46 = call %String* @gen_literal_string(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str_74, i32 0, i32 0), i64 2)
br label %"Invoke_String#+47"
"Invoke_String#+47": ; preds = %"Invoke_String#+_end45"
%addr_vtable48 = getelementptr inbounds %String, %String* %result44, i32 0, i32 0
%vtable49 = load i8*, i8** %addr_vtable48, align 8
%vtable_ptr50 = bitcast i8* %vtable49 to [35 x i8*]*
%vtable51 = load [35 x i8*], [35 x i8*]* %vtable_ptr50, align 8
%func_raw52 = extractvalue [35 x i8*] %vtable51, 17
%func53 = bitcast i8* %func_raw52 to %String* (%String*, %String*)*
%result54 = call %String* %func53(%String* %result44, %String* %sk_str46)
br label %"Invoke_String#+_end55"
"Invoke_String#+_end55": ; preds = %"Invoke_String#+47"
br label %"Invoke_Object#panic"
"Invoke_Object#panic": ; preds = %"Invoke_String#+_end55"
%addr_vtable56 = getelementptr inbounds %Object, %Object* %as, i32 0, i32 0
%vtable57 = load i8*, i8** %addr_vtable56, align 8
%vtable_ptr58 = bitcast i8* %vtable57 to [16 x i8*]*
%vtable59 = load [16 x i8*], [16 x i8*]* %vtable_ptr58, align 8
%func_raw60 = extractvalue [16 x i8*] %vtable59, 12
%func61 = bitcast i8* %func_raw60 to void (%Object*, %String*)*
call void %func61(%Object* %as, %String* %result54)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
IfBegin63: ; preds = %IfEnd
br label %"Invoke_Int#+"
IfThen64: ; preds = %"Invoke_Int#>_end"
%as83 = bitcast %String* %self to %Object*
%sk_str84 = call %String* @gen_literal_string(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @str_80, i32 0, i32 0), i64 53)
%as85 = bitcast %Int* %from to %Object*
br label %"Invoke_Object#inspect86"
IfElse65: ; preds = %"Invoke_Int#>_end"
%"::Void182" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd66
IfEnd66: ; preds = %IfElse65
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%sk_int183 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+184"
"Invoke_Int#+": ; preds = %IfBegin63
%addr_vtable67 = getelementptr inbounds %Int, %Int* %from, i32 0, i32 0
%vtable68 = load i8*, i8** %addr_vtable67, align 8
%vtable_ptr69 = bitcast i8* %vtable68 to [35 x i8*]*
%vtable70 = load [35 x i8*], [35 x i8*]* %vtable_ptr69, align 8
%func_raw71 = extractvalue [35 x i8*] %vtable70, 18
%func72 = bitcast i8* %func_raw71 to %Int* (%Int*, %Int*)*
%result73 = call %Int* %func72(%Int* %from, %Int* %bytes)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#>"
"Invoke_Int#>": ; preds = %"Invoke_Int#+_end"
%addr_vtable74 = getelementptr inbounds %Int, %Int* %result73, i32 0, i32 0
%vtable75 = load i8*, i8** %addr_vtable74, align 8
%vtable_ptr76 = bitcast i8* %vtable75 to [35 x i8*]*
%vtable77 = load [35 x i8*], [35 x i8*]* %vtable_ptr76, align 8
%func_raw78 = extractvalue [35 x i8*] %vtable77, 3
%func79 = bitcast i8* %func_raw78 to %Bool* (%Int*, %Int*)*
%result80 = call %Bool* %func79(%Int* %result73, %Int* %"@bytesize")
br label %"Invoke_Int#>_end"
"Invoke_Int#>_end": ; preds = %"Invoke_Int#>"
%llvm_bool81 = call i1 @unbox_bool(%Bool* %result80)
%istrue82 = icmp eq i1 %llvm_bool81, true
br i1 %istrue82, label %IfThen64, label %IfElse65
"Invoke_Object#inspect86": ; preds = %IfThen64
%addr_vtable87 = getelementptr inbounds %Object, %Object* %as85, i32 0, i32 0
%vtable88 = load i8*, i8** %addr_vtable87, align 8
%vtable_ptr89 = bitcast i8* %vtable88 to [16 x i8*]*
%vtable90 = load [16 x i8*], [16 x i8*]* %vtable_ptr89, align 8
%func_raw91 = extractvalue [16 x i8*] %vtable90, 9
%func92 = bitcast i8* %func_raw91 to %String* (%Object*)*
%result93 = call %String* %func92(%Object* %as85)
br label %"Invoke_Object#inspect_end94"
"Invoke_Object#inspect_end94": ; preds = %"Invoke_Object#inspect86"
br label %"Invoke_String#+95"
"Invoke_String#+95": ; preds = %"Invoke_Object#inspect_end94"
%addr_vtable96 = getelementptr inbounds %String, %String* %sk_str84, i32 0, i32 0
%vtable97 = load i8*, i8** %addr_vtable96, align 8
%vtable_ptr98 = bitcast i8* %vtable97 to [35 x i8*]*
%vtable99 = load [35 x i8*], [35 x i8*]* %vtable_ptr98, align 8
%func_raw100 = extractvalue [35 x i8*] %vtable99, 17
%func101 = bitcast i8* %func_raw100 to %String* (%String*, %String*)*
%result102 = call %String* %func101(%String* %sk_str84, %String* %result93)
br label %"Invoke_String#+_end103"
"Invoke_String#+_end103": ; preds = %"Invoke_String#+95"
%sk_str104 = call %String* @gen_literal_string(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str_79, i32 0, i32 0), i64 9)
br label %"Invoke_String#+105"
"Invoke_String#+105": ; preds = %"Invoke_String#+_end103"
%addr_vtable106 = getelementptr inbounds %String, %String* %result102, i32 0, i32 0
%vtable107 = load i8*, i8** %addr_vtable106, align 8
%vtable_ptr108 = bitcast i8* %vtable107 to [35 x i8*]*
%vtable109 = load [35 x i8*], [35 x i8*]* %vtable_ptr108, align 8
%func_raw110 = extractvalue [35 x i8*] %vtable109, 17
%func111 = bitcast i8* %func_raw110 to %String* (%String*, %String*)*
%result112 = call %String* %func111(%String* %result102, %String* %sk_str104)
br label %"Invoke_String#+_end113"
"Invoke_String#+_end113": ; preds = %"Invoke_String#+105"
%as114 = bitcast %Int* %bytes to %Object*
br label %"Invoke_Object#inspect115"
"Invoke_Object#inspect115": ; preds = %"Invoke_String#+_end113"
%addr_vtable116 = getelementptr inbounds %Object, %Object* %as114, i32 0, i32 0
%vtable117 = load i8*, i8** %addr_vtable116, align 8
%vtable_ptr118 = bitcast i8* %vtable117 to [16 x i8*]*
%vtable119 = load [16 x i8*], [16 x i8*]* %vtable_ptr118, align 8
%func_raw120 = extractvalue [16 x i8*] %vtable119, 9
%func121 = bitcast i8* %func_raw120 to %String* (%Object*)*
%result122 = call %String* %func121(%Object* %as114)
br label %"Invoke_Object#inspect_end123"
"Invoke_Object#inspect_end123": ; preds = %"Invoke_Object#inspect115"
br label %"Invoke_String#+124"
"Invoke_String#+124": ; preds = %"Invoke_Object#inspect_end123"
%addr_vtable125 = getelementptr inbounds %String, %String* %result112, i32 0, i32 0
%vtable126 = load i8*, i8** %addr_vtable125, align 8
%vtable_ptr127 = bitcast i8* %vtable126 to [35 x i8*]*
%vtable128 = load [35 x i8*], [35 x i8*]* %vtable_ptr127, align 8
%func_raw129 = extractvalue [35 x i8*] %vtable128, 17
%func130 = bitcast i8* %func_raw129 to %String* (%String*, %String*)*
%result131 = call %String* %func130(%String* %result112, %String* %result122)
br label %"Invoke_String#+_end132"
"Invoke_String#+_end132": ; preds = %"Invoke_String#+124"
%sk_str133 = call %String* @gen_literal_string(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @str_78, i32 0, i32 0), i64 17)
br label %"Invoke_String#+134"
"Invoke_String#+134": ; preds = %"Invoke_String#+_end132"
%addr_vtable135 = getelementptr inbounds %String, %String* %result131, i32 0, i32 0
%vtable136 = load i8*, i8** %addr_vtable135, align 8
%vtable_ptr137 = bitcast i8* %vtable136 to [35 x i8*]*
%vtable138 = load [35 x i8*], [35 x i8*]* %vtable_ptr137, align 8
%func_raw139 = extractvalue [35 x i8*] %vtable138, 17
%func140 = bitcast i8* %func_raw139 to %String* (%String*, %String*)*
%result141 = call %String* %func140(%String* %result131, %String* %sk_str133)
br label %"Invoke_String#+_end142"
"Invoke_String#+_end142": ; preds = %"Invoke_String#+134"
%"addr_@bytesize143" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize144" = load %Int*, %Int** %"addr_@bytesize143", align 8
%as145 = bitcast %Int* %"@bytesize144" to %Object*
br label %"Invoke_Object#inspect146"
"Invoke_Object#inspect146": ; preds = %"Invoke_String#+_end142"
%addr_vtable147 = getelementptr inbounds %Object, %Object* %as145, i32 0, i32 0
%vtable148 = load i8*, i8** %addr_vtable147, align 8
%vtable_ptr149 = bitcast i8* %vtable148 to [16 x i8*]*
%vtable150 = load [16 x i8*], [16 x i8*]* %vtable_ptr149, align 8
%func_raw151 = extractvalue [16 x i8*] %vtable150, 9
%func152 = bitcast i8* %func_raw151 to %String* (%Object*)*
%result153 = call %String* %func152(%Object* %as145)
br label %"Invoke_Object#inspect_end154"
"Invoke_Object#inspect_end154": ; preds = %"Invoke_Object#inspect146"
br label %"Invoke_String#+155"
"Invoke_String#+155": ; preds = %"Invoke_Object#inspect_end154"
%addr_vtable156 = getelementptr inbounds %String, %String* %result141, i32 0, i32 0
%vtable157 = load i8*, i8** %addr_vtable156, align 8
%vtable_ptr158 = bitcast i8* %vtable157 to [35 x i8*]*
%vtable159 = load [35 x i8*], [35 x i8*]* %vtable_ptr158, align 8
%func_raw160 = extractvalue [35 x i8*] %vtable159, 17
%func161 = bitcast i8* %func_raw160 to %String* (%String*, %String*)*
%result162 = call %String* %func161(%String* %result141, %String* %result153)
br label %"Invoke_String#+_end163"
"Invoke_String#+_end163": ; preds = %"Invoke_String#+155"
%sk_str164 = call %String* @gen_literal_string(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str_77, i32 0, i32 0), i64 2)
br label %"Invoke_String#+165"
"Invoke_String#+165": ; preds = %"Invoke_String#+_end163"
%addr_vtable166 = getelementptr inbounds %String, %String* %result162, i32 0, i32 0
%vtable167 = load i8*, i8** %addr_vtable166, align 8
%vtable_ptr168 = bitcast i8* %vtable167 to [35 x i8*]*
%vtable169 = load [35 x i8*], [35 x i8*]* %vtable_ptr168, align 8
%func_raw170 = extractvalue [35 x i8*] %vtable169, 17
%func171 = bitcast i8* %func_raw170 to %String* (%String*, %String*)*
%result172 = call %String* %func171(%String* %result162, %String* %sk_str164)
br label %"Invoke_String#+_end173"
"Invoke_String#+_end173": ; preds = %"Invoke_String#+165"
br label %"Invoke_Object#panic174"
"Invoke_Object#panic174": ; preds = %"Invoke_String#+_end173"
%addr_vtable175 = getelementptr inbounds %Object, %Object* %as83, i32 0, i32 0
%vtable176 = load i8*, i8** %addr_vtable175, align 8
%vtable_ptr177 = bitcast i8* %vtable176 to [16 x i8*]*
%vtable178 = load [16 x i8*], [16 x i8*]* %vtable_ptr177, align 8
%func_raw179 = extractvalue [16 x i8*] %vtable178, 12
%func180 = bitcast i8* %func_raw179 to void (%Object*, %String*)*
call void %func180(%Object* %as83, %String* %result172)
%"::Void181" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_Int#+184": ; preds = %IfEnd66
%addr_vtable185 = getelementptr inbounds %Int, %Int* %bytes, i32 0, i32 0
%vtable186 = load i8*, i8** %addr_vtable185, align 8
%vtable_ptr187 = bitcast i8* %vtable186 to [35 x i8*]*
%vtable188 = load [35 x i8*], [35 x i8*]* %vtable_ptr187, align 8
%func_raw189 = extractvalue [35 x i8*] %vtable188, 18
%func190 = bitcast i8* %func_raw189 to %Int* (%Int*, %Int*)*
%result191 = call %Int* %func190(%Int* %bytes, %Int* %sk_int183)
br label %"Invoke_Int#+_end192"
"Invoke_Int#+_end192": ; preds = %"Invoke_Int#+184"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc": ; preds = %"Invoke_Int#+_end192"
%addr_vtable193 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable194 = load i8*, i8** %addr_vtable193, align 8
%vtable_ptr195 = bitcast i8* %vtable194 to [25 x i8*]*
%vtable196 = load [25 x i8*], [25 x i8*]* %vtable_ptr195, align 8
%func_raw197 = extractvalue [25 x i8*] %vtable196, 22
%func198 = bitcast i8* %func_raw197 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %Int*)*
%result199 = call %"Shiika::Internal::Ptr"* %func198(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %Int* %result191)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
store %"Shiika::Internal::Ptr"* %result199, %"Shiika::Internal::Ptr"** %newptr, align 8
%"::Shiika::Internal::Memory200" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%newptr201 = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %newptr, align 8
%"addr_@ptr" = getelementptr inbounds %String, %String* %self, i32 0, i32 2
%"@ptr" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@ptr", align 8
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Shiika::Internal::Ptr#+": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
%addr_vtable202 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@ptr", i32 0, i32 0
%vtable203 = load i8*, i8** %addr_vtable202, align 8
%vtable_ptr204 = bitcast i8* %vtable203 to [21 x i8*]*
%vtable205 = load [21 x i8*], [21 x i8*]* %vtable_ptr204, align 8
%func_raw206 = extractvalue [21 x i8*] %vtable205, 16
%func207 = bitcast i8* %func_raw206 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result208 = call %"Shiika::Internal::Ptr"* %func207(%"Shiika::Internal::Ptr"* %"@ptr", %Int* %from)
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
br label %"Invoke_Meta:Shiika::Internal::Memory#memcpy"
"Invoke_Meta:Shiika::Internal::Memory#memcpy": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable209 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory200", i32 0, i32 0
%vtable210 = load i8*, i8** %addr_vtable209, align 8
%vtable_ptr211 = bitcast i8* %vtable210 to [25 x i8*]*
%vtable212 = load [25 x i8*], [25 x i8*]* %vtable_ptr211, align 8
%func_raw213 = extractvalue [25 x i8*] %vtable212, 24
%func214 = bitcast i8* %func_raw213 to %Void* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"*, %Int*)*
%result215 = call %Void* %func214(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory200", %"Shiika::Internal::Ptr"* %newptr201, %"Shiika::Internal::Ptr"* %result208, %Int* %bytes)
br label %"Invoke_Meta:Shiika::Internal::Memory#memcpy_end"
"Invoke_Meta:Shiika::Internal::Memory#memcpy_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#memcpy"
%"::String" = load %String*, %String** @"::String", align 8
%newptr216 = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %newptr, align 8
br label %"Invoke_Meta:String#new"
"Invoke_Meta:String#new": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#memcpy_end"
%addr_vtable217 = getelementptr inbounds %String, %String* %"::String", i32 0, i32 0
%vtable218 = load i8*, i8** %addr_vtable217, align 8
%vtable_ptr219 = bitcast i8* %vtable218 to [23 x i8*]*
%vtable220 = load [23 x i8*], [23 x i8*]* %vtable_ptr219, align 8
%func_raw221 = extractvalue [23 x i8*] %vtable220, 22
%func222 = bitcast i8* %func_raw221 to %String* (%String*, %"Shiika::Internal::Ptr"*, %Int*)*
%result223 = call %String* %func222(%String* %"::String", %"Shiika::Internal::Ptr"* %newptr216, %Int* %bytes)
br label %"Invoke_Meta:String#new_end"
"Invoke_Meta:String#new_end": ; preds = %"Invoke_Meta:String#new"
br label %Ret
Ret: ; preds = %"Invoke_Meta:String#new_end"
br label %End
}
define %Array* @String_split(%String* %self, %String* %sep) {
alloca:
%"ary@30_" = alloca %Array*, align 8
%"ary@31_" = alloca %Array*, align 8
%sep_cur = alloca %Int*, align 8
%ret = alloca %Array*, align 8
%word_start = alloca %Int*, align 8
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Array* [ %ifResult299, %Ret ]
ret %Array* %methodResult
IfBegin: ; preds = %alloca_End
br label %"Invoke_String#bytesize"
IfThen: ; preds = %"Invoke_Int#==_end"
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::String" = load %String*, %String** @"::String", align 8
%as = bitcast %String* %"::String" to %Class.0*
br label %"Invoke_Class#_specialize1"
IfElse: ; preds = %"Invoke_Int#==_end"
%"::Array33" = load %Array*, %Array** @"::Array", align 8
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize135"
IfEnd: ; preds = %IfEnd247, %"Invoke_Array#push_end"
%ifResult299 = phi %Array* [ %"ary@30_32", %"Invoke_Array#push_end" ], [ %ret298, %IfEnd247 ]
br label %Ret
"Invoke_String#bytesize": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %String, %String* %sep, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 19
%func = bitcast i8* %func_raw to %Int* (%String*)*
%result = call %Int* %func(%String* %sep)
br label %"Invoke_String#bytesize_end"
"Invoke_String#bytesize_end": ; preds = %"Invoke_String#bytesize"
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#=="
"Invoke_Int#==": ; preds = %"Invoke_String#bytesize_end"
%addr_vtable2 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 2
%func7 = bitcast i8* %func_raw6 to %Bool* (%Int*, %Int*)*
%result8 = call %Bool* %func7(%Int* %result, %Int* %sk_int)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result8)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Class#_specialize1": ; preds = %IfThen
%addr_vtable9 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable10 = load i8*, i8** %addr_vtable9, align 8
%vtable_ptr11 = bitcast i8* %vtable10 to [25 x i8*]*
%vtable12 = load [25 x i8*], [25 x i8*]* %vtable_ptr11, align 8
%func_raw13 = extractvalue [25 x i8*] %vtable12, 18
%func14 = bitcast i8* %func_raw13 to %Array* (%Array*, %Class.0*)*
%result15 = call %Array* %func14(%Array* %"::Array", %Class.0* %as)
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable16 = getelementptr inbounds %Array, %Array* %result15, i32 0, i32 0
%vtable17 = load i8*, i8** %addr_vtable16, align 8
%vtable_ptr18 = bitcast i8* %vtable17 to [25 x i8*]*
%vtable19 = load [25 x i8*], [25 x i8*]* %vtable_ptr18, align 8
%func_raw20 = extractvalue [25 x i8*] %vtable19, 23
%func21 = bitcast i8* %func_raw20 to %Array* (%Array*)*
%result22 = call %Array* %func21(%Array* %result15)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result22, %Array** %"ary@30_", align 8
%"ary@30_23" = load %Array*, %Array** %"ary@30_", align 8
%as24 = bitcast %String* %self to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable25 = getelementptr inbounds %Array, %Array* %"ary@30_23", i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [54 x i8*]*
%vtable28 = load [54 x i8*], [54 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [54 x i8*] %vtable28, 45
%func30 = bitcast i8* %func_raw29 to %Void* (%Array*, %Object*)*
%result31 = call %Void* %func30(%Array* %"ary@30_23", %Object* %as24)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@30_32" = load %Array*, %Array** %"ary@30_", align 8
br label %IfEnd
"Invoke_Class#_specialize135": ; preds = %IfElse
%addr_vtable36 = getelementptr inbounds %Array, %Array* %"::Array34", i32 0, i32 0
%vtable37 = load i8*, i8** %addr_vtable36, align 8
%vtable_ptr38 = bitcast i8* %vtable37 to [25 x i8*]*
%vtable39 = load [25 x i8*], [25 x i8*]* %vtable_ptr38, align 8
%func_raw40 = extractvalue [25 x i8*] %vtable39, 18
%func41 = bitcast i8* %func_raw40 to %Array* (%Array*, %Class.0*)*
%result42 = call %Array* %func41(%Array* %"::Array34", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end43"
"Invoke_Class#_specialize1_end43": ; preds = %"Invoke_Class#_specialize135"
br label %"Invoke_Array#new44"
"Invoke_Array#new44": ; preds = %"Invoke_Class#_specialize1_end43"
%addr_vtable45 = getelementptr inbounds %Array, %Array* %result42, i32 0, i32 0
%vtable46 = load i8*, i8** %addr_vtable45, align 8
%vtable_ptr47 = bitcast i8* %vtable46 to [25 x i8*]*
%vtable48 = load [25 x i8*], [25 x i8*]* %vtable_ptr47, align 8
%func_raw49 = extractvalue [25 x i8*] %vtable48, 23
%func50 = bitcast i8* %func_raw49 to %Array* (%Array*)*
%result51 = call %Array* %func50(%Array* %result42)
br label %"Invoke_Array#new_end52"
"Invoke_Array#new_end52": ; preds = %"Invoke_Array#new44"
store %Array* %result51, %Array** %"ary@31_", align 8
%"ary@31_53" = load %Array*, %Array** %"ary@31_", align 8
%"::String54" = load %String*, %String** @"::String", align 8
%as55 = bitcast %String* %"::String54" to %Object*
br label %"Invoke_Array#push56"
"Invoke_Array#push56": ; preds = %"Invoke_Array#new_end52"
%addr_vtable57 = getelementptr inbounds %Array, %Array* %"ary@31_53", i32 0, i32 0
%vtable58 = load i8*, i8** %addr_vtable57, align 8
%vtable_ptr59 = bitcast i8* %vtable58 to [54 x i8*]*
%vtable60 = load [54 x i8*], [54 x i8*]* %vtable_ptr59, align 8
%func_raw61 = extractvalue [54 x i8*] %vtable60, 45
%func62 = bitcast i8* %func_raw61 to %Void* (%Array*, %Object*)*
%result63 = call %Void* %func62(%Array* %"ary@31_53", %Object* %as55)
br label %"Invoke_Array#push_end64"
"Invoke_Array#push_end64": ; preds = %"Invoke_Array#push56"
%"ary@31_65" = load %Array*, %Array** %"ary@31_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end64"
%addr_vtable66 = getelementptr inbounds %Array, %Array* %"::Array33", i32 0, i32 0
%vtable67 = load i8*, i8** %addr_vtable66, align 8
%vtable_ptr68 = bitcast i8* %vtable67 to [25 x i8*]*
%vtable69 = load [25 x i8*], [25 x i8*]* %vtable_ptr68, align 8
%func_raw70 = extractvalue [25 x i8*] %vtable69, 16
%func71 = bitcast i8* %func_raw70 to %Array* (%Array*, %Array*)*
%result72 = call %Array* %func71(%Array* %"::Array33", %Array* %"ary@31_65")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable73 = getelementptr inbounds %Array, %Array* %result72, i32 0, i32 0
%vtable74 = load i8*, i8** %addr_vtable73, align 8
%vtable_ptr75 = bitcast i8* %vtable74 to [25 x i8*]*
%vtable76 = load [25 x i8*], [25 x i8*]* %vtable_ptr75, align 8
%func_raw77 = extractvalue [25 x i8*] %vtable76, 23
%func78 = bitcast i8* %func_raw77 to %Array* (%Array*)*
%result79 = call %Array* %func78(%Array* %result72)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result79, %Array** %ret, align 8
%sk_int80 = call %Int* @box_int(i64 0)
store %Int* %sk_int80, %Int** %word_start, align 8
%sk_int81 = call %Int* @box_int(i64 0)
store %Int* %sk_int81, %Int** %sep_cur, align 8
%sk_int82 = call %Int* @box_int(i64 0)
store %Int* %sk_int82, %Int** %i, align 8
br label %WhileBegin
WhileBegin: ; preds = %"Invoke_Int#+_end242", %"Invoke_Meta:Array#new_end"
%i83 = load %Int*, %Int** %i, align 8
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable84 = getelementptr inbounds %Int, %Int* %i83, i32 0, i32 0
%vtable85 = load i8*, i8** %addr_vtable84, align 8
%vtable_ptr86 = bitcast i8* %vtable85 to [35 x i8*]*
%vtable87 = load [35 x i8*], [35 x i8*]* %vtable_ptr86, align 8
%func_raw88 = extractvalue [35 x i8*] %vtable87, 0
%func89 = bitcast i8* %func_raw88 to %Bool* (%Int*, %Int*)*
%result90 = call %Bool* %func89(%Int* %i83, %Int* %"@bytesize")
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool91 = call i1 @unbox_bool(%Bool* %result90)
%istrue92 = icmp eq i1 %llvm_bool91, true
br i1 %istrue92, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
br label %IfBegin93
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void243" = load %Void*, %Void** @"::Void", align 8
br label %IfBegin244
IfBegin93: ; preds = %WhileBody
%i97 = load %Int*, %Int** %i, align 8
br label %"Invoke_String#nth_byte"
IfThen94: ; preds = %"Invoke_Int#==_end123"
%sep_cur126 = load %Int*, %Int** %sep_cur, align 8
%sk_int127 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
IfElse95: ; preds = %"Invoke_Int#==_end123"
%sk_int229 = call %Int* @box_int(i64 0)
store %Int* %sk_int229, %Int** %sep_cur, align 8
%"::Void230" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd96
IfEnd96: ; preds = %IfElse95, %IfEnd138
%ifResult231 = phi %Void* [ %ifResult, %IfEnd138 ], [ %"::Void230", %IfElse95 ]
%i232 = load %Int*, %Int** %i, align 8
%sk_int233 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+234"
"Invoke_String#nth_byte": ; preds = %IfBegin93
%addr_vtable98 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable99 = load i8*, i8** %addr_vtable98, align 8
%vtable_ptr100 = bitcast i8* %vtable99 to [35 x i8*]*
%vtable101 = load [35 x i8*], [35 x i8*]* %vtable_ptr100, align 8
%func_raw102 = extractvalue [35 x i8*] %vtable101, 27
%func103 = bitcast i8* %func_raw102 to %Int* (%String*, %Int*)*
%result104 = call %Int* %func103(%String* %self, %Int* %i97)
br label %"Invoke_String#nth_byte_end"
"Invoke_String#nth_byte_end": ; preds = %"Invoke_String#nth_byte"
%sep_cur105 = load %Int*, %Int** %sep_cur, align 8
br label %"Invoke_String#nth_byte106"
"Invoke_String#nth_byte106": ; preds = %"Invoke_String#nth_byte_end"
%addr_vtable107 = getelementptr inbounds %String, %String* %sep, i32 0, i32 0
%vtable108 = load i8*, i8** %addr_vtable107, align 8
%vtable_ptr109 = bitcast i8* %vtable108 to [35 x i8*]*
%vtable110 = load [35 x i8*], [35 x i8*]* %vtable_ptr109, align 8
%func_raw111 = extractvalue [35 x i8*] %vtable110, 27
%func112 = bitcast i8* %func_raw111 to %Int* (%String*, %Int*)*
%result113 = call %Int* %func112(%String* %sep, %Int* %sep_cur105)
br label %"Invoke_String#nth_byte_end114"
"Invoke_String#nth_byte_end114": ; preds = %"Invoke_String#nth_byte106"
br label %"Invoke_Int#==115"
"Invoke_Int#==115": ; preds = %"Invoke_String#nth_byte_end114"
%addr_vtable116 = getelementptr inbounds %Int, %Int* %result104, i32 0, i32 0
%vtable117 = load i8*, i8** %addr_vtable116, align 8
%vtable_ptr118 = bitcast i8* %vtable117 to [35 x i8*]*
%vtable119 = load [35 x i8*], [35 x i8*]* %vtable_ptr118, align 8
%func_raw120 = extractvalue [35 x i8*] %vtable119, 2
%func121 = bitcast i8* %func_raw120 to %Bool* (%Int*, %Int*)*
%result122 = call %Bool* %func121(%Int* %result104, %Int* %result113)
br label %"Invoke_Int#==_end123"
"Invoke_Int#==_end123": ; preds = %"Invoke_Int#==115"
%llvm_bool124 = call i1 @unbox_bool(%Bool* %result122)
%istrue125 = icmp eq i1 %llvm_bool124, true
br i1 %istrue125, label %IfThen94, label %IfElse95
"Invoke_Int#+": ; preds = %IfThen94
%addr_vtable128 = getelementptr inbounds %Int, %Int* %sep_cur126, i32 0, i32 0
%vtable129 = load i8*, i8** %addr_vtable128, align 8
%vtable_ptr130 = bitcast i8* %vtable129 to [35 x i8*]*
%vtable131 = load [35 x i8*], [35 x i8*]* %vtable_ptr130, align 8
%func_raw132 = extractvalue [35 x i8*] %vtable131, 18
%func133 = bitcast i8* %func_raw132 to %Int* (%Int*, %Int*)*
%result134 = call %Int* %func133(%Int* %sep_cur126, %Int* %sk_int127)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result134, %Int** %sep_cur, align 8
br label %IfBegin135
IfBegin135: ; preds = %"Invoke_Int#+_end"
%sep_cur139 = load %Int*, %Int** %sep_cur, align 8
br label %"Invoke_String#bytesize140"
IfThen136: ; preds = %"Invoke_Int#==_end157"
%ret160 = load %Array*, %Array** %ret, align 8
%word_start161 = load %Int*, %Int** %word_start, align 8
%i162 = load %Int*, %Int** %i, align 8
%word_start163 = load %Int*, %Int** %word_start, align 8
br label %"Invoke_Int#-"
IfElse137: ; preds = %"Invoke_Int#==_end157"
%"::Void228" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd138
IfEnd138: ; preds = %IfElse137, %"Invoke_Int#+_end226"
%ifResult = phi %Void* [ %"::Void", %"Invoke_Int#+_end226" ], [ %"::Void228", %IfElse137 ]
br label %IfEnd96
"Invoke_String#bytesize140": ; preds = %IfBegin135
%addr_vtable141 = getelementptr inbounds %String, %String* %sep, i32 0, i32 0
%vtable142 = load i8*, i8** %addr_vtable141, align 8
%vtable_ptr143 = bitcast i8* %vtable142 to [35 x i8*]*
%vtable144 = load [35 x i8*], [35 x i8*]* %vtable_ptr143, align 8
%func_raw145 = extractvalue [35 x i8*] %vtable144, 19
%func146 = bitcast i8* %func_raw145 to %Int* (%String*)*
%result147 = call %Int* %func146(%String* %sep)
br label %"Invoke_String#bytesize_end148"
"Invoke_String#bytesize_end148": ; preds = %"Invoke_String#bytesize140"
br label %"Invoke_Int#==149"
"Invoke_Int#==149": ; preds = %"Invoke_String#bytesize_end148"
%addr_vtable150 = getelementptr inbounds %Int, %Int* %sep_cur139, i32 0, i32 0
%vtable151 = load i8*, i8** %addr_vtable150, align 8
%vtable_ptr152 = bitcast i8* %vtable151 to [35 x i8*]*
%vtable153 = load [35 x i8*], [35 x i8*]* %vtable_ptr152, align 8
%func_raw154 = extractvalue [35 x i8*] %vtable153, 2
%func155 = bitcast i8* %func_raw154 to %Bool* (%Int*, %Int*)*
%result156 = call %Bool* %func155(%Int* %sep_cur139, %Int* %result147)
br label %"Invoke_Int#==_end157"
"Invoke_Int#==_end157": ; preds = %"Invoke_Int#==149"
%llvm_bool158 = call i1 @unbox_bool(%Bool* %result156)
%istrue159 = icmp eq i1 %llvm_bool158, true
br i1 %istrue159, label %IfThen136, label %IfElse137
"Invoke_Int#-": ; preds = %IfThen136
%addr_vtable164 = getelementptr inbounds %Int, %Int* %i162, i32 0, i32 0
%vtable165 = load i8*, i8** %addr_vtable164, align 8
%vtable_ptr166 = bitcast i8* %vtable165 to [35 x i8*]*
%vtable167 = load [35 x i8*], [35 x i8*]* %vtable_ptr166, align 8
%func_raw168 = extractvalue [35 x i8*] %vtable167, 19
%func169 = bitcast i8* %func_raw168 to %Int* (%Int*, %Int*)*
%result170 = call %Int* %func169(%Int* %i162, %Int* %word_start163)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
br label %"Invoke_String#bytesize171"
"Invoke_String#bytesize171": ; preds = %"Invoke_Int#-_end"
%addr_vtable172 = getelementptr inbounds %String, %String* %sep, i32 0, i32 0
%vtable173 = load i8*, i8** %addr_vtable172, align 8
%vtable_ptr174 = bitcast i8* %vtable173 to [35 x i8*]*
%vtable175 = load [35 x i8*], [35 x i8*]* %vtable_ptr174, align 8
%func_raw176 = extractvalue [35 x i8*] %vtable175, 19
%func177 = bitcast i8* %func_raw176 to %Int* (%String*)*
%result178 = call %Int* %func177(%String* %sep)
br label %"Invoke_String#bytesize_end179"
"Invoke_String#bytesize_end179": ; preds = %"Invoke_String#bytesize171"
br label %"Invoke_Int#-180"
"Invoke_Int#-180": ; preds = %"Invoke_String#bytesize_end179"
%addr_vtable181 = getelementptr inbounds %Int, %Int* %result170, i32 0, i32 0
%vtable182 = load i8*, i8** %addr_vtable181, align 8
%vtable_ptr183 = bitcast i8* %vtable182 to [35 x i8*]*
%vtable184 = load [35 x i8*], [35 x i8*]* %vtable_ptr183, align 8
%func_raw185 = extractvalue [35 x i8*] %vtable184, 19
%func186 = bitcast i8* %func_raw185 to %Int* (%Int*, %Int*)*
%result187 = call %Int* %func186(%Int* %result170, %Int* %result178)
br label %"Invoke_Int#-_end188"
"Invoke_Int#-_end188": ; preds = %"Invoke_Int#-180"
%sk_int189 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+190"
"Invoke_Int#+190": ; preds = %"Invoke_Int#-_end188"
%addr_vtable191 = getelementptr inbounds %Int, %Int* %result187, i32 0, i32 0
%vtable192 = load i8*, i8** %addr_vtable191, align 8
%vtable_ptr193 = bitcast i8* %vtable192 to [35 x i8*]*
%vtable194 = load [35 x i8*], [35 x i8*]* %vtable_ptr193, align 8
%func_raw195 = extractvalue [35 x i8*] %vtable194, 18
%func196 = bitcast i8* %func_raw195 to %Int* (%Int*, %Int*)*
%result197 = call %Int* %func196(%Int* %result187, %Int* %sk_int189)
br label %"Invoke_Int#+_end198"
"Invoke_Int#+_end198": ; preds = %"Invoke_Int#+190"
br label %"Invoke_String#slice_bytes"
"Invoke_String#slice_bytes": ; preds = %"Invoke_Int#+_end198"
%addr_vtable199 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable200 = load i8*, i8** %addr_vtable199, align 8
%vtable_ptr201 = bitcast i8* %vtable200 to [35 x i8*]*
%vtable202 = load [35 x i8*], [35 x i8*]* %vtable_ptr201, align 8
%func_raw203 = extractvalue [35 x i8*] %vtable202, 30
%func204 = bitcast i8* %func_raw203 to %String* (%String*, %Int*, %Int*)*
%result205 = call %String* %func204(%String* %self, %Int* %word_start161, %Int* %result197)
br label %"Invoke_String#slice_bytes_end"
"Invoke_String#slice_bytes_end": ; preds = %"Invoke_String#slice_bytes"
%as206 = bitcast %String* %result205 to %Object*
br label %"Invoke_Array#push207"
"Invoke_Array#push207": ; preds = %"Invoke_String#slice_bytes_end"
%addr_vtable208 = getelementptr inbounds %Array, %Array* %ret160, i32 0, i32 0
%vtable209 = load i8*, i8** %addr_vtable208, align 8
%vtable_ptr210 = bitcast i8* %vtable209 to [54 x i8*]*
%vtable211 = load [54 x i8*], [54 x i8*]* %vtable_ptr210, align 8
%func_raw212 = extractvalue [54 x i8*] %vtable211, 45
%func213 = bitcast i8* %func_raw212 to %Void* (%Array*, %Object*)*
%result214 = call %Void* %func213(%Array* %ret160, %Object* %as206)
br label %"Invoke_Array#push_end215"
"Invoke_Array#push_end215": ; preds = %"Invoke_Array#push207"
%i216 = load %Int*, %Int** %i, align 8
%sk_int217 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+218"
"Invoke_Int#+218": ; preds = %"Invoke_Array#push_end215"
%addr_vtable219 = getelementptr inbounds %Int, %Int* %i216, i32 0, i32 0
%vtable220 = load i8*, i8** %addr_vtable219, align 8
%vtable_ptr221 = bitcast i8* %vtable220 to [35 x i8*]*
%vtable222 = load [35 x i8*], [35 x i8*]* %vtable_ptr221, align 8
%func_raw223 = extractvalue [35 x i8*] %vtable222, 18
%func224 = bitcast i8* %func_raw223 to %Int* (%Int*, %Int*)*
%result225 = call %Int* %func224(%Int* %i216, %Int* %sk_int217)
br label %"Invoke_Int#+_end226"
"Invoke_Int#+_end226": ; preds = %"Invoke_Int#+218"
store %Int* %result225, %Int** %word_start, align 8
%sk_int227 = call %Int* @box_int(i64 0)
store %Int* %sk_int227, %Int** %sep_cur, align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd138
"Invoke_Int#+234": ; preds = %IfEnd96
%addr_vtable235 = getelementptr inbounds %Int, %Int* %i232, i32 0, i32 0
%vtable236 = load i8*, i8** %addr_vtable235, align 8
%vtable_ptr237 = bitcast i8* %vtable236 to [35 x i8*]*
%vtable238 = load [35 x i8*], [35 x i8*]* %vtable_ptr237, align 8
%func_raw239 = extractvalue [35 x i8*] %vtable238, 18
%func240 = bitcast i8* %func_raw239 to %Int* (%Int*, %Int*)*
%result241 = call %Int* %func240(%Int* %i232, %Int* %sk_int233)
br label %"Invoke_Int#+_end242"
"Invoke_Int#+_end242": ; preds = %"Invoke_Int#+234"
store %Int* %result241, %Int** %i, align 8
br label %WhileBegin
IfBegin244: ; preds = %WhileEnd
%word_start248 = load %Int*, %Int** %word_start, align 8
%"addr_@bytesize249" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize250" = load %Int*, %Int** %"addr_@bytesize249", align 8
br label %"Invoke_Int#<251"
IfThen245: ; preds = %"Invoke_Int#<_end259"
%ret262 = load %Array*, %Array** %ret, align 8
%word_start263 = load %Int*, %Int** %word_start, align 8
%"addr_@bytesize264" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize265" = load %Int*, %Int** %"addr_@bytesize264", align 8
%word_start266 = load %Int*, %Int** %word_start, align 8
br label %"Invoke_Int#-267"
IfElse246: ; preds = %"Invoke_Int#<_end259"
%"::Void295" = load %Void*, %Void** @"::Void", align 8
%"::Void296" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd247
IfEnd247: ; preds = %IfElse246, %"Invoke_Array#push_end294"
%ifResult297 = phi %Void* [ %result293, %"Invoke_Array#push_end294" ], [ %"::Void296", %IfElse246 ]
%ret298 = load %Array*, %Array** %ret, align 8
br label %IfEnd
"Invoke_Int#<251": ; preds = %IfBegin244
%addr_vtable252 = getelementptr inbounds %Int, %Int* %word_start248, i32 0, i32 0
%vtable253 = load i8*, i8** %addr_vtable252, align 8
%vtable_ptr254 = bitcast i8* %vtable253 to [35 x i8*]*
%vtable255 = load [35 x i8*], [35 x i8*]* %vtable_ptr254, align 8
%func_raw256 = extractvalue [35 x i8*] %vtable255, 0
%func257 = bitcast i8* %func_raw256 to %Bool* (%Int*, %Int*)*
%result258 = call %Bool* %func257(%Int* %word_start248, %Int* %"@bytesize250")
br label %"Invoke_Int#<_end259"
"Invoke_Int#<_end259": ; preds = %"Invoke_Int#<251"
%llvm_bool260 = call i1 @unbox_bool(%Bool* %result258)
%istrue261 = icmp eq i1 %llvm_bool260, true
br i1 %istrue261, label %IfThen245, label %IfElse246
"Invoke_Int#-267": ; preds = %IfThen245
%addr_vtable268 = getelementptr inbounds %Int, %Int* %"@bytesize265", i32 0, i32 0
%vtable269 = load i8*, i8** %addr_vtable268, align 8
%vtable_ptr270 = bitcast i8* %vtable269 to [35 x i8*]*
%vtable271 = load [35 x i8*], [35 x i8*]* %vtable_ptr270, align 8
%func_raw272 = extractvalue [35 x i8*] %vtable271, 19
%func273 = bitcast i8* %func_raw272 to %Int* (%Int*, %Int*)*
%result274 = call %Int* %func273(%Int* %"@bytesize265", %Int* %word_start266)
br label %"Invoke_Int#-_end275"
"Invoke_Int#-_end275": ; preds = %"Invoke_Int#-267"
br label %"Invoke_String#slice_bytes276"
"Invoke_String#slice_bytes276": ; preds = %"Invoke_Int#-_end275"
%addr_vtable277 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable278 = load i8*, i8** %addr_vtable277, align 8
%vtable_ptr279 = bitcast i8* %vtable278 to [35 x i8*]*
%vtable280 = load [35 x i8*], [35 x i8*]* %vtable_ptr279, align 8
%func_raw281 = extractvalue [35 x i8*] %vtable280, 30
%func282 = bitcast i8* %func_raw281 to %String* (%String*, %Int*, %Int*)*
%result283 = call %String* %func282(%String* %self, %Int* %word_start263, %Int* %result274)
br label %"Invoke_String#slice_bytes_end284"
"Invoke_String#slice_bytes_end284": ; preds = %"Invoke_String#slice_bytes276"
%as285 = bitcast %String* %result283 to %Object*
br label %"Invoke_Array#push286"
"Invoke_Array#push286": ; preds = %"Invoke_String#slice_bytes_end284"
%addr_vtable287 = getelementptr inbounds %Array, %Array* %ret262, i32 0, i32 0
%vtable288 = load i8*, i8** %addr_vtable287, align 8
%vtable_ptr289 = bitcast i8* %vtable288 to [54 x i8*]*
%vtable290 = load [54 x i8*], [54 x i8*]* %vtable_ptr289, align 8
%func_raw291 = extractvalue [54 x i8*] %vtable290, 45
%func292 = bitcast i8* %func_raw291 to %Void* (%Array*, %Object*)*
%result293 = call %Void* %func292(%Array* %ret262, %Object* %as285)
br label %"Invoke_Array#push_end294"
"Invoke_Array#push_end294": ; preds = %"Invoke_Array#push286"
br label %IfEnd247
Ret: ; preds = %IfEnd
br label %End
}
define %Bool* @"String_starts__with?"(%String* %self, %String* %s) {
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ifResult, %Ret ]
ret %Bool* %methodResult
IfBegin: ; preds = %0
br label %"Invoke_String#bytesize"
IfThen: ; preds = %"Invoke_Int#>_end"
%sk_bool = call %Bool* @box_bool(i1 false)
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#>_end"
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_String#bytesize9"
IfEnd: ; preds = %"Invoke_String#==_end", %IfThen
%ifResult = phi %Bool* [ %sk_bool, %IfThen ], [ %result31, %"Invoke_String#==_end" ]
br label %Ret
"Invoke_String#bytesize": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %String, %String* %s, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 19
%func = bitcast i8* %func_raw to %Int* (%String*)*
%result = call %Int* %func(%String* %s)
br label %"Invoke_String#bytesize_end"
"Invoke_String#bytesize_end": ; preds = %"Invoke_String#bytesize"
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#>"
"Invoke_Int#>": ; preds = %"Invoke_String#bytesize_end"
%addr_vtable2 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 3
%func7 = bitcast i8* %func_raw6 to %Bool* (%Int*, %Int*)*
%result8 = call %Bool* %func7(%Int* %result, %Int* %"@bytesize")
br label %"Invoke_Int#>_end"
"Invoke_Int#>_end": ; preds = %"Invoke_Int#>"
%llvm_bool = call i1 @unbox_bool(%Bool* %result8)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_String#bytesize9": ; preds = %IfElse
%addr_vtable10 = getelementptr inbounds %String, %String* %s, i32 0, i32 0
%vtable11 = load i8*, i8** %addr_vtable10, align 8
%vtable_ptr12 = bitcast i8* %vtable11 to [35 x i8*]*
%vtable13 = load [35 x i8*], [35 x i8*]* %vtable_ptr12, align 8
%func_raw14 = extractvalue [35 x i8*] %vtable13, 19
%func15 = bitcast i8* %func_raw14 to %Int* (%String*)*
%result16 = call %Int* %func15(%String* %s)
br label %"Invoke_String#bytesize_end17"
"Invoke_String#bytesize_end17": ; preds = %"Invoke_String#bytesize9"
br label %"Invoke_String#slice_bytes"
"Invoke_String#slice_bytes": ; preds = %"Invoke_String#bytesize_end17"
%addr_vtable18 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [35 x i8*]*
%vtable21 = load [35 x i8*], [35 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [35 x i8*] %vtable21, 30
%func23 = bitcast i8* %func_raw22 to %String* (%String*, %Int*, %Int*)*
%result24 = call %String* %func23(%String* %self, %Int* %sk_int, %Int* %result16)
br label %"Invoke_String#slice_bytes_end"
"Invoke_String#slice_bytes_end": ; preds = %"Invoke_String#slice_bytes"
br label %"Invoke_String#=="
"Invoke_String#==": ; preds = %"Invoke_String#slice_bytes_end"
%addr_vtable25 = getelementptr inbounds %String, %String* %result24, i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [35 x i8*]*
%vtable28 = load [35 x i8*], [35 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [35 x i8*] %vtable28, 2
%func30 = bitcast i8* %func_raw29 to %Bool* (%String*, %String*)*
%result31 = call %Bool* %func30(%String* %result24, %String* %s)
br label %"Invoke_String#==_end"
"Invoke_String#==_end": ; preds = %"Invoke_String#=="
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Int* @String_to__i(%String* %self) {
alloca:
%n = alloca %Int*, align 8
%i = alloca %Int*, align 8
%start = alloca %Int*, align 8
%minus = alloca %Bool*, align 8
%b = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %minus, align 8
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %start, align 8
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Int* [ %ifResult198, %Ret ]
ret %Int* %methodResult
IfBegin: ; preds = %alloca_End
%sk_int1 = call %Int* @box_int(i64 0)
br label %"Invoke_String#nth_byte"
IfThen: ; preds = %"Invoke_Int#==_end"
%sk_int20 = call %Int* @box_int(i64 1)
store %Int* %sk_int20, %Int** %start, align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#==_end"
br label %IfBegin21
IfEnd: ; preds = %IfEnd24, %IfThen
%ifResult61 = phi %Void* [ %"::Void", %IfThen ], [ %ifResult, %IfEnd24 ]
%sk_int62 = call %Int* @box_int(i64 0)
store %Int* %sk_int62, %Int** %n, align 8
%start63 = load %Int*, %Int** %start, align 8
store %Int* %start63, %Int** %i, align 8
br label %WhileBegin
"Invoke_String#nth_byte": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 27
%func = bitcast i8* %func_raw to %Int* (%String*, %Int*)*
%result = call %Int* %func(%String* %self, %Int* %sk_int1)
br label %"Invoke_String#nth_byte_end"
"Invoke_String#nth_byte_end": ; preds = %"Invoke_String#nth_byte"
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_81, i32 0, i32 0), i64 1)
%sk_int3 = call %Int* @box_int(i64 0)
br label %"Invoke_String#nth_byte4"
"Invoke_String#nth_byte4": ; preds = %"Invoke_String#nth_byte_end"
%addr_vtable5 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable6 = load i8*, i8** %addr_vtable5, align 8
%vtable_ptr7 = bitcast i8* %vtable6 to [35 x i8*]*
%vtable8 = load [35 x i8*], [35 x i8*]* %vtable_ptr7, align 8
%func_raw9 = extractvalue [35 x i8*] %vtable8, 27
%func10 = bitcast i8* %func_raw9 to %Int* (%String*, %Int*)*
%result11 = call %Int* %func10(%String* %sk_str, %Int* %sk_int3)
br label %"Invoke_String#nth_byte_end12"
"Invoke_String#nth_byte_end12": ; preds = %"Invoke_String#nth_byte4"
br label %"Invoke_Int#=="
"Invoke_Int#==": ; preds = %"Invoke_String#nth_byte_end12"
%addr_vtable13 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable14 = load i8*, i8** %addr_vtable13, align 8
%vtable_ptr15 = bitcast i8* %vtable14 to [35 x i8*]*
%vtable16 = load [35 x i8*], [35 x i8*]* %vtable_ptr15, align 8
%func_raw17 = extractvalue [35 x i8*] %vtable16, 2
%func18 = bitcast i8* %func_raw17 to %Bool* (%Int*, %Int*)*
%result19 = call %Bool* %func18(%Int* %result, %Int* %result11)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result19)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
IfBegin21: ; preds = %IfElse
%sk_int25 = call %Int* @box_int(i64 0)
br label %"Invoke_String#nth_byte26"
IfThen22: ; preds = %"Invoke_Int#==_end54"
%sk_int57 = call %Int* @box_int(i64 1)
store %Int* %sk_int57, %Int** %start, align 8
%sk_bool58 = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool58, %Bool** %minus, align 8
%"::Void59" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd24
IfElse23: ; preds = %"Invoke_Int#==_end54"
%"::Void60" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd24
IfEnd24: ; preds = %IfElse23, %IfThen22
%ifResult = phi %Void* [ %"::Void59", %IfThen22 ], [ %"::Void60", %IfElse23 ]
br label %IfEnd
"Invoke_String#nth_byte26": ; preds = %IfBegin21
%addr_vtable27 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [35 x i8*]*
%vtable30 = load [35 x i8*], [35 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [35 x i8*] %vtable30, 27
%func32 = bitcast i8* %func_raw31 to %Int* (%String*, %Int*)*
%result33 = call %Int* %func32(%String* %self, %Int* %sk_int25)
br label %"Invoke_String#nth_byte_end34"
"Invoke_String#nth_byte_end34": ; preds = %"Invoke_String#nth_byte26"
%sk_str35 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_82, i32 0, i32 0), i64 1)
%sk_int36 = call %Int* @box_int(i64 0)
br label %"Invoke_String#nth_byte37"
"Invoke_String#nth_byte37": ; preds = %"Invoke_String#nth_byte_end34"
%addr_vtable38 = getelementptr inbounds %String, %String* %sk_str35, i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [35 x i8*]*
%vtable41 = load [35 x i8*], [35 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [35 x i8*] %vtable41, 27
%func43 = bitcast i8* %func_raw42 to %Int* (%String*, %Int*)*
%result44 = call %Int* %func43(%String* %sk_str35, %Int* %sk_int36)
br label %"Invoke_String#nth_byte_end45"
"Invoke_String#nth_byte_end45": ; preds = %"Invoke_String#nth_byte37"
br label %"Invoke_Int#==46"
"Invoke_Int#==46": ; preds = %"Invoke_String#nth_byte_end45"
%addr_vtable47 = getelementptr inbounds %Int, %Int* %result33, i32 0, i32 0
%vtable48 = load i8*, i8** %addr_vtable47, align 8
%vtable_ptr49 = bitcast i8* %vtable48 to [35 x i8*]*
%vtable50 = load [35 x i8*], [35 x i8*]* %vtable_ptr49, align 8
%func_raw51 = extractvalue [35 x i8*] %vtable50, 2
%func52 = bitcast i8* %func_raw51 to %Bool* (%Int*, %Int*)*
%result53 = call %Bool* %func52(%Int* %result33, %Int* %result44)
br label %"Invoke_Int#==_end54"
"Invoke_Int#==_end54": ; preds = %"Invoke_Int#==46"
%llvm_bool55 = call i1 @unbox_bool(%Bool* %result53)
%istrue56 = icmp eq i1 %llvm_bool55, true
br i1 %istrue56, label %IfThen22, label %IfElse23
WhileBegin: ; preds = %"Invoke_Int#+_end180", %IfEnd
%i64 = load %Int*, %Int** %i, align 8
%"addr_@bytesize" = getelementptr inbounds %String, %String* %self, i32 0, i32 3
%"@bytesize" = load %Int*, %Int** %"addr_@bytesize", align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable65 = getelementptr inbounds %Int, %Int* %i64, i32 0, i32 0
%vtable66 = load i8*, i8** %addr_vtable65, align 8
%vtable_ptr67 = bitcast i8* %vtable66 to [35 x i8*]*
%vtable68 = load [35 x i8*], [35 x i8*]* %vtable_ptr67, align 8
%func_raw69 = extractvalue [35 x i8*] %vtable68, 0
%func70 = bitcast i8* %func_raw69 to %Bool* (%Int*, %Int*)*
%result71 = call %Bool* %func70(%Int* %i64, %Int* %"@bytesize")
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool72 = call i1 @unbox_bool(%Bool* %result71)
%istrue73 = icmp eq i1 %llvm_bool72, true
br i1 %istrue73, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%i74 = load %Int*, %Int** %i, align 8
br label %"Invoke_String#nth_byte75"
WhileEnd: ; preds = %IfThen142, %"Invoke_Int#<_end"
%"::Void181" = load %Void*, %Void** @"::Void", align 8
br label %IfBegin182
"Invoke_String#nth_byte75": ; preds = %WhileBody
%addr_vtable76 = getelementptr inbounds %String, %String* %self, i32 0, i32 0
%vtable77 = load i8*, i8** %addr_vtable76, align 8
%vtable_ptr78 = bitcast i8* %vtable77 to [35 x i8*]*
%vtable79 = load [35 x i8*], [35 x i8*]* %vtable_ptr78, align 8
%func_raw80 = extractvalue [35 x i8*] %vtable79, 27
%func81 = bitcast i8* %func_raw80 to %Int* (%String*, %Int*)*
%result82 = call %Int* %func81(%String* %self, %Int* %i74)
br label %"Invoke_String#nth_byte_end83"
"Invoke_String#nth_byte_end83": ; preds = %"Invoke_String#nth_byte75"
store %Int* %result82, %Int** %b, align 8
br label %IfBegin84
IfBegin84: ; preds = %"Invoke_String#nth_byte_end83"
br label %AndBegin
IfThen85: ; preds = %AndEnd
%n112 = load %Int*, %Int** %n, align 8
%sk_int113 = call %Int* @box_int(i64 10)
br label %"Invoke_Int#*"
IfElse86: ; preds = %AndEnd
%"::Void139" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd87
IfEnd87: ; preds = %IfElse86, %"Invoke_Int#+_end"
%ifResult140 = phi %Void* [ %"::Void138", %"Invoke_Int#+_end" ], [ %"::Void139", %IfElse86 ]
br label %IfBegin141
AndBegin: ; preds = %IfBegin84
%sk_int88 = call %Int* @box_int(i64 48)
%b89 = load %Int*, %Int** %b, align 8
br label %"Invoke_Int#<="
AndMore: ; preds = %"Invoke_Int#<=_end"
%b99 = load %Int*, %Int** %b, align 8
%sk_int100 = call %Int* @box_int(i64 57)
br label %"Invoke_Int#<=101"
AndEnd: ; preds = %"Invoke_Int#<=_end109", %"Invoke_Int#<=_end"
%AndResult = phi %Bool* [ %result96, %"Invoke_Int#<=_end" ], [ %result108, %"Invoke_Int#<=_end109" ]
%llvm_bool110 = call i1 @unbox_bool(%Bool* %AndResult)
%istrue111 = icmp eq i1 %llvm_bool110, true
br i1 %istrue111, label %IfThen85, label %IfElse86
"Invoke_Int#<=": ; preds = %AndBegin
%addr_vtable90 = getelementptr inbounds %Int, %Int* %sk_int88, i32 0, i32 0
%vtable91 = load i8*, i8** %addr_vtable90, align 8
%vtable_ptr92 = bitcast i8* %vtable91 to [35 x i8*]*
%vtable93 = load [35 x i8*], [35 x i8*]* %vtable_ptr92, align 8
%func_raw94 = extractvalue [35 x i8*] %vtable93, 1
%func95 = bitcast i8* %func_raw94 to %Bool* (%Int*, %Int*)*
%result96 = call %Bool* %func95(%Int* %sk_int88, %Int* %b89)
br label %"Invoke_Int#<=_end"
"Invoke_Int#<=_end": ; preds = %"Invoke_Int#<="
%llvm_bool97 = call i1 @unbox_bool(%Bool* %result96)
%istrue98 = icmp eq i1 %llvm_bool97, true
br i1 %istrue98, label %AndMore, label %AndEnd
"Invoke_Int#<=101": ; preds = %AndMore
%addr_vtable102 = getelementptr inbounds %Int, %Int* %b99, i32 0, i32 0
%vtable103 = load i8*, i8** %addr_vtable102, align 8
%vtable_ptr104 = bitcast i8* %vtable103 to [35 x i8*]*
%vtable105 = load [35 x i8*], [35 x i8*]* %vtable_ptr104, align 8
%func_raw106 = extractvalue [35 x i8*] %vtable105, 1
%func107 = bitcast i8* %func_raw106 to %Bool* (%Int*, %Int*)*
%result108 = call %Bool* %func107(%Int* %b99, %Int* %sk_int100)
br label %"Invoke_Int#<=_end109"
"Invoke_Int#<=_end109": ; preds = %"Invoke_Int#<=101"
br label %AndEnd
"Invoke_Int#*": ; preds = %IfThen85
%addr_vtable114 = getelementptr inbounds %Int, %Int* %n112, i32 0, i32 0
%vtable115 = load i8*, i8** %addr_vtable114, align 8
%vtable_ptr116 = bitcast i8* %vtable115 to [35 x i8*]*
%vtable117 = load [35 x i8*], [35 x i8*]* %vtable_ptr116, align 8
%func_raw118 = extractvalue [35 x i8*] %vtable117, 17
%func119 = bitcast i8* %func_raw118 to %Int* (%Int*, %Int*)*
%result120 = call %Int* %func119(%Int* %n112, %Int* %sk_int113)
br label %"Invoke_Int#*_end"
"Invoke_Int#*_end": ; preds = %"Invoke_Int#*"
store %Int* %result120, %Int** %n, align 8
%n121 = load %Int*, %Int** %n, align 8
%b122 = load %Int*, %Int** %b, align 8
%sk_int123 = call %Int* @box_int(i64 48)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_Int#*_end"
%addr_vtable124 = getelementptr inbounds %Int, %Int* %b122, i32 0, i32 0
%vtable125 = load i8*, i8** %addr_vtable124, align 8
%vtable_ptr126 = bitcast i8* %vtable125 to [35 x i8*]*
%vtable127 = load [35 x i8*], [35 x i8*]* %vtable_ptr126, align 8
%func_raw128 = extractvalue [35 x i8*] %vtable127, 19
%func129 = bitcast i8* %func_raw128 to %Int* (%Int*, %Int*)*
%result130 = call %Int* %func129(%Int* %b122, %Int* %sk_int123)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %"Invoke_Int#-_end"
%addr_vtable131 = getelementptr inbounds %Int, %Int* %n121, i32 0, i32 0
%vtable132 = load i8*, i8** %addr_vtable131, align 8
%vtable_ptr133 = bitcast i8* %vtable132 to [35 x i8*]*
%vtable134 = load [35 x i8*], [35 x i8*]* %vtable_ptr133, align 8
%func_raw135 = extractvalue [35 x i8*] %vtable134, 18
%func136 = bitcast i8* %func_raw135 to %Int* (%Int*, %Int*)*
%result137 = call %Int* %func136(%Int* %n121, %Int* %result130)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result137, %Int** %n, align 8
%"::Void138" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd87
IfBegin141: ; preds = %IfEnd87
br label %OrBegin
IfThen142: ; preds = %OrEnd
br label %WhileEnd
IfElse143: ; preds = %OrEnd
%"::Void169" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd144
IfEnd144: ; preds = %IfElse143
%i170 = load %Int*, %Int** %i, align 8
%sk_int171 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+172"
OrBegin: ; preds = %IfBegin141
%b145 = load %Int*, %Int** %b, align 8
%sk_int146 = call %Int* @box_int(i64 48)
br label %"Invoke_Int#<147"
OrElse: ; preds = %"Invoke_Int#<_end155"
%b158 = load %Int*, %Int** %b, align 8
%sk_int159 = call %Int* @box_int(i64 57)
br label %"Invoke_Int#>"
OrEnd: ; preds = %"Invoke_Int#>_end", %"Invoke_Int#<_end155"
%OrResult = phi %Bool* [ %result154, %"Invoke_Int#<_end155" ], [ %result166, %"Invoke_Int#>_end" ]
%llvm_bool167 = call i1 @unbox_bool(%Bool* %OrResult)
%istrue168 = icmp eq i1 %llvm_bool167, true
br i1 %istrue168, label %IfThen142, label %IfElse143
"Invoke_Int#<147": ; preds = %OrBegin
%addr_vtable148 = getelementptr inbounds %Int, %Int* %b145, i32 0, i32 0
%vtable149 = load i8*, i8** %addr_vtable148, align 8
%vtable_ptr150 = bitcast i8* %vtable149 to [35 x i8*]*
%vtable151 = load [35 x i8*], [35 x i8*]* %vtable_ptr150, align 8
%func_raw152 = extractvalue [35 x i8*] %vtable151, 0
%func153 = bitcast i8* %func_raw152 to %Bool* (%Int*, %Int*)*
%result154 = call %Bool* %func153(%Int* %b145, %Int* %sk_int146)
br label %"Invoke_Int#<_end155"
"Invoke_Int#<_end155": ; preds = %"Invoke_Int#<147"
%llvm_bool156 = call i1 @unbox_bool(%Bool* %result154)
%istrue157 = icmp eq i1 %llvm_bool156, true
br i1 %istrue157, label %OrEnd, label %OrElse
"Invoke_Int#>": ; preds = %OrElse
%addr_vtable160 = getelementptr inbounds %Int, %Int* %b158, i32 0, i32 0
%vtable161 = load i8*, i8** %addr_vtable160, align 8
%vtable_ptr162 = bitcast i8* %vtable161 to [35 x i8*]*
%vtable163 = load [35 x i8*], [35 x i8*]* %vtable_ptr162, align 8
%func_raw164 = extractvalue [35 x i8*] %vtable163, 3
%func165 = bitcast i8* %func_raw164 to %Bool* (%Int*, %Int*)*
%result166 = call %Bool* %func165(%Int* %b158, %Int* %sk_int159)
br label %"Invoke_Int#>_end"
"Invoke_Int#>_end": ; preds = %"Invoke_Int#>"
br label %OrEnd
"Invoke_Int#+172": ; preds = %IfEnd144
%addr_vtable173 = getelementptr inbounds %Int, %Int* %i170, i32 0, i32 0
%vtable174 = load i8*, i8** %addr_vtable173, align 8
%vtable_ptr175 = bitcast i8* %vtable174 to [35 x i8*]*
%vtable176 = load [35 x i8*], [35 x i8*]* %vtable_ptr175, align 8
%func_raw177 = extractvalue [35 x i8*] %vtable176, 18
%func178 = bitcast i8* %func_raw177 to %Int* (%Int*, %Int*)*
%result179 = call %Int* %func178(%Int* %i170, %Int* %sk_int171)
br label %"Invoke_Int#+_end180"
"Invoke_Int#+_end180": ; preds = %"Invoke_Int#+172"
store %Int* %result179, %Int** %i, align 8
br label %WhileBegin
IfBegin182: ; preds = %WhileEnd
%minus186 = load %Bool*, %Bool** %minus, align 8
%llvm_bool187 = call i1 @unbox_bool(%Bool* %minus186)
%istrue188 = icmp eq i1 %llvm_bool187, true
br i1 %istrue188, label %IfThen183, label %IfElse184
IfThen183: ; preds = %IfBegin182
%n189 = load %Int*, %Int** %n, align 8
br label %"Invoke_Int#-@"
IfElse184: ; preds = %IfBegin182
%n197 = load %Int*, %Int** %n, align 8
br label %IfEnd185
IfEnd185: ; preds = %IfElse184, %"Invoke_Int#-@_end"
%ifResult198 = phi %Int* [ %result196, %"Invoke_Int#-@_end" ], [ %n197, %IfElse184 ]
br label %Ret
"Invoke_Int#-@": ; preds = %IfThen183
%addr_vtable190 = getelementptr inbounds %Int, %Int* %n189, i32 0, i32 0
%vtable191 = load i8*, i8** %addr_vtable190, align 8
%vtable_ptr192 = bitcast i8* %vtable191 to [35 x i8*]*
%vtable193 = load [35 x i8*], [35 x i8*]* %vtable_ptr192, align 8
%func_raw194 = extractvalue [35 x i8*] %vtable193, 20
%func195 = bitcast i8* %func_raw194 to %Int* (%Int*)*
%result196 = call %Int* %func195(%Int* %n189)
br label %"Invoke_Int#-@_end"
"Invoke_Int#-@_end": ; preds = %"Invoke_Int#-@"
br label %IfEnd185
Ret: ; preds = %IfEnd185
br label %End
}
define %MutableString* @String_to__mutable(%String* %self) {
alloca:
%ret = alloca %MutableString*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::MutableString" = load %MutableString*, %MutableString** @"::MutableString", align 8
br label %"Invoke_Meta:MutableString#new"
End: ; preds = %Ret
%methodResult = phi %MutableString* [ %ret10, %Ret ]
ret %MutableString* %methodResult
"Invoke_Meta:MutableString#new": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %"::MutableString", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 22
%func = bitcast i8* %func_raw to %MutableString* (%MutableString*)*
%result = call %MutableString* %func(%MutableString* %"::MutableString")
br label %"Invoke_Meta:MutableString#new_end"
"Invoke_Meta:MutableString#new_end": ; preds = %"Invoke_Meta:MutableString#new"
store %MutableString* %result, %MutableString** %ret, align 8
%ret2 = load %MutableString*, %MutableString** %ret, align 8
br label %"Invoke_MutableString#append"
"Invoke_MutableString#append": ; preds = %"Invoke_Meta:MutableString#new_end"
%addr_vtable3 = getelementptr inbounds %MutableString, %MutableString* %ret2, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [28 x i8*]*
%vtable6 = load [28 x i8*], [28 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [28 x i8*] %vtable6, 18
%func8 = bitcast i8* %func_raw7 to %Void* (%MutableString*, %String*)*
%result9 = call %Void* %func8(%MutableString* %ret2, %String* %self)
br label %"Invoke_MutableString#append_end"
"Invoke_MutableString#append_end": ; preds = %"Invoke_MutableString#append"
%ret10 = load %MutableString*, %MutableString** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_MutableString#append_end"
br label %End
}
define %String* @String_to__s(%String* %self) {
br label %Ret
End: ; preds = %Ret
%methodResult = phi %String* [ %self, %Ret ]
ret %String* %methodResult
Ret: ; preds = %0
br label %End
}
declare %Void* @Meta_Shiika_Internal_Memory_memcpy(%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"*, %Int*)
declare %"Shiika::Internal::Ptr"* @Meta_Shiika_Internal_Memory_gc__malloc(%"Shiika::Internal::Memory"*, %Int*)
declare %"Shiika::Internal::Ptr"* @Meta_Shiika_Internal_Memory_gc__realloc(%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %Int*)
define %Fn8* @Meta_Fn8_new(%Fn8* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn8*
%addr_vtable = getelementptr inbounds %Fn8, %Fn8* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn8 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn8* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn8, %Fn8* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn8* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn8* %addr
}
define %Maybe* @Maybe_map(%Maybe* %self, %Fn1* %f) {
alloca:
%"ary@1_" = alloca %Array*, align 8
%v = alloca %Object*, align 8
%"expr@0_" = alloca %Maybe*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %MatchBegin
End: ; preds = %Ret
%methodResult = phi %Maybe* [ %matchResult, %Ret ]
ret %Maybe* %methodResult
MatchBegin: ; preds = %alloca_End
store %Maybe* %self, %Maybe** %"expr@0_", align 8
br label %MatchClause1_
MatchClause1_: ; preds = %MatchBegin
%"expr@0_1" = load %Maybe*, %Maybe** %"expr@0_", align 8
br label %"Invoke_Object#class"
MatchClause2_: ; preds = %"Invoke_Class#==_end"
%"::Maybe::None" = load %"Maybe::None"*, %"Maybe::None"** @"::Maybe::None", align 8
%as69 = bitcast %"Maybe::None"* %"::Maybe::None" to %Maybe*
br label %MatchEnd
MatchClause3_: ; No predecessors!
%sk_int70 = call %Int* @box_int(i64 0)
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str_38, i32 0, i32 0), i64 24)
br label %"Invoke_Object#panic"
MatchEnd: ; preds = %MatchClause2_, %"Invoke_Meta:Maybe::Some#new_end"
%matchResult = phi %Maybe* [ %as68, %"Invoke_Meta:Maybe::Some#new_end" ], [ %as69, %MatchClause2_ ]
br label %Ret
"Invoke_Object#class": ; preds = %MatchClause1_
%addr_vtable = getelementptr inbounds %Maybe, %Maybe* %"expr@0_1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [18 x i8*]*
%vtable2 = load [18 x i8*], [18 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [18 x i8*] %vtable2, 5
%func = bitcast i8* %func_raw to %Class.0* (%Maybe*)*
%result = call %Class.0* %func(%Maybe* %"expr@0_1")
br label %"Invoke_Object#class_end"
"Invoke_Object#class_end": ; preds = %"Invoke_Object#class"
%"::Maybe::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Maybe::Some", align 8
%addr_class = getelementptr inbounds %Maybe, %Maybe* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result3 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
br label %"Invoke_Class#_specialize1"
"Invoke_Class#_specialize1": ; preds = %"Invoke_Object#class_end"
%addr_vtable4 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Maybe::Some", i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [23 x i8*]*
%vtable7 = load [23 x i8*], [23 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [23 x i8*] %vtable7, 18
%func9 = bitcast i8* %func_raw8 to %"Maybe::Some"* (%"Maybe::Some"*, %Class.0*)*
%result10 = call %"Maybe::Some"* %func9(%"Maybe::Some"* %"::Maybe::Some", %Class.0* %result3)
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Class#=="
"Invoke_Class#==": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable11 = getelementptr inbounds %Class.0, %Class.0* %result, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [22 x i8*]*
%vtable14 = load [22 x i8*], [22 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [22 x i8*] %vtable14, 2
%func16 = bitcast i8* %func_raw15 to %Bool* (%Class.0*, %"Maybe::Some"*)*
%result17 = call %Bool* %func16(%Class.0* %result, %"Maybe::Some"* %result10)
br label %"Invoke_Class#==_end"
"Invoke_Class#==_end": ; preds = %"Invoke_Class#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result17)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %Matching, label %MatchClause2_
Matching: ; preds = %"Invoke_Class#==_end"
%"expr@0_18" = load %Maybe*, %Maybe** %"expr@0_", align 8
%as = bitcast %Maybe* %"expr@0_18" to %"Maybe::Some"*
br label %"Invoke_Maybe::Some#value"
"Invoke_Maybe::Some#value": ; preds = %Matching
%addr_vtable19 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %as, i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [20 x i8*]*
%vtable22 = load [20 x i8*], [20 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [20 x i8*] %vtable22, 18
%func24 = bitcast i8* %func_raw23 to %Object* (%"Maybe::Some"*)*
%result25 = call %Object* %func24(%"Maybe::Some"* %as)
br label %"Invoke_Maybe::Some#value_end"
"Invoke_Maybe::Some#value_end": ; preds = %"Invoke_Maybe::Some#value"
store %Object* %result25, %Object** %v, align 8
%"::Maybe::Some26" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Maybe::Some", align 8
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize127"
"Invoke_Class#_specialize127": ; preds = %"Invoke_Maybe::Some#value_end"
%addr_vtable28 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable29 = load i8*, i8** %addr_vtable28, align 8
%vtable_ptr30 = bitcast i8* %vtable29 to [25 x i8*]*
%vtable31 = load [25 x i8*], [25 x i8*]* %vtable_ptr30, align 8
%func_raw32 = extractvalue [25 x i8*] %vtable31, 18
%func33 = bitcast i8* %func_raw32 to %Array* (%Array*, %Class.0*)*
%result34 = call %Array* %func33(%Array* %"::Array", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end35"
"Invoke_Class#_specialize1_end35": ; preds = %"Invoke_Class#_specialize127"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end35"
%addr_vtable36 = getelementptr inbounds %Array, %Array* %result34, i32 0, i32 0
%vtable37 = load i8*, i8** %addr_vtable36, align 8
%vtable_ptr38 = bitcast i8* %vtable37 to [25 x i8*]*
%vtable39 = load [25 x i8*], [25 x i8*]* %vtable_ptr38, align 8
%func_raw40 = extractvalue [25 x i8*] %vtable39, 23
%func41 = bitcast i8* %func_raw40 to %Array* (%Array*)*
%result42 = call %Array* %func41(%Array* %result34)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result42, %Array** %"ary@1_", align 8
%"ary@1_43" = load %Array*, %Array** %"ary@1_", align 8
%"::Object" = load %Object*, %Object** @"::Object", align 8
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable44 = getelementptr inbounds %Array, %Array* %"ary@1_43", i32 0, i32 0
%vtable45 = load i8*, i8** %addr_vtable44, align 8
%vtable_ptr46 = bitcast i8* %vtable45 to [54 x i8*]*
%vtable47 = load [54 x i8*], [54 x i8*]* %vtable_ptr46, align 8
%func_raw48 = extractvalue [54 x i8*] %vtable47, 45
%func49 = bitcast i8* %func_raw48 to %Void* (%Array*, %Object*)*
%result50 = call %Void* %func49(%Array* %"ary@1_43", %Object* %"::Object")
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@1_51" = load %Array*, %Array** %"ary@1_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable52 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Maybe::Some26", i32 0, i32 0
%vtable53 = load i8*, i8** %addr_vtable52, align 8
%vtable_ptr54 = bitcast i8* %vtable53 to [23 x i8*]*
%vtable55 = load [23 x i8*], [23 x i8*]* %vtable_ptr54, align 8
%func_raw56 = extractvalue [23 x i8*] %vtable55, 16
%func57 = bitcast i8* %func_raw56 to %"Maybe::Some"* (%"Maybe::Some"*, %Array*)*
%result58 = call %"Maybe::Some"* %func57(%"Maybe::Some"* %"::Maybe::Some26", %Array* %"ary@1_51")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
%v59 = load %Object*, %Object** %v, align 8
br label %Invoke_lambda
Invoke_lambda: ; preds = %"Invoke_Class#<>_end"
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Object* (%Fn1*, %Object*)*
%result60 = call %Object* %0(%Fn1* %f, %Object* %v59)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
br label %"Invoke_Meta:Maybe::Some#new"
"Invoke_Meta:Maybe::Some#new": ; preds = %Invoke_lambda_end
%addr_vtable61 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %result58, i32 0, i32 0
%vtable62 = load i8*, i8** %addr_vtable61, align 8
%vtable_ptr63 = bitcast i8* %vtable62 to [23 x i8*]*
%vtable64 = load [23 x i8*], [23 x i8*]* %vtable_ptr63, align 8
%func_raw65 = extractvalue [23 x i8*] %vtable64, 22
%func66 = bitcast i8* %func_raw65 to %"Maybe::Some"* (%"Maybe::Some"*, %Object*)*
%result67 = call %"Maybe::Some"* %func66(%"Maybe::Some"* %result58, %Object* %result60)
br label %"Invoke_Meta:Maybe::Some#new_end"
"Invoke_Meta:Maybe::Some#new_end": ; preds = %"Invoke_Meta:Maybe::Some#new"
%as68 = bitcast %"Maybe::Some"* %result67 to %Maybe*
br label %MatchEnd
"Invoke_Object#panic": ; preds = %MatchClause3_
%addr_vtable71 = getelementptr inbounds %Int, %Int* %sk_int70, i32 0, i32 0
%vtable72 = load i8*, i8** %addr_vtable71, align 8
%vtable_ptr73 = bitcast i8* %vtable72 to [35 x i8*]*
%vtable74 = load [35 x i8*], [35 x i8*]* %vtable_ptr73, align 8
%func_raw75 = extractvalue [35 x i8*] %vtable74, 12
%func76 = bitcast i8* %func_raw75 to void (%Int*, %String*)*
call void %func76(%Int* %sk_int70, %String* %sk_str)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
Ret: ; preds = %MatchEnd
br label %End
}
define %Object* @Maybe_expect(%Maybe* %self, %String* %msg) {
alloca:
%v = alloca %Object*, align 8
%"expr@2_" = alloca %Maybe*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %MatchBegin
End: ; preds = %Ret
%methodResult = phi %Object* [ %matchResult, %Ret ]
ret %Object* %methodResult
MatchBegin: ; preds = %alloca_End
store %Maybe* %self, %Maybe** %"expr@2_", align 8
br label %MatchClause1_
MatchClause1_: ; preds = %MatchBegin
%"expr@2_1" = load %Maybe*, %Maybe** %"expr@2_", align 8
br label %"Invoke_Object#class"
MatchClause2_: ; preds = %"Invoke_Class#==_end"
%as27 = bitcast %Maybe* %self to %Object*
%as28 = bitcast %String* %msg to %Object*
br label %"Invoke_Object#panic"
MatchClause3_: ; No predecessors!
%sk_int35 = call %Int* @box_int(i64 0)
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str_39, i32 0, i32 0), i64 24)
br label %"Invoke_Object#panic36"
MatchEnd: ; preds = %"Invoke_Maybe::Some#value_end"
%matchResult = phi %Object* [ %v26, %"Invoke_Maybe::Some#value_end" ]
br label %Ret
"Invoke_Object#class": ; preds = %MatchClause1_
%addr_vtable = getelementptr inbounds %Maybe, %Maybe* %"expr@2_1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [18 x i8*]*
%vtable2 = load [18 x i8*], [18 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [18 x i8*] %vtable2, 5
%func = bitcast i8* %func_raw to %Class.0* (%Maybe*)*
%result = call %Class.0* %func(%Maybe* %"expr@2_1")
br label %"Invoke_Object#class_end"
"Invoke_Object#class_end": ; preds = %"Invoke_Object#class"
%"::Maybe::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Maybe::Some", align 8
%addr_class = getelementptr inbounds %Maybe, %Maybe* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result3 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
br label %"Invoke_Class#_specialize1"
"Invoke_Class#_specialize1": ; preds = %"Invoke_Object#class_end"
%addr_vtable4 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Maybe::Some", i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [23 x i8*]*
%vtable7 = load [23 x i8*], [23 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [23 x i8*] %vtable7, 18
%func9 = bitcast i8* %func_raw8 to %"Maybe::Some"* (%"Maybe::Some"*, %Class.0*)*
%result10 = call %"Maybe::Some"* %func9(%"Maybe::Some"* %"::Maybe::Some", %Class.0* %result3)
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Class#=="
"Invoke_Class#==": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable11 = getelementptr inbounds %Class.0, %Class.0* %result, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [22 x i8*]*
%vtable14 = load [22 x i8*], [22 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [22 x i8*] %vtable14, 2
%func16 = bitcast i8* %func_raw15 to %Bool* (%Class.0*, %"Maybe::Some"*)*
%result17 = call %Bool* %func16(%Class.0* %result, %"Maybe::Some"* %result10)
br label %"Invoke_Class#==_end"
"Invoke_Class#==_end": ; preds = %"Invoke_Class#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result17)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %Matching, label %MatchClause2_
Matching: ; preds = %"Invoke_Class#==_end"
%"expr@2_18" = load %Maybe*, %Maybe** %"expr@2_", align 8
%as = bitcast %Maybe* %"expr@2_18" to %"Maybe::Some"*
br label %"Invoke_Maybe::Some#value"
"Invoke_Maybe::Some#value": ; preds = %Matching
%addr_vtable19 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %as, i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [20 x i8*]*
%vtable22 = load [20 x i8*], [20 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [20 x i8*] %vtable22, 18
%func24 = bitcast i8* %func_raw23 to %Object* (%"Maybe::Some"*)*
%result25 = call %Object* %func24(%"Maybe::Some"* %as)
br label %"Invoke_Maybe::Some#value_end"
"Invoke_Maybe::Some#value_end": ; preds = %"Invoke_Maybe::Some#value"
store %Object* %result25, %Object** %v, align 8
%v26 = load %Object*, %Object** %v, align 8
br label %MatchEnd
"Invoke_Object#panic": ; preds = %MatchClause2_
%addr_vtable29 = getelementptr inbounds %Object, %Object* %as27, i32 0, i32 0
%vtable30 = load i8*, i8** %addr_vtable29, align 8
%vtable_ptr31 = bitcast i8* %vtable30 to [16 x i8*]*
%vtable32 = load [16 x i8*], [16 x i8*]* %vtable_ptr31, align 8
%func_raw33 = extractvalue [16 x i8*] %vtable32, 12
%func34 = bitcast i8* %func_raw33 to void (%Object*, %Object*)*
call void %func34(%Object* %as27, %Object* %as28)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_Object#panic36": ; preds = %MatchClause3_
%addr_vtable37 = getelementptr inbounds %Int, %Int* %sk_int35, i32 0, i32 0
%vtable38 = load i8*, i8** %addr_vtable37, align 8
%vtable_ptr39 = bitcast i8* %vtable38 to [35 x i8*]*
%vtable40 = load [35 x i8*], [35 x i8*]* %vtable_ptr39, align 8
%func_raw41 = extractvalue [35 x i8*] %vtable40, 12
%func42 = bitcast i8* %func_raw41 to void (%Int*, %String*)*
call void %func42(%Int* %sk_int35, %String* %sk_str)
%"::Void43" = load %Void*, %Void** @"::Void", align 8
unreachable
Ret: ; preds = %MatchEnd
br label %End
}
define %String* @Maybe_inspect(%Maybe* %self) {
alloca:
%v = alloca %Object*, align 8
%"expr@3_" = alloca %Maybe*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %MatchBegin
End: ; preds = %Ret
%methodResult = phi %String* [ %matchResult, %Ret ]
ret %String* %methodResult
MatchBegin: ; preds = %alloca_End
store %Maybe* %self, %Maybe** %"expr@3_", align 8
br label %MatchClause1_
MatchClause1_: ; preds = %MatchBegin
%"expr@3_1" = load %Maybe*, %Maybe** %"expr@3_", align 8
br label %"Invoke_Object#class"
MatchClause2_: ; preds = %"Invoke_Class#==_end"
%sk_str51 = call %String* @gen_literal_string(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str_42, i32 0, i32 0), i64 7)
br label %MatchEnd
MatchClause3_: ; No predecessors!
%sk_int52 = call %Int* @box_int(i64 0)
%sk_str53 = call %String* @gen_literal_string(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str_43, i32 0, i32 0), i64 24)
br label %"Invoke_Object#panic"
MatchEnd: ; preds = %MatchClause2_, %"Invoke_String#+_end50"
%matchResult = phi %String* [ %result49, %"Invoke_String#+_end50" ], [ %sk_str51, %MatchClause2_ ]
br label %Ret
"Invoke_Object#class": ; preds = %MatchClause1_
%addr_vtable = getelementptr inbounds %Maybe, %Maybe* %"expr@3_1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [18 x i8*]*
%vtable2 = load [18 x i8*], [18 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [18 x i8*] %vtable2, 5
%func = bitcast i8* %func_raw to %Class.0* (%Maybe*)*
%result = call %Class.0* %func(%Maybe* %"expr@3_1")
br label %"Invoke_Object#class_end"
"Invoke_Object#class_end": ; preds = %"Invoke_Object#class"
%"::Maybe::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Maybe::Some", align 8
%addr_class = getelementptr inbounds %Maybe, %Maybe* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result3 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
br label %"Invoke_Class#_specialize1"
"Invoke_Class#_specialize1": ; preds = %"Invoke_Object#class_end"
%addr_vtable4 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Maybe::Some", i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [23 x i8*]*
%vtable7 = load [23 x i8*], [23 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [23 x i8*] %vtable7, 18
%func9 = bitcast i8* %func_raw8 to %"Maybe::Some"* (%"Maybe::Some"*, %Class.0*)*
%result10 = call %"Maybe::Some"* %func9(%"Maybe::Some"* %"::Maybe::Some", %Class.0* %result3)
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Class#=="
"Invoke_Class#==": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable11 = getelementptr inbounds %Class.0, %Class.0* %result, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [22 x i8*]*
%vtable14 = load [22 x i8*], [22 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [22 x i8*] %vtable14, 2
%func16 = bitcast i8* %func_raw15 to %Bool* (%Class.0*, %"Maybe::Some"*)*
%result17 = call %Bool* %func16(%Class.0* %result, %"Maybe::Some"* %result10)
br label %"Invoke_Class#==_end"
"Invoke_Class#==_end": ; preds = %"Invoke_Class#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result17)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %Matching, label %MatchClause2_
Matching: ; preds = %"Invoke_Class#==_end"
%"expr@3_18" = load %Maybe*, %Maybe** %"expr@3_", align 8
%as = bitcast %Maybe* %"expr@3_18" to %"Maybe::Some"*
br label %"Invoke_Maybe::Some#value"
"Invoke_Maybe::Some#value": ; preds = %Matching
%addr_vtable19 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %as, i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [20 x i8*]*
%vtable22 = load [20 x i8*], [20 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [20 x i8*] %vtable22, 18
%func24 = bitcast i8* %func_raw23 to %Object* (%"Maybe::Some"*)*
%result25 = call %Object* %func24(%"Maybe::Some"* %as)
br label %"Invoke_Maybe::Some#value_end"
"Invoke_Maybe::Some#value_end": ; preds = %"Invoke_Maybe::Some#value"
store %Object* %result25, %Object** %v, align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str_41, i32 0, i32 0), i64 7)
%v26 = load %Object*, %Object** %v, align 8
br label %"Invoke_Object#inspect"
"Invoke_Object#inspect": ; preds = %"Invoke_Maybe::Some#value_end"
%addr_vtable27 = getelementptr inbounds %Object, %Object* %v26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [16 x i8*]*
%vtable30 = load [16 x i8*], [16 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [16 x i8*] %vtable30, 9
%func32 = bitcast i8* %func_raw31 to %String* (%Object*)*
%result33 = call %String* %func32(%Object* %v26)
br label %"Invoke_Object#inspect_end"
"Invoke_Object#inspect_end": ; preds = %"Invoke_Object#inspect"
br label %"Invoke_String#+"
"Invoke_String#+": ; preds = %"Invoke_Object#inspect_end"
%addr_vtable34 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable35 = load i8*, i8** %addr_vtable34, align 8
%vtable_ptr36 = bitcast i8* %vtable35 to [35 x i8*]*
%vtable37 = load [35 x i8*], [35 x i8*]* %vtable_ptr36, align 8
%func_raw38 = extractvalue [35 x i8*] %vtable37, 17
%func39 = bitcast i8* %func_raw38 to %String* (%String*, %String*)*
%result40 = call %String* %func39(%String* %sk_str, %String* %result33)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str41 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_40, i32 0, i32 0), i64 1)
br label %"Invoke_String#+42"
"Invoke_String#+42": ; preds = %"Invoke_String#+_end"
%addr_vtable43 = getelementptr inbounds %String, %String* %result40, i32 0, i32 0
%vtable44 = load i8*, i8** %addr_vtable43, align 8
%vtable_ptr45 = bitcast i8* %vtable44 to [35 x i8*]*
%vtable46 = load [35 x i8*], [35 x i8*]* %vtable_ptr45, align 8
%func_raw47 = extractvalue [35 x i8*] %vtable46, 17
%func48 = bitcast i8* %func_raw47 to %String* (%String*, %String*)*
%result49 = call %String* %func48(%String* %result40, %String* %sk_str41)
br label %"Invoke_String#+_end50"
"Invoke_String#+_end50": ; preds = %"Invoke_String#+42"
br label %MatchEnd
"Invoke_Object#panic": ; preds = %MatchClause3_
%addr_vtable54 = getelementptr inbounds %Int, %Int* %sk_int52, i32 0, i32 0
%vtable55 = load i8*, i8** %addr_vtable54, align 8
%vtable_ptr56 = bitcast i8* %vtable55 to [35 x i8*]*
%vtable57 = load [35 x i8*], [35 x i8*]* %vtable_ptr56, align 8
%func_raw58 = extractvalue [35 x i8*] %vtable57, 12
%func59 = bitcast i8* %func_raw58 to void (%Int*, %String*)*
call void %func59(%Int* %sk_int52, %String* %sk_str53)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
Ret: ; preds = %MatchEnd
br label %End
}
define %String* @Void_to__s(%Void* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_83, i32 0, i32 0), i64 4)
br label %Ret
End: ; preds = %Ret
%methodResult = phi %String* [ %sk_str, %Ret ]
ret %String* %methodResult
Ret: ; preds = %0
br label %End
}
declare %Float* @Meta_Math_sin(%Math*, %Float*)
declare %Float* @Meta_Math_cos(%Math*, %Float*)
declare %Float* @Meta_Math_sqrt(%Math*, %Float*)
define %Dict* @Meta_Dict_new(%Dict* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %Dict*
%addr_vtable = getelementptr inbounds %Dict, %Dict* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Dict to i8*), i8** %addr_vtable, align 8
%class = bitcast %Dict* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Dict, %Dict* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Dict_initialize(%Dict* %addr)
ret %Dict* %addr
}
define %"Maybe::Some"* @Meta_Maybe_Some_new(%"Maybe::Some"* %self, %Object* %value) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %"Maybe::Some"*
%addr_vtable = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %addr, i32 0, i32 0
store i8* bitcast ([20 x i8*]* @"shiika_vtable_Maybe::Some" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Maybe::Some"* %self to %Class.0*
%addr_my_class = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Maybe_Some_initialize(%"Maybe::Some"* %addr, %Object* %value)
ret %"Maybe::Some"* %addr
}
define %Fn3* @Meta_Fn3_new(%Fn3* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn3*
%addr_vtable = getelementptr inbounds %Fn3, %Fn3* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn3 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn3* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn3, %Fn3* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn3* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn3* %addr
}
define %Class.0* @Meta_Class_new(%Class.0* %self, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%addr = bitcast i8* %mem to %Class.0*
%addr_vtable = getelementptr inbounds %Class.0, %Class.0* %addr, i32 0, i32 0
store i8* bitcast ([22 x i8*]* @shiika_vtable_Class to i8*), i8** %addr_vtable, align 8
%addr_my_class = getelementptr inbounds %Class.0, %Class.0* %addr, i32 0, i32 1
store %Class.0* %self, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Class_initialize(%Class.0* %addr, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj)
ret %Class.0* %addr
}
define %Fn0* @Meta_Fn0_new(%Fn0* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn0*
%addr_vtable = getelementptr inbounds %Fn0, %Fn0* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn0 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn0* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn0, %Fn0* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn0* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn0* %addr
}
define %Bool* @"Enumerable_all?"(%Enumerable* %self, %Fn1* %f) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_25_in_Enumerable#all?" to i8*))
%the_main = bitcast %Enumerable* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%capture_item1 = bitcast %Bool** %ret to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item1)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
br label %Invoke_each
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret5, %Ret ]
ret %Bool* %methodResult
Invoke_each: ; preds = %alloca_End
%method = call i8* @shiika_lookup_wtable(%Enumerable* %self, i64 ptrtoint (%Enumerable** @"::Enumerable" to i64), i64 0)
%as = bitcast i8* %method to %Void* (%Enumerable*, %Fn1*)*
%result4 = call %Void* %as(%Enumerable* %self, %Fn1* %result3)
br label %Invoke_each_end
Invoke_each_end: ; preds = %Invoke_each
%ret5 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %Invoke_each_end
br label %End
}
define %Void* @File_initialize(%File* %self, %String* %"@path", %Object* %"@file") {
%"addr_@path" = getelementptr inbounds %File, %File* %self, i32 0, i32 2
store %String* %"@path", %String** %"addr_@path", align 8
%"addr_@file" = getelementptr inbounds %File, %File* %self, i32 0, i32 3
store %Object* %"@file", %Object** %"addr_@file", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %String* @File_path(%File* %self) {
%"addr_@path" = getelementptr inbounds %File, %File* %self, i32 0, i32 2
%"@path" = load %String*, %String** %"addr_@path", align 8
ret %String* %"@path"
}
define %String* @_set_File_path(%File* %self, %String* %path) {
%"addr_@path" = getelementptr inbounds %File, %File* %self, i32 0, i32 2
store %String* %path, %String** %"addr_@path", align 8
ret %String* %path
}
define %Object* @File_file(%File* %self) {
%"addr_@file" = getelementptr inbounds %File, %File* %self, i32 0, i32 3
%"@file" = load %Object*, %Object** %"addr_@file", align 8
ret %Object* %"@file"
}
define %Object* @_set_File_file(%File* %self, %Object* %file) {
%"addr_@file" = getelementptr inbounds %File, %File* %self, i32 0, i32 3
store %Object* %file, %Object** %"addr_@file", align 8
ret %Object* %file
}
define %Pair* @Meta_Pair_new(%Pair* %self, %Object* %"@fst", %Object* %"@snd") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 4))
%addr = bitcast i8* %mem to %Pair*
%addr_vtable = getelementptr inbounds %Pair, %Pair* %addr, i32 0, i32 0
store i8* bitcast ([20 x i8*]* @shiika_vtable_Pair to i8*), i8** %addr_vtable, align 8
%class = bitcast %Pair* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Pair, %Pair* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Pair_initialize(%Pair* %addr, %Object* %"@fst", %Object* %"@snd")
ret %Pair* %addr
}
define %Fn7* @Meta_Fn7_new(%Fn7* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn7*
%addr_vtable = getelementptr inbounds %Fn7, %Fn7* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn7 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn7* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn7, %Fn7* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn7* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn7* %addr
}
declare %"Shiika::Internal::Ptr"* @Shiika_Internal_Ptr_add_(%"Shiika::Internal::Ptr"*, %Int*)
declare %Object* @Shiika_Internal_Ptr_load(%"Shiika::Internal::Ptr"*)
declare %Int* @Shiika_Internal_Ptr_read(%"Shiika::Internal::Ptr"*)
declare %Void* @Shiika_Internal_Ptr_store(%"Shiika::Internal::Ptr"*, %Object*)
declare %Void* @Shiika_Internal_Ptr_write(%"Shiika::Internal::Ptr"*, %Int*)
define %Fn6* @Meta_Fn6_new(%Fn6* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn6*
%addr_vtable = getelementptr inbounds %Fn6, %Fn6* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn6 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn6* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn6, %Fn6* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn6* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn6* %addr
}
define %Void* @Fn_initialize(%Fn* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%"addr_@func" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 2
store %"Shiika::Internal::Ptr"* %"@func", %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%"addr_@the_self" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 3
store %Object* %"@the_self", %Object** %"addr_@the_self", align 8
%"addr_@captures" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 4
store %Array* %"@captures", %Array** %"addr_@captures", align 8
%"::Fn::EXIT_NORMAL" = load %Int*, %Int** @"::Fn::EXIT_NORMAL", align 8
%"addr_@exit_status" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 5
store %Int* %"::Fn::EXIT_NORMAL", %Int** %"addr_@exit_status", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %Array* @Fn_captures(%Fn* %self) {
%"addr_@captures" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
ret %Array* %"@captures"
}
define %Array* @_set_Fn_captures(%Fn* %self, %Array* %captures) {
%"addr_@captures" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 4
store %Array* %captures, %Array** %"addr_@captures", align 8
ret %Array* %captures
}
define %"Shiika::Internal::Ptr"* @Fn_func(%Fn* %self) {
%"addr_@func" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
ret %"Shiika::Internal::Ptr"* %"@func"
}
define %"Shiika::Internal::Ptr"* @_set_Fn_func(%Fn* %self, %"Shiika::Internal::Ptr"* %func) {
%"addr_@func" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 2
store %"Shiika::Internal::Ptr"* %func, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
ret %"Shiika::Internal::Ptr"* %func
}
define %Int* @Fn_exit__status(%Fn* %self) {
%"addr_@exit_status" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
ret %Int* %"@exit_status"
}
define %Int* @_set_Fn_exit__status(%Fn* %self, %Int* %exit_status) {
%"addr_@exit_status" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 5
store %Int* %exit_status, %Int** %"addr_@exit_status", align 8
ret %Int* %exit_status
}
define %Object* @Fn_the__self(%Fn* %self) {
%"addr_@the_self" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 3
%"@the_self" = load %Object*, %Object** %"addr_@the_self", align 8
ret %Object* %"@the_self"
}
define %Object* @_set_Fn_the__self(%Fn* %self, %Object* %the_self) {
%"addr_@the_self" = getelementptr inbounds %Fn, %Fn* %self, i32 0, i32 3
store %Object* %the_self, %Object** %"addr_@the_self", align 8
ret %Object* %the_self
}
define %Void* @Error_initialize(%Error* %self, %String* %"@msg") {
%"addr_@msg" = getelementptr inbounds %Error, %Error* %self, i32 0, i32 2
store %String* %"@msg", %String** %"addr_@msg", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %String* @Error_msg(%Error* %self) {
%"addr_@msg" = getelementptr inbounds %Error, %Error* %self, i32 0, i32 2
%"@msg" = load %String*, %String** %"addr_@msg", align 8
ret %String* %"@msg"
}
define %String* @_set_Error_msg(%Error* %self, %String* %msg) {
%"addr_@msg" = getelementptr inbounds %Error, %Error* %self, i32 0, i32 2
store %String* %msg, %String** %"addr_@msg", align 8
ret %String* %msg
}
define %Void* @Dict_initialize(%Dict* %self) {
alloca:
%"ary@19_" = alloca %Array*, align 8
%"ary@18_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%"::Void100" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void100"
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@19_", align 8
%"ary@19_10" = load %Array*, %Array** %"ary@19_", align 8
%"::Dict::Table" = load %"Dict::Table"*, %"Dict::Table"** @"::Dict::Table", align 8
%"::Array11" = load %Array*, %Array** @"::Array", align 8
%"::Class12" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize113"
"Invoke_Class#_specialize113": ; preds = %"Invoke_Array#new_end"
%addr_vtable14 = getelementptr inbounds %Array, %Array* %"::Array11", i32 0, i32 0
%vtable15 = load i8*, i8** %addr_vtable14, align 8
%vtable_ptr16 = bitcast i8* %vtable15 to [25 x i8*]*
%vtable17 = load [25 x i8*], [25 x i8*]* %vtable_ptr16, align 8
%func_raw18 = extractvalue [25 x i8*] %vtable17, 18
%func19 = bitcast i8* %func_raw18 to %Array* (%Array*, %Class.0*)*
%result20 = call %Array* %func19(%Array* %"::Array11", %Class.0* %"::Class12")
br label %"Invoke_Class#_specialize1_end21"
"Invoke_Class#_specialize1_end21": ; preds = %"Invoke_Class#_specialize113"
br label %"Invoke_Array#new22"
"Invoke_Array#new22": ; preds = %"Invoke_Class#_specialize1_end21"
%addr_vtable23 = getelementptr inbounds %Array, %Array* %result20, i32 0, i32 0
%vtable24 = load i8*, i8** %addr_vtable23, align 8
%vtable_ptr25 = bitcast i8* %vtable24 to [25 x i8*]*
%vtable26 = load [25 x i8*], [25 x i8*]* %vtable_ptr25, align 8
%func_raw27 = extractvalue [25 x i8*] %vtable26, 23
%func28 = bitcast i8* %func_raw27 to %Array* (%Array*)*
%result29 = call %Array* %func28(%Array* %result20)
br label %"Invoke_Array#new_end30"
"Invoke_Array#new_end30": ; preds = %"Invoke_Array#new22"
store %Array* %result29, %Array** %"ary@18_", align 8
%"ary@18_31" = load %Array*, %Array** %"ary@18_", align 8
%addr_class = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result32 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result32 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end30"
%addr_vtable33 = getelementptr inbounds %Array, %Array* %"ary@18_31", i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [54 x i8*]*
%vtable36 = load [54 x i8*], [54 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [54 x i8*] %vtable36, 45
%func38 = bitcast i8* %func_raw37 to %Void* (%Array*, %Object*)*
%result39 = call %Void* %func38(%Array* %"ary@18_31", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@18_40" = load %Array*, %Array** %"ary@18_", align 8
%addr_class41 = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 1
%class42 = load %Class.0*, %Class.0** %addr_class41, align 8
%sk_int43 = call %Int* @box_int(i64 1)
%result44 = call %Class.0* @Class___type__argument(%Class.0* %class42, %Int* %sk_int43)
%as45 = bitcast %Class.0* %result44 to %Object*
br label %"Invoke_Array#push46"
"Invoke_Array#push46": ; preds = %"Invoke_Array#push_end"
%addr_vtable47 = getelementptr inbounds %Array, %Array* %"ary@18_40", i32 0, i32 0
%vtable48 = load i8*, i8** %addr_vtable47, align 8
%vtable_ptr49 = bitcast i8* %vtable48 to [54 x i8*]*
%vtable50 = load [54 x i8*], [54 x i8*]* %vtable_ptr49, align 8
%func_raw51 = extractvalue [54 x i8*] %vtable50, 45
%func52 = bitcast i8* %func_raw51 to %Void* (%Array*, %Object*)*
%result53 = call %Void* %func52(%Array* %"ary@18_40", %Object* %as45)
br label %"Invoke_Array#push_end54"
"Invoke_Array#push_end54": ; preds = %"Invoke_Array#push46"
%"ary@18_55" = load %Array*, %Array** %"ary@18_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end54"
%addr_vtable56 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %"::Dict::Table", i32 0, i32 0
%vtable57 = load i8*, i8** %addr_vtable56, align 8
%vtable_ptr58 = bitcast i8* %vtable57 to [23 x i8*]*
%vtable59 = load [23 x i8*], [23 x i8*]* %vtable_ptr58, align 8
%func_raw60 = extractvalue [23 x i8*] %vtable59, 16
%func61 = bitcast i8* %func_raw60 to %"Dict::Table"* (%"Dict::Table"*, %Array*)*
%result62 = call %"Dict::Table"* %func61(%"Dict::Table"* %"::Dict::Table", %Array* %"ary@18_55")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
%as63 = bitcast %"Dict::Table"* %result62 to %Object*
br label %"Invoke_Array#push64"
"Invoke_Array#push64": ; preds = %"Invoke_Class#<>_end"
%addr_vtable65 = getelementptr inbounds %Array, %Array* %"ary@19_10", i32 0, i32 0
%vtable66 = load i8*, i8** %addr_vtable65, align 8
%vtable_ptr67 = bitcast i8* %vtable66 to [54 x i8*]*
%vtable68 = load [54 x i8*], [54 x i8*]* %vtable_ptr67, align 8
%func_raw69 = extractvalue [54 x i8*] %vtable68, 45
%func70 = bitcast i8* %func_raw69 to %Void* (%Array*, %Object*)*
%result71 = call %Void* %func70(%Array* %"ary@19_10", %Object* %as63)
br label %"Invoke_Array#push_end72"
"Invoke_Array#push_end72": ; preds = %"Invoke_Array#push64"
%"ary@19_73" = load %Array*, %Array** %"ary@19_", align 8
br label %"Invoke_Class#<>74"
"Invoke_Class#<>74": ; preds = %"Invoke_Array#push_end72"
%addr_vtable75 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable76 = load i8*, i8** %addr_vtable75, align 8
%vtable_ptr77 = bitcast i8* %vtable76 to [25 x i8*]*
%vtable78 = load [25 x i8*], [25 x i8*]* %vtable_ptr77, align 8
%func_raw79 = extractvalue [25 x i8*] %vtable78, 16
%func80 = bitcast i8* %func_raw79 to %Array* (%Array*, %Array*)*
%result81 = call %Array* %func80(%Array* %"::Array", %Array* %"ary@19_73")
br label %"Invoke_Class#<>_end82"
"Invoke_Class#<>_end82": ; preds = %"Invoke_Class#<>74"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end82"
%addr_vtable83 = getelementptr inbounds %Array, %Array* %result81, i32 0, i32 0
%vtable84 = load i8*, i8** %addr_vtable83, align 8
%vtable_ptr85 = bitcast i8* %vtable84 to [25 x i8*]*
%vtable86 = load [25 x i8*], [25 x i8*]* %vtable_ptr85, align 8
%func_raw87 = extractvalue [25 x i8*] %vtable86, 23
%func88 = bitcast i8* %func_raw87 to %Array* (%Array*)*
%result89 = call %Array* %func88(%Array* %result81)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
%"addr_@tables" = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 2
store %Array* %result89, %Array** %"addr_@tables", align 8
%"::Dict::N_TABLES" = load %Int*, %Int** @"::Dict::N_TABLES", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_17_in_Dict#initialize" to i8*))
%the_main = bitcast %Dict* %self to %Object*
%"::Array90" = load %Array*, %Array** @"::Array", align 8
%result91 = call %Array* @Meta_Array_new(%Array* %"::Array90")
%result92 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result91)
br label %"Invoke_Int#times"
"Invoke_Int#times": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable93 = getelementptr inbounds %Int, %Int* %"::Dict::N_TABLES", i32 0, i32 0
%vtable94 = load i8*, i8** %addr_vtable93, align 8
%vtable_ptr95 = bitcast i8* %vtable94 to [35 x i8*]*
%vtable96 = load [35 x i8*], [35 x i8*]* %vtable_ptr95, align 8
%func_raw97 = extractvalue [35 x i8*] %vtable96, 30
%func98 = bitcast i8* %func_raw97 to %Void* (%Int*, %Fn1*)*
%result99 = call %Void* %func98(%Int* %"::Dict::N_TABLES", %Fn1* %result92)
br label %"Invoke_Int#times_end"
"Invoke_Int#times_end": ; preds = %"Invoke_Int#times"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Int#times_end"
br label %End
}
define %Array* @Dict_tables(%Dict* %self) {
%"addr_@tables" = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 2
%"@tables" = load %Array*, %Array** %"addr_@tables", align 8
ret %Array* %"@tables"
}
define %Array* @_set_Dict_tables(%Dict* %self, %Array* %tables) {
%"addr_@tables" = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 2
store %Array* %tables, %Array** %"addr_@tables", align 8
ret %Array* %tables
}
define %"Dict::Table"* @Dict___table(%Dict* %self, %Object* %key) {
%"addr_@tables" = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 2
%"@tables" = load %Array*, %Array** %"addr_@tables", align 8
br label %"Invoke_Object#hash"
End: ; preds = %Ret
%methodResult = phi %"Dict::Table"* [ %result24, %Ret ]
ret %"Dict::Table"* %methodResult
"Invoke_Object#hash": ; preds = %0
%addr_vtable = getelementptr inbounds %Object, %Object* %key, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 7
%func = bitcast i8* %func_raw to %Int* (%Object*)*
%result = call %Int* %func(%Object* %key)
br label %"Invoke_Object#hash_end"
"Invoke_Object#hash_end": ; preds = %"Invoke_Object#hash"
%"addr_@tables2" = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 2
%"@tables3" = load %Array*, %Array** %"addr_@tables2", align 8
br label %"Invoke_Array#length"
"Invoke_Array#length": ; preds = %"Invoke_Object#hash_end"
%addr_vtable4 = getelementptr inbounds %Array, %Array* %"@tables3", i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [54 x i8*]*
%vtable7 = load [54 x i8*], [54 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [54 x i8*] %vtable7, 39
%func9 = bitcast i8* %func_raw8 to %Int* (%Array*)*
%result10 = call %Int* %func9(%Array* %"@tables3")
br label %"Invoke_Array#length_end"
"Invoke_Array#length_end": ; preds = %"Invoke_Array#length"
br label %"Invoke_Int#%"
"Invoke_Int#%": ; preds = %"Invoke_Array#length_end"
%addr_vtable11 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 16
%func16 = bitcast i8* %func_raw15 to %Int* (%Int*, %Int*)*
%result17 = call %Int* %func16(%Int* %result, %Int* %result10)
br label %"Invoke_Int#%_end"
"Invoke_Int#%_end": ; preds = %"Invoke_Int#%"
%as = bitcast %Int* %result17 to %Object*
br label %"Invoke_Array#[]"
"Invoke_Array#[]": ; preds = %"Invoke_Int#%_end"
%addr_vtable18 = getelementptr inbounds %Array, %Array* %"@tables", i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [54 x i8*]*
%vtable21 = load [54 x i8*], [54 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [54 x i8*] %vtable21, 16
%func23 = bitcast i8* %func_raw22 to %"Dict::Table"* (%Array*, %Object*)*
%result24 = call %"Dict::Table"* %func23(%Array* %"@tables", %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %Ret
Ret: ; preds = %"Invoke_Array#[]_end"
br label %End
}
define %Void* @Dict_aset_(%Dict* %self, %Object* %key, %Object* %value) {
br label %"Invoke_Dict#_table"
End: ; preds = %Ret
%"::Void9" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void9"
"Invoke_Dict#_table": ; preds = %0
%addr_vtable = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [24 x i8*]*
%vtable1 = load [24 x i8*], [24 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [24 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %"Dict::Table"* (%Dict*, %Object*)*
%result = call %"Dict::Table"* %func(%Dict* %self, %Object* %key)
br label %"Invoke_Dict#_table_end"
"Invoke_Dict#_table_end": ; preds = %"Invoke_Dict#_table"
br label %"Invoke_Dict::Table#[]="
"Invoke_Dict::Table#[]=": ; preds = %"Invoke_Dict#_table_end"
%addr_vtable2 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [23 x i8*]*
%vtable5 = load [23 x i8*], [23 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [23 x i8*] %vtable5, 17
%func7 = bitcast i8* %func_raw6 to %Void* (%"Dict::Table"*, %Object*, %Object*)*
%result8 = call %Void* %func7(%"Dict::Table"* %result, %Object* %key, %Object* %value)
br label %"Invoke_Dict::Table#[]=_end"
"Invoke_Dict::Table#[]=_end": ; preds = %"Invoke_Dict::Table#[]="
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Dict::Table#[]=_end"
br label %End
}
define %Maybe* @Dict_aref_(%Dict* %self, %Object* %key) {
br label %"Invoke_Dict#_table"
End: ; preds = %Ret
%methodResult = phi %Maybe* [ %result8, %Ret ]
ret %Maybe* %methodResult
"Invoke_Dict#_table": ; preds = %0
%addr_vtable = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [24 x i8*]*
%vtable1 = load [24 x i8*], [24 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [24 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %"Dict::Table"* (%Dict*, %Object*)*
%result = call %"Dict::Table"* %func(%Dict* %self, %Object* %key)
br label %"Invoke_Dict#_table_end"
"Invoke_Dict#_table_end": ; preds = %"Invoke_Dict#_table"
br label %"Invoke_Dict::Table#[]"
"Invoke_Dict::Table#[]": ; preds = %"Invoke_Dict#_table_end"
%addr_vtable2 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [23 x i8*]*
%vtable5 = load [23 x i8*], [23 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [23 x i8*] %vtable5, 16
%func7 = bitcast i8* %func_raw6 to %Maybe* (%"Dict::Table"*, %Object*)*
%result8 = call %Maybe* %func7(%"Dict::Table"* %result, %Object* %key)
br label %"Invoke_Dict::Table#[]_end"
"Invoke_Dict::Table#[]_end": ; preds = %"Invoke_Dict::Table#[]"
br label %Ret
Ret: ; preds = %"Invoke_Dict::Table#[]_end"
br label %End
}
define %Bool* @"Dict_has__key?"(%Dict* %self, %Object* %key) {
br label %"Invoke_Dict#_table"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %result8, %Ret ]
ret %Bool* %methodResult
"Invoke_Dict#_table": ; preds = %0
%addr_vtable = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [24 x i8*]*
%vtable1 = load [24 x i8*], [24 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [24 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %"Dict::Table"* (%Dict*, %Object*)*
%result = call %"Dict::Table"* %func(%Dict* %self, %Object* %key)
br label %"Invoke_Dict#_table_end"
"Invoke_Dict#_table_end": ; preds = %"Invoke_Dict#_table"
br label %"Invoke_Dict::Table#has_key?"
"Invoke_Dict::Table#has_key?": ; preds = %"Invoke_Dict#_table_end"
%addr_vtable2 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [23 x i8*]*
%vtable5 = load [23 x i8*], [23 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [23 x i8*] %vtable5, 18
%func7 = bitcast i8* %func_raw6 to %Bool* (%"Dict::Table"*, %Object*)*
%result8 = call %Bool* %func7(%"Dict::Table"* %result, %Object* %key)
br label %"Invoke_Dict::Table#has_key?_end"
"Invoke_Dict::Table#has_key?_end": ; preds = %"Invoke_Dict::Table#has_key?"
br label %Ret
Ret: ; preds = %"Invoke_Dict::Table#has_key?_end"
br label %End
}
define %Array* @Dict_keys(%Dict* %self) {
alloca:
%"ary@26_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@26_", align 8
%"ary@26_10" = load %Array*, %Array** %"ary@26_", align 8
%addr_class = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@26_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@26_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@26_19" = load %Array*, %Array** %"ary@26_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@26_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"addr_@tables" = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 2
%"@tables" = load %Array*, %Array** %"addr_@tables", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_23_in_Dict#keys" to i8*))
%the_main = bitcast %Dict* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%result36 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as37 = bitcast %Fn1* %result36 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %"@tables", i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 29
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %"@tables", %Object* %as37)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Array* @Dict_values(%Dict* %self) {
alloca:
%"ary@27_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@27_", align 8
%"ary@27_10" = load %Array*, %Array** %"ary@27_", align 8
%addr_class = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 1)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@27_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@27_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@27_19" = load %Array*, %Array** %"ary@27_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@27_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"addr_@tables" = getelementptr inbounds %Dict, %Dict* %self, i32 0, i32 2
%"@tables" = load %Array*, %Array** %"addr_@tables", align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_24_in_Dict#values" to i8*))
%the_main = bitcast %Dict* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%result36 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as37 = bitcast %Fn1* %result36 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %"@tables", i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 29
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %"@tables", %Object* %as37)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Void* @"lambda_1_in_Array#=="(%Fn1* %fn_x, %Object* %i) {
br label %IfBegin
End: ; preds = %Ret, %CaptureWrite_1th_end
%"::Void28" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void28"
IfBegin: ; preds = %0
%"addr_@obj" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj" = load %Object*, %Object** %"addr_@obj", align 8
%the_main = bitcast %Object* %"@obj" to %Array*
%value = bitcast %Object* %i to %Int*
%as = bitcast %Int* %value to %Object*
br label %"Invoke_Array#[]"
IfThen: ; preds = %"Invoke_Object#==_end"
br label %CaptureWrite_1th
IfElse: ; preds = %"Invoke_Object#==_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse
br label %Ret
"Invoke_Array#[]": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Array, %Array* %the_main, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Object* (%Array*, %Object*)*
%result = call %Object* %func(%Array* %the_main, %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %CaptureRef_0th
CaptureRef_0th: ; preds = %"Invoke_Array#[]_end"
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result2 = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result2 to %Array*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%value3 = bitcast %Object* %i to %Int*
%as4 = bitcast %Int* %value3 to %Object*
br label %"Invoke_Array#[]5"
"Invoke_Array#[]5": ; preds = %CaptureRef_0th_end
%addr_vtable6 = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable7 = load i8*, i8** %addr_vtable6, align 8
%vtable_ptr8 = bitcast i8* %vtable7 to [54 x i8*]*
%vtable9 = load [54 x i8*], [54 x i8*]* %vtable_ptr8, align 8
%func_raw10 = extractvalue [54 x i8*] %vtable9, 16
%func11 = bitcast i8* %func_raw10 to %Object* (%Array*, %Object*)*
%result12 = call %Object* %func11(%Array* %ret, %Object* %as4)
br label %"Invoke_Array#[]_end13"
"Invoke_Array#[]_end13": ; preds = %"Invoke_Array#[]5"
br label %"Invoke_Object#=="
"Invoke_Object#==": ; preds = %"Invoke_Array#[]_end13"
%addr_vtable14 = getelementptr inbounds %Object, %Object* %result, i32 0, i32 0
%vtable15 = load i8*, i8** %addr_vtable14, align 8
%vtable_ptr16 = bitcast i8* %vtable15 to [16 x i8*]*
%vtable17 = load [16 x i8*], [16 x i8*]* %vtable_ptr16, align 8
%func_raw18 = extractvalue [16 x i8*] %vtable17, 2
%func19 = bitcast i8* %func_raw18 to %Bool* (%Object*, %Object*)*
%result20 = call %Bool* %func19(%Object* %result, %Object* %result12)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result20)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
%llvm_bool21 = call i1 @unbox_bool(%Bool* %sk_bool)
%istrue = icmp eq i1 %llvm_bool21, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures22" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures23" = load %Array*, %Array** %"addr_@captures22", align 8
%sk_int24 = call %Int* @box_int(i64 1)
%result25 = call %Object* @Array_aref_(%Array* %"@captures23", %Int* %sk_int24)
%ptr = bitcast %Object* %result25 to %Bool**
%sk_bool26 = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool26, %Bool** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%sk_int27 = call %Int* @box_int(i64 1)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 5
store %Int* %sk_int27, %Int** %"addr_@exit_status", align 8
br label %End
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_2_in_Array#all?"(%Fn1* %fn_x, %Object* %item) {
br label %IfBegin
End: ; preds = %Ret
%"::Void9" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void9"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %Invoke_lambda_end
br label %CaptureWrite_1th
IfElse: ; preds = %Invoke_lambda_end
%"::Void8" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %"::Void8", %IfElse ]
br label %Ret
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Bool* (%Fn1*, %Object*)*
%result1 = call %Bool* %1(%Fn1* %ret, %Object* %item)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%llvm_bool = call i1 @unbox_bool(%Bool* %result1)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
%llvm_bool2 = call i1 @unbox_bool(%Bool* %sk_bool)
%istrue = icmp eq i1 %llvm_bool2, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures3" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures4" = load %Array*, %Array** %"addr_@captures3", align 8
%sk_int5 = call %Int* @box_int(i64 1)
%result6 = call %Object* @Array_aref_(%Array* %"@captures4", %Int* %sk_int5)
%ptr = bitcast %Object* %result6 to %Bool**
%sk_bool7 = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool7, %Bool** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_3_in_Array#any?"(%Fn1* %fn_x, %Object* %item) {
br label %IfBegin
End: ; preds = %Ret
%"::Void7" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void7"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %Invoke_lambda_end
br label %CaptureWrite_1th
IfElse: ; preds = %Invoke_lambda_end
%"::Void6" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %"::Void6", %IfElse ]
br label %Ret
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Bool* (%Fn1*, %Object*)*
%result1 = call %Bool* %1(%Fn1* %ret, %Object* %item)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%llvm_bool = call i1 @unbox_bool(%Bool* %result1)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures2" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures3" = load %Array*, %Array** %"addr_@captures2", align 8
%sk_int4 = call %Int* @box_int(i64 1)
%result5 = call %Object* @Array_aref_(%Array* %"@captures3", %Int* %sk_int4)
%ptr = bitcast %Object* %result5 to %Bool**
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_4_in_Array#append"(%Fn1* %fn_x, %Object* %item) {
%"addr_@obj" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj" = load %Object*, %Object** %"addr_@obj", align 8
%the_main = bitcast %Object* %"@obj" to %Array*
br label %"Invoke_Array#push"
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
"Invoke_Array#push": ; preds = %0
%addr_vtable = getelementptr inbounds %Array, %Array* %the_main, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 45
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result = call %Void* %func(%Array* %the_main, %Object* %item)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Void* @"lambda_5_in_Array#clone"(%Fn1* %fn_x, %Object* %item) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 45
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result2 = call %Void* %func(%Array* %ret, %Object* %item)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Void* @"lambda_6_in_Array#drop"(%Fn1* %fn_x, %Object* %i) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%"addr_@obj" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj" = load %Object*, %Object** %"addr_@obj", align 8
%the_main = bitcast %Object* %"@obj" to %Array*
%value = bitcast %Object* %i to %Int*
%as = bitcast %Int* %value to %Object*
br label %"Invoke_Array#[]"
"Invoke_Array#[]": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %Array, %Array* %the_main, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Object* (%Array*, %Object*)*
%result2 = call %Object* %func(%Array* %the_main, %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#[]_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 45
%func8 = bitcast i8* %func_raw7 to %Void* (%Array*, %Object*)*
%result9 = call %Void* %func8(%Array* %ret, %Object* %result2)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Array* @"lambda_7_in_Array#flat_map"(%Fn2* %fn_x, %Object* %sum, %Object* %item) {
%value = bitcast %Object* %sum to %Array*
%value1 = bitcast %Object* %item to %Array*
%as = bitcast %Array* %value1 to %Object*
br label %"Invoke_Array#append"
End: ; preds = %Ret
%methodResult = phi %Array* [ %value3, %Ret ]
ret %Array* %methodResult
"Invoke_Array#append": ; preds = %0
%addr_vtable = getelementptr inbounds %Array, %Array* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable2 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable2, 23
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result = call %Void* %func(%Array* %value, %Object* %as)
br label %"Invoke_Array#append_end"
"Invoke_Array#append_end": ; preds = %"Invoke_Array#append"
%value3 = bitcast %Object* %sum to %Array*
br label %Ret
Ret: ; preds = %"Invoke_Array#append_end"
br label %End
}
define %Object* @"lambda_8_in_Array#fold"(%Fn1* %fn_x, %Object* %item) {
br label %CaptureWrite_2th
End: ; preds = %Ret
%methodResult = phi %Object* [ %result11, %Ret ]
ret %Object* %methodResult
CaptureWrite_2th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 2)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Object**
br label %CaptureRef_1th
CaptureRef_1th: ; preds = %CaptureWrite_2th
%"addr_@captures1" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures2" = load %Array*, %Array** %"addr_@captures1", align 8
%sk_int3 = call %Int* @box_int(i64 1)
%result4 = call %Object* @Array_aref_(%Array* %"@captures2", %Int* %sk_int3)
%ret = bitcast %Object* %result4 to %Fn2*
br label %CaptureRef_1th_end
CaptureRef_1th_end: ; preds = %CaptureRef_1th
br label %CaptureRef_0th
CaptureRef_0th: ; preds = %CaptureRef_1th_end
%"addr_@captures5" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures6" = load %Array*, %Array** %"addr_@captures5", align 8
%sk_int7 = call %Int* @box_int(i64 0)
%result8 = call %Object* @Array_aref_(%Array* %"@captures6", %Int* %sk_int7)
%ptr9 = bitcast %Object* %result8 to %Object**
%ret10 = load %Object*, %Object** %ptr9, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn2, %Fn2* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Object* (%Fn2*, %Object*, %Object*)*
%result11 = call %Object* %1(%Fn2* %ret, %Object* %ret10, %Object* %item)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
store %Object* %result11, %Object** %ptr, align 8
br label %CaptureWrite_2th_end
CaptureWrite_2th_end: ; preds = %Invoke_lambda_end
br label %Ret
Ret: ; preds = %CaptureWrite_2th_end
br label %End
}
define %Void* @"lambda_9_in_Array#includes?"(%Fn1* %fn_x, %Object* %x) {
br label %IfBegin
End: ; preds = %Ret
%"::Void8" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void8"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %"Invoke_Object#==_end"
br label %CaptureWrite_1th
IfElse: ; preds = %"Invoke_Object#==_end"
%"::Void7" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %"::Void7", %IfElse ]
br label %Ret
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %"Invoke_Object#=="
"Invoke_Object#==": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %Object, %Object* %x, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [16 x i8*]*
%vtable1 = load [16 x i8*], [16 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [16 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%Object*, %Object*)*
%result2 = call %Bool* %func(%Object* %x, %Object* %result)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result2)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures3" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures4" = load %Array*, %Array** %"addr_@captures3", align 8
%sk_int5 = call %Int* @box_int(i64 1)
%result6 = call %Object* @Array_aref_(%Array* %"@captures4", %Int* %sk_int5)
%ptr = bitcast %Object* %result6 to %Bool**
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_10_in_Array#inspect"(%Fn1* %fn_x, %Object* %item) {
br label %IfBegin
End: ; preds = %Ret
%"::Void36" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void36"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %CaptureRef_0th_end
br label %CaptureWrite_1th
IfElse: ; preds = %CaptureRef_0th_end
br label %CaptureRef_2th
IfEnd: ; preds = %"Invoke_MutableString#append_end", %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %result13, %"Invoke_MutableString#append_end" ]
br label %CaptureRef_3th
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Bool**
%ret = load %Bool*, %Bool** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%llvm_bool = call i1 @unbox_bool(%Bool* %ret)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures1" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures2" = load %Array*, %Array** %"addr_@captures1", align 8
%sk_int3 = call %Int* @box_int(i64 1)
%result4 = call %Object* @Array_aref_(%Array* %"@captures2", %Int* %sk_int3)
%ptr5 = bitcast %Object* %result4 to %Bool**
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %ptr5, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
CaptureRef_2th: ; preds = %IfElse
%"addr_@captures6" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures7" = load %Array*, %Array** %"addr_@captures6", align 8
%sk_int8 = call %Int* @box_int(i64 2)
%result9 = call %Object* @Array_aref_(%Array* %"@captures7", %Int* %sk_int8)
%ptr10 = bitcast %Object* %result9 to %MutableString**
%ret11 = load %MutableString*, %MutableString** %ptr10, align 8
br label %CaptureRef_2th_end
CaptureRef_2th_end: ; preds = %CaptureRef_2th
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str_47, i32 0, i32 0), i64 2)
br label %"Invoke_MutableString#append"
"Invoke_MutableString#append": ; preds = %CaptureRef_2th_end
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %ret11, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [28 x i8*]*
%vtable12 = load [28 x i8*], [28 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [28 x i8*] %vtable12, 18
%func = bitcast i8* %func_raw to %Void* (%MutableString*, %String*)*
%result13 = call %Void* %func(%MutableString* %ret11, %String* %sk_str)
br label %"Invoke_MutableString#append_end"
"Invoke_MutableString#append_end": ; preds = %"Invoke_MutableString#append"
br label %IfEnd
CaptureRef_3th: ; preds = %IfEnd
%"addr_@captures14" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures15" = load %Array*, %Array** %"addr_@captures14", align 8
%sk_int16 = call %Int* @box_int(i64 3)
%result17 = call %Object* @Array_aref_(%Array* %"@captures15", %Int* %sk_int16)
%ptr18 = bitcast %Object* %result17 to %MutableString**
%ret19 = load %MutableString*, %MutableString** %ptr18, align 8
br label %CaptureRef_3th_end
CaptureRef_3th_end: ; preds = %CaptureRef_3th
br label %"Invoke_Object#inspect"
"Invoke_Object#inspect": ; preds = %CaptureRef_3th_end
%addr_vtable20 = getelementptr inbounds %Object, %Object* %item, i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [16 x i8*]*
%vtable23 = load [16 x i8*], [16 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [16 x i8*] %vtable23, 9
%func25 = bitcast i8* %func_raw24 to %String* (%Object*)*
%result26 = call %String* %func25(%Object* %item)
br label %"Invoke_Object#inspect_end"
"Invoke_Object#inspect_end": ; preds = %"Invoke_Object#inspect"
br label %"Invoke_MutableString#append27"
"Invoke_MutableString#append27": ; preds = %"Invoke_Object#inspect_end"
%addr_vtable28 = getelementptr inbounds %MutableString, %MutableString* %ret19, i32 0, i32 0
%vtable29 = load i8*, i8** %addr_vtable28, align 8
%vtable_ptr30 = bitcast i8* %vtable29 to [28 x i8*]*
%vtable31 = load [28 x i8*], [28 x i8*]* %vtable_ptr30, align 8
%func_raw32 = extractvalue [28 x i8*] %vtable31, 18
%func33 = bitcast i8* %func_raw32 to %Void* (%MutableString*, %String*)*
%result34 = call %Void* %func33(%MutableString* %ret19, %String* %result26)
br label %"Invoke_MutableString#append_end35"
"Invoke_MutableString#append_end35": ; preds = %"Invoke_MutableString#append27"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#append_end35"
br label %End
}
define %Void* @"lambda_11_in_Array#join"(%Fn1* %fn_x, %Object* %item) {
br label %IfBegin
End: ; preds = %Ret
%"::Void41" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void41"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %CaptureRef_0th_end
br label %CaptureWrite_1th
IfElse: ; preds = %CaptureRef_0th_end
br label %CaptureRef_3th
IfEnd: ; preds = %"Invoke_MutableString#append_end", %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %result18, %"Invoke_MutableString#append_end" ]
br label %CaptureRef_4th
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Bool**
%ret = load %Bool*, %Bool** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%llvm_bool = call i1 @unbox_bool(%Bool* %ret)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures1" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures2" = load %Array*, %Array** %"addr_@captures1", align 8
%sk_int3 = call %Int* @box_int(i64 1)
%result4 = call %Object* @Array_aref_(%Array* %"@captures2", %Int* %sk_int3)
%ptr5 = bitcast %Object* %result4 to %Bool**
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %ptr5, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
CaptureRef_3th: ; preds = %IfElse
%"addr_@captures6" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures7" = load %Array*, %Array** %"addr_@captures6", align 8
%sk_int8 = call %Int* @box_int(i64 3)
%result9 = call %Object* @Array_aref_(%Array* %"@captures7", %Int* %sk_int8)
%ptr10 = bitcast %Object* %result9 to %MutableString**
%ret11 = load %MutableString*, %MutableString** %ptr10, align 8
br label %CaptureRef_3th_end
CaptureRef_3th_end: ; preds = %CaptureRef_3th
br label %CaptureRef_2th
CaptureRef_2th: ; preds = %CaptureRef_3th_end
%"addr_@captures12" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures13" = load %Array*, %Array** %"addr_@captures12", align 8
%sk_int14 = call %Int* @box_int(i64 2)
%result15 = call %Object* @Array_aref_(%Array* %"@captures13", %Int* %sk_int14)
%ret16 = bitcast %Object* %result15 to %String*
br label %CaptureRef_2th_end
CaptureRef_2th_end: ; preds = %CaptureRef_2th
br label %"Invoke_MutableString#append"
"Invoke_MutableString#append": ; preds = %CaptureRef_2th_end
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %ret11, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [28 x i8*]*
%vtable17 = load [28 x i8*], [28 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [28 x i8*] %vtable17, 18
%func = bitcast i8* %func_raw to %Void* (%MutableString*, %String*)*
%result18 = call %Void* %func(%MutableString* %ret11, %String* %ret16)
br label %"Invoke_MutableString#append_end"
"Invoke_MutableString#append_end": ; preds = %"Invoke_MutableString#append"
br label %IfEnd
CaptureRef_4th: ; preds = %IfEnd
%"addr_@captures19" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures20" = load %Array*, %Array** %"addr_@captures19", align 8
%sk_int21 = call %Int* @box_int(i64 4)
%result22 = call %Object* @Array_aref_(%Array* %"@captures20", %Int* %sk_int21)
%ptr23 = bitcast %Object* %result22 to %MutableString**
%ret24 = load %MutableString*, %MutableString** %ptr23, align 8
br label %CaptureRef_4th_end
CaptureRef_4th_end: ; preds = %CaptureRef_4th
br label %"Invoke_Object#to_s"
"Invoke_Object#to_s": ; preds = %CaptureRef_4th_end
%addr_vtable25 = getelementptr inbounds %Object, %Object* %item, i32 0, i32 0
%vtable26 = load i8*, i8** %addr_vtable25, align 8
%vtable_ptr27 = bitcast i8* %vtable26 to [16 x i8*]*
%vtable28 = load [16 x i8*], [16 x i8*]* %vtable_ptr27, align 8
%func_raw29 = extractvalue [16 x i8*] %vtable28, 15
%func30 = bitcast i8* %func_raw29 to %String* (%Object*)*
%result31 = call %String* %func30(%Object* %item)
br label %"Invoke_Object#to_s_end"
"Invoke_Object#to_s_end": ; preds = %"Invoke_Object#to_s"
br label %"Invoke_MutableString#append32"
"Invoke_MutableString#append32": ; preds = %"Invoke_Object#to_s_end"
%addr_vtable33 = getelementptr inbounds %MutableString, %MutableString* %ret24, i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [28 x i8*]*
%vtable36 = load [28 x i8*], [28 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [28 x i8*] %vtable36, 18
%func38 = bitcast i8* %func_raw37 to %Void* (%MutableString*, %String*)*
%result39 = call %Void* %func38(%MutableString* %ret24, %String* %result31)
br label %"Invoke_MutableString#append_end40"
"Invoke_MutableString#append_end40": ; preds = %"Invoke_MutableString#append32"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#append_end40"
br label %End
}
define %Void* @"lambda_12_in_Array#map"(%Fn1* %fn_x, %Object* %item) {
br label %CaptureRef_1th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_1th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 1)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_1th_end
CaptureRef_1th_end: ; preds = %CaptureRef_1th
br label %CaptureRef_0th
CaptureRef_0th: ; preds = %CaptureRef_1th_end
%"addr_@captures1" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures2" = load %Array*, %Array** %"addr_@captures1", align 8
%sk_int3 = call %Int* @box_int(i64 0)
%result4 = call %Object* @Array_aref_(%Array* %"@captures2", %Int* %sk_int3)
%ret5 = bitcast %Object* %result4 to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret5, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Object* (%Fn1*, %Object*)*
%result6 = call %Object* %1(%Fn1* %ret5, %Object* %item)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %Invoke_lambda_end
%addr_vtable = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable7 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable7, 45
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result8 = call %Void* %func(%Array* %ret, %Object* %result6)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Void* @"lambda_13_in_Array#none?"(%Fn1* %fn_x, %Object* %item) {
br label %IfBegin
End: ; preds = %Ret
%"::Void7" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void7"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %Invoke_lambda_end
br label %CaptureWrite_1th
IfElse: ; preds = %Invoke_lambda_end
%"::Void6" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %"::Void6", %IfElse ]
br label %Ret
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Bool* (%Fn1*, %Object*)*
%result1 = call %Bool* %1(%Fn1* %ret, %Object* %item)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%llvm_bool = call i1 @unbox_bool(%Bool* %result1)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures2" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures3" = load %Array*, %Array** %"addr_@captures2", align 8
%sk_int4 = call %Int* @box_int(i64 1)
%result5 = call %Object* @Array_aref_(%Array* %"@captures3", %Int* %sk_int4)
%ptr = bitcast %Object* %result5 to %Bool**
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_14_in_Array#reject"(%Fn1* %fn_x, %Object* %item) {
br label %IfBegin
End: ; preds = %Ret
%"::Void11" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void11"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %Invoke_lambda_end
br label %CaptureRef_1th
IfElse: ; preds = %Invoke_lambda_end
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void10" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Array#push_end"
%ifResult = phi %Void* [ %result9, %"Invoke_Array#push_end" ], [ %"::Void10", %IfElse ]
br label %Ret
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Bool* (%Fn1*, %Object*)*
%result1 = call %Bool* %1(%Fn1* %ret, %Object* %item)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%llvm_bool = call i1 @unbox_bool(%Bool* %result1)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
%llvm_bool2 = call i1 @unbox_bool(%Bool* %sk_bool)
%istrue = icmp eq i1 %llvm_bool2, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureRef_1th: ; preds = %IfThen
%"addr_@captures3" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures4" = load %Array*, %Array** %"addr_@captures3", align 8
%sk_int5 = call %Int* @box_int(i64 1)
%result6 = call %Object* @Array_aref_(%Array* %"@captures4", %Int* %sk_int5)
%ptr = bitcast %Object* %result6 to %Array**
%ret7 = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_1th_end
CaptureRef_1th_end: ; preds = %CaptureRef_1th
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %CaptureRef_1th_end
%addr_vtable = getelementptr inbounds %Array, %Array* %ret7, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable8 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable8, 45
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result9 = call %Void* %func(%Array* %ret7, %Object* %item)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_15_in_Array#reverse"(%Fn1* %fn_x, %Object* %item) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 45
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result2 = call %Void* %func(%Array* %ret, %Object* %item)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Void* @"lambda_16_in_Array#select"(%Fn1* %fn_x, %Object* %item) {
br label %IfBegin
End: ; preds = %Ret
%"::Void10" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void10"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %Invoke_lambda_end
br label %CaptureRef_1th
IfElse: ; preds = %Invoke_lambda_end
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void9" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Array#push_end"
%ifResult = phi %Void* [ %result8, %"Invoke_Array#push_end" ], [ %"::Void9", %IfElse ]
br label %Ret
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Bool* (%Fn1*, %Object*)*
%result1 = call %Bool* %1(%Fn1* %ret, %Object* %item)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%llvm_bool = call i1 @unbox_bool(%Bool* %result1)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureRef_1th: ; preds = %IfThen
%"addr_@captures2" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures3" = load %Array*, %Array** %"addr_@captures2", align 8
%sk_int4 = call %Int* @box_int(i64 1)
%result5 = call %Object* @Array_aref_(%Array* %"@captures3", %Int* %sk_int4)
%ptr = bitcast %Object* %result5 to %Array**
%ret6 = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_1th_end
CaptureRef_1th_end: ; preds = %CaptureRef_1th
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %CaptureRef_1th_end
%addr_vtable = getelementptr inbounds %Array, %Array* %ret6, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable7 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable7, 45
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result8 = call %Void* %func(%Array* %ret6, %Object* %item)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_18_in_Dict::Table#[]="(%Fn1* %fn_x, %Object* %pair) {
br label %IfBegin
End: ; preds = %Ret
%"::Void27" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void27"
IfBegin: ; preds = %0
%value = bitcast %Object* %pair to %Pair*
br label %"Invoke_Pair#fst"
IfThen: ; preds = %"Invoke_Object#==_end"
%value10 = bitcast %Object* %pair to %Pair*
br label %CaptureRef_1th
IfElse: ; preds = %"Invoke_Object#==_end"
%"::Void26" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %CaptureWrite_2th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_2th_end ], [ %"::Void26", %IfElse ]
br label %Ret
"Invoke_Pair#fst": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Pair, %Pair* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [20 x i8*]*
%vtable1 = load [20 x i8*], [20 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [20 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Object* (%Pair*)*
%result = call %Object* %func(%Pair* %value)
br label %"Invoke_Pair#fst_end"
"Invoke_Pair#fst_end": ; preds = %"Invoke_Pair#fst"
br label %CaptureRef_0th
CaptureRef_0th: ; preds = %"Invoke_Pair#fst_end"
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result2 = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %"Invoke_Object#=="
"Invoke_Object#==": ; preds = %CaptureRef_0th_end
%addr_vtable3 = getelementptr inbounds %Object, %Object* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [16 x i8*]*
%vtable6 = load [16 x i8*], [16 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [16 x i8*] %vtable6, 2
%func8 = bitcast i8* %func_raw7 to %Bool* (%Object*, %Object*)*
%result9 = call %Bool* %func8(%Object* %result, %Object* %result2)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result9)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureRef_1th: ; preds = %IfThen
%"addr_@captures11" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures12" = load %Array*, %Array** %"addr_@captures11", align 8
%sk_int13 = call %Int* @box_int(i64 1)
%result14 = call %Object* @Array_aref_(%Array* %"@captures12", %Int* %sk_int13)
br label %CaptureRef_1th_end
CaptureRef_1th_end: ; preds = %CaptureRef_1th
br label %"Invoke_Pair#snd="
"Invoke_Pair#snd=": ; preds = %CaptureRef_1th_end
%addr_vtable15 = getelementptr inbounds %Pair, %Pair* %value10, i32 0, i32 0
%vtable16 = load i8*, i8** %addr_vtable15, align 8
%vtable_ptr17 = bitcast i8* %vtable16 to [20 x i8*]*
%vtable18 = load [20 x i8*], [20 x i8*]* %vtable_ptr17, align 8
%func_raw19 = extractvalue [20 x i8*] %vtable18, 19
%func20 = bitcast i8* %func_raw19 to %Object* (%Pair*, %Object*)*
%result21 = call %Object* %func20(%Pair* %value10, %Object* %result14)
br label %"Invoke_Pair#snd=_end"
"Invoke_Pair#snd=_end": ; preds = %"Invoke_Pair#snd="
br label %CaptureWrite_2th
CaptureWrite_2th: ; preds = %"Invoke_Pair#snd=_end"
%"addr_@captures22" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures23" = load %Array*, %Array** %"addr_@captures22", align 8
%sk_int24 = call %Int* @box_int(i64 2)
%result25 = call %Object* @Array_aref_(%Array* %"@captures23", %Int* %sk_int24)
%ptr = bitcast %Object* %result25 to %Bool**
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ptr, align 8
br label %CaptureWrite_2th_end
CaptureWrite_2th_end: ; preds = %CaptureWrite_2th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_19_in_Dict::Table#[]"(%Fn1* %fn_x, %Object* %pair) {
br label %IfBegin
End: ; preds = %Ret
%"::Void30" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void30"
IfBegin: ; preds = %0
%value = bitcast %Object* %pair to %Pair*
br label %"Invoke_Pair#fst"
IfThen: ; preds = %"Invoke_Object#==_end"
br label %CaptureWrite_1th
IfElse: ; preds = %"Invoke_Object#==_end"
%"::Void29" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %"::Void29", %IfElse ]
br label %Ret
"Invoke_Pair#fst": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Pair, %Pair* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [20 x i8*]*
%vtable1 = load [20 x i8*], [20 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [20 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Object* (%Pair*)*
%result = call %Object* %func(%Pair* %value)
br label %"Invoke_Pair#fst_end"
"Invoke_Pair#fst_end": ; preds = %"Invoke_Pair#fst"
br label %CaptureRef_0th
CaptureRef_0th: ; preds = %"Invoke_Pair#fst_end"
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result2 = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %"Invoke_Object#=="
"Invoke_Object#==": ; preds = %CaptureRef_0th_end
%addr_vtable3 = getelementptr inbounds %Object, %Object* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [16 x i8*]*
%vtable6 = load [16 x i8*], [16 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [16 x i8*] %vtable6, 2
%func8 = bitcast i8* %func_raw7 to %Bool* (%Object*, %Object*)*
%result9 = call %Bool* %func8(%Object* %result, %Object* %result2)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result9)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures10" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures11" = load %Array*, %Array** %"addr_@captures10", align 8
%sk_int12 = call %Int* @box_int(i64 1)
%result13 = call %Object* @Array_aref_(%Array* %"@captures11", %Int* %sk_int12)
%ptr = bitcast %Object* %result13 to %"Maybe::Some"**
%"::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Some", align 8
%value14 = bitcast %Object* %pair to %Pair*
br label %"Invoke_Pair#snd"
"Invoke_Pair#snd": ; preds = %CaptureWrite_1th
%addr_vtable15 = getelementptr inbounds %Pair, %Pair* %value14, i32 0, i32 0
%vtable16 = load i8*, i8** %addr_vtable15, align 8
%vtable_ptr17 = bitcast i8* %vtable16 to [20 x i8*]*
%vtable18 = load [20 x i8*], [20 x i8*]* %vtable_ptr17, align 8
%func_raw19 = extractvalue [20 x i8*] %vtable18, 18
%func20 = bitcast i8* %func_raw19 to %Object* (%Pair*)*
%result21 = call %Object* %func20(%Pair* %value14)
br label %"Invoke_Pair#snd_end"
"Invoke_Pair#snd_end": ; preds = %"Invoke_Pair#snd"
br label %"Invoke_Meta:Maybe::Some#new"
"Invoke_Meta:Maybe::Some#new": ; preds = %"Invoke_Pair#snd_end"
%addr_vtable22 = getelementptr inbounds %"Maybe::Some", %"Maybe::Some"* %"::Some", i32 0, i32 0
%vtable23 = load i8*, i8** %addr_vtable22, align 8
%vtable_ptr24 = bitcast i8* %vtable23 to [23 x i8*]*
%vtable25 = load [23 x i8*], [23 x i8*]* %vtable_ptr24, align 8
%func_raw26 = extractvalue [23 x i8*] %vtable25, 22
%func27 = bitcast i8* %func_raw26 to %"Maybe::Some"* (%"Maybe::Some"*, %Object*)*
%result28 = call %"Maybe::Some"* %func27(%"Maybe::Some"* %"::Some", %Object* %result21)
br label %"Invoke_Meta:Maybe::Some#new_end"
"Invoke_Meta:Maybe::Some#new_end": ; preds = %"Invoke_Meta:Maybe::Some#new"
store %"Maybe::Some"* %result28, %"Maybe::Some"** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %"Invoke_Meta:Maybe::Some#new_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_20_in_Dict::Table#has_key?"(%Fn1* %fn_x, %Object* %pair) {
br label %IfBegin
End: ; preds = %Ret
%"::Void15" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void15"
IfBegin: ; preds = %0
%value = bitcast %Object* %pair to %Pair*
br label %"Invoke_Pair#fst"
IfThen: ; preds = %"Invoke_Object#==_end"
br label %CaptureWrite_1th
IfElse: ; preds = %"Invoke_Object#==_end"
%"::Void14" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse, %CaptureWrite_1th_end
%ifResult = phi %Void* [ %"::Void", %CaptureWrite_1th_end ], [ %"::Void14", %IfElse ]
br label %Ret
"Invoke_Pair#fst": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Pair, %Pair* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [20 x i8*]*
%vtable1 = load [20 x i8*], [20 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [20 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Object* (%Pair*)*
%result = call %Object* %func(%Pair* %value)
br label %"Invoke_Pair#fst_end"
"Invoke_Pair#fst_end": ; preds = %"Invoke_Pair#fst"
br label %CaptureRef_0th
CaptureRef_0th: ; preds = %"Invoke_Pair#fst_end"
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result2 = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %"Invoke_Object#=="
"Invoke_Object#==": ; preds = %CaptureRef_0th_end
%addr_vtable3 = getelementptr inbounds %Object, %Object* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [16 x i8*]*
%vtable6 = load [16 x i8*], [16 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [16 x i8*] %vtable6, 2
%func8 = bitcast i8* %func_raw7 to %Bool* (%Object*, %Object*)*
%result9 = call %Bool* %func8(%Object* %result, %Object* %result2)
br label %"Invoke_Object#==_end"
"Invoke_Object#==_end": ; preds = %"Invoke_Object#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result9)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures10" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures11" = load %Array*, %Array** %"addr_@captures10", align 8
%sk_int12 = call %Int* @box_int(i64 1)
%result13 = call %Object* @Array_aref_(%Array* %"@captures11", %Int* %sk_int12)
%ptr = bitcast %Object* %result13 to %Bool**
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_21_in_Dict::Table#keys"(%Fn1* %fn_x, %Object* %pair) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%value = bitcast %Object* %pair to %Pair*
br label %"Invoke_Pair#fst"
"Invoke_Pair#fst": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %Pair, %Pair* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [20 x i8*]*
%vtable1 = load [20 x i8*], [20 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [20 x i8*] %vtable1, 16
%func = bitcast i8* %func_raw to %Object* (%Pair*)*
%result2 = call %Object* %func(%Pair* %value)
br label %"Invoke_Pair#fst_end"
"Invoke_Pair#fst_end": ; preds = %"Invoke_Pair#fst"
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Pair#fst_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 45
%func8 = bitcast i8* %func_raw7 to %Void* (%Array*, %Object*)*
%result9 = call %Void* %func8(%Array* %ret, %Object* %result2)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Void* @"lambda_22_in_Dict::Table#values"(%Fn1* %fn_x, %Object* %pair) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%value = bitcast %Object* %pair to %Pair*
br label %"Invoke_Pair#snd"
"Invoke_Pair#snd": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %Pair, %Pair* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [20 x i8*]*
%vtable1 = load [20 x i8*], [20 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [20 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Object* (%Pair*)*
%result2 = call %Object* %func(%Pair* %value)
br label %"Invoke_Pair#snd_end"
"Invoke_Pair#snd_end": ; preds = %"Invoke_Pair#snd"
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Pair#snd_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 45
%func8 = bitcast i8* %func_raw7 to %Void* (%Array*, %Object*)*
%result9 = call %Void* %func8(%Array* %ret, %Object* %result2)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Int* @"lambda_26_in_Int#to_s"(%Fn1* %fn_x, %Object* %b) {
br label %CaptureRef_1th
End: ; preds = %Ret
%methodResult = phi %Int* [ %result27, %Ret ]
ret %Int* %methodResult
CaptureRef_1th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 1)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %MutableString**
%ret = load %MutableString*, %MutableString** %ptr, align 8
br label %CaptureRef_1th_end
CaptureRef_1th_end: ; preds = %CaptureRef_1th
br label %CaptureRef_0th
CaptureRef_0th: ; preds = %CaptureRef_1th_end
%"addr_@captures1" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures2" = load %Array*, %Array** %"addr_@captures1", align 8
%sk_int3 = call %Int* @box_int(i64 0)
%result4 = call %Object* @Array_aref_(%Array* %"@captures2", %Int* %sk_int3)
%ptr5 = bitcast %Object* %result4 to %Int**
%ret6 = load %Int*, %Int** %ptr5, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%value = bitcast %Object* %b to %Int*
br label %"Invoke_MutableString#write_byte"
"Invoke_MutableString#write_byte": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %ret, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [28 x i8*]*
%vtable7 = load [28 x i8*], [28 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [28 x i8*] %vtable7, 27
%func = bitcast i8* %func_raw to %Void* (%MutableString*, %Int*, %Int*)*
%result8 = call %Void* %func(%MutableString* %ret, %Int* %ret6, %Int* %value)
br label %"Invoke_MutableString#write_byte_end"
"Invoke_MutableString#write_byte_end": ; preds = %"Invoke_MutableString#write_byte"
br label %CaptureWrite_3th
CaptureWrite_3th: ; preds = %"Invoke_MutableString#write_byte_end"
%"addr_@captures9" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures10" = load %Array*, %Array** %"addr_@captures9", align 8
%sk_int11 = call %Int* @box_int(i64 3)
%result12 = call %Object* @Array_aref_(%Array* %"@captures10", %Int* %sk_int11)
%ptr13 = bitcast %Object* %result12 to %Int**
br label %CaptureRef_2th
CaptureRef_2th: ; preds = %CaptureWrite_3th
%"addr_@captures14" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures15" = load %Array*, %Array** %"addr_@captures14", align 8
%sk_int16 = call %Int* @box_int(i64 2)
%result17 = call %Object* @Array_aref_(%Array* %"@captures15", %Int* %sk_int16)
%ptr18 = bitcast %Object* %result17 to %Int**
%ret19 = load %Int*, %Int** %ptr18, align 8
br label %CaptureRef_2th_end
CaptureRef_2th_end: ; preds = %CaptureRef_2th
%sk_int20 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %CaptureRef_2th_end
%addr_vtable21 = getelementptr inbounds %Int, %Int* %ret19, i32 0, i32 0
%vtable22 = load i8*, i8** %addr_vtable21, align 8
%vtable_ptr23 = bitcast i8* %vtable22 to [35 x i8*]*
%vtable24 = load [35 x i8*], [35 x i8*]* %vtable_ptr23, align 8
%func_raw25 = extractvalue [35 x i8*] %vtable24, 18
%func26 = bitcast i8* %func_raw25 to %Int* (%Int*, %Int*)*
%result27 = call %Int* %func26(%Int* %ret19, %Int* %sk_int20)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result27, %Int** %ptr13, align 8
br label %CaptureWrite_3th_end
CaptureWrite_3th_end: ; preds = %"Invoke_Int#+_end"
br label %Ret
Ret: ; preds = %CaptureWrite_3th_end
br label %End
}
define %Void* @"lambda_27_in_String#*"(%Fn1* %fn_x, %Object* %_) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %MutableString**
%ret = load %MutableString*, %MutableString** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%"addr_@obj" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj" = load %Object*, %Object** %"addr_@obj", align 8
%the_main = bitcast %Object* %"@obj" to %String*
br label %"Invoke_MutableString#append"
"Invoke_MutableString#append": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %MutableString, %MutableString* %ret, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [28 x i8*]*
%vtable1 = load [28 x i8*], [28 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [28 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Void* (%MutableString*, %String*)*
%result2 = call %Void* %func(%MutableString* %ret, %String* %the_main)
br label %"Invoke_MutableString#append_end"
"Invoke_MutableString#append_end": ; preds = %"Invoke_MutableString#append"
br label %Ret
Ret: ; preds = %"Invoke_MutableString#append_end"
br label %End
}
define %Void* @"lambda_28_in_String#bytes"(%Fn1* %fn_x, %Object* %b) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%value = bitcast %Object* %b to %Int*
%as = bitcast %Int* %value to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 45
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result2 = call %Void* %func(%Array* %ret, %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end"
br label %End
}
define %Void* @"lambda_29_in_String#each_byte"(%Fn1* %fn_x, %Object* %i) {
br label %CaptureRef_0th
End: ; preds = %Ret, %Invoke_lambda
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%"addr_@obj" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj" = load %Object*, %Object** %"addr_@obj", align 8
%the_main = bitcast %Object* %"@obj" to %String*
%value = bitcast %Object* %i to %Int*
br label %"Invoke_String#nth_byte"
"Invoke_String#nth_byte": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %String, %String* %the_main, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 27
%func = bitcast i8* %func_raw to %Int* (%String*, %Int*)*
%result2 = call %Int* %func(%String* %the_main, %Int* %value)
br label %"Invoke_String#nth_byte_end"
"Invoke_String#nth_byte_end": ; preds = %"Invoke_String#nth_byte"
br label %Invoke_lambda
Invoke_lambda: ; preds = %"Invoke_String#nth_byte_end"
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %Int*)*
%result3 = call %Void* %1(%Fn1* %ret, %Int* %result2)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int4 = call %Int* @box_int(i64 1)
%result5 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int4)
%llvm_bool = call i1 @unbox_bool(%Bool* %result5)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
br label %Ret
Ret: ; preds = %Invoke_lambda_end
br label %End
}
define %Void* @"lambda_30_in_String#each_char"(%Fn1* %fn_x, %Object* %i) {
br label %CaptureRef_0th
End: ; preds = %Ret, %Invoke_lambda
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%"addr_@obj" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj" = load %Object*, %Object** %"addr_@obj", align 8
%the_main = bitcast %Object* %"@obj" to %String*
%value = bitcast %Object* %i to %Int*
%sk_int1 = call %Int* @box_int(i64 1)
br label %"Invoke_String#slice_bytes"
"Invoke_String#slice_bytes": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %String, %String* %the_main, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 30
%func = bitcast i8* %func_raw to %String* (%String*, %Int*, %Int*)*
%result3 = call %String* %func(%String* %the_main, %Int* %value, %Int* %sk_int1)
br label %"Invoke_String#slice_bytes_end"
"Invoke_String#slice_bytes_end": ; preds = %"Invoke_String#slice_bytes"
br label %Invoke_lambda
Invoke_lambda: ; preds = %"Invoke_String#slice_bytes_end"
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %String*)*
%result4 = call %Void* %1(%Fn1* %ret, %String* %result3)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int5 = call %Int* @box_int(i64 1)
%result6 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int5)
%llvm_bool = call i1 @unbox_bool(%Bool* %result6)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
br label %Ret
Ret: ; preds = %Invoke_lambda_end
br label %End
}
define %Void* @"lambda_25_in_Enumerable#all?"(%Fn1* %fn_x, %Object* %elem) {
br label %IfBegin
End: ; preds = %Ret, %CaptureWrite_1th_end
%"::Void9" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void9"
IfBegin: ; preds = %0
br label %CaptureRef_0th
IfThen: ; preds = %Invoke_lambda_end
br label %CaptureWrite_1th
IfElse: ; preds = %Invoke_lambda_end
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd
IfEnd: ; preds = %IfElse
br label %Ret
CaptureRef_0th: ; preds = %IfBegin
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ret = bitcast %Object* %result to %Fn1*
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
br label %Invoke_lambda
Invoke_lambda: ; preds = %CaptureRef_0th_end
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %ret, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%1 = bitcast i8* %llvm_ptr to %Bool* (%Fn1*, %Object*)*
%result1 = call %Bool* %1(%Fn1* %ret, %Object* %elem)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%llvm_bool = call i1 @unbox_bool(%Bool* %result1)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
%llvm_bool2 = call i1 @unbox_bool(%Bool* %sk_bool)
%istrue = icmp eq i1 %llvm_bool2, true
br i1 %istrue, label %IfThen, label %IfElse
CaptureWrite_1th: ; preds = %IfThen
%"addr_@captures3" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures4" = load %Array*, %Array** %"addr_@captures3", align 8
%sk_int5 = call %Int* @box_int(i64 1)
%result6 = call %Object* @Array_aref_(%Array* %"@captures4", %Int* %sk_int5)
%ptr = bitcast %Object* %result6 to %Bool**
%sk_bool7 = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool7, %Bool** %ptr, align 8
br label %CaptureWrite_1th_end
CaptureWrite_1th_end: ; preds = %CaptureWrite_1th
%sk_int8 = call %Int* @box_int(i64 1)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 5
store %Int* %sk_int8, %Int** %"addr_@exit_status", align 8
br label %End
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @"lambda_17_in_Dict#initialize"(%Fn1* %fn_x, %Object* %_) {
alloca:
%"ary@20_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"addr_@obj" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj" = load %Object*, %Object** %"addr_@obj", align 8
%the_main = bitcast %Object* %"@obj" to %Dict*
%"addr_@tables" = getelementptr inbounds %Dict, %Dict* %the_main, i32 0, i32 2
%"@tables" = load %Array*, %Array** %"addr_@tables", align 8
%"::Dict::Table" = load %"Dict::Table"*, %"Dict::Table"** @"::Dict::Table", align 8
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable1 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable1, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable2 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [25 x i8*]*
%vtable5 = load [25 x i8*], [25 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [25 x i8*] %vtable5, 23
%func7 = bitcast i8* %func_raw6 to %Array* (%Array*)*
%result8 = call %Array* %func7(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result8, %Array** %"ary@20_", align 8
%"ary@20_9" = load %Array*, %Array** %"ary@20_", align 8
%"addr_@obj10" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj11" = load %Object*, %Object** %"addr_@obj10", align 8
%the_main12 = bitcast %Object* %"@obj11" to %Dict*
%addr_class = getelementptr inbounds %Dict, %Dict* %the_main12, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result13 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result13 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable14 = getelementptr inbounds %Array, %Array* %"ary@20_9", i32 0, i32 0
%vtable15 = load i8*, i8** %addr_vtable14, align 8
%vtable_ptr16 = bitcast i8* %vtable15 to [54 x i8*]*
%vtable17 = load [54 x i8*], [54 x i8*]* %vtable_ptr16, align 8
%func_raw18 = extractvalue [54 x i8*] %vtable17, 45
%func19 = bitcast i8* %func_raw18 to %Void* (%Array*, %Object*)*
%result20 = call %Void* %func19(%Array* %"ary@20_9", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@20_21" = load %Array*, %Array** %"ary@20_", align 8
%"addr_@obj22" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 3
%"@obj23" = load %Object*, %Object** %"addr_@obj22", align 8
%the_main24 = bitcast %Object* %"@obj23" to %Dict*
%addr_class25 = getelementptr inbounds %Dict, %Dict* %the_main24, i32 0, i32 1
%class26 = load %Class.0*, %Class.0** %addr_class25, align 8
%sk_int27 = call %Int* @box_int(i64 1)
%result28 = call %Class.0* @Class___type__argument(%Class.0* %class26, %Int* %sk_int27)
%as29 = bitcast %Class.0* %result28 to %Object*
br label %"Invoke_Array#push30"
"Invoke_Array#push30": ; preds = %"Invoke_Array#push_end"
%addr_vtable31 = getelementptr inbounds %Array, %Array* %"ary@20_21", i32 0, i32 0
%vtable32 = load i8*, i8** %addr_vtable31, align 8
%vtable_ptr33 = bitcast i8* %vtable32 to [54 x i8*]*
%vtable34 = load [54 x i8*], [54 x i8*]* %vtable_ptr33, align 8
%func_raw35 = extractvalue [54 x i8*] %vtable34, 45
%func36 = bitcast i8* %func_raw35 to %Void* (%Array*, %Object*)*
%result37 = call %Void* %func36(%Array* %"ary@20_21", %Object* %as29)
br label %"Invoke_Array#push_end38"
"Invoke_Array#push_end38": ; preds = %"Invoke_Array#push30"
%"ary@20_39" = load %Array*, %Array** %"ary@20_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end38"
%addr_vtable40 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %"::Dict::Table", i32 0, i32 0
%vtable41 = load i8*, i8** %addr_vtable40, align 8
%vtable_ptr42 = bitcast i8* %vtable41 to [23 x i8*]*
%vtable43 = load [23 x i8*], [23 x i8*]* %vtable_ptr42, align 8
%func_raw44 = extractvalue [23 x i8*] %vtable43, 16
%func45 = bitcast i8* %func_raw44 to %"Dict::Table"* (%"Dict::Table"*, %Array*)*
%result46 = call %"Dict::Table"* %func45(%"Dict::Table"* %"::Dict::Table", %Array* %"ary@20_39")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Dict::Table#new"
"Invoke_Meta:Dict::Table#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable47 = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %result46, i32 0, i32 0
%vtable48 = load i8*, i8** %addr_vtable47, align 8
%vtable_ptr49 = bitcast i8* %vtable48 to [23 x i8*]*
%vtable50 = load [23 x i8*], [23 x i8*]* %vtable_ptr49, align 8
%func_raw51 = extractvalue [23 x i8*] %vtable50, 22
%func52 = bitcast i8* %func_raw51 to %"Dict::Table"* (%"Dict::Table"*)*
%result53 = call %"Dict::Table"* %func52(%"Dict::Table"* %result46)
br label %"Invoke_Meta:Dict::Table#new_end"
"Invoke_Meta:Dict::Table#new_end": ; preds = %"Invoke_Meta:Dict::Table#new"
%as54 = bitcast %"Dict::Table"* %result53 to %Object*
br label %"Invoke_Array#push55"
"Invoke_Array#push55": ; preds = %"Invoke_Meta:Dict::Table#new_end"
%addr_vtable56 = getelementptr inbounds %Array, %Array* %"@tables", i32 0, i32 0
%vtable57 = load i8*, i8** %addr_vtable56, align 8
%vtable_ptr58 = bitcast i8* %vtable57 to [54 x i8*]*
%vtable59 = load [54 x i8*], [54 x i8*]* %vtable_ptr58, align 8
%func_raw60 = extractvalue [54 x i8*] %vtable59, 45
%func61 = bitcast i8* %func_raw60 to %Void* (%Array*, %Object*)*
%result62 = call %Void* %func61(%Array* %"@tables", %Object* %as54)
br label %"Invoke_Array#push_end63"
"Invoke_Array#push_end63": ; preds = %"Invoke_Array#push55"
br label %Ret
Ret: ; preds = %"Invoke_Array#push_end63"
br label %End
}
define %Void* @"lambda_23_in_Dict#keys"(%Fn1* %fn_x, %Object* %table) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%value = bitcast %Object* %table to %"Dict::Table"*
br label %"Invoke_Dict::Table#keys"
"Invoke_Dict::Table#keys": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 19
%func = bitcast i8* %func_raw to %Array* (%"Dict::Table"*)*
%result2 = call %Array* %func(%"Dict::Table"* %value)
br label %"Invoke_Dict::Table#keys_end"
"Invoke_Dict::Table#keys_end": ; preds = %"Invoke_Dict::Table#keys"
%as = bitcast %Array* %result2 to %Object*
br label %"Invoke_Array#append"
"Invoke_Array#append": ; preds = %"Invoke_Dict::Table#keys_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Void* (%Array*, %Object*)*
%result9 = call %Void* %func8(%Array* %ret, %Object* %as)
br label %"Invoke_Array#append_end"
"Invoke_Array#append_end": ; preds = %"Invoke_Array#append"
br label %Ret
Ret: ; preds = %"Invoke_Array#append_end"
br label %End
}
define %Void* @"lambda_24_in_Dict#values"(%Fn1* %fn_x, %Object* %table) {
br label %CaptureRef_0th
End: ; preds = %Ret
%"::Void" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void"
CaptureRef_0th: ; preds = %0
%"addr_@captures" = getelementptr inbounds %Fn1, %Fn1* %fn_x, i32 0, i32 4
%"@captures" = load %Array*, %Array** %"addr_@captures", align 8
%sk_int = call %Int* @box_int(i64 0)
%result = call %Object* @Array_aref_(%Array* %"@captures", %Int* %sk_int)
%ptr = bitcast %Object* %result to %Array**
%ret = load %Array*, %Array** %ptr, align 8
br label %CaptureRef_0th_end
CaptureRef_0th_end: ; preds = %CaptureRef_0th
%value = bitcast %Object* %table to %"Dict::Table"*
br label %"Invoke_Dict::Table#values"
"Invoke_Dict::Table#values": ; preds = %CaptureRef_0th_end
%addr_vtable = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %value, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 22
%func = bitcast i8* %func_raw to %Array* (%"Dict::Table"*)*
%result2 = call %Array* %func(%"Dict::Table"* %value)
br label %"Invoke_Dict::Table#values_end"
"Invoke_Dict::Table#values_end": ; preds = %"Invoke_Dict::Table#values"
%as = bitcast %Array* %result2 to %Object*
br label %"Invoke_Array#append"
"Invoke_Array#append": ; preds = %"Invoke_Dict::Table#values_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %ret, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Void* (%Array*, %Object*)*
%result9 = call %Void* %func8(%Array* %ret, %Object* %as)
br label %"Invoke_Array#append_end"
"Invoke_Array#append_end": ; preds = %"Invoke_Array#append"
br label %Ret
Ret: ; preds = %"Invoke_Array#append_end"
br label %End
}
define void @init_Fn2() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_0, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_0, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn2" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn2*
store %Fn2* %as, %Fn2** @"::Fn2", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Maybe::None"() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str_1, i32 0, i32 0), i64 11)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str_1, i32 0, i32 0), i64 11)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Maybe::None" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %"Maybe::None"*
br label %"Invoke_Meta:Maybe::None#new"
End: ; preds = %"Invoke_Meta:Maybe::None#new_end"
ret void
"Invoke_Meta:Maybe::None#new": ; preds = %0
%addr_vtable = getelementptr inbounds %"Maybe::None", %"Maybe::None"* %as, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable3 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable3, 22
%func = bitcast i8* %func_raw to %"Maybe::None"* (%"Maybe::None"*)*
%result4 = call %"Maybe::None"* %func(%"Maybe::None"* %as)
br label %"Invoke_Meta:Maybe::None#new_end"
"Invoke_Meta:Maybe::None#new_end": ; preds = %"Invoke_Meta:Maybe::None#new"
store %"Maybe::None"* %result4, %"Maybe::None"** @"::Maybe::None", align 8
br label %End
}
define void @init_Pair() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_2, i32 0, i32 0), i64 4)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_2, i32 0, i32 0), i64 4)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Pair" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Pair*
store %Pair* %as, %Pair** @"::Pair", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Int() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_3, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_3, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Int" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Int*
store %Int* %as, %Int** @"::Int", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Shiika::Internal::Memory"() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str_4, i32 0, i32 0), i64 24)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str_4, i32 0, i32 0), i64 24)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([25 x i8*]* @"shiika_vtable_Meta:Shiika::Internal::Memory" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %"Shiika::Internal::Memory"*
store %"Shiika::Internal::Memory"* %as, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Math() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_5, i32 0, i32 0), i64 4)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_5, i32 0, i32 0), i64 4)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([25 x i8*]* @"shiika_vtable_Meta:Math" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Math*
store %Math* %as, %Math** @"::Math", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str_6, i32 0, i32 0), i64 2)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str_6, i32 0, i32 0), i64 2)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn*
store %Fn* %as, %Fn** @"::Fn", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Maybe() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_7, i32 0, i32 0), i64 5)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_7, i32 0, i32 0), i64 5)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([22 x i8*]* @"shiika_vtable_Meta:Maybe" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Maybe*
store %Maybe* %as, %Maybe** @"::Maybe", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Dict() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_8, i32 0, i32 0), i64 4)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_8, i32 0, i32 0), i64 4)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Dict" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Dict*
store %Dict* %as, %Dict** @"::Dict", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn7() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_9, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_9, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn7" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn7*
store %Fn7* %as, %Fn7** @"::Fn7", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn1() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_10, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_10, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn1" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn1*
store %Fn1* %as, %Fn1** @"::Fn1", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn0() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_11, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_11, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn0" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn0*
store %Fn0* %as, %Fn0** @"::Fn0", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Class() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_12, i32 0, i32 0), i64 5)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_12, i32 0, i32 0), i64 5)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Class" to %Object*), %Metaclass* %result)
store %Class.0* %result2, %Class.0** @"::Class", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn8() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_13, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_13, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn8" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn8*
store %Fn8* %as, %Fn8** @"::Fn8", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn9() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_14, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_14, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn9" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn9*
store %Fn9* %as, %Fn9** @"::Fn9", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn4() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_15, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_15, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn4" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn4*
store %Fn4* %as, %Fn4** @"::Fn4", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_File() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_16, i32 0, i32 0), i64 4)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_16, i32 0, i32 0), i64 4)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:File" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %File*
store %File* %as, %File** @"::File", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Float() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_17, i32 0, i32 0), i64 5)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_17, i32 0, i32 0), i64 5)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Float" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Float*
store %Float* %as, %Float** @"::Float", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_String() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_18, i32 0, i32 0), i64 6)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_18, i32 0, i32 0), i64 6)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:String" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %String*
store %String* %as, %String** @"::String", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn3() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_19, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_19, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn3" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn3*
store %Fn3* %as, %Fn3** @"::Fn3", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Result::Fail"() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str_20, i32 0, i32 0), i64 12)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str_20, i32 0, i32 0), i64 12)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Result::Fail" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %"Result::Fail"*
store %"Result::Fail"* %as, %"Result::Fail"** @"::Result::Fail", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Dict::Table"() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str_21, i32 0, i32 0), i64 11)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str_21, i32 0, i32 0), i64 11)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Dict::Table" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %"Dict::Table"*
store %"Dict::Table"* %as, %"Dict::Table"** @"::Dict::Table", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Result() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_22, i32 0, i32 0), i64 6)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_22, i32 0, i32 0), i64 6)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([22 x i8*]* @"shiika_vtable_Meta:Result" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Result*
store %Result* %as, %Result** @"::Result", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Shiika::Internal::Ptr"() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str_23, i32 0, i32 0), i64 21)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str_23, i32 0, i32 0), i64 21)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([22 x i8*]* @"shiika_vtable_Meta:Shiika::Internal::Ptr" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %"Shiika::Internal::Ptr"*
store %"Shiika::Internal::Ptr"* %as, %"Shiika::Internal::Ptr"** @"::Shiika::Internal::Ptr", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Array() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_24, i32 0, i32 0), i64 5)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_24, i32 0, i32 0), i64 5)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([25 x i8*]* @"shiika_vtable_Meta:Array" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Array*
store %Array* %as, %Array** @"::Array", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Object() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_25, i32 0, i32 0), i64 6)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_25, i32 0, i32 0), i64 6)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Object" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Object*
store %Object* %as, %Object** @"::Object", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Void() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_26, i32 0, i32 0), i64 4)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_26, i32 0, i32 0), i64 4)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Void" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Void*
br label %"Invoke_Meta:Void#new"
End: ; preds = %"Invoke_Meta:Void#new_end"
ret void
"Invoke_Meta:Void#new": ; preds = %0
%addr_vtable = getelementptr inbounds %Void, %Void* %as, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable3 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable3, 22
%func = bitcast i8* %func_raw to %Void* (%Void*)*
%result4 = call %Void* %func(%Void* %as)
br label %"Invoke_Meta:Void#new_end"
"Invoke_Meta:Void#new_end": ; preds = %"Invoke_Meta:Void#new"
store %Void* %result4, %Void** @"::Void", align 8
br label %End
}
define void @init_Enumerable() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str_27, i32 0, i32 0), i64 10)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str_27, i32 0, i32 0), i64 10)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([22 x i8*]* @"shiika_vtable_Meta:Enumerable" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Enumerable*
store %Enumerable* %as, %Enumerable** @"::Enumerable", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn5() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_28, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_28, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn5" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn5*
store %Fn5* %as, %Fn5** @"::Fn5", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Maybe::Some"() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str_29, i32 0, i32 0), i64 11)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str_29, i32 0, i32 0), i64 11)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Maybe::Some" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %"Maybe::Some"*
store %"Maybe::Some"* %as, %"Maybe::Some"** @"::Maybe::Some", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Triple() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_30, i32 0, i32 0), i64 6)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str_30, i32 0, i32 0), i64 6)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Triple" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Triple*
store %Triple* %as, %Triple** @"::Triple", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Error() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_31, i32 0, i32 0), i64 5)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_31, i32 0, i32 0), i64 5)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Error" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Error*
store %Error* %as, %Error** @"::Error", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_MutableString() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str_32, i32 0, i32 0), i64 13)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str_32, i32 0, i32 0), i64 13)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:MutableString" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %MutableString*
store %MutableString* %as, %MutableString** @"::MutableString", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Metaclass() {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%the_metaclass = bitcast i8* %mem to %Metaclass*
%addr_vtable = getelementptr inbounds %Metaclass, %Metaclass* %the_metaclass, i32 0, i32 0
store i8* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to i8*), i8** %addr_vtable, align 8
%addr_my_class = getelementptr inbounds %Metaclass, %Metaclass* %the_metaclass, i32 0, i32 1
store %Class.0* null, %Class.0** %addr_my_class, align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str_33, i32 0, i32 0), i64 9)
%"addr_@name" = getelementptr inbounds %Metaclass, %Metaclass* %the_metaclass, i32 0, i32 2
store %String* %sk_str, %String** %"addr_@name", align 8
%class = bitcast %Metaclass* %the_metaclass to %Class.0*
%addr_my_class1 = getelementptr inbounds %Metaclass, %Metaclass* %the_metaclass, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class1, align 8
store %Metaclass* %the_metaclass, %Metaclass** @"::Metaclass", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fn6() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_34, i32 0, i32 0), i64 3)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_34, i32 0, i32 0), i64 3)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Fn6" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Fn6*
store %Fn6* %as, %Fn6** @"::Fn6", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Result::Ok"() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str_35, i32 0, i32 0), i64 10)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str_35, i32 0, i32 0), i64 10)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Result::Ok" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %"Result::Ok"*
store %"Result::Ok"* %as, %"Result::Ok"** @"::Result::Ok", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Bool() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_36, i32 0, i32 0), i64 4)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str_36, i32 0, i32 0), i64 4)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([23 x i8*]* @"shiika_vtable_Meta:Bool" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Bool*
store %Bool* %as, %Bool** @"::Bool", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Never() {
%"::Metaclass" = load %Metaclass*, %Metaclass** @"::Metaclass", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_37, i32 0, i32 0), i64 5)
%result = call %Metaclass* @Metaclass_new(%Metaclass* null, %String* %sk_str, %Object* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to %Object*), %Metaclass* %"::Metaclass")
%sk_str1 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_37, i32 0, i32 0), i64 5)
%result2 = call %Class.0* @Meta_Class_new(%Class.0* null, %String* %sk_str1, %Object* bitcast ([22 x i8*]* @"shiika_vtable_Meta:Never" to %Object*), %Metaclass* %result)
%as = bitcast %Class.0* %result2 to %Never*
store %Never* %as, %Never** @"::Never", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Fn::EXIT_NORMAL"() {
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** @"::Fn::EXIT_NORMAL", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Fn::EXIT_BREAK"() {
%sk_int = call %Int* @box_int(i64 1)
store %Int* %sk_int, %Int** @"::Fn::EXIT_BREAK", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Some() {
%"::Maybe::Some" = load %"Maybe::Some"*, %"Maybe::Some"** @"::Maybe::Some", align 8
store %"Maybe::Some"* %"::Maybe::Some", %"Maybe::Some"** @"::Some", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_None() {
%"::Maybe::None" = load %"Maybe::None"*, %"Maybe::None"** @"::Maybe::None", align 8
store %"Maybe::None"* %"::Maybe::None", %"Maybe::None"** @"::None", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Array::BYTES_OF_PTR"() {
%sk_int = call %Int* @box_int(i64 8)
store %Int* %sk_int, %Int** @"::Array::BYTES_OF_PTR", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Array::INITIAL_CAPA"() {
%sk_int = call %Int* @box_int(i64 10)
store %Int* %sk_int, %Int** @"::Array::INITIAL_CAPA", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_Dict::N_TABLES"() {
%sk_int = call %Int* @box_int(i64 1000)
store %Int* %sk_int, %Int** @"::Dict::N_TABLES", align 8
br label %End
End: ; preds = %0
ret void
}
define void @"init_MutableString::INITIAL_STR_CAPA"() {
%sk_int = call %Int* @box_int(i64 10)
store %Int* %sk_int, %Int** @"::MutableString::INITIAL_STR_CAPA", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Ok() {
%"::Result::Ok" = load %"Result::Ok"*, %"Result::Ok"** @"::Result::Ok", align 8
store %"Result::Ok"* %"::Result::Ok", %"Result::Ok"** @"::Ok", align 8
br label %End
End: ; preds = %0
ret void
}
define void @init_Fail() {
%"::Result::Fail" = load %"Result::Fail"*, %"Result::Fail"** @"::Result::Fail", align 8
store %"Result::Fail"* %"::Result::Fail", %"Result::Fail"** @"::Fail", align 8
br label %End
End: ; preds = %0
ret void
}
define void @builtin_init_constants() {
call void @init_Metaclass()
call void @init_Class()
call void @"init_Shiika::Internal::Ptr"()
call void @init_Fn2()
call void @"init_Maybe::None"()
call void @init_Pair()
call void @init_Int()
call void @"init_Shiika::Internal::Memory"()
call void @init_Math()
call void @init_Fn()
call void @init_Maybe()
call void @init_Dict()
call void @init_Fn7()
call void @init_Fn1()
call void @init_Fn0()
call void @init_Fn8()
call void @init_Fn9()
call void @init_Fn4()
call void @init_File()
call void @init_Float()
call void @init_String()
call void @init_Fn3()
call void @"init_Result::Fail"()
call void @"init_Dict::Table"()
call void @init_Result()
call void @init_Array()
call void @init_Object()
call void @init_Void()
call void @init_Enumerable()
call void @init_Fn5()
call void @"init_Maybe::Some"()
call void @init_Triple()
call void @init_Error()
call void @init_MutableString()
call void @init_Fn6()
call void @"init_Result::Ok"()
call void @init_Bool()
call void @init_Never()
call void @"init_Fn::EXIT_NORMAL"()
call void @"init_Fn::EXIT_BREAK"()
call void @init_Some()
call void @init_None()
call void @"init_Array::BYTES_OF_PTR"()
call void @"init_Array::INITIAL_CAPA"()
call void @"init_Dict::N_TABLES"()
call void @"init_MutableString::INITIAL_STR_CAPA"()
call void @init_Ok()
call void @init_Fail()
ret void
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment