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

Unified Diff: src/ia32/lithium-ia32.h

Issue 10382055: Array index computation dehoisting. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 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
Index: src/ia32/lithium-ia32.h
diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h
index 09f0b0d7290f02b07ae762bd64f93db39f014c1d..edf7411323ec6af70a3af08e9acc9a8dc0b0add7 100644
--- a/src/ia32/lithium-ia32.h
+++ b/src/ia32/lithium-ia32.h
@@ -1228,7 +1228,10 @@ class LLoadExternalArrayPointer: public LTemplateInstruction<1, 1, 0> {
class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
public:
- LLoadKeyedFastElement(LOperand* elements, LOperand* key) {
+ LLoadKeyedFastElement(LOperand* elements,
+ LOperand* key,
+ uint32_t additional_index)
+ : additional_index_(additional_index) {
inputs_[0] = elements;
inputs_[1] = key;
}
@@ -1238,13 +1241,22 @@ class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
LOperand* elements() { return inputs_[0]; }
LOperand* key() { return inputs_[1]; }
+ uint32_t additional_index() const { return additional_index_; }
+ void set_additional_index(uint32_t additional_index) {
+ additional_index_ = additional_index;
+ }
+
+ private:
+ uint32_t additional_index_;
Jakob Kummerow 2012/05/08 13:46:26 You don't need to pass this value to the LInstruct
Massi 2012/05/14 13:48:52 Done.
};
class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
public:
LLoadKeyedFastDoubleElement(LOperand* elements,
- LOperand* key) {
+ LOperand* key,
+ uint32_t additional_index)
+ : additional_index_(additional_index) {
inputs_[0] = elements;
inputs_[1] = key;
}
@@ -1255,13 +1267,22 @@ class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
LOperand* elements() { return inputs_[0]; }
LOperand* key() { return inputs_[1]; }
+ uint32_t additional_index() const { return additional_index_; }
+ void set_additional_index(uint32_t additional_index) {
+ additional_index_ = additional_index;
+ }
+
+ private:
+ uint32_t additional_index_;
};
class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
public:
LLoadKeyedSpecializedArrayElement(LOperand* external_pointer,
- LOperand* key) {
+ LOperand* key,
+ uint32_t additional_index)
+ : additional_index_(additional_index) {
inputs_[0] = external_pointer;
inputs_[1] = key;
}
@@ -1275,6 +1296,13 @@ class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
ElementsKind elements_kind() const {
return hydrogen()->elements_kind();
}
+ uint32_t additional_index() const { return additional_index_; }
+ void set_additional_index(uint32_t additional_index) {
+ additional_index_ = additional_index;
+ }
+
+ private:
+ uint32_t additional_index_;
};
@@ -1760,7 +1788,11 @@ class LStoreNamedGeneric: public LTemplateInstruction<0, 3, 0> {
class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
public:
- LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) {
+ LStoreKeyedFastElement(LOperand* obj,
+ LOperand* key,
+ LOperand* val,
+ uint32_t additional_index)
+ : additional_index_(additional_index) {
inputs_[0] = obj;
inputs_[1] = key;
inputs_[2] = val;
@@ -1775,6 +1807,13 @@ class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
LOperand* object() { return inputs_[0]; }
LOperand* key() { return inputs_[1]; }
LOperand* value() { return inputs_[2]; }
+ uint32_t additional_index() const { return additional_index_; }
+ void set_additional_index(uint32_t additional_index) {
+ additional_index_ = additional_index;
+ }
+
+ private:
+ uint32_t additional_index_;
};
@@ -1782,7 +1821,9 @@ class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
public:
LStoreKeyedFastDoubleElement(LOperand* elements,
LOperand* key,
- LOperand* val) {
+ LOperand* val,
+ uint32_t additional_index)
+ : additional_index_(additional_index) {
inputs_[0] = elements;
inputs_[1] = key;
inputs_[2] = val;
@@ -1797,8 +1838,15 @@ class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
LOperand* elements() { return inputs_[0]; }
LOperand* key() { return inputs_[1]; }
LOperand* value() { return inputs_[2]; }
+ uint32_t additional_index() const { return additional_index_; }
+ void set_additional_index(uint32_t additional_index) {
+ additional_index_ = additional_index;
+ }
bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
+
+ private:
+ uint32_t additional_index_;
};
@@ -1806,7 +1854,9 @@ class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
public:
LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
LOperand* key,
- LOperand* val) {
+ LOperand* val,
+ uint32_t additional_index)
+ : additional_index_(additional_index) {
inputs_[0] = external_pointer;
inputs_[1] = key;
inputs_[2] = val;
@@ -1822,6 +1872,13 @@ class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
ElementsKind elements_kind() const {
return hydrogen()->elements_kind();
}
+ uint32_t additional_index() const { return additional_index_; }
+ void set_additional_index(uint32_t additional_index) {
+ additional_index_ = additional_index;
+ }
+
+ private:
+ uint32_t additional_index_;
};

Powered by Google App Engine
This is Rietveld 408576698