Chromium Code Reviews| 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 3051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3062 | 3062 |
| 3063 inline void FillWithHoles(int from, int to); | 3063 inline void FillWithHoles(int from, int to); |
| 3064 | 3064 |
| 3065 // Shrink length and insert filler objects. | 3065 // Shrink length and insert filler objects. |
| 3066 void Shrink(int length); | 3066 void Shrink(int length); |
| 3067 | 3067 |
| 3068 // Copy operations. | 3068 // Copy operations. |
| 3069 MUST_USE_RESULT inline MaybeObject* Copy(); | 3069 MUST_USE_RESULT inline MaybeObject* Copy(); |
| 3070 MUST_USE_RESULT MaybeObject* CopySize(int new_length, | 3070 MUST_USE_RESULT MaybeObject* CopySize(int new_length, |
| 3071 PretenureFlag pretenure = NOT_TENURED); | 3071 PretenureFlag pretenure = NOT_TENURED); |
| 3072 static Handle<FixedArray> CopySize(Handle<FixedArray> array, | |
| 3073 int new_length, | |
| 3074 PretenureFlag pretenure = NOT_TENURED); | |
| 3072 | 3075 |
| 3073 // Add the elements of a JSArray to this FixedArray. | 3076 // Add the elements of a JSArray to this FixedArray. |
| 3074 MUST_USE_RESULT static MaybeHandle<FixedArray> AddKeysFromJSArray( | 3077 MUST_USE_RESULT static MaybeHandle<FixedArray> AddKeysFromJSArray( |
| 3075 Handle<FixedArray> content, | 3078 Handle<FixedArray> content, |
| 3076 Handle<JSArray> array); | 3079 Handle<JSArray> array); |
| 3077 | 3080 |
| 3078 // Computes the union of keys and return the result. | 3081 // Computes the union of keys and return the result. |
| 3079 // Used for implementing "for (n in object) { }" | 3082 // Used for implementing "for (n in object) { }" |
| 3080 MUST_USE_RESULT static MaybeHandle<FixedArray> UnionOfKeys( | 3083 MUST_USE_RESULT static MaybeHandle<FixedArray> UnionOfKeys( |
| 3081 Handle<FixedArray> first, | 3084 Handle<FixedArray> first, |
| (...skipping 3402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6484 | 6487 |
| 6485 // Code cache operations. | 6488 // Code cache operations. |
| 6486 | 6489 |
| 6487 // Clears the code cache. | 6490 // Clears the code cache. |
| 6488 inline void ClearCodeCache(Heap* heap); | 6491 inline void ClearCodeCache(Heap* heap); |
| 6489 | 6492 |
| 6490 // Update code cache. | 6493 // Update code cache. |
| 6491 static void UpdateCodeCache(Handle<Map> map, | 6494 static void UpdateCodeCache(Handle<Map> map, |
| 6492 Handle<Name> name, | 6495 Handle<Name> name, |
| 6493 Handle<Code> code); | 6496 Handle<Code> code); |
| 6494 MUST_USE_RESULT MaybeObject* UpdateCodeCache(Name* name, Code* code); | |
| 6495 | 6497 |
| 6496 // Extend the descriptor array of the map with the list of descriptors. | 6498 // Extend the descriptor array of the map with the list of descriptors. |
| 6497 // In case of duplicates, the latest descriptor is used. | 6499 // In case of duplicates, the latest descriptor is used. |
| 6498 static void AppendCallbackDescriptors(Handle<Map> map, | 6500 static void AppendCallbackDescriptors(Handle<Map> map, |
| 6499 Handle<Object> descriptors); | 6501 Handle<Object> descriptors); |
| 6500 | 6502 |
| 6501 static void EnsureDescriptorSlack(Handle<Map> map, int slack); | 6503 static void EnsureDescriptorSlack(Handle<Map> map, int slack); |
| 6502 | 6504 |
| 6503 // Returns the found code or undefined if absent. | 6505 // Returns the found code or undefined if absent. |
| 6504 Object* FindInCodeCache(Name* name, Code::Flags flags); | 6506 Object* FindInCodeCache(Name* name, Code::Flags flags); |
| (...skipping 1755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8260 DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheTable); | 8262 DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheTable); |
| 8261 }; | 8263 }; |
| 8262 | 8264 |
| 8263 | 8265 |
| 8264 class CodeCache: public Struct { | 8266 class CodeCache: public Struct { |
| 8265 public: | 8267 public: |
| 8266 DECL_ACCESSORS(default_cache, FixedArray) | 8268 DECL_ACCESSORS(default_cache, FixedArray) |
| 8267 DECL_ACCESSORS(normal_type_cache, Object) | 8269 DECL_ACCESSORS(normal_type_cache, Object) |
| 8268 | 8270 |
| 8269 // Add the code object to the cache. | 8271 // Add the code object to the cache. |
| 8270 MUST_USE_RESULT MaybeObject* Update(Name* name, Code* code); | 8272 static Handle<Object> Update( |
| 8273 Handle<CodeCache> cache, Handle<Name> name, Handle<Code> code); | |
| 8271 | 8274 |
| 8272 // Lookup code object in the cache. Returns code object if found and undefined | 8275 // Lookup code object in the cache. Returns code object if found and undefined |
| 8273 // if not. | 8276 // if not. |
| 8274 Object* Lookup(Name* name, Code::Flags flags); | 8277 Object* Lookup(Name* name, Code::Flags flags); |
| 8275 | 8278 |
| 8276 // Get the internal index of a code object in the cache. Returns -1 if the | 8279 // Get the internal index of a code object in the cache. Returns -1 if the |
| 8277 // code object is not in that cache. This index can be used to later call | 8280 // code object is not in that cache. This index can be used to later call |
| 8278 // RemoveByIndex. The cache cannot be modified between a call to GetIndex and | 8281 // RemoveByIndex. The cache cannot be modified between a call to GetIndex and |
| 8279 // RemoveByIndex. | 8282 // RemoveByIndex. |
| 8280 int GetIndex(Object* name, Code* code); | 8283 int GetIndex(Object* name, Code* code); |
| 8281 | 8284 |
| 8282 // Remove an object from the cache with the provided internal index. | 8285 // Remove an object from the cache with the provided internal index. |
| 8283 void RemoveByIndex(Object* name, Code* code, int index); | 8286 void RemoveByIndex(Object* name, Code* code, int index); |
| 8284 | 8287 |
| 8285 static inline CodeCache* cast(Object* obj); | 8288 static inline CodeCache* cast(Object* obj); |
| 8286 | 8289 |
| 8287 // Dispatched behavior. | 8290 // Dispatched behavior. |
| 8288 DECLARE_PRINTER(CodeCache) | 8291 DECLARE_PRINTER(CodeCache) |
| 8289 DECLARE_VERIFIER(CodeCache) | 8292 DECLARE_VERIFIER(CodeCache) |
| 8290 | 8293 |
| 8291 static const int kDefaultCacheOffset = HeapObject::kHeaderSize; | 8294 static const int kDefaultCacheOffset = HeapObject::kHeaderSize; |
| 8292 static const int kNormalTypeCacheOffset = | 8295 static const int kNormalTypeCacheOffset = |
| 8293 kDefaultCacheOffset + kPointerSize; | 8296 kDefaultCacheOffset + kPointerSize; |
| 8294 static const int kSize = kNormalTypeCacheOffset + kPointerSize; | 8297 static const int kSize = kNormalTypeCacheOffset + kPointerSize; |
| 8295 | 8298 |
| 8296 private: | 8299 private: |
| 8297 MUST_USE_RESULT MaybeObject* UpdateDefaultCache(Name* name, Code* code); | 8300 static Handle<Object> UpdateDefaultCache( |
| 8298 MUST_USE_RESULT MaybeObject* UpdateNormalTypeCache(Name* name, Code* code); | 8301 Handle<CodeCache> code_cache, Handle<Name> name, Handle<Code> code); |
| 8302 static Handle<Object> UpdateNormalTypeCache( | |
| 8303 Handle<CodeCache> code_cache, Handle<Name> name, Handle<Code> code); | |
| 8299 Object* LookupDefaultCache(Name* name, Code::Flags flags); | 8304 Object* LookupDefaultCache(Name* name, Code::Flags flags); |
| 8300 Object* LookupNormalTypeCache(Name* name, Code::Flags flags); | 8305 Object* LookupNormalTypeCache(Name* name, Code::Flags flags); |
| 8301 | 8306 |
| 8302 // Code cache layout of the default cache. Elements are alternating name and | 8307 // Code cache layout of the default cache. Elements are alternating name and |
| 8303 // code objects for non normal load/store/call IC's. | 8308 // code objects for non normal load/store/call IC's. |
| 8304 static const int kCodeCacheEntrySize = 2; | 8309 static const int kCodeCacheEntrySize = 2; |
| 8305 static const int kCodeCacheEntryNameOffset = 0; | 8310 static const int kCodeCacheEntryNameOffset = 0; |
| 8306 static const int kCodeCacheEntryCodeOffset = 1; | 8311 static const int kCodeCacheEntryCodeOffset = 1; |
| 8307 | 8312 |
| 8308 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCache); | 8313 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCache); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 8331 static const int kPrefixSize = 0; | 8336 static const int kPrefixSize = 0; |
| 8332 static const int kEntrySize = 2; | 8337 static const int kEntrySize = 2; |
| 8333 }; | 8338 }; |
| 8334 | 8339 |
| 8335 | 8340 |
| 8336 class CodeCacheHashTable: public HashTable<CodeCacheHashTable, | 8341 class CodeCacheHashTable: public HashTable<CodeCacheHashTable, |
| 8337 CodeCacheHashTableShape, | 8342 CodeCacheHashTableShape, |
| 8338 HashTableKey*> { | 8343 HashTableKey*> { |
| 8339 public: | 8344 public: |
| 8340 Object* Lookup(Name* name, Code::Flags flags); | 8345 Object* Lookup(Name* name, Code::Flags flags); |
| 8341 MUST_USE_RESULT MaybeObject* Put(Name* name, Code* code); | 8346 static Handle<CodeCacheHashTable> Put( |
| 8347 Handle<CodeCacheHashTable> table, | |
|
Yang
2014/04/15 14:33:09
please put each argument on its own line.
Dmitry Lomov (no reviews)
2014/04/15 14:49:34
Done.
| |
| 8348 Handle<Name> name, Handle<Code> code); | |
| 8342 | 8349 |
| 8343 int GetIndex(Name* name, Code::Flags flags); | 8350 int GetIndex(Name* name, Code::Flags flags); |
| 8344 void RemoveByIndex(int index); | 8351 void RemoveByIndex(int index); |
| 8345 | 8352 |
| 8346 static inline CodeCacheHashTable* cast(Object* obj); | 8353 static inline CodeCacheHashTable* cast(Object* obj); |
| 8347 | 8354 |
| 8348 // Initial size of the fixed array backing the hash table. | 8355 // Initial size of the fixed array backing the hash table. |
| 8349 static const int kInitialSize = 64; | 8356 static const int kInitialSize = 64; |
| 8350 | 8357 |
| 8351 private: | 8358 private: |
| 8359 MUST_USE_RESULT MaybeObject* Put(Name* name, Code* code); | |
| 8360 | |
| 8352 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCacheHashTable); | 8361 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCacheHashTable); |
| 8353 }; | 8362 }; |
| 8354 | 8363 |
| 8355 | 8364 |
| 8356 class PolymorphicCodeCache: public Struct { | 8365 class PolymorphicCodeCache: public Struct { |
| 8357 public: | 8366 public: |
| 8358 DECL_ACCESSORS(cache, Object) | 8367 DECL_ACCESSORS(cache, Object) |
| 8359 | 8368 |
| 8360 static void Update(Handle<PolymorphicCodeCache> cache, | 8369 static void Update(Handle<PolymorphicCodeCache> cache, |
| 8361 MapHandleList* maps, | 8370 MapHandleList* maps, |
| (...skipping 2693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11055 } else { | 11064 } else { |
| 11056 value &= ~(1 << bit_position); | 11065 value &= ~(1 << bit_position); |
| 11057 } | 11066 } |
| 11058 return value; | 11067 return value; |
| 11059 } | 11068 } |
| 11060 }; | 11069 }; |
| 11061 | 11070 |
| 11062 } } // namespace v8::internal | 11071 } } // namespace v8::internal |
| 11063 | 11072 |
| 11064 #endif // V8_OBJECTS_H_ | 11073 #endif // V8_OBJECTS_H_ |
| OLD | NEW |