Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(348)

Unified Diff: src/arm64/ic-arm64.cc

Issue 352583008: Rollback to Version 3.28.4 (based on bleeding_edge revision r22031) (Closed) Base URL: https://v8.googlecode.com/svn/trunk
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/arm64/lithium-arm64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arm64/ic-arm64.cc
diff --git a/src/arm64/ic-arm64.cc b/src/arm64/ic-arm64.cc
index f1de3fa790fe1a92d653b562b95fc8ddfc97c1f5..d42e68a36cf923421f3c4060314f3b610efb8128 100644
--- a/src/arm64/ic-arm64.cc
+++ b/src/arm64/ic-arm64.cc
@@ -412,8 +412,6 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
// -- lr : return address
// -- x0 : receiver
// -----------------------------------
- ASSERT(x0.is(ReceiverRegister()));
- ASSERT(x2.is(NameRegister()));
// Probe the stub cache.
Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC);
@@ -431,8 +429,6 @@ void LoadIC::GenerateNormal(MacroAssembler* masm) {
// -- lr : return address
// -- x0 : receiver
// -----------------------------------
- ASSERT(x0.is(ReceiverRegister()));
- ASSERT(x2.is(NameRegister()));
Label miss, slow;
GenerateNameDictionaryReceiverCheck(masm, x0, x1, x3, x4, &miss);
@@ -452,14 +448,18 @@ void LoadIC::GenerateNormal(MacroAssembler* masm) {
void LoadIC::GenerateMiss(MacroAssembler* masm) {
- // The return address is on the stack.
+ // ----------- S t a t e -------------
+ // -- x2 : name
+ // -- lr : return address
+ // -- x0 : receiver
+ // -----------------------------------
Isolate* isolate = masm->isolate();
ASM_LOCATION("LoadIC::GenerateMiss");
__ IncrementCounter(isolate->counters()->load_miss(), 1, x3, x4);
// Perform tail call to the entry.
- __ Push(ReceiverRegister(), NameRegister());
+ __ Push(x0, x2);
ExternalReference ref =
ExternalReference(IC_Utility(kLoadIC_Miss), isolate);
__ TailCallExternalReference(ref, 2, 1);
@@ -467,8 +467,13 @@ void LoadIC::GenerateMiss(MacroAssembler* masm) {
void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
- // The return address is on the stack.
- __ Push(ReceiverRegister(), NameRegister());
+ // ---------- S t a t e --------------
+ // -- x2 : name
+ // -- lr : return address
+ // -- x0 : receiver
+ // -----------------------------------
+
+ __ Push(x0, x2);
__ TailCallRuntime(Runtime::kGetProperty, 2, 1);
}
@@ -480,11 +485,8 @@ void KeyedLoadIC::GenerateSloppyArguments(MacroAssembler* masm) {
// -- x1 : receiver
// -----------------------------------
Register result = x0;
- Register receiver = ReceiverRegister();
- Register key = NameRegister();
- ASSERT(receiver.is(x1));
- ASSERT(key.is(x0));
-
+ Register key = x0;
+ Register receiver = x1;
Label miss, unmapped;
Register map_scratch = x2;
@@ -516,6 +518,7 @@ void KeyedStoreIC::GenerateSloppyArguments(MacroAssembler* masm) {
// -- x1 : key
// -- x2 : receiver
// -----------------------------------
+
Label slow, notin;
Register value = x0;
@@ -560,12 +563,16 @@ void KeyedStoreIC::GenerateSloppyArguments(MacroAssembler* masm) {
void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
- // The return address is on the stack.
+ // ---------- S t a t e --------------
+ // -- lr : return address
+ // -- x0 : key
+ // -- x1 : receiver
+ // -----------------------------------
Isolate* isolate = masm->isolate();
__ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, x10, x11);
- __ Push(ReceiverRegister(), NameRegister());
+ __ Push(x1, x0);
// Perform tail call to the entry.
ExternalReference ref =
@@ -583,8 +590,15 @@ const Register KeyedLoadIC::NameRegister() { return x0; }
void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
- // The return address is on the stack.
- __ Push(ReceiverRegister(), NameRegister());
+ // ---------- S t a t e --------------
+ // -- lr : return address
+ // -- x0 : key
+ // -- x1 : receiver
+ // -----------------------------------
+ Register key = x0;
+ Register receiver = x1;
+
+ __ Push(receiver, key);
__ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1);
}
@@ -760,10 +774,8 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
// -----------------------------------
Label slow, check_name, index_smi, index_name;
- Register key = NameRegister();
- Register receiver = ReceiverRegister();
- ASSERT(key.is(x0));
- ASSERT(receiver.is(x1));
+ Register key = x0;
+ Register receiver = x1;
__ JumpIfNotSmi(key, &check_name);
__ Bind(&index_smi);
@@ -790,14 +802,17 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
- // Return address is on the stack.
+ // ---------- S t a t e --------------
+ // -- lr : return address
+ // -- x0 : key (index)
+ // -- x1 : receiver
+ // -----------------------------------
Label miss;
- Register receiver = ReceiverRegister();
- Register index = NameRegister();
+ Register index = x0;
+ Register receiver = x1;
Register result = x0;
Register scratch = x3;
- ASSERT(!scratch.is(receiver) && !scratch.is(index));
StringCharAtGenerator char_at_generator(receiver,
index,
@@ -819,15 +834,14 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
- // Return address is on the stack.
+ // ---------- S t a t e --------------
+ // -- lr : return address
+ // -- x0 : key
+ // -- x1 : receiver
+ // -----------------------------------
Label slow;
-
- Register receiver = ReceiverRegister();
- Register key = NameRegister();
- Register scratch1 = x2;
- Register scratch2 = x3;
- ASSERT(!scratch1.is(receiver) && !scratch1.is(key));
- ASSERT(!scratch2.is(receiver) && !scratch2.is(key));
+ Register key = x0;
+ Register receiver = x1;
// Check that the receiver isn't a smi.
__ JumpIfSmi(receiver, &slow);
@@ -836,16 +850,16 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
__ TestAndBranchIfAnySet(key, kSmiTagMask | kSmiSignMask, &slow);
// Get the map of the receiver.
- Register map = scratch1;
+ Register map = x2;
__ Ldr(map, FieldMemOperand(receiver, HeapObject::kMapOffset));
// Check that it has indexed interceptor and access checks
// are not enabled for this object.
- __ Ldrb(scratch2, FieldMemOperand(map, Map::kBitFieldOffset));
+ __ Ldrb(x3, FieldMemOperand(map, Map::kBitFieldOffset));
ASSERT(kSlowCaseBitFieldMask ==
((1 << Map::kIsAccessCheckNeeded) | (1 << Map::kHasIndexedInterceptor)));
- __ Tbnz(scratch2, Map::kIsAccessCheckNeeded, &slow);
- __ Tbz(scratch2, Map::kHasIndexedInterceptor, &slow);
+ __ Tbnz(x3, Map::kIsAccessCheckNeeded, &slow);
+ __ Tbz(x3, Map::kHasIndexedInterceptor, &slow);
// Everything is fine, call runtime.
__ Push(receiver, key);
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/arm64/lithium-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698