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

Side by Side Diff: src/arm/macro-assembler-arm.h

Issue 2523473002: [cleanup] Drop handwritten KeyedStoreIC code (Closed)
Patch Set: rebased Created 4 years 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
« no previous file with comments | « src/arm/codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_ 5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_
6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/frames.h" 10 #include "src/frames.h"
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 // Load the global object from the current context. 628 // Load the global object from the current context.
629 void LoadGlobalObject(Register dst) { 629 void LoadGlobalObject(Register dst) {
630 LoadNativeContextSlot(Context::EXTENSION_INDEX, dst); 630 LoadNativeContextSlot(Context::EXTENSION_INDEX, dst);
631 } 631 }
632 632
633 // Load the global proxy from the current context. 633 // Load the global proxy from the current context.
634 void LoadGlobalProxy(Register dst) { 634 void LoadGlobalProxy(Register dst) {
635 LoadNativeContextSlot(Context::GLOBAL_PROXY_INDEX, dst); 635 LoadNativeContextSlot(Context::GLOBAL_PROXY_INDEX, dst);
636 } 636 }
637 637
638 // Conditionally load the cached Array transitioned map of type
639 // transitioned_kind from the native context if the map in register
640 // map_in_out is the cached Array map in the native context of
641 // expected_kind.
642 void LoadTransitionedArrayMapConditional(
643 ElementsKind expected_kind,
644 ElementsKind transitioned_kind,
645 Register map_in_out,
646 Register scratch,
647 Label* no_map_match);
648
649 void LoadNativeContextSlot(int index, Register dst); 638 void LoadNativeContextSlot(int index, Register dst);
650 639
651 // Load the initial map from the global function. The registers 640 // Load the initial map from the global function. The registers
652 // function and map can be the same, function is then overwritten. 641 // function and map can be the same, function is then overwritten.
653 void LoadGlobalFunctionInitialMap(Register function, 642 void LoadGlobalFunctionInitialMap(Register function,
654 Register map, 643 Register map,
655 Register scratch); 644 Register scratch);
656 645
657 void InitializeRootRegister() { 646 void InitializeRootRegister() {
658 ExternalReference roots_array_start = 647 ExternalReference roots_array_start =
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 Register type_reg, 866 Register type_reg,
878 InstanceType type); 867 InstanceType type);
879 868
880 // Compare instance type in a map. map contains a valid map object whose 869 // Compare instance type in a map. map contains a valid map object whose
881 // object type should be compared with the given type. This both 870 // object type should be compared with the given type. This both
882 // sets the flags and leaves the object type in the type_reg register. 871 // sets the flags and leaves the object type in the type_reg register.
883 void CompareInstanceType(Register map, 872 void CompareInstanceType(Register map,
884 Register type_reg, 873 Register type_reg,
885 InstanceType type); 874 InstanceType type);
886 875
887 // Check if a map for a JSObject indicates that the object can have both smi
888 // and HeapObject elements. Jump to the specified label if it does not.
889 void CheckFastObjectElements(Register map,
890 Register scratch,
891 Label* fail);
892
893 // Check if a map for a JSObject indicates that the object has fast smi only
894 // elements. Jump to the specified label if it does not.
895 void CheckFastSmiElements(Register map,
896 Register scratch,
897 Label* fail);
898
899 // Check to see if maybe_number can be stored as a double in
900 // FastDoubleElements. If it can, store it at the index specified by key in
901 // the FastDoubleElements array elements. Otherwise jump to fail.
902 void StoreNumberToDoubleElements(Register value_reg,
903 Register key_reg,
904 Register elements_reg,
905 Register scratch1,
906 LowDwVfpRegister double_scratch,
907 Label* fail,
908 int elements_offset = 0);
909
910 // Compare an object's map with the specified map and its transitioned 876 // Compare an object's map with the specified map and its transitioned
911 // elements maps if mode is ALLOW_ELEMENT_TRANSITION_MAPS. Condition flags are 877 // elements maps if mode is ALLOW_ELEMENT_TRANSITION_MAPS. Condition flags are
912 // set with result of map compare. If multiple map compares are required, the 878 // set with result of map compare. If multiple map compares are required, the
913 // compare sequences branches to early_success. 879 // compare sequences branches to early_success.
914 void CompareMap(Register obj, 880 void CompareMap(Register obj,
915 Register scratch, 881 Register scratch,
916 Handle<Map> map, 882 Handle<Map> map,
917 Label* early_success); 883 Label* early_success);
918 884
919 // As above, but the map of the object is already loaded into the register 885 // As above, but the map of the object is already loaded into the register
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
1280 mov(reg, Operand::SmiUntag(reg), s); 1246 mov(reg, Operand::SmiUntag(reg), s);
1281 } 1247 }
1282 void SmiUntag(Register dst, Register src, SBit s = LeaveCC) { 1248 void SmiUntag(Register dst, Register src, SBit s = LeaveCC) {
1283 mov(dst, Operand::SmiUntag(src), s); 1249 mov(dst, Operand::SmiUntag(src), s);
1284 } 1250 }
1285 1251
1286 // Untag the source value into destination and jump if source is a smi. 1252 // Untag the source value into destination and jump if source is a smi.
1287 // Souce and destination can be the same register. 1253 // Souce and destination can be the same register.
1288 void UntagAndJumpIfSmi(Register dst, Register src, Label* smi_case); 1254 void UntagAndJumpIfSmi(Register dst, Register src, Label* smi_case);
1289 1255
1290 // Untag the source value into destination and jump if source is not a smi.
1291 // Souce and destination can be the same register.
1292 void UntagAndJumpIfNotSmi(Register dst, Register src, Label* non_smi_case);
1293
1294 // Test if the register contains a smi (Z == 0 (eq) if true). 1256 // Test if the register contains a smi (Z == 0 (eq) if true).
1295 inline void SmiTst(Register value) { 1257 inline void SmiTst(Register value) {
1296 tst(value, Operand(kSmiTagMask)); 1258 tst(value, Operand(kSmiTagMask));
1297 } 1259 }
1298 inline void NonNegativeSmiTst(Register value) { 1260 inline void NonNegativeSmiTst(Register value) {
1299 tst(value, Operand(kSmiTagMask | kSmiSignMask)); 1261 tst(value, Operand(kSmiTagMask | kSmiSignMask));
1300 } 1262 }
1301 // Jump if the register contains a smi. 1263 // Jump if the register contains a smi.
1302 inline void JumpIfSmi(Register value, Label* smi_label) { 1264 inline void JumpIfSmi(Register value, Label* smi_label) {
1303 tst(value, Operand(kSmiTagMask)); 1265 tst(value, Operand(kSmiTagMask));
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1457 // AllocationMemento support. Arrays may have an associated 1419 // AllocationMemento support. Arrays may have an associated
1458 // AllocationMemento object that can be checked for in order to pretransition 1420 // AllocationMemento object that can be checked for in order to pretransition
1459 // to another type. 1421 // to another type.
1460 // On entry, receiver_reg should point to the array object. 1422 // On entry, receiver_reg should point to the array object.
1461 // scratch_reg gets clobbered. 1423 // scratch_reg gets clobbered.
1462 // If allocation info is present, condition flags are set to eq. 1424 // If allocation info is present, condition flags are set to eq.
1463 void TestJSArrayForAllocationMemento(Register receiver_reg, 1425 void TestJSArrayForAllocationMemento(Register receiver_reg,
1464 Register scratch_reg, 1426 Register scratch_reg,
1465 Label* no_memento_found); 1427 Label* no_memento_found);
1466 1428
1467 void JumpIfJSArrayHasAllocationMemento(Register receiver_reg,
1468 Register scratch_reg,
1469 Label* memento_found) {
1470 Label no_memento_found;
1471 TestJSArrayForAllocationMemento(receiver_reg, scratch_reg,
1472 &no_memento_found);
1473 b(eq, memento_found);
1474 bind(&no_memento_found);
1475 }
1476
1477 // Jumps to found label if a prototype map has dictionary elements.
1478 void JumpIfDictionaryInPrototypeChain(Register object, Register scratch0,
1479 Register scratch1, Label* found);
1480
1481 // Loads the constant pool pointer (pp) register. 1429 // Loads the constant pool pointer (pp) register.
1482 void LoadConstantPoolPointerRegisterFromCodeTargetAddress( 1430 void LoadConstantPoolPointerRegisterFromCodeTargetAddress(
1483 Register code_target_address); 1431 Register code_target_address);
1484 void LoadConstantPoolPointerRegister(); 1432 void LoadConstantPoolPointerRegister();
1485 1433
1486 private: 1434 private:
1487 void CallCFunctionHelper(Register function, 1435 void CallCFunctionHelper(Register function,
1488 int num_reg_arguments, 1436 int num_reg_arguments,
1489 int num_double_arguments); 1437 int num_double_arguments);
1490 1438
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 inline MemOperand NativeContextMemOperand() { 1539 inline MemOperand NativeContextMemOperand() {
1592 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); 1540 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX);
1593 } 1541 }
1594 1542
1595 #define ACCESS_MASM(masm) masm-> 1543 #define ACCESS_MASM(masm) masm->
1596 1544
1597 } // namespace internal 1545 } // namespace internal
1598 } // namespace v8 1546 } // namespace v8
1599 1547
1600 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 1548 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « src/arm/codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698