OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 private: | 206 private: |
207 // TODO(lrn): Check that this value is correct when implementing | 207 // TODO(lrn): Check that this value is correct when implementing |
208 // for-in. | 208 // for-in. |
209 static const int kForInStackElementCount = 5; | 209 static const int kForInStackElementCount = 5; |
210 DISALLOW_COPY_AND_ASSIGN(ForIn); | 210 DISALLOW_COPY_AND_ASSIGN(ForIn); |
211 }; | 211 }; |
212 | 212 |
213 | 213 |
214 int SlotOffset(Slot* slot); | 214 int SlotOffset(Slot* slot); |
215 void Move(Expression::Context destination, Register source); | 215 void Move(Expression::Context destination, Register source); |
| 216 void MoveTOS(Expression::Context destination); |
216 void Move(Expression::Context destination, Slot* source, Register scratch); | 217 void Move(Expression::Context destination, Slot* source, Register scratch); |
217 void Move(Expression::Context destination, Literal* source); | 218 void Move(Expression::Context destination, Literal* source); |
218 void Move(Slot* dst, Register source, Register scratch1, Register scratch2); | 219 void Move(Slot* dst, Register source, Register scratch1, Register scratch2); |
219 void Move(Register dst, Slot* source); | 220 void Move(Register dst, Slot* source); |
220 | 221 |
221 // Templated to allow for Operand on intel and MemOperand on ARM. | 222 // Templated to allow for Operand on intel and MemOperand on ARM. |
222 template <typename MemoryLocation> | 223 template <typename MemoryLocation> |
223 MemoryLocation CreateSlotOperand(Slot* slot, Register scratch); | 224 MemoryLocation CreateSlotOperand(Slot* slot, Register scratch); |
224 | 225 |
225 // Drop the TOS, and store source to destination. | 226 // Drop the TOS, and store source to destination. |
(...skipping 14 matching lines...) Expand all Loading... |
240 | 241 |
241 // Platform-specific code sequences for calls | 242 // Platform-specific code sequences for calls |
242 void EmitCallWithStub(Call* expr); | 243 void EmitCallWithStub(Call* expr); |
243 void EmitCallWithIC(Call* expr, Handle<Object> name, RelocInfo::Mode mode); | 244 void EmitCallWithIC(Call* expr, Handle<Object> name, RelocInfo::Mode mode); |
244 | 245 |
245 // Platform-specific code for loading variables. | 246 // Platform-specific code for loading variables. |
246 void EmitVariableLoad(Variable* expr, Expression::Context context); | 247 void EmitVariableLoad(Variable* expr, Expression::Context context); |
247 | 248 |
248 // Platform-specific support for compiling assignments. | 249 // Platform-specific support for compiling assignments. |
249 | 250 |
250 // Load a value from a named property and push the result on the stack. | 251 // Load a value from a named property. |
251 // The receiver is left on the stack by the IC. | 252 // The receiver is left on the stack by the IC. |
252 void EmitNamedPropertyLoad(Property* expr, Expression::Context context); | 253 void EmitNamedPropertyLoad(Property* expr, Expression::Context context); |
253 | 254 |
254 // Load a value from a named property and push the result on the stack. | 255 // Load a value from a keyed property. |
255 // The receiver and the key is left on the stack by the IC. | 256 // The receiver and the key is left on the stack by the IC. |
256 void EmitKeyedPropertyLoad(Expression::Context context); | 257 void EmitKeyedPropertyLoad(Property* expr, Expression::Context context); |
257 | 258 |
258 // Apply the compound assignment operator. Expects both operands on top | 259 // Apply the compound assignment operator. Expects both operands on top |
259 // of the stack. | 260 // of the stack. |
260 void EmitCompoundAssignmentOp(Token::Value op, Expression::Context context); | 261 void EmitCompoundAssignmentOp(Token::Value op, Expression::Context context); |
261 | 262 |
262 // Complete a variable assignment. The right-hand-side value is expected | 263 // Complete a variable assignment. The right-hand-side value is expected |
263 // on top of the stack. | 264 // on top of the stack. |
264 void EmitVariableAssignment(Assignment* expr); | 265 void EmitVariableAssignment(Variable* var, Expression::Context context); |
265 | 266 |
266 // Complete a named property assignment. The receiver and right-hand-side | 267 // Complete a named property assignment. The receiver and right-hand-side |
267 // value are expected on top of the stack. | 268 // value are expected on top of the stack. |
268 void EmitNamedPropertyAssignment(Assignment* expr); | 269 void EmitNamedPropertyAssignment(Assignment* expr); |
269 | 270 |
270 // Complete a keyed property assignment. The reciever, key, and | 271 // Complete a keyed property assignment. The reciever, key, and |
271 // right-hand-side value are expected on top of the stack. | 272 // right-hand-side value are expected on top of the stack. |
272 void EmitKeyedPropertyAssignment(Assignment* expr); | 273 void EmitKeyedPropertyAssignment(Assignment* expr); |
273 | 274 |
274 void SetFunctionPosition(FunctionLiteral* fun); | 275 void SetFunctionPosition(FunctionLiteral* fun); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 | 321 |
321 friend class NestedStatement; | 322 friend class NestedStatement; |
322 | 323 |
323 DISALLOW_COPY_AND_ASSIGN(FastCodeGenerator); | 324 DISALLOW_COPY_AND_ASSIGN(FastCodeGenerator); |
324 }; | 325 }; |
325 | 326 |
326 | 327 |
327 } } // namespace v8::internal | 328 } } // namespace v8::internal |
328 | 329 |
329 #endif // V8_FAST_CODEGEN_H_ | 330 #endif // V8_FAST_CODEGEN_H_ |
OLD | NEW |