Thanks, Erik and Hannes!

I tried RegExp and eval for generating code and ended up using eval, since it is easier to control caching/flushing for it. The test is in patch set #3: it uses
a new flag --code-range-size, otherwise it would take long time to fill up
512MB. The test uncovered a bogus (I think) assert in verify evacuation:

#
# Fatal error in ../src/heap/mark-compact.cc, line 162
# CHECK(!MarkCompactCollector::IsOnEvacuationCandidate(object)) failed
#

==== C stack trace ===============================

 1: V8_Fatal
2: v8::internal::VerifyEvacuationVisitor::VisitPointers(v8::internal::Object**,
v8::internal::Object**)
 3: v8::internal::ObjectVisitor::VisitPointer(v8::internal::Object**)
 4: v8::internal::ObjectVisitor::VisitCodeTarget(v8::internal::RelocInfo*)
 5: v8::internal::RelocInfo::Visit(v8::internal::Isolate*,
v8::internal::ObjectVisitor*)
 6: v8::internal::Code::CodeIterateBody(v8::internal::ObjectVisitor*)
 7: v8::internal::HeapObject::IterateBody(v8::internal::InstanceType, int,
v8::internal::ObjectVisitor*)
 8: v8::internal::HeapObject::Iterate(v8::internal::ObjectVisitor*)
 9: ??
10: ??
11: ??
12: v8::internal::MarkCompactCollector::EnsureSweepingCompleted()
13: v8::internal::PagedSpace::WaitForSweeperThreadsAndRetryAllocation(int)
14: v8::internal::PagedSpace::SlowAllocateRaw(int)
15: v8::internal::PagedSpace::AllocateRaw(int)
16:
v8::internal::MarkCompactCollector::EvacuateLiveObjectsFromPage(v8::internal::Page*)
17: v8::internal::MarkCompactCollector::EvacuatePages()
18: v8::internal::MarkCompactCollector::EvacuateNewSpaceAndCandidates()
19: v8::internal::MarkCompactCollector::SweepSpaces()
20: v8::internal::MarkCompactCollector::CollectGarbage()
21: v8::internal::Heap::MarkCompact()

I am going to land this without the test since I want to get coverage as soon as
possible and merge back to M39. I'll land the test after fixing the assert.


https://codereview.chromium.org/742733002/diff/20001/src/heap/heap.cc
File src/heap/heap.cc (right):

https://codereview.chromium.org/742733002/diff/20001/src/heap/heap.cc#newcode5265
src/heap/heap.cc:5265: isolate_->code_range()->ReserveEmergencyBlock();
On 2014/11/20 08:00:37, Hannes Payer wrote:
Can we do that after setting up code_range?

Done.

https://codereview.chromium.org/742733002/diff/20001/src/heap/spaces.h
File src/heap/spaces.h (right):

https://codereview.chromium.org/742733002/diff/20001/src/heap/spaces.h#newcode939
src/heap/spaces.h:939: FreeBlock emergency_block_;
On 2014/11/20 08:00:37, Hannes Payer wrote:
Please add a comment that describes the concept of the emergency
block.

Done.

https://codereview.chromium.org/742733002/

--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to