Index: runtime/vm/intermediate_language_dbc.cc |
diff --git a/runtime/vm/intermediate_language_dbc.cc b/runtime/vm/intermediate_language_dbc.cc |
index addebfa87701c6fb4a0b9446290c4d7266809bf7..1373d1f213562f19493c68b47d1bc3e35456f70a 100644 |
--- a/runtime/vm/intermediate_language_dbc.cc |
+++ b/runtime/vm/intermediate_language_dbc.cc |
@@ -994,7 +994,7 @@ EMIT_NATIVE_CODE(AllocateObject, |
Isolate* isolate = Isolate::Current(); |
if (Heap::IsAllocatableInNewSpace(instance_size) && |
!cls().TraceAllocation(isolate)) { |
- uword tags = 0; |
+ uint32_t tags = 0; |
tags = RawObject::SizeTag::update(instance_size, tags); |
ASSERT(cls().id() != kIllegalCid); |
tags = RawObject::ClassIdTag::update(cls().id(), tags); |
@@ -1028,6 +1028,7 @@ EMIT_NATIVE_CODE(AllocateObject, |
tags = RawObject::SizeTag::update(instance_size, tags); |
ASSERT(cls().id() != kIllegalCid); |
tags = RawObject::ClassIdTag::update(cls().id(), tags); |
+ // tags also has the initial zero hash code on 64 bit. |
if (Smi::IsValid(tags)) { |
const intptr_t tags_kidx = __ AddConstant(Smi::Handle(Smi::New(tags))); |
__ AllocateOpt(locs()->out(0).reg(), tags_kidx); |
@@ -1639,6 +1640,7 @@ EMIT_NATIVE_CODE(Box, 1, Location::RequiresRegister(), LocationSummary::kCall) { |
uword tags = 0; |
tags = RawObject::SizeTag::update(instance_size, tags); |
tags = RawObject::ClassIdTag::update(compiler->double_class().id(), tags); |
+ // tags also has the initial zero hash code on 64 bit. |
if (Smi::IsValid(tags)) { |
const intptr_t tags_kidx = __ AddConstant(Smi::Handle(Smi::New(tags))); |
__ AllocateOpt(out, tags_kidx); |