Skip to content

Instantly share code, notes, and snippets.

@dimensi
Last active January 23, 2020 15:58
Show Gist options
  • Save dimensi/b5482a2b1cec3ec0a2e145a0d1446ec4 to your computer and use it in GitHub Desktop.
Save dimensi/b5482a2b1cec3ec0a2e145a0d1446ec4 to your computer and use it in GitHub Desktop.
[generated bytecode for function: flatComments]
Parameter count 2
Frame size 40
713 E> 0x15d2a92ef412 @ 0 : a1 StackCheck
0x15d2a92ef413 @ 1 : 25 02 Ldar a0
0x15d2a92ef415 @ 3 : 99 06 JumpIfNotUndefined [6] (0x15d2a92ef41b @ 9)
0x15d2a92ef417 @ 5 : 78 00 CreateEmptyArrayLiteral [0]
0x15d2a92ef419 @ 7 : 87 04 Jump [4] (0x15d2a92ef41d @ 11)
0x15d2a92ef41b @ 9 : 25 02 Ldar a0
0x15d2a92ef41d @ 11 : 26 fb Star r0
743 S> 0x15d2a92ef41f @ 13 : 28 fb 00 01 LdaNamedProperty r0, [0], [1]
0x15d2a92ef423 @ 17 : 26 fa Star r1
0x15d2a92ef425 @ 19 : 7d 01 03 02 CreateClosure [1], [3], #2
0x15d2a92ef429 @ 23 : 26 f8 Star r3
0x15d2a92ef42b @ 25 : 78 04 CreateEmptyArrayLiteral [4]
0x15d2a92ef42d @ 27 : 26 f7 Star r4
743 E> 0x15d2a92ef42f @ 29 : 58 fa fb f8 f7 05 CallProperty2 r1, r0, r3, r4, [5]
829 S> 0x15d2a92ef435 @ 35 : a5 Return
Constant pool (size = 2)
Handler Table (size = 0)
const flatComments = (comments = []) =>
comments.reduce((acc, comment) => acc.concat(comment.text, flatComments(comment.comments)), [])
[generated bytecode for function: forFlatComments]
Parameter count 3
Frame size 152
980 E> 0x3d1cad96fd12 @ 0 : a1 StackCheck
0x3d1cad96fd13 @ 1 : 27 03 f1 Mov a0, r10
0x3d1cad96fd16 @ 4 : 25 02 Ldar a1
0x3d1cad96fd18 @ 6 : 99 06 JumpIfNotUndefined [6] (0x3d1cad96fd1e @ 12)
0x3d1cad96fd1a @ 8 : 78 00 CreateEmptyArrayLiteral [0]
0x3d1cad96fd1c @ 10 : 87 04 Jump [4] (0x3d1cad96fd20 @ 14)
0x3d1cad96fd1e @ 12 : 25 02 Ldar a1
0x3d1cad96fd20 @ 14 : 26 f0 Star r11
0x3d1cad96fd22 @ 16 : 0b LdaZero
0x3d1cad96fd23 @ 17 : 26 f5 Star r6
0x3d1cad96fd25 @ 19 : 27 ff ed Mov <context>, r14
0x3d1cad96fd28 @ 22 : 27 ff ec Mov <context>, r15
1032 S> 0x3d1cad96fd2b @ 25 : 28 f1 00 01 LdaNamedProperty r10, [0], [1]
0x3d1cad96fd2f @ 29 : 26 ea Star r17
0x3d1cad96fd31 @ 31 : 56 ea f1 03 CallProperty0 r17, r10, [3]
0x3d1cad96fd35 @ 35 : 27 f1 eb Mov r10, r16
0x3d1cad96fd38 @ 38 : 9a 07 JumpIfJSReceiver [7] (0x3d1cad96fd3f @ 45)
0x3d1cad96fd3a @ 40 : 5e b3 00 fb 00 CallRuntime [ThrowSymbolIteratorInvalid], r0-r0
0x3d1cad96fd3f @ 45 : 26 f8 Star r3
1032 E> 0x3d1cad96fd41 @ 47 : 28 f8 01 05 LdaNamedProperty r3, [1], [5]
0x3d1cad96fd45 @ 51 : 26 f7 Star r4
1021 S> 0x3d1cad96fd47 @ 53 : 56 f7 f8 07 CallProperty0 r4, r3, [7]
0x3d1cad96fd4b @ 57 : 26 f6 Star r5
1021 E> 0x3d1cad96fd4d @ 59 : 61 0f f6 01 InvokeIntrinsic [_IsJSReceiver], r5-r5
0x3d1cad96fd51 @ 63 : 4e ToBooleanLogicalNot
0x3d1cad96fd52 @ 64 : 95 07 JumpIfFalse [7] (0x3d1cad96fd59 @ 71)
0x3d1cad96fd54 @ 66 : 5e ad 00 f6 01 CallRuntime [ThrowIteratorResultNotAnObject], r5-r5
0x3d1cad96fd59 @ 71 : 28 f6 02 09 LdaNamedProperty r5, [2], [9]
0x3d1cad96fd5d @ 75 : 92 41 JumpIfToBooleanTrue [65] (0x3d1cad96fd9e @ 140)
0x3d1cad96fd5f @ 77 : 28 f6 03 0b LdaNamedProperty r5, [3], [11]
0x3d1cad96fd63 @ 81 : 26 f4 Star r7
0x3d1cad96fd65 @ 83 : 0c 02 LdaSmi [2]
0x3d1cad96fd67 @ 85 : 26 f5 Star r6
0x3d1cad96fd69 @ 87 : 27 f4 f9 Mov r7, r2
1010 E> 0x3d1cad96fd6c @ 90 : a1 StackCheck
0x3d1cad96fd6d @ 91 : 27 f9 fb Mov r2, r0
1054 S> 0x3d1cad96fd70 @ 94 : 28 f0 04 0d LdaNamedProperty r11, [4], [13]
0x3d1cad96fd74 @ 98 : 26 eb Star r16
1067 E> 0x3d1cad96fd76 @ 100 : 28 f9 05 0f LdaNamedProperty r2, [5], [15]
0x3d1cad96fd7a @ 104 : 26 e9 Star r18
1054 E> 0x3d1cad96fd7c @ 106 : 57 eb f0 e9 11 CallProperty1 r16, r11, r18, [17]
1089 S> 0x3d1cad96fd81 @ 111 : 28 f9 06 13 LdaNamedProperty r2, [6], [19]
0x3d1cad96fd85 @ 115 : 93 13 JumpIfToBooleanFalse [19] (0x3d1cad96fd98 @ 134)
1099 S> 0x3d1cad96fd87 @ 117 : 1b 06 LdaImmutableCurrentContextSlot [6]
0x3d1cad96fd89 @ 119 : a6 07 ThrowReferenceErrorIfHole [7]
0x3d1cad96fd8b @ 121 : 26 eb Star r16
1123 E> 0x3d1cad96fd8d @ 123 : 28 fb 06 13 LdaNamedProperty r0, [6], [19]
0x3d1cad96fd91 @ 127 : 26 ea Star r17
1099 E> 0x3d1cad96fd93 @ 129 : 5c eb ea f0 15 CallUndefinedReceiver2 r16, r17, r11, [21]
0x3d1cad96fd98 @ 134 : 0b LdaZero
0x3d1cad96fd99 @ 135 : 26 f5 Star r6
0x3d1cad96fd9b @ 137 : 86 54 00 JumpLoop [84], [0] (0x3d1cad96fd47 @ 53)
0x3d1cad96fd9e @ 140 : 87 21 Jump [33] (0x3d1cad96fdbf @ 173)
0x3d1cad96fda0 @ 142 : 26 eb Star r16
0x3d1cad96fda2 @ 144 : 7f eb 08 CreateCatchContext r16, [8]
0x3d1cad96fda5 @ 147 : 16 eb PushContext r16
0x3d1cad96fda7 @ 149 : 26 ec Star r15
0x3d1cad96fda9 @ 151 : 0c 02 LdaSmi [2]
0x3d1cad96fdab @ 153 : 65 f5 17 TestEqualStrict r6, [23]
0x3d1cad96fdae @ 156 : 95 06 JumpIfFalse [6] (0x3d1cad96fdb4 @ 162)
0x3d1cad96fdb0 @ 158 : 0c 01 LdaSmi [1]
0x3d1cad96fdb2 @ 160 : 26 f5 Star r6
0x3d1cad96fdb4 @ 162 : 1b 04 LdaImmutableCurrentContextSlot [4]
0x3d1cad96fdb6 @ 164 : 26 ea Star r17
0x3d1cad96fdb8 @ 166 : 5e a2 00 ea 01 CallRuntime [ReThrow], r17-r17
0x3d1cad96fdbd @ 171 : 17 eb PopContext r16
0x3d1cad96fdbf @ 173 : 0c ff LdaSmi [-1]
0x3d1cad96fdc1 @ 175 : 26 ee Star r13
0x3d1cad96fdc3 @ 177 : 26 ef Star r12
0x3d1cad96fdc5 @ 179 : 87 07 Jump [7] (0x3d1cad96fdcc @ 186)
0x3d1cad96fdc7 @ 181 : 26 ee Star r13
0x3d1cad96fdc9 @ 183 : 0b LdaZero
0x3d1cad96fdca @ 184 : 26 ef Star r12
0x3d1cad96fdcc @ 186 : 0f LdaTheHole
0x3d1cad96fdcd @ 187 : a2 SetPendingMessage
0x3d1cad96fdce @ 188 : 26 ed Star r14
0x3d1cad96fdd0 @ 190 : 0b LdaZero
0x3d1cad96fdd1 @ 191 : 65 f5 18 TestEqualStrict r6, [24]
0x3d1cad96fdd4 @ 194 : 94 5a JumpIfTrue [90] (0x3d1cad96fe2e @ 284)
0x3d1cad96fdd6 @ 196 : 28 f8 09 19 LdaNamedProperty r3, [9], [25]
0x3d1cad96fdda @ 200 : 26 f3 Star r8
0x3d1cad96fddc @ 202 : 6d TestUndetectable
0x3d1cad96fddd @ 203 : 95 04 JumpIfFalse [4] (0x3d1cad96fde1 @ 207)
0x3d1cad96fddf @ 205 : 87 4f Jump [79] (0x3d1cad96fe2e @ 284)
0x3d1cad96fde1 @ 207 : 0c 01 LdaSmi [1]
0x3d1cad96fde3 @ 209 : 65 f5 1b TestEqualStrict r6, [27]
0x3d1cad96fde6 @ 212 : 95 2f JumpIfFalse [47] (0x3d1cad96fe15 @ 259)
0x3d1cad96fde8 @ 214 : 25 f3 Ldar r8
0x3d1cad96fdea @ 216 : 70 06 TestTypeOf #6
0x3d1cad96fdec @ 218 : 95 04 JumpIfFalse [4] (0x3d1cad96fdf0 @ 222)
0x3d1cad96fdee @ 220 : 87 12 Jump [18] (0x3d1cad96fe00 @ 238)
0x3d1cad96fdf0 @ 222 : 00 0c 99 00 LdaSmi.Wide [153]
0x3d1cad96fdf4 @ 226 : 26 ec Star r15
0x3d1cad96fdf6 @ 228 : 12 0a LdaConstant [10]
0x3d1cad96fdf8 @ 230 : 26 eb Star r16
0x3d1cad96fdfa @ 232 : 5e 9e 00 ec 02 CallRuntime [NewTypeError], r15-r16
0x3d1cad96fdff @ 237 : a3 Throw
0x3d1cad96fe00 @ 238 : 27 ff ec Mov <context>, r15
0x3d1cad96fe03 @ 241 : 27 f3 eb Mov r8, r16
0x3d1cad96fe06 @ 244 : 27 f8 ea Mov r3, r17
0x3d1cad96fe09 @ 247 : 61 08 eb 02 InvokeIntrinsic [_Call], r16-r17
0x3d1cad96fe0d @ 251 : 87 06 Jump [6] (0x3d1cad96fe13 @ 257)
0x3d1cad96fe0f @ 253 : 0f LdaTheHole
0x3d1cad96fe10 @ 254 : a2 SetPendingMessage
0x3d1cad96fe11 @ 255 : 25 ec Ldar r15
0x3d1cad96fe13 @ 257 : 87 1b Jump [27] (0x3d1cad96fe2e @ 284)
0x3d1cad96fe15 @ 259 : 27 f3 ec Mov r8, r15
0x3d1cad96fe18 @ 262 : 27 f8 eb Mov r3, r16
0x3d1cad96fe1b @ 265 : 61 08 ec 02 InvokeIntrinsic [_Call], r15-r16
0x3d1cad96fe1f @ 269 : 26 f2 Star r9
0x3d1cad96fe21 @ 271 : 61 0f f2 01 InvokeIntrinsic [_IsJSReceiver], r9-r9
0x3d1cad96fe25 @ 275 : 93 04 JumpIfToBooleanFalse [4] (0x3d1cad96fe29 @ 279)
0x3d1cad96fe27 @ 277 : 87 07 Jump [7] (0x3d1cad96fe2e @ 284)
0x3d1cad96fe29 @ 279 : 5e ad 00 f2 01 CallRuntime [ThrowIteratorResultNotAnObject], r9-r9
0x3d1cad96fe2e @ 284 : 25 ed Ldar r14
0x3d1cad96fe30 @ 286 : a2 SetPendingMessage
0x3d1cad96fe31 @ 287 : 0b LdaZero
0x3d1cad96fe32 @ 288 : 6a ef TestReferenceEqual r12
0x3d1cad96fe34 @ 290 : 95 05 JumpIfFalse [5] (0x3d1cad96fe39 @ 295)
0x3d1cad96fe36 @ 292 : 25 ee Ldar r13
0x3d1cad96fe38 @ 294 : a4 ReThrow
1146 S> 0x3d1cad96fe39 @ 295 : 25 f0 Ldar r11
1158 S> 0x3d1cad96fe3b @ 297 : a5 Return
Constant pool (size = 11)
Handler Table (size = 48)
from to hdlr (prediction, data)
( 22, 173) -> 181 (prediction=0, data=14)
( 25, 140) -> 142 (prediction=0, data=15)
( 241, 251) -> 253 (prediction=1, data=15)
const forFlatComments = (comments, state = []) => {
for (const comment of comments) {
state.push(comment.text)
if (comment.comments) forFlatComments(comment.comments, state)
}
return state
}
[generated bytecode for function: forOldFlatComments]
Parameter count 3
Frame size 48
1188 E> 0x3486b84701ea @ 0 : a1 StackCheck
0x3486b84701eb @ 1 : 25 03 Ldar a0
0x3486b84701ed @ 3 : 99 06 JumpIfNotUndefined [6] (0x3486b84701f3 @ 9)
0x3486b84701ef @ 5 : 78 00 CreateEmptyArrayLiteral [0]
0x3486b84701f1 @ 7 : 87 04 Jump [4] (0x3486b84701f5 @ 11)
0x3486b84701f3 @ 9 : 25 03 Ldar a0
0x3486b84701f5 @ 11 : 26 fa Star r1
0x3486b84701f7 @ 13 : 25 02 Ldar a1
0x3486b84701f9 @ 15 : 99 06 JumpIfNotUndefined [6] (0x3486b84701ff @ 21)
0x3486b84701fb @ 17 : 78 01 CreateEmptyArrayLiteral [1]
0x3486b84701fd @ 19 : 87 04 Jump [4] (0x3486b8470201 @ 23)
0x3486b84701ff @ 21 : 25 02 Ldar a1
0x3486b8470201 @ 23 : 26 f9 Star r2
1236 S> 0x3486b8470203 @ 25 : 0b LdaZero
0x3486b8470204 @ 26 : 26 fb Star r0
1252 S> 0x3486b8470206 @ 28 : 28 fa 00 02 LdaNamedProperty r1, [0], [2]
1241 E> 0x3486b847020a @ 32 : 66 fb 04 TestLessThan r0, [4]
0x3486b847020d @ 35 : 95 3c JumpIfFalse [60] (0x3486b8470249 @ 95)
1223 E> 0x3486b847020f @ 37 : a1 StackCheck
1277 S> 0x3486b8470210 @ 38 : 28 f9 01 05 LdaNamedProperty r2, [1], [5]
0x3486b8470214 @ 42 : 26 f8 Star r3
0x3486b8470216 @ 44 : 25 fb Ldar r0
1290 E> 0x3486b8470218 @ 46 : 29 fa 07 LdaKeyedProperty r1, [7]
0x3486b847021b @ 49 : 26 f6 Star r5
1294 E> 0x3486b847021d @ 51 : 28 f6 02 09 LdaNamedProperty r5, [2], [9]
0x3486b8470221 @ 55 : 26 f6 Star r5
1277 E> 0x3486b8470223 @ 57 : 57 f8 f9 f6 0b CallProperty1 r3, r2, r5, [11]
1304 S> 0x3486b8470228 @ 62 : 1b 06 LdaImmutableCurrentContextSlot [6]
0x3486b847022a @ 64 : a6 03 ThrowReferenceErrorIfHole [3]
0x3486b847022c @ 66 : 26 f8 Star r3
0x3486b847022e @ 68 : 25 fb Ldar r0
1328 E> 0x3486b8470230 @ 70 : 29 fa 0d LdaKeyedProperty r1, [13]
0x3486b8470233 @ 73 : 26 f7 Star r4
1332 E> 0x3486b8470235 @ 75 : 28 f7 04 0f LdaNamedProperty r4, [4], [15]
0x3486b8470239 @ 79 : 26 f7 Star r4
1304 E> 0x3486b847023b @ 81 : 5c f8 f7 f9 11 CallUndefinedReceiver2 r3, r4, r2, [17]
1261 S> 0x3486b8470240 @ 86 : 25 fb Ldar r0
0x3486b8470242 @ 88 : 4a 13 Inc [19]
0x3486b8470244 @ 90 : 26 fb Star r0
0x3486b8470246 @ 92 : 86 40 00 JumpLoop [64], [0] (0x3486b8470206 @ 28)
1355 S> 0x3486b8470249 @ 95 : 25 f9 Ldar r2
1367 S> 0x3486b847024b @ 97 : a5 Return
Constant pool (size = 5)
Handler Table (size = 0)
const forOldFlatComments = (comments = [], state = []) => {
for (let i = 0; i < comments.length; i++) {
state.push(comments[i].text)
forFlatComments(comments[i].comments, state)
}
return state
}
[generated bytecode for function: whileFlatComments]
Parameter count 3
Frame size 56
1397 E> 0x31d006870572 @ 0 : a1 StackCheck
0x31d006870573 @ 1 : 27 03 f9 Mov a0, r2
0x31d006870576 @ 4 : 25 02 Ldar a1
0x31d006870578 @ 6 : 99 06 JumpIfNotUndefined [6] (0x31d00687057e @ 12)
0x31d00687057a @ 8 : 78 00 CreateEmptyArrayLiteral [0]
0x31d00687057c @ 10 : 87 04 Jump [4] (0x31d006870580 @ 14)
0x31d00687057e @ 12 : 25 02 Ldar a1
0x31d006870580 @ 14 : 26 f8 Star r3
1427 S> 0x31d006870582 @ 16 : 25 f9 Ldar r2
0x31d006870584 @ 18 : 99 05 JumpIfNotUndefined [5] (0x31d006870589 @ 23)
1455 S> 0x31d006870586 @ 20 : 25 f8 Ldar r3
1467 S> 0x31d006870588 @ 22 : a5 Return
1474 S> 0x31d006870589 @ 23 : 0d LdaUndefined
0x31d00687058a @ 24 : 26 fb Star r0
1487 S> 0x31d00687058c @ 26 : 0b LdaZero
0x31d00687058d @ 27 : 26 fa Star r1
1507 S> 0x31d00687058f @ 29 : 25 fa Ldar r1
0x31d006870591 @ 31 : 73 01 ToNumeric [1]
0x31d006870593 @ 33 : 26 f6 Star r5
0x31d006870595 @ 35 : 4a 01 Inc [1]
0x31d006870597 @ 37 : 26 fa Star r1
0x31d006870599 @ 39 : 25 f6 Ldar r5
1517 E> 0x31d00687059b @ 41 : 29 f9 02 LdaKeyedProperty r2, [2]
0x31d00687059e @ 44 : 26 fb Star r0
1507 E> 0x31d0068705a0 @ 46 : 93 28 JumpIfToBooleanFalse [40] (0x31d0068705c8 @ 86)
1491 E> 0x31d0068705a2 @ 48 : a1 StackCheck
1537 S> 0x31d0068705a3 @ 49 : 28 f8 00 04 LdaNamedProperty r3, [0], [4]
0x31d0068705a7 @ 53 : 26 f7 Star r4
1550 E> 0x31d0068705a9 @ 55 : 28 fb 01 06 LdaNamedProperty r0, [1], [6]
0x31d0068705ad @ 59 : 26 f5 Star r6
1537 E> 0x31d0068705af @ 61 : 57 f7 f8 f5 08 CallProperty1 r4, r3, r6, [8]
1560 S> 0x31d0068705b4 @ 66 : 1b 07 LdaImmutableCurrentContextSlot [7]
0x31d0068705b6 @ 68 : a6 02 ThrowReferenceErrorIfHole [2]
0x31d0068705b8 @ 70 : 26 f7 Star r4
1586 E> 0x31d0068705ba @ 72 : 28 fb 03 0a LdaNamedProperty r0, [3], [10]
0x31d0068705be @ 76 : 26 f6 Star r5
1560 E> 0x31d0068705c0 @ 78 : 5c f7 f6 f8 0c CallUndefinedReceiver2 r4, r5, r3, [12]
0x31d0068705c5 @ 83 : 86 36 00 JumpLoop [54], [0] (0x31d00687058f @ 29)
1609 S> 0x31d0068705c8 @ 86 : 25 f8 Ldar r3
1621 S> 0x31d0068705ca @ 88 : a5 Return
Constant pool (size = 4)
Handler Table (size = 0)
const whileFlatComments = (comments, state = []) => {
if (comments === undefined) return state
let comment, i = 0
while ((comment = comments[i++])) {
state.push(comment.text)
whileFlatComments(comment.comments, state)
}
return state
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment