Reviewers: fschneider,

Message:
It appears that this instruction erroneously reported DependsOnCalls,
ChangesInobjectFields, DependsOnInobjectFields.

I don't think there was a correctness issue, because GVN wasn't actually enabled
for this instruction.  It did inhibit GVN for inobject fields.

Description:
Clean up Hydrogen's HLoadFunctionPrototype.

This instruction was setting an incorrect collection of Changes/Depends
flags.

Please review this at http://codereview.chromium.org/6399002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M src/hydrogen-instructions.h


Index: src/hydrogen-instructions.h
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index d57655ab7934726431e52b84666b90737c3497be..ff68bc2887f540c5f85d1842773aba4270ed147b 100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -133,10 +133,9 @@ class LChunkBuilder;
 //       HFixedArrayLength
 //       HJSArrayLength
 //       HLoadElements
-//         HTypeofIs
+//       HLoadFunctionPrototype
 //       HLoadNamedField
 //       HLoadNamedGeneric
-//       HLoadFunctionPrototype
 //       HPushArgument
 //       HStringLength
 //       HTypeof
@@ -148,6 +147,7 @@ class LChunkBuilder;
 //         HIsNull
 //         HIsObject
 //         HIsSmi
+//         HTypeofIs
 //       HValueOf
 //     HUnknownOSRValue
 //   HPhi
@@ -224,12 +224,12 @@ class LChunkBuilder;
   V(LeaveInlined)                              \
   V(LoadContextSlot)                           \
   V(LoadElements)                              \
+  V(LoadFunctionPrototype)                     \
   V(LoadGlobal)                                \
   V(LoadKeyedFastElement)                      \
   V(LoadKeyedGeneric)                          \
   V(LoadNamedField)                            \
   V(LoadNamedGeneric)                          \
-  V(LoadFunctionPrototype)                     \
   V(Mod)                                       \
   V(Mul)                                       \
   V(ObjectLiteral)                             \
@@ -268,7 +268,6 @@ class LChunkBuilder;
   V(GlobalVars)                                \
   V(Maps)                                      \
   V(ArrayLengths)                              \
-  V(FunctionPrototypes)                        \
   V(OsrEntries)

 #define DECLARE_INSTRUCTION(type)                   \
@@ -2732,7 +2731,8 @@ class HLoadFunctionPrototype: public HUnaryOperation {
   explicit HLoadFunctionPrototype(HValue* function)
       : HUnaryOperation(function) {
     set_representation(Representation::Tagged());
-    SetFlagMask(kDependsOnFunctionPrototypes);
+    SetFlag(kUseGVN);
+    SetFlag(kDependsOnCalls);
   }

   HValue* function() const { return OperandAt(0); }
@@ -2742,9 +2742,6 @@ class HLoadFunctionPrototype: public HUnaryOperation {
   }

DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load_function_prototype")
-
- protected:
-  virtual bool DataEquals(HValue* other) const { return true; }
 };




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

Reply via email to