• Alexey Kozyatinskiy's avatar
    [inspector] improve return position of explicit return in non-async function · 08965860
    Alexey Kozyatinskiy authored
    Goal of this CL: explicit return from non-async function has position after
    return expression as return position (will unblock [1]).
    
    BytecodeArrayBuilder has SetStatementPosition and SetExpressionPosition methods.
    If one of these methods is called then next generated bytecode will get passed
    position. It's general treatment for most cases.
    Unfortunately it doesn't work for Returns:
    - debugger requires source positions exactly on kReturn bytecode in stepping
      implementation,
    - BytecodeGenerator::BuildReturn and BytecodeGenerator::BuildAsyncReturn
      generates more then one bytecode and general solution will put return position
      on first generated bytecode,
    - it's not easy to split BuildReturn function into two parts to allow something
      like following in BytecodeGenerator::VisitReturnStatement since generated
      bytecodes are actually controlled by execution_control().
    ..->BuildReturnPrologue();
    ..->SetReturnPosition(stmt);
    ..->Return();
    
    In this CL we pass ReturnStatement through ExecutionControl and use it for
    position when we emit return bytecode right here.
    
    So this CL only will improve return position for returns inside of non-async
    functions, I'll address async functions later.
    
    [1] https://chromium-review.googlesource.com/c/543161/
    
    Change-Id: Iede512c120b00c209990bf50c20e7d23dc0d65db
    Reviewed-on: https://chromium-review.googlesource.com/560738
    Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
    Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
    Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#46687}
    08965860
Name
Last commit
Last update
..
console Loading commit data...
cpu-profiler Loading commit data...
debugger Loading commit data...
heap-profiler Loading commit data...
runtime Loading commit data...
sessions Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
inspector-test.cc Loading commit data...
inspector.gyp Loading commit data...
inspector.isolate Loading commit data...
inspector.status Loading commit data...
isolate-data.cc Loading commit data...
isolate-data.h Loading commit data...
json-parse-expected.txt Loading commit data...
json-parse.js Loading commit data...
protocol-test.js Loading commit data...
task-runner.cc Loading commit data...
task-runner.h Loading commit data...
testcfg.py Loading commit data...