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

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

Issue 324093002: ARM/ARM64: Optimise HLoadNamedField and HStoreNamedField. Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Upload the correct patch (minor diff in hydrogen.h) 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 unified diff | Download patch | Annotate | Revision Log
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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/lithium-allocator-inl.h" 7 #include "src/lithium-allocator-inl.h"
8 #include "src/arm64/lithium-arm64.h" 8 #include "src/arm64/lithium-arm64.h"
9 #include "src/arm64/lithium-codegen-arm64.h" 9 #include "src/arm64/lithium-codegen-arm64.h"
10 #include "src/hydrogen-osr.h" 10 #include "src/hydrogen-osr.h"
(...skipping 1707 matching lines...) Expand 10 before | Expand all | Expand 10 after
1718 LOperand* key = UseFixed(instr->key(), x0); 1718 LOperand* key = UseFixed(instr->key(), x0);
1719 1719
1720 LInstruction* result = 1720 LInstruction* result =
1721 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key), x0); 1721 DefineFixed(new(zone()) LLoadKeyedGeneric(context, object, key), x0);
1722 return MarkAsCall(result, instr); 1722 return MarkAsCall(result, instr);
1723 } 1723 }
1724 1724
1725 1725
1726 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { 1726 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) {
1727 LOperand* object = UseRegisterAtStart(instr->object()); 1727 LOperand* object = UseRegisterAtStart(instr->object());
1728 return DefineAsRegister(new(zone()) LLoadNamedField(object)); 1728 HValue* h_obj_properties = instr->object_properties();
1729 LOperand* obj_properties =
1730 (h_obj_properties != NULL) ? UseRegisterAtStart(h_obj_properties) : NULL;
1731
1732 return DefineAsRegister(new(zone()) LLoadNamedField(object, obj_properties));
1729 } 1733 }
1730 1734
1731 1735
1732 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { 1736 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) {
1733 LOperand* context = UseFixed(instr->context(), cp); 1737 LOperand* context = UseFixed(instr->context(), cp);
1734 LOperand* object = UseFixed(instr->object(), x0); 1738 LOperand* object = UseFixed(instr->object(), x0);
1735 LInstruction* result = 1739 LInstruction* result =
1736 DefineFixed(new(zone()) LLoadNamedGeneric(context, object), x0); 1740 DefineFixed(new(zone()) LLoadNamedGeneric(context, object), x0);
1737 return MarkAsCall(result, instr); 1741 return MarkAsCall(result, instr);
1738 } 1742 }
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
2388 temp1 = TempRegister(); 2392 temp1 = TempRegister();
2389 } else if (instr->NeedsWriteBarrierForMap()) { 2393 } else if (instr->NeedsWriteBarrierForMap()) {
2390 value = UseRegister(instr->value()); 2394 value = UseRegister(instr->value());
2391 temp0 = TempRegister(); 2395 temp0 = TempRegister();
2392 temp1 = TempRegister(); 2396 temp1 = TempRegister();
2393 } else { 2397 } else {
2394 value = UseRegister(instr->value()); 2398 value = UseRegister(instr->value());
2395 temp0 = TempRegister(); 2399 temp0 = TempRegister();
2396 } 2400 }
2397 2401
2398 return new(zone()) LStoreNamedField(object, value, temp0, temp1); 2402 HValue* h_obj_properties = instr->object_properties();
2403 LOperand* obj_properties =
2404 (h_obj_properties != NULL) ? UseRegister(h_obj_properties) : NULL;
2405
2406 return new(zone())
2407 LStoreNamedField(object, value, temp0, temp1, obj_properties);
2399 } 2408 }
2400 2409
2401 2410
2402 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { 2411 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) {
2403 LOperand* context = UseFixed(instr->context(), cp); 2412 LOperand* context = UseFixed(instr->context(), cp);
2404 LOperand* object = UseFixed(instr->object(), x1); 2413 LOperand* object = UseFixed(instr->object(), x1);
2405 LOperand* value = UseFixed(instr->value(), x0); 2414 LOperand* value = UseFixed(instr->value(), x0);
2406 LInstruction* result = new(zone()) LStoreNamedGeneric(context, object, value); 2415 LInstruction* result = new(zone()) LStoreNamedGeneric(context, object, value);
2407 return MarkAsCall(result, instr); 2416 return MarkAsCall(result, instr);
2408 } 2417 }
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
2716 HAllocateBlockContext* instr) { 2725 HAllocateBlockContext* instr) {
2717 LOperand* context = UseFixed(instr->context(), cp); 2726 LOperand* context = UseFixed(instr->context(), cp);
2718 LOperand* function = UseRegisterAtStart(instr->function()); 2727 LOperand* function = UseRegisterAtStart(instr->function());
2719 LAllocateBlockContext* result = 2728 LAllocateBlockContext* result =
2720 new(zone()) LAllocateBlockContext(context, function); 2729 new(zone()) LAllocateBlockContext(context, function);
2721 return MarkAsCall(DefineFixed(result, cp), instr); 2730 return MarkAsCall(DefineFixed(result, cp), instr);
2722 } 2731 }
2723 2732
2724 2733
2725 } } // namespace v8::internal 2734 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698