Commit df50d3ea authored by haitao.feng@intel.com's avatar haitao.feng@intel.com

Update ElementsTransitionGenerator::GenerateSmiToDouble to support x32 port.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/242603002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21075 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent ace15fa6
......@@ -233,12 +233,20 @@ void ElementsTransitionGenerator::GenerateSmiToDouble(
__ CompareRoot(r8, Heap::kEmptyFixedArrayRootIndex);
__ j(equal, &only_change_map);
// Check backing store for COW-ness. For COW arrays we have to
// allocate a new backing store.
__ SmiToInteger32(r9, FieldOperand(r8, FixedDoubleArray::kLengthOffset));
__ CompareRoot(FieldOperand(r8, HeapObject::kMapOffset),
Heap::kFixedCOWArrayMapRootIndex);
__ j(equal, &new_backing_store);
if (kPointerSize == kDoubleSize) {
// Check backing store for COW-ness. For COW arrays we have to
// allocate a new backing store.
__ CompareRoot(FieldOperand(r8, HeapObject::kMapOffset),
Heap::kFixedCOWArrayMapRootIndex);
__ j(equal, &new_backing_store);
} else {
// For x32 port we have to allocate a new backing store as SMI size is
// not equal with double size.
ASSERT(kDoubleSize == 2 * kPointerSize);
__ jmp(&new_backing_store);
}
// Check if the backing store is in new-space. If not, we need to allocate
// a new one since the old one is in pointer-space.
// If in new space, we can reuse the old backing store because it is
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment