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

Side by Side Diff: src/objects.h

Issue 1765633004: Avoid duplicate lookups when Get+Creating identity hashes (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: tweaks 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 1907 matching lines...) Expand 10 before | Expand all | Expand 10 after
1918 1918
1919 MUST_USE_RESULT static Maybe<PropertyAttributes> GetPropertyAttributes( 1919 MUST_USE_RESULT static Maybe<PropertyAttributes> GetPropertyAttributes(
1920 LookupIterator* it); 1920 LookupIterator* it);
1921 1921
1922 // Set the object's prototype (only JSReceiver and null are allowed values). 1922 // Set the object's prototype (only JSReceiver and null are allowed values).
1923 MUST_USE_RESULT static Maybe<bool> SetPrototype(Handle<JSReceiver> object, 1923 MUST_USE_RESULT static Maybe<bool> SetPrototype(Handle<JSReceiver> object,
1924 Handle<Object> value, 1924 Handle<Object> value,
1925 bool from_javascript, 1925 bool from_javascript,
1926 ShouldThrow should_throw); 1926 ShouldThrow should_throw);
1927 1927
1928 1928 inline static Handle<Object> GetDataProperty(Handle<JSReceiver> object,
1929 static Handle<Object> GetDataProperty(Handle<JSReceiver> object, 1929 Handle<Name> name);
1930 Handle<Name> name);
1931 static Handle<Object> GetDataProperty(LookupIterator* it); 1930 static Handle<Object> GetDataProperty(LookupIterator* it);
1932 1931
1933 1932
1934 // Retrieves a permanent object identity hash code. The undefined value might 1933 // Retrieves a permanent object identity hash code. The undefined value might
1935 // be returned in case no hash was created yet. 1934 // be returned in case no hash was created yet.
1936 static inline Handle<Object> GetIdentityHash(Isolate* isolate, 1935 static inline Handle<Object> GetIdentityHash(Isolate* isolate,
1937 Handle<JSReceiver> object); 1936 Handle<JSReceiver> object);
1938 1937
1939 // Retrieves a permanent object identity hash code. May create and store a 1938 // Retrieves a permanent object identity hash code. May create and store a
1940 // hash code if needed and none exists. 1939 // hash code if needed and none exists.
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
2206 // if the property doesn't exist (or if called on a detached proxy), 2205 // if the property doesn't exist (or if called on a detached proxy),
2207 // otherwise returns the value set for the key. 2206 // otherwise returns the value set for the key.
2208 Object* GetHiddenProperty(Handle<Name> key); 2207 Object* GetHiddenProperty(Handle<Name> key);
2209 // Deletes a hidden property. Deleting a non-existing property is 2208 // Deletes a hidden property. Deleting a non-existing property is
2210 // considered successful. 2209 // considered successful.
2211 static void DeleteHiddenProperty(Handle<JSObject> object, 2210 static void DeleteHiddenProperty(Handle<JSObject> object,
2212 Handle<Name> key); 2211 Handle<Name> key);
2213 // Returns true if the object has a property with the hidden string as name. 2212 // Returns true if the object has a property with the hidden string as name.
2214 static bool HasHiddenProperties(Handle<JSObject> object); 2213 static bool HasHiddenProperties(Handle<JSObject> object);
2215 2214
2216 static void SetIdentityHash(Handle<JSObject> object, Handle<Smi> hash);
2217
2218 static void ValidateElements(Handle<JSObject> object); 2215 static void ValidateElements(Handle<JSObject> object);
2219 2216
2220 // Makes sure that this object can contain HeapObject as elements. 2217 // Makes sure that this object can contain HeapObject as elements.
2221 static inline void EnsureCanContainHeapObjectElements(Handle<JSObject> obj); 2218 static inline void EnsureCanContainHeapObjectElements(Handle<JSObject> obj);
2222 2219
2223 // Makes sure that this object can contain the specified elements. 2220 // Makes sure that this object can contain the specified elements.
2224 static inline void EnsureCanContainElements( 2221 static inline void EnsureCanContainElements(
2225 Handle<JSObject> object, 2222 Handle<JSObject> object,
2226 Object** elements, 2223 Object** elements,
2227 uint32_t count, 2224 uint32_t count,
(...skipping 8643 matching lines...) Expand 10 before | Expand all | Expand 10 after
10871 } 10868 }
10872 return value; 10869 return value;
10873 } 10870 }
10874 }; 10871 };
10875 10872
10876 10873
10877 } // NOLINT, false-positive due to second-order macros. 10874 } // NOLINT, false-positive due to second-order macros.
10878 } // NOLINT, false-positive due to second-order macros. 10875 } // NOLINT, false-positive due to second-order macros.
10879 10876
10880 #endif // V8_OBJECTS_H_ 10877 #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