| Index: src/cfg.h | 
| =================================================================== | 
| --- src/cfg.h	(revision 2631) | 
| +++ src/cfg.h	(working copy) | 
| @@ -306,7 +306,9 @@ | 
| class Instruction : public ZoneObject { | 
| public: | 
| // Every instruction has a location where its result is stored (which may | 
| -  // be Effect). | 
| +  // be Effect, the default). | 
| +  Instruction() : loc_(CfgGlobals::current()->effect_location()) {} | 
| + | 
| explicit Instruction(Location* loc) : loc_(loc) {} | 
|  | 
| virtual ~Instruction() {} | 
| @@ -334,6 +336,30 @@ | 
| }; | 
|  | 
|  | 
| +// A phantom instruction that indicates the start of a statement.  It | 
| +// causes the statement position to be recorded in the relocation | 
| +// information but generates no code. | 
| +class PositionInstr : public Instruction { | 
| + public: | 
| +  explicit PositionInstr(int pos) : pos_(pos) {} | 
| + | 
| +  // Support for fast-compilation mode. | 
| +  void Compile(MacroAssembler* masm); | 
| + | 
| +  // This should not be called.  The last instruction of the previous | 
| +  // statement should not have a temporary as its location. | 
| +  void FastAllocate(TempLocation* temp) { UNREACHABLE(); } | 
| + | 
| +#ifdef DEBUG | 
| +  // Printing support.  Print nothing. | 
| +  void Print() {} | 
| +#endif | 
| + | 
| + private: | 
| +  int pos_; | 
| +}; | 
| + | 
| + | 
| // Perform a (non-short-circuited) binary operation on a pair of values, | 
| // leaving the result in a location. | 
| class BinaryOpInstr : public Instruction { | 
| @@ -365,10 +391,7 @@ | 
| class ReturnInstr : public Instruction { | 
| public: | 
| // Location is always Effect. | 
| -  explicit ReturnInstr(Value* value) | 
| -      : Instruction(CfgGlobals::current()->effect_location()), | 
| -        value_(value) { | 
| -  } | 
| +  explicit ReturnInstr(Value* value) : value_(value) {} | 
|  | 
| virtual ~ReturnInstr() {} | 
|  | 
|  |