Skip to content

Commit a83fc49

Browse files
FlarnaMylesBorins
authored andcommittedApr 2, 2020
deps: V8: cherry-pick cb1c2b0fbfe7
Original commit message: Remove noscript_shared_function_infos SharedFunctionInfos that do not belong to a script were tracked in noscript_shared_function_infos. However this was only used in object-stats. Remove this since it was actually leaking memory in some use cases. Bug: v8:9674 Change-Id: I9482f7e5dedf975666a70684b3d2ea04c9a23518 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1798423 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#63685} PR-URL: #31939 Refs: v8/v8@cb1c2b0 Refs: #31914 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Matheus Marchini <mat@mmarchini.me>
1 parent 784df12 commit a83fc49

12 files changed

+1
-110
lines changed
 

‎common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
# Reset this number to 0 on major V8 upgrades.
4040
# Increment by one for each non-official patch applied to deps/v8.
41-
'v8_embedder_string': '-node.32',
41+
'v8_embedder_string': '-node.33',
4242

4343
##### V8 defaults for Node.js #####
4444

‎deps/v8/src/heap/factory.cc

-5
Original file line numberDiff line numberDiff line change
@@ -3501,11 +3501,6 @@ Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(
35013501

35023502
share->clear_padding();
35033503
}
3504-
// Link into the list.
3505-
Handle<WeakArrayList> noscript_list = noscript_shared_function_infos();
3506-
noscript_list = WeakArrayList::AddToEnd(isolate(), noscript_list,
3507-
MaybeObjectHandle::Weak(share));
3508-
isolate()->heap()->set_noscript_shared_function_infos(*noscript_list);
35093504

35103505
#ifdef VERIFY_HEAP
35113506
share->SharedFunctionInfoVerify(isolate());

‎deps/v8/src/heap/heap-inl.h

-4
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,6 @@ void Heap::SetRootStringTable(StringTable value) {
111111
roots_table()[RootIndex::kStringTable] = value.ptr();
112112
}
113113

114-
void Heap::SetRootNoScriptSharedFunctionInfos(Object value) {
115-
roots_table()[RootIndex::kNoScriptSharedFunctionInfos] = value.ptr();
116-
}
117-
118114
void Heap::SetMessageListeners(TemplateList value) {
119115
roots_table()[RootIndex::kMessageListeners] = value.ptr();
120116
}

‎deps/v8/src/heap/heap.cc

-7
Original file line numberDiff line numberDiff line change
@@ -5404,13 +5404,6 @@ void Heap::CompactWeakArrayLists(AllocationType allocation) {
54045404
DCHECK_IMPLIES(allocation == AllocationType::kOld, InOldSpace(*scripts));
54055405
scripts = CompactWeakArrayList(this, scripts, allocation);
54065406
set_script_list(*scripts);
5407-
5408-
Handle<WeakArrayList> no_script_list(noscript_shared_function_infos(),
5409-
isolate());
5410-
DCHECK_IMPLIES(allocation == AllocationType::kOld,
5411-
InOldSpace(*no_script_list));
5412-
no_script_list = CompactWeakArrayList(this, no_script_list, allocation);
5413-
set_noscript_shared_function_infos(*no_script_list);
54145407
}
54155408

54165409
void Heap::AddRetainedMap(Handle<Map> map) {

‎deps/v8/src/heap/object-stats.cc

-4
Original file line numberDiff line numberDiff line change
@@ -829,10 +829,6 @@ void ObjectStatsCollectorImpl::CollectGlobalStatistics() {
829829
ObjectStats::RETAINED_MAPS_TYPE);
830830

831831
// WeakArrayList.
832-
RecordSimpleVirtualObjectStats(
833-
HeapObject(),
834-
WeakArrayList::cast(heap_->noscript_shared_function_infos()),
835-
ObjectStats::NOSCRIPT_SHARED_FUNCTION_INFOS_TYPE);
836832
RecordSimpleVirtualObjectStats(HeapObject(),
837833
WeakArrayList::cast(heap_->script_list()),
838834
ObjectStats::SCRIPT_LIST_TYPE);

‎deps/v8/src/heap/object-stats.h

-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
V(MAP_PROTOTYPE_DICTIONARY_TYPE) \
5555
V(MAP_PROTOTYPE_TYPE) \
5656
V(MAP_STABLE_TYPE) \
57-
V(NOSCRIPT_SHARED_FUNCTION_INFOS_TYPE) \
5857
V(NUMBER_STRING_CACHE_TYPE) \
5958
V(OBJECT_DICTIONARY_ELEMENTS_TYPE) \
6059
V(OBJECT_ELEMENTS_TYPE) \

‎deps/v8/src/heap/setup-heap-internal.cc

-2
Original file line numberDiff line numberDiff line change
@@ -907,8 +907,6 @@ void Heap::CreateInitialObjects() {
907907
set_serialized_objects(roots.empty_fixed_array());
908908
set_serialized_global_proxy_sizes(roots.empty_fixed_array());
909909

910-
set_noscript_shared_function_infos(roots.empty_weak_array_list());
911-
912910
/* Canonical off-heap trampoline data */
913911
set_off_heap_trampoline_relocation_info(
914912
*Builtins::GenerateOffHeapTrampolineRelocInfo(isolate_));

‎deps/v8/src/objects/objects.cc

-40
Original file line numberDiff line numberDiff line change
@@ -4988,24 +4988,6 @@ void SharedFunctionInfo::ScriptIterator::Reset(Isolate* isolate,
49884988
index_ = 0;
49894989
}
49904990

4991-
SharedFunctionInfo::GlobalIterator::GlobalIterator(Isolate* isolate)
4992-
: isolate_(isolate),
4993-
script_iterator_(isolate),
4994-
noscript_sfi_iterator_(isolate->heap()->noscript_shared_function_infos()),
4995-
sfi_iterator_(isolate, script_iterator_.Next()) {}
4996-
4997-
SharedFunctionInfo SharedFunctionInfo::GlobalIterator::Next() {
4998-
HeapObject next = noscript_sfi_iterator_.Next();
4999-
if (!next.is_null()) return SharedFunctionInfo::cast(next);
5000-
for (;;) {
5001-
next = sfi_iterator_.Next();
5002-
if (!next.is_null()) return SharedFunctionInfo::cast(next);
5003-
Script next_script = script_iterator_.Next();
5004-
if (next_script.is_null()) return SharedFunctionInfo();
5005-
sfi_iterator_.Reset(isolate_, next_script);
5006-
}
5007-
}
5008-
50094991
void SharedFunctionInfo::SetScript(Handle<SharedFunctionInfo> shared,
50104992
Handle<Object> script_object,
50114993
int function_literal_id,
@@ -5036,30 +5018,8 @@ void SharedFunctionInfo::SetScript(Handle<SharedFunctionInfo> shared,
50365018
}
50375019
#endif
50385020
list->Set(function_literal_id, HeapObjectReference::Weak(*shared));
5039-
5040-
// Remove shared function info from root array.
5041-
WeakArrayList noscript_list =
5042-
isolate->heap()->noscript_shared_function_infos();
5043-
CHECK(noscript_list.RemoveOne(MaybeObjectHandle::Weak(shared)));
50445021
} else {
50455022
DCHECK(shared->script().IsScript());
5046-
Handle<WeakArrayList> list =
5047-
isolate->factory()->noscript_shared_function_infos();
5048-
5049-
#ifdef DEBUG
5050-
if (FLAG_enable_slow_asserts) {
5051-
WeakArrayList::Iterator iterator(*list);
5052-
for (HeapObject next = iterator.Next(); !next.is_null();
5053-
next = iterator.Next()) {
5054-
DCHECK_NE(next, *shared);
5055-
}
5056-
}
5057-
#endif // DEBUG
5058-
5059-
list =
5060-
WeakArrayList::AddToEnd(isolate, list, MaybeObjectHandle::Weak(shared));
5061-
5062-
isolate->heap()->SetRootNoScriptSharedFunctionInfos(*list);
50635023

50645024
// Remove shared function info from old script's list.
50655025
Script old_script = Script::cast(shared->script());

‎deps/v8/src/objects/shared-function-info.h

-15
Original file line numberDiff line numberDiff line change
@@ -640,21 +640,6 @@ class SharedFunctionInfo : public HeapObject {
640640
DISALLOW_COPY_AND_ASSIGN(ScriptIterator);
641641
};
642642

643-
// Iterate over all shared function infos on the heap.
644-
class GlobalIterator {
645-
public:
646-
V8_EXPORT_PRIVATE explicit GlobalIterator(Isolate* isolate);
647-
V8_EXPORT_PRIVATE SharedFunctionInfo Next();
648-
649-
private:
650-
Isolate* isolate_;
651-
Script::Iterator script_iterator_;
652-
WeakArrayList::Iterator noscript_sfi_iterator_;
653-
SharedFunctionInfo::ScriptIterator sfi_iterator_;
654-
DISALLOW_HEAP_ALLOCATION(no_gc_)
655-
DISALLOW_COPY_AND_ASSIGN(GlobalIterator);
656-
};
657-
658643
DECL_CAST(SharedFunctionInfo)
659644

660645
// Constants.

‎deps/v8/src/roots/roots.h

-2
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,6 @@ class Symbol;
255255
/* Feedback vectors that we need for code coverage or type profile */ \
256256
V(Object, feedback_vectors_for_profiling_tools, \
257257
FeedbackVectorsForProfilingTools) \
258-
V(WeakArrayList, noscript_shared_function_infos, \
259-
NoScriptSharedFunctionInfos) \
260258
V(FixedArray, serialized_objects, SerializedObjects) \
261259
V(FixedArray, serialized_global_proxy_sizes, SerializedGlobalProxySizes) \
262260
V(TemplateList, message_listeners, MessageListeners) \

‎deps/v8/test/cctest/heap/test-heap.cc

-28
Original file line numberDiff line numberDiff line change
@@ -5394,34 +5394,6 @@ TEST(ScriptIterator) {
53945394
CHECK_EQ(0, script_count);
53955395
}
53965396

5397-
5398-
TEST(SharedFunctionInfoIterator) {
5399-
CcTest::InitializeVM();
5400-
v8::HandleScope scope(CcTest::isolate());
5401-
Isolate* isolate = CcTest::i_isolate();
5402-
Heap* heap = CcTest::heap();
5403-
LocalContext context;
5404-
5405-
CcTest::CollectAllGarbage();
5406-
CcTest::CollectAllGarbage();
5407-
5408-
int sfi_count = 0;
5409-
{
5410-
HeapObjectIterator it(heap);
5411-
for (HeapObject obj = it.Next(); !obj.is_null(); obj = it.Next()) {
5412-
if (!obj.IsSharedFunctionInfo()) continue;
5413-
sfi_count++;
5414-
}
5415-
}
5416-
5417-
{
5418-
SharedFunctionInfo::GlobalIterator iterator(isolate);
5419-
while (!iterator.Next().is_null()) sfi_count--;
5420-
}
5421-
5422-
CHECK_EQ(0, sfi_count);
5423-
}
5424-
54255397
// This is the same as Factory::NewByteArray, except it doesn't retry on
54265398
// allocation failure.
54275399
AllocationResult HeapTester::AllocateByteArrayForTest(

‎deps/v8/test/cctest/test-roots.cc

-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ bool IsInitiallyMutable(Factory* factory, Address object_address) {
4747
V(dirty_js_finalization_groups) \
4848
V(feedback_vectors_for_profiling_tools) \
4949
V(materialized_objects) \
50-
V(noscript_shared_function_infos) \
5150
V(public_symbol_table) \
5251
V(retained_maps) \
5352
V(retaining_path_targets) \

0 commit comments

Comments
 (0)
Please sign in to comment.