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

Side by Side Diff: src/objects.h

Issue 1745013002: [runtime] inline fast-path ToName (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 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 INLINE(bool IsUnseededNumberDictionary() const); 1061 INLINE(bool IsUnseededNumberDictionary() const);
1062 INLINE(bool IsOrderedHashSet() const); 1062 INLINE(bool IsOrderedHashSet() const);
1063 INLINE(bool IsOrderedHashMap() const); 1063 INLINE(bool IsOrderedHashMap() const);
1064 static bool IsPromise(Handle<Object> object); 1064 static bool IsPromise(Handle<Object> object);
1065 1065
1066 // Extract the number. 1066 // Extract the number.
1067 inline double Number() const; 1067 inline double Number() const;
1068 INLINE(bool IsNaN() const); 1068 INLINE(bool IsNaN() const);
1069 INLINE(bool IsMinusZero() const); 1069 INLINE(bool IsMinusZero() const);
1070 bool ToInt32(int32_t* value); 1070 bool ToInt32(int32_t* value);
1071 bool ToUint32(uint32_t* value); 1071 inline bool ToUint32(uint32_t* value);
1072 1072
1073 inline Representation OptimalRepresentation(); 1073 inline Representation OptimalRepresentation();
1074 1074
1075 inline ElementsKind OptimalElementsKind(); 1075 inline ElementsKind OptimalElementsKind();
1076 1076
1077 inline bool FitsRepresentation(Representation representation); 1077 inline bool FitsRepresentation(Representation representation);
1078 1078
1079 // Checks whether two valid primitive encodings of a property name resolve to 1079 // Checks whether two valid primitive encodings of a property name resolve to
1080 // the same logical property. E.g., the smi 1, the string "1" and the double 1080 // the same logical property. E.g., the smi 1, the string "1" and the double
1081 // 1 all refer to the same property, so this helper will return true. 1081 // 1 all refer to the same property, so this helper will return true.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 bool StrictEquals(Object* that); 1113 bool StrictEquals(Object* that);
1114 1114
1115 // Convert to a JSObject if needed. 1115 // Convert to a JSObject if needed.
1116 // native_context is used when creating wrapper object. 1116 // native_context is used when creating wrapper object.
1117 MUST_USE_RESULT static inline MaybeHandle<JSReceiver> ToObject( 1117 MUST_USE_RESULT static inline MaybeHandle<JSReceiver> ToObject(
1118 Isolate* isolate, Handle<Object> object); 1118 Isolate* isolate, Handle<Object> object);
1119 MUST_USE_RESULT static MaybeHandle<JSReceiver> ToObject( 1119 MUST_USE_RESULT static MaybeHandle<JSReceiver> ToObject(
1120 Isolate* isolate, Handle<Object> object, Handle<Context> context); 1120 Isolate* isolate, Handle<Object> object, Handle<Context> context);
1121 1121
1122 // ES6 section 7.1.14 ToPropertyKey 1122 // ES6 section 7.1.14 ToPropertyKey
1123 MUST_USE_RESULT static MaybeHandle<Name> ToName(Isolate* isolate, 1123 MUST_USE_RESULT static inline MaybeHandle<Name> ToName(Isolate* isolate,
1124 Handle<Object> input); 1124 Handle<Object> input);
1125 1125
1126 // ES6 section 7.1.1 ToPrimitive 1126 // ES6 section 7.1.1 ToPrimitive
1127 MUST_USE_RESULT static inline MaybeHandle<Object> ToPrimitive( 1127 MUST_USE_RESULT static inline MaybeHandle<Object> ToPrimitive(
1128 Handle<Object> input, ToPrimitiveHint hint = ToPrimitiveHint::kDefault); 1128 Handle<Object> input, ToPrimitiveHint hint = ToPrimitiveHint::kDefault);
1129 1129
1130 // ES6 section 7.1.3 ToNumber 1130 // ES6 section 7.1.3 ToNumber
1131 MUST_USE_RESULT static MaybeHandle<Object> ToNumber(Handle<Object> input); 1131 MUST_USE_RESULT static MaybeHandle<Object> ToNumber(Handle<Object> input);
1132 1132
1133 // ES6 section 7.1.4 ToInteger 1133 // ES6 section 7.1.4 ToInteger
1134 MUST_USE_RESULT static MaybeHandle<Object> ToInteger(Isolate* isolate, 1134 MUST_USE_RESULT static MaybeHandle<Object> ToInteger(Isolate* isolate,
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 1364
1365 // Return the map of the root of object's prototype chain. 1365 // Return the map of the root of object's prototype chain.
1366 Map* GetRootMap(Isolate* isolate); 1366 Map* GetRootMap(Isolate* isolate);
1367 1367
1368 // Helper for SetProperty and SetSuperProperty. 1368 // Helper for SetProperty and SetSuperProperty.
1369 // Return value is only meaningful if [found] is set to true on return. 1369 // Return value is only meaningful if [found] is set to true on return.
1370 MUST_USE_RESULT static Maybe<bool> SetPropertyInternal( 1370 MUST_USE_RESULT static Maybe<bool> SetPropertyInternal(
1371 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, 1371 LookupIterator* it, Handle<Object> value, LanguageMode language_mode,
1372 StoreFromKeyed store_mode, bool* found); 1372 StoreFromKeyed store_mode, bool* found);
1373 1373
1374 MUST_USE_RESULT static MaybeHandle<Name> ConvertToName(Isolate* isolate,
1375 Handle<Object> input);
1376
1374 DISALLOW_IMPLICIT_CONSTRUCTORS(Object); 1377 DISALLOW_IMPLICIT_CONSTRUCTORS(Object);
1375 }; 1378 };
1376 1379
1377 1380
1378 // In objects.h to be usable without objects-inl.h inclusion. 1381 // In objects.h to be usable without objects-inl.h inclusion.
1379 bool Object::IsSmi() const { return HAS_SMI_TAG(this); } 1382 bool Object::IsSmi() const { return HAS_SMI_TAG(this); }
1380 bool Object::IsHeapObject() const { return Internals::HasHeapObjectTag(this); } 1383 bool Object::IsHeapObject() const { return Internals::HasHeapObjectTag(this); }
1381 1384
1382 1385
1383 struct Brief { 1386 struct Brief {
(...skipping 9487 matching lines...) Expand 10 before | Expand all | Expand 10 after
10871 } 10874 }
10872 return value; 10875 return value;
10873 } 10876 }
10874 }; 10877 };
10875 10878
10876 10879
10877 } // NOLINT, false-positive due to second-order macros. 10880 } // NOLINT, false-positive due to second-order macros.
10878 } // NOLINT, false-positive due to second-order macros. 10881 } // NOLINT, false-positive due to second-order macros.
10879 10882
10880 #endif // V8_OBJECTS_H_ 10883 #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