Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: src/compiler/load-elimination.h

Issue 2866233002: [turbofan] Don't mix element accesses with incompatible representations. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/compiler/load-elimination.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/load-elimination.h
diff --git a/src/compiler/load-elimination.h b/src/compiler/load-elimination.h
index cd486a2cd780820b291b8fbb88b606392155d9a6..5d09aa51240d233bff32a9860107acba62a4ebc0 100644
--- a/src/compiler/load-elimination.h
+++ b/src/compiler/load-elimination.h
@@ -8,6 +8,7 @@
#include "src/base/compiler-specific.h"
#include "src/compiler/graph-reducer.h"
#include "src/globals.h"
+#include "src/machine-type.h"
#include "src/zone/zone-handle-set.h"
namespace v8 {
@@ -78,19 +79,23 @@ class V8_EXPORT_PRIVATE LoadElimination final
elements_[i] = Element();
}
}
- AbstractElements(Node* object, Node* index, Node* value, Zone* zone)
+ AbstractElements(Node* object, Node* index, Node* value,
+ MachineRepresentation representation, Zone* zone)
: AbstractElements(zone) {
- elements_[next_index_++] = Element(object, index, value);
+ elements_[next_index_++] = Element(object, index, value, representation);
}
AbstractElements const* Extend(Node* object, Node* index, Node* value,
+ MachineRepresentation representation,
Zone* zone) const {
AbstractElements* that = new (zone) AbstractElements(*this);
- that->elements_[that->next_index_] = Element(object, index, value);
+ that->elements_[that->next_index_] =
+ Element(object, index, value, representation);
that->next_index_ = (that->next_index_ + 1) % arraysize(elements_);
return that;
}
- Node* Lookup(Node* object, Node* index) const;
+ Node* Lookup(Node* object, Node* index,
+ MachineRepresentation representation) const;
AbstractElements const* Kill(Node* object, Node* index, Zone* zone) const;
bool Equals(AbstractElements const* that) const;
AbstractElements const* Merge(AbstractElements const* that,
@@ -101,12 +106,17 @@ class V8_EXPORT_PRIVATE LoadElimination final
private:
struct Element {
Element() {}
- Element(Node* object, Node* index, Node* value)
- : object(object), index(index), value(value) {}
+ Element(Node* object, Node* index, Node* value,
+ MachineRepresentation representation)
+ : object(object),
+ index(index),
+ value(value),
+ representation(representation) {}
Node* object = nullptr;
Node* index = nullptr;
Node* value = nullptr;
+ MachineRepresentation representation = MachineRepresentation::kNone;
};
Element elements_[kMaxTrackedElements];
@@ -224,10 +234,12 @@ class V8_EXPORT_PRIVATE LoadElimination final
Node* LookupField(Node* object, size_t index) const;
AbstractState const* AddElement(Node* object, Node* index, Node* value,
+ MachineRepresentation representation,
Zone* zone) const;
AbstractState const* KillElement(Node* object, Node* index,
Zone* zone) const;
- Node* LookupElement(Node* object, Node* index) const;
+ Node* LookupElement(Node* object, Node* index,
+ MachineRepresentation representation) const;
AbstractState const* AddCheck(Node* node, Zone* zone) const;
Node* LookupCheck(Node* node) const;
« no previous file with comments | « no previous file | src/compiler/load-elimination.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698