0681deb914
This fixes a corner-case where the bytecode was using the <new.target> register directly without going through the local variable. The value might be clobbered because the deoptimizer doesn't properly restore the value. The label will causes bytecode pipeline to be flushed and hence ensure {BytecodeRegisterOptimizer} doesn't reuse <new.target> anymore. R=rmcilroy@chromium.org TEST=mjsunit/regress/regress-crbug-645103 BUG=chromium:645103 Review-Url: https://codereview.chromium.org/2325133002 Cr-Commit-Position: refs/heads/master@{#39306}
47 lines
717 B
Plaintext
47 lines
717 B
Plaintext
#
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
#
|
|
|
|
---
|
|
execute: yes
|
|
wrap: yes
|
|
|
|
---
|
|
snippet: "
|
|
return new.target;
|
|
"
|
|
frame size: 1
|
|
parameter count: 1
|
|
bytecode array length: 9
|
|
bytecodes: [
|
|
B(Mov), R(new_target), R(0),
|
|
B(Ldar), R(new_target),
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 34 S> */ B(Ldar), R(0),
|
|
/* 53 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
new.target;
|
|
"
|
|
frame size: 1
|
|
parameter count: 1
|
|
bytecode array length: 8
|
|
bytecodes: [
|
|
B(Mov), R(new_target), R(0),
|
|
B(Ldar), R(new_target),
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 34 S> */ B(LdaUndefined),
|
|
/* 46 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
]
|
|
handlers: [
|
|
]
|
|
|