Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: src/objects.h

Issue 2547483002: Store SharedFunctionInfos of a Script in a FixedArray indexed by their ID (Closed)
Patch Set: updates Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 7102 matching lines...) Expand 10 before | Expand all | Expand 10 after
7113 // function from which eval was called. 7113 // function from which eval was called.
7114 DECL_ACCESSORS(eval_from_shared, Object) 7114 DECL_ACCESSORS(eval_from_shared, Object)
7115 7115
7116 // [eval_from_position]: the source position in the code for the function 7116 // [eval_from_position]: the source position in the code for the function
7117 // from which eval was called, as positive integer. Or the code offset in the 7117 // from which eval was called, as positive integer. Or the code offset in the
7118 // code from which eval was called, as negative integer. 7118 // code from which eval was called, as negative integer.
7119 DECL_INT_ACCESSORS(eval_from_position) 7119 DECL_INT_ACCESSORS(eval_from_position)
7120 7120
7121 // [shared_function_infos]: weak fixed array containing all shared 7121 // [shared_function_infos]: weak fixed array containing all shared
7122 // function infos created from this script. 7122 // function infos created from this script.
7123 DECL_ACCESSORS(shared_function_infos, Object) 7123 DECL_ACCESSORS(shared_function_infos, FixedArray)
7124 7124
7125 // [flags]: Holds an exciting bitfield. 7125 // [flags]: Holds an exciting bitfield.
7126 DECL_INT_ACCESSORS(flags) 7126 DECL_INT_ACCESSORS(flags)
7127 7127
7128 // [source_url]: sourceURL from magic comment 7128 // [source_url]: sourceURL from magic comment
7129 DECL_ACCESSORS(source_url, Object) 7129 DECL_ACCESSORS(source_url, Object)
7130 7130
7131 // [source_mapping_url]: sourceMappingURL magic comment 7131 // [source_mapping_url]: sourceMappingURL magic comment
7132 DECL_ACCESSORS(source_mapping_url, Object) 7132 DECL_ACCESSORS(source_mapping_url, Object)
7133 7133
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
7732 // Indicates that this is a synthesized function to set up class instance 7732 // Indicates that this is a synthesized function to set up class instance
7733 // fields. 7733 // fields.
7734 DECL_BOOLEAN_ACCESSORS(is_class_field_initializer) 7734 DECL_BOOLEAN_ACCESSORS(is_class_field_initializer)
7735 7735
7736 // Indicates that this function is an asm function. 7736 // Indicates that this function is an asm function.
7737 DECL_BOOLEAN_ACCESSORS(asm_function) 7737 DECL_BOOLEAN_ACCESSORS(asm_function)
7738 7738
7739 // Indicates that the the shared function info is deserialized from cache. 7739 // Indicates that the the shared function info is deserialized from cache.
7740 DECL_BOOLEAN_ACCESSORS(deserialized) 7740 DECL_BOOLEAN_ACCESSORS(deserialized)
7741 7741
7742 // Indicates that the the shared function info has never been compiled before.
7743 DECL_BOOLEAN_ACCESSORS(never_compiled)
7744
7745 // Whether this function was created from a FunctionDeclaration. 7742 // Whether this function was created from a FunctionDeclaration.
7746 DECL_BOOLEAN_ACCESSORS(is_declaration) 7743 DECL_BOOLEAN_ACCESSORS(is_declaration)
7747 7744
7748 // Whether this function was marked to be tiered up. 7745 // Whether this function was marked to be tiered up.
7749 DECL_BOOLEAN_ACCESSORS(marked_for_tier_up) 7746 DECL_BOOLEAN_ACCESSORS(marked_for_tier_up)
7750 7747
7751 // Indicates that asm->wasm conversion failed and should not be re-attempted. 7748 // Indicates that asm->wasm conversion failed and should not be re-attempted.
7752 DECL_BOOLEAN_ACCESSORS(is_asm_wasm_broken) 7749 DECL_BOOLEAN_ACCESSORS(is_asm_wasm_broken)
7753 7750
7754 inline FunctionKind kind() const; 7751 inline FunctionKind kind() const;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
7829 7826
7830 void ResetForNewContext(int new_ic_age); 7827 void ResetForNewContext(int new_ic_age);
7831 7828
7832 // Iterate over all shared function infos. 7829 // Iterate over all shared function infos.
7833 class Iterator { 7830 class Iterator {
7834 public: 7831 public:
7835 explicit Iterator(Isolate* isolate); 7832 explicit Iterator(Isolate* isolate);
7836 SharedFunctionInfo* Next(); 7833 SharedFunctionInfo* Next();
7837 7834
7838 private: 7835 private:
7839 bool NextScript(); 7836 void NextScript();
7840 7837
7841 Script::Iterator script_iterator_; 7838 Script::Iterator script_iterator_;
7842 WeakFixedArray::Iterator sfi_iterator_; 7839 WeakFixedArray::Iterator sfi_iterator_;
7840 Script* current_script_;
7841 int index_;
7843 DisallowHeapAllocation no_gc_; 7842 DisallowHeapAllocation no_gc_;
7844 DISALLOW_COPY_AND_ASSIGN(Iterator); 7843 DISALLOW_COPY_AND_ASSIGN(Iterator);
7845 }; 7844 };
7846 7845
7847 DECLARE_CAST(SharedFunctionInfo) 7846 DECLARE_CAST(SharedFunctionInfo)
7848 7847
7849 // Constants. 7848 // Constants.
7850 static const int kDontAdaptArgumentsSentinel = -1; 7849 static const int kDontAdaptArgumentsSentinel = -1;
7851 7850
7852 // Layout description. 7851 // Layout description.
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
7994 static const int kIsTopLevelBit = 1; 7993 static const int kIsTopLevelBit = 1;
7995 static const int kStartPositionShift = 2; 7994 static const int kStartPositionShift = 2;
7996 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); 7995 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1);
7997 7996
7998 // Bit positions in compiler_hints. 7997 // Bit positions in compiler_hints.
7999 enum CompilerHints { 7998 enum CompilerHints {
8000 // byte 0 7999 // byte 0
8001 kAllowLazyCompilation, 8000 kAllowLazyCompilation,
8002 kMarkedForTierUp, 8001 kMarkedForTierUp,
8003 kOptimizationDisabled, 8002 kOptimizationDisabled,
8004 kNeverCompiled, 8003 kIsClassFieldInitializer,
8005 kNative, 8004 kNative,
8006 kStrictModeFunction, 8005 kStrictModeFunction,
8007 kUsesArguments, 8006 kUsesArguments,
8008 kNeedsHomeObject, 8007 kNeedsHomeObject,
8009 // byte 1 8008 // byte 1
8010 kHasDuplicateParameters, 8009 kHasDuplicateParameters,
8011 kForceInline, 8010 kForceInline,
8012 kIsAsmFunction, 8011 kIsAsmFunction,
8013 kIsAnonymousExpression, 8012 kIsAnonymousExpression,
8014 kNameShouldPrintAsAnonymous, 8013 kNameShouldPrintAsAnonymous,
8015 kIsFunction, 8014 kIsFunction,
8016 kMustUseIgnitionTurbo, 8015 kMustUseIgnitionTurbo,
8017 kDontFlush, 8016 kDontFlush,
8018 // byte 2 8017 // byte 2
8019 kFunctionKind, 8018 kFunctionKind,
8020 // rest of byte 2 and first two bits of byte 3 are used by FunctionKind 8019 // rest of byte 2 and first two bits of byte 3 are used by FunctionKind
8021 // byte 3 8020 // byte 3
8022 kDeserialized = kFunctionKind + 10, 8021 kDeserialized = kFunctionKind + 10,
8023 kIsDeclaration, 8022 kIsDeclaration,
8024 kIsAsmWasmBroken, 8023 kIsAsmWasmBroken,
8025 kRequiresClassFieldInit, 8024 kRequiresClassFieldInit,
8026 kIsClassFieldInitializer,
8027 kCompilerHintsCount, // Pseudo entry 8025 kCompilerHintsCount, // Pseudo entry
8028 }; 8026 };
8029 // kFunctionKind has to be byte-aligned 8027 // kFunctionKind has to be byte-aligned
8030 STATIC_ASSERT((kFunctionKind % kBitsPerByte) == 0); 8028 STATIC_ASSERT((kFunctionKind % kBitsPerByte) == 0);
8031 8029
8032 class FunctionKindBits : public BitField<FunctionKind, kFunctionKind, 10> {}; 8030 class FunctionKindBits : public BitField<FunctionKind, kFunctionKind, 10> {};
8033 8031
8034 class DeoptCountBits : public BitField<int, 0, 4> {}; 8032 class DeoptCountBits : public BitField<int, 0, 4> {};
8035 class OptReenableTriesBits : public BitField<int, 4, 18> {}; 8033 class OptReenableTriesBits : public BitField<int, 4, 18> {};
8036 class ICAgeBits : public BitField<int, 22, 8> {}; 8034 class ICAgeBits : public BitField<int, 22, 8> {};
(...skipping 3922 matching lines...) Expand 10 before | Expand all | Expand 10 after
11959 } 11957 }
11960 return value; 11958 return value;
11961 } 11959 }
11962 }; 11960 };
11963 11961
11964 11962
11965 } // NOLINT, false-positive due to second-order macros. 11963 } // NOLINT, false-positive due to second-order macros.
11966 } // NOLINT, false-positive due to second-order macros. 11964 } // NOLINT, false-positive due to second-order macros.
11967 11965
11968 #endif // V8_OBJECTS_H_ 11966 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698