• Jakob Gruber's avatar
    [interpreter] Move function-entry stack check to start of bytecode array · cebfde67
    Jakob Gruber authored
    The function-entry stack check should dominate all other
    instructions in a function. Prior to this CL it was possible to create
    paths not including a stack check due to SwitchOnGeneratorState: the
    generator-creation branch had a stack check, while generator-resume
    branches did not.
    
      0 : af fb 00 01       SwitchOnGeneratorState r0, [0], [1] { 0: @22 }
      4 : 27 fe fa          Mov <closure>, r1
      7 : 27 02 f9          Mov <this>, r2
     10 : 64 0a fa 02       InvokeIntrinsic [_CreateJSGeneratorObject], r1-r2
     14 : 26 fb             Star r0
     16 : a7                StackCheck
     17 : b0 fb fb 01 00    SuspendGenerator r0, r0-r0, [0]
     22 : b1 fb fb 01       ResumeGenerator r0, r0-r0
                            [... no stack check here ...]
    
    This CL moves the stack check to the beginning of the bytecode array,
    i.e. before SwitchOnGeneratorState.
    
    Bug: chromium:1020031
    Change-Id: I8ba8cba99611ddbe50c76023129d926cc84b1d5e
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903440Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#64888}
    cebfde67
Name
Last commit
Last update
..
OWNERS Loading commit data...
block-coverage-builder.h Loading commit data...
bytecode-array-accessor.cc Loading commit data...
bytecode-array-accessor.h Loading commit data...
bytecode-array-builder.cc Loading commit data...
bytecode-array-builder.h Loading commit data...
bytecode-array-iterator.cc Loading commit data...
bytecode-array-iterator.h Loading commit data...
bytecode-array-random-iterator.cc Loading commit data...
bytecode-array-random-iterator.h Loading commit data...
bytecode-array-writer.cc Loading commit data...
bytecode-array-writer.h Loading commit data...
bytecode-decoder.cc Loading commit data...
bytecode-decoder.h Loading commit data...
bytecode-flags.cc Loading commit data...
bytecode-flags.h Loading commit data...
bytecode-generator.cc Loading commit data...
bytecode-generator.h Loading commit data...
bytecode-jump-table.h Loading commit data...
bytecode-label.cc Loading commit data...
bytecode-label.h Loading commit data...
bytecode-node.cc Loading commit data...
bytecode-node.h Loading commit data...
bytecode-operands.cc Loading commit data...
bytecode-operands.h Loading commit data...
bytecode-register-allocator.h Loading commit data...
bytecode-register-optimizer.cc Loading commit data...
bytecode-register-optimizer.h Loading commit data...
bytecode-register.cc Loading commit data...
bytecode-register.h Loading commit data...
bytecode-source-info.cc Loading commit data...
bytecode-source-info.h Loading commit data...
bytecode-traits.h Loading commit data...
bytecodes.cc Loading commit data...
bytecodes.h Loading commit data...
constant-array-builder.cc Loading commit data...
constant-array-builder.h Loading commit data...
control-flow-builders.cc Loading commit data...
control-flow-builders.h Loading commit data...
handler-table-builder.cc Loading commit data...
handler-table-builder.h Loading commit data...
interpreter-assembler.cc Loading commit data...
interpreter-assembler.h Loading commit data...
interpreter-generator.cc Loading commit data...
interpreter-generator.h Loading commit data...
interpreter-intrinsics-generator.cc Loading commit data...
interpreter-intrinsics-generator.h Loading commit data...
interpreter-intrinsics.cc Loading commit data...
interpreter-intrinsics.h Loading commit data...
interpreter.cc Loading commit data...
interpreter.h Loading commit data...