Revision: 23674
Author: [email protected]
Date: Thu Sep 4 08:59:42 2014 UTC
Log: MIPS: Clean up code stubs and ensure distinct major keys.
Port r23655 (6327324d)
BUG=
[email protected], [email protected]
Review URL: https://codereview.chromium.org/541513002
https://code.google.com/p/v8/source/detail?r=23674
Modified:
/branches/bleeding_edge/src/code-stubs.h
/branches/bleeding_edge/src/ic/mips/handler-compiler-mips.cc
/branches/bleeding_edge/src/ic/mips64/handler-compiler-mips64.cc
/branches/bleeding_edge/src/mips/code-stubs-mips.cc
/branches/bleeding_edge/src/mips/code-stubs-mips.h
/branches/bleeding_edge/src/mips64/code-stubs-mips64.cc
/branches/bleeding_edge/src/mips64/code-stubs-mips64.h
=======================================
--- /branches/bleeding_edge/src/code-stubs.h Wed Sep 3 13:23:07 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.h Thu Sep 4 08:59:42 2014 UTC
@@ -108,16 +108,16 @@
// List of code stubs only used on MIPS platforms.
#if V8_TARGET_ARCH_MIPS
#define CODE_STUB_LIST_MIPS(V) \
- V(RegExpCEntry) \
V(DirectCEntry) \
+ V(RestoreRegistersState) \
V(StoreRegistersState) \
- V(RestoreRegistersState)
+ V(WriteInt32ToHeapNumber)
#elif V8_TARGET_ARCH_MIPS64
#define CODE_STUB_LIST_MIPS(V) \
- V(RegExpCEntry) \
V(DirectCEntry) \
+ V(RestoreRegistersState) \
V(StoreRegistersState) \
- V(RestoreRegistersState)
+ V(WriteInt32ToHeapNumber)
#else
#define CODE_STUB_LIST_MIPS(V)
#endif
=======================================
--- /branches/bleeding_edge/src/ic/mips/handler-compiler-mips.cc Wed Sep 3
18:19:54 2014 UTC
+++ /branches/bleeding_edge/src/ic/mips/handler-compiler-mips.cc Thu Sep 4
08:59:42 2014 UTC
@@ -279,35 +279,6 @@
CallApiFunctionStub stub(isolate, is_store, call_data_undefined, argc);
__ TailCallStub(&stub);
}
-
-
-void ElementHandlerCompiler::GenerateLoadDictionaryElement(
- MacroAssembler* masm) {
- // The return address is in ra.
- Label slow, miss;
-
- Register key = LoadDescriptor::NameRegister();
- Register receiver = LoadDescriptor::ReceiverRegister();
- DCHECK(receiver.is(a1));
- DCHECK(key.is(a2));
-
- __ UntagAndJumpIfNotSmi(t2, key, &miss);
- __ lw(t0, FieldMemOperand(receiver, JSObject::kElementsOffset));
- __ LoadFromNumberDictionary(&slow, t0, key, v0, t2, a3, t1);
- __ Ret();
-
- // Slow case, key and receiver still unmodified.
- __ bind(&slow);
- __ IncrementCounter(
- masm->isolate()->counters()->keyed_load_external_array_slow(), 1,
a2, a3);
-
- TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
-
- // Miss case, call the runtime.
- __ bind(&miss);
-
- TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
-}
void NamedStoreHandlerCompiler::GenerateSlow(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/ic/mips64/handler-compiler-mips64.cc Wed
Sep 3 18:19:54 2014 UTC
+++ /branches/bleeding_edge/src/ic/mips64/handler-compiler-mips64.cc Thu
Sep 4 08:59:42 2014 UTC
@@ -279,36 +279,6 @@
CallApiFunctionStub stub(isolate, is_store, call_data_undefined, argc);
__ TailCallStub(&stub);
}
-
-
-void ElementHandlerCompiler::GenerateLoadDictionaryElement(
- MacroAssembler* masm) {
- // The return address is in ra
- Label slow, miss;
-
- Register key = LoadDescriptor::NameRegister();
- Register receiver = LoadDescriptor::ReceiverRegister();
- DCHECK(receiver.is(a1));
- DCHECK(key.is(a2));
-
- __ UntagAndJumpIfNotSmi(a6, key, &miss);
- __ ld(a4, FieldMemOperand(receiver, JSObject::kElementsOffset));
- DCHECK(kSmiTagSize + kSmiShiftSize == 32);
- __ LoadFromNumberDictionary(&slow, a4, key, v0, a6, a3, a5);
- __ Ret();
-
- // Slow case, key and receiver still unmodified.
- __ bind(&slow);
- __ IncrementCounter(
- masm->isolate()->counters()->keyed_load_external_array_slow(), 1,
a2, a3);
-
- TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
-
- // Miss case, call the runtime.
- __ bind(&miss);
-
- TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
-}
void NamedStoreHandlerCompiler::GenerateSlow(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Thu Sep 4 00:06:56
2014 UTC
+++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Thu Sep 4 08:59:42
2014 UTC
@@ -609,8 +609,7 @@
}
-static void ICCompareStub_CheckInputType(MacroAssembler* masm,
- Register input,
+static void CompareICStub_CheckInputType(MacroAssembler* masm, Register
input,
Register scratch,
CompareIC::State expected,
Label* fail) {
@@ -631,14 +630,14 @@
// On entry a1 and a2 are the values to be compared.
// On exit a0 is 0, positive or negative to indicate the result of
// the comparison.
-void ICCompareStub::GenerateGeneric(MacroAssembler* masm) {
+void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
Register lhs = a1;
Register rhs = a0;
Condition cc = GetCondition();
Label miss;
- ICCompareStub_CheckInputType(masm, lhs, a2, left(), &miss);
- ICCompareStub_CheckInputType(masm, rhs, a3, right(), &miss);
+ CompareICStub_CheckInputType(masm, lhs, a2, left(), &miss);
+ CompareICStub_CheckInputType(masm, rhs, a3, right(), &miss);
Label slow; // Call builtin.
Label not_smis, both_loaded_as_doubles;
@@ -3522,7 +3521,7 @@
}
-void ICCompareStub::GenerateSmis(MacroAssembler* masm) {
+void CompareICStub::GenerateSmis(MacroAssembler* masm) {
DCHECK(state() == CompareIC::SMI);
Label miss;
__ Or(a2, a1, a0);
@@ -3545,7 +3544,7 @@
}
-void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
+void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
DCHECK(state() == CompareIC::NUMBER);
Label generic_stub;
@@ -3613,7 +3612,7 @@
__ bind(&unordered);
__ bind(&generic_stub);
- ICCompareStub stub(isolate(), op(), CompareIC::GENERIC,
CompareIC::GENERIC,
+ CompareICStub stub(isolate(), op(), CompareIC::GENERIC,
CompareIC::GENERIC,
CompareIC::GENERIC);
__ Jump(stub.GetCode(), RelocInfo::CODE_TARGET);
@@ -3638,7 +3637,7 @@
}
-void ICCompareStub::GenerateInternalizedStrings(MacroAssembler* masm) {
+void CompareICStub::GenerateInternalizedStrings(MacroAssembler* masm) {
DCHECK(state() == CompareIC::INTERNALIZED_STRING);
Label miss;
@@ -3678,7 +3677,7 @@
}
-void ICCompareStub::GenerateUniqueNames(MacroAssembler* masm) {
+void CompareICStub::GenerateUniqueNames(MacroAssembler* masm) {
DCHECK(state() == CompareIC::UNIQUE_NAME);
DCHECK(GetCondition() == eq);
Label miss;
@@ -3722,7 +3721,7 @@
}
-void ICCompareStub::GenerateStrings(MacroAssembler* masm) {
+void CompareICStub::GenerateStrings(MacroAssembler* masm) {
DCHECK(state() == CompareIC::STRING);
Label miss;
@@ -3808,7 +3807,7 @@
}
-void ICCompareStub::GenerateObjects(MacroAssembler* masm) {
+void CompareICStub::GenerateObjects(MacroAssembler* masm) {
DCHECK(state() == CompareIC::OBJECT);
Label miss;
__ And(a2, a1, Operand(a0));
@@ -3828,7 +3827,7 @@
}
-void ICCompareStub::GenerateKnownObjects(MacroAssembler* masm) {
+void CompareICStub::GenerateKnownObjects(MacroAssembler* masm) {
Label miss;
__ And(a2, a1, a0);
__ JumpIfSmi(a2, &miss);
@@ -3845,7 +3844,7 @@
}
-void ICCompareStub::GenerateMiss(MacroAssembler* masm) {
+void CompareICStub::GenerateMiss(MacroAssembler* masm) {
{
// Call the runtime system in a fresh internal frame.
ExternalReference miss =
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.h Thu Sep 4 00:06:56
2014 UTC
+++ /branches/bleeding_edge/src/mips/code-stubs-mips.h Thu Sep 4 08:59:42
2014 UTC
@@ -79,7 +79,7 @@
static void GenerateAheadOfTime(Isolate* isolate);
private:
- Major MajorKey() const { return StoreRegistersState; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
uint32_t MinorKey() const { return 0; }
void Generate(MacroAssembler* masm);
@@ -92,7 +92,7 @@
static void GenerateAheadOfTime(Isolate* isolate);
private:
- Major MajorKey() const { return RestoreRegistersState; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
uint32_t MinorKey() const { return 0; }
void Generate(MacroAssembler* masm);
@@ -121,7 +121,7 @@
static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate);
private:
- Major MajorKey() const { return WriteInt32ToHeapNumber; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
void Generate(MacroAssembler* masm);
@@ -301,7 +301,7 @@
kUpdateRememberedSetOnNoNeedToInformIncrementalMarker
};
- Major MajorKey() const { return RecordWrite; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
void Generate(MacroAssembler* masm);
void GenerateIncremental(MacroAssembler* masm, Mode mode);
@@ -360,7 +360,7 @@
void GenerateCall(MacroAssembler* masm, Register target);
private:
- Major MajorKey() const { return DirectCEntry; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
bool NeedsImmovableCode() { return true; }
@@ -409,7 +409,7 @@
NameDictionary::kHeaderSize +
NameDictionary::kElementsStartIndex * kPointerSize;
- Major MajorKey() const { return NameDictionaryLookup; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
LookupMode mode() const { return LookupModeBits::decode(minor_key_); }
=======================================
--- /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Thu Sep 4
00:06:56 2014 UTC
+++ /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Thu Sep 4
08:59:42 2014 UTC
@@ -602,8 +602,7 @@
}
-static void ICCompareStub_CheckInputType(MacroAssembler* masm,
- Register input,
+static void CompareICStub_CheckInputType(MacroAssembler* masm, Register
input,
Register scratch,
CompareIC::State expected,
Label* fail) {
@@ -624,14 +623,14 @@
// On entry a1 and a2 are the values to be compared.
// On exit a0 is 0, positive or negative to indicate the result of
// the comparison.
-void ICCompareStub::GenerateGeneric(MacroAssembler* masm) {
+void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
Register lhs = a1;
Register rhs = a0;
Condition cc = GetCondition();
Label miss;
- ICCompareStub_CheckInputType(masm, lhs, a2, left(), &miss);
- ICCompareStub_CheckInputType(masm, rhs, a3, right(), &miss);
+ CompareICStub_CheckInputType(masm, lhs, a2, left(), &miss);
+ CompareICStub_CheckInputType(masm, rhs, a3, right(), &miss);
Label slow; // Call builtin.
Label not_smis, both_loaded_as_doubles;
@@ -3558,7 +3557,7 @@
}
-void ICCompareStub::GenerateSmis(MacroAssembler* masm) {
+void CompareICStub::GenerateSmis(MacroAssembler* masm) {
DCHECK(state() == CompareIC::SMI);
Label miss;
__ Or(a2, a1, a0);
@@ -3581,7 +3580,7 @@
}
-void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
+void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
DCHECK(state() == CompareIC::NUMBER);
Label generic_stub;
@@ -3649,7 +3648,7 @@
__ bind(&unordered);
__ bind(&generic_stub);
- ICCompareStub stub(isolate(), op(), CompareIC::GENERIC,
CompareIC::GENERIC,
+ CompareICStub stub(isolate(), op(), CompareIC::GENERIC,
CompareIC::GENERIC,
CompareIC::GENERIC);
__ Jump(stub.GetCode(), RelocInfo::CODE_TARGET);
@@ -3674,7 +3673,7 @@
}
-void ICCompareStub::GenerateInternalizedStrings(MacroAssembler* masm) {
+void CompareICStub::GenerateInternalizedStrings(MacroAssembler* masm) {
DCHECK(state() == CompareIC::INTERNALIZED_STRING);
Label miss;
@@ -3714,7 +3713,7 @@
}
-void ICCompareStub::GenerateUniqueNames(MacroAssembler* masm) {
+void CompareICStub::GenerateUniqueNames(MacroAssembler* masm) {
DCHECK(state() == CompareIC::UNIQUE_NAME);
DCHECK(GetCondition() == eq);
Label miss;
@@ -3758,7 +3757,7 @@
}
-void ICCompareStub::GenerateStrings(MacroAssembler* masm) {
+void CompareICStub::GenerateStrings(MacroAssembler* masm) {
DCHECK(state() == CompareIC::STRING);
Label miss;
@@ -3844,7 +3843,7 @@
}
-void ICCompareStub::GenerateObjects(MacroAssembler* masm) {
+void CompareICStub::GenerateObjects(MacroAssembler* masm) {
DCHECK(state() == CompareIC::OBJECT);
Label miss;
__ And(a2, a1, Operand(a0));
@@ -3864,7 +3863,7 @@
}
-void ICCompareStub::GenerateKnownObjects(MacroAssembler* masm) {
+void CompareICStub::GenerateKnownObjects(MacroAssembler* masm) {
Label miss;
__ And(a2, a1, a0);
__ JumpIfSmi(a2, &miss);
@@ -3881,7 +3880,7 @@
}
-void ICCompareStub::GenerateMiss(MacroAssembler* masm) {
+void CompareICStub::GenerateMiss(MacroAssembler* masm) {
{
// Call the runtime system in a fresh internal frame.
ExternalReference miss =
=======================================
--- /branches/bleeding_edge/src/mips64/code-stubs-mips64.h Thu Sep 4
00:06:56 2014 UTC
+++ /branches/bleeding_edge/src/mips64/code-stubs-mips64.h Thu Sep 4
08:59:42 2014 UTC
@@ -79,7 +79,7 @@
static void GenerateAheadOfTime(Isolate* isolate);
private:
- Major MajorKey() const { return StoreRegistersState; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
uint32_t MinorKey() const { return 0; }
void Generate(MacroAssembler* masm);
@@ -92,7 +92,7 @@
static void GenerateAheadOfTime(Isolate* isolate);
private:
- Major MajorKey() const { return RestoreRegistersState; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
uint32_t MinorKey() const { return 0; }
void Generate(MacroAssembler* masm);
@@ -120,7 +120,7 @@
static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate);
private:
- Major MajorKey() const { return WriteInt32ToHeapNumber; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
void Generate(MacroAssembler* masm);
@@ -300,7 +300,7 @@
kUpdateRememberedSetOnNoNeedToInformIncrementalMarker
};
- Major MajorKey() const { return RecordWrite; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
void Generate(MacroAssembler* masm);
void GenerateIncremental(MacroAssembler* masm, Mode mode);
@@ -359,7 +359,7 @@
void GenerateCall(MacroAssembler* masm, Register target);
private:
- Major MajorKey() const { return DirectCEntry; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
bool NeedsImmovableCode() { return true; }
@@ -408,7 +408,7 @@
NameDictionary::kHeaderSize +
NameDictionary::kElementsStartIndex * kPointerSize;
- Major MajorKey() const { return NameDictionaryLookup; }
+ virtual inline Major MajorKey() const FINAL OVERRIDE;
LookupMode mode() const { return LookupModeBits::decode(minor_key_); }
--
--
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.