Commit 94456e5c authored by Milad Farazmand's avatar Milad Farazmand Committed by Commit Bot

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

Port 855591a5

Original Commit Message:

    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.

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

Change-Id: Ibd0713a17df9c873692553f2d57f4ba36bcdb342
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1893746Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#64704}
parent b50dea24
......@@ -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