Revision: 10479
Author:   [email protected]
Date:     Mon Jan 23 10:11:36 2012
Log:      Add range information to external array loads.
Review URL: http://codereview.chromium.org/9226014
http://code.google.com/p/v8/source/detail?r=10479

Modified:
 /branches/bleeding_edge/src/hydrogen-instructions.cc
 /branches/bleeding_edge/src/hydrogen-instructions.h

=======================================
--- /branches/bleeding_edge/src/hydrogen-instructions.cc Mon Jan 23 04:01:47 2012 +++ /branches/bleeding_edge/src/hydrogen-instructions.cc Mon Jan 23 10:11:36 2012
@@ -1339,6 +1339,23 @@
 }


+Range* HLoadKeyedSpecializedArrayElement::InferRange() {
+  switch (elements_kind()) {
+    case EXTERNAL_PIXEL_ELEMENTS:
+      return new Range(0, 255);
+    case EXTERNAL_BYTE_ELEMENTS:
+      return new Range(-128, 127);
+    case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
+      return new Range(0, 255);
+    case EXTERNAL_SHORT_ELEMENTS:
+      return new Range(-32768, 32767);
+    case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
+      return new Range(0, 65535);
+    default:
+      return HValue::InferRange();
+  }
+}
+

 void HCompareGeneric::PrintDataTo(StringStream* stream) {
   stream->Add(Token::Name(token()));
=======================================
--- /branches/bleeding_edge/src/hydrogen-instructions.h Fri Jan 20 07:55:06 2012 +++ /branches/bleeding_edge/src/hydrogen-instructions.h Mon Jan 23 10:11:36 2012
@@ -3843,6 +3843,8 @@
   HValue* external_pointer() { return OperandAt(0); }
   HValue* key() { return OperandAt(1); }
   ElementsKind elements_kind() const { return elements_kind_; }
+
+  virtual Range* InferRange();

   DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement)

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to