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)); |
} |