From addb8f96c1d81ecb602705f29d719e0022102e3c Mon Sep 17 00:00:00 2001 From: "verwaest@chromium.org" Date: Fri, 10 May 2013 08:39:37 +0000 Subject: [PATCH] Don't CheckSmi when type is Smi. R=mvstanton@chromium.org Review URL: https://chromiumcodereview.appspot.com/14890007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14605 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/hydrogen.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/hydrogen.cc b/src/hydrogen.cc index 5c573fe..cd46747 100644 --- a/src/hydrogen.cc +++ b/src/hydrogen.cc @@ -1129,8 +1129,10 @@ HInstruction* HGraphBuilder::BuildFastElementAccess( switch (elements_kind) { case FAST_SMI_ELEMENTS: case FAST_HOLEY_SMI_ELEMENTS: - // Smi-only arrays need a smi check. - AddInstruction(new(zone) HCheckSmi(val)); + if (!val->type().IsSmi()) { + // Smi-only arrays need a smi check. + AddInstruction(new(zone) HCheckSmi(val)); + } // Fall through. case FAST_ELEMENTS: case FAST_HOLEY_ELEMENTS: @@ -6934,9 +6936,11 @@ void HOptimizedGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) { switch (boilerplate_elements_kind) { case FAST_SMI_ELEMENTS: case FAST_HOLEY_SMI_ELEMENTS: - // Smi-only arrays need a smi check. - AddInstruction(new(zone()) HCheckSmi(value)); - // Fall through. + if (!value->type().IsSmi()) { + // Smi-only arrays need a smi check. + AddInstruction(new(zone()) HCheckSmi(value)); + // Fall through. + } case FAST_ELEMENTS: case FAST_HOLEY_ELEMENTS: case FAST_DOUBLE_ELEMENTS: -- 2.7.4