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

Side by Side Diff: src/objects.h

Issue 358363003: Only create arguments-maps in the bootstrapper, remove now obsolete ValueType flag. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/assert-scope.h" 9 #include "src/assert-scope.h"
10 #include "src/builtins.h" 10 #include "src/builtins.h"
(...skipping 1378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1389 1389
1390 // Filler objects (fillers and free space objects). 1390 // Filler objects (fillers and free space objects).
1391 INLINE(bool IsFiller() const); 1391 INLINE(bool IsFiller() const);
1392 1392
1393 // Extract the number. 1393 // Extract the number.
1394 inline double Number(); 1394 inline double Number();
1395 INLINE(bool IsNaN() const); 1395 INLINE(bool IsNaN() const);
1396 bool ToInt32(int32_t* value); 1396 bool ToInt32(int32_t* value);
1397 bool ToUint32(uint32_t* value); 1397 bool ToUint32(uint32_t* value);
1398 1398
1399 // Indicates whether OptimalRepresentation can do its work, or whether it 1399 inline Representation OptimalRepresentation() {
1400 // always has to return Representation::Tagged().
1401 enum ValueType {
1402 OPTIMAL_REPRESENTATION,
1403 FORCE_TAGGED
1404 };
1405
1406 inline Representation OptimalRepresentation(
1407 ValueType type = OPTIMAL_REPRESENTATION) {
1408 if (!FLAG_track_fields) return Representation::Tagged(); 1400 if (!FLAG_track_fields) return Representation::Tagged();
1409 if (type == FORCE_TAGGED) return Representation::Tagged();
1410 if (IsSmi()) { 1401 if (IsSmi()) {
1411 return Representation::Smi(); 1402 return Representation::Smi();
1412 } else if (FLAG_track_double_fields && IsHeapNumber()) { 1403 } else if (FLAG_track_double_fields && IsHeapNumber()) {
1413 return Representation::Double(); 1404 return Representation::Double();
1414 } else if (FLAG_track_computed_fields && IsUninitialized()) { 1405 } else if (FLAG_track_computed_fields && IsUninitialized()) {
1415 return Representation::None(); 1406 return Representation::None();
1416 } else if (FLAG_track_heap_object_fields) { 1407 } else if (FLAG_track_heap_object_fields) {
1417 ASSERT(IsHeapObject()); 1408 ASSERT(IsHeapObject());
1418 return Representation::HeapObject(); 1409 return Representation::HeapObject();
1419 } else { 1410 } else {
(...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after
2140 enum ExecutableAccessorInfoHandling { 2131 enum ExecutableAccessorInfoHandling {
2141 DEFAULT_HANDLING, 2132 DEFAULT_HANDLING,
2142 DONT_FORCE_FIELD 2133 DONT_FORCE_FIELD
2143 }; 2134 };
2144 2135
2145 MUST_USE_RESULT static MaybeHandle<Object> SetOwnPropertyIgnoreAttributes( 2136 MUST_USE_RESULT static MaybeHandle<Object> SetOwnPropertyIgnoreAttributes(
2146 Handle<JSObject> object, 2137 Handle<JSObject> object,
2147 Handle<Name> key, 2138 Handle<Name> key,
2148 Handle<Object> value, 2139 Handle<Object> value,
2149 PropertyAttributes attributes, 2140 PropertyAttributes attributes,
2150 ValueType value_type = OPTIMAL_REPRESENTATION,
2151 StoreMode mode = ALLOW_AS_CONSTANT, 2141 StoreMode mode = ALLOW_AS_CONSTANT,
2152 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK, 2142 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK,
2153 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED, 2143 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED,
2154 ExecutableAccessorInfoHandling handling = DEFAULT_HANDLING); 2144 ExecutableAccessorInfoHandling handling = DEFAULT_HANDLING);
2155 2145
2156 static void AddProperty(Handle<JSObject> object, 2146 static void AddProperty(Handle<JSObject> object,
2157 Handle<Name> key, 2147 Handle<Name> key,
2158 Handle<Object> value, 2148 Handle<Object> value,
2159 PropertyAttributes attributes, 2149 PropertyAttributes attributes,
2160 ValueType value_type = OPTIMAL_REPRESENTATION,
2161 StoreMode mode = ALLOW_AS_CONSTANT); 2150 StoreMode mode = ALLOW_AS_CONSTANT);
2162 2151
2163 // Extend the receiver with a single fast property appeared first in the 2152 // Extend the receiver with a single fast property appeared first in the
2164 // passed map. This also extends the property backing store if necessary. 2153 // passed map. This also extends the property backing store if necessary.
2165 static void AllocateStorageForMap(Handle<JSObject> object, Handle<Map> map); 2154 static void AllocateStorageForMap(Handle<JSObject> object, Handle<Map> map);
2166 2155
2167 // Migrates the given object to a map whose field representations are the 2156 // Migrates the given object to a map whose field representations are the
2168 // lowest upper bound of all known representations for that field. 2157 // lowest upper bound of all known representations for that field.
2169 static void MigrateInstance(Handle<JSObject> instance); 2158 static void MigrateInstance(Handle<JSObject> instance);
2170 2159
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
2492 2481
2493 // ES5 Object.freeze 2482 // ES5 Object.freeze
2494 MUST_USE_RESULT static MaybeHandle<Object> Freeze(Handle<JSObject> object); 2483 MUST_USE_RESULT static MaybeHandle<Object> Freeze(Handle<JSObject> object);
2495 2484
2496 // Called the first time an object is observed with ES7 Object.observe. 2485 // Called the first time an object is observed with ES7 Object.observe.
2497 static void SetObserved(Handle<JSObject> object); 2486 static void SetObserved(Handle<JSObject> object);
2498 2487
2499 // Copy object. 2488 // Copy object.
2500 enum DeepCopyHints { 2489 enum DeepCopyHints {
2501 kNoHints = 0, 2490 kNoHints = 0,
2502 kObjectIsShallowArray = 1 2491 kObjectIsShallow = 1
2503 }; 2492 };
2504 2493
2505 static Handle<JSObject> Copy(Handle<JSObject> object); 2494 static Handle<JSObject> Copy(Handle<JSObject> object);
2506 MUST_USE_RESULT static MaybeHandle<JSObject> DeepCopy( 2495 MUST_USE_RESULT static MaybeHandle<JSObject> DeepCopy(
2507 Handle<JSObject> object, 2496 Handle<JSObject> object,
2508 AllocationSiteUsageContext* site_context, 2497 AllocationSiteUsageContext* site_context,
2509 DeepCopyHints hints = kNoHints); 2498 DeepCopyHints hints = kNoHints);
2510 MUST_USE_RESULT static MaybeHandle<JSObject> DeepWalk( 2499 MUST_USE_RESULT static MaybeHandle<JSObject> DeepWalk(
2511 Handle<JSObject> object, 2500 Handle<JSObject> object,
2512 AllocationSiteCreationContext* site_context); 2501 AllocationSiteCreationContext* site_context);
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
2758 2747
2759 // Add a property to an object. 2748 // Add a property to an object.
2760 MUST_USE_RESULT static MaybeHandle<Object> AddPropertyInternal( 2749 MUST_USE_RESULT static MaybeHandle<Object> AddPropertyInternal(
2761 Handle<JSObject> object, 2750 Handle<JSObject> object,
2762 Handle<Name> name, 2751 Handle<Name> name,
2763 Handle<Object> value, 2752 Handle<Object> value,
2764 PropertyAttributes attributes, 2753 PropertyAttributes attributes,
2765 StrictMode strict_mode, 2754 StrictMode strict_mode,
2766 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED, 2755 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED,
2767 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK, 2756 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK,
2768 ValueType value_type = OPTIMAL_REPRESENTATION,
2769 StoreMode mode = ALLOW_AS_CONSTANT, 2757 StoreMode mode = ALLOW_AS_CONSTANT,
2770 TransitionFlag flag = INSERT_TRANSITION); 2758 TransitionFlag flag = INSERT_TRANSITION);
2771 2759
2772 // Add a property to a fast-case object. 2760 // Add a property to a fast-case object.
2773 static void AddFastProperty(Handle<JSObject> object, 2761 static void AddFastProperty(Handle<JSObject> object,
2774 Handle<Name> name, 2762 Handle<Name> name,
2775 Handle<Object> value, 2763 Handle<Object> value,
2776 PropertyAttributes attributes, 2764 PropertyAttributes attributes,
2777 StoreFromKeyed store_mode, 2765 StoreFromKeyed store_mode,
2778 ValueType value_type,
2779 TransitionFlag flag); 2766 TransitionFlag flag);
2780 2767
2781 // Add a property to a slow-case object. 2768 // Add a property to a slow-case object.
2782 static void AddSlowProperty(Handle<JSObject> object, 2769 static void AddSlowProperty(Handle<JSObject> object,
2783 Handle<Name> name, 2770 Handle<Name> name,
2784 Handle<Object> value, 2771 Handle<Object> value,
2785 PropertyAttributes attributes); 2772 PropertyAttributes attributes);
2786 2773
2787 MUST_USE_RESULT static MaybeHandle<Object> DeleteProperty( 2774 MUST_USE_RESULT static MaybeHandle<Object> DeleteProperty(
2788 Handle<JSObject> object, 2775 Handle<JSObject> object,
(...skipping 8386 matching lines...) Expand 10 before | Expand all | Expand 10 after
11175 } else { 11162 } else {
11176 value &= ~(1 << bit_position); 11163 value &= ~(1 << bit_position);
11177 } 11164 }
11178 return value; 11165 return value;
11179 } 11166 }
11180 }; 11167 };
11181 11168
11182 } } // namespace v8::internal 11169 } } // namespace v8::internal
11183 11170
11184 #endif // V8_OBJECTS_H_ 11171 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698