Skip to content

Commit cc07b40

Browse files
committed
perf(benchmark): print verbose deopt information
Yields this: [bailout (kind: deopt-soft, reason: Insufficient type feedback for compare operation): begin. deoptimizing 0x03ec77643e39 <JSFunction lex (sfi = 0x3ec38d4fb29)>, opt id 0, bytecode offset 2056, deopt exit 150, FP to SP delta 96, caller SP 0x7ff7b4735e90, pc 0x00011061b4a4] ;;; deoptimize at </Users/wincent/code/masochist/next/packages/lexer/lib/lex.js:208:24> reading input frame lex => bytecode_offset=2056, args=2, height=13, retval=0(#0); inputs: 0: 0x03ec77643e39 ; [fp - 16] 0x03ec77643e39 <JSFunction lex (sfi = 0x3ec38d4fb29)> 1: 0x03ec7a081599 ; [fp + 16] 0x03ec7a081599 <undefined> 2: 0x03ec77642a01 ; r8 0x03ec77642a01 <String[5160]: "...<truncated>>"> 3: 0x03ec776429d9 ; [fp - 40] 0x03ec776429d9 <FunctionContext[3]> 4: 0x03ec31045d49 ; [fp - 96] 0x03ec31045d49 <JSGenerator> 5: 0xffffffff00000000 ; [fp - 32] -1 6: 0x000000000000 ; rax 0 7: 0x03ec7a081de9 ; (literal 4) 0x03ec7a081de9 <Odd Oddball: optimized_out> 8: 0x133300000000 ; [fp - 56] 4915 9: 0x133400000000 ; rbx 4916 10: 48 ; r11 (int32) 11: 0x03ec7a081de9 ; (literal 4) 0x03ec7a081de9 <Odd Oddball: optimized_out> 12: 0x03ec7a081de9 ; (literal 4) 0x03ec7a081de9 <Odd Oddball: optimized_out> 13: 0x03ec7a081de9 ; (literal 4) 0x03ec7a081de9 <Odd Oddball: optimized_out> 14: 0x03ec7a081de9 ; (literal 4) 0x03ec7a081de9 <Odd Oddball: optimized_out> 15: 0x03ec7a081de9 ; (literal 4) 0x03ec7a081de9 <Odd Oddball: optimized_out> 16: 0x03ec7a081de9 ; (literal 4) 0x03ec7a081de9 <Odd Oddball: optimized_out> 17: 0x003000000000 ; (literal 10) 48 translating baseline frame lex => bytecode_offset=2056, variable_frame_size=112, frame_size=184 0x7ff7b4735e88: [top + 176] <- 0x03ec77642a01 <String[5160]: "...<truncated>>"> ; stack parameter (input #2) 0x7ff7b4735e80: [top + 168] <- 0x03ec7a081599 <undefined> ; stack parameter (input #1) ------------------------- 0x7ff7b4735e78: [top + 160] <- 0x00010c2b1db0 ; bottommost caller's pc 0x7ff7b4735e70: [top + 152] <- 0x7ff7b4735ec0 ; caller's fp 0x7ff7b4735e68: [top + 144] <- 0x03ec776429d9 <FunctionContext[3]> ; context (input #3) 0x7ff7b4735e60: [top + 136] <- 0x03ec77643e39 <JSFunction lex (sfi = 0x3ec38d4fb29)> ; function (input #0) 0x7ff7b4735e58: [top + 128] <- 0x000000000001 ; actual argument count 0x7ff7b4735e50: [top + 120] <- 0x03ec38d7a661 <BytecodeArray[5903]> ; bytecode array 0x7ff7b4735e48: [top + 112] <- 0x083d00000000 <Smi 2109> ; bytecode offset ------------------------- 0x7ff7b4735e40: [top + 104] <- 0x03ec31045d49 <JSGenerator> ; stack parameter (input #4) 0x7ff7b4735e38: [top + 96] <- 0xffffffff00000000 <Smi -1> ; stack parameter (input #5) 0x7ff7b4735e30: [top + 88] <- 0x000000000000 <Smi 0> ; stack parameter (input #6) 0x7ff7b4735e28: [top + 80] <- 0x03ec7a081de9 <Odd Oddball: optimized_out> ; stack parameter (input #7) 0x7ff7b4735e20: [top + 72] <- 0x133300000000 <Smi 4915> ; stack parameter (input #8) 0x7ff7b4735e18: [top + 64] <- 0x133400000000 <Smi 4916> ; stack parameter (input #9) 0x7ff7b4735e10: [top + 56] <- 0x003000000000 <Smi 48> ; stack parameter (input #10) 0x7ff7b4735e08: [top + 48] <- 0x03ec7a081de9 <Odd Oddball: optimized_out> ; stack parameter (input #11) 0x7ff7b4735e00: [top + 40] <- 0x03ec7a081de9 <Odd Oddball: optimized_out> ; stack parameter (input #12) 0x7ff7b4735df8: [top + 32] <- 0x03ec7a081de9 <Odd Oddball: optimized_out> ; stack parameter (input #13) 0x7ff7b4735df0: [top + 24] <- 0x03ec7a081de9 <Odd Oddball: optimized_out> ; stack parameter (input #14) 0x7ff7b4735de8: [top + 16] <- 0x03ec7a081de9 <Odd Oddball: optimized_out> ; stack parameter (input #15) 0x7ff7b4735de0: [top + 8] <- 0x03ec7a081de9 <Odd Oddball: optimized_out> ; stack parameter (input #16) 0x7ff7b4735dd8: [top + 0] <- 0x003000000000 <Smi 48> ; accumulator (input #17) [bailout end. took 0.355 ms] which corresponds to this `if` conditional: case 14: if (ch >= 0x30 && ch <= 0x39) { state = 14; } Still not sure how to fix this, but it is at least some form of progress. `--trace-deopt-verbose` flag brought to you via inspecting the available options in `node --v8-options`.
1 parent e2c92b6 commit cc07b40

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

packages/benchmark/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
"build": "cd ../.. && yarn build",
2424
"format": "cd ../.. && yarn format",
2525
"inspect:dynamic:parser": "echo 'Go to chrome://inspect' && node --inspect-brk lib/benchmark-dynamic-parser.js",
26-
"profile:deopt:dynamic:parser": "node --trace-opt --trace-deopt lib/benchmark-dynamic-parser.js",
27-
"profile:deopt:dynamic:lexer": "node --trace-opt --trace-deopt lib/benchmark-dynamic-lexer.js",
28-
"profile:deopt:reference:lexer": "node --trace-opt --trace-deopt lib/benchmark-reference-lexer.js",
29-
"profile:deopt:static:lexer": "node --trace-opt --trace-deopt lib/benchmark-static-lexer.js",
26+
"profile:deopt:dynamic:parser": "node --trace-opt --trace-deopt-verbose lib/benchmark-dynamic-parser.js",
27+
"profile:deopt:dynamic:lexer": "node --trace-opt --trace-deopt-verbose lib/benchmark-dynamic-lexer.js",
28+
"profile:deopt:reference:lexer": "node --trace-opt --trace-deopt-verbose lib/benchmark-reference-lexer.js",
29+
"profile:deopt:static:lexer": "node --trace-opt --trace-deopt-verbose lib/benchmark-static-lexer.js",
3030
"profile:dynamic:parser": "node --prof --no-logfile-per-isolate lib/benchmark-dynamic-parser.js && node --prof-process v8.log",
3131
"profile:table:parser": "node --prof --no-logfile-per-isolate lib/benchmark-table-parser.js && node --prof-process v8.log",
3232
"profile:dynamic:lexer": "node --trace-warnings --prof --no-logfile-per-isolate lib/benchmark-dynamic-lexer.js && node --prof-process v8.log",

0 commit comments

Comments
 (0)