Reviewers: danno, ulan, paul.l..., gergely.kis.imgtec, akos.palfi.imgtec,
dusmil.imgtec,
Description:
MIPS: Refactor Map::ConstructionCount.
Port 35ff259b6344eed116936372f6861181c6afe922
Original commit message:
This combines Map::DoneInobjectSlackTracking and Map::ConstructionCount
into one
more generic 4-bit counter.
Counter values from 15 down to 8 are used for in-object slack tracking,
values
from 7 down to 0 are free to be used for a new counter when in-object slack
tracking is inactive
BUG=
Please review this at https://codereview.chromium.org/780303003/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+18, -22 lines):
M src/mips/builtins-mips.cc
M src/mips64/builtins-mips64.cc
Index: src/mips/builtins-mips.cc
diff --git a/src/mips/builtins-mips.cc b/src/mips/builtins-mips.cc
index
df6dc534be4abd1a9605c32d86fa66e6864b6b03..100195b58d48bb6a97871ce9238369cd4d7c7ad9
100644
--- a/src/mips/builtins-mips.cc
+++ b/src/mips/builtins-mips.cc
@@ -382,21 +382,21 @@ static void
Generate_JSConstructStubHelper(MacroAssembler* masm,
MemOperand bit_field3 = FieldMemOperand(a2, Map::kBitField3Offset);
// Check if slack tracking is enabled.
__ lw(t0, bit_field3);
- __ DecodeField<Map::ConstructionCount>(t2, t0);
- __ Branch(&allocate, eq, t2,
Operand(JSFunction::kNoSlackTracking));
+ __ DecodeField<Map::Counter>(t2, t0);
+ __ Branch(&allocate, lt, t2,
Operand(Map::kSlackTrackingCounterEnd));
// Decrease generous allocation count.
- __ Subu(t0, t0, Operand(1 << Map::ConstructionCount::kShift));
- __ Branch(USE_DELAY_SLOT,
- &allocate, ne, t2, Operand(JSFunction::kFinishSlackTracking));
+ __ Subu(t0, t0, Operand(1 << Map::Counter::kShift));
+ __ Branch(USE_DELAY_SLOT, &allocate, ne, t2,
+ Operand(Map::kSlackTrackingCounterEnd));
__ sw(t0, bit_field3); // In delay slot.
__ Push(a1, a2, a1); // a1 = Constructor.
__ CallRuntime(Runtime::kFinalizeInstanceSize, 1);
__ Pop(a1, a2);
- // Slack tracking counter is kNoSlackTracking after runtime call.
- DCHECK(JSFunction::kNoSlackTracking == 0);
- __ mov(t2, zero_reg);
+ // Slack tracking counter is Map::kSlackTrackingCounterEnd after
runtime
+ // call.
+ __ li(t2, Map::kSlackTrackingCounterEnd);
__ bind(&allocate);
}
@@ -443,8 +443,8 @@ static void
Generate_JSConstructStubHelper(MacroAssembler* masm,
Label no_inobject_slack_tracking;
// Check if slack tracking is enabled.
- __ Branch(&no_inobject_slack_tracking,
- eq, t2, Operand(JSFunction::kNoSlackTracking));
+ __ Branch(&no_inobject_slack_tracking, lt, t2,
+ Operand(Map::kSlackTrackingCounterEnd));
// Allocate object with a slack.
__ lbu(a0, FieldMemOperand(a2,
Map::kPreAllocatedPropertyFieldsOffset));
Index: src/mips64/builtins-mips64.cc
diff --git a/src/mips64/builtins-mips64.cc b/src/mips64/builtins-mips64.cc
index
8f36797c8f18e97adb8dba805646b3a3b8db1c7f..7259b1806ee918166794b5cdc36ad8cd29dcfc78
100644
--- a/src/mips64/builtins-mips64.cc
+++ b/src/mips64/builtins-mips64.cc
@@ -382,15 +382,13 @@ static void
Generate_JSConstructStubHelper(MacroAssembler* masm,
MemOperand bit_field3 = FieldMemOperand(a2, Map::kBitField3Offset);
// Check if slack tracking is enabled.
__ lwu(a4, bit_field3);
- __ DecodeField<Map::ConstructionCount>(a6, a4);
- __ Branch(&allocate,
- eq,
- a6,
-
Operand(static_cast<int64_t>(JSFunction::kNoSlackTracking)));
+ __ DecodeField<Map::Counter>(a6, a4);
+ __ Branch(&allocate, lt, a6,
+
Operand(static_cast<int64_t>(Map::kSlackTrackingCounterEnd)));
// Decrease generous allocation count.
- __ Dsubu(a4, a4, Operand(1 << Map::ConstructionCount::kShift));
- __ Branch(USE_DELAY_SLOT,
- &allocate, ne, a6, Operand(JSFunction::kFinishSlackTracking));
+ __ Dsubu(a4, a4, Operand(1 << Map::Counter::kShift));
+ __ Branch(USE_DELAY_SLOT, &allocate, ne, a6,
+ Operand(Map::kSlackTrackingCounterEnd));
__ sw(a4, bit_field3); // In delay slot.
__ Push(a1, a2, a1); // a1 = Constructor.
@@ -446,10 +444,8 @@ static void
Generate_JSConstructStubHelper(MacroAssembler* masm,
Label no_inobject_slack_tracking;
// Check if slack tracking is enabled.
- __ Branch(&no_inobject_slack_tracking,
- eq,
- a6,
-
Operand(static_cast<int64_t>(JSFunction::kNoSlackTracking)));
+ __ Branch(&no_inobject_slack_tracking, lt, a6,
+
Operand(static_cast<int64_t>(Map::kSlackTrackingCounterEnd)));
// Allocate object with a slack.
__ lwu(a0, FieldMemOperand(a2, Map::kInstanceSizesOffset));
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.