Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index b2448793e821a8256a0d51e442c0fbb96f0c2c35..0280c960ac52b9f8a285b4b3e8b3f5a8a8932b42 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -7114,7 +7114,7 @@ class Script: public Struct { |
// [shared_function_infos]: weak fixed array containing all shared |
// function infos created from this script. |
- DECL_ACCESSORS(shared_function_infos, Object) |
+ DECL_ACCESSORS(shared_function_infos, FixedArray) |
// [flags]: Holds an exciting bitfield. |
DECL_INT_ACCESSORS(flags) |
@@ -7199,7 +7199,8 @@ class Script: public Struct { |
// Look through the list of existing shared function infos to find one |
// that matches the function literal. Return empty handle if not found. |
- MaybeHandle<SharedFunctionInfo> FindSharedFunctionInfo(FunctionLiteral* fun); |
+ MaybeHandle<SharedFunctionInfo> FindSharedFunctionInfo(Isolate* isolate, |
+ FunctionLiteral* fun); |
// Iterate over all script objects on the heap. |
class Iterator { |
@@ -7727,9 +7728,6 @@ class SharedFunctionInfo: public HeapObject { |
// Indicates that the the shared function info is deserialized from cache. |
DECL_BOOLEAN_ACCESSORS(deserialized) |
- // Indicates that the the shared function info has never been compiled before. |
- DECL_BOOLEAN_ACCESSORS(never_compiled) |
- |
// Whether this function was created from a FunctionDeclaration. |
DECL_BOOLEAN_ACCESSORS(is_declaration) |
@@ -7817,19 +7815,35 @@ class SharedFunctionInfo: public HeapObject { |
void ResetForNewContext(int new_ic_age); |
- // Iterate over all shared function infos. |
- class Iterator { |
+ // Iterate over all shared function infos in a given script. |
+ class ScriptIterator { |
public: |
- explicit Iterator(Isolate* isolate); |
+ explicit ScriptIterator(Handle<Script> script); |
+ ScriptIterator(Isolate* isolate, Handle<FixedArray> shared_function_infos); |
SharedFunctionInfo* Next(); |
+ // Reset the iterator to run on |script|. |
+ void Reset(Handle<Script> script); |
+ |
private: |
- bool NextScript(); |
+ Isolate* isolate_; |
+ Handle<FixedArray> shared_function_infos_; |
+ int index_; |
+ DISALLOW_COPY_AND_ASSIGN(ScriptIterator); |
+ }; |
+ // Iterate over all shared function infos on the heap. |
+ class GlobalIterator { |
+ public: |
+ explicit GlobalIterator(Isolate* isolate); |
+ SharedFunctionInfo* Next(); |
+ |
+ private: |
Script::Iterator script_iterator_; |
- WeakFixedArray::Iterator sfi_iterator_; |
+ WeakFixedArray::Iterator noscript_sfi_iterator_; |
+ SharedFunctionInfo::ScriptIterator sfi_iterator_; |
DisallowHeapAllocation no_gc_; |
- DISALLOW_COPY_AND_ASSIGN(Iterator); |
+ DISALLOW_COPY_AND_ASSIGN(GlobalIterator); |
}; |
DECLARE_CAST(SharedFunctionInfo) |
@@ -7989,7 +8003,7 @@ class SharedFunctionInfo: public HeapObject { |
kAllowLazyCompilation, |
kMarkedForTierUp, |
kOptimizationDisabled, |
- kNeverCompiled, |
+ kIsClassFieldInitializer, |
kNative, |
kStrictModeFunction, |
kUsesArguments, |
@@ -8011,7 +8025,6 @@ class SharedFunctionInfo: public HeapObject { |
kIsDeclaration, |
kIsAsmWasmBroken, |
kRequiresClassFieldInit, |
- kIsClassFieldInitializer, |
kCompilerHintsCount, // Pseudo entry |
}; |
// kFunctionKind has to be byte-aligned |