Reviewers: Jakob,
Message:
As discussed offline, regression test will come tomorrow.
Description:
Clear optimized code map during incremental marking.
[email protected]
Committed: http://code.google.com/p/v8/source/detail?r=13195
Please review this at https://codereview.chromium.org/11458011/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/objects-inl.h
M src/objects-visiting-inl.h
M src/objects.h
M src/objects.cc
Index: src/objects-inl.h
diff --git a/src/objects-inl.h b/src/objects-inl.h
index
b25af33c77a59d14f2d92a40b422297242c9cc90..2d265ec214ad2553e49bb4a8d2317cfa65d98474
100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -4279,11 +4279,10 @@ BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints,
dont_cache, kDontCache)
void SharedFunctionInfo::BeforeVisitingPointers() {
if (IsInobjectSlackTrackingInProgress()) DetachInitialMap();
+}
+
- // Flush optimized code map on major GC.
- // Note: we may experiment with rebuilding it or retaining entries
- // which should survive as we iterate through optimized functions
- // anyway.
+void SharedFunctionInfo::ClearOptimizedCodeMap() {
set_optimized_code_map(Smi::FromInt(0));
}
Index: src/objects-visiting-inl.h
diff --git a/src/objects-visiting-inl.h b/src/objects-visiting-inl.h
index
4a9dab5caaa6f67803c1529fc6f45d5dfe9949aa..925b2562f292558687716cc6be8c0b618d1f7f04
100644
--- a/src/objects-visiting-inl.h
+++ b/src/objects-visiting-inl.h
@@ -299,6 +299,13 @@ void
StaticMarkingVisitor<StaticVisitor>::VisitSharedFunctionInfo(
if (shared->ic_age() != heap->global_ic_age()) {
shared->ResetForNewContext(heap->global_ic_age());
}
+ if (FLAG_cache_optimized_code) {
+ // Flush optimized code map on major GC.
+ // TODO(mstarzinger): We may experiment with rebuilding it or with
+ // retaining entries which should survive as we iterate through
+ // optimized functions anyway.
+ shared->ClearOptimizedCodeMap();
+ }
MarkCompactCollector* collector = heap->mark_compact_collector();
if (collector->is_code_flushing_enabled()) {
if (IsFlushable(heap, shared)) {
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
f2397f58e15ac73972a482e2665837bcefe805ab..d562c51d7b97e4153fc7a5adc48d40e76a6735d0
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -8066,11 +8066,6 @@ bool
SharedFunctionInfo::CompileLazy(Handle<SharedFunctionInfo> shared,
}
-void SharedFunctionInfo::ClearOptimizedCodeMap() {
- set_optimized_code_map(Smi::FromInt(0));
-}
-
-
void SharedFunctionInfo::AddToOptimizedCodeMap(
Handle<SharedFunctionInfo> shared,
Handle<Context> native_context,
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index
aa9b0aea2680fb35df0047051ff723c30da179f9..6a1542280d020fa59b6abfca431361c5f573b3cf
100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -5444,7 +5444,7 @@ class SharedFunctionInfo: public HeapObject {
void InstallFromOptimizedCodeMap(JSFunction* function, int index);
// Clear optimized code map.
- void ClearOptimizedCodeMap();
+ inline void ClearOptimizedCodeMap();
// Add a new entry to the optimized code map.
static void AddToOptimizedCodeMap(Handle<SharedFunctionInfo> shared,
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev