Commit c8dfd2cf authored by Zhao Jiazhong's avatar Zhao Jiazhong Committed by Commit Bot

[mips][builtins] Move non-JS linkage builtins code objects into RO_SPACE

port 352bbb12 https://crrev.com/c/1893192

Original Commit Message:

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

  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}

Change-Id: I58c10e438f164a992041960f7a54d57be500ef48
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1898831
Auto-Submit: Zhao Jiazhong <kyslie3100@gmail.com>
Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64776}
parent be9e3974
...@@ -3990,6 +3990,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode, ...@@ -3990,6 +3990,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
} }
DCHECK(RelocInfo::IsCodeTarget(rmode)); DCHECK(RelocInfo::IsCodeTarget(rmode));
DCHECK(code->IsExecutable());
Call(code.address(), rmode, cond, rs, rt, bd); Call(code.address(), rmode, cond, rs, rt, bd);
} }
...@@ -4653,6 +4654,8 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value, ...@@ -4653,6 +4654,8 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Debugging. // Debugging.
void TurboAssembler::Trap() { stop(); }
void TurboAssembler::Assert(Condition cc, AbortReason reason, Register rs, void TurboAssembler::Assert(Condition cc, AbortReason reason, Register rs,
Operand rt) { Operand rt) {
if (emit_debug_code()) Check(cc, reason, rs, rt); if (emit_debug_code()) Check(cc, reason, rs, rt);
......
...@@ -102,6 +102,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { ...@@ -102,6 +102,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Debugging. // Debugging.
void Trap() override;
// Calls Abort(msg) if the condition cc is not satisfied. // Calls Abort(msg) if the condition cc is not satisfied.
// Use --debug_code to enable. // Use --debug_code to enable.
void Assert(Condition cc, AbortReason reason, Register rs, Operand rt); void Assert(Condition cc, AbortReason reason, Register rs, Operand rt);
......
...@@ -4279,6 +4279,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode, ...@@ -4279,6 +4279,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
} }
DCHECK(RelocInfo::IsCodeTarget(rmode)); DCHECK(RelocInfo::IsCodeTarget(rmode));
DCHECK(code->IsExecutable());
Call(code.address(), rmode, cond, rs, rt, bd); Call(code.address(), rmode, cond, rs, rt, bd);
} }
...@@ -4975,6 +4976,8 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value, ...@@ -4975,6 +4976,8 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Debugging. // Debugging.
void TurboAssembler::Trap() { stop(); }
void TurboAssembler::Assert(Condition cc, AbortReason reason, Register rs, void TurboAssembler::Assert(Condition cc, AbortReason reason, Register rs,
Operand rt) { Operand rt) {
if (emit_debug_code()) Check(cc, reason, rs, rt); if (emit_debug_code()) Check(cc, reason, rs, rt);
......
...@@ -122,6 +122,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { ...@@ -122,6 +122,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Debugging. // Debugging.
void Trap() override;
// Calls Abort(msg) if the condition cc is not satisfied. // Calls Abort(msg) if the condition cc is not satisfied.
// Use --debug_code to enable. // Use --debug_code to enable.
void Assert(Condition cc, AbortReason reason, Register rs, Operand rt); void Assert(Condition cc, AbortReason reason, Register rs, Operand rt);
......
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