| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 private: | 230 private: |
| 231 static const int kForInStackElementCount = 5; | 231 static const int kForInStackElementCount = 5; |
| 232 DISALLOW_COPY_AND_ASSIGN(ForIn); | 232 DISALLOW_COPY_AND_ASSIGN(ForIn); |
| 233 }; | 233 }; |
| 234 | 234 |
| 235 enum Location { | 235 enum Location { |
| 236 kAccumulator, | 236 kAccumulator, |
| 237 kStack | 237 kStack |
| 238 }; | 238 }; |
| 239 | 239 |
| 240 // Compute the frame pointer relative offset for a given local or |
| 241 // parameter slot. |
| 240 int SlotOffset(Slot* slot); | 242 int SlotOffset(Slot* slot); |
| 241 | 243 |
| 244 // Determine whether or not to inline the smi case for the given |
| 245 // operation. |
| 246 bool ShouldInlineSmiCase(Token::Value op); |
| 247 |
| 242 // Emit code to convert a pure value (in a register, slot, as a literal, | 248 // Emit code to convert a pure value (in a register, slot, as a literal, |
| 243 // or on top of the stack) into the result expected according to an | 249 // or on top of the stack) into the result expected according to an |
| 244 // expression context. | 250 // expression context. |
| 245 void Apply(Expression::Context context, Register reg); | 251 void Apply(Expression::Context context, Register reg); |
| 246 | 252 |
| 247 // Slot cannot have type Slot::LOOKUP. | 253 // Slot cannot have type Slot::LOOKUP. |
| 248 void Apply(Expression::Context context, Slot* slot); | 254 void Apply(Expression::Context context, Slot* slot); |
| 249 | 255 |
| 250 void Apply(Expression::Context context, Literal* lit); | 256 void Apply(Expression::Context context, Literal* lit); |
| 251 void ApplyTOS(Expression::Context context); | 257 void ApplyTOS(Expression::Context context); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 // Load a value from a named property. | 382 // Load a value from a named property. |
| 377 // The receiver is left on the stack by the IC. | 383 // The receiver is left on the stack by the IC. |
| 378 void EmitNamedPropertyLoad(Property* expr); | 384 void EmitNamedPropertyLoad(Property* expr); |
| 379 | 385 |
| 380 // Load a value from a keyed property. | 386 // Load a value from a keyed property. |
| 381 // The receiver and the key is left on the stack by the IC. | 387 // The receiver and the key is left on the stack by the IC. |
| 382 void EmitKeyedPropertyLoad(Property* expr); | 388 void EmitKeyedPropertyLoad(Property* expr); |
| 383 | 389 |
| 384 // Apply the compound assignment operator. Expects the left operand on top | 390 // Apply the compound assignment operator. Expects the left operand on top |
| 385 // of the stack and the right one in the accumulator. | 391 // of the stack and the right one in the accumulator. |
| 386 void EmitBinaryOp(Token::Value op, Expression::Context context); | 392 void EmitBinaryOp(Token::Value op, |
| 393 Expression::Context context, |
| 394 OverwriteMode mode); |
| 387 | 395 |
| 388 // Assign to the given expression as if via '='. The right-hand-side value | 396 // Assign to the given expression as if via '='. The right-hand-side value |
| 389 // is expected in the accumulator. | 397 // is expected in the accumulator. |
| 390 void EmitAssignment(Expression* expr); | 398 void EmitAssignment(Expression* expr); |
| 391 | 399 |
| 392 // Complete a variable assignment. The right-hand-side value is expected | 400 // Complete a variable assignment. The right-hand-side value is expected |
| 393 // in the accumulator. | 401 // in the accumulator. |
| 394 void EmitVariableAssignment(Variable* var, | 402 void EmitVariableAssignment(Variable* var, |
| 395 Token::Value op, | 403 Token::Value op, |
| 396 Expression::Context context); | 404 Expression::Context context); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 | 479 |
| 472 friend class NestedStatement; | 480 friend class NestedStatement; |
| 473 | 481 |
| 474 DISALLOW_COPY_AND_ASSIGN(FullCodeGenerator); | 482 DISALLOW_COPY_AND_ASSIGN(FullCodeGenerator); |
| 475 }; | 483 }; |
| 476 | 484 |
| 477 | 485 |
| 478 } } // namespace v8::internal | 486 } } // namespace v8::internal |
| 479 | 487 |
| 480 #endif // V8_FULL_CODEGEN_H_ | 488 #endif // V8_FULL_CODEGEN_H_ |
| OLD | NEW |