1.language ECMAScript 2 3slotNum = 0x4 4.function any .#*#testCatchPhiDataflow(any a0, any a1, any a2) { 5 nop 6label_9: 7label_5: 8label_7: 9 ldlexvar 0x0, 0x0 10 sta v1 11 throw.undefinedifholewithname globalCond 12 lda v1 13 callruntime.isfalse 0x0 14 jnez label_1 15label_2: 16 lda.str 1 17 throw 18label_1: 19 lda.str 2 20 sta v1 21label_6: 22end_label_6: 23 jmp label_12 24label_11: 25 sta v0 26 jmp label_4 27label_12: 28 mov v0, v1 29label_4: 30 tryldglobalbyname 0x1, print 31 callarg1 0x2, v0 32 ldundefined 33 returnundefined 34label_10: 35} 36 37.catchall label_5, end_label_6, label_11 38 39slotNum = 0x3 40.function any .#*#testTryWithAccCatchPhi(any a0, any a1, any a2) { 41 nop 42label_7: 43label_2: 44label_4: 45 ldai 0x1 46 throw 47label_3: 48end_label_3: 49label_9: 50 sta v0 51label_6: 52 tryldglobalbyname 0x0, print 53 callarg1 0x1, v0 54 ldundefined 55 returnundefined 56label_8: 57} 58 59.catchall label_2, end_label_3, label_9 60 61slotNum = 0x8 62.function any .#*#testTryWithMoveConstants(any a0, any a1, any a2) { 63 nop 64label_12: 65 ldai 0x2 66 sta v0 67label_3: 68label_7: 69 lda v0 70 throw 71label_4: 72end_label_4: 73label_14: 74label_10: 75 ldai 0x3 76 sta v1 77 tryldglobalbyname 0x0, print 78 sta v2 79 lda v0 80 stricteq 0x1, v0 81 sta v0 82 lda v2 83 callarg1 0x2, v0 84label_5: 85label_1: 86 lda v1 87 throw 88label_6: 89end_label_6: 90label_15: 91label_11: 92 tryldglobalbyname 0x4, print 93 sta v0 94 lda v1 95 stricteq 0x5, v1 96 sta v1 97 lda v0 98 callarg1 0x6, v1 99 ldundefined 100 returnundefined 101label_13: 102} 103 104.catchall label_3, end_label_4, label_14 105 106.catchall label_5, end_label_6, label_15 107 108slotNum = 0xc 109.function any .#*#testTryWithRegAccAlloc(any a0, any a1, any a2) { 110 nop 111label_7: 112label_0: 113 lda.str s1 114 sta v0 115 lda.str s2 116 sta v1 117 add2 0x0, v0 118 sta v2 119 tryldglobalbyname 0x1, print 120 callarg1 0x2, v2 121label_2: 122label_4: 123 mov v2, v1 124 mov v3, v0 125 lda.str s1 126 sta v0 127 mov v3, v0 128 lda.str s2 129 sta v0 130 ldai 0x1 131 mov v2, v0 132 throw 133label_3: 134end_label_3: 135label_9: 136label_6: 137 lda v2 138 add2 0x4, v3 139 sta v0 140 tryldglobalbyname 0x5, print 141 callarg1 0x6, v0 142 lda v2 143 add2 0x8, v3 144 sta v0 145 tryldglobalbyname 0x9, print 146 callarg1 0xa, v0 147 ldundefined 148 returnundefined 149label_8: 150} 151 152.catchall label_2, end_label_3, label_9 153 154slotNum = 0xc 155.function any .func_main_0(any a0, any a1, any a2) { 156label_1: 157label_0: 158 newlexenv 0x1 159 definefunc 0x0, .#*#testCatchPhiDataflow, 0x0 160 sta v0 161 definefunc 0x1, .#*#testTryWithAccCatchPhi, 0x0 162 sta v1 163 definefunc 0x2, .#*#testTryWithMoveConstants, 0x0 164 sta v2 165 definefunc 0x3, .#*#testTryWithRegAccAlloc, 0x0 166 sta v3 167 ldtrue 168 stlexvar 0x0, 0x0 169 lda v0 170 callarg0 0x4 171 lda v1 172 callarg0 0x6 173 lda v2 174 callarg0 0x8 175 lda v3 176 callarg0 0xa 177 ldundefined 178 returnundefined 179label_2: 180} 181 182 183