Always initialize key_type_ in AST nodes
authorjkummerow@chromium.org <jkummerow@chromium.org>
Tue, 14 Oct 2014 13:52:15 +0000 (13:52 +0000)
committerjkummerow@chromium.org <jkummerow@chromium.org>
Tue, 14 Oct 2014 13:52:15 +0000 (13:52 +0000)
BUG=chromium:423117
LOG=n
R=mvstanton@chromium.org

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

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

src/ast.cc
src/ast.h
src/ic/ic.h

index 5f9277b..fdf2d55 100644 (file)
@@ -101,6 +101,7 @@ Assignment::Assignment(Zone* zone, Token::Value op, Expression* target,
                        Expression* value, int pos, IdGen* id_gen)
     : Expression(zone, pos, num_ids(), id_gen),
       is_uninitialized_(false),
+      key_type_(ELEMENT),
       store_mode_(STANDARD_STORE),
       op_(op),
       target_(target),
index 3b36b8a..61f9732 100644 (file)
--- a/src/ast.h
+++ b/src/ast.h
@@ -1742,6 +1742,10 @@ class Property FINAL : public Expression {
   virtual KeyedAccessStoreMode GetStoreMode() OVERRIDE {
     return STANDARD_STORE;
   }
+  virtual IcCheckType GetKeyType() {
+    // PROPERTY key types currently aren't implemented for KeyedLoadICs.
+    return ELEMENT;
+  }
   bool IsUninitialized() { return !is_for_call_ && is_uninitialized_; }
   bool HasNoTypeInformation() {
     return is_uninitialized_;
@@ -2123,6 +2127,7 @@ class CountOperation FINAL : public Expression {
       : Expression(zone, pos, num_ids(), id_gen),
         op_(op),
         is_prefix_(is_prefix),
+        key_type_(ELEMENT),
         store_mode_(STANDARD_STORE),
         expression_(expr) {}
 
index 7a6ee61..7124638 100644 (file)
@@ -547,7 +547,8 @@ class KeyedStoreIC : public StoreIC {
   static ExtraICState ComputeExtraICState(StrictMode flag,
                                           KeyedAccessStoreMode mode) {
     return StrictModeState::encode(flag) |
-           ExtraICStateKeyedAccessStoreMode::encode(mode);
+           ExtraICStateKeyedAccessStoreMode::encode(mode) |
+           IcCheckTypeField::encode(ELEMENT);
   }
 
   static KeyedAccessStoreMode GetKeyedAccessStoreMode(