Commit 1b5848c2 authored by rmcilroy@chromium.org's avatar rmcilroy@chromium.org

Some fixes to avoid breakages when enabling out-of-line constant pools.

Three fixes which are required to pass all the tests when  out-of-line constant
pools are enabled for Arm:

 - Invalidate embedded objects in optimized code when it is deoptimized such
   that the weak pointers in the constant pool array are cleared.  This prevents
   a CHECK(heap_->mark_compact_collector()->IsMarked(object)) error when a
   verifying weak pointers in a deoptimized code object's constant pool.
 - Modify LargeObjectSpace::Verify to allow constant pool arrays in the
   large object space.
 - Increase the 32bit stack size limit, since the constant pool pointer
   is now on every stack frame, causing the size of each stack frame to
   increase by one word, and causing deep-recursion-test to fail.

R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22445 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent e6936f21
......@@ -456,9 +456,9 @@ DEFINE_BOOL(enable_liveedit, true, "enable liveedit experimental feature")
DEFINE_BOOL(hard_abort, true, "abort by crashing")
// execution.cc
// Slightly less than 1MB on 64-bit, since Windows' default stack size for
// Slightly less than 1MB, since Windows' default stack size for
// the main execution thread is 1MB for both 32 and 64-bit.
DEFINE_INT(stack_size, kPointerSize * 123,
DEFINE_INT(stack_size, 984,
"default size of stack region v8 is allowed to use (in kBytes)")
// frames.cc
......
......@@ -10652,6 +10652,7 @@ void ObjectVisitor::VisitExternalReference(RelocInfo* rinfo) {
void Code::InvalidateRelocation() {
InvalidateEmbeddedObjects();
set_relocation_info(GetHeap()->empty_byte_array());
}
......
......@@ -3063,10 +3063,12 @@ void LargeObjectSpace::Verify() {
// We have only code, sequential strings, external strings
// (sequential strings that have been morphed into external
// strings), fixed arrays, and byte arrays in large object space.
// strings), fixed arrays, byte arrays, and constant pool arrays in the
// large object space.
CHECK(object->IsCode() || object->IsSeqString() ||
object->IsExternalString() || object->IsFixedArray() ||
object->IsFixedDoubleArray() || object->IsByteArray());
object->IsExternalString() || object->IsFixedArray() ||
object->IsFixedDoubleArray() || object->IsByteArray() ||
object->IsConstantPoolArray());
// The object itself should look OK.
object->ObjectVerify();
......
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