Reviewers: ,
Message:
Thanks for finding the InvalidateEmbeddedObjects fix Ulan! There were a
couple
of other things which needed fixing. The logs for the failing builds which
these changes fix are:
http://build.chromium.org/p/client.v8/builders/V8%20Arm%20GC%20Stress/builds/598/steps/Mjsunit/logs/regress-2185
http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm%20-%20sim%20-%20debug%20-%20novfp3/builds/1384/steps/Mozilla/logs/regress-159334
http://build.chromium.org/p/client.v8/builders/V8%20Arm%20-%20debug/builds/1268/steps/Webkit/logs/deep-recursion-test
PTAL, thanks.
https://codereview.chromium.org/385163005/diff/1/src/flag-definitions.h
File src/flag-definitions.h (right):
https://codereview.chromium.org/385163005/diff/1/src/flag-definitions.h#newcode461
src/flag-definitions.h:461: DEFINE_INT(stack_size, 984,
Note: this could be lower for 32bit, but I would still need to be larger
than 512KB, which would mean that 64bit would be larger than 1MB if
calculated based on kPointerSize, so I have just set it to be the same
as the existing 64bit limit. Let me know if you would prefer it set
differently.
Description:
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.
Please review this at https://codereview.chromium.org/385163005/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+8, -5 lines):
M src/flag-definitions.h
M src/objects.cc
M src/spaces.cc
Index: src/flag-definitions.h
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index
b6f858d9406d17c2fa0c407505609d1aa0b979d5..f0cf47289ec35a6cf39ea8edc164f3adf494f34b
100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -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
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
ad066af921bf961ac99b57fc3ddf89dd6e653d51..1081a3fb92e72e07156da085784d37a701df335b
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -10709,6 +10709,7 @@ void
ObjectVisitor::VisitExternalReference(RelocInfo* rinfo) {
void Code::InvalidateRelocation() {
+ InvalidateEmbeddedObjects();
set_relocation_info(GetHeap()->empty_byte_array());
}
Index: src/spaces.cc
diff --git a/src/spaces.cc b/src/spaces.cc
index
e7cb8ccf85254003af635e44c2fe81d582e2b926..2ca315eedcb685212e50f0421bb9d05a6e81f628
100644
--- a/src/spaces.cc
+++ b/src/spaces.cc
@@ -3062,10 +3062,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();
--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.