v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden
Toon Verwaest c82cd31325 Drop custom accessor deoptimization support
Previously StaNamedProperty and StaKeyedProperty were in a weird state where
they claimed to not touch the accumulator, but actually did in case they were
deopted in the middle. A frame was added in the middle to overwrite the 
accumulator again with the right value before returning from the setter, using
a lot of complexity in the deoptimizer.

This changes those instructions to be marked as writing to the accumulator
(e.g., the result of the setter), and uses to manually store and reload into
the accumulator the value being stored.

If we want to avoid the additional bytecodes, we could make sure that bytecodes
that claim to leave the accumulator alone don't deopt back to Advance/Dispatch
but LoadAccumulatorWithValue/Advance/Dispatch. That's in a way similar to what
happened before this CL, but I believe could be implemented much simpler.


Bug: 
Change-Id: I4850a690ef5a30976701d0e050951faa46fd1c18
Reviewed-on: https://chromium-review.googlesource.com/753487
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49159}
2017-11-06 20:20:58 +00:00

289 lines
6.3 KiB
Plaintext

#
# Autogenerated by generate-bytecode-expectations.
#
---
wrap: yes
---
snippet: "
var a = 1; return ++a;
"
frame size: 1
parameter count: 1
bytecode array length: 10
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
B(Star), R(0),
/* 45 S> */ B(Inc), U8(0),
B(Star), R(0),
/* 56 S> */ B(Return),
]
constant pool: [
]
handlers: [
]
---
snippet: "
var a = 1; return a++;
"
frame size: 2
parameter count: 1
bytecode array length: 16
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
B(Star), R(0),
/* 45 S> */ B(ToNumeric), U8(0),
B(Star), R(1),
B(Inc), U8(0),
B(Star), R(0),
B(Ldar), R(1),
/* 56 S> */ B(Return),
]
constant pool: [
]
handlers: [
]
---
snippet: "
var a = 1; return --a;
"
frame size: 1
parameter count: 1
bytecode array length: 10
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
B(Star), R(0),
/* 45 S> */ B(Dec), U8(0),
B(Star), R(0),
/* 56 S> */ B(Return),
]
constant pool: [
]
handlers: [
]
---
snippet: "
var a = 1; return a--;
"
frame size: 2
parameter count: 1
bytecode array length: 16
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
B(Star), R(0),
/* 45 S> */ B(ToNumeric), U8(0),
B(Star), R(1),
B(Dec), U8(0),
B(Star), R(0),
B(Ldar), R(1),
/* 56 S> */ B(Return),
]
constant pool: [
]
handlers: [
]
---
snippet: "
var a = { val: 1 }; return a.val++;
"
frame size: 4
parameter count: 1
bytecode array length: 28
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
B(Mov), R(1), R(0),
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(1),
B(ToNumeric), U8(3),
B(Star), R(2),
B(Inc), U8(3),
B(Star), R(3),
/* 66 E> */ B(StaNamedProperty), R(1), U8(1), U8(4),
B(Ldar), R(2),
/* 69 S> */ B(Return),
]
constant pool: [
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["val"],
]
handlers: [
]
---
snippet: "
var a = { val: 1 }; return --a.val;
"
frame size: 3
parameter count: 1
bytecode array length: 24
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
B(Mov), R(1), R(0),
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(1),
B(Dec), U8(3),
B(Star), R(2),
/* 65 E> */ B(StaNamedProperty), R(1), U8(1), U8(4),
B(Ldar), R(2),
/* 69 S> */ B(Return),
]
constant pool: [
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["val"],
]
handlers: [
]
---
snippet: "
var name = 'var'; var a = { val: 1 }; return a[name]--;
"
frame size: 6
parameter count: 1
bytecode array length: 33
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 45 S> */ B(LdaConstant), U8(0),
B(Star), R(0),
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), R(2),
B(Mov), R(2), R(1),
/* 72 S> */ B(Ldar), R(0),
/* 81 E> */ B(LdaKeyedProperty), R(2), U8(1),
B(ToNumeric), U8(3),
B(Star), R(4),
B(Dec), U8(3),
B(Star), R(5),
/* 86 E> */ B(StaKeyedProperty), R(2), R(0), U8(4),
B(Ldar), R(4),
/* 89 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["var"],
FIXED_ARRAY_TYPE,
]
handlers: [
]
---
snippet: "
var name = 'var'; var a = { val: 1 }; return ++a[name];
"
frame size: 5
parameter count: 1
bytecode array length: 29
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 45 S> */ B(LdaConstant), U8(0),
B(Star), R(0),
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), R(2),
B(Mov), R(2), R(1),
/* 72 S> */ B(Ldar), R(0),
/* 83 E> */ B(LdaKeyedProperty), R(2), U8(1),
B(Inc), U8(3),
B(Star), R(4),
/* 87 E> */ B(StaKeyedProperty), R(2), R(0), U8(4),
B(Ldar), R(4),
/* 89 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["var"],
FIXED_ARRAY_TYPE,
]
handlers: [
]
---
snippet: "
var a = 1; var b = function() { return a }; return ++a;
"
frame size: 2
parameter count: 1
bytecode array length: 22
bytecodes: [
B(CreateFunctionContext), U8(1),
B(PushContext), R(1),
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
/* 53 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
B(Star), R(0),
/* 78 S> */ B(LdaCurrentContextSlot), U8(4),
B(Inc), U8(1),
/* 87 E> */ B(StaCurrentContextSlot), U8(4),
/* 89 S> */ B(Return),
]
constant pool: [
SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]
---
snippet: "
var a = 1; var b = function() { return a }; return a--;
"
frame size: 3
parameter count: 1
bytecode array length: 28
bytecodes: [
B(CreateFunctionContext), U8(1),
B(PushContext), R(1),
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
/* 53 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
B(Star), R(0),
/* 78 S> */ B(LdaCurrentContextSlot), U8(4),
B(ToNumeric), U8(1),
B(Star), R(2),
B(Dec), U8(1),
/* 86 E> */ B(StaCurrentContextSlot), U8(4),
B(Ldar), R(2),
/* 89 S> */ B(Return),
]
constant pool: [
SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]
---
snippet: "
var idx = 1; var a = [1, 2]; return a[idx++] = 2;
"
frame size: 5
parameter count: 1
bytecode array length: 32
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 44 S> */ B(LdaSmi), I8(1),
B(Star), R(0),
/* 55 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star), R(1),
/* 63 S> */ B(Ldar), R(0),
B(ToNumeric), U8(1),
B(Star), R(3),
B(Inc), U8(1),
B(Star), R(0),
B(LdaSmi), I8(2),
B(Star), R(4),
/* 79 E> */ B(StaKeyedProperty), R(1), R(3), U8(2),
B(Ldar), R(4),
/* 83 S> */ B(Return),
]
constant pool: [
TUPLE2_TYPE,
]
handlers: [
]