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

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

Issue 2523473002: [cleanup] Drop handwritten KeyedStoreIC code (Closed)
Patch Set: rebased Created 4 years, 1 month 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/mips/codegen-mips.cc ('k') | src/mips/macro-assembler-mips.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_MIPS_MACRO_ASSEMBLER_MIPS_H_ 5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/globals.h" 9 #include "src/globals.h"
10 #include "src/mips/assembler-mips.h" 10 #include "src/mips/assembler-mips.h"
(...skipping 1019 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 // Load the global object from the current context. 1030 // Load the global object from the current context.
1031 void LoadGlobalObject(Register dst) { 1031 void LoadGlobalObject(Register dst) {
1032 LoadNativeContextSlot(Context::EXTENSION_INDEX, dst); 1032 LoadNativeContextSlot(Context::EXTENSION_INDEX, dst);
1033 } 1033 }
1034 1034
1035 // Load the global proxy from the current context. 1035 // Load the global proxy from the current context.
1036 void LoadGlobalProxy(Register dst) { 1036 void LoadGlobalProxy(Register dst) {
1037 LoadNativeContextSlot(Context::GLOBAL_PROXY_INDEX, dst); 1037 LoadNativeContextSlot(Context::GLOBAL_PROXY_INDEX, dst);
1038 } 1038 }
1039 1039
1040 // Conditionally load the cached Array transitioned map of type
1041 // transitioned_kind from the native context if the map in register
1042 // map_in_out is the cached Array map in the native context of
1043 // expected_kind.
1044 void LoadTransitionedArrayMapConditional(
1045 ElementsKind expected_kind,
1046 ElementsKind transitioned_kind,
1047 Register map_in_out,
1048 Register scratch,
1049 Label* no_map_match);
1050
1051 void LoadNativeContextSlot(int index, Register dst); 1040 void LoadNativeContextSlot(int index, Register dst);
1052 1041
1053 // Load the initial map from the global function. The registers 1042 // Load the initial map from the global function. The registers
1054 // function and map can be the same, function is then overwritten. 1043 // function and map can be the same, function is then overwritten.
1055 void LoadGlobalFunctionInitialMap(Register function, 1044 void LoadGlobalFunctionInitialMap(Register function,
1056 Register map, 1045 Register map,
1057 Register scratch); 1046 Register scratch);
1058 1047
1059 void InitializeRootRegister() { 1048 void InitializeRootRegister() {
1060 ExternalReference roots_array_start = 1049 ExternalReference roots_array_start =
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 1140
1152 void GetObjectType(Register function, 1141 void GetObjectType(Register function,
1153 Register map, 1142 Register map,
1154 Register type_reg); 1143 Register type_reg);
1155 1144
1156 void GetInstanceType(Register object_map, Register object_instance_type) { 1145 void GetInstanceType(Register object_map, Register object_instance_type) {
1157 lbu(object_instance_type, 1146 lbu(object_instance_type,
1158 FieldMemOperand(object_map, Map::kInstanceTypeOffset)); 1147 FieldMemOperand(object_map, Map::kInstanceTypeOffset));
1159 } 1148 }
1160 1149
1161 // Check if a map for a JSObject indicates that the object can have both smi
1162 // and HeapObject elements. Jump to the specified label if it does not.
1163 void CheckFastObjectElements(Register map,
1164 Register scratch,
1165 Label* fail);
1166
1167 // Check if a map for a JSObject indicates that the object has fast smi only
1168 // elements. Jump to the specified label if it does not.
1169 void CheckFastSmiElements(Register map,
1170 Register scratch,
1171 Label* fail);
1172
1173 // Check to see if maybe_number can be stored as a double in
1174 // FastDoubleElements. If it can, store it at the index specified by key in
1175 // the FastDoubleElements array elements. Otherwise jump to fail.
1176 void StoreNumberToDoubleElements(Register value_reg,
1177 Register key_reg,
1178 Register elements_reg,
1179 Register scratch1,
1180 Register scratch2,
1181 Register scratch3,
1182 Label* fail,
1183 int elements_offset = 0);
1184
1185 // Compare an object's map with the specified map and its transitioned 1150 // Compare an object's map with the specified map and its transitioned
1186 // elements maps if mode is ALLOW_ELEMENT_TRANSITION_MAPS. Jumps to 1151 // elements maps if mode is ALLOW_ELEMENT_TRANSITION_MAPS. Jumps to
1187 // "branch_to" if the result of the comparison is "cond". If multiple map 1152 // "branch_to" if the result of the comparison is "cond". If multiple map
1188 // compares are required, the compare sequences branches to early_success. 1153 // compares are required, the compare sequences branches to early_success.
1189 void CompareMapAndBranch(Register obj, 1154 void CompareMapAndBranch(Register obj,
1190 Register scratch, 1155 Register scratch,
1191 Handle<Map> map, 1156 Handle<Map> map,
1192 Label* early_success, 1157 Label* early_success,
1193 Condition cond, 1158 Condition cond,
1194 Label* branch_to); 1159 Label* branch_to);
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 And(scratch, value, Operand(kSmiTagMask)); 1515 And(scratch, value, Operand(kSmiTagMask));
1551 } 1516 }
1552 inline void NonNegativeSmiTst(Register value, Register scratch) { 1517 inline void NonNegativeSmiTst(Register value, Register scratch) {
1553 And(scratch, value, Operand(kSmiTagMask | kSmiSignMask)); 1518 And(scratch, value, Operand(kSmiTagMask | kSmiSignMask));
1554 } 1519 }
1555 1520
1556 // Untag the source value into destination and jump if source is a smi. 1521 // Untag the source value into destination and jump if source is a smi.
1557 // Souce and destination can be the same register. 1522 // Souce and destination can be the same register.
1558 void UntagAndJumpIfSmi(Register dst, Register src, Label* smi_case); 1523 void UntagAndJumpIfSmi(Register dst, Register src, Label* smi_case);
1559 1524
1560 // Untag the source value into destination and jump if source is not a smi.
1561 // Souce and destination can be the same register.
1562 void UntagAndJumpIfNotSmi(Register dst, Register src, Label* non_smi_case);
1563
1564 // Jump the register contains a smi. 1525 // Jump the register contains a smi.
1565 void JumpIfSmi(Register value, 1526 void JumpIfSmi(Register value,
1566 Label* smi_label, 1527 Label* smi_label,
1567 Register scratch = at, 1528 Register scratch = at,
1568 BranchDelaySlot bd = PROTECT); 1529 BranchDelaySlot bd = PROTECT);
1569 1530
1570 // Jump if the register contains a non-smi. 1531 // Jump if the register contains a non-smi.
1571 void JumpIfNotSmi(Register value, 1532 void JumpIfNotSmi(Register value,
1572 Label* not_smi_label, 1533 Label* not_smi_label,
1573 Register scratch = at, 1534 Register scratch = at,
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1724 1685
1725 // AllocationMemento support. Arrays may have an associated AllocationMemento 1686 // AllocationMemento support. Arrays may have an associated AllocationMemento
1726 // object that can be checked for in order to pretransition to another type. 1687 // object that can be checked for in order to pretransition to another type.
1727 // On entry, receiver_reg should point to the array object. scratch_reg gets 1688 // On entry, receiver_reg should point to the array object. scratch_reg gets
1728 // clobbered. If no info is present jump to no_memento_found, otherwise fall 1689 // clobbered. If no info is present jump to no_memento_found, otherwise fall
1729 // through. 1690 // through.
1730 void TestJSArrayForAllocationMemento(Register receiver_reg, 1691 void TestJSArrayForAllocationMemento(Register receiver_reg,
1731 Register scratch_reg, 1692 Register scratch_reg,
1732 Label* no_memento_found); 1693 Label* no_memento_found);
1733 1694
1734 void JumpIfJSArrayHasAllocationMemento(Register receiver_reg,
1735 Register scratch_reg,
1736 Label* memento_found) {
1737 Label no_memento_found;
1738 TestJSArrayForAllocationMemento(receiver_reg, scratch_reg,
1739 &no_memento_found);
1740 Branch(memento_found);
1741 bind(&no_memento_found);
1742 }
1743
1744 // Jumps to found label if a prototype map has dictionary elements.
1745 void JumpIfDictionaryInPrototypeChain(Register object, Register scratch0,
1746 Register scratch1, Label* found);
1747
1748 bool IsDoubleZeroRegSet() { return has_double_zero_reg_set_; } 1695 bool IsDoubleZeroRegSet() { return has_double_zero_reg_set_; }
1749 1696
1750 private: 1697 private:
1751 void CallCFunctionHelper(Register function, 1698 void CallCFunctionHelper(Register function,
1752 int num_reg_arguments, 1699 int num_reg_arguments,
1753 int num_double_arguments); 1700 int num_double_arguments);
1754 1701
1755 inline Register GetRtAsRegisterHelper(const Operand& rt, Register scratch); 1702 inline Register GetRtAsRegisterHelper(const Operand& rt, Register scratch);
1756 inline int32_t GetOffset(int32_t offset, Label* L, OffsetSize bits); 1703 inline int32_t GetOffset(int32_t offset, Label* L, OffsetSize bits);
1757 void BranchShortHelperR6(int32_t offset, Label* L); 1704 void BranchShortHelperR6(int32_t offset, Label* L);
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1892 dd(GetLabelFunction(index)); 1839 dd(GetLabelFunction(index));
1893 } 1840 }
1894 } 1841 }
1895 1842
1896 #define ACCESS_MASM(masm) masm-> 1843 #define ACCESS_MASM(masm) masm->
1897 1844
1898 } // namespace internal 1845 } // namespace internal
1899 } // namespace v8 1846 } // namespace v8
1900 1847
1901 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 1848 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/codegen-mips.cc ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698