From 2284996cc1a696d158205f377de9276a72e80938 Mon Sep 17 00:00:00 2001 From: "fschneider@chromium.org" Date: Mon, 23 Jan 2012 18:11:36 +0000 Subject: [PATCH] Add range information to external array loads. Review URL: http://codereview.chromium.org/9226014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/hydrogen-instructions.cc | 17 +++++++++++++++++ src/hydrogen-instructions.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc index 2d32ad1..7ae0b44 100644 --- a/src/hydrogen-instructions.cc +++ b/src/hydrogen-instructions.cc @@ -1339,6 +1339,23 @@ Range* HShl::InferRange() { } +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())); diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h index 9f661d6..de197ff 100644 --- a/src/hydrogen-instructions.h +++ b/src/hydrogen-instructions.h @@ -3844,6 +3844,8 @@ class HLoadKeyedSpecializedArrayElement: public HTemplateInstruction<2> { HValue* key() { return OperandAt(1); } ElementsKind elements_kind() const { return elements_kind_; } + virtual Range* InferRange(); + DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement) protected: -- 2.7.4