if (r.IsTagged()) {
HType t = type();
if (t.IsSmi()) return Representation::Smi();
- // TODO(mstarzinger): This is not correct for mutable HeapNumbers.
if (t.IsHeapNumber()) return Representation::Double();
if (t.IsHeapObject()) return r;
return Representation::None();
return Representation::Integer32();
}
}
- // TODO(mstarzinger): Workaround until we track mutable HeapNumber types.
- virtual Representation KnownOptimalRepresentation() V8_OVERRIDE {
- return representation();
- }
virtual Handle<Map> GetMonomorphicJSObjectMap() {
return known_initial_map_;
checked_object = Add<HLoadNamedField>(
checked_object, static_cast<HValue*>(NULL),
access.WithRepresentation(Representation::Tagged()));
- checked_object->set_type(HType::HeapNumber());
// Load the double value from it.
access = HObjectAccess::ForHeapNumberValue();
}
// TODO(hpayer): Allocation site pretenuring support.
HInstruction* heap_number = Add<HAllocate>(heap_number_size,
- HType::HeapNumber(),
+ HType::Tagged(),
NOT_TENURED,
HEAP_NUMBER_TYPE);
AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map());
// Already holds a HeapNumber; load the box and write its value field.
HInstruction* heap_number = Add<HLoadNamedField>(
checked_object, static_cast<HValue*>(NULL), heap_number_access);
- heap_number->set_type(HType::HeapNumber());
instr = New<HStoreNamedField>(heap_number,
HObjectAccess::ForHeapNumberValue(),
value, STORE_TO_INITIALIZED_ENTRY);