| Index: runtime/vm/intermediate_language.h
 | 
| ===================================================================
 | 
| --- runtime/vm/intermediate_language.h	(revision 7560)
 | 
| +++ runtime/vm/intermediate_language.h	(working copy)
 | 
| @@ -1119,9 +1119,7 @@
 | 
|  //                 | Do <Computation> <Instruction>
 | 
|  //                 | Return <Value>
 | 
|  //                 | Branch <Value> <Instruction> <Instruction>
 | 
| -// <Definition>  ::= PickTemp <int> <int> <Instruction>
 | 
| -//                 | TuckTemp <int> <int> <Instruction>
 | 
| -//                 | Bind <int> <Computation> <Instruction>
 | 
| +// <Definition>  ::= Bind <int> <Computation> <Instruction>
 | 
|  
 | 
|  // M is a single argument macro.  It is applied to each concrete instruction
 | 
|  // type name.  The concrete instruction classes are the name with Instr
 | 
| @@ -1131,8 +1129,6 @@
 | 
|    M(TargetEntry)                                                               \
 | 
|    M(Do)                                                                        \
 | 
|    M(Bind)                                                                      \
 | 
| -  M(PickTemp)                                                                  \
 | 
| -  M(TuckTemp)                                                                  \
 | 
|    M(Return)                                                                    \
 | 
|    M(Throw)                                                                     \
 | 
|    M(ReThrow)                                                                   \
 | 
| @@ -1417,74 +1413,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -// The non-optimizing compiler assumes that there is exactly one use of
 | 
| -// every temporary so they can be deallocated at their use.  Some AST nodes,
 | 
| -// e.g., expr0[expr1]++, violate this assumption (there are two uses of each
 | 
| -// of the values expr0 and expr1).
 | 
| -//
 | 
| -// PickTemp is used to name (with 'destination') a copy of a live temporary
 | 
| -// (named 'source') without counting as the use of the source.
 | 
| -class PickTempInstr : public Definition {
 | 
| - public:
 | 
| -  explicit PickTempInstr(intptr_t source)
 | 
| -      : Definition(), source_(source), successor_(NULL) { }
 | 
| -
 | 
| -  DECLARE_INSTRUCTION(PickTemp)
 | 
| -
 | 
| -  intptr_t source() const { return source_; }
 | 
| -
 | 
| -  virtual Instruction* StraightLineSuccessor() const {
 | 
| -    return successor_;
 | 
| -  }
 | 
| -  virtual void SetSuccessor(Instruction* instr) {
 | 
| -    ASSERT(successor_ == NULL && instr != NULL);
 | 
| -    successor_ = instr;
 | 
| -  }
 | 
| -
 | 
| - private:
 | 
| -  const intptr_t source_;
 | 
| -  Instruction* successor_;
 | 
| -
 | 
| -  DISALLOW_COPY_AND_ASSIGN(PickTempInstr);
 | 
| -};
 | 
| -
 | 
| -
 | 
| -// The non-optimizing compiler assumes that temporary definitions and uses
 | 
| -// obey a stack discipline, so they can be allocated and deallocated with
 | 
| -// push and pop.  Some Some AST nodes, e.g., expr++, violate this assumption
 | 
| -// (the value expr+1 is produced after the value of expr, and also consumed
 | 
| -// after it).
 | 
| -//
 | 
| -// We 'preallocate' temporaries (named with 'destination') such as the one
 | 
| -// for expr+1 and use TuckTemp to mutate them by overwriting them with a
 | 
| -// copy of a temporary (named with 'source').
 | 
| -class TuckTempInstr : public Instruction {
 | 
| - public:
 | 
| -  TuckTempInstr(intptr_t destination, intptr_t source)
 | 
| -      : destination_(destination), source_(source), successor_(NULL) { }
 | 
| -
 | 
| -  DECLARE_INSTRUCTION(TuckTemp)
 | 
| -
 | 
| -  intptr_t destination() const { return destination_; }
 | 
| -  intptr_t source() const { return source_; }
 | 
| -
 | 
| -  virtual Instruction* StraightLineSuccessor() const {
 | 
| -    return successor_;
 | 
| -  }
 | 
| -  virtual void SetSuccessor(Instruction* instr) {
 | 
| -    ASSERT(successor_ == NULL && instr != NULL);
 | 
| -    successor_ = instr;
 | 
| -  }
 | 
| -
 | 
| - private:
 | 
| -  const intptr_t destination_;
 | 
| -  const intptr_t source_;
 | 
| -  Instruction* successor_;
 | 
| -
 | 
| -  DISALLOW_COPY_AND_ASSIGN(TuckTempInstr);
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class ReturnInstr : public Instruction {
 | 
|   public:
 | 
|    ReturnInstr(intptr_t token_index, Value* value)
 | 
| 
 |