Index: src/compiler/verifier.cc |
diff --git a/src/compiler/verifier.cc b/src/compiler/verifier.cc |
index 722e28ef6593772e21127e1f39a2c8bf444acb9a..9088ab561489e3fb0e3ddb4c687639a62b0f049e 100644 |
--- a/src/compiler/verifier.cc |
+++ b/src/compiler/verifier.cc |
@@ -14,11 +14,12 @@ |
#include "src/compiler/all-nodes.h" |
#include "src/compiler/common-operator.h" |
#include "src/compiler/graph.h" |
-#include "src/compiler/node.h" |
+#include "src/compiler/js-operator.h" |
#include "src/compiler/node-properties.h" |
+#include "src/compiler/node.h" |
#include "src/compiler/opcodes.h" |
-#include "src/compiler/operator.h" |
#include "src/compiler/operator-properties.h" |
+#include "src/compiler/operator.h" |
#include "src/compiler/schedule.h" |
#include "src/compiler/simplified-operator.h" |
#include "src/ostreams.h" |
@@ -590,14 +591,35 @@ void Verifier::Visitor::Check(Node* node) { |
CheckTypeIs(node, Type::OtherObject()); |
break; |
case IrOpcode::kJSLoadProperty: |
+ // Type can be anything. |
+ CheckTypeIs(node, Type::Any()); |
+ CHECK(PropertyAccessOf(node->op()).feedback().IsValid()); |
+ break; |
case IrOpcode::kJSLoadNamed: |
+ // Type can be anything. |
+ CheckTypeIs(node, Type::Any()); |
+ CHECK(NamedAccessOf(node->op()).feedback().IsValid()); |
+ break; |
case IrOpcode::kJSLoadGlobal: |
// Type can be anything. |
CheckTypeIs(node, Type::Any()); |
+ CHECK(LoadGlobalParametersOf(node->op()).feedback().IsValid()); |
break; |
case IrOpcode::kJSStoreProperty: |
+ // Type is empty. |
+ CheckNotTyped(node); |
+ CHECK(PropertyAccessOf(node->op()).feedback().IsValid()); |
+ break; |
case IrOpcode::kJSStoreNamed: |
+ // Type is empty. |
+ CheckNotTyped(node); |
+ CHECK(NamedAccessOf(node->op()).feedback().IsValid()); |
+ break; |
case IrOpcode::kJSStoreGlobal: |
+ // Type is empty. |
+ CheckNotTyped(node); |
+ CHECK(StoreGlobalParametersOf(node->op()).feedback().IsValid()); |
+ break; |
case IrOpcode::kJSStoreDataPropertyInLiteral: |
// Type is empty. |
CheckNotTyped(node); |