| 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 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1227 V(kNoCasesLeft, "no cases left") \ | 1227 V(kNoCasesLeft, "no cases left") \ |
| 1228 V(kNoEmptyArraysHereInEmitFastAsciiArrayJoin, \ | 1228 V(kNoEmptyArraysHereInEmitFastAsciiArrayJoin, \ |
| 1229 "No empty arrays here in EmitFastAsciiArrayJoin") \ | 1229 "No empty arrays here in EmitFastAsciiArrayJoin") \ |
| 1230 V(kNonInitializerAssignmentToConst, \ | 1230 V(kNonInitializerAssignmentToConst, \ |
| 1231 "non-initializer assignment to const") \ | 1231 "non-initializer assignment to const") \ |
| 1232 V(kNonSmiIndex, "Non-smi index") \ | 1232 V(kNonSmiIndex, "Non-smi index") \ |
| 1233 V(kNonSmiKeyInArrayLiteral, "Non-smi key in array literal") \ | 1233 V(kNonSmiKeyInArrayLiteral, "Non-smi key in array literal") \ |
| 1234 V(kNonSmiValue, "Non-smi value") \ | 1234 V(kNonSmiValue, "Non-smi value") \ |
| 1235 V(kNotEnoughVirtualRegistersForValues, \ | 1235 V(kNotEnoughVirtualRegistersForValues, \ |
| 1236 "not enough virtual registers for values") \ | 1236 "not enough virtual registers for values") \ |
| 1237 V(kNotEnoughSpillSlotsForOsr, \ |
| 1238 "not enough spill slots for OSR") \ |
| 1237 V(kNotEnoughVirtualRegistersRegalloc, \ | 1239 V(kNotEnoughVirtualRegistersRegalloc, \ |
| 1238 "not enough virtual registers (regalloc)") \ | 1240 "not enough virtual registers (regalloc)") \ |
| 1239 V(kObjectFoundInSmiOnlyArray, "object found in smi-only array") \ | 1241 V(kObjectFoundInSmiOnlyArray, "object found in smi-only array") \ |
| 1240 V(kObjectLiteralWithComplexProperty, \ | 1242 V(kObjectLiteralWithComplexProperty, \ |
| 1241 "Object literal with complex property") \ | 1243 "Object literal with complex property") \ |
| 1242 V(kOddballInStringTableIsNotUndefinedOrTheHole, \ | 1244 V(kOddballInStringTableIsNotUndefinedOrTheHole, \ |
| 1243 "oddball in string table is not undefined or the hole") \ | 1245 "oddball in string table is not undefined or the hole") \ |
| 1244 V(kOffsetOutOfRange, "offset out of range") \ | 1246 V(kOffsetOutOfRange, "offset out of range") \ |
| 1245 V(kOperandIsASmiAndNotAName, "Operand is a smi and not a name") \ | 1247 V(kOperandIsASmiAndNotAName, "Operand is a smi and not a name") \ |
| 1246 V(kOperandIsASmiAndNotAString, "Operand is a smi and not a string") \ | 1248 V(kOperandIsASmiAndNotAString, "Operand is a smi and not a string") \ |
| (...skipping 1006 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2253 static Handle<Object> SetNormalizedProperty(Handle<JSObject> object, | 2255 static Handle<Object> SetNormalizedProperty(Handle<JSObject> object, |
| 2254 Handle<Name> key, | 2256 Handle<Name> key, |
| 2255 Handle<Object> value, | 2257 Handle<Object> value, |
| 2256 PropertyDetails details); | 2258 PropertyDetails details); |
| 2257 | 2259 |
| 2258 MUST_USE_RESULT MaybeObject* SetNormalizedProperty(Name* name, | 2260 MUST_USE_RESULT MaybeObject* SetNormalizedProperty(Name* name, |
| 2259 Object* value, | 2261 Object* value, |
| 2260 PropertyDetails details); | 2262 PropertyDetails details); |
| 2261 | 2263 |
| 2262 static void OptimizeAsPrototype(Handle<JSObject> object); | 2264 static void OptimizeAsPrototype(Handle<JSObject> object); |
| 2263 MUST_USE_RESULT MaybeObject* OptimizeAsPrototype(); | |
| 2264 | 2265 |
| 2265 // Retrieve interceptors. | 2266 // Retrieve interceptors. |
| 2266 InterceptorInfo* GetNamedInterceptor(); | 2267 InterceptorInfo* GetNamedInterceptor(); |
| 2267 InterceptorInfo* GetIndexedInterceptor(); | 2268 InterceptorInfo* GetIndexedInterceptor(); |
| 2268 | 2269 |
| 2269 // Used from JSReceiver. | 2270 // Used from JSReceiver. |
| 2270 PropertyAttributes GetPropertyAttributePostInterceptor(JSObject* receiver, | 2271 PropertyAttributes GetPropertyAttributePostInterceptor(JSObject* receiver, |
| 2271 Name* name, | 2272 Name* name, |
| 2272 bool continue_search); | 2273 bool continue_search); |
| 2273 PropertyAttributes GetPropertyAttributeWithInterceptor(JSObject* receiver, | 2274 PropertyAttributes GetPropertyAttributeWithInterceptor(JSObject* receiver, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2347 Handle<Name> key); | 2348 Handle<Name> key); |
| 2348 // Returns true if the object has a property with the hidden string as name. | 2349 // Returns true if the object has a property with the hidden string as name. |
| 2349 bool HasHiddenProperties(); | 2350 bool HasHiddenProperties(); |
| 2350 | 2351 |
| 2351 static int GetIdentityHash(Handle<JSObject> object); | 2352 static int GetIdentityHash(Handle<JSObject> object); |
| 2352 static void SetIdentityHash(Handle<JSObject> object, Smi* hash); | 2353 static void SetIdentityHash(Handle<JSObject> object, Smi* hash); |
| 2353 | 2354 |
| 2354 inline void ValidateElements(); | 2355 inline void ValidateElements(); |
| 2355 | 2356 |
| 2356 // Makes sure that this object can contain HeapObject as elements. | 2357 // Makes sure that this object can contain HeapObject as elements. |
| 2357 MUST_USE_RESULT inline MaybeObject* EnsureCanContainHeapObjectElements(); | 2358 static inline void EnsureCanContainHeapObjectElements(Handle<JSObject> obj); |
| 2358 | 2359 |
| 2359 // Makes sure that this object can contain the specified elements. | 2360 // Makes sure that this object can contain the specified elements. |
| 2360 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( | 2361 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( |
| 2361 Object** elements, | 2362 Object** elements, |
| 2362 uint32_t count, | 2363 uint32_t count, |
| 2363 EnsureElementsMode mode); | 2364 EnsureElementsMode mode); |
| 2364 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( | 2365 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( |
| 2365 FixedArrayBase* elements, | 2366 FixedArrayBase* elements, |
| 2366 uint32_t length, | 2367 uint32_t length, |
| 2367 EnsureElementsMode mode); | 2368 EnsureElementsMode mode); |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2602 // SeededNumberDictionary dictionary. Returns the backing after conversion. | 2603 // SeededNumberDictionary dictionary. Returns the backing after conversion. |
| 2603 static Handle<SeededNumberDictionary> NormalizeElements( | 2604 static Handle<SeededNumberDictionary> NormalizeElements( |
| 2604 Handle<JSObject> object); | 2605 Handle<JSObject> object); |
| 2605 | 2606 |
| 2606 MUST_USE_RESULT MaybeObject* NormalizeElements(); | 2607 MUST_USE_RESULT MaybeObject* NormalizeElements(); |
| 2607 | 2608 |
| 2608 static void UpdateMapCodeCache(Handle<JSObject> object, | 2609 static void UpdateMapCodeCache(Handle<JSObject> object, |
| 2609 Handle<Name> name, | 2610 Handle<Name> name, |
| 2610 Handle<Code> code); | 2611 Handle<Code> code); |
| 2611 | 2612 |
| 2612 MUST_USE_RESULT MaybeObject* UpdateMapCodeCache(Name* name, Code* code); | |
| 2613 | |
| 2614 // Transform slow named properties to fast variants. | 2613 // Transform slow named properties to fast variants. |
| 2615 // Returns failure if allocation failed. | 2614 // Returns failure if allocation failed. |
| 2616 static void TransformToFastProperties(Handle<JSObject> object, | 2615 static void TransformToFastProperties(Handle<JSObject> object, |
| 2617 int unused_property_fields); | 2616 int unused_property_fields); |
| 2618 | 2617 |
| 2619 MUST_USE_RESULT MaybeObject* TransformToFastProperties( | 2618 MUST_USE_RESULT MaybeObject* TransformToFastProperties( |
| 2620 int unused_property_fields); | 2619 int unused_property_fields); |
| 2621 | 2620 |
| 2622 // Access fast-case object properties at index. | 2621 // Access fast-case object properties at index. |
| 2623 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( | 2622 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( |
| (...skipping 3203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5827 DescriptorArray* descriptors, | 5826 DescriptorArray* descriptors, |
| 5828 Descriptor* descriptor, | 5827 Descriptor* descriptor, |
| 5829 int index, | 5828 int index, |
| 5830 TransitionFlag flag); | 5829 TransitionFlag flag); |
| 5831 MUST_USE_RESULT MaybeObject* AsElementsKind(ElementsKind kind); | 5830 MUST_USE_RESULT MaybeObject* AsElementsKind(ElementsKind kind); |
| 5832 | 5831 |
| 5833 MUST_USE_RESULT MaybeObject* CopyAsElementsKind(ElementsKind kind, | 5832 MUST_USE_RESULT MaybeObject* CopyAsElementsKind(ElementsKind kind, |
| 5834 TransitionFlag flag); | 5833 TransitionFlag flag); |
| 5835 MUST_USE_RESULT MaybeObject* CopyForObserved(); | 5834 MUST_USE_RESULT MaybeObject* CopyForObserved(); |
| 5836 | 5835 |
| 5836 static Handle<Map> CopyNormalized(Handle<Map> map, |
| 5837 PropertyNormalizationMode mode, |
| 5838 NormalizedMapSharingMode sharing); |
| 5837 MUST_USE_RESULT MaybeObject* CopyNormalized(PropertyNormalizationMode mode, | 5839 MUST_USE_RESULT MaybeObject* CopyNormalized(PropertyNormalizationMode mode, |
| 5838 NormalizedMapSharingMode sharing); | 5840 NormalizedMapSharingMode sharing); |
| 5839 | 5841 |
| 5840 inline void AppendDescriptor(Descriptor* desc, | 5842 inline void AppendDescriptor(Descriptor* desc, |
| 5841 const DescriptorArray::WhitenessWitness&); | 5843 const DescriptorArray::WhitenessWitness&); |
| 5842 | 5844 |
| 5843 // Returns a copy of the map, with all transitions dropped from the | 5845 // Returns a copy of the map, with all transitions dropped from the |
| 5844 // instance descriptors. | 5846 // instance descriptors. |
| 5845 static Handle<Map> Copy(Handle<Map> map); | 5847 static Handle<Map> Copy(Handle<Map> map); |
| 5846 MUST_USE_RESULT MaybeObject* Copy(); | 5848 MUST_USE_RESULT MaybeObject* Copy(); |
| (...skipping 1162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7009 void MarkForConcurrentRecompilation(); | 7011 void MarkForConcurrentRecompilation(); |
| 7010 void MarkForInstallingRecompiledCode(); | 7012 void MarkForInstallingRecompiledCode(); |
| 7011 void MarkInRecompileQueue(); | 7013 void MarkInRecompileQueue(); |
| 7012 | 7014 |
| 7013 // Helpers to compile this function. Returns true on success, false on | 7015 // Helpers to compile this function. Returns true on success, false on |
| 7014 // failure (e.g., stack overflow during compilation). | 7016 // failure (e.g., stack overflow during compilation). |
| 7015 static bool EnsureCompiled(Handle<JSFunction> function, | 7017 static bool EnsureCompiled(Handle<JSFunction> function, |
| 7016 ClearExceptionFlag flag); | 7018 ClearExceptionFlag flag); |
| 7017 static bool CompileLazy(Handle<JSFunction> function, | 7019 static bool CompileLazy(Handle<JSFunction> function, |
| 7018 ClearExceptionFlag flag); | 7020 ClearExceptionFlag flag); |
| 7021 static Handle<Code> CompileOsr(Handle<JSFunction> function, |
| 7022 BailoutId osr_ast_id, |
| 7023 ClearExceptionFlag flag); |
| 7019 static bool CompileOptimized(Handle<JSFunction> function, | 7024 static bool CompileOptimized(Handle<JSFunction> function, |
| 7020 BailoutId osr_ast_id, | |
| 7021 ClearExceptionFlag flag); | 7025 ClearExceptionFlag flag); |
| 7022 | 7026 |
| 7023 // Tells whether or not the function is already marked for lazy | 7027 // Tells whether or not the function is already marked for lazy |
| 7024 // recompilation. | 7028 // recompilation. |
| 7025 inline bool IsMarkedForLazyRecompilation(); | 7029 inline bool IsMarkedForLazyRecompilation(); |
| 7026 inline bool IsMarkedForConcurrentRecompilation(); | 7030 inline bool IsMarkedForConcurrentRecompilation(); |
| 7027 inline bool IsMarkedForInstallingRecompiledCode(); | 7031 inline bool IsMarkedForInstallingRecompiledCode(); |
| 7028 | 7032 |
| 7029 // Tells whether or not the function is on the concurrent recompilation queue. | 7033 // Tells whether or not the function is on the concurrent recompilation queue. |
| 7030 inline bool IsInRecompileQueue(); | 7034 inline bool IsInRecompileQueue(); |
| (...skipping 3219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10250 } else { | 10254 } else { |
| 10251 value &= ~(1 << bit_position); | 10255 value &= ~(1 << bit_position); |
| 10252 } | 10256 } |
| 10253 return value; | 10257 return value; |
| 10254 } | 10258 } |
| 10255 }; | 10259 }; |
| 10256 | 10260 |
| 10257 } } // namespace v8::internal | 10261 } } // namespace v8::internal |
| 10258 | 10262 |
| 10259 #endif // V8_OBJECTS_H_ | 10263 #endif // V8_OBJECTS_H_ |
| OLD | NEW |