| OLD | NEW |
| 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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 StackFrame::Type type_; | 128 StackFrame::Type type_; |
| 129 bool old_has_frame_; | 129 bool old_has_frame_; |
| 130 }; | 130 }; |
| 131 | 131 |
| 132 class FrameAndConstantPoolScope { | 132 class FrameAndConstantPoolScope { |
| 133 public: | 133 public: |
| 134 FrameAndConstantPoolScope(MacroAssembler* masm, StackFrame::Type type) | 134 FrameAndConstantPoolScope(MacroAssembler* masm, StackFrame::Type type) |
| 135 : masm_(masm), | 135 : masm_(masm), |
| 136 type_(type), | 136 type_(type), |
| 137 old_has_frame_(masm->has_frame()), | 137 old_has_frame_(masm->has_frame()), |
| 138 old_constant_pool_available_(FLAG_enable_embedded_constant_pool && | 138 old_constant_pool_available_(FLAG_enable_ool_constant_pool && |
| 139 masm->is_constant_pool_available()) { | 139 masm->is_ool_constant_pool_available()) { |
| 140 masm->set_has_frame(true); | 140 masm->set_has_frame(true); |
| 141 if (FLAG_enable_embedded_constant_pool) { | 141 if (FLAG_enable_ool_constant_pool) { |
| 142 masm->set_constant_pool_available(true); | 142 masm->set_ool_constant_pool_available(true); |
| 143 } | 143 } |
| 144 if (type_ != StackFrame::MANUAL && type_ != StackFrame::NONE) { | 144 if (type_ != StackFrame::MANUAL && type_ != StackFrame::NONE) { |
| 145 masm->EnterFrame(type, !old_constant_pool_available_); | 145 masm->EnterFrame(type, !old_constant_pool_available_); |
| 146 } | 146 } |
| 147 } | 147 } |
| 148 | 148 |
| 149 ~FrameAndConstantPoolScope() { | 149 ~FrameAndConstantPoolScope() { |
| 150 masm_->LeaveFrame(type_); | 150 masm_->LeaveFrame(type_); |
| 151 masm_->set_has_frame(old_has_frame_); | 151 masm_->set_has_frame(old_has_frame_); |
| 152 if (FLAG_enable_embedded_constant_pool) { | 152 if (FLAG_enable_ool_constant_pool) { |
| 153 masm_->set_constant_pool_available(old_constant_pool_available_); | 153 masm_->set_ool_constant_pool_available(old_constant_pool_available_); |
| 154 } | 154 } |
| 155 } | 155 } |
| 156 | 156 |
| 157 // Normally we generate the leave-frame code when this object goes | 157 // Normally we generate the leave-frame code when this object goes |
| 158 // out of scope. Sometimes we may need to generate the code somewhere else | 158 // out of scope. Sometimes we may need to generate the code somewhere else |
| 159 // in addition. Calling this will achieve that, but the object stays in | 159 // in addition. Calling this will achieve that, but the object stays in |
| 160 // scope, the MacroAssembler is still marked as being in a frame scope, and | 160 // scope, the MacroAssembler is still marked as being in a frame scope, and |
| 161 // the code will be generated again when it goes out of scope. | 161 // the code will be generated again when it goes out of scope. |
| 162 void GenerateLeaveFrame() { | 162 void GenerateLeaveFrame() { |
| 163 DCHECK(type_ != StackFrame::MANUAL && type_ != StackFrame::NONE); | 163 DCHECK(type_ != StackFrame::MANUAL && type_ != StackFrame::NONE); |
| 164 masm_->LeaveFrame(type_); | 164 masm_->LeaveFrame(type_); |
| 165 } | 165 } |
| 166 | 166 |
| 167 private: | 167 private: |
| 168 MacroAssembler* masm_; | 168 MacroAssembler* masm_; |
| 169 StackFrame::Type type_; | 169 StackFrame::Type type_; |
| 170 bool old_has_frame_; | 170 bool old_has_frame_; |
| 171 bool old_constant_pool_available_; | 171 bool old_constant_pool_available_; |
| 172 | 172 |
| 173 DISALLOW_IMPLICIT_CONSTRUCTORS(FrameAndConstantPoolScope); | 173 DISALLOW_IMPLICIT_CONSTRUCTORS(FrameAndConstantPoolScope); |
| 174 }; | 174 }; |
| 175 | 175 |
| 176 // Class for scoping the the unavailability of constant pool access. | 176 // Class for scoping the the unavailability of constant pool access. |
| 177 class ConstantPoolUnavailableScope { | 177 class ConstantPoolUnavailableScope { |
| 178 public: | 178 public: |
| 179 explicit ConstantPoolUnavailableScope(MacroAssembler* masm) | 179 explicit ConstantPoolUnavailableScope(MacroAssembler* masm) |
| 180 : masm_(masm), | 180 : masm_(masm), |
| 181 old_constant_pool_available_(FLAG_enable_embedded_constant_pool && | 181 old_constant_pool_available_(FLAG_enable_ool_constant_pool && |
| 182 masm->is_constant_pool_available()) { | 182 masm->is_ool_constant_pool_available()) { |
| 183 if (FLAG_enable_embedded_constant_pool) { | 183 if (FLAG_enable_ool_constant_pool) { |
| 184 masm_->set_constant_pool_available(false); | 184 masm_->set_ool_constant_pool_available(false); |
| 185 } | 185 } |
| 186 } | 186 } |
| 187 ~ConstantPoolUnavailableScope() { | 187 ~ConstantPoolUnavailableScope() { |
| 188 if (FLAG_enable_embedded_constant_pool) { | 188 if (FLAG_enable_ool_constant_pool) { |
| 189 masm_->set_constant_pool_available(old_constant_pool_available_); | 189 masm_->set_ool_constant_pool_available(old_constant_pool_available_); |
| 190 } | 190 } |
| 191 } | 191 } |
| 192 | 192 |
| 193 private: | 193 private: |
| 194 MacroAssembler* masm_; | 194 MacroAssembler* masm_; |
| 195 int old_constant_pool_available_; | 195 int old_constant_pool_available_; |
| 196 | 196 |
| 197 DISALLOW_IMPLICIT_CONSTRUCTORS(ConstantPoolUnavailableScope); | 197 DISALLOW_IMPLICIT_CONSTRUCTORS(ConstantPoolUnavailableScope); |
| 198 }; | 198 }; |
| 199 | 199 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 return ExternalReference::old_space_allocation_limit_address(isolate); | 262 return ExternalReference::old_space_allocation_limit_address(isolate); |
| 263 } | 263 } |
| 264 return ExternalReference::new_space_allocation_limit_address(isolate); | 264 return ExternalReference::new_space_allocation_limit_address(isolate); |
| 265 } | 265 } |
| 266 }; | 266 }; |
| 267 | 267 |
| 268 | 268 |
| 269 } } // namespace v8::internal | 269 } } // namespace v8::internal |
| 270 | 270 |
| 271 #endif // V8_MACRO_ASSEMBLER_H_ | 271 #endif // V8_MACRO_ASSEMBLER_H_ |
| OLD | NEW |