Chromium Code Reviews| Index: runtime/vm/assembler_x64.cc |
| diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc |
| index 6984fc3ab35c7a1507f1543830bc8be8cb632b77..0b052f1fb09d745a655ac8f62a2f3649b0c0e2d0 100644 |
| --- a/runtime/vm/assembler_x64.cc |
| +++ b/runtime/vm/assembler_x64.cc |
| @@ -3745,11 +3745,11 @@ void Assembler::EmitGenericShift(bool wide, |
| void Assembler::LoadClassId(Register result, Register object) { |
| - ASSERT(RawObject::kClassIdTagPos == 16); |
| - ASSERT(RawObject::kClassIdTagSize == 16); |
| + ASSERT(RawObject::kClassIdTagPos == 32); |
| + ASSERT(RawObject::kClassIdTagSize == 32); |
|
siva
2015/06/12 22:08:11
Ditto.
|
| const intptr_t class_id_offset = Object::tags_offset() + |
| RawObject::kClassIdTagPos / kBitsPerByte; |
| - movzxw(result, FieldAddress(object, class_id_offset)); |
| + movl(result, FieldAddress(object, class_id_offset)); |
| } |
|
siva
2015/06/12 22:08:11
We need the COMPILE_ASSERT here of sizeof(classid_
rmacnak
2015/06/12 23:27:22
Done.
|
| @@ -3778,8 +3778,8 @@ void Assembler::SmiUntagOrCheckClass(Register object, |
| intptr_t class_id, |
| Label* is_smi) { |
| ASSERT(kSmiTagShift == 1); |
| - ASSERT(RawObject::kClassIdTagPos == 16); |
| - ASSERT(RawObject::kClassIdTagSize == 16); |
| + ASSERT(RawObject::kClassIdTagPos == 32); |
| + ASSERT(RawObject::kClassIdTagSize == 32); |
|
siva
2015/06/12 22:08:11
Ditto comment.
|
| const intptr_t class_id_offset = Object::tags_offset() + |
| RawObject::kClassIdTagPos / kBitsPerByte; |
| @@ -3788,7 +3788,7 @@ void Assembler::SmiUntagOrCheckClass(Register object, |
| j(NOT_CARRY, is_smi, kNearJump); |
| // Load cid: can't use LoadClassId, object is untagged. Use TIMES_2 scale |
| // factor in the addressing mode to compensate for this. |
| - movzxw(TMP, Address(object, TIMES_2, class_id_offset)); |
| + movl(TMP, Address(object, TIMES_2, class_id_offset)); |
| cmpl(TMP, Immediate(class_id)); |
| } |