Revision: 9472
Author:   [email protected]
Date:     Wed Sep 28 07:01:40 2011
Log:      Small simplification of HChange instruction.

Use existing flag to mark HChange instructions that deoptimize on undefined.

Also there is no need to store the source representation explicitly.
Review URL: http://codereview.chromium.org/8066007
http://code.google.com/p/v8/source/detail?r=9472

Modified:
 /branches/bleeding_edge/src/hydrogen-instructions.cc
 /branches/bleeding_edge/src/hydrogen-instructions.h
 /branches/bleeding_edge/src/hydrogen.cc

=======================================
--- /branches/bleeding_edge/src/hydrogen-instructions.cc Tue Sep 27 06:03:19 2011 +++ /branches/bleeding_edge/src/hydrogen-instructions.cc Wed Sep 28 07:01:40 2011
@@ -796,10 +796,11 @@

 void HChange::PrintDataTo(StringStream* stream) {
   HUnaryOperation::PrintDataTo(stream);
-  stream->Add(" %s to %s", from_.Mnemonic(), to().Mnemonic());
+  stream->Add(" %s to %s", from().Mnemonic(), to().Mnemonic());

   if (CanTruncateToInt32()) stream->Add(" truncating-int32");
   if (CheckFlag(kBailoutOnMinusZero)) stream->Add(" -0?");
+ if (CheckFlag(kDeoptimizeOnUndefined)) stream->Add(" deopt-on-undefined");
 }


=======================================
--- /branches/bleeding_edge/src/hydrogen-instructions.h Tue Sep 27 06:03:19 2011 +++ /branches/bleeding_edge/src/hydrogen-instructions.h Wed Sep 28 07:01:40 2011
@@ -625,7 +625,7 @@
   void ComputeInitialRange();

   // Representation helpers.
-  virtual Representation RequiredInputRepresentation(int index) const = 0;
+  virtual Representation RequiredInputRepresentation(int index) = 0;

   virtual Representation InferredRepresentation() {
     return representation();
@@ -841,7 +841,7 @@

 class HBlockEntry: public HTemplateInstruction<0> {
  public:
-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -854,7 +854,7 @@
 // HSoftDeoptimize does not end a basic block as opposed to HDeoptimize.
 class HSoftDeoptimize: public HTemplateInstruction<0> {
  public:
-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -866,7 +866,7 @@
  public:
explicit HDeoptimize(int environment_length) : values_(environment_length) { }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -911,7 +911,7 @@
     SetSuccessorAt(0, target);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -951,7 +951,7 @@
       : HUnaryControlInstruction(value, NULL, NULL) { }


-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -983,7 +983,7 @@

   Handle<Map> map() const { return map_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1000,7 +1000,7 @@
     SetOperandAt(0, value);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1014,7 +1014,7 @@

 class HAbnormalExit: public HTemplateControlInstruction<0, 0> {
  public:
-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1049,7 +1049,7 @@
     SetAllSideEffects();
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1064,7 +1064,7 @@
  public:
   explicit HUseConst(HValue* old_value) : HUnaryOperation(old_value) { }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1083,7 +1083,7 @@

   virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return representation();  // Same as the output representation.
   }

@@ -1094,27 +1094,27 @@
 class HChange: public HUnaryOperation {
  public:
   HChange(HValue* value,
-          Representation from,
           Representation to,
           bool is_truncating,
           bool deoptimize_on_undefined)
-      : HUnaryOperation(value),
-        from_(from),
-        deoptimize_on_undefined_(deoptimize_on_undefined) {
-    ASSERT(!from.IsNone() && !to.IsNone());
-    ASSERT(!from.Equals(to));
+      : HUnaryOperation(value) {
+    ASSERT(!value->representation().IsNone() && !to.IsNone());
+    ASSERT(!value->representation().Equals(to));
     set_representation(to);
     SetFlag(kUseGVN);
+    if (deoptimize_on_undefined) SetFlag(kDeoptimizeOnUndefined);
     if (is_truncating) SetFlag(kTruncatingToInt32);
   }

   virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);

-  Representation from() const { return from_; }
-  Representation to() const { return representation(); }
-  bool deoptimize_on_undefined() const { return deoptimize_on_undefined_; }
-  virtual Representation RequiredInputRepresentation(int index) const {
-    return from_;
+  Representation from() { return value()->representation(); }
+  Representation to() { return representation(); }
+  bool deoptimize_on_undefined() const {
+    return CheckFlag(kDeoptimizeOnUndefined);
+  }
+  virtual Representation RequiredInputRepresentation(int index) {
+    return from();
   }

   virtual Range* InferRange();
@@ -1124,16 +1124,7 @@
   DECLARE_CONCRETE_INSTRUCTION(Change)

  protected:
-  virtual bool DataEquals(HValue* other) {
-    if (!other->IsChange()) return false;
-    HChange* change = HChange::cast(other);
-    return to().Equals(change->to())
-        && deoptimize_on_undefined() == change->deoptimize_on_undefined();
-  }
-
- private:
-  Representation from_;
-  bool deoptimize_on_undefined_;
+  virtual bool DataEquals(HValue* other) { return true; }
 };


@@ -1145,7 +1136,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1164,7 +1155,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1223,7 +1214,7 @@
   virtual int OperandCount() { return values_.length(); }
   virtual HValue* OperandAt(int index) { return values_[index]; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1268,7 +1259,7 @@

   HValue* context() { return OperandAt(0); }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1306,7 +1297,7 @@
   FunctionLiteral* function() const { return function_; }
   CallKind call_kind() const { return call_kind_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1323,7 +1314,7 @@
  public:
   HLeaveInlined() {}

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1337,7 +1328,7 @@
     set_representation(Representation::Tagged());
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1354,7 +1345,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1372,7 +1363,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1392,7 +1383,7 @@

   DECLARE_CONCRETE_INSTRUCTION(OuterContext);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1410,7 +1401,7 @@

   DECLARE_CONCRETE_INSTRUCTION(GlobalObject)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1429,7 +1420,7 @@

   DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1465,7 +1456,7 @@
     SetOperandAt(0, value);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1485,7 +1476,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1500,7 +1491,7 @@
       : HBinaryCall(context, function, argument_count) {
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1525,7 +1516,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1542,7 +1533,7 @@
       : HBinaryCall(context, key, argument_count) {
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1566,7 +1557,7 @@

   DECLARE_CONCRETE_INSTRUCTION(CallNamed)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1583,7 +1574,7 @@

   HValue* context() { return value(); }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1602,7 +1593,7 @@
   HValue* context() { return value(); }
   Handle<String> name() const { return name_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1622,7 +1613,7 @@

   Handle<JSFunction> target() const { return target_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -1639,7 +1630,7 @@
       : HBinaryCall(context, constructor, argument_count) {
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1666,7 +1657,7 @@
   const Runtime::Function* function() const { return c_function_; }
   Handle<String> name() const { return name_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1692,7 +1683,7 @@
     SetFlag(kDependsOnMaps);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1716,7 +1707,7 @@
     SetFlag(kDependsOnArrayLengths);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1735,7 +1726,7 @@
     SetFlag(kDependsOnMaps);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1754,7 +1745,7 @@
     SetFlag(kTruncatingToInt32);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Integer32();
   }
   virtual HType CalculateInferredType();
@@ -1804,7 +1795,7 @@

   virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     if (index == 0) {
       return Representation::Tagged();
     } else {
@@ -1861,7 +1852,7 @@
     SetFlag(kDependsOnMaps);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1884,7 +1875,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -1908,7 +1899,7 @@
     SetFlag(kDependsOnMaps);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }
   virtual void PrintDataTo(StringStream* stream);
@@ -1938,7 +1929,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }
   virtual void PrintDataTo(StringStream* stream);
@@ -1980,7 +1971,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2029,7 +2020,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2075,7 +2066,7 @@

   DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -2106,7 +2097,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }
   virtual HType CalculateInferredType();
@@ -2155,7 +2146,7 @@
   }

   virtual Range* InferRange();
-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return representation();
   }
   virtual HType CalculateInferredType();
@@ -2247,7 +2238,7 @@
     SetFlag(kIsArguments);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -2276,7 +2267,7 @@
     return false;
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -2384,7 +2375,7 @@
     SetAllSideEffects();
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     // The length is untagged, all other inputs are tagged.
     return (index == 2)
         ? Representation::Integer32()
@@ -2411,7 +2402,7 @@

   DECLARE_CONCRETE_INSTRUCTION(ArgumentsElements)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -2427,7 +2418,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2450,7 +2441,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     // The arguments elements is considered tagged.
     return index == 0
         ? Representation::Tagged()
@@ -2476,7 +2467,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Integer32();
   }

@@ -2501,7 +2492,7 @@
     SetAllSideEffects();
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return index == 0
         ? Representation::Tagged()
         : representation();
@@ -2539,7 +2530,7 @@
   }

   virtual HType CalculateInferredType();
-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return index == 0
         ? Representation::Tagged()
         : representation();
@@ -2566,7 +2557,7 @@
     SetAllSideEffects();
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2604,7 +2595,7 @@
     return input_representation_;
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return input_representation_;
   }
   virtual void PrintDataTo(StringStream* stream);
@@ -2629,7 +2620,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2648,7 +2639,7 @@
   HValue* left() { return value(); }
   int right() const { return right_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Integer32();
   }

@@ -2670,7 +2661,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2687,7 +2678,7 @@
   explicit HIsObjectAndBranch(HValue* value)
     : HUnaryControlInstruction(value, NULL, NULL) { }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2702,7 +2693,7 @@

   DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2716,7 +2707,7 @@
   explicit HIsUndetectableAndBranch(HValue* value)
       : HUnaryControlInstruction(value, NULL, NULL) { }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2726,7 +2717,7 @@

 class HIsConstructCallAndBranch: public HTemplateControlInstruction<2, 0> {
  public:
-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -2748,7 +2739,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2765,7 +2756,7 @@
   explicit HHasCachedArrayIndexAndBranch(HValue* value)
       : HUnaryControlInstruction(value, NULL, NULL) { }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2780,7 +2771,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2799,7 +2790,7 @@

   DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2823,7 +2814,7 @@

   DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2840,7 +2831,7 @@
     SetAllSideEffects();
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2868,7 +2859,7 @@
   HValue* left() { return OperandAt(1); }
   Handle<JSFunction> function() { return function_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -2893,7 +2884,7 @@
   HValue* left() { return OperandAt(0); }
   HValue* right() { return OperandAt(1); }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return index == 0
       ? Representation::Double()
       : Representation::None();
@@ -3122,7 +3113,7 @@

   int ast_id() const { return ast_id_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -3143,7 +3134,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -3175,7 +3166,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3191,7 +3182,7 @@
  public:
   HUnknownOSRValue() { set_representation(Representation::Tagged()); }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -3218,7 +3209,7 @@
     return reinterpret_cast<intptr_t>(*cell_);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::None();
   }

@@ -3257,7 +3248,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3285,7 +3276,7 @@
     return !details_.IsDontDelete() || details_.IsReadOnly();
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }
   virtual void PrintDataTo(StringStream* stream);
@@ -3322,7 +3313,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3345,7 +3336,7 @@

   int slot_index() const { return slot_index_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3388,7 +3379,7 @@
     return StoringValueNeedsWriteBarrier(value());
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3421,7 +3412,7 @@
   bool is_in_object() const { return is_in_object_; }
   int offset() const { return offset_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }
   virtual void PrintDataTo(StringStream* stream);
@@ -3453,7 +3444,7 @@
   Handle<String> name() { return name_; }
   bool need_generic() { return need_generic_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3488,7 +3479,7 @@
   HValue* object() { return OperandAt(1); }
   Handle<Object> name() const { return name_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3512,7 +3503,7 @@

   HValue* function() { return OperandAt(0); }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3536,7 +3527,7 @@
   HValue* object() { return OperandAt(0); }
   HValue* key() { return OperandAt(1); }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     // The key is supposed to be Integer32.
     return index == 0
       ? Representation::Tagged()
@@ -3567,7 +3558,7 @@
   HValue* elements() { return OperandAt(0); }
   HValue* key() { return OperandAt(1); }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     // The key is supposed to be Integer32.
     return index == 0
       ? Representation::Tagged()
@@ -3605,7 +3596,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     // The key is supposed to be Integer32, but the base pointer
     // for the element load is a naked pointer.
     return index == 0
@@ -3648,7 +3639,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3677,7 +3668,7 @@

   DECLARE_CONCRETE_INSTRUCTION(StoreNamedField)

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }
   virtual void PrintDataTo(StringStream* stream);
@@ -3726,7 +3717,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3749,7 +3740,7 @@
     SetFlag(kChangesArrayElements);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     // The key is supposed to be Integer32.
     return index == 1
         ? Representation::Integer32()
@@ -3795,7 +3786,7 @@
     SetFlag(kChangesDoubleArrayElements);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     if (index == 1) {
       return Representation::Integer32();
     } else if (index == 2) {
@@ -3834,7 +3825,7 @@

   virtual void PrintDataTo(StringStream* stream);

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     if (index == 0) {
       return Representation::External();
     } else {
@@ -3882,7 +3873,7 @@
   HValue* context() { return OperandAt(3); }
   bool strict_mode() { return strict_mode_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3904,7 +3895,7 @@
     SetFlag(kDependsOnMaps);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -3930,7 +3921,7 @@
     SetFlag(kDependsOnMaps);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     // The index is supposed to be Integer32.
     return index == 2
         ? Representation::Integer32()
@@ -3961,7 +3952,7 @@
     SetFlag(kUseGVN);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return index == 0
         ? Representation::Tagged()
         : Representation::Integer32();
@@ -3984,7 +3975,7 @@
     SetFlag(kDependsOnMaps);
   }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -4040,7 +4031,7 @@

   bool IsCopyOnWrite() const;

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
     return Representation::Tagged();
   }

@@ -4074,7 +4065,7 @@
   bool fast_elements() const { return fast_elements_; }
   bool has_function() const { return has_function_; }

-  virtual Representation RequiredInputRepresentation(int index) const {
+  virtual Representation RequiredInputRepresentation(int index) {
***The diff for this file has been truncated for email.***
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc     Wed Sep 28 04:58:40 2011
+++ /branches/bleeding_edge/src/hydrogen.cc     Wed Sep 28 07:01:40 2011
@@ -1860,7 +1860,7 @@
   }

   if (new_value == NULL) {
-    new_value = new(zone()) HChange(value, value->representation(), to,
+    new_value = new(zone()) HChange(value, to,
is_truncating, deoptimize_on_undefined);
   }

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to