| 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 1484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1495 inline static Handle<Object> NewStorageFor(Isolate* isolate, | 1495 inline static Handle<Object> NewStorageFor(Isolate* isolate, |
| 1496 Handle<Object> object, | 1496 Handle<Object> object, |
| 1497 Representation representation); | 1497 Representation representation); |
| 1498 | 1498 |
| 1499 // Returns true if the object is of the correct type to be used as a | 1499 // Returns true if the object is of the correct type to be used as a |
| 1500 // implementation of a JSObject's elements. | 1500 // implementation of a JSObject's elements. |
| 1501 inline bool HasValidElements(); | 1501 inline bool HasValidElements(); |
| 1502 | 1502 |
| 1503 inline bool HasSpecificClassOf(String* name); | 1503 inline bool HasSpecificClassOf(String* name); |
| 1504 | 1504 |
| 1505 MUST_USE_RESULT MaybeObject* ToObject(Isolate* isolate); // ECMA-262 9.9. | |
| 1506 bool BooleanValue(); // ECMA-262 9.2. | 1505 bool BooleanValue(); // ECMA-262 9.2. |
| 1507 | 1506 |
| 1508 // Convert to a JSObject if needed. | 1507 // Convert to a JSObject if needed. |
| 1509 // native_context is used when creating wrapper object. | 1508 // native_context is used when creating wrapper object. |
| 1510 static inline MaybeHandle<JSReceiver> ToObject(Isolate* isolate, | 1509 static inline MaybeHandle<JSReceiver> ToObject(Isolate* isolate, |
| 1511 Handle<Object> object); | 1510 Handle<Object> object); |
| 1512 static MaybeHandle<JSReceiver> ToObject(Isolate* isolate, | 1511 static MaybeHandle<JSReceiver> ToObject(Isolate* isolate, |
| 1513 Handle<Object> object, | 1512 Handle<Object> object, |
| 1514 Handle<Context> context); | 1513 Handle<Context> context); |
| 1515 | 1514 |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2218 inline bool HasFixedFloat32Elements(); | 2217 inline bool HasFixedFloat32Elements(); |
| 2219 inline bool HasFixedFloat64Elements(); | 2218 inline bool HasFixedFloat64Elements(); |
| 2220 | 2219 |
| 2221 bool HasFastArgumentsElements(); | 2220 bool HasFastArgumentsElements(); |
| 2222 bool HasDictionaryArgumentsElements(); | 2221 bool HasDictionaryArgumentsElements(); |
| 2223 inline SeededNumberDictionary* element_dictionary(); // Gets slow elements. | 2222 inline SeededNumberDictionary* element_dictionary(); // Gets slow elements. |
| 2224 | 2223 |
| 2225 // Requires: HasFastElements(). | 2224 // Requires: HasFastElements(). |
| 2226 static Handle<FixedArray> EnsureWritableFastElements( | 2225 static Handle<FixedArray> EnsureWritableFastElements( |
| 2227 Handle<JSObject> object); | 2226 Handle<JSObject> object); |
| 2228 MUST_USE_RESULT inline MaybeObject* EnsureWritableFastElements(); | |
| 2229 | 2227 |
| 2230 // Collects elements starting at index 0. | 2228 // Collects elements starting at index 0. |
| 2231 // Undefined values are placed after non-undefined values. | 2229 // Undefined values are placed after non-undefined values. |
| 2232 // Returns the number of non-undefined values. | 2230 // Returns the number of non-undefined values. |
| 2233 static Handle<Object> PrepareElementsForSort(Handle<JSObject> object, | 2231 static Handle<Object> PrepareElementsForSort(Handle<JSObject> object, |
| 2234 uint32_t limit); | 2232 uint32_t limit); |
| 2235 // As PrepareElementsForSort, but only on objects where elements is | 2233 // As PrepareElementsForSort, but only on objects where elements is |
| 2236 // a dictionary, and it will stay a dictionary. Collates undefined and | 2234 // a dictionary, and it will stay a dictionary. Collates undefined and |
| 2237 // unexisting elements below limit from position zero of the elements. | 2235 // unexisting elements below limit from position zero of the elements. |
| 2238 static Handle<Object> PrepareSlowElementsForSort(Handle<JSObject> object, | 2236 static Handle<Object> PrepareSlowElementsForSort(Handle<JSObject> object, |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2502 // store. | 2500 // store. |
| 2503 static Handle<FixedArray> SetFastElementsCapacityAndLength( | 2501 static Handle<FixedArray> SetFastElementsCapacityAndLength( |
| 2504 Handle<JSObject> object, | 2502 Handle<JSObject> object, |
| 2505 int capacity, | 2503 int capacity, |
| 2506 int length, | 2504 int length, |
| 2507 SetFastElementsCapacitySmiMode smi_mode); | 2505 SetFastElementsCapacitySmiMode smi_mode); |
| 2508 static void SetFastDoubleElementsCapacityAndLength( | 2506 static void SetFastDoubleElementsCapacityAndLength( |
| 2509 Handle<JSObject> object, | 2507 Handle<JSObject> object, |
| 2510 int capacity, | 2508 int capacity, |
| 2511 int length); | 2509 int length); |
| 2512 MUST_USE_RESULT MaybeObject* SetFastDoubleElementsCapacityAndLength( | |
| 2513 int capacity, | |
| 2514 int length); | |
| 2515 | 2510 |
| 2516 // Lookup interceptors are used for handling properties controlled by host | 2511 // Lookup interceptors are used for handling properties controlled by host |
| 2517 // objects. | 2512 // objects. |
| 2518 inline bool HasNamedInterceptor(); | 2513 inline bool HasNamedInterceptor(); |
| 2519 inline bool HasIndexedInterceptor(); | 2514 inline bool HasIndexedInterceptor(); |
| 2520 | 2515 |
| 2521 // Computes the enumerable keys from interceptors. Used for debug mirrors and | 2516 // Computes the enumerable keys from interceptors. Used for debug mirrors and |
| 2522 // by JSReceiver::GetKeys. | 2517 // by JSReceiver::GetKeys. |
| 2523 MUST_USE_RESULT static MaybeHandle<JSObject> GetKeysForNamedInterceptor( | 2518 MUST_USE_RESULT static MaybeHandle<JSObject> GetKeysForNamedInterceptor( |
| 2524 Handle<JSObject> object, | 2519 Handle<JSObject> object, |
| (...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3058 inline bool ContainsOnlySmisOrHoles(); | 3053 inline bool ContainsOnlySmisOrHoles(); |
| 3059 | 3054 |
| 3060 // Gives access to raw memory which stores the array's data. | 3055 // Gives access to raw memory which stores the array's data. |
| 3061 inline Object** data_start(); | 3056 inline Object** data_start(); |
| 3062 | 3057 |
| 3063 inline void FillWithHoles(int from, int to); | 3058 inline void FillWithHoles(int from, int to); |
| 3064 | 3059 |
| 3065 // Shrink length and insert filler objects. | 3060 // Shrink length and insert filler objects. |
| 3066 void Shrink(int length); | 3061 void Shrink(int length); |
| 3067 | 3062 |
| 3068 // Copy operations. | 3063 // Copy operation. |
| 3069 MUST_USE_RESULT inline MaybeObject* Copy(); | |
| 3070 MUST_USE_RESULT MaybeObject* CopySize(int new_length, | |
| 3071 PretenureFlag pretenure = NOT_TENURED); | |
| 3072 static Handle<FixedArray> CopySize(Handle<FixedArray> array, | 3064 static Handle<FixedArray> CopySize(Handle<FixedArray> array, |
| 3073 int new_length, | 3065 int new_length, |
| 3074 PretenureFlag pretenure = NOT_TENURED); | 3066 PretenureFlag pretenure = NOT_TENURED); |
| 3075 | 3067 |
| 3076 // Add the elements of a JSArray to this FixedArray. | 3068 // Add the elements of a JSArray to this FixedArray. |
| 3077 MUST_USE_RESULT static MaybeHandle<FixedArray> AddKeysFromArrayLike( | 3069 MUST_USE_RESULT static MaybeHandle<FixedArray> AddKeysFromArrayLike( |
| 3078 Handle<FixedArray> content, | 3070 Handle<FixedArray> content, |
| 3079 Handle<JSObject> array); | 3071 Handle<JSObject> array); |
| 3080 | 3072 |
| 3081 // Computes the union of keys and return the result. | 3073 // Computes the union of keys and return the result. |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3160 // Setter and getter for elements. | 3152 // Setter and getter for elements. |
| 3161 inline double get_scalar(int index); | 3153 inline double get_scalar(int index); |
| 3162 inline int64_t get_representation(int index); | 3154 inline int64_t get_representation(int index); |
| 3163 static inline Handle<Object> get(Handle<FixedDoubleArray> array, int index); | 3155 static inline Handle<Object> get(Handle<FixedDoubleArray> array, int index); |
| 3164 inline void set(int index, double value); | 3156 inline void set(int index, double value); |
| 3165 inline void set_the_hole(int index); | 3157 inline void set_the_hole(int index); |
| 3166 | 3158 |
| 3167 // Checking for the hole. | 3159 // Checking for the hole. |
| 3168 inline bool is_the_hole(int index); | 3160 inline bool is_the_hole(int index); |
| 3169 | 3161 |
| 3170 // Copy operations | |
| 3171 MUST_USE_RESULT inline MaybeObject* Copy(); | |
| 3172 | |
| 3173 // Garbage collection support. | 3162 // Garbage collection support. |
| 3174 inline static int SizeFor(int length) { | 3163 inline static int SizeFor(int length) { |
| 3175 return kHeaderSize + length * kDoubleSize; | 3164 return kHeaderSize + length * kDoubleSize; |
| 3176 } | 3165 } |
| 3177 | 3166 |
| 3178 // Gives access to raw memory which stores the array's data. | 3167 // Gives access to raw memory which stores the array's data. |
| 3179 inline double* data_start(); | 3168 inline double* data_start(); |
| 3180 | 3169 |
| 3181 inline void FillWithHoles(int from, int to); | 3170 inline void FillWithHoles(int from, int to); |
| 3182 | 3171 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3252 inline void set(int index, int64_t value); | 3241 inline void set(int index, int64_t value); |
| 3253 inline void set(int index, double value); | 3242 inline void set(int index, double value); |
| 3254 inline void set(int index, int32_t value); | 3243 inline void set(int index, int32_t value); |
| 3255 | 3244 |
| 3256 // Set up initial state. | 3245 // Set up initial state. |
| 3257 inline void Init(int number_of_int64_entries, | 3246 inline void Init(int number_of_int64_entries, |
| 3258 int number_of_code_ptr_entries, | 3247 int number_of_code_ptr_entries, |
| 3259 int number_of_heap_ptr_entries, | 3248 int number_of_heap_ptr_entries, |
| 3260 int number_of_int32_entries); | 3249 int number_of_int32_entries); |
| 3261 | 3250 |
| 3262 // Copy operations | |
| 3263 MUST_USE_RESULT inline MaybeObject* Copy(); | |
| 3264 | |
| 3265 // Garbage collection support. | 3251 // Garbage collection support. |
| 3266 inline static int SizeFor(int number_of_int64_entries, | 3252 inline static int SizeFor(int number_of_int64_entries, |
| 3267 int number_of_code_ptr_entries, | 3253 int number_of_code_ptr_entries, |
| 3268 int number_of_heap_ptr_entries, | 3254 int number_of_heap_ptr_entries, |
| 3269 int number_of_int32_entries) { | 3255 int number_of_int32_entries) { |
| 3270 return RoundUp(OffsetAt(number_of_int64_entries, | 3256 return RoundUp(OffsetAt(number_of_int64_entries, |
| 3271 number_of_code_ptr_entries, | 3257 number_of_code_ptr_entries, |
| 3272 number_of_heap_ptr_entries, | 3258 number_of_heap_ptr_entries, |
| 3273 number_of_int32_entries), | 3259 number_of_int32_entries), |
| 3274 kPointerSize); | 3260 kPointerSize); |
| (...skipping 2014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5289 | 5275 |
| 5290 void SetAstId(int i, BailoutId value) { | 5276 void SetAstId(int i, BailoutId value) { |
| 5291 SetAstIdRaw(i, Smi::FromInt(value.ToInt())); | 5277 SetAstIdRaw(i, Smi::FromInt(value.ToInt())); |
| 5292 } | 5278 } |
| 5293 | 5279 |
| 5294 int DeoptCount() { | 5280 int DeoptCount() { |
| 5295 return (length() - kFirstDeoptEntryIndex) / kDeoptEntrySize; | 5281 return (length() - kFirstDeoptEntryIndex) / kDeoptEntrySize; |
| 5296 } | 5282 } |
| 5297 | 5283 |
| 5298 // Allocates a DeoptimizationInputData. | 5284 // Allocates a DeoptimizationInputData. |
| 5299 MUST_USE_RESULT static MaybeObject* Allocate(Isolate* isolate, | 5285 static Handle<DeoptimizationInputData> New(Isolate* isolate, |
| 5300 int deopt_entry_count, | 5286 int deopt_entry_count, |
| 5301 PretenureFlag pretenure); | 5287 PretenureFlag pretenure); |
| 5302 | 5288 |
| 5303 // Casting. | 5289 // Casting. |
| 5304 static inline DeoptimizationInputData* cast(Object* obj); | 5290 static inline DeoptimizationInputData* cast(Object* obj); |
| 5305 | 5291 |
| 5306 #ifdef ENABLE_DISASSEMBLER | 5292 #ifdef ENABLE_DISASSEMBLER |
| 5307 void DeoptimizationInputDataPrint(FILE* out); | 5293 void DeoptimizationInputDataPrint(FILE* out); |
| 5308 #endif | 5294 #endif |
| 5309 | 5295 |
| 5310 private: | 5296 private: |
| 5311 static int IndexForEntry(int i) { | 5297 static int IndexForEntry(int i) { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 5336 } | 5322 } |
| 5337 | 5323 |
| 5338 Smi* PcAndState(int index) { return Smi::cast(get(1 + index * 2)); } | 5324 Smi* PcAndState(int index) { return Smi::cast(get(1 + index * 2)); } |
| 5339 void SetPcAndState(int index, Smi* offset) { set(1 + index * 2, offset); } | 5325 void SetPcAndState(int index, Smi* offset) { set(1 + index * 2, offset); } |
| 5340 | 5326 |
| 5341 static int LengthOfFixedArray(int deopt_points) { | 5327 static int LengthOfFixedArray(int deopt_points) { |
| 5342 return deopt_points * 2; | 5328 return deopt_points * 2; |
| 5343 } | 5329 } |
| 5344 | 5330 |
| 5345 // Allocates a DeoptimizationOutputData. | 5331 // Allocates a DeoptimizationOutputData. |
| 5346 MUST_USE_RESULT static MaybeObject* Allocate(Isolate* isolate, | 5332 static Handle<DeoptimizationOutputData> New(Isolate* isolate, |
| 5347 int number_of_deopt_points, | 5333 int number_of_deopt_points, |
| 5348 PretenureFlag pretenure); | 5334 PretenureFlag pretenure); |
| 5349 | 5335 |
| 5350 // Casting. | 5336 // Casting. |
| 5351 static inline DeoptimizationOutputData* cast(Object* obj); | 5337 static inline DeoptimizationOutputData* cast(Object* obj); |
| 5352 | 5338 |
| 5353 #if defined(OBJECT_PRINT) || defined(ENABLE_DISASSEMBLER) | 5339 #if defined(OBJECT_PRINT) || defined(ENABLE_DISASSEMBLER) |
| 5354 void DeoptimizationOutputDataPrint(FILE* out); | 5340 void DeoptimizationOutputDataPrint(FILE* out); |
| 5355 #endif | 5341 #endif |
| 5356 }; | 5342 }; |
| 5357 | 5343 |
| 5358 | 5344 |
| (...skipping 5874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11233 } else { | 11219 } else { |
| 11234 value &= ~(1 << bit_position); | 11220 value &= ~(1 << bit_position); |
| 11235 } | 11221 } |
| 11236 return value; | 11222 return value; |
| 11237 } | 11223 } |
| 11238 }; | 11224 }; |
| 11239 | 11225 |
| 11240 } } // namespace v8::internal | 11226 } } // namespace v8::internal |
| 11241 | 11227 |
| 11242 #endif // V8_OBJECTS_H_ | 11228 #endif // V8_OBJECTS_H_ |
| OLD | NEW |