Remove HType::HeapNumber from mutable heap numbers.
BUG= R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/293353004 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
621c7eb673
commit
b60054df88
@ -714,7 +714,6 @@ class HValue : public ZoneObject {
|
|||||||
if (r.IsTagged()) {
|
if (r.IsTagged()) {
|
||||||
HType t = type();
|
HType t = type();
|
||||||
if (t.IsSmi()) return Representation::Smi();
|
if (t.IsSmi()) return Representation::Smi();
|
||||||
// TODO(mstarzinger): This is not correct for mutable HeapNumbers.
|
|
||||||
if (t.IsHeapNumber()) return Representation::Double();
|
if (t.IsHeapNumber()) return Representation::Double();
|
||||||
if (t.IsHeapObject()) return r;
|
if (t.IsHeapObject()) return r;
|
||||||
return Representation::None();
|
return Representation::None();
|
||||||
@ -5547,10 +5546,6 @@ class HAllocate V8_FINAL : public HTemplateInstruction<2> {
|
|||||||
return Representation::Integer32();
|
return Representation::Integer32();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO(mstarzinger): Workaround until we track mutable HeapNumber types.
|
|
||||||
virtual Representation KnownOptimalRepresentation() V8_OVERRIDE {
|
|
||||||
return representation();
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual Handle<Map> GetMonomorphicJSObjectMap() {
|
virtual Handle<Map> GetMonomorphicJSObjectMap() {
|
||||||
return known_initial_map_;
|
return known_initial_map_;
|
||||||
|
@ -5443,7 +5443,6 @@ HInstruction* HOptimizedGraphBuilder::BuildLoadNamedField(
|
|||||||
checked_object = Add<HLoadNamedField>(
|
checked_object = Add<HLoadNamedField>(
|
||||||
checked_object, static_cast<HValue*>(NULL),
|
checked_object, static_cast<HValue*>(NULL),
|
||||||
access.WithRepresentation(Representation::Tagged()));
|
access.WithRepresentation(Representation::Tagged()));
|
||||||
checked_object->set_type(HType::HeapNumber());
|
|
||||||
// Load the double value from it.
|
// Load the double value from it.
|
||||||
access = HObjectAccess::ForHeapNumberValue();
|
access = HObjectAccess::ForHeapNumberValue();
|
||||||
}
|
}
|
||||||
@ -5481,7 +5480,7 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField(
|
|||||||
|
|
||||||
// TODO(hpayer): Allocation site pretenuring support.
|
// TODO(hpayer): Allocation site pretenuring support.
|
||||||
HInstruction* heap_number = Add<HAllocate>(heap_number_size,
|
HInstruction* heap_number = Add<HAllocate>(heap_number_size,
|
||||||
HType::HeapNumber(),
|
HType::Tagged(),
|
||||||
NOT_TENURED,
|
NOT_TENURED,
|
||||||
HEAP_NUMBER_TYPE);
|
HEAP_NUMBER_TYPE);
|
||||||
AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map());
|
AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map());
|
||||||
@ -5494,7 +5493,6 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField(
|
|||||||
// Already holds a HeapNumber; load the box and write its value field.
|
// Already holds a HeapNumber; load the box and write its value field.
|
||||||
HInstruction* heap_number = Add<HLoadNamedField>(
|
HInstruction* heap_number = Add<HLoadNamedField>(
|
||||||
checked_object, static_cast<HValue*>(NULL), heap_number_access);
|
checked_object, static_cast<HValue*>(NULL), heap_number_access);
|
||||||
heap_number->set_type(HType::HeapNumber());
|
|
||||||
instr = New<HStoreNamedField>(heap_number,
|
instr = New<HStoreNamedField>(heap_number,
|
||||||
HObjectAccess::ForHeapNumberValue(),
|
HObjectAccess::ForHeapNumberValue(),
|
||||||
value, STORE_TO_INITIALIZED_ENTRY);
|
value, STORE_TO_INITIALIZED_ENTRY);
|
||||||
|
Loading…
Reference in New Issue
Block a user