Chromium Code Reviews| Index: src/arm/macro-assembler-arm.cc |
| =================================================================== |
| --- src/arm/macro-assembler-arm.cc (revision 8221) |
| +++ src/arm/macro-assembler-arm.cc (working copy) |
| @@ -3166,6 +3166,25 @@ |
| } |
| +void MacroAssembler::IsDataObject(Register value, |
|
Lasse Reichstein
2011/06/10 13:55:44
JumpIfNotDataObject
Erik Corry
2011/06/10 21:57:29
Done.
|
| + Register scratch, |
| + Label* not_data_object) { |
|
Lasse Reichstein
2011/06/10 13:55:44
Should it have a distance too?
Erik Corry
2011/06/10 21:57:29
No, ARM has fixed width instructions.
|
| + Label is_data_object; |
| + ldr(scratch, FieldMemOperand(value, HeapObject::kMapOffset)); |
| + CompareRoot(scratch, Heap::kHeapNumberMapRootIndex); |
| + b(eq, &is_data_object); |
| + ASSERT(kConsStringTag == 1 && kIsConsStringMask == 1); |
| + ASSERT(kNotStringTag == 0x80 && kIsNotStringMask == 0x80); |
| + // If it's a string and it's not a cons string then it's an object that |
| + // doesn't need scanning. |
| + ldrb(scratch, FieldMemOperand(scratch, Map::kInstanceTypeOffset)); |
| + tst(scratch, Operand(kIsConsStringMask | kIsNotStringMask)); |
| + // Jump if we need to mark it grey and push it. |
|
Lasse Reichstein
2011/06/10 13:55:44
Comment not related to function name or descriptio
Erik Corry
2011/06/10 21:57:29
Deleted.
|
| + b(ne, not_data_object); |
| + bind(&is_data_object); |
|
Lasse Reichstein
2011/06/10 13:55:44
This detects only HeapNumber and non-cons String.
Erik Corry
2011/06/10 21:57:29
Done.
|
| +} |
| + |
| + |
| void MacroAssembler::GetMarkBits(Register addr_reg, |
| Register bitmap_reg, |
| Register mask_reg) { |