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

Side by Side Diff: src/crankshaft/hydrogen.h

Issue 2631123002: [crankshaft][runtime] Initialize uninitialized double fields with hole NaN value instead of 0.0. (Closed)
Patch Set: Created 3 years, 11 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/crankshaft/hydrogen.cc » ('j') | src/crankshaft/hydrogen.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_CRANKSHAFT_HYDROGEN_H_ 5 #ifndef V8_CRANKSHAFT_HYDROGEN_H_
6 #define V8_CRANKSHAFT_HYDROGEN_H_ 6 #define V8_CRANKSHAFT_HYDROGEN_H_
7 7
8 #include "src/accessors.h" 8 #include "src/accessors.h"
9 #include "src/allocation.h" 9 #include "src/allocation.h"
10 #include "src/ast/ast-type-bounds.h" 10 #include "src/ast/ast-type-bounds.h"
(...skipping 2438 matching lines...) Expand 10 before | Expand all | Expand 10 after
2449 PropertyAccessInfo(HOptimizedGraphBuilder* builder, 2449 PropertyAccessInfo(HOptimizedGraphBuilder* builder,
2450 PropertyAccessType access_type, Handle<Map> map, 2450 PropertyAccessType access_type, Handle<Map> map,
2451 Handle<Name> name) 2451 Handle<Name> name)
2452 : builder_(builder), 2452 : builder_(builder),
2453 access_type_(access_type), 2453 access_type_(access_type),
2454 map_(map), 2454 map_(map),
2455 name_(isolate()->factory()->InternalizeName(name)), 2455 name_(isolate()->factory()->InternalizeName(name)),
2456 field_type_(HType::Tagged()), 2456 field_type_(HType::Tagged()),
2457 access_(HObjectAccess::ForMap()), 2457 access_(HObjectAccess::ForMap()),
2458 lookup_type_(NOT_FOUND), 2458 lookup_type_(NOT_FOUND),
2459 details_(PropertyDetails::Empty()) {} 2459 details_(PropertyDetails::Empty()),
2460 store_mode_(STORE_TO_INITIALIZED_ENTRY) {}
2461
2462 // Ensure the full store is performed.
2463 void MarkAsInitializingStore();
2464
2465 StoreFieldOrKeyedMode StoreMode();
2460 2466
2461 // Checkes whether this PropertyAccessInfo can be handled as a monomorphic 2467 // Checkes whether this PropertyAccessInfo can be handled as a monomorphic
2462 // load named. It additionally fills in the fields necessary to generate the 2468 // load named. It additionally fills in the fields necessary to generate the
2463 // lookup code. 2469 // lookup code.
2464 bool CanAccessMonomorphic(); 2470 bool CanAccessMonomorphic();
2465 2471
2466 // Checks whether all types behave uniform when loading name. If all maps 2472 // Checks whether all types behave uniform when loading name. If all maps
2467 // behave the same, a single monomorphic load instruction can be emitted, 2473 // behave the same, a single monomorphic load instruction can be emitted,
2468 // guarded by a single map-checks instruction that whether the receiver is 2474 // guarded by a single map-checks instruction that whether the receiver is
2469 // an instance of any of the types. 2475 // an instance of any of the types.
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
2611 Handle<JSObject> api_holder_; 2617 Handle<JSObject> api_holder_;
2612 Handle<Object> constant_; 2618 Handle<Object> constant_;
2613 SmallMapList field_maps_; 2619 SmallMapList field_maps_;
2614 HType field_type_; 2620 HType field_type_;
2615 HObjectAccess access_; 2621 HObjectAccess access_;
2616 2622
2617 enum { NOT_FOUND, DESCRIPTOR_TYPE, TRANSITION_TYPE } lookup_type_; 2623 enum { NOT_FOUND, DESCRIPTOR_TYPE, TRANSITION_TYPE } lookup_type_;
2618 Handle<Map> transition_; 2624 Handle<Map> transition_;
2619 int number_; 2625 int number_;
2620 PropertyDetails details_; 2626 PropertyDetails details_;
2627 StoreFieldOrKeyedMode store_mode_;
2621 }; 2628 };
2622 2629
2623 HValue* BuildMonomorphicAccess(PropertyAccessInfo* info, HValue* object, 2630 HValue* BuildMonomorphicAccess(PropertyAccessInfo* info, HValue* object,
2624 HValue* checked_object, HValue* value, 2631 HValue* checked_object, HValue* value,
2625 BailoutId ast_id, BailoutId return_id, 2632 BailoutId ast_id, BailoutId return_id,
2626 bool can_inline_accessor = true); 2633 bool can_inline_accessor = true);
2627 2634
2628 HValue* BuildNamedAccess(PropertyAccessType access, BailoutId ast_id, 2635 HValue* BuildNamedAccess(PropertyAccessType access, BailoutId ast_id,
2629 BailoutId reutrn_id, Expression* expr, 2636 BailoutId reutrn_id, Expression* expr,
2630 FeedbackVectorSlot slot, HValue* object, 2637 FeedbackVectorSlot slot, HValue* object,
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
2982 } 2989 }
2983 2990
2984 private: 2991 private:
2985 HOptimizedGraphBuilder* builder_; 2992 HOptimizedGraphBuilder* builder_;
2986 }; 2993 };
2987 2994
2988 } // namespace internal 2995 } // namespace internal
2989 } // namespace v8 2996 } // namespace v8
2990 2997
2991 #endif // V8_CRANKSHAFT_HYDROGEN_H_ 2998 #endif // V8_CRANKSHAFT_HYDROGEN_H_
OLDNEW
« no previous file with comments | « no previous file | src/crankshaft/hydrogen.cc » ('j') | src/crankshaft/hydrogen.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698