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

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

Issue 22903027: Prefill allocated objects with one word fillers if we do not use allocation folding. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 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 | « no previous file | no next file » | 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 5102 matching lines...) Expand 10 before | Expand all | Expand 10 after
5113 SetOperandAt(1, size); 5113 SetOperandAt(1, size);
5114 set_representation(Representation::Tagged()); 5114 set_representation(Representation::Tagged());
5115 SetFlag(kTrackSideEffectDominators); 5115 SetFlag(kTrackSideEffectDominators);
5116 SetGVNFlag(kChangesNewSpacePromotion); 5116 SetGVNFlag(kChangesNewSpacePromotion);
5117 SetGVNFlag(kDependsOnNewSpacePromotion); 5117 SetGVNFlag(kDependsOnNewSpacePromotion);
5118 flags_ = pretenure_flag == TENURED 5118 flags_ = pretenure_flag == TENURED
5119 ? (Heap::TargetSpaceId(instance_type) == OLD_POINTER_SPACE 5119 ? (Heap::TargetSpaceId(instance_type) == OLD_POINTER_SPACE
5120 ? ALLOCATE_IN_OLD_POINTER_SPACE : ALLOCATE_IN_OLD_DATA_SPACE) 5120 ? ALLOCATE_IN_OLD_POINTER_SPACE : ALLOCATE_IN_OLD_DATA_SPACE)
5121 : ALLOCATE_IN_NEW_SPACE; 5121 : ALLOCATE_IN_NEW_SPACE;
5122 if (instance_type == FIXED_DOUBLE_ARRAY_TYPE) { 5122 if (instance_type == FIXED_DOUBLE_ARRAY_TYPE) {
5123 flags_ = static_cast<HAllocate::Flags>(flags_ | 5123 flags_ = static_cast<HAllocate::Flags>(flags_ | ALLOCATE_DOUBLE_ALIGNED);
5124 ALLOCATE_DOUBLE_ALIGNED); 5124 }
5125 // We have to fill the allocated object with one word fillers if we do
5126 // not use allocation folding since some allocations may depend on each
5127 // other, i.e., have a pointer to each other. A GC in between these
5128 // allocations may leave such objects behind in a not completely initialized
5129 // state.
5130 if (!FLAG_use_gvn || !FLAG_use_allocation_folding) {
5131 flags_ = static_cast<HAllocate::Flags>(flags_ | PREFILL_WITH_FILLER);
5125 } 5132 }
5126 } 5133 }
5127 5134
5128 Flags flags_; 5135 Flags flags_;
5129 Handle<Map> known_initial_map_; 5136 Handle<Map> known_initial_map_;
5130 }; 5137 };
5131 5138
5132 5139
5133 class HInnerAllocatedObject: public HTemplateInstruction<1> { 5140 class HInnerAllocatedObject: public HTemplateInstruction<1> {
5134 public: 5141 public:
(...skipping 1653 matching lines...) Expand 10 before | Expand all | Expand 10 after
6788 virtual bool IsDeletable() const { return true; } 6795 virtual bool IsDeletable() const { return true; }
6789 }; 6796 };
6790 6797
6791 6798
6792 #undef DECLARE_INSTRUCTION 6799 #undef DECLARE_INSTRUCTION
6793 #undef DECLARE_CONCRETE_INSTRUCTION 6800 #undef DECLARE_CONCRETE_INSTRUCTION
6794 6801
6795 } } // namespace v8::internal 6802 } } // namespace v8::internal
6796 6803
6797 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 6804 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698