Commit 29112b47 authored by Milad Farazmand's avatar Milad Farazmand Committed by Commit Bot

PPC/s390: Reland "Reland: [builtins] Move non-JS linkage builtins code objects into RO_SPACE"

Port 352bbb12

Original Commit Message:

    This is a reland of 855591a5

    Fixes break in builds that verify ReadOnlyHeap by relaxing the requirement for
    Code objects to be in CODE_SPACE in PagedSpaceObjectIterator::FromCurrentPage.

    Original change's description:
    > Reland: [builtins] Move non-JS linkage builtins code objects into RO_SPACE
    >
    > Reland of https://chromium-review.googlesource.com/c/v8/v8/+/1795358.
    >
    > [builtins] Move non-JS linkage builtins code objects into RO_SPACE
    >
    > Creates an allow-list of builtins that can still go in code_space
    > including all TFJ builtins and a small manual list that should be pared
    > down in the future.
    >
    > For builtins that go in RO_SPACE a Code object is created that contains an
    > immediate trap instruction. Generally these Code objects are still no
    > smaller than CODE_SPACE Code objects because of the Code object alignment
    > requirements. This will hopefully be addressed in a follow-up CL either by
    > relaxing them or removing the instruction stream completely.
    >
    > In the snapshot, this reduces code_space from ~152k to ~40k (-112k) and
    > increases by the same amount.
    >
    > Change-Id: I76661c35c7ea5866c1fb16e87e87122b3e3ca0ce
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1893336
    > Commit-Queue: Dan Elphick <delphick@chromium.org>
    > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
    > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#64700}

R=delphick@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: If150434119828a87e295b0639c934392812bb345
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1896904Reviewed-by: 's avatarMilad Farazmand <miladfar@ca.ibm.com>
Reviewed-by: 's avatarDan Elphick <delphick@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#64741}
parent fbbf602d
......@@ -290,6 +290,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
bind(&skip);
return;
}
DCHECK(code->IsExecutable());
Call(code.address(), rmode, cond);
}
......@@ -3044,6 +3045,8 @@ void TurboAssembler::ZeroExtWord32(Register dst, Register src) {
clrldi(dst, src, Operand(32));
}
void TurboAssembler::Trap() { stop(); }
} // namespace internal
} // namespace v8
......
......@@ -368,6 +368,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void MovFromFloatParameter(DoubleRegister dst);
void MovFromFloatResult(DoubleRegister dst);
void Trap() override;
// Calls Abort(msg) if the condition cond is not satisfied.
// Use --debug_code to enable.
void Assert(Condition cond, AbortReason reason, CRegister cr = cr7);
......
......@@ -253,6 +253,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
Call(ip);
return;
}
DCHECK(code->IsExecutable());
call(code, rmode);
}
......@@ -4398,6 +4399,8 @@ void TurboAssembler::CallForDeoptimization(Address target, int deopt_id) {
Call(target, RelocInfo::RUNTIME_ENTRY);
}
void TurboAssembler::Trap() { stop(); }
} // namespace internal
} // namespace v8
......
......@@ -852,6 +852,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void MovFromFloatParameter(DoubleRegister dst);
void MovFromFloatResult(DoubleRegister dst);
void Trap() override;
// Emit code for a truncating division by a constant. The dividend register is
// unchanged and ip gets clobbered. Dividend and result must be different.
void TruncateDoubleToI(Isolate* isolate, Zone* zone, Register result,
......
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