When you run with --print-bytecode, the numbers to the left, in front of E> (for expression position) or S> (for statement position) are the source position offsets from the start of the function.
Yang On Sun, 25 Nov 2018, 02:02 <[email protected] wrote: > In the mean-time, I've been playing around with --trace, which emits a > CallRuntime with kTraceEnter. Somehow, at runtime, this takes us to > frames.cc, which ends up printing the traces. The interesting thing is that > the frames.cc functions are able to obtain the line number, by calculating > a code offset. I'm studying this code more, as it might explain how things > work. > > On Sunday, November 25, 2018 at 12:38:32 AM UTC, [email protected] wrote: >> >> Hey there! I'm running a small JavaScript program using d8, and >> inspecting its byte code using the --print-bytecode flag, and I'm trying to >> find a way to associate a printed byte code instruction with a line number >> from my original script. >> >> I added some logging code to the Visitor methods in >> bytecode-generator.cc, which seem to be operating on subclasses of AstNode, >> like Statement, Expression, FunctionLiteral, etc. These classes provide >> various information such as a position integer that seem correspond to the >> numbers I see at the left of each byte code when doing --print-bytecode, >> plus I can also get a pretty print of the AST tree with Print() but the >> association between line numbers looks lost at this point. >> >> For example, I have the following function defined as the first thing in >> my script: >> >> function my_sum(x, y) { >> return x + y >> } >> >> The generated byte code is: >> >> [generated bytecode for function: my_sum] >> Parameter count 3 >> Frame size 0 >> 19 E> 0x48f6da1f942 @ 0 : a5 StackCheck >> 30 S> 0x48f6da1f943 @ 1 : 25 02 Ldar a1 >> 39 E> 0x48f6da1f945 @ 3 : 34 03 00 Add a0, [0] >> 42 S> 0x48f6da1f948 @ 6 : a9 Return >> Constant pool (size = 0) >> Handler Table (size = 0) >> >> And its the Print() method of such AstNode shows: >> >> FUNC LITERAL at 19 >> . NAME my_sum >> . INFERRED NAME >> . PARAMS >> . . VAR (0x7fccc2095658) (mode = VAR) "x" >> . . VAR (0x7fccc2095688) (mode = VAR) "y" >> >> I would like to somehow determine that i.e. the statements "Ldar a1" and >> "Return" belong to line 2. >> >> Can you point me to the code that stores information about the original >> line number (presumably this lives somewhere, so v8 can output runtime >> errors, etc)? Any pointers or explanations would be very appreciated! >> >> Thanks a lot! >> >> >> >> -- > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > --- > You received this message because you are subscribed to the Google Groups > "v8-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
