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

Side by Side Diff: src/macro-assembler.h

Issue 1030353003: Enable constant pool support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
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_MACRO_ASSEMBLER_H_ 5 #ifndef V8_MACRO_ASSEMBLER_H_
6 #define V8_MACRO_ASSEMBLER_H_ 6 #define V8_MACRO_ASSEMBLER_H_
7 7
8 8
9 // Helper types to make boolean flag easier to read at call-site. 9 // Helper types to make boolean flag easier to read at call-site.
10 enum InvokeFlag { 10 enum InvokeFlag {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 StackFrame::Type type_; 130 StackFrame::Type type_;
131 bool old_has_frame_; 131 bool old_has_frame_;
132 }; 132 };
133 133
134 class FrameAndConstantPoolScope { 134 class FrameAndConstantPoolScope {
135 public: 135 public:
136 FrameAndConstantPoolScope(MacroAssembler* masm, StackFrame::Type type) 136 FrameAndConstantPoolScope(MacroAssembler* masm, StackFrame::Type type)
137 : masm_(masm), 137 : masm_(masm),
138 type_(type), 138 type_(type),
139 old_has_frame_(masm->has_frame()), 139 old_has_frame_(masm->has_frame()),
140 old_constant_pool_available_(FLAG_enable_ool_constant_pool && 140 old_constant_pool_available_((FLAG_enable_ool_constant_pool ||
141 masm->is_ool_constant_pool_available()) { 141 FLAG_enable_embedded_constant_pool) &&
142 masm->is_constant_pool_available()) {
142 masm->set_has_frame(true); 143 masm->set_has_frame(true);
143 if (FLAG_enable_ool_constant_pool) { 144 if (FLAG_enable_ool_constant_pool || FLAG_enable_embedded_constant_pool) {
144 masm->set_ool_constant_pool_available(true); 145 masm->set_constant_pool_available(true);
145 } 146 }
146 if (type_ != StackFrame::MANUAL && type_ != StackFrame::NONE) { 147 if (type_ != StackFrame::MANUAL && type_ != StackFrame::NONE) {
147 masm->EnterFrame(type, !old_constant_pool_available_); 148 masm->EnterFrame(type, !old_constant_pool_available_);
148 } 149 }
149 } 150 }
150 151
151 ~FrameAndConstantPoolScope() { 152 ~FrameAndConstantPoolScope() {
152 masm_->LeaveFrame(type_); 153 masm_->LeaveFrame(type_);
153 masm_->set_has_frame(old_has_frame_); 154 masm_->set_has_frame(old_has_frame_);
154 if (FLAG_enable_ool_constant_pool) { 155 if (FLAG_enable_ool_constant_pool || FLAG_enable_embedded_constant_pool) {
155 masm_->set_ool_constant_pool_available(old_constant_pool_available_); 156 masm_->set_constant_pool_available(old_constant_pool_available_);
156 } 157 }
157 } 158 }
158 159
159 // Normally we generate the leave-frame code when this object goes 160 // Normally we generate the leave-frame code when this object goes
160 // out of scope. Sometimes we may need to generate the code somewhere else 161 // out of scope. Sometimes we may need to generate the code somewhere else
161 // in addition. Calling this will achieve that, but the object stays in 162 // in addition. Calling this will achieve that, but the object stays in
162 // scope, the MacroAssembler is still marked as being in a frame scope, and 163 // scope, the MacroAssembler is still marked as being in a frame scope, and
163 // the code will be generated again when it goes out of scope. 164 // the code will be generated again when it goes out of scope.
164 void GenerateLeaveFrame() { 165 void GenerateLeaveFrame() {
165 DCHECK(type_ != StackFrame::MANUAL && type_ != StackFrame::NONE); 166 DCHECK(type_ != StackFrame::MANUAL && type_ != StackFrame::NONE);
166 masm_->LeaveFrame(type_); 167 masm_->LeaveFrame(type_);
167 } 168 }
168 169
169 private: 170 private:
170 MacroAssembler* masm_; 171 MacroAssembler* masm_;
171 StackFrame::Type type_; 172 StackFrame::Type type_;
172 bool old_has_frame_; 173 bool old_has_frame_;
173 bool old_constant_pool_available_; 174 bool old_constant_pool_available_;
174 175
175 DISALLOW_IMPLICIT_CONSTRUCTORS(FrameAndConstantPoolScope); 176 DISALLOW_IMPLICIT_CONSTRUCTORS(FrameAndConstantPoolScope);
176 }; 177 };
177 178
178 // Class for scoping the the unavailability of constant pool access. 179 // Class for scoping the the unavailability of constant pool access.
179 class ConstantPoolUnavailableScope { 180 class ConstantPoolUnavailableScope {
180 public: 181 public:
181 explicit ConstantPoolUnavailableScope(MacroAssembler* masm) 182 explicit ConstantPoolUnavailableScope(MacroAssembler* masm)
182 : masm_(masm), 183 : masm_(masm),
183 old_constant_pool_available_(FLAG_enable_ool_constant_pool && 184 old_constant_pool_available_((FLAG_enable_ool_constant_pool ||
184 masm->is_ool_constant_pool_available()) { 185 FLAG_enable_embedded_constant_pool) &&
185 if (FLAG_enable_ool_constant_pool) { 186 masm->is_constant_pool_available()) {
186 masm_->set_ool_constant_pool_available(false); 187 if (FLAG_enable_ool_constant_pool || FLAG_enable_embedded_constant_pool) {
188 masm_->set_constant_pool_available(false);
187 } 189 }
188 } 190 }
189 ~ConstantPoolUnavailableScope() { 191 ~ConstantPoolUnavailableScope() {
190 if (FLAG_enable_ool_constant_pool) { 192 if (FLAG_enable_ool_constant_pool || FLAG_enable_embedded_constant_pool) {
191 masm_->set_ool_constant_pool_available(old_constant_pool_available_); 193 masm_->set_constant_pool_available(old_constant_pool_available_);
192 } 194 }
193 } 195 }
194 196
195 private: 197 private:
196 MacroAssembler* masm_; 198 MacroAssembler* masm_;
197 int old_constant_pool_available_; 199 int old_constant_pool_available_;
198 200
199 DISALLOW_IMPLICIT_CONSTRUCTORS(ConstantPoolUnavailableScope); 201 DISALLOW_IMPLICIT_CONSTRUCTORS(ConstantPoolUnavailableScope);
200 }; 202 };
201 203
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 isolate); 273 isolate);
272 } 274 }
273 return ExternalReference::new_space_allocation_limit_address(isolate); 275 return ExternalReference::new_space_allocation_limit_address(isolate);
274 } 276 }
275 }; 277 };
276 278
277 279
278 } } // namespace v8::internal 280 } } // namespace v8::internal
279 281
280 #endif // V8_MACRO_ASSEMBLER_H_ 282 #endif // V8_MACRO_ASSEMBLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698