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
This commit is contained in:
parent
e6936f2145
commit
1b5848c210
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user