Commit 26539972 authored by Milad Farazmand's avatar Milad Farazmand Committed by Commit Bot

PPC/s390: PPC/s390: Reland^2 "[runtime] Move Context::native_context to the map"

Port 36ab93d8

Original Commit Message:

    Port 3cad6bf5

    Original Commit Message:

        This is a reland of c7c47c68.

        This makes TSAN happy in addition to:

        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.

        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}

R=miladfar@ca.ibm.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I996a1f5096b34fc556918752224ff51889f0a5ce
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1879443Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#64570}
parent fcdae18e
......@@ -1753,7 +1753,7 @@ void MacroAssembler::AssertConstructor(Register object, Register scratch) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object);
Check(ne, AbortReason::kOperandIsASmiAndNotAConstructor);
LoadMap(object, object);
LoadMap(scratch, object);
tm(FieldMemOperand(scratch, Map::kBitFieldOffset),
Operand(Map::IsConstructorBit::kMask));
Check(ne, AbortReason::kOperandIsNotAConstructor);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment