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

Side by Side Diff: src/objects.h

Issue 1768553002: [runtime] Clean up symbol access in identity hash code (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 months 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
« no previous file with comments | « no previous file | src/objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9
10 #include "src/assert-scope.h" 10 #include "src/assert-scope.h"
(...skipping 1915 matching lines...) Expand 10 before | Expand all | Expand 10 after
1926 ShouldThrow should_throw); 1926 ShouldThrow should_throw);
1927 1927
1928 1928
1929 static Handle<Object> GetDataProperty(Handle<JSReceiver> object, 1929 static Handle<Object> GetDataProperty(Handle<JSReceiver> object,
1930 Handle<Name> name); 1930 Handle<Name> name);
1931 static Handle<Object> GetDataProperty(LookupIterator* it); 1931 static Handle<Object> GetDataProperty(LookupIterator* it);
1932 1932
1933 1933
1934 // Retrieves a permanent object identity hash code. The undefined value might 1934 // Retrieves a permanent object identity hash code. The undefined value might
1935 // be returned in case no hash was created yet. 1935 // be returned in case no hash was created yet.
1936 inline Object* GetIdentityHash(); 1936 static inline Handle<Object> GetIdentityHash(Isolate* isolate,
1937 Handle<JSReceiver> object);
1937 1938
1938 // Retrieves a permanent object identity hash code. May create and store a 1939 // Retrieves a permanent object identity hash code. May create and store a
1939 // hash code if needed and none exists. 1940 // hash code if needed and none exists.
1940 inline static Handle<Smi> GetOrCreateIdentityHash( 1941 inline static Handle<Smi> GetOrCreateIdentityHash(
1941 Handle<JSReceiver> object); 1942 Handle<JSReceiver> object);
1942 1943
1943 // ES6 [[OwnPropertyKeys]] (modulo return type) 1944 // ES6 [[OwnPropertyKeys]] (modulo return type)
1944 MUST_USE_RESULT static MaybeHandle<FixedArray> OwnPropertyKeys( 1945 MUST_USE_RESULT static MaybeHandle<FixedArray> OwnPropertyKeys(
1945 Handle<JSReceiver> object) { 1946 Handle<JSReceiver> object) {
1946 return GetKeys(object, OWN_ONLY, ALL_PROPERTIES, CONVERT_TO_STRING); 1947 return GetKeys(object, OWN_ONLY, ALL_PROPERTIES, CONVERT_TO_STRING);
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after
2519 // backing store, allocate one. 2520 // backing store, allocate one.
2520 static Handle<ObjectHashTable> GetOrCreateHiddenPropertiesHashtable( 2521 static Handle<ObjectHashTable> GetOrCreateHiddenPropertiesHashtable(
2521 Handle<JSObject> object); 2522 Handle<JSObject> object);
2522 2523
2523 // Set the hidden property backing store to either a hash table or 2524 // Set the hidden property backing store to either a hash table or
2524 // the inline-stored identity hash. 2525 // the inline-stored identity hash.
2525 static Handle<Object> SetHiddenPropertiesHashTable( 2526 static Handle<Object> SetHiddenPropertiesHashTable(
2526 Handle<JSObject> object, 2527 Handle<JSObject> object,
2527 Handle<Object> value); 2528 Handle<Object> value);
2528 2529
2529 MUST_USE_RESULT Object* GetIdentityHash(); 2530 static Handle<Object> GetIdentityHash(Isolate* isolate,
2531 Handle<JSObject> object);
2530 2532
2531 static Handle<Smi> GetOrCreateIdentityHash(Handle<JSObject> object); 2533 static Handle<Smi> GetOrCreateIdentityHash(Handle<JSObject> object);
2532 2534
2533 static Handle<SeededNumberDictionary> GetNormalizedElementDictionary( 2535 static Handle<SeededNumberDictionary> GetNormalizedElementDictionary(
2534 Handle<JSObject> object, Handle<FixedArrayBase> elements); 2536 Handle<JSObject> object, Handle<FixedArrayBase> elements);
2535 2537
2536 // Helper for fast versions of preventExtensions, seal, and freeze. 2538 // Helper for fast versions of preventExtensions, seal, and freeze.
2537 // attrs is one of NONE, SEALED, or FROZEN (depending on the operation). 2539 // attrs is one of NONE, SEALED, or FROZEN (depending on the operation).
2538 template <PropertyAttributes attrs> 2540 template <PropertyAttributes attrs>
2539 MUST_USE_RESULT static Maybe<bool> PreventExtensionsWithTransition( 2541 MUST_USE_RESULT static Maybe<bool> PreventExtensionsWithTransition(
(...skipping 7254 matching lines...) Expand 10 before | Expand all | Expand 10 after
9794 9796
9795 // Layout description. 9797 // Layout description.
9796 static const int kTargetOffset = JSReceiver::kHeaderSize; 9798 static const int kTargetOffset = JSReceiver::kHeaderSize;
9797 static const int kHandlerOffset = kTargetOffset + kPointerSize; 9799 static const int kHandlerOffset = kTargetOffset + kPointerSize;
9798 static const int kHashOffset = kHandlerOffset + kPointerSize; 9800 static const int kHashOffset = kHandlerOffset + kPointerSize;
9799 static const int kSize = kHashOffset + kPointerSize; 9801 static const int kSize = kHashOffset + kPointerSize;
9800 9802
9801 typedef FixedBodyDescriptor<JSReceiver::kPropertiesOffset, kSize, kSize> 9803 typedef FixedBodyDescriptor<JSReceiver::kPropertiesOffset, kSize, kSize>
9802 BodyDescriptor; 9804 BodyDescriptor;
9803 9805
9804 MUST_USE_RESULT Object* GetIdentityHash(); 9806 static Handle<Object> GetIdentityHash(Isolate* isolate,
9807 Handle<JSProxy> receiver);
9805 9808
9806 static Handle<Smi> GetOrCreateIdentityHash(Handle<JSProxy> proxy); 9809 static Handle<Smi> GetOrCreateIdentityHash(Handle<JSProxy> proxy);
9807 9810
9808 static Maybe<bool> SetPrivateProperty(Isolate* isolate, Handle<JSProxy> proxy, 9811 static Maybe<bool> SetPrivateProperty(Isolate* isolate, Handle<JSProxy> proxy,
9809 Handle<Symbol> private_name, 9812 Handle<Symbol> private_name,
9810 PropertyDescriptor* desc, 9813 PropertyDescriptor* desc,
9811 ShouldThrow should_throw); 9814 ShouldThrow should_throw);
9812 9815
9813 private: 9816 private:
9814 DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy); 9817 DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy);
(...skipping 1053 matching lines...) Expand 10 before | Expand all | Expand 10 after
10868 } 10871 }
10869 return value; 10872 return value;
10870 } 10873 }
10871 }; 10874 };
10872 10875
10873 10876
10874 } // NOLINT, false-positive due to second-order macros. 10877 } // NOLINT, false-positive due to second-order macros.
10875 } // NOLINT, false-positive due to second-order macros. 10878 } // NOLINT, false-positive due to second-order macros.
10876 10879
10877 #endif // V8_OBJECTS_H_ 10880 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « no previous file | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698