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

Side by Side Diff: src/hydrogen-instructions.h

Issue 15896038: Fix parallel recompilation wrt transition maps dependency. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 6 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
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/lithium-codegen-ia32.h » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 5671 matching lines...) Expand 10 before | Expand all | Expand 10 after
5682 5682
5683 class HStoreNamedField: public HTemplateInstruction<2> { 5683 class HStoreNamedField: public HTemplateInstruction<2> {
5684 public: 5684 public:
5685 HStoreNamedField(HValue* obj, 5685 HStoreNamedField(HValue* obj,
5686 HObjectAccess access, 5686 HObjectAccess access,
5687 HValue* val, 5687 HValue* val,
5688 Representation field_representation 5688 Representation field_representation
5689 = Representation::Tagged()) 5689 = Representation::Tagged())
5690 : access_(access), 5690 : access_(access),
5691 field_representation_(field_representation), 5691 field_representation_(field_representation),
5692 transition_(),
5692 transition_unique_id_(), 5693 transition_unique_id_(),
5693 new_space_dominator_(NULL) { 5694 new_space_dominator_(NULL) {
5694 SetOperandAt(0, obj); 5695 SetOperandAt(0, obj);
5695 SetOperandAt(1, val); 5696 SetOperandAt(1, val);
5696 access.SetGVNFlags(this, true); 5697 access.SetGVNFlags(this, true);
5697 } 5698 }
5698 5699
5699 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField) 5700 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField)
5700 5701
5701 virtual Representation RequiredInputRepresentation(int index) { 5702 virtual Representation RequiredInputRepresentation(int index) {
(...skipping 11 matching lines...) Expand all
5713 new_space_dominator_ = dominator; 5714 new_space_dominator_ = dominator;
5714 } 5715 }
5715 virtual void PrintDataTo(StringStream* stream); 5716 virtual void PrintDataTo(StringStream* stream);
5716 5717
5717 HValue* object() { return OperandAt(0); } 5718 HValue* object() { return OperandAt(0); }
5718 HValue* value() { return OperandAt(1); } 5719 HValue* value() { return OperandAt(1); }
5719 5720
5720 HObjectAccess access() const { return access_; } 5721 HObjectAccess access() const { return access_; }
5721 Handle<Map> transition() const { return transition_; } 5722 Handle<Map> transition() const { return transition_; }
5722 UniqueValueId transition_unique_id() const { return transition_unique_id_; } 5723 UniqueValueId transition_unique_id() const { return transition_unique_id_; }
5723 void set_transition(Handle<Map> map) { transition_ = map; } 5724 void SetTransition(Handle<Map> map, CompilationInfo* info) {
5725 ASSERT(transition_.is_null()); // Only set once.
5726 if (map->CanBeDeprecated()) {
5727 map->AddDependentCompilationInfo(DependentCode::kTransitionGroup, info);
5728 }
5729 transition_ = map;
5730 }
5724 HValue* new_space_dominator() const { return new_space_dominator_; } 5731 HValue* new_space_dominator() const { return new_space_dominator_; }
5725 5732
5726 bool NeedsWriteBarrier() { 5733 bool NeedsWriteBarrier() {
5727 ASSERT(!(FLAG_track_double_fields && field_representation_.IsDouble()) || 5734 ASSERT(!(FLAG_track_double_fields && field_representation_.IsDouble()) ||
5728 transition_.is_null()); 5735 transition_.is_null());
5729 return (!FLAG_track_fields || !field_representation_.IsSmi()) && 5736 return (!FLAG_track_fields || !field_representation_.IsSmi()) &&
5730 // If there is a transition, a new storage object needs to be allocated. 5737 // If there is a transition, a new storage object needs to be allocated.
5731 !(FLAG_track_double_fields && field_representation_.IsDouble()) && 5738 !(FLAG_track_double_fields && field_representation_.IsDouble()) &&
5732 StoringValueNeedsWriteBarrier(value()) && 5739 StoringValueNeedsWriteBarrier(value()) &&
5733 ReceiverObjectNeedsWriteBarrier(object(), new_space_dominator()); 5740 ReceiverObjectNeedsWriteBarrier(object(), new_space_dominator());
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after
6570 virtual bool IsDeletable() const { return true; } 6577 virtual bool IsDeletable() const { return true; }
6571 }; 6578 };
6572 6579
6573 6580
6574 #undef DECLARE_INSTRUCTION 6581 #undef DECLARE_INSTRUCTION
6575 #undef DECLARE_CONCRETE_INSTRUCTION 6582 #undef DECLARE_CONCRETE_INSTRUCTION
6576 6583
6577 } } // namespace v8::internal 6584 } } // namespace v8::internal
6578 6585
6579 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 6586 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/lithium-codegen-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698