v8/test/cctest/interpreter/bytecode_expectations/OuterContextVariables.golden
Toon Verwaest c7c47c68f2 Reland "[runtime] Move Context::native_context to the map"
This is a reland of f05bae1e0d

Previously I presumed that the context read from a frame in the profiler was
a valid context. Turns out that on non-intel we're not guaranteed that the
frame is properly set up. In the case we looked at, the profiler took a
sample right before writing the frame marker indicating a builtin frame,
causing the "context" pointer from that frame to be a bytecode array. Since
we'll read random garbage on the stack as a possible context pointer, I made
the code reading the native context from it a little more defensive.

Bug: v8:9860

Original change's description:
> [runtime] Move Context::native_context to the map
>
> Remove the native context slot from contexts by making context maps
> native-context-specific. Now we require 2 loads to go from a context to the
> native context, but we have 1 field fewer to store when creating contexts.
>
> Change-Id: I3c0d7c50c94060c4129db684f46a567de6f30e8d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1859629
> Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Igor Sheludko <ishell@chromium.org>
> Reviewed-by: Peter Marshall <petermarshall@chromium.org>
> Reviewed-by: Maya Lekova <mslekova@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#64296}

Change-Id: If9461e9b21d35a260d71c79d7f95e518cc429e09
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1864930
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64314}
2019-10-16 12:32:03 +00:00

64 lines
1.3 KiB
Plaintext

#
# Autogenerated by generate-bytecode-expectations.
#
---
wrap: no
test function name: f
---
snippet: "
function Outer() {
var outerVar = 1;
function Inner(innerArg) {
this.innerFunc = function() { return outerVar * innerArg; }
}
this.getInnerFunc = function() { return new Inner(1).innerFunc; }
}
var f = new Outer().getInnerFunc();
f();
"
frame size: 1
parameter count: 1
bytecode array length: 13
bytecodes: [
/* 97 E> */ B(StackCheck),
/* 102 S> */ B(LdaImmutableContextSlot), R(context), U8(3), U8(1),
B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(3),
/* 118 E> */ B(Mul), R(0), U8(0),
/* 129 S> */ B(Return),
]
constant pool: [
]
handlers: [
]
---
snippet: "
function Outer() {
var outerVar = 1;
function Inner(innerArg) {
this.innerFunc = function() { outerVar = innerArg; }
}
this.getInnerFunc = function() { return new Inner(1).innerFunc; }
}
var f = new Outer().getInnerFunc();
f();
"
frame size: 0
parameter count: 1
bytecode array length: 9
bytecodes: [
/* 97 E> */ B(StackCheck),
/* 102 S> */ B(LdaImmutableCurrentContextSlot), U8(3),
/* 111 E> */ B(StaContextSlot), R(context), U8(3), U8(1),
B(LdaUndefined),
/* 123 S> */ B(Return),
]
constant pool: [
]
handlers: [
]