| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1120 V(kExpected0AsASmiSentinel, "Expected 0 as a Smi sentinel") \ | 1120 V(kExpected0AsASmiSentinel, "Expected 0 as a Smi sentinel") \ |
| 1121 V(kExpectedAlignmentMarker, "expected alignment marker") \ | 1121 V(kExpectedAlignmentMarker, "expected alignment marker") \ |
| 1122 V(kExpectedFunctionObject, "expected function object in register") \ | 1122 V(kExpectedFunctionObject, "expected function object in register") \ |
| 1123 V(kExpectedHeapNumber, "expected HeapNumber") \ | 1123 V(kExpectedHeapNumber, "expected HeapNumber") \ |
| 1124 V(kExpectedNativeContext, "expected native context") \ | 1124 V(kExpectedNativeContext, "expected native context") \ |
| 1125 V(kExpectedNonIdenticalObjects, "expected non-identical objects") \ | 1125 V(kExpectedNonIdenticalObjects, "expected non-identical objects") \ |
| 1126 V(kExpectedNonNullContext, "expected non-null context") \ | 1126 V(kExpectedNonNullContext, "expected non-null context") \ |
| 1127 V(kExpectedPositiveZero, "expected +0.0") \ | 1127 V(kExpectedPositiveZero, "expected +0.0") \ |
| 1128 V(kExpectedPropertyCellInTypeInfoCell, \ | 1128 V(kExpectedPropertyCellInTypeInfoCell, \ |
| 1129 "Expected property cell in type_info_cell") \ | 1129 "Expected property cell in type_info_cell") \ |
| 1130 V(kExpectedAllocationSiteInCell, \ |
| 1131 "Expected AllocationSite in property cell") \ |
| 1130 V(kExpectedPropertyCellInRegisterA2, \ | 1132 V(kExpectedPropertyCellInRegisterA2, \ |
| 1131 "Expected property cell in register a2") \ | 1133 "Expected property cell in register a2") \ |
| 1132 V(kExpectedPropertyCellInRegisterEbx, \ | 1134 V(kExpectedPropertyCellInRegisterEbx, \ |
| 1133 "Expected property cell in register ebx") \ | 1135 "Expected property cell in register ebx") \ |
| 1134 V(kExpectedPropertyCellInRegisterRbx, \ | 1136 V(kExpectedPropertyCellInRegisterRbx, \ |
| 1135 "Expected property cell in register rbx") \ | 1137 "Expected property cell in register rbx") \ |
| 1136 V(kExpectedSmiOrHeapNumber, "expected smi or HeapNumber") \ | 1138 V(kExpectedSmiOrHeapNumber, "expected smi or HeapNumber") \ |
| 1137 V(kExpectingAlignmentForCopyBytes, \ | 1139 V(kExpectingAlignmentForCopyBytes, \ |
| 1138 "Expecting alignment for CopyBytes") \ | 1140 "Expecting alignment for CopyBytes") \ |
| 1139 V(kExportDeclaration, "Export declaration") \ | 1141 V(kExportDeclaration, "Export declaration") \ |
| (...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1789 // Useful when the map pointer field is used for other purposes. | 1791 // Useful when the map pointer field is used for other purposes. |
| 1790 // GC internal. | 1792 // GC internal. |
| 1791 inline int SizeFromMap(Map* map); | 1793 inline int SizeFromMap(Map* map); |
| 1792 | 1794 |
| 1793 // Returns the field at offset in obj, as a read/write Object* reference. | 1795 // Returns the field at offset in obj, as a read/write Object* reference. |
| 1794 // Does no checking, and is safe to use during GC, while maps are invalid. | 1796 // Does no checking, and is safe to use during GC, while maps are invalid. |
| 1795 // Does not invoke write barrier, so should only be assigned to | 1797 // Does not invoke write barrier, so should only be assigned to |
| 1796 // during marking GC. | 1798 // during marking GC. |
| 1797 static inline Object** RawField(HeapObject* obj, int offset); | 1799 static inline Object** RawField(HeapObject* obj, int offset); |
| 1798 | 1800 |
| 1801 // Adds the |code| object related to |name| to the code cache of this map. If |
| 1802 // this map is a dictionary map that is shared, the map copied and installed |
| 1803 // onto the object. |
| 1804 static void UpdateMapCodeCache(Handle<HeapObject> object, |
| 1805 Handle<Name> name, |
| 1806 Handle<Code> code); |
| 1807 |
| 1799 // Casting. | 1808 // Casting. |
| 1800 static inline HeapObject* cast(Object* obj); | 1809 static inline HeapObject* cast(Object* obj); |
| 1801 | 1810 |
| 1802 // Return the write barrier mode for this. Callers of this function | 1811 // Return the write barrier mode for this. Callers of this function |
| 1803 // must be able to present a reference to an DisallowHeapAllocation | 1812 // must be able to present a reference to an DisallowHeapAllocation |
| 1804 // object as a sign that they are not going to use this function | 1813 // object as a sign that they are not going to use this function |
| 1805 // from code that allocates and thus invalidates the returned write | 1814 // from code that allocates and thus invalidates the returned write |
| 1806 // barrier mode. | 1815 // barrier mode. |
| 1807 inline WriteBarrierMode GetWriteBarrierMode( | 1816 inline WriteBarrierMode GetWriteBarrierMode( |
| 1808 const DisallowHeapAllocation& promise); | 1817 const DisallowHeapAllocation& promise); |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2221 static void AllocateStorageForMap(Handle<JSObject> object, Handle<Map> map); | 2230 static void AllocateStorageForMap(Handle<JSObject> object, Handle<Map> map); |
| 2222 inline MUST_USE_RESULT MaybeObject* AllocateStorageForMap(Map* map); | 2231 inline MUST_USE_RESULT MaybeObject* AllocateStorageForMap(Map* map); |
| 2223 | 2232 |
| 2224 static void MigrateInstance(Handle<JSObject> instance); | 2233 static void MigrateInstance(Handle<JSObject> instance); |
| 2225 inline MUST_USE_RESULT MaybeObject* MigrateInstance(); | 2234 inline MUST_USE_RESULT MaybeObject* MigrateInstance(); |
| 2226 | 2235 |
| 2227 static Handle<Object> TryMigrateInstance(Handle<JSObject> instance); | 2236 static Handle<Object> TryMigrateInstance(Handle<JSObject> instance); |
| 2228 inline MUST_USE_RESULT MaybeObject* TryMigrateInstance(); | 2237 inline MUST_USE_RESULT MaybeObject* TryMigrateInstance(); |
| 2229 | 2238 |
| 2230 // Can cause GC. | 2239 // Can cause GC. |
| 2231 MUST_USE_RESULT MaybeObject* SetLocalPropertyIgnoreAttributes( | |
| 2232 Name* key, | |
| 2233 Object* value, | |
| 2234 PropertyAttributes attributes, | |
| 2235 ValueType value_type = OPTIMAL_REPRESENTATION, | |
| 2236 StoreMode mode = ALLOW_AS_CONSTANT, | |
| 2237 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK); | |
| 2238 MUST_USE_RESULT MaybeObject* SetLocalPropertyIgnoreAttributesTrampoline( | 2240 MUST_USE_RESULT MaybeObject* SetLocalPropertyIgnoreAttributesTrampoline( |
| 2239 Name* key, | 2241 Name* key, |
| 2240 Object* value, | 2242 Object* value, |
| 2241 PropertyAttributes attributes, | 2243 PropertyAttributes attributes, |
| 2242 ValueType value_type = OPTIMAL_REPRESENTATION, | 2244 ValueType value_type = OPTIMAL_REPRESENTATION, |
| 2243 StoreMode mode = ALLOW_AS_CONSTANT, | 2245 StoreMode mode = ALLOW_AS_CONSTANT, |
| 2244 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK); | 2246 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK); |
| 2245 | 2247 |
| 2246 // Retrieve a value in a normalized object given a lookup result. | 2248 // Retrieve a value in a normalized object given a lookup result. |
| 2247 // Handles the special representation of JS global objects. | 2249 // Handles the special representation of JS global objects. |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2607 PropertyNormalizationMode mode, | 2609 PropertyNormalizationMode mode, |
| 2608 int expected_additional_properties); | 2610 int expected_additional_properties); |
| 2609 | 2611 |
| 2610 // Convert and update the elements backing store to be a | 2612 // Convert and update the elements backing store to be a |
| 2611 // SeededNumberDictionary dictionary. Returns the backing after conversion. | 2613 // SeededNumberDictionary dictionary. Returns the backing after conversion. |
| 2612 static Handle<SeededNumberDictionary> NormalizeElements( | 2614 static Handle<SeededNumberDictionary> NormalizeElements( |
| 2613 Handle<JSObject> object); | 2615 Handle<JSObject> object); |
| 2614 | 2616 |
| 2615 MUST_USE_RESULT MaybeObject* NormalizeElements(); | 2617 MUST_USE_RESULT MaybeObject* NormalizeElements(); |
| 2616 | 2618 |
| 2617 static void UpdateMapCodeCache(Handle<JSObject> object, | |
| 2618 Handle<Name> name, | |
| 2619 Handle<Code> code); | |
| 2620 | |
| 2621 // Transform slow named properties to fast variants. | 2619 // Transform slow named properties to fast variants. |
| 2622 // Returns failure if allocation failed. | 2620 // Returns failure if allocation failed. |
| 2623 static void TransformToFastProperties(Handle<JSObject> object, | 2621 static void TransformToFastProperties(Handle<JSObject> object, |
| 2624 int unused_property_fields); | 2622 int unused_property_fields); |
| 2625 | 2623 |
| 2626 MUST_USE_RESULT MaybeObject* TransformToFastProperties( | 2624 MUST_USE_RESULT MaybeObject* TransformToFastProperties( |
| 2627 int unused_property_fields); | 2625 int unused_property_fields); |
| 2628 | 2626 |
| 2629 // Access fast-case object properties at index. | 2627 // Access fast-case object properties at index. |
| 2630 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( | 2628 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2665 static Handle<Object> PreventExtensions(Handle<JSObject> object); | 2663 static Handle<Object> PreventExtensions(Handle<JSObject> object); |
| 2666 MUST_USE_RESULT MaybeObject* PreventExtensions(); | 2664 MUST_USE_RESULT MaybeObject* PreventExtensions(); |
| 2667 | 2665 |
| 2668 // ES5 Object.freeze | 2666 // ES5 Object.freeze |
| 2669 MUST_USE_RESULT MaybeObject* Freeze(Isolate* isolate); | 2667 MUST_USE_RESULT MaybeObject* Freeze(Isolate* isolate); |
| 2670 | 2668 |
| 2671 | 2669 |
| 2672 // Called the first time an object is observed with ES7 Object.observe. | 2670 // Called the first time an object is observed with ES7 Object.observe. |
| 2673 MUST_USE_RESULT MaybeObject* SetObserved(Isolate* isolate); | 2671 MUST_USE_RESULT MaybeObject* SetObserved(Isolate* isolate); |
| 2674 | 2672 |
| 2675 // Copy object | 2673 // Copy object. |
| 2676 MUST_USE_RESULT MaybeObject* DeepCopy(Isolate* isolate); | 2674 static Handle<JSObject> Copy(Handle<JSObject> object); |
| 2675 static Handle<JSObject> DeepCopy(Handle<JSObject> object); |
| 2677 | 2676 |
| 2678 // Dispatched behavior. | 2677 // Dispatched behavior. |
| 2679 void JSObjectShortPrint(StringStream* accumulator); | 2678 void JSObjectShortPrint(StringStream* accumulator); |
| 2680 DECLARE_PRINTER(JSObject) | 2679 DECLARE_PRINTER(JSObject) |
| 2681 DECLARE_VERIFIER(JSObject) | 2680 DECLARE_VERIFIER(JSObject) |
| 2682 #ifdef OBJECT_PRINT | 2681 #ifdef OBJECT_PRINT |
| 2683 void PrintProperties(FILE* out = stdout); | 2682 void PrintProperties(FILE* out = stdout); |
| 2684 void PrintElements(FILE* out = stdout); | 2683 void PrintElements(FILE* out = stdout); |
| 2685 void PrintTransitions(FILE* out = stdout); | 2684 void PrintTransitions(FILE* out = stdout); |
| 2686 #endif | 2685 #endif |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2769 Handle<Name> name, | 2768 Handle<Name> name, |
| 2770 Handle<Object> old_value); | 2769 Handle<Object> old_value); |
| 2771 | 2770 |
| 2772 // Deliver change records to observers. May cause GC. | 2771 // Deliver change records to observers. May cause GC. |
| 2773 static void DeliverChangeRecords(Isolate* isolate); | 2772 static void DeliverChangeRecords(Isolate* isolate); |
| 2774 | 2773 |
| 2775 private: | 2774 private: |
| 2776 friend class DictionaryElementsAccessor; | 2775 friend class DictionaryElementsAccessor; |
| 2777 friend class JSReceiver; | 2776 friend class JSReceiver; |
| 2778 | 2777 |
| 2778 // TODO(mstarzinger): Soon to be handlified. |
| 2779 MUST_USE_RESULT MaybeObject* SetLocalPropertyIgnoreAttributes( |
| 2780 Name* key, |
| 2781 Object* value, |
| 2782 PropertyAttributes attributes, |
| 2783 ValueType value_type = OPTIMAL_REPRESENTATION, |
| 2784 StoreMode mode = ALLOW_AS_CONSTANT, |
| 2785 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK); |
| 2786 |
| 2779 MUST_USE_RESULT MaybeObject* GetElementWithCallback(Object* receiver, | 2787 MUST_USE_RESULT MaybeObject* GetElementWithCallback(Object* receiver, |
| 2780 Object* structure, | 2788 Object* structure, |
| 2781 uint32_t index, | 2789 uint32_t index, |
| 2782 Object* holder); | 2790 Object* holder); |
| 2783 MUST_USE_RESULT PropertyAttributes GetElementAttributeWithInterceptor( | 2791 MUST_USE_RESULT PropertyAttributes GetElementAttributeWithInterceptor( |
| 2784 JSReceiver* receiver, | 2792 JSReceiver* receiver, |
| 2785 uint32_t index, | 2793 uint32_t index, |
| 2786 bool continue_search); | 2794 bool continue_search); |
| 2787 MUST_USE_RESULT PropertyAttributes GetElementAttributeWithoutInterceptor( | 2795 MUST_USE_RESULT PropertyAttributes GetElementAttributeWithoutInterceptor( |
| 2788 JSReceiver* receiver, | 2796 JSReceiver* receiver, |
| (...skipping 2048 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4837 | 4845 |
| 4838 static const char* Kind2String(Kind kind); | 4846 static const char* Kind2String(Kind kind); |
| 4839 | 4847 |
| 4840 // Types of stubs. | 4848 // Types of stubs. |
| 4841 enum StubType { | 4849 enum StubType { |
| 4842 NORMAL, | 4850 NORMAL, |
| 4843 FIELD, | 4851 FIELD, |
| 4844 CONSTANT, | 4852 CONSTANT, |
| 4845 CALLBACKS, | 4853 CALLBACKS, |
| 4846 INTERCEPTOR, | 4854 INTERCEPTOR, |
| 4847 MAP_TRANSITION, | 4855 TRANSITION, |
| 4848 NONEXISTENT | 4856 NONEXISTENT |
| 4849 }; | 4857 }; |
| 4850 | 4858 |
| 4851 enum StubHolder { | 4859 enum StubHolder { |
| 4852 OWN_STUB, | 4860 OWN_STUB, |
| 4853 PROTOTYPE_STUB | 4861 PROTOTYPE_STUB |
| 4854 }; | 4862 }; |
| 4855 | 4863 |
| 4856 typedef int ExtraICState; | 4864 typedef int ExtraICState; |
| 4857 | 4865 |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5180 kAfterLastCodeAge, | 5188 kAfterLastCodeAge, |
| 5181 kLastCodeAge = kAfterLastCodeAge - 1, | 5189 kLastCodeAge = kAfterLastCodeAge - 1, |
| 5182 kCodeAgeCount = kAfterLastCodeAge - 1 | 5190 kCodeAgeCount = kAfterLastCodeAge - 1 |
| 5183 }; | 5191 }; |
| 5184 #undef DECLARE_CODE_AGE_ENUM | 5192 #undef DECLARE_CODE_AGE_ENUM |
| 5185 | 5193 |
| 5186 // Code aging. Indicates how many full GCs this code has survived without | 5194 // Code aging. Indicates how many full GCs this code has survived without |
| 5187 // being entered through the prologue. Used to determine when it is | 5195 // being entered through the prologue. Used to determine when it is |
| 5188 // relatively safe to flush this code object and replace it with the lazy | 5196 // relatively safe to flush this code object and replace it with the lazy |
| 5189 // compilation stub. | 5197 // compilation stub. |
| 5190 static void MakeCodeAgeSequenceYoung(byte* sequence); | 5198 static void MakeCodeAgeSequenceYoung(byte* sequence, Isolate* isolate); |
| 5191 void MakeOlder(MarkingParity); | 5199 void MakeOlder(MarkingParity); |
| 5192 static bool IsYoungSequence(byte* sequence); | 5200 static bool IsYoungSequence(byte* sequence); |
| 5193 bool IsOld(); | 5201 bool IsOld(); |
| 5194 int GetAge(); | 5202 int GetAge(); |
| 5195 | 5203 |
| 5196 void PrintDeoptLocation(int bailout_id); | 5204 void PrintDeoptLocation(int bailout_id); |
| 5197 bool CanDeoptAt(Address pc); | 5205 bool CanDeoptAt(Address pc); |
| 5198 | 5206 |
| 5199 #ifdef VERIFY_HEAP | 5207 #ifdef VERIFY_HEAP |
| 5200 void VerifyEmbeddedMapsDependency(); | 5208 void VerifyEmbeddedMapsDependency(); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5326 | 5334 |
| 5327 private: | 5335 private: |
| 5328 friend class RelocIterator; | 5336 friend class RelocIterator; |
| 5329 | 5337 |
| 5330 // Code aging | 5338 // Code aging |
| 5331 byte* FindCodeAgeSequence(); | 5339 byte* FindCodeAgeSequence(); |
| 5332 static void GetCodeAgeAndParity(Code* code, Age* age, | 5340 static void GetCodeAgeAndParity(Code* code, Age* age, |
| 5333 MarkingParity* parity); | 5341 MarkingParity* parity); |
| 5334 static void GetCodeAgeAndParity(byte* sequence, Age* age, | 5342 static void GetCodeAgeAndParity(byte* sequence, Age* age, |
| 5335 MarkingParity* parity); | 5343 MarkingParity* parity); |
| 5336 static Code* GetCodeAgeStub(Age age, MarkingParity parity); | 5344 static Code* GetCodeAgeStub(Isolate* isolate, Age age, MarkingParity parity); |
| 5337 | 5345 |
| 5338 // Code aging -- platform-specific | 5346 // Code aging -- platform-specific |
| 5339 static void PatchPlatformCodeAge(byte* sequence, Age age, | 5347 static void PatchPlatformCodeAge(Isolate* isolate, |
| 5348 byte* sequence, Age age, |
| 5340 MarkingParity parity); | 5349 MarkingParity parity); |
| 5341 | 5350 |
| 5342 DISALLOW_IMPLICIT_CONSTRUCTORS(Code); | 5351 DISALLOW_IMPLICIT_CONSTRUCTORS(Code); |
| 5343 }; | 5352 }; |
| 5344 | 5353 |
| 5345 | 5354 |
| 5346 class CompilationInfo; | 5355 class CompilationInfo; |
| 5347 | 5356 |
| 5348 // This class describes the layout of dependent codes array of a map. The | 5357 // This class describes the layout of dependent codes array of a map. The |
| 5349 // array is partitioned into several groups of dependent codes. Each group | 5358 // array is partitioned into several groups of dependent codes. Each group |
| (...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5952 // heap verification is turned on. | 5961 // heap verification is turned on. |
| 5953 void ZapPrototypeTransitions(); | 5962 void ZapPrototypeTransitions(); |
| 5954 void ZapTransitions(); | 5963 void ZapTransitions(); |
| 5955 | 5964 |
| 5956 bool CanTransition() { | 5965 bool CanTransition() { |
| 5957 // Only JSObject and subtypes have map transitions and back pointers. | 5966 // Only JSObject and subtypes have map transitions and back pointers. |
| 5958 STATIC_ASSERT(LAST_TYPE == LAST_JS_OBJECT_TYPE); | 5967 STATIC_ASSERT(LAST_TYPE == LAST_JS_OBJECT_TYPE); |
| 5959 return instance_type() >= FIRST_JS_OBJECT_TYPE; | 5968 return instance_type() >= FIRST_JS_OBJECT_TYPE; |
| 5960 } | 5969 } |
| 5961 | 5970 |
| 5971 bool IsJSObjectMap() { |
| 5972 return instance_type() >= FIRST_JS_OBJECT_TYPE; |
| 5973 } |
| 5974 |
| 5962 // Fires when the layout of an object with a leaf map changes. | 5975 // Fires when the layout of an object with a leaf map changes. |
| 5963 // This includes adding transitions to the leaf map or changing | 5976 // This includes adding transitions to the leaf map or changing |
| 5964 // the descriptor array. | 5977 // the descriptor array. |
| 5965 inline void NotifyLeafMapLayoutChange(); | 5978 inline void NotifyLeafMapLayoutChange(); |
| 5966 | 5979 |
| 5967 inline bool CanOmitMapChecks(); | 5980 inline bool CanOmitMapChecks(); |
| 5968 | 5981 |
| 5969 void AddDependentCompilationInfo(DependentCode::DependencyGroup group, | 5982 void AddDependentCompilationInfo(DependentCode::DependencyGroup group, |
| 5970 CompilationInfo* info); | 5983 CompilationInfo* info); |
| 5971 | 5984 |
| (...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7022 // Tells whether or not this function has been optimized. | 7035 // Tells whether or not this function has been optimized. |
| 7023 inline bool IsOptimized(); | 7036 inline bool IsOptimized(); |
| 7024 | 7037 |
| 7025 // Tells whether or not this function can be optimized. | 7038 // Tells whether or not this function can be optimized. |
| 7026 inline bool IsOptimizable(); | 7039 inline bool IsOptimizable(); |
| 7027 | 7040 |
| 7028 // Mark this function for lazy recompilation. The function will be | 7041 // Mark this function for lazy recompilation. The function will be |
| 7029 // recompiled the next time it is executed. | 7042 // recompiled the next time it is executed. |
| 7030 void MarkForLazyRecompilation(); | 7043 void MarkForLazyRecompilation(); |
| 7031 void MarkForConcurrentRecompilation(); | 7044 void MarkForConcurrentRecompilation(); |
| 7032 void MarkForInstallingRecompiledCode(); | |
| 7033 void MarkInRecompileQueue(); | 7045 void MarkInRecompileQueue(); |
| 7034 | 7046 |
| 7035 // Helpers to compile this function. Returns true on success, false on | 7047 // Helpers to compile this function. Returns true on success, false on |
| 7036 // failure (e.g., stack overflow during compilation). | 7048 // failure (e.g., stack overflow during compilation). |
| 7037 static bool EnsureCompiled(Handle<JSFunction> function, | 7049 static bool EnsureCompiled(Handle<JSFunction> function, |
| 7038 ClearExceptionFlag flag); | 7050 ClearExceptionFlag flag); |
| 7039 static bool CompileLazy(Handle<JSFunction> function, | 7051 static bool CompileLazy(Handle<JSFunction> function, |
| 7040 ClearExceptionFlag flag); | 7052 ClearExceptionFlag flag); |
| 7041 static Handle<Code> CompileOsr(Handle<JSFunction> function, | 7053 static Handle<Code> CompileOsr(Handle<JSFunction> function, |
| 7042 BailoutId osr_ast_id, | 7054 BailoutId osr_ast_id, |
| 7043 ClearExceptionFlag flag); | 7055 ClearExceptionFlag flag); |
| 7044 static bool CompileOptimized(Handle<JSFunction> function, | 7056 static bool CompileOptimized(Handle<JSFunction> function, |
| 7045 ClearExceptionFlag flag); | 7057 ClearExceptionFlag flag); |
| 7046 | 7058 |
| 7047 // Tells whether or not the function is already marked for lazy | 7059 // Tells whether or not the function is already marked for lazy |
| 7048 // recompilation. | 7060 // recompilation. |
| 7049 inline bool IsMarkedForLazyRecompilation(); | 7061 inline bool IsMarkedForLazyRecompilation(); |
| 7050 inline bool IsMarkedForConcurrentRecompilation(); | 7062 inline bool IsMarkedForConcurrentRecompilation(); |
| 7051 inline bool IsMarkedForInstallingRecompiledCode(); | |
| 7052 | 7063 |
| 7053 // Tells whether or not the function is on the concurrent recompilation queue. | 7064 // Tells whether or not the function is on the concurrent recompilation queue. |
| 7054 inline bool IsInRecompileQueue(); | 7065 inline bool IsInRecompileQueue(); |
| 7055 | 7066 |
| 7056 // Check whether or not this function is inlineable. | 7067 // Check whether or not this function is inlineable. |
| 7057 bool IsInlineable(); | 7068 bool IsInlineable(); |
| 7058 | 7069 |
| 7059 // [literals_or_bindings]: Fixed array holding either | 7070 // [literals_or_bindings]: Fixed array holding either |
| 7060 // the materialized literals or the bindings of a bound function. | 7071 // the materialized literals or the bindings of a bound function. |
| 7061 // | 7072 // |
| (...skipping 3212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10274 } else { | 10285 } else { |
| 10275 value &= ~(1 << bit_position); | 10286 value &= ~(1 << bit_position); |
| 10276 } | 10287 } |
| 10277 return value; | 10288 return value; |
| 10278 } | 10289 } |
| 10279 }; | 10290 }; |
| 10280 | 10291 |
| 10281 } } // namespace v8::internal | 10292 } } // namespace v8::internal |
| 10282 | 10293 |
| 10283 #endif // V8_OBJECTS_H_ | 10294 #endif // V8_OBJECTS_H_ |
| OLD | NEW |