Created
October 12, 2024 04:38
-
-
Save timo/22f18ecdf37836e43da6a81139b5f1bb to your computer and use it in GitHub Desktop.
looking at a case where trying to run an arg guard for osr reasons after an uninline, we access a low-level null in the first argument
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Thread 1 hit Breakpoint 1, MVM_spesh_deopt_one (tc=0x355d2020000, deopt_idx=146) at src/spesh/deopt.c:256 | |
256 MVMFrame *f = tc->cur_frame; | |
(rr) call fputs(MVM_spesh_dump_register_layout(tc, tc->cur_frame), stderr); | |
Invalid character ';' in expression. | |
(rr) call fputs(MVM_spesh_dump_register_layout(tc, tc->cur_frame), stderr) | |
Inlines: | |
- 0 'fully-reified' (cuuid 5943) | |
bytecode from 500 to 582 | |
Callsite 0x7f3c5d294f20 (1 args, 1 pos) | |
Positional flags: obj | |
- 1 'elems' (cuuid 5962) | |
bytecode from 320 to 784 | |
Callsite 0x7f3c5d294f20 (1 args, 1 pos) | |
Positional flags: obj | |
- 2 'splice' (cuuid 7445) | |
bytecode from 1162 to 1396 | |
Callsite 0x355d24524e0 (4 args, 4 pos) | |
Positional flags: obj, obj, obj, obj | |
- 3 'sink' (cuuid 5991) | |
bytecode from 1408 to 1408 | |
Callsite 0x7f3c5d294f20 (1 args, 1 pos) | |
Positional flags: obj | |
- 4 'insert' (cuuid 26) | |
bytecode from 974 to 1432 | |
Callsite 0x7f3c5d295040 (3 args, 3 pos) | |
Positional flags: obj, obj, obj | |
- 5 'insert-also' (cuuid 24) | |
bytecode from 236 to 1456 | |
Callsite 0x7f3c5d294f80 (2 args, 2 pos) | |
Positional flags: obj, obj | |
Parameters: | |
source: f->caller->work: (MVMRegister *)0x355d2482988 | |
frame of source: (MVMFrame *)0x355d229b638 | |
callsite of params: Callsite 0x355d24524e0 (4 args, 4 pos) | |
Positional flags: obj, obj, obj, obj | |
Locals (registers) | |
0: ( obj) (nil) [inline 3's result register] | |
1: ( obj) 0x355d20ceee8 (conc of VMArray name array[str]) | |
2: ( obj) 0x355da9f9c18 (conc of P6opaque name Str) | |
3: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
4: ( obj) 0x355d229b958 (conc of P6opaque name Scalar) | |
5: ( obj) (nil) [inline 1's result register] | |
6: ( obj) (nil) | |
7: ( obj) 0x355d229b7b0 (conc of VMArray name BOOTArray) | |
8: ( obj) 0x355d260d178 (type of P6opaque name Any) [inline 0's result register] [inline 2's result register] | |
9: ( str) 0x355ddb35ef0 | |
10: ( obj) 0x355d229ba90 (conc of P6opaque name Int) [inline 5's result register] | |
11: ( int64) 0x0 | |
12: ( obj) 0x355d229b958 (conc of P6opaque name Scalar) | |
13: ( obj) (nil) | |
14: ( obj) (nil) | |
15: ( obj) 0x355d260d190 (type of P6opaque name Array) | |
16: ( obj) (nil) | |
17: ( int64) 0x1 | |
18: ( obj) 0x355d8a67250 (conc of MVMCode name BOOTCode) [inline 5's code ref register] | |
19: ( obj) 0x355d2600830 (type of Null name VMNull) | |
20: ( obj) (nil) [start of inline 5's registers] | |
21: ( obj) 0x355d229ba90 (conc of P6opaque name Int) | |
22: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
23: ( obj) 0x355d229ba90 (conc of P6opaque name Int) | |
24: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
25: ( obj) (nil) | |
26: ( str) 0x355d3691a50 | |
27: ( obj) (nil) | |
28: ( int64) 0x0 | |
29: ( int64) 0x0 | |
30: ( obj) 0x355d2600830 (type of Null name VMNull) | |
31: ( obj) 0x355d229ba90 (conc of P6opaque name Int) | |
32: ( int64) 0x1 | |
33: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
34: ( obj) 0x355d50d1558 (conc of MVMCode name BOOTCode) [inline 1's code ref register] | |
35: ( obj) 0x355d2600830 (type of Null name VMNull) | |
36: ( obj) 0x355d2600830 (type of Null name VMNull) | |
37: ( obj) 0x355d229b808 (conc of P6opaque name Array) [start of inline 1's registers] | |
38: ( obj) (nil) | |
39: ( obj) (nil) | |
40: ( obj) (nil) | |
41: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
42: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
43: ( int64) 0x0 | |
44: ( str) 0x355d4952c20 | |
45: ( obj) 0x355d229b8a0 (conc of P6opaque name List::Reifier) | |
46: ( obj) (nil) | |
47: ( obj) (nil) | |
48: ( int64) 0x0 | |
49: ( obj) (nil) | |
50: ( int64) 0x0 | |
51: ( int64) 0x0 | |
52: ( obj) (nil) | |
53: ( obj) 0x355d50d3520 (conc of MVMCode name BOOTCode) [inline 0's code ref register] | |
54: ( obj) 0x355d2600830 (type of Null name VMNull) | |
55: ( obj) 0x355d2600830 (type of Null name VMNull) | |
56: ( obj) 0x355d229b8a0 (conc of P6opaque name List::Reifier) [start of inline 0's registers] | |
57: ( obj) (nil) | |
58: ( obj) (nil) | |
59: ( obj) (nil) | |
60: ( obj) (nil) | |
61: ( obj) 0x355d229bad8 (conc of P6opaque name Scalar) | |
62: ( int64) 0x0 | |
63: ( int64) 0x0 | |
64: ( int64) 0x0 | |
65: ( obj) (nil) [last of 0's registers] [last of 1's registers] | |
66: ( obj) (nil) [inline 4's code ref register] | |
67: ( obj) (nil) | |
68: ( obj) (nil) | |
69: ( obj) (nil) [start of inline 4's registers] | |
70: ( obj) (nil) | |
71: ( obj) (nil) | |
72: ( obj) (nil) | |
73: ( obj) (nil) | |
74: ( obj) (nil) | |
75: ( obj) (nil) | |
76: ( str) (nil) | |
77: ( obj) (nil) | |
78: ( obj) (nil) | |
79: ( int64) 0x0 | |
80: ( obj) (nil) | |
81: ( obj) (nil) | |
82: ( obj) (nil) | |
83: ( obj) (nil) [inline 3's code ref register] | |
84: ( obj) (nil) | |
85: ( obj) (nil) [inline 2's code ref register] | |
86: ( obj) (nil) | |
87: ( obj) (nil) | |
88: ( obj) (nil) | |
89: ( obj) (nil) [start of inline 2's registers] | |
90: ( obj) (nil) | |
91: ( obj) (nil) | |
92: ( obj) (nil) | |
93: ( obj) (nil) | |
94: ( obj) (nil) | |
95: ( obj) (nil) | |
96: ( obj) (nil) | |
97: ( obj) (nil) | |
98: ( obj) (nil) | |
99: ( obj) (nil) | |
100: ( str) (nil) | |
101: ( obj) (nil) | |
102: ( obj) (nil) | |
103: ( obj) (nil) | |
104: ( int64) 0x0 | |
105: ( obj) (nil) | |
106: ( obj) (nil) | |
107: ( int64) 0x0 | |
108: ( obj) (nil) | |
109: ( obj) (nil) | |
110: ( obj) (nil) | |
111: ( obj) (nil) [last of 2's registers] | |
112: ( obj) (nil) [start of inline 3's registers] | |
113: ( obj) (nil) | |
114: ( obj) (nil) | |
115: ( obj) (nil) | |
116: ( obj) (nil) | |
117: ( obj) (nil) | |
118: ( obj) (nil) | |
119: ( int64) 0x0 [last of 3's registers] [last of 4's registers] [last of 5's registers] | |
Spesh slots: | |
0 = 0x355d27283f0 STable (BOOTArray) | |
1 = 0x355d5afb8c0 STable (array[str]) | |
2 = 0x355d273c490 STable (Str) | |
3 = 0x355d273a900 STable (Array) | |
4 = 0x355d273a858 STable (Any) | |
5 = 0x355d273c730 STable (Sub) | |
6 = 0x355d273b0e0 STable (Int) | |
7 = 0x355d5bc3060 Type Object (array[str]) | |
8 = 0x355d260d568 Type Object (Str) | |
9 = 0x355d260d190 Type Object (Array) | |
10 = 0x355d50d1120 Instance (BOOTCode) - 'from-slurpy' (5947) | |
11 = 0x355d260d178 Type Object (Any) | |
12 = 0x355d260d4f0 Type Object (Scalar) | |
13 = 0x355d273c148 STable (Scalar) | |
14 = 0x355d536e400 Instance (BOOTStaticFrame) - 'inserts' (35) | |
15 = 0x355d8557298 Instance (Sub) | |
16 = 0x355d260d3a0 Type Object (Nil) | |
17 = 0x355d8557f58 Instance (Sub) | |
18 = 0x355d8a67250 Instance (BOOTCode) - 'insert-also' (24) | |
19 = 0x355d273b0e0 STable (Int) | |
20 = 0x355d273a900 STable (Array) | |
21 = 0x355d273b380 STable (IterationBuffer) | |
22 = 0x355d273c730 STable (Sub) | |
23 = 0x355d9757138 STable (Array[Any]) | |
24 = 0x355d260d298 Type Object (Int) | |
25 = 0x355d3729b98 Type Object (PositionalBindFailover) | |
26 = 0x355d37293b8 Type Object (Positional[Any]) | |
27 = 0x355d50d1558 Instance (BOOTCode) - 'elems' (5962) | |
28 = 0x355d2728498 STable (BOOTHash) | |
29 = 0x355d273a900 STable (Array) | |
30 = 0x355d5aec4e8 STable (List::Reifier) | |
31 = 0x355d273b0e0 STable (Int) | |
32 = 0x355d273aaf8 STable (Bool) | |
33 = 0x355d273b380 STable (IterationBuffer) | |
34 = 0x355d260d328 Type Object (List) | |
35 = 0x355d260d388 Type Object (Mu) | |
36 = 0x355d260d388 Type Object (Mu) | |
37 = 0x355d50d3490 Instance (BOOTCode) - 'reify-until-lazy' (5941) | |
38 = 0x355d260d388 Type Object (Mu) | |
39 = 0x355d50d3520 Instance (BOOTCode) - 'fully-reified' (5943) | |
40 = 0x355d2728498 STable (BOOTHash) | |
41 = 0x355d5aec4e8 STable (List::Reifier) | |
42 = 0x355d278eee8 STable (Iterator) | |
43 = 0x355d273c148 STable (Scalar) | |
44 = 0x355d273a858 STable (Any) | |
45 = 0x355d5bc1c98 Type Object (List::Reifier) | |
46 = 0x355d5bbaff0 Instance (Scalar) | |
47 = 0x355d5bbb020 Instance (Scalar) | |
48 = 0x355d45cda18 Instance (Bool) | |
49 = 0x355d2552f00 Instance (BOOTCCode) | |
50 = 0x355d260d388 Type Object (Mu) | |
51 = 0x355d4771348 Instance (Str) | |
52 = 0x355d4c6f600 Instance (BOOTStaticFrame) - 'elems' (5962) | |
53 = 0x355d273b0e0 STable (Int) | |
54 = 0x355d2689ba0 Instance (BOOTCompUnit) | |
55 = 0x355d260d388 Type Object (Mu) | |
56 = 0x355d8557fe0 Instance (Sub) | |
57 = 0x355d273b8c0 STable (Num) | |
58 = 0x355d8a672e0 Instance (BOOTCode) - 'insert' (26) | |
59 = 0x355d9757138 STable (Array[Any]) | |
60 = 0x355d273b0e0 STable (Int) | |
61 = 0x355d273b8c0 STable (Num) | |
62 = 0x355d3729b98 Type Object (PositionalBindFailover) | |
63 = 0x355d37293b8 Type Object (Positional[Any]) | |
64 = 0x355d260d178 Type Object (Any) | |
65 = 0x355d260d4f0 Type Object (Scalar) | |
66 = 0x355d273c148 STable (Scalar) | |
67 = 0x355d536db00 Instance (BOOTStaticFrame) - 'insert' (26) | |
68 = 0x355dd8e3b28 Instance (Int) | |
69 = 0x355d50eb2d8 Instance (BOOTCode) - 'splice' (7445) | |
70 = 0x355d2728498 STable (BOOTHash) | |
71 = 0x355d27283f0 STable (BOOTArray) | |
72 = 0x355d9757138 STable (Array[Any]) | |
73 = 0x355d273b0e0 STable (Int) | |
74 = 0x355d273a900 STable (Array) | |
75 = 0x355d260d190 Type Object (Array) | |
76 = 0x355d260d298 Type Object (Int) | |
77 = 0x355d50d1120 Instance (BOOTCode) - 'from-slurpy' (5947) | |
78 = 0x355d50eba70 Instance (BOOTCode) - 'splice' (7485) | |
79 = 0x355d372a348 Type Object (Array:D) | |
80 = 0x355d2689ba0 Instance (BOOTCompUnit) | |
81 = 0x355d50d1ca8 Instance (BOOTCode) - 'sink' (5991) | |
82 = 0x355d2728498 STable (BOOTHash) | |
83 = 0x355d9757138 STable (Array[Any]) | |
84 = 0x355d260d328 Type Object (List) | |
85 = 0x355d260d3a0 Type Object (Nil) | |
$1 = 1 | |
(rr) call MVM_dump_bytecode(tc) | |
unknown type 19521 | |
00000 sp_getarg_o loc_1_obj, 0 | |
00001 sp_getarg_o loc_2_obj, 1 | |
00002 sp_fastcreate loc_7_obj, 56, sslot(0) | |
00003 const_i64_16 loc_17_int, 0 | |
00004 sp_getarg_o loc_18_obj, 2 | |
00005 bindpos_o loc_7_obj, loc_17_int, loc_18_obj | |
00006 const_i64_16 loc_17_int, 1 | |
00007 sp_getarg_o loc_18_obj, 3 | |
00008 bindpos_o loc_7_obj, loc_17_int, loc_18_obj | |
00009 sp_getspeshslot loc_12_obj, sslot(9) | |
00010 set loc_15_obj, loc_12_obj | |
00011 set loc_15_obj, loc_15_obj | |
00012 const_s loc_9_str, 'from-slurpy' | |
00013 sp_getspeshslot loc_18_obj, sslot(10) | |
00014 sp_resumption loc_19_obj, 0, 4, loc_15_obj, loc_9_str, loc_12_obj, loc_7_obj | |
00015 sp_runbytecode_o loc_12_obj, loc_18_obj, 3667134844320, 0, loc_12_obj, loc_7_obj | |
00016 sp_guardconc loc_12_obj, loc_12_obj, sslot(3), 20 | |
00017 set loc_3_obj, loc_12_obj | |
00018 sp_getspeshslot loc_8_obj, sslot(11) | |
00019 sp_fastcreate loc_12_obj, 48, sslot(13) | |
00020 sp_bind_o loc_12_obj, 40, loc_8_obj | |
00021 set loc_4_obj, loc_12_obj | |
00022 sp_bindcomplete sslot(14), 71 | |
00023 sp_getspeshslot loc_10_obj, sslot(15) | |
00024 set loc_10_obj, loc_10_obj | |
00025 sp_dispatch_o loc_10_obj, 'lang-call', Callsite_19, sslot(14), 77, loc_10_obj, loc_1_obj, loc_2_obj, loc_4_obj | |
00026 sp_guardconc loc_10_obj, loc_10_obj, sslot(6), 30 | |
00027 sp_getspeshslot loc_18_obj, sslot(18) | |
00028 null loc_30_obj | |
00029 set loc_23_obj, loc_10_obj | |
00030 set loc_31_obj, loc_23_obj | |
00031 set loc_21_obj, loc_31_obj | |
00032 set loc_24_obj, loc_3_obj | |
00033 set loc_33_obj, loc_24_obj | |
00034 const_i64_16 loc_32_int, 1 | |
00035 set loc_22_obj, loc_24_obj | |
00036 const_s loc_26_str, 'elems' | |
00037 sp_getspeshslot loc_34_obj, sslot(27) | |
00038 sp_resumption loc_35_obj, 1, 1, loc_22_obj | |
00039 sp_resumption loc_36_obj, 2, 3, loc_22_obj, loc_26_str, loc_22_obj | |
00040 set loc_37_obj, loc_22_obj | |
00041 sp_getvt_o loc_42_obj, loc_37_obj, 40, sslot(35) | |
00042 sp_guardconc loc_42_obj, loc_42_obj, sslot(30), 97 | |
00043 sp_getvt_o loc_42_obj, loc_37_obj, 40, sslot(36) | |
00044 sp_guardconc loc_42_obj, loc_42_obj, sslot(30), 100 | |
00045 set loc_41_obj, loc_42_obj | |
00046 set loc_41_obj, loc_41_obj | |
00047 sp_getstringfrom loc_44_str, sslot(54), 4706 | |
00048 sp_getspeshslot loc_53_obj, sslot(37) | |
00049 sp_resumption loc_54_obj, 3, 3, loc_41_obj, loc_44_str, loc_42_obj | |
00050 sp_runbytecode_o loc_42_obj, loc_53_obj, 139897237753632, 0, loc_42_obj | |
00051 -> sp_guardconc loc_42_obj, loc_42_obj, sslot(31), 104 | |
00052 set loc_41_obj, loc_42_obj | |
00053 sp_getvt_o loc_45_obj, loc_37_obj, 40, sslot(38) | |
00054 sp_guardconc loc_45_obj, loc_45_obj, sslot(30), 109 | |
00055 sp_getstringfrom loc_44_str, sslot(54), 4707 | |
00056 sp_getspeshslot loc_53_obj, sslot(39) | |
00057 sp_resumption loc_55_obj, 4, 3, loc_45_obj, loc_44_str, loc_45_obj | |
00058 set loc_56_obj, loc_45_obj | |
00059 sp_getvc_o loc_61_obj, loc_56_obj, 40, sslot(46) | |
00060 sp_guardtype loc_61_obj, loc_61_obj, sslot(42), 146 | |
00061 const_i64_16 loc_64_int, 0 | |
00062 sp_getvc_o loc_61_obj, loc_56_obj, 48, sslot(47) | |
00063 sp_guardconc loc_61_obj, loc_61_obj, sslot(43), 149 | |
00064 sp_get_o loc_60_obj, loc_61_obj, 40 | |
00065 sp_guardtype loc_60_obj, loc_60_obj, sslot(44), 150 | |
00066 sp_getspeshslot loc_45_obj, sslot(48) | |
00067 set loc_45_obj, loc_45_obj | |
00068 sp_getspeshslot loc_53_obj, sslot(49) | |
00069 sp_runcfunc_i loc_50_int, loc_53_obj, 139897237753632, loc_45_obj | |
00070 unless_i loc_50_int, label_1(00078) | |
00071 null loc_46_obj | |
00072 sp_bind_o loc_37_obj, 40, loc_46_obj | |
00073 sp_getvt_o loc_47_obj, loc_37_obj, 32, sslot(50) | |
00074 sp_guardconc loc_47_obj, loc_47_obj, sslot(33), 122 | |
00075 sp_get_i64 loc_48_int, loc_47_obj, 24 | |
00076 sp_fastbox_bi_ic loc_49_obj, 40, sslot(53), 32, loc_48_int, 1 | |
00077 goto label_2(00085) | |
label_1: | |
00078 set loc_47_obj, loc_37_obj | |
00079 sp_getstringfrom loc_44_str, sslot(54), 1217 | |
00080 wval loc_45_obj, 0, 27723 | |
00081 sp_getspeshslot loc_49_obj, sslot(51) | |
00082 sp_dispatch_o loc_49_obj, 'lang-meth-call', Callsite_16, sslot(52), 96, loc_47_obj, loc_44_str, loc_37_obj, loc_45_obj, loc_49_obj | |
00083 sp_dispatch_o loc_45_obj, 'lang-hllize', Callsite_5, sslot(52), 101, loc_49_obj | |
00084 set loc_49_obj, loc_45_obj | |
label_2: | |
00085 set loc_45_obj, loc_49_obj | |
00086 sp_guardconc loc_42_obj, loc_45_obj, sslot(31), 135 | |
00087 set loc_25_obj, loc_42_obj | |
00088 set loc_25_obj, loc_25_obj | |
00089 sp_p6oget_bi loc_28_int, loc_25_obj, 8 | |
00090 sp_bindlex_in lex_Frame_33_lex11_UNKNOWN, loc_28_int | |
00091 sp_getspeshslot loc_27_obj, sslot(34) | |
00092 sp_getvt_o loc_20_obj, loc_22_obj, 32, sslot(55) | |
label_3: | |
00093 elems loc_29_int, loc_20_obj | |
00094 unless_i loc_29_int, label_4(00161) | |
00095 sp_getspeshslot loc_25_obj, sslot(56) | |
00096 set loc_25_obj, loc_25_obj | |
00097 shift_o loc_27_obj, loc_20_obj | |
00098 sp_decont loc_27_obj, loc_27_obj | |
00099 sp_guardconc loc_27_obj, loc_27_obj, sslot(23), 81 | |
00100 shift_o loc_30_obj, loc_20_obj | |
00101 sp_guard loc_21_obj, loc_21_obj, sslot(19), 83 | |
00102 sp_guardconc loc_30_obj, loc_30_obj, sslot(43), 152 | |
00103 sp_p6oget_o loc_34_obj, loc_30_obj, 16 | |
00104 sp_guard loc_34_obj, loc_34_obj, sslot(57), 153 | |
00105 sp_getspeshslot loc_66_obj, sslot(58) | |
00106 sp_resumption loc_67_obj, 5, 4, loc_25_obj, loc_27_obj, loc_21_obj, loc_30_obj | |
00107 sp_guardjustconc loc_80_obj, loc_21_obj, 154 | |
00108 sp_get_o loc_68_obj, loc_30_obj, 40 | |
00109 sp_guardconc loc_68_obj, loc_68_obj, sslot(57), 155 | |
00110 set loc_69_obj, loc_27_obj | |
00111 sp_fastcreate loc_77_obj, 48, sslot(66) | |
00112 sp_bind_o loc_77_obj, 40, loc_80_obj | |
00113 set loc_70_obj, loc_77_obj | |
00114 set loc_74_obj, loc_30_obj | |
00115 sp_get_o loc_77_obj, loc_74_obj, 40 | |
00116 sp_guardconc loc_77_obj, loc_77_obj, sslot(61), 186 | |
00117 set loc_71_obj, loc_74_obj | |
00118 set loc_75_obj, loc_69_obj | |
00119 set loc_75_obj, loc_75_obj | |
00120 const_s loc_76_str, 'splice' | |
00121 sp_getspeshslot loc_77_obj, sslot(68) | |
00122 sp_p6oget_o loc_83_obj, loc_70_obj, 16 | |
00123 sp_guardconc loc_91_obj, loc_83_obj, sslot(60), 194 | |
00124 sp_p6oget_o loc_84_obj, loc_71_obj, 16 | |
00125 sp_guard loc_84_obj, loc_84_obj, sslot(61), 205 | |
00126 sp_getspeshslot loc_85_obj, sslot(69) | |
00127 sp_resumption loc_86_obj, 6, 4, loc_69_obj, loc_70_obj, loc_77_obj, loc_71_obj | |
00128 sp_resumption loc_87_obj, 7, 6, loc_75_obj, loc_76_str, loc_69_obj, loc_70_obj, loc_77_obj, loc_71_obj | |
00129 sp_get_o loc_88_obj, loc_71_obj, 40 | |
00130 sp_guardconc loc_88_obj, loc_88_obj, sslot(61), 206 | |
00131 set loc_89_obj, loc_69_obj | |
00132 set loc_92_obj, loc_77_obj | |
00133 sp_fastcreate loc_97_obj, 56, sslot(71) | |
00134 const_i64_16 loc_107_int, 0 | |
00135 bindpos_o loc_97_obj, loc_107_int, loc_71_obj | |
00136 sp_getspeshslot loc_101_obj, sslot(75) | |
00137 set loc_99_obj, loc_101_obj | |
00138 set loc_99_obj, loc_99_obj | |
00139 sp_getstringfrom loc_100_str, sslot(80), 2240 | |
00140 sp_getspeshslot loc_108_obj, sslot(77) | |
00141 sp_resumption loc_109_obj, 8, 4, loc_99_obj, loc_100_str, loc_101_obj, loc_97_obj | |
00142 sp_runbytecode_o loc_101_obj, loc_108_obj, 3667134844320, 0, loc_101_obj, loc_97_obj | |
00143 sp_guardconc loc_101_obj, loc_101_obj, sslot(74), 237 | |
00144 set loc_93_obj, loc_101_obj | |
00145 set loc_99_obj, loc_89_obj | |
00146 set loc_99_obj, loc_99_obj | |
00147 sp_getstringfrom loc_100_str, sslot(80), 819 | |
00148 sp_getspeshslot loc_108_obj, sslot(78) | |
00149 sp_resumption loc_110_obj, 9, 4, loc_89_obj, loc_91_obj, loc_92_obj, loc_93_obj | |
00150 sp_resumption loc_111_obj, 10, 6, loc_99_obj, loc_100_str, loc_89_obj, loc_91_obj, loc_92_obj, loc_93_obj | |
00151 sp_runbytecode_o loc_99_obj, loc_108_obj, 3667134850272, 0, loc_89_obj, loc_91_obj, loc_92_obj, loc_93_obj | |
00152 sp_guardconc loc_99_obj, loc_99_obj, sslot(72), 244 | |
00153 set loc_101_obj, loc_99_obj | |
00154 set loc_77_obj, loc_101_obj | |
00155 set loc_77_obj, loc_77_obj | |
00156 sp_getspeshslot loc_83_obj, sslot(81) | |
00157 sp_p6oget_o loc_83_obj, loc_70_obj, 8 | |
00158 sp_guardjusttype loc_83_obj, loc_83_obj, 202 | |
00159 set loc_75_obj, loc_70_obj | |
00160 goto label_3(00093) | |
label_4: | |
00161 sp_guardconc loc_30_obj, loc_21_obj, sslot(19), 85 | |
00162 set loc_10_obj, loc_30_obj | |
00163 set loc_10_obj, loc_10_obj | |
00164 set loc_12_obj, loc_10_obj | |
00165 set loc_10_obj, loc_12_obj | |
00166 return_o loc_10_obj | |
(rr) bt | |
#0 MVM_spesh_deopt_one (tc=0x355d2020000, deopt_idx=146) at src/spesh/deopt.c:256 | |
#1 0x00007f3c5cc462fb in MVM_interp_run (tc=0x355d2020000, | |
initial_invoke=0x7f3c5cde53a4 <toplevel_initial_invoke>, invoke_data=0x355d2880700, outer_runloop=0x0) | |
at src/core/interp.c:5601 | |
#2 0x00007f3c5cde54fe in MVM_vm_run_file (instance=0x355d2010400, | |
filename=0x65994e0 "/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm") at src/moar.c:505 | |
#3 0x0000000000401705 in main (argc=<optimized out>, argv=<optimized out>) at src/vm/moar/runner/main.c:480 | |
(rr) up | |
#1 0x00007f3c5cc462fb in MVM_interp_run (tc=0x355d2020000, | |
initial_invoke=0x7f3c5cde53a4 <toplevel_initial_invoke>, invoke_data=0x355d2880700, outer_runloop=0x0) | |
at src/core/interp.c:5601 | |
5601 MVM_spesh_deopt_one(tc, GET_UI32(cur_op, -4)); | |
(rr) list | |
5596 MVMObject *check = GET_REG(cur_op, 2).o; | |
5597 MVMSTable *want = (MVMSTable *)tc->cur_frame | |
5598 ->effective_spesh_slots[GET_UI16(cur_op, 4)]; | |
5599 cur_op += 10; | |
5600 if (!check || IS_CONCRETE(check) || STABLE(check) != want) | |
5601 MVM_spesh_deopt_one(tc, GET_UI32(cur_op, -4)); | |
5602 else | |
5603 target->o = check; | |
5604 goto NEXT; | |
5605 } | |
(rr) print check | |
$2 = (MVMObject *) 0x355d229bad8 | |
(rr) print want | |
$3 = (MVMSTable *) 0x355d278eee8 | |
(rr) print STABLE(check)[0] | |
$4 = {header = {sc_forward_u = {forwarder = 0x1fb0000001c, sc = {sc_idx = 28, idx = 507}, st = 0x1fb0000001c}, | |
owner = 1, flags1 = 2 '\002', flags2 = 2 '\002', size = 168}, REPR = 0x7f3c5d288c60 <P6opaque_this_repr>, | |
REPR_data = 0x355d551d3c0, size = 48, type_check_cache_length = 3, mode_flags = 64, | |
type_check_cache = 0x355d557c0c0, type_cache_id = 102144, container_spec = 0x7f3c5d24f2a0 <value_desc_cont_spec>, | |
container_data = 0x355d54b9cd0, boolification_spec = 0x355d55288b0, hll_owner = 0x355d42f9580, hll_role = 0, | |
WHAT = 0x355d260d4f0, WHO = 0x355d4780c40, HOW = 0x355d295cb00, paramet = {ric = {parameterizer = 0x0, | |
lookup = 0x0}, erized = {parametric_type = 0x0, parameters = 0x0}}, HOW_sc = 0x355d8f5ed20, HOW_idx = 14043, | |
debug_name = 0x355d5557a90 "Scalar", being_repossessed = 0 '\000', is_mixin_type = 0 '\000'} | |
(rr) print want | |
$6 = (MVMSTable *) 0x355d278eee8 | |
(rr) print want[0] | |
$7 = {header = {sc_forward_u = {forwarder = 0x10a0000001c, sc = {sc_idx = 28, idx = 266}, st = 0x10a0000001c}, | |
owner = 1, flags1 = 2 '\002', flags2 = 2 '\002', size = 168}, REPR = 0x7f3c5d289980 <Uninstantiable_this_repr>, | |
REPR_data = 0x0, size = 24, type_check_cache_length = 4, mode_flags = 17, type_check_cache = 0x355d557daa0, | |
type_cache_id = 317440, container_spec = 0x0, container_data = 0x0, boolification_spec = 0x355d5529680, | |
hll_owner = 0x355d42f9580, hll_role = 0, WHAT = 0x355d3729be0, WHO = 0x355d4789f80, HOW = 0x355d59d9230, | |
paramet = {ric = {parameterizer = 0x355d53c4d80, lookup = 0x355d56386b8}, erized = { | |
parametric_type = 0x355d53c4d80, parameters = 0x355d56386b8}}, HOW_sc = 0x355d8f5ed20, HOW_idx = 99645, | |
debug_name = 0x355d5529690 "Iterator", being_repossessed = 0 '\000', is_mixin_type = 0 '\000'} | |
(rr) bt | |
#0 MVM_spesh_deopt_one (tc=0x355d2020000, deopt_idx=146) at src/spesh/deopt.c:256 | |
#1 0x00007f3c5cc462fb in MVM_interp_run (tc=0x355d2020000, | |
initial_invoke=0x7f3c5cde53a4 <toplevel_initial_invoke>, invoke_data=0x355d2880700, outer_runloop=0x0) | |
at src/core/interp.c:5601 | |
#2 0x00007f3c5cde54fe in MVM_vm_run_file (instance=0x355d2010400, | |
filename=0x65994e0 "/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm") at src/moar.c:505 | |
#3 0x0000000000401705 in main (argc=<optimized out>, argv=<optimized out>) at src/vm/moar/runner/main.c:480 | |
(rr) call MVM_dump_backtrace(tc) | |
at <unknown>:1 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/1C/1CA230DD87FD1ED08E9604B09C828C9D9EA80971:inserts) | |
from site#sources/9DED2AA6C7112FD48B15023E49E394BD47CF97F3 (Hash::Sorted):107 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/9D/9DED2AA6C7112FD48B15023E49E394BD47CF97F3:ASSIGN-KEY) | |
from site#sources/501CE482D25397A4184CD87A1E26A98490F81A13 (Hash::Agnostic):74 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/50/501CE482D25397A4184CD87A1E26A98490F81A13:) | |
from site#sources/501CE482D25397A4184CD87A1E26A98490F81A13 (Hash::Agnostic):71 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/50/501CE482D25397A4184CD87A1E26A98490F81A13:STORE) | |
from site#sources/501CE482D25397A4184CD87A1E26A98490F81A13 (Hash::Agnostic):63 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/50/501CE482D25397A4184CD87A1E26A98490F81A13:STORE) | |
from moar_osr_crash_hash_sorted.raku:8 (<ephemeral file>:<unit>) | |
from moar_osr_crash_hash_sorted.raku:1 (<ephemeral file>:<unit-outer>) | |
from NQP::src/HLL/Compiler.nqp:196 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:eval) | |
from NQP::src/HLL/Compiler.nqp:420 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:evalfiles) | |
from NQP::src/HLL/Compiler.nqp:310 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:command_eval) | |
from src/Perl6/Compiler.nqp:234 (/var/home/timo/raku/prefix/share/perl6/lib/Perl6/Compiler.moarvm:command_eval) | |
from NQP::src/HLL/Compiler.nqp:268 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:command_line) | |
from src/main.nqp:81 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:MAIN) | |
from src/main.nqp:63 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:<mainline>) | |
from <unknown>:1 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:<main>) | |
from <unknown>:1 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:<entry>) | |
(rr) next | |
257 if (tc->instance->profiling) | |
(rr) | |
266 if (f->spesh_cand) { | |
(rr) | |
267 MVMuint32 deopt_target = f->spesh_cand->body.deopts[deopt_idx * 2]; | |
(rr) | |
268 MVMuint32 deopt_offset = MVM_spesh_deopt_bytecode_pos(f->spesh_cand->body.deopts[deopt_idx * 2 + 1]); | |
(rr) | |
269 MVMint32 is_pre = MVM_spesh_deopt_is_pre(f->spesh_cand->body.deopts[deopt_idx * 2 + 1]); | |
(rr) | |
274 MVMROOT(tc, f) { | |
(rr) | |
275 begin_frame_deopt(tc, f, deopt_idx); | |
(rr) | |
278 if (f->spesh_cand->body.inlines) { | |
(rr) | |
281 uninline(tc, f, f->spesh_cand, deopt_offset, 0, is_pre); | |
(rr) list | |
276 | |
277 /* Perform any uninlining. */ | |
278 if (f->spesh_cand->body.inlines) { | |
279 /* Perform uninlining. The top frame may have changes, so sync things | |
280 * up. */ | |
281 uninline(tc, f, f->spesh_cand, deopt_offset, 0, is_pre); | |
282 top_frame = MVM_callstack_current_frame(tc); | |
283 tc->cur_frame = top_frame; | |
284 *(tc->interp_reg_base) = top_frame->work; | |
285 *(tc->interp_cu) = top_frame->static_info->body.cu; | |
(rr) next | |
282 top_frame = MVM_callstack_current_frame(tc); | |
(rr) | |
283 tc->cur_frame = top_frame; | |
(rr) | |
284 *(tc->interp_reg_base) = top_frame->work; | |
(rr) | |
285 *(tc->interp_cu) = top_frame->static_info->body.cu; | |
(rr) | |
274 MVMROOT(tc, f) { | |
(rr) | |
294 *(tc->interp_cur_op) = top_frame->static_info->body.bytecode + deopt_target; | |
(rr) | |
295 *(tc->interp_bytecode_start) = top_frame->static_info->body.bytecode; | |
(rr) | |
301 finish_frame_deopt(tc, f); | |
(rr) | |
310 } | |
(rr) | |
MVM_interp_run (tc=0x355d2020000, initial_invoke=0x7f3c5cde53a4 <toplevel_initial_invoke>, | |
invoke_data=0x355d2880700, outer_runloop=0x0) at src/core/interp.c:5604 | |
5604 goto NEXT; | |
(rr) bt | |
#0 MVM_interp_run (tc=0x355d2020000, initial_invoke=0x7f3c5cde53a4 <toplevel_initial_invoke>, | |
invoke_data=0x355d2880700, outer_runloop=0x0) at src/core/interp.c:5604 | |
#1 0x00007f3c5cde54fe in MVM_vm_run_file (instance=0x355d2010400, | |
filename=0x65994e0 "/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm") at src/moar.c:505 | |
#2 0x0000000000401705 in main (argc=<optimized out>, argv=<optimized out>) at src/vm/moar/runner/main.c:480 | |
(rr) call fputs(MVM_spesh_dump_register_layout(tc, tc->cur_frame), stderr) | |
Parameters: | |
source: f->caller->work: (MVMRegister *)0x355d2483300 | |
frame of source: (MVMFrame *)0x355d2483258 | |
callsite of params: Callsite 0x7f3c5d294f20 (1 args, 1 pos) | |
Positional flags: obj | |
Locals (registers) | |
0: ( obj) 0x355d229b8a0 (conc of P6opaque name List::Reifier) | |
1: ( obj) (nil) | |
2: ( obj) (nil) | |
3: ( obj) (nil) | |
4: ( obj) (nil) | |
5: ( obj) 0x355d229bad8 (conc of P6opaque name Scalar) | |
6: ( int64) 0x0 | |
7: ( int64) 0x0 | |
8: ( int64) 0x0 | |
9: ( obj) (nil) | |
$8 = 1 | |
(rr) call MVM_dump_backtrace(tc) | |
at SETTING::src/core.c/List.rakumod:167 (/var/home/timo/raku/prefix/share/perl6/runtime/CORE.c.setting.moarvm:fully-reified) | |
from SETTING::src/core.c/List.rakumod:458 (/var/home/timo/raku/prefix/share/perl6/runtime/CORE.c.setting.moarvm:elems) | |
from site#sources/1CA230DD87FD1ED08E9604B09C828C9D9EA80971 (Array::Sorted::Util):154 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/1C/1CA230DD87FD1ED08E9604B09C828C9D9EA80971:insert-also) | |
from site#sources/1CA230DD87FD1ED08E9604B09C828C9D9EA80971 (Array::Sorted::Util):219 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/1C/1CA230DD87FD1ED08E9604B09C828C9D9EA80971:inserts) | |
from site#sources/9DED2AA6C7112FD48B15023E49E394BD47CF97F3 (Hash::Sorted):107 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/9D/9DED2AA6C7112FD48B15023E49E394BD47CF97F3:ASSIGN-KEY) | |
from site#sources/501CE482D25397A4184CD87A1E26A98490F81A13 (Hash::Agnostic):74 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/50/501CE482D25397A4184CD87A1E26A98490F81A13:) | |
from site#sources/501CE482D25397A4184CD87A1E26A98490F81A13 (Hash::Agnostic):71 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/50/501CE482D25397A4184CD87A1E26A98490F81A13:STORE) | |
from site#sources/501CE482D25397A4184CD87A1E26A98490F81A13 (Hash::Agnostic):63 (/var/home/timo/raku/prefix/share/perl6/site/precomp/4E7BD9243F06AAA401D49D16C049E69C6FB3AA6E/50/501CE482D25397A4184CD87A1E26A98490F81A13:STORE) | |
from moar_osr_crash_hash_sorted.raku:8 (<ephemeral file>:<unit>) | |
from moar_osr_crash_hash_sorted.raku:1 (<ephemeral file>:<unit-outer>) | |
from NQP::src/HLL/Compiler.nqp:196 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:eval) | |
from NQP::src/HLL/Compiler.nqp:420 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:evalfiles) | |
from NQP::src/HLL/Compiler.nqp:310 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:command_eval) | |
from src/Perl6/Compiler.nqp:234 (/var/home/timo/raku/prefix/share/perl6/lib/Perl6/Compiler.moarvm:command_eval) | |
from NQP::src/HLL/Compiler.nqp:268 (/var/home/timo/raku/prefix/share/nqp/lib/NQPHLL.moarvm:command_line) | |
from src/main.nqp:81 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:MAIN) | |
from src/main.nqp:63 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:<mainline>) | |
from <unknown>:1 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:<main>) | |
from <unknown>:1 (/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm:<entry>) | |
(rr) bt | |
#0 MVM_interp_run (tc=0x355d2020000, initial_invoke=0x7f3c5cde53a4 <toplevel_initial_invoke>, | |
invoke_data=0x355d2880700, outer_runloop=0x0) at src/core/interp.c:5604 | |
#1 0x00007f3c5cde54fe in MVM_vm_run_file (instance=0x355d2010400, | |
filename=0x65994e0 "/var/home/timo/raku/prefix/share/perl6/runtime/perl6.moarvm") at src/moar.c:505 | |
#2 0x0000000000401705 in main (argc=<optimized out>, argv=<optimized out>) at src/vm/moar/runner/main.c:480 | |
(rr) next | |
2829 MVMuint8 *prev_op = cur_op; | |
(rr) | |
2830 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) | |
2831 MVMRegister *r = &GET_REG(cur_op, 0); | |
(rr) | |
2832 cur_op += 4; | |
(rr) | |
2833 if (IS_CONCRETE(obj) && STABLE(obj)->container_spec) { | |
(rr) | |
2834 STABLE(obj)->container_spec->fetch(tc, obj, r); | |
(rr) | |
2839 if (MVM_spesh_log_is_logging(tc)) | |
(rr) | |
2841 goto NEXT; | |
(rr) | |
1705 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) | |
1706 GET_REG(cur_op, 0).i64 = obj && IS_CONCRETE(obj) ? 1 : 0; | |
(rr) | |
1707 cur_op += 4; | |
(rr) | |
1708 goto NEXT; | |
(rr) | |
231 GET_REG(cur_op, 0) = GET_REG(cur_op, 2); | |
(rr) | |
232 cur_op += 4; | |
(rr) | |
233 goto NEXT; | |
(rr) | |
295 if (GET_REG(cur_op, 0).i64) | |
(rr) | |
298 cur_op += 6; | |
(rr) | |
299 GC_SYNC_POINT(tc); | |
(rr) | |
300 goto NEXT; | |
(rr) | |
2978 MVMuint16 dep = GET_UI16(cur_op, 2); | |
(rr) | |
2979 MVMuint16 idx = GET_UI16(cur_op, 4); | |
(rr) | |
2980 GET_REG(cur_op, 0).o = MVM_sc_get_sc_object(tc, cu, dep, idx); | |
(rr) | |
2981 cur_op += 6; | |
(rr) | |
2982 goto NEXT; | |
(rr) | |
1964 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) | |
1965 if (!IS_CONCRETE(obj)) | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1970 GET_I16(cur_op, 10), &GET_REG(cur_op, 0), MVM_reg_obj); | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) list | |
1962 } | |
1963 OP(getattr_o): { | |
1964 MVMObject *obj = GET_REG(cur_op, 2).o; | |
1965 if (!IS_CONCRETE(obj)) | |
1966 MVM_exception_throw_adhoc(tc, "Cannot look up attributes in a %s type object. Did you forget a '.new'?", MVM_6model_get_debug_name(tc, obj)); | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
1968 STABLE(obj), obj, OBJECT_BODY(obj), | |
1969 GET_REG(cur_op, 4).o, MVM_cu_string(tc, cu, GET_UI32(cur_op, 6)), | |
1970 GET_I16(cur_op, 10), &GET_REG(cur_op, 0), MVM_reg_obj); | |
1971 if (MVM_spesh_log_is_logging(tc)) | |
(rr) call MVM_str MVM_cu_string(tc, cu, GET_UI32(cur_op, 6)) | |
Display all 200 possibilities? (y or n) | |
(rr) call MVM_string_utf8_encode_C_string(tc, MVM_cu_string(tc, cu, GET_UI32(cur_op, 6)) | |
A syntax error in expression, near the end of `MVM_string_utf8_encode_C_string(tc, MVM_cu_string(tc, cu, GET_UI32(cur_op, 6))'. | |
(rr) print MVM_string_utf8_encode_C_string(tc, MVM_cu_string(tc, cu, GET_UI32(cur_op, 6))) | |
$9 = 0x355d2c72280 "$!future" | |
(rr) call MVM_dump_bytecode(tc) | |
00000 checkarity 1, 1 | |
00001 param_rp_o loc_2_obj, 0 | |
00002 dispatch_o loc_5_obj, 'lang-hllize', Callsite_1, loc_2_obj | |
00003 set loc_2_obj, loc_5_obj | |
00004 decont loc_5_obj, loc_2_obj | |
00005 set loc_9_obj, loc_5_obj | |
00006 wval loc_5_obj, 1, 4720 | |
00007 istype loc_8_int, loc_9_obj, loc_5_obj | |
00008 assertparamcheck loc_8_int | |
00009 set loc_0_obj, loc_9_obj | |
00010 param_sn loc_3_obj | |
annotation: SETTING::src/core.c/List.rakumod:167 | |
00011 wval loc_4_obj, 1, 4720 | |
00012 getattr_o loc_5_obj, loc_0_obj, loc_4_obj, '$!current-iter', 1 | |
00013 decont loc_4_obj, loc_5_obj | |
00014 isconcrete loc_6_int, loc_4_obj | |
00015 set loc_8_int, loc_6_int | |
00016 if_i loc_6_int, label_1(00022) | |
00017 wval loc_4_obj, 1, 4720 | |
00018 -> getattr_o loc_5_obj, loc_0_obj, loc_4_obj, '$!future', 2 | |
00019 decont loc_4_obj, loc_5_obj | |
00020 isconcrete loc_7_int, loc_4_obj | |
00021 set loc_8_int, loc_7_int | |
label_1: | |
00022 not_i loc_8_int, loc_8_int | |
00023 hllbool loc_4_obj, loc_8_int | |
00024 return_o loc_4_obj | |
(rr) next | |
1970 GET_I16(cur_op, 10), &GET_REG(cur_op, 0), MVM_reg_obj); | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1969 GET_REG(cur_op, 4).o, MVM_cu_string(tc, cu, GET_UI32(cur_op, 6)), | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1968 STABLE(obj), obj, OBJECT_BODY(obj), | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1971 if (MVM_spesh_log_is_logging(tc)) | |
(rr) | |
1973 cur_op += 12; | |
(rr) | |
1974 goto NEXT; | |
(rr) | |
2829 MVMuint8 *prev_op = cur_op; | |
(rr) | |
2830 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) | |
2831 MVMRegister *r = &GET_REG(cur_op, 0); | |
(rr) | |
2832 cur_op += 4; | |
(rr) | |
2833 if (IS_CONCRETE(obj) && STABLE(obj)->container_spec) { | |
(rr) list | |
2828 OP(decont): { | |
2829 MVMuint8 *prev_op = cur_op; | |
2830 MVMObject *obj = GET_REG(cur_op, 2).o; | |
2831 MVMRegister *r = &GET_REG(cur_op, 0); | |
2832 cur_op += 4; | |
2833 if (IS_CONCRETE(obj) && STABLE(obj)->container_spec) { | |
2834 STABLE(obj)->container_spec->fetch(tc, obj, r); | |
2835 } | |
2836 else { | |
2837 r->o = obj; | |
(rr) next | |
2837 r->o = obj; | |
(rr) | |
2839 if (MVM_spesh_log_is_logging(tc)) | |
(rr) | |
2841 goto NEXT; | |
(rr) | |
1705 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) | |
1706 GET_REG(cur_op, 0).i64 = obj && IS_CONCRETE(obj) ? 1 : 0; | |
(rr) | |
1707 cur_op += 4; | |
(rr) | |
1708 goto NEXT; | |
(rr) | |
231 GET_REG(cur_op, 0) = GET_REG(cur_op, 2); | |
(rr) list | |
226 OP(const_s): | |
227 GET_REG(cur_op, 0).s = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
228 cur_op += 6; | |
229 goto NEXT; | |
230 OP(set): | |
231 GET_REG(cur_op, 0) = GET_REG(cur_op, 2); | |
232 cur_op += 4; | |
233 goto NEXT; | |
234 OP(extend_u8): | |
235 GET_REG(cur_op, 0).u64 = (MVMuint64)GET_REG(cur_op, 2).u8; | |
(rr) next | |
232 cur_op += 4; | |
(rr) | |
233 goto NEXT; | |
(rr) | |
771 GET_REG(cur_op, 0).i64 = GET_REG(cur_op, 2).i64 ? 0 : 1; | |
(rr) | |
772 cur_op += 4; | |
(rr) | |
773 goto NEXT; | |
(rr) | |
5230 MVMObject *bool_value = GET_REG(cur_op, 2).i64 | |
(rr) | |
5232 : cu->body.hll_config->false_value; | |
(rr) | |
5231 ? cu->body.hll_config->true_value | |
(rr) | |
5232 : cu->body.hll_config->false_value; | |
(rr) | |
5230 MVMObject *bool_value = GET_REG(cur_op, 2).i64 | |
(rr) | |
5233 if (!bool_value) | |
(rr) | |
5235 GET_REG(cur_op, 0).o = bool_value; | |
(rr) | |
5236 cur_op += 4; | |
(rr) | |
5237 goto NEXT; | |
(rr) | |
576 MVMObject *value = GET_REG(cur_op, 0).o; | |
(rr) list | |
571 MVM_RETURN_CALLER_FRAME); | |
572 if (MVM_frame_try_return(tc) == 0) | |
573 goto return_label; | |
574 goto NEXT; | |
575 OP(return_o): { | |
576 MVMObject *value = GET_REG(cur_op, 0).o; | |
577 MVM_args_set_result_obj(tc, value, MVM_RETURN_CALLER_FRAME); | |
578 if (MVM_frame_try_return(tc) == 0) | |
579 goto return_label; | |
580 goto NEXT; | |
(rr) next | |
577 MVM_args_set_result_obj(tc, value, MVM_RETURN_CALLER_FRAME); | |
(rr) | |
578 if (MVM_frame_try_return(tc) == 0) | |
(rr) | |
580 goto NEXT; | |
(rr) | |
5508 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
(rr) list | |
5503 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
5504 tc->cur_frame->static_info, bytecode_offset); | |
5505 goto NEXT; | |
5506 } | |
5507 OP(dispatch_o): { | |
5508 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
5509 cur_op, bytecode_start, tc->cur_frame); | |
5510 MVMDispInlineCacheEntry *ice = *ice_ptr; | |
5511 MVMString *id = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
5512 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
(rr) call MVM_dump_bytecode(tc) | |
00000 checkarity 1, 1 | |
00001 param_rp_o loc_2_obj, 0 | |
00002 dispatch_o loc_8_obj, 'lang-hllize', Callsite_1, loc_2_obj | |
00003 set loc_2_obj, loc_8_obj | |
00004 decont loc_8_obj, loc_2_obj | |
00005 set loc_15_obj, loc_8_obj | |
00006 wval loc_8_obj, 0, 45 | |
00007 istype loc_6_int, loc_15_obj, loc_8_obj | |
00008 assertparamcheck loc_6_int | |
00009 isconcrete loc_6_int, loc_15_obj | |
00010 assertparamcheck loc_6_int | |
00011 set loc_0_obj, loc_15_obj | |
00012 param_sn loc_3_obj | |
annotation: SETTING::src/core.c/List.rakumod:458 | |
00013 wval loc_4_obj, 0, 45 | |
00014 getattr_o loc_5_obj, loc_0_obj, loc_4_obj, '$!todo', 1 | |
00015 decont loc_4_obj, loc_5_obj | |
00016 isconcrete loc_6_int, loc_4_obj | |
00017 unless_i loc_6_int, label_3(00052) | |
00018 wval loc_4_obj, 0, 45 | |
00019 getattr_o loc_5_obj, loc_0_obj, loc_4_obj, '$!todo', 1 | |
00020 decont loc_4_obj, loc_5_obj | |
00021 const_s loc_7_str, 'reify-until-lazy' | |
00022 dispatch_o loc_5_obj, 'lang-meth-call', Callsite_6, loc_4_obj, loc_7_str, loc_5_obj | |
00023 dispatch_o loc_4_obj, 'lang-hllize', Callsite_1, loc_5_obj | |
00024 wval loc_5_obj, 0, 45 | |
00025 getattr_o loc_8_obj, loc_0_obj, loc_5_obj, '$!todo', 1 | |
00026 decont loc_5_obj, loc_8_obj | |
00027 const_s loc_7_str, 'fully-reified' | |
00028 dispatch_o loc_8_obj, 'lang-meth-call', Callsite_6, loc_5_obj, loc_7_str, loc_8_obj | |
00029 -> dispatch_o loc_5_obj, 'lang-hllize', Callsite_1, loc_8_obj | |
00030 decont loc_10_obj, loc_5_obj | |
00031 dispatch_i loc_13_int, 'boot-boolify', Callsite_1, loc_10_obj | |
00032 unless_i loc_13_int, label_1(00043) | |
00033 wval loc_8_obj, 0, 45 | |
00034 null loc_9_obj | |
00035 bindattr_o loc_0_obj, loc_8_obj, '$!todo', loc_9_obj, 1 | |
00036 wval loc_8_obj, 0, 45 | |
00037 getattr_o loc_10_obj, loc_0_obj, loc_8_obj, '$!reified', 0 | |
00038 elems loc_11_int, loc_10_obj | |
00039 hllboxtype_i loc_10_obj | |
00040 box_i loc_10_obj, loc_11_int, loc_10_obj | |
00041 set loc_12_obj, loc_10_obj | |
00042 goto label_2(00050) | |
label_1: | |
00043 decont loc_10_obj, loc_0_obj | |
00044 const_s loc_7_str, 'fail-iterator-cannot-be-lazy' | |
00045 wval loc_8_obj, 1, 27723 | |
00046 wval loc_12_obj, 1, 194 | |
00047 dispatch_o loc_12_obj, 'lang-meth-call', Callsite_17, loc_10_obj, loc_7_str, loc_0_obj, loc_8_obj, loc_12_obj | |
00048 dispatch_o loc_8_obj, 'lang-hllize', Callsite_1, loc_12_obj | |
00049 set loc_12_obj, loc_8_obj | |
label_2: | |
00050 set loc_8_obj, loc_12_obj | |
00051 goto label_5(00065) | |
label_3: | |
00052 wval loc_5_obj, 0, 45 | |
00053 getattr_o loc_8_obj, loc_0_obj, loc_5_obj, '$!reified', 0 | |
00054 decont loc_5_obj, loc_8_obj | |
00055 isconcrete loc_11_int, loc_5_obj | |
00056 set loc_14_int, loc_11_int | |
00057 unless_i loc_11_int, label_4(00062) | |
00058 wval loc_5_obj, 0, 45 | |
00059 getattr_o loc_8_obj, loc_0_obj, loc_5_obj, '$!reified', 0 | |
00060 elems loc_13_int, loc_8_obj | |
00061 set loc_14_int, loc_13_int | |
label_4: | |
00062 hllboxtype_i loc_12_obj | |
00063 box_i loc_12_obj, loc_14_int, loc_12_obj | |
00064 set loc_8_obj, loc_12_obj | |
label_5: | |
00065 dispatch_o loc_5_obj, 'raku-rv-decont', Callsite_1, loc_8_obj | |
00066 return_o loc_5_obj | |
(rr) call MVM_spesh_dump_ | |
MVM_spesh_dump_arg_guard MVM_spesh_dump_planned@got.plt MVM_spesh_dump_stats@got.plt | |
MVM_spesh_dump_arg_guard@got.plt MVM_spesh_dump_planned@plt MVM_spesh_dump_stats@plt | |
MVM_spesh_dump_arg_guard@plt MVM_spesh_dump_register_layout | |
MVM_spesh_dump_planned MVM_spesh_dump_stats | |
(rr) call fputs(MVM_spesh_dump_register_layout(tc, tc->cur_frame), stderr) | |
Parameters: | |
source: f->caller->work: (MVMRegister *)0x355d2483118 | |
frame of source: (MVMFrame *)0x355d2483070 | |
callsite of params: Callsite 0x7f3c5d294f20 (1 args, 1 pos) | |
Positional flags: obj | |
Locals (registers) | |
0: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
1: ( obj) (nil) | |
2: ( obj) (nil) | |
3: ( obj) (nil) | |
4: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
5: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
6: ( int64) 0x0 | |
7: ( str) 0x355d4952c20 | |
8: ( obj) 0x355d45cda18 (conc of P6opaque name Bool) | |
9: ( obj) (nil) | |
10: ( obj) (nil) | |
11: ( int64) 0x0 | |
12: ( obj) (nil) | |
13: ( int64) 0x0 | |
14: ( int64) 0x0 | |
15: ( obj) (nil) | |
$10 = 1 | |
(rr) | |
(rr) next | |
5510 MVMDispInlineCacheEntry *ice = *ice_ptr; | |
(rr) | |
5511 MVMString *id = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
(rr) | |
5512 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
(rr) | |
5513 MVMuint16 *args = (MVMuint16 *)(cur_op + 8); | |
(rr) | |
5514 MVMuint32 bytecode_offset = (cur_op - bytecode_start) - 2; | |
(rr) | |
5515 tc->cur_frame->return_value = &GET_REG(cur_op, 0); | |
(rr) | |
5516 tc->cur_frame->return_type = MVM_RETURN_OBJ; | |
(rr) | |
5517 cur_op += 8 + 2 * callsite->flag_count; | |
(rr) list | |
5512 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
5513 MVMuint16 *args = (MVMuint16 *)(cur_op + 8); | |
5514 MVMuint32 bytecode_offset = (cur_op - bytecode_start) - 2; | |
5515 tc->cur_frame->return_value = &GET_REG(cur_op, 0); | |
5516 tc->cur_frame->return_type = MVM_RETURN_OBJ; | |
5517 cur_op += 8 + 2 * callsite->flag_count; | |
5518 tc->cur_frame->return_address = cur_op; | |
5519 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
5520 tc->cur_frame->static_info, bytecode_offset); | |
5521 goto NEXT; | |
(rr) next | |
5518 tc->cur_frame->return_address = cur_op; | |
(rr) | |
5519 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
(rr) | |
5520 tc->cur_frame->static_info, bytecode_offset); | |
(rr) | |
5519 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
(rr) | |
5521 goto NEXT; | |
(rr) | |
2829 MVMuint8 *prev_op = cur_op; | |
(rr) | |
2830 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) | |
2831 MVMRegister *r = &GET_REG(cur_op, 0); | |
(rr) | |
2832 cur_op += 4; | |
(rr) | |
2833 if (IS_CONCRETE(obj) && STABLE(obj)->container_spec) { | |
(rr) | |
2837 r->o = obj; | |
(rr) | |
2839 if (MVM_spesh_log_is_logging(tc)) | |
(rr) | |
2841 goto NEXT; | |
(rr) | |
5444 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
(rr) list | |
5439 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
5440 tc->cur_frame->static_info, bytecode_offset); | |
5441 goto NEXT; | |
5442 } | |
5443 OP(dispatch_i): { | |
5444 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
5445 cur_op, bytecode_start, tc->cur_frame); | |
5446 MVMDispInlineCacheEntry *ice = *ice_ptr; | |
5447 MVMString *id = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
5448 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
(rr) next | |
5446 MVMDispInlineCacheEntry *ice = *ice_ptr; | |
(rr) | |
5447 MVMString *id = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
(rr) | |
5448 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
(rr) | |
5449 MVMuint16 *args = (MVMuint16 *)(cur_op + 8); | |
(rr) | |
5450 MVMuint32 bytecode_offset = (cur_op - bytecode_start) - 2; | |
(rr) | |
5451 tc->cur_frame->return_value = &GET_REG(cur_op, 0); | |
(rr) | |
5452 tc->cur_frame->return_type = MVM_RETURN_INT; | |
(rr) | |
5453 cur_op += 8 + 2 * callsite->flag_count; | |
(rr) | |
5454 tc->cur_frame->return_address = cur_op; | |
(rr) | |
5455 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
(rr) | |
5456 tc->cur_frame->static_info, bytecode_offset); | |
(rr) | |
5455 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
(rr) | |
5457 goto NEXT; | |
(rr) | |
302 if (GET_REG(cur_op, 0).i64) | |
(rr) | |
303 cur_op += 6; | |
(rr) | |
306 GC_SYNC_POINT(tc); | |
(rr) | |
307 goto NEXT; | |
(rr) | |
2978 MVMuint16 dep = GET_UI16(cur_op, 2); | |
(rr) list | |
2973 sh, cr, conf, blob); | |
2974 cur_op += 10; | |
2975 goto NEXT; | |
2976 } | |
2977 OP(wval): { | |
2978 MVMuint16 dep = GET_UI16(cur_op, 2); | |
2979 MVMuint16 idx = GET_UI16(cur_op, 4); | |
2980 GET_REG(cur_op, 0).o = MVM_sc_get_sc_object(tc, cu, dep, idx); | |
2981 cur_op += 6; | |
2982 goto NEXT; | |
(rr) next | |
2979 MVMuint16 idx = GET_UI16(cur_op, 4); | |
(rr) | |
2980 GET_REG(cur_op, 0).o = MVM_sc_get_sc_object(tc, cu, dep, idx); | |
(rr) | |
2981 cur_op += 6; | |
(rr) | |
2982 goto NEXT; | |
(rr) | |
1646 GET_REG(cur_op, 0).o = tc->instance->VMNull; | |
(rr) call MVM_dump_bytecode(tc) | |
00000 checkarity 1, 1 | |
00001 param_rp_o loc_2_obj, 0 | |
00002 dispatch_o loc_8_obj, 'lang-hllize', Callsite_1, loc_2_obj | |
00003 set loc_2_obj, loc_8_obj | |
00004 decont loc_8_obj, loc_2_obj | |
00005 set loc_15_obj, loc_8_obj | |
00006 wval loc_8_obj, 0, 45 | |
00007 istype loc_6_int, loc_15_obj, loc_8_obj | |
00008 assertparamcheck loc_6_int | |
00009 isconcrete loc_6_int, loc_15_obj | |
00010 assertparamcheck loc_6_int | |
00011 set loc_0_obj, loc_15_obj | |
00012 param_sn loc_3_obj | |
annotation: SETTING::src/core.c/List.rakumod:458 | |
00013 wval loc_4_obj, 0, 45 | |
00014 getattr_o loc_5_obj, loc_0_obj, loc_4_obj, '$!todo', 1 | |
00015 decont loc_4_obj, loc_5_obj | |
00016 isconcrete loc_6_int, loc_4_obj | |
00017 unless_i loc_6_int, label_3(00052) | |
00018 wval loc_4_obj, 0, 45 | |
00019 getattr_o loc_5_obj, loc_0_obj, loc_4_obj, '$!todo', 1 | |
00020 decont loc_4_obj, loc_5_obj | |
00021 const_s loc_7_str, 'reify-until-lazy' | |
00022 dispatch_o loc_5_obj, 'lang-meth-call', Callsite_6, loc_4_obj, loc_7_str, loc_5_obj | |
00023 dispatch_o loc_4_obj, 'lang-hllize', Callsite_1, loc_5_obj | |
00024 wval loc_5_obj, 0, 45 | |
00025 getattr_o loc_8_obj, loc_0_obj, loc_5_obj, '$!todo', 1 | |
00026 decont loc_5_obj, loc_8_obj | |
00027 const_s loc_7_str, 'fully-reified' | |
00028 dispatch_o loc_8_obj, 'lang-meth-call', Callsite_6, loc_5_obj, loc_7_str, loc_8_obj | |
00029 dispatch_o loc_5_obj, 'lang-hllize', Callsite_1, loc_8_obj | |
00030 decont loc_10_obj, loc_5_obj | |
00031 dispatch_i loc_13_int, 'boot-boolify', Callsite_1, loc_10_obj | |
00032 -> unless_i loc_13_int, label_1(00043) | |
00033 wval loc_8_obj, 0, 45 | |
00034 null loc_9_obj | |
00035 bindattr_o loc_0_obj, loc_8_obj, '$!todo', loc_9_obj, 1 | |
00036 wval loc_8_obj, 0, 45 | |
00037 getattr_o loc_10_obj, loc_0_obj, loc_8_obj, '$!reified', 0 | |
00038 elems loc_11_int, loc_10_obj | |
00039 hllboxtype_i loc_10_obj | |
00040 box_i loc_10_obj, loc_11_int, loc_10_obj | |
00041 set loc_12_obj, loc_10_obj | |
00042 goto label_2(00050) | |
label_1: | |
00043 decont loc_10_obj, loc_0_obj | |
00044 const_s loc_7_str, 'fail-iterator-cannot-be-lazy' | |
00045 wval loc_8_obj, 1, 27723 | |
00046 wval loc_12_obj, 1, 194 | |
00047 dispatch_o loc_12_obj, 'lang-meth-call', Callsite_17, loc_10_obj, loc_7_str, loc_0_obj, loc_8_obj, loc_12_obj | |
00048 dispatch_o loc_8_obj, 'lang-hllize', Callsite_1, loc_12_obj | |
00049 set loc_12_obj, loc_8_obj | |
label_2: | |
00050 set loc_8_obj, loc_12_obj | |
00051 goto label_5(00065) | |
label_3: | |
00052 wval loc_5_obj, 0, 45 | |
00053 getattr_o loc_8_obj, loc_0_obj, loc_5_obj, '$!reified', 0 | |
00054 decont loc_5_obj, loc_8_obj | |
00055 isconcrete loc_11_int, loc_5_obj | |
00056 set loc_14_int, loc_11_int | |
00057 unless_i loc_11_int, label_4(00062) | |
00058 wval loc_5_obj, 0, 45 | |
00059 getattr_o loc_8_obj, loc_0_obj, loc_5_obj, '$!reified', 0 | |
00060 elems loc_13_int, loc_8_obj | |
00061 set loc_14_int, loc_13_int | |
label_4: | |
00062 hllboxtype_i loc_12_obj | |
00063 box_i loc_12_obj, loc_14_int, loc_12_obj | |
00064 set loc_8_obj, loc_12_obj | |
label_5: | |
00065 dispatch_o loc_5_obj, 'raku-rv-decont', Callsite_1, loc_8_obj | |
00066 return_o loc_5_obj | |
(rr) next | |
1647 cur_op += 2; | |
(rr) | |
1648 goto NEXT; | |
(rr) | |
1848 MVMObject *obj = GET_REG(cur_op, 0).o; | |
(rr) | |
1849 if (!IS_CONCRETE(obj)) | |
(rr) | |
1851 REPR(obj)->attr_funcs.bind_attribute(tc, | |
(rr) | |
1854 GET_I16(cur_op, 10), GET_REG(cur_op, 8), MVM_reg_obj); | |
(rr) | |
1851 REPR(obj)->attr_funcs.bind_attribute(tc, | |
(rr) | |
1853 GET_REG(cur_op, 2).o, MVM_cu_string(tc, cu, GET_UI32(cur_op, 4)), | |
(rr) | |
1851 REPR(obj)->attr_funcs.bind_attribute(tc, | |
(rr) | |
1852 STABLE(obj), obj, OBJECT_BODY(obj), | |
(rr) | |
1851 REPR(obj)->attr_funcs.bind_attribute(tc, | |
(rr) | |
1855 MVM_SC_WB_OBJ(tc, obj); | |
(rr) | |
1856 cur_op += 12; | |
(rr) | |
1857 goto NEXT; | |
(rr) | |
2978 MVMuint16 dep = GET_UI16(cur_op, 2); | |
(rr) | |
2979 MVMuint16 idx = GET_UI16(cur_op, 4); | |
(rr) | |
2980 GET_REG(cur_op, 0).o = MVM_sc_get_sc_object(tc, cu, dep, idx); | |
(rr) | |
2981 cur_op += 6; | |
(rr) | |
2982 goto NEXT; | |
(rr) | |
1964 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) list | |
1959 GET_I16(cur_op, 10), &GET_REG(cur_op, 0), MVM_reg_str); | |
1960 cur_op += 12; | |
1961 goto NEXT; | |
1962 } | |
1963 OP(getattr_o): { | |
1964 MVMObject *obj = GET_REG(cur_op, 2).o; | |
1965 if (!IS_CONCRETE(obj)) | |
1966 MVM_exception_throw_adhoc(tc, "Cannot look up attributes in a %s type object. Did you forget a '.new'?", MVM_6model_get_debug_name(tc, obj)); | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
1968 STABLE(obj), obj, OBJECT_BODY(obj), | |
(rr) next | |
1965 if (!IS_CONCRETE(obj)) | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1970 GET_I16(cur_op, 10), &GET_REG(cur_op, 0), MVM_reg_obj); | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1970 GET_I16(cur_op, 10), &GET_REG(cur_op, 0), MVM_reg_obj); | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1969 GET_REG(cur_op, 4).o, MVM_cu_string(tc, cu, GET_UI32(cur_op, 6)), | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1968 STABLE(obj), obj, OBJECT_BODY(obj), | |
(rr) | |
1967 REPR(obj)->attr_funcs.get_attribute(tc, | |
(rr) | |
1971 if (MVM_spesh_log_is_logging(tc)) | |
(rr) | |
1973 cur_op += 12; | |
(rr) | |
1974 goto NEXT; | |
(rr) | |
2408 MVMObject *obj = GET_REG(cur_op, 2).o; | |
(rr) list | |
2403 MVM_SC_WB_OBJ(tc, obj); | |
2404 cur_op += 4; | |
2405 goto NEXT; | |
2406 } | |
2407 OP(elems): { | |
2408 MVMObject *obj = GET_REG(cur_op, 2).o; | |
2409 CHECK_CONC(obj); | |
2410 GET_REG(cur_op, 0).i64 = (MVMint64)REPR(obj)->elems(tc, STABLE(obj), obj, OBJECT_BODY(obj)); | |
2411 cur_op += 4; | |
2412 goto NEXT; | |
(rr) next | |
2409 CHECK_CONC(obj); | |
(rr) | |
2410 GET_REG(cur_op, 0).i64 = (MVMint64)REPR(obj)->elems(tc, STABLE(obj), obj, OBJECT_BODY(obj)); | |
(rr) | |
2411 cur_op += 4; | |
(rr) | |
2412 goto NEXT; | |
(rr) | |
2547 GET_REG(cur_op, 0).o = cu->body.hll_config->int_box_type; | |
(rr) | |
2548 cur_op += 2; | |
(rr) | |
2549 goto NEXT; | |
(rr) | |
2044 GET_REG(cur_op, 0).o = MVM_repr_box_int(tc, GET_REG(cur_op, 4).o, GET_REG(cur_op, 2).i64); | |
(rr) | |
2045 cur_op += 6; | |
(rr) | |
2046 goto NEXT; | |
(rr) | |
231 GET_REG(cur_op, 0) = GET_REG(cur_op, 2); | |
(rr) next | |
232 cur_op += 4; | |
(rr) | |
233 goto NEXT; | |
(rr) | |
291 cur_op = bytecode_start + GET_UI32(cur_op, 0); | |
(rr) | |
292 GC_SYNC_POINT(tc); | |
(rr) | |
293 goto NEXT; | |
(rr) | |
231 GET_REG(cur_op, 0) = GET_REG(cur_op, 2); | |
(rr) | |
232 cur_op += 4; | |
(rr) | |
233 goto NEXT; | |
(rr) | |
291 cur_op = bytecode_start + GET_UI32(cur_op, 0); | |
(rr) | |
292 GC_SYNC_POINT(tc); | |
(rr) | |
293 goto NEXT; | |
(rr) | |
5508 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
(rr) list | |
5503 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
5504 tc->cur_frame->static_info, bytecode_offset); | |
5505 goto NEXT; | |
5506 } | |
5507 OP(dispatch_o): { | |
5508 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
5509 cur_op, bytecode_start, tc->cur_frame); | |
5510 MVMDispInlineCacheEntry *ice = *ice_ptr; | |
5511 MVMString *id = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
5512 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
(rr) next | |
5510 MVMDispInlineCacheEntry *ice = *ice_ptr; | |
(rr) | |
5511 MVMString *id = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
(rr) | |
5512 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
(rr) print id[0] | |
$11 = {common = {header = {sc_forward_u = {forwarder = 0x0, sc = {sc_idx = 0, idx = 0}, st = 0x0}, owner = 1, | |
flags1 = 0 '\000', flags2 = 2 '\002', size = 48}, st = 0x355d2728000}, body = {storage = { | |
blob_32 = 0x355d8150240, blob_ascii = 0x355d8150240 "raku-rv-decont", | |
blob_8 = 0x355d8150240 "raku-rv-decont", strands = 0x355d8150240, in_situ_8 = "@\002\025\330U\003\000", | |
in_situ_32 = {-669711808, 853}, any = 3667232358976, any_ptr = 0x355d8150240}, storage_type = 2, | |
num_strands = 0, num_graphs = 14, cached_hash_code = 7923231971703762741}} | |
(rr) next | |
5513 MVMuint16 *args = (MVMuint16 *)(cur_op + 8); | |
(rr) | |
5514 MVMuint32 bytecode_offset = (cur_op - bytecode_start) - 2; | |
(rr) | |
5515 tc->cur_frame->return_value = &GET_REG(cur_op, 0); | |
(rr) | |
5516 tc->cur_frame->return_type = MVM_RETURN_OBJ; | |
(rr) | |
5517 cur_op += 8 + 2 * callsite->flag_count; | |
(rr) | |
5518 tc->cur_frame->return_address = cur_op; | |
(rr) | |
5519 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
(rr) | |
5520 tc->cur_frame->static_info, bytecode_offset); | |
(rr) | |
5519 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
(rr) | |
5521 goto NEXT; | |
(rr) | |
576 MVMObject *value = GET_REG(cur_op, 0).o; | |
(rr) list | |
571 MVM_RETURN_CALLER_FRAME); | |
572 if (MVM_frame_try_return(tc) == 0) | |
573 goto return_label; | |
574 goto NEXT; | |
575 OP(return_o): { | |
576 MVMObject *value = GET_REG(cur_op, 0).o; | |
577 MVM_args_set_result_obj(tc, value, MVM_RETURN_CALLER_FRAME); | |
578 if (MVM_frame_try_return(tc) == 0) | |
579 goto return_label; | |
580 goto NEXT; | |
(rr) call fputs(MVM_spesh_dump_register_layout(tc, tc->cur_frame), stderr) | |
Parameters: | |
source: f->caller->work: (MVMRegister *)0x355d2483118 | |
frame of source: (MVMFrame *)0x355d2483070 | |
callsite of params: Callsite 0x7f3c5d294f20 (1 args, 1 pos) | |
Positional flags: obj | |
Locals (registers) | |
0: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
1: ( obj) (nil) | |
2: ( obj) (nil) | |
3: ( obj) (nil) | |
4: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
5: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
6: ( int64) 0x0 | |
7: ( str) 0x355d4952c20 | |
8: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
9: ( obj) 0x355d2600830 (type of Null name VMNull) | |
10: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
11: ( int64) 0x2 | |
12: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
13: ( int64) 0x1 | |
14: ( int64) 0x0 | |
15: ( obj) (nil) | |
$12 = 1 | |
(rr) next | |
577 MVM_args_set_result_obj(tc, value, MVM_RETURN_CALLER_FRAME); | |
(rr) | |
578 if (MVM_frame_try_return(tc) == 0) | |
(rr) | |
580 goto NEXT; | |
(rr) | |
5508 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
(rr) list | |
5503 ice->run_dispatch(tc, ice_ptr, ice, id, callsite, args, tc->cur_frame->work, | |
5504 tc->cur_frame->static_info, bytecode_offset); | |
5505 goto NEXT; | |
5506 } | |
5507 OP(dispatch_o): { | |
5508 MVMDispInlineCacheEntry **ice_ptr = MVM_disp_inline_cache_get( | |
5509 cur_op, bytecode_start, tc->cur_frame); | |
5510 MVMDispInlineCacheEntry *ice = *ice_ptr; | |
5511 MVMString *id = MVM_cu_string(tc, cu, GET_UI32(cur_op, 2)); | |
5512 MVMCallsite *callsite = cu->body.callsites[GET_UI16(cur_op, 6)]; | |
(rr) call fputs(MVM_spesh_dump_register_layout(tc, tc->cur_frame), stderr) | |
Parameters: | |
source: f->caller->work: (MVMRegister *)0x355d2482ca0 | |
frame of source: (MVMFrame *)0x355d229b708 | |
callsite of params: Callsite 0x7f3c5d294f80 (2 args, 2 pos) | |
Positional flags: obj, obj | |
Locals (registers) | |
0: ( obj) (nil) | |
1: ( obj) 0x355d229ba90 (conc of P6opaque name Int) | |
2: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
3: ( obj) 0x355d229ba90 (conc of P6opaque name Int) | |
4: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
5: ( obj) 0x355d4771078 (conc of P6opaque name Int) | |
6: ( str) 0x355d3691a50 | |
7: ( obj) (nil) | |
8: ( int64) 0x0 | |
9: ( int64) 0x0 | |
10: ( obj) 0x355d2600830 (type of Null name VMNull) | |
11: ( obj) 0x355d229ba90 (conc of P6opaque name Int) | |
12: ( int64) 0x1 | |
13: ( obj) 0x355d229b808 (conc of P6opaque name Array) | |
$13 = 1 | |
(rr) call MVM_dump_bytecode(tc) | |
00000 checkarity 2, 2 | |
00001 param_rp_o loc_3_obj, 0 | |
00002 dispatch_o loc_7_obj, 'lang-hllize', Callsite_5, loc_3_obj | |
00003 set loc_3_obj, loc_7_obj | |
00004 decont loc_7_obj, loc_3_obj | |
00005 set loc_11_obj, loc_7_obj | |
00006 wval loc_7_obj, 2, 43 | |
00007 istype loc_12_int, loc_11_obj, loc_7_obj | |
00008 assertparamcheck loc_12_int | |
00009 isconcrete loc_12_int, loc_11_obj | |
00010 assertparamcheck loc_12_int | |
00011 set loc_1_obj, loc_11_obj | |
00012 param_rp_o loc_4_obj, 1 | |
00013 dispatch_o loc_7_obj, 'lang-hllize', Callsite_5, loc_4_obj | |
00014 set loc_4_obj, loc_7_obj | |
00015 decont loc_7_obj, loc_4_obj | |
00016 set loc_13_obj, loc_7_obj | |
00017 wval loc_7_obj, 0, 73 | |
00018 istype loc_12_int, loc_13_obj, loc_7_obj | |
00019 unless_i loc_12_int, label_1(00026) | |
00020 decont loc_7_obj, loc_13_obj | |
00021 const_s loc_6_str, 'cache' | |
00022 dispatch_o loc_7_obj, 'lang-meth-call', Callsite_7, loc_7_obj, loc_6_str, loc_13_obj | |
00023 set loc_4_obj, loc_7_obj | |
00024 decont loc_7_obj, loc_4_obj | |
00025 set loc_13_obj, loc_7_obj | |
label_1: | |
00026 wval loc_7_obj, 0, 48 | |
00027 istype loc_12_int, loc_13_obj, loc_7_obj | |
00028 assertparamcheck loc_12_int | |
00029 decont loc_7_obj, loc_4_obj | |
00030 set loc_2_obj, loc_7_obj | |
00031 paramnamesused | |
annotation: site#sources/1CA230DD87FD1ED08E9604B09C828C9D9EA80971 (Array::Sorted::Util):154 | |
00032 decont loc_5_obj, loc_2_obj | |
00033 const_s loc_6_str, 'elems' | |
00034 dispatch_o loc_5_obj, 'lang-meth-call', Callsite_7, loc_5_obj, loc_6_str, loc_2_obj | |
00035 -> dispatch_o loc_7_obj, 'lang-hllize', Callsite_5, loc_5_obj | |
00036 decont_i loc_8_int, loc_7_obj | |
00037 bindlex lex_Frame_22_lex3_int, loc_8_int | |
annotation: site#sources/1CA230DD87FD1ED08E9604B09C828C9D9EA80971 (Array::Sorted::Util):155 | |
00038 wval loc_7_obj, 2, 45 | |
00039 getattr_o loc_5_obj, loc_2_obj, loc_7_obj, '$!reified', 0 | |
00040 set loc_0_obj, loc_5_obj | |
label_2: | |
00041 elems loc_9_int, loc_0_obj | |
00042 unless_i loc_9_int, label_3(00052) | |
00043 osrpoint | |
00044 const_s loc_6_str, '&insert' | |
00045 getlexstatic_o loc_5_obj, loc_6_str | |
00046 decont loc_5_obj, loc_5_obj | |
00047 shift_o loc_7_obj, loc_0_obj | |
00048 decont loc_7_obj, loc_7_obj | |
00049 shift_o loc_10_obj, loc_0_obj | |
00050 dispatch_v 'lang-call', Callsite_12, loc_5_obj, loc_7_obj, loc_1_obj, loc_10_obj | |
00051 goto label_2(00041) | |
annotation: site#sources/1CA230DD87FD1ED08E9604B09C828C9D9EA80971 (Array::Sorted::Util):162 | |
label_3: | |
00052 dispatch_o loc_10_obj, 'raku-rv-decont', Callsite_5, loc_1_obj | |
00053 return_o loc_10_obj | |
(rr) print tc->cur_frame->params. | |
arg_info named_used named_used_size | |
(rr) print tc->cur_frame->params.arg_info. | |
callsite map source | |
(rr) print tc->cur_frame->params.arg_info.map[0]@2 | |
$14 = {0, 3} | |
(rr) print tc->cur_frame->params.arg_info.source[0] | |
$15 = {o = 0x0, s = 0x0, i8 = 0 '\000', u8 = 0 '\000', i16 = 0, u16 = 0, i32 = 0, u32 = 0, i64 = 0, u64 = 0, | |
n32 = 0, n64 = 0} | |
(rr) print tc->cur_frame->params.arg_info.source[3] | |
$16 = {o = 0x355d229b808, s = 0x355d229b808, i8 = 8 '\b', u8 = 8 '\b', i16 = -18424, u16 = 47112, i32 = -769017848, | |
u32 = 3525949448, i64 = 3667133052936, u64 = 3667133052936, n32 = -1.82234251e+11, n64 = 1.811804460184607e-311} | |
(rr) print &tc->cur_frame->params.arg_info.source[0] | |
$17 = (MVMRegister *) 0x355d2482ca0 | |
(rr) print &tc->cur_frame->params.arg_info.source[3] | |
$18 = (MVMRegister *) 0x355d2482cb8 | |
(rr) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
download the packed rr recording here: https://storage.aperture-labs.org/s/cM6pkKAGPezBs9g