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/mips64/assembler-mips64.h" | 10 #include "src/mips64/assembler-mips64.h" |
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 | 529 |
530 // Generate code for checking access rights - used for security checks | 530 // Generate code for checking access rights - used for security checks |
531 // on access to global objects across environments. The holder register | 531 // on access to global objects across environments. The holder register |
532 // is left untouched, whereas both scratch registers are clobbered. | 532 // is left untouched, whereas both scratch registers are clobbered. |
533 void CheckAccessGlobalProxy(Register holder_reg, | 533 void CheckAccessGlobalProxy(Register holder_reg, |
534 Register scratch, | 534 Register scratch, |
535 Label* miss); | 535 Label* miss); |
536 | 536 |
537 void GetNumberHash(Register reg0, Register scratch); | 537 void GetNumberHash(Register reg0, Register scratch); |
538 | 538 |
539 void LoadFromNumberDictionary(Label* miss, | |
540 Register elements, | |
541 Register key, | |
542 Register result, | |
543 Register reg0, | |
544 Register reg1, | |
545 Register reg2); | |
546 | |
547 | |
548 inline void MarkCode(NopMarkerTypes type) { | 539 inline void MarkCode(NopMarkerTypes type) { |
549 nop(type); | 540 nop(type); |
550 } | 541 } |
551 | 542 |
552 // Check if the given instruction is a 'type' marker. | 543 // Check if the given instruction is a 'type' marker. |
553 // i.e. check if it is a sll zero_reg, zero_reg, <type> (referenced as | 544 // i.e. check if it is a sll zero_reg, zero_reg, <type> (referenced as |
554 // nop(type)). These instructions are generated to mark special location in | 545 // nop(type)). These instructions are generated to mark special location in |
555 // the code, like some special IC code. | 546 // the code, like some special IC code. |
556 static inline bool IsMarkedCode(Instr instr, int type) { | 547 static inline bool IsMarkedCode(Instr instr, int type) { |
557 DCHECK((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); | 548 DCHECK((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); |
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1231 | 1222 |
1232 void GetObjectType(Register function, | 1223 void GetObjectType(Register function, |
1233 Register map, | 1224 Register map, |
1234 Register type_reg); | 1225 Register type_reg); |
1235 | 1226 |
1236 void GetInstanceType(Register object_map, Register object_instance_type) { | 1227 void GetInstanceType(Register object_map, Register object_instance_type) { |
1237 lbu(object_instance_type, | 1228 lbu(object_instance_type, |
1238 FieldMemOperand(object_map, Map::kInstanceTypeOffset)); | 1229 FieldMemOperand(object_map, Map::kInstanceTypeOffset)); |
1239 } | 1230 } |
1240 | 1231 |
1241 // Check if a map for a JSObject indicates that the object has fast elements. | |
1242 // Jump to the specified label if it does not. | |
1243 void CheckFastElements(Register map, | |
1244 Register scratch, | |
1245 Label* fail); | |
1246 | |
1247 // Check if a map for a JSObject indicates that the object can have both smi | 1232 // Check if a map for a JSObject indicates that the object can have both smi |
1248 // and HeapObject elements. Jump to the specified label if it does not. | 1233 // and HeapObject elements. Jump to the specified label if it does not. |
1249 void CheckFastObjectElements(Register map, | 1234 void CheckFastObjectElements(Register map, |
1250 Register scratch, | 1235 Register scratch, |
1251 Label* fail); | 1236 Label* fail); |
1252 | 1237 |
1253 // Check if a map for a JSObject indicates that the object has fast smi only | 1238 // Check if a map for a JSObject indicates that the object has fast smi only |
1254 // elements. Jump to the specified label if it does not. | 1239 // elements. Jump to the specified label if it does not. |
1255 void CheckFastSmiElements(Register map, | 1240 void CheckFastSmiElements(Register map, |
1256 Register scratch, | 1241 Register scratch, |
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2074 dd(GetLabelFunction(index)); | 2059 dd(GetLabelFunction(index)); |
2075 } | 2060 } |
2076 } | 2061 } |
2077 | 2062 |
2078 #define ACCESS_MASM(masm) masm-> | 2063 #define ACCESS_MASM(masm) masm-> |
2079 | 2064 |
2080 } // namespace internal | 2065 } // namespace internal |
2081 } // namespace v8 | 2066 } // namespace v8 |
2082 | 2067 |
2083 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 2068 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
OLD | NEW |