OLD | NEW |
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 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 | 497 |
498 // Generate code for checking access rights - used for security checks | 498 // Generate code for checking access rights - used for security checks |
499 // on access to global objects across environments. The holder register | 499 // on access to global objects across environments. The holder register |
500 // is left untouched, whereas both scratch registers are clobbered. | 500 // is left untouched, whereas both scratch registers are clobbered. |
501 void CheckAccessGlobalProxy(Register holder_reg, | 501 void CheckAccessGlobalProxy(Register holder_reg, |
502 Register scratch, | 502 Register scratch, |
503 Label* miss); | 503 Label* miss); |
504 | 504 |
505 void GetNumberHash(Register reg0, Register scratch); | 505 void GetNumberHash(Register reg0, Register scratch); |
506 | 506 |
507 void LoadFromNumberDictionary(Label* miss, | |
508 Register elements, | |
509 Register key, | |
510 Register result, | |
511 Register reg0, | |
512 Register reg1, | |
513 Register reg2); | |
514 | |
515 | |
516 inline void MarkCode(NopMarkerTypes type) { | 507 inline void MarkCode(NopMarkerTypes type) { |
517 nop(type); | 508 nop(type); |
518 } | 509 } |
519 | 510 |
520 // Check if the given instruction is a 'type' marker. | 511 // Check if the given instruction is a 'type' marker. |
521 // i.e. check if it is a sll zero_reg, zero_reg, <type> (referenced as | 512 // i.e. check if it is a sll zero_reg, zero_reg, <type> (referenced as |
522 // nop(type)). These instructions are generated to mark special location in | 513 // nop(type)). These instructions are generated to mark special location in |
523 // the code, like some special IC code. | 514 // the code, like some special IC code. |
524 static inline bool IsMarkedCode(Instr instr, int type) { | 515 static inline bool IsMarkedCode(Instr instr, int type) { |
525 DCHECK((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); | 516 DCHECK((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); |
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1173 | 1164 |
1174 void GetObjectType(Register function, | 1165 void GetObjectType(Register function, |
1175 Register map, | 1166 Register map, |
1176 Register type_reg); | 1167 Register type_reg); |
1177 | 1168 |
1178 void GetInstanceType(Register object_map, Register object_instance_type) { | 1169 void GetInstanceType(Register object_map, Register object_instance_type) { |
1179 lbu(object_instance_type, | 1170 lbu(object_instance_type, |
1180 FieldMemOperand(object_map, Map::kInstanceTypeOffset)); | 1171 FieldMemOperand(object_map, Map::kInstanceTypeOffset)); |
1181 } | 1172 } |
1182 | 1173 |
1183 // Check if a map for a JSObject indicates that the object has fast elements. | |
1184 // Jump to the specified label if it does not. | |
1185 void CheckFastElements(Register map, | |
1186 Register scratch, | |
1187 Label* fail); | |
1188 | |
1189 // Check if a map for a JSObject indicates that the object can have both smi | 1174 // Check if a map for a JSObject indicates that the object can have both smi |
1190 // and HeapObject elements. Jump to the specified label if it does not. | 1175 // and HeapObject elements. Jump to the specified label if it does not. |
1191 void CheckFastObjectElements(Register map, | 1176 void CheckFastObjectElements(Register map, |
1192 Register scratch, | 1177 Register scratch, |
1193 Label* fail); | 1178 Label* fail); |
1194 | 1179 |
1195 // Check if a map for a JSObject indicates that the object has fast smi only | 1180 // Check if a map for a JSObject indicates that the object has fast smi only |
1196 // elements. Jump to the specified label if it does not. | 1181 // elements. Jump to the specified label if it does not. |
1197 void CheckFastSmiElements(Register map, | 1182 void CheckFastSmiElements(Register map, |
1198 Register scratch, | 1183 Register scratch, |
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1927 dd(GetLabelFunction(index)); | 1912 dd(GetLabelFunction(index)); |
1928 } | 1913 } |
1929 } | 1914 } |
1930 | 1915 |
1931 #define ACCESS_MASM(masm) masm-> | 1916 #define ACCESS_MASM(masm) masm-> |
1932 | 1917 |
1933 } // namespace internal | 1918 } // namespace internal |
1934 } // namespace v8 | 1919 } // namespace v8 |
1935 | 1920 |
1936 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 1921 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
OLD | NEW |