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

Side by Side Diff: src/crankshaft/arm64/lithium-arm64.cc

Issue 2019313003: IC: Eliminate initialization_state as a factor in IC installation. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed compile error. Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/crankshaft/arm64/lithium-arm64.h" 5 #include "src/crankshaft/arm64/lithium-arm64.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" 9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h"
10 #include "src/crankshaft/hydrogen-osr.h" 10 #include "src/crankshaft/hydrogen-osr.h"
(...skipping 1537 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 LOperand* temp = TempRegister(); 1548 LOperand* temp = TempRegister();
1549 return AssignEnvironment(DefineAsRegister( 1549 return AssignEnvironment(DefineAsRegister(
1550 new(zone()) LLoadFunctionPrototype(function, temp))); 1550 new(zone()) LLoadFunctionPrototype(function, temp)));
1551 } 1551 }
1552 1552
1553 1553
1554 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { 1554 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) {
1555 LOperand* context = UseFixed(instr->context(), cp); 1555 LOperand* context = UseFixed(instr->context(), cp);
1556 LOperand* global_object = 1556 LOperand* global_object =
1557 UseFixed(instr->global_object(), LoadDescriptor::ReceiverRegister()); 1557 UseFixed(instr->global_object(), LoadDescriptor::ReceiverRegister());
1558 LOperand* vector = NULL; 1558 LOperand* vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister());
1559 if (instr->HasVectorAndSlot()) {
1560 vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister());
1561 }
1562 1559
1563 LLoadGlobalGeneric* result = 1560 LLoadGlobalGeneric* result =
1564 new(zone()) LLoadGlobalGeneric(context, global_object, vector); 1561 new(zone()) LLoadGlobalGeneric(context, global_object, vector);
1565 return MarkAsCall(DefineFixed(result, x0), instr); 1562 return MarkAsCall(DefineFixed(result, x0), instr);
1566 } 1563 }
1567 1564
1568 1565
1569 LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) { 1566 LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) {
1570 DCHECK(instr->key()->representation().IsSmiOrInteger32()); 1567 DCHECK(instr->key()->representation().IsSmiOrInteger32());
1571 ElementsKind elements_kind = instr->elements_kind(); 1568 ElementsKind elements_kind = instr->elements_kind();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 return result; 1611 return result;
1615 } 1612 }
1616 } 1613 }
1617 1614
1618 1615
1619 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { 1616 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) {
1620 LOperand* context = UseFixed(instr->context(), cp); 1617 LOperand* context = UseFixed(instr->context(), cp);
1621 LOperand* object = 1618 LOperand* object =
1622 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); 1619 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
1623 LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister()); 1620 LOperand* key = UseFixed(instr->key(), LoadDescriptor::NameRegister());
1624 LOperand* vector = NULL; 1621 LOperand* vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister());
1625 if (instr->HasVectorAndSlot()) {
1626 vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister());
1627 }
1628 1622
1629 LInstruction* result = 1623 LInstruction* result =
1630 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key, vector), 1624 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key, vector),
1631 x0); 1625 x0);
1632 return MarkAsCall(result, instr); 1626 return MarkAsCall(result, instr);
1633 } 1627 }
1634 1628
1635 1629
1636 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { 1630 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) {
1637 LOperand* object = UseRegisterAtStart(instr->object()); 1631 LOperand* object = UseRegisterAtStart(instr->object());
1638 return DefineAsRegister(new(zone()) LLoadNamedField(object)); 1632 return DefineAsRegister(new(zone()) LLoadNamedField(object));
1639 } 1633 }
1640 1634
1641 1635
1642 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { 1636 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) {
1643 LOperand* context = UseFixed(instr->context(), cp); 1637 LOperand* context = UseFixed(instr->context(), cp);
1644 LOperand* object = 1638 LOperand* object =
1645 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister()); 1639 UseFixed(instr->object(), LoadDescriptor::ReceiverRegister());
1646 LOperand* vector = NULL; 1640 LOperand* vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister());
1647 if (instr->HasVectorAndSlot()) {
1648 vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister());
1649 }
1650 1641
1651 LInstruction* result = 1642 LInstruction* result =
1652 DefineFixed(new(zone()) LLoadNamedGeneric(context, object, vector), x0); 1643 DefineFixed(new(zone()) LLoadNamedGeneric(context, object, vector), x0);
1653 return MarkAsCall(result, instr); 1644 return MarkAsCall(result, instr);
1654 } 1645 }
1655 1646
1656 1647
1657 LInstruction* LChunkBuilder::DoLoadRoot(HLoadRoot* instr) { 1648 LInstruction* LChunkBuilder::DoLoadRoot(HLoadRoot* instr) {
1658 return DefineAsRegister(new(zone()) LLoadRoot); 1649 return DefineAsRegister(new(zone()) LLoadRoot);
1659 } 1650 }
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
2239 LOperand* context = UseFixed(instr->context(), cp); 2230 LOperand* context = UseFixed(instr->context(), cp);
2240 LOperand* object = 2231 LOperand* object =
2241 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); 2232 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister());
2242 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister()); 2233 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister());
2243 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); 2234 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister());
2244 2235
2245 DCHECK(instr->object()->representation().IsTagged()); 2236 DCHECK(instr->object()->representation().IsTagged());
2246 DCHECK(instr->key()->representation().IsTagged()); 2237 DCHECK(instr->key()->representation().IsTagged());
2247 DCHECK(instr->value()->representation().IsTagged()); 2238 DCHECK(instr->value()->representation().IsTagged());
2248 2239
2249 LOperand* slot = NULL; 2240 LOperand* slot = FixedTemp(VectorStoreICDescriptor::SlotRegister());
2250 LOperand* vector = NULL; 2241 LOperand* vector = FixedTemp(VectorStoreICDescriptor::VectorRegister());
2251 if (instr->HasVectorAndSlot()) {
2252 slot = FixedTemp(VectorStoreICDescriptor::SlotRegister());
2253 vector = FixedTemp(VectorStoreICDescriptor::VectorRegister());
2254 }
2255 2242
2256 LStoreKeyedGeneric* result = new (zone()) 2243 LStoreKeyedGeneric* result = new (zone())
2257 LStoreKeyedGeneric(context, object, key, value, slot, vector); 2244 LStoreKeyedGeneric(context, object, key, value, slot, vector);
2258 return MarkAsCall(result, instr); 2245 return MarkAsCall(result, instr);
2259 } 2246 }
2260 2247
2261 2248
2262 LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { 2249 LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) {
2263 // TODO(jbramley): It might be beneficial to allow value to be a constant in 2250 // TODO(jbramley): It might be beneficial to allow value to be a constant in
2264 // some cases. x64 makes use of this with FLAG_track_fields, for example. 2251 // some cases. x64 makes use of this with FLAG_track_fields, for example.
(...skipping 22 matching lines...) Expand all
2287 return new(zone()) LStoreNamedField(object, value, temp0, temp1); 2274 return new(zone()) LStoreNamedField(object, value, temp0, temp1);
2288 } 2275 }
2289 2276
2290 2277
2291 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { 2278 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) {
2292 LOperand* context = UseFixed(instr->context(), cp); 2279 LOperand* context = UseFixed(instr->context(), cp);
2293 LOperand* object = 2280 LOperand* object =
2294 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); 2281 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister());
2295 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); 2282 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister());
2296 2283
2297 LOperand* slot = NULL; 2284 LOperand* slot = FixedTemp(VectorStoreICDescriptor::SlotRegister());
2298 LOperand* vector = NULL; 2285 LOperand* vector = FixedTemp(VectorStoreICDescriptor::VectorRegister());
2299 if (instr->HasVectorAndSlot()) {
2300 slot = FixedTemp(VectorStoreICDescriptor::SlotRegister());
2301 vector = FixedTemp(VectorStoreICDescriptor::VectorRegister());
2302 }
2303 2286
2304 LStoreNamedGeneric* result = 2287 LStoreNamedGeneric* result =
2305 new (zone()) LStoreNamedGeneric(context, object, value, slot, vector); 2288 new (zone()) LStoreNamedGeneric(context, object, value, slot, vector);
2306 return MarkAsCall(result, instr); 2289 return MarkAsCall(result, instr);
2307 } 2290 }
2308 2291
2309 2292
2310 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { 2293 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) {
2311 LOperand* context = UseFixed(instr->context(), cp); 2294 LOperand* context = UseFixed(instr->context(), cp);
2312 LOperand* left = UseFixed(instr->left(), x1); 2295 LOperand* left = UseFixed(instr->left(), x1);
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
2610 2593
2611 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { 2594 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) {
2612 LOperand* receiver = UseRegister(instr->receiver()); 2595 LOperand* receiver = UseRegister(instr->receiver());
2613 LOperand* function = UseRegister(instr->function()); 2596 LOperand* function = UseRegister(instr->function());
2614 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); 2597 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function);
2615 return AssignEnvironment(DefineAsRegister(result)); 2598 return AssignEnvironment(DefineAsRegister(result));
2616 } 2599 }
2617 2600
2618 } // namespace internal 2601 } // namespace internal
2619 } // namespace v8 2602 } // namespace v8
OLDNEW
« no previous file with comments | « src/crankshaft/arm/lithium-codegen-arm.cc ('k') | src/crankshaft/arm64/lithium-codegen-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698