Skip to content

Instantly share code, notes, and snippets.

@timo
Created January 8, 2021 00:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timo/8cae0f69fa05fc9ed6eb7fefb085f1a0 to your computer and use it in GitHub Desktop.
Save timo/8cae0f69fa05fc9ed6eb7fefb085f1a0 to your computer and use it in GitHub Desktop.
compilation of the regex `/ hello \d+ world /`
Frame_2 :
cuuid : 1
name :
outer : Frame_1
Locals :
0: loc_0_obj
1: loc_1_obj
2: loc_2_obj
3: loc_3_obj
4: loc_4_obj
5: loc_5_obj
6: loc_6_str
7: loc_7_int
8: loc_8_int
9: loc_9_int
10: loc_10_int
11: loc_11_obj
12: loc_12_obj
13: loc_13_obj
14: loc_14_int
15: loc_15_int
16: loc_16_int
17: loc_17_int
18: loc_18_int
19: loc_19_int
20: loc_20_obj
21: loc_21_obj
22: loc_22_obj
23: loc_23_obj
24: loc_24_int
25: loc_25_int
26: loc_26_obj
27: loc_27_str
28: loc_28_int
29: loc_29_int
30: loc_30_int
31: loc_31_obj
32: loc_32_obj
33: loc_33_obj
Lexicals :
0: lex_Frame_2_self_obj
1: lex_Frame_2_%__obj
2: lex_Frame_2_$/_obj
3: lex_Frame_2_$¢_obj
4: lex_Frame_2_$?REGEX_obj
5: lex_Frame_2_$*DISPATCHER_obj
Instructions :
00000 checkarity 1, 1
00001 param_rp_o loc_1_obj, 0
00002 hllize loc_31_obj, loc_1_obj
00003 set loc_1_obj, loc_31_obj
00004 decont loc_31_obj, loc_1_obj
00005 set loc_32_obj, loc_31_obj
00006 bindlex lex_Frame_2_self_obj, loc_32_obj
00007 param_sn loc_2_obj
00008 wval loc_31_obj, 1, 47
00009 create loc_31_obj, loc_31_obj
00010 wval loc_33_obj, 1, 46
00011 bindattr_o loc_31_obj, loc_33_obj, '$!storage', loc_2_obj, -1
00012 set loc_2_obj, loc_31_obj
00013 decont loc_31_obj, loc_2_obj
00014 bindlex lex_Frame_2_%__obj, loc_31_obj
00015 curcode loc_0_obj
00016 getcodeobj loc_0_obj, loc_0_obj
00017 bindlex lex_Frame_2_$?REGEX_obj, loc_0_obj
00018 takedispatcher loc_3_obj
00019 getlex loc_5_obj, lex_Frame_2_self_obj
00020 set loc_4_obj, loc_5_obj
00021 const_i64_16 loc_14_int, -1
00022 const_i64_16 loc_15_int, 0
00023 const_i64_16 loc_16_int, 1
00024 const_i64_16 loc_17_int, 2
00025 const_i64_16 loc_18_int, 3
00026 const_i64_16 loc_19_int, 4
00027 findmeth loc_21_obj, loc_4_obj, '!cursor_start'
00028 prepargs Callsite_0
00029 arg_o 0, loc_4_obj
00030 invoke_o loc_5_obj, loc_21_obj
00031 findmeth loc_23_obj, loc_4_obj, '!shared'
00032 prepargs Callsite_0
00033 arg_o 0, loc_4_obj
00034 invoke_o loc_23_obj, loc_23_obj
00035 getwhat loc_26_obj, loc_23_obj
00036 getattr_o loc_11_obj, loc_23_obj, loc_26_obj, '$!CUR_CLASS', -1
00037 getattr_s loc_6_str, loc_23_obj, loc_26_obj, '$!target', 2
00038 getattr_i loc_7_int, loc_5_obj, loc_11_obj, '$!from', -1
00039 getattr_o loc_12_obj, loc_5_obj, loc_11_obj, '$!bstack', -1
00040 getattr_o loc_22_obj, loc_4_obj, loc_11_obj, '$!restart', -1
00041 isconcrete loc_24_int, loc_22_obj
00042 bindlex lex_Frame_2_$¢_obj, loc_5_obj
00043 chars loc_9_int, loc_6_str
00044 eq_i loc_25_int, loc_16_int, loc_24_int
00045 if_i loc_25_int, label_10(00107)
00046 gt_i loc_25_int, loc_7_int, loc_9_int
00047 if_i loc_25_int, label_10(00107)
00048 getattr_i loc_24_int, loc_4_obj, loc_11_obj, '$!from', -1
00049 ne_i loc_24_int, loc_24_int, loc_14_int
00050 if_i loc_24_int, label_5(00070)
00051 goto label_2(00058)
label_1:
00052 inc_i loc_7_int
00053 const_s loc_27_str, 'hello'
00054 index_s loc_7_int, loc_6_str, loc_27_str, loc_7_int
00055 eq_i loc_24_int, loc_7_int, loc_14_int
00056 if_i loc_24_int, label_10(00107)
00057 bindattr_i loc_5_obj, loc_11_obj, '$!from', loc_7_int, -1
label_2:
00058 const_i64_16 loc_25_int, 1
00059 elems loc_28_int, loc_12_obj
00060 gt_i loc_29_int, loc_28_int, loc_15_int
00061 if_i loc_29_int, label_3(00064)
00062 set loc_29_int, loc_15_int
00063 goto label_4(00066)
label_3:
00064 dec_i loc_28_int
00065 atpos_i loc_29_int, loc_12_obj, loc_28_int
label_4:
00066 push_i loc_12_obj, loc_25_int
00067 push_i loc_12_obj, loc_7_int
00068 push_i loc_12_obj, loc_15_int
00069 push_i loc_12_obj, loc_29_int
label_5:
00070 const_s loc_27_str, 'hello'
00071 eqat_s loc_29_int, loc_6_str, loc_27_str, loc_7_int
00072 unless_i loc_29_int, label_10(00107)
00073 const_i64_16 loc_29_int, 5
00074 add_i loc_7_int, loc_7_int, loc_29_int
label_6:
00075 ge_i loc_29_int, loc_7_int, loc_9_int
00076 if_i loc_29_int, label_10(00107)
00077 const_i64_16 loc_29_int, 8
00078 iscclass loc_29_int, loc_29_int, loc_6_str, loc_7_int
00079 unless_i loc_29_int, label_10(00107)
00080 inc_i loc_7_int
00081 const_i64_16 loc_29_int, 3
00082 elems loc_28_int, loc_12_obj
00083 gt_i loc_25_int, loc_28_int, loc_15_int
00084 if_i loc_25_int, label_7(00087)
00085 set loc_25_int, loc_15_int
00086 goto label_8(00089)
label_7:
00087 dec_i loc_28_int
00088 atpos_i loc_25_int, loc_12_obj, loc_28_int
label_8:
00089 push_i loc_12_obj, loc_29_int
00090 push_i loc_12_obj, loc_7_int
00091 push_i loc_12_obj, loc_10_int
00092 push_i loc_12_obj, loc_25_int
00093 goto label_6(00075)
label_9:
00094 const_s loc_27_str, 'world'
00095 eqat_s loc_25_int, loc_6_str, loc_27_str, loc_7_int
00096 unless_i loc_25_int, label_10(00107)
00097 const_i64_16 loc_25_int, 5
00098 add_i loc_7_int, loc_7_int, loc_25_int
00099 findmeth loc_31_obj, loc_5_obj, '!cursor_pass'
00100 prepargs Callsite_1
00101 arg_o 0, loc_5_obj
00102 arg_i 1, loc_7_int
00103 argconst_s 2, 'backtrack'
00104 arg_i 3, loc_16_int
00105 invoke_o loc_31_obj, loc_31_obj
00106 return_o loc_5_obj
label_10:
00107 isnull loc_25_int, loc_12_obj
00108 if_i loc_25_int, label_11(00127)
00109 elems loc_25_int, loc_12_obj
00110 gt_i loc_25_int, loc_25_int, loc_15_int
00111 unless_i loc_25_int, label_11(00127)
00112 pop_i loc_28_int, loc_12_obj
00113 pop_i loc_10_int, loc_12_obj
00114 pop_i loc_7_int, loc_12_obj
00115 pop_i loc_28_int, loc_12_obj
00116 lt_i loc_25_int, loc_7_int, loc_14_int
00117 if_i loc_25_int, label_11(00127)
00118 lt_i loc_25_int, loc_7_int, loc_15_int
00119 if_i loc_25_int, label_10(00107)
00120 eq_i loc_25_int, loc_28_int, loc_15_int
00121 if_i loc_25_int, label_10(00107)
00122 jumplist 4, loc_28_int
00123 goto label_11(00127)
00124 goto label_1(00052)
00125 goto label_6(00075)
00126 goto label_9(00094)
label_11:
00127 findmeth loc_21_obj, loc_5_obj, '!cursor_fail'
00128 prepargs Callsite_0
00129 arg_o 0, loc_5_obj
00130 invoke_v loc_21_obj
00131 return_o loc_5_obj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment