OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 // Compare instance type in a map. map contains a valid map object whose | 263 // Compare instance type in a map. map contains a valid map object whose |
264 // object type should be compared with the given type. This both | 264 // object type should be compared with the given type. This both |
265 // sets the flags and leaves the object type in the type_reg register. It | 265 // sets the flags and leaves the object type in the type_reg register. It |
266 // leaves the heap object in the heap_object register unless the heap_object | 266 // leaves the heap object in the heap_object register unless the heap_object |
267 // register is the same register as type_reg. | 267 // register is the same register as type_reg. |
268 void CompareInstanceType(Register map, | 268 void CompareInstanceType(Register map, |
269 Register type_reg, | 269 Register type_reg, |
270 InstanceType type); | 270 InstanceType type); |
271 | 271 |
272 | 272 |
| 273 // Check if the map of an object is equal to a specified map and |
| 274 // branch to label if not. Skip the smi check if not required |
| 275 // (object is known to be a heap object) |
| 276 void CheckMap(Register obj, |
| 277 Register scratch, |
| 278 Handle<Map> map, |
| 279 Label* fail, |
| 280 bool is_heap_object); |
| 281 |
273 // Load and check the instance type of an object for being a string. | 282 // Load and check the instance type of an object for being a string. |
274 // Loads the type into the second argument register. | 283 // Loads the type into the second argument register. |
275 // Returns a condition that will be enabled if the object was a string. | 284 // Returns a condition that will be enabled if the object was a string. |
276 Condition IsObjectStringType(Register obj, | 285 Condition IsObjectStringType(Register obj, |
277 Register type) { | 286 Register type) { |
278 ldr(type, FieldMemOperand(obj, HeapObject::kMapOffset)); | 287 ldr(type, FieldMemOperand(obj, HeapObject::kMapOffset)); |
279 ldrb(type, FieldMemOperand(type, Map::kInstanceTypeOffset)); | 288 ldrb(type, FieldMemOperand(type, Map::kInstanceTypeOffset)); |
280 tst(type, Operand(kIsNotStringMask)); | 289 tst(type, Operand(kIsNotStringMask)); |
281 ASSERT_EQ(0, kStringTag); | 290 ASSERT_EQ(0, kStringTag); |
282 return eq; | 291 return eq; |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 493 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
485 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 494 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
486 #else | 495 #else |
487 #define ACCESS_MASM(masm) masm-> | 496 #define ACCESS_MASM(masm) masm-> |
488 #endif | 497 #endif |
489 | 498 |
490 | 499 |
491 } } // namespace v8::internal | 500 } } // namespace v8::internal |
492 | 501 |
493 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 502 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |