Small changes in preparation for Hydrogen-generated KeyedLoadGeneric
authordanno@chromium.org <danno@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 27 May 2014 15:15:49 +0000 (15:15 +0000)
committerdanno@chromium.org <danno@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 27 May 2014 15:15:49 +0000 (15:15 +0000)
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/303583002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/arm/lithium-arm.h
src/arm64/lithium-arm64.h
src/hydrogen-instructions.cc
src/hydrogen-instructions.h
src/ia32/lithium-ia32.h
src/mips/lithium-mips.h
src/x64/lithium-x64.h

index 5fdf6741863635fd31958f34d2b6dd2c00d3bb7b..71a20f4ae9d2dd58858de511b7b865e3a26add93 100644 (file)
@@ -424,6 +424,7 @@ class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> {
 
 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> {
  public:
+  virtual bool IsControl() const V8_OVERRIDE { return true; }
   DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
   DECLARE_HYDROGEN_ACCESSOR(Deoptimize)
 };
index 72ae57db3c92819935e66ea32bd2f1278c07e45d..1da3dd83666dde1219876c5b08a6904a02ad5c61 100644 (file)
@@ -1288,6 +1288,7 @@ class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 1, 0> {
 
 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> {
  public:
+  virtual bool IsControl() const V8_OVERRIDE { return true; }
   DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
   DECLARE_HYDROGEN_ACCESSOR(Deoptimize)
 };
index 388f92f58f4a7e0ae705c4061db69842897c3c65..ef9f6d4aefb97044bae2240ec4388a9e97c464ef 100644 (file)
@@ -2904,6 +2904,7 @@ bool HConstant::EmitAtUses() {
   if (UseCount() == 0) return true;
   if (IsCell()) return false;
   if (representation().IsDouble()) return false;
+  if (representation().IsExternal()) return false;
   return true;
 }
 
index b7f50a1dbf791722c42612a881921d027dc14c73..74faf556ca57253bdaf3c15979c7684a9a8b8587 100644 (file)
@@ -7777,6 +7777,8 @@ class HForInCacheArray V8_FINAL : public HTemplateInstruction<2> {
 
 class HLoadFieldByIndex V8_FINAL : public HTemplateInstruction<2> {
  public:
+  DECLARE_INSTRUCTION_FACTORY_P2(HLoadFieldByIndex, HValue*, HValue*);
+
   HLoadFieldByIndex(HValue* object,
                     HValue* index) {
     SetOperandAt(0, object);
@@ -7786,7 +7788,11 @@ class HLoadFieldByIndex V8_FINAL : public HTemplateInstruction<2> {
   }
 
   virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
-    return Representation::Tagged();
+    if (index == 1) {
+      return Representation::Smi();
+    } else {
+      return Representation::Tagged();
+    }
   }
 
   HValue* object() { return OperandAt(0); }
index 5a612b75175d81830c695423864baaaf39232f99..e7b0d5b429390f0e613d9b7b679b122e5e1ead2d 100644 (file)
@@ -415,6 +415,7 @@ class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> {
 
 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> {
  public:
+  virtual bool IsControl() const V8_OVERRIDE { return true; }
   DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
   DECLARE_HYDROGEN_ACCESSOR(Deoptimize)
 };
index 954974ce6b3aa23e4cc02ffe51d031f6003ad7ab..cf6be5941f62da328688ea29d6510ac0621a7b02 100644 (file)
@@ -421,6 +421,7 @@ class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> {
 
 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> {
  public:
+  virtual bool IsControl() const V8_OVERRIDE { return true; }
   DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
   DECLARE_HYDROGEN_ACCESSOR(Deoptimize)
 };
index 3f228249f3a2fcc0c2c12a1c3ba5480eb52b14ac..ef407898f0accd78e0f0a53513644f4b12778cd5 100644 (file)
@@ -429,6 +429,7 @@ class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> {
 
 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> {
  public:
+  virtual bool IsControl() const V8_OVERRIDE { return true; }
   DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
   DECLARE_HYDROGEN_ACCESSOR(Deoptimize)
 };