| Index: src/arm/builtins-arm.cc
|
| ===================================================================
|
| --- src/arm/builtins-arm.cc (revision 4849)
|
| +++ src/arm/builtins-arm.cc (working copy)
|
| @@ -136,7 +136,8 @@
|
| __ str(scratch1, FieldMemOperand(result, JSArray::kElementsOffset));
|
|
|
| // Clear the heap tag on the elements array.
|
| - __ and_(scratch1, scratch1, Operand(~kHeapObjectTagMask));
|
| + ASSERT(kSmiTag == 0);
|
| + __ sub(scratch1, scratch1, Operand(kHeapObjectTag));
|
|
|
| // Initialize the FixedArray and fill it with holes. FixedArray length is
|
| // stored as a smi.
|
| @@ -240,9 +241,10 @@
|
| FieldMemOperand(result, JSArray::kElementsOffset));
|
|
|
| // Clear the heap tag on the elements array.
|
| - __ and_(elements_array_storage,
|
| - elements_array_storage,
|
| - Operand(~kHeapObjectTagMask));
|
| + ASSERT(kSmiTag == 0);
|
| + __ sub(elements_array_storage,
|
| + elements_array_storage,
|
| + Operand(kHeapObjectTag));
|
| // Initialize the fixed array and fill it with holes. FixedArray length is
|
| // stored as a smi.
|
| // result: JSObject
|
| @@ -617,12 +619,10 @@
|
| // The field instance sizes contains both pre-allocated property fields and
|
| // in-object properties.
|
| __ ldr(r0, FieldMemOperand(r2, Map::kInstanceSizesOffset));
|
| - __ and_(r6,
|
| - r0,
|
| - Operand(0x000000FF << Map::kPreAllocatedPropertyFieldsByte * 8));
|
| - __ add(r3, r3, Operand(r6, LSR, Map::kPreAllocatedPropertyFieldsByte * 8));
|
| - __ and_(r6, r0, Operand(0x000000FF << Map::kInObjectPropertiesByte * 8));
|
| - __ sub(r3, r3, Operand(r6, LSR, Map::kInObjectPropertiesByte * 8), SetCC);
|
| + __ Ubfx(r6, r0, Map::kPreAllocatedPropertyFieldsByte * 8, 8);
|
| + __ add(r3, r3, Operand(r6));
|
| + __ Ubfx(r6, r0, Map::kInObjectPropertiesByte * 8, 8);
|
| + __ sub(r3, r3, Operand(r6), SetCC);
|
|
|
| // Done if no extra properties are to be allocated.
|
| __ b(eq, &allocated);
|
|
|