From fd03f6c153c642c8222b7b0e0ea780f3377791ba Mon Sep 17 00:00:00 2001 From: "fschneider@chromium.org" Date: Mon, 28 Dec 2009 13:01:03 +0000 Subject: [PATCH] Faster handling of string indexing using [] with a SMI index. Instead of falling back to calling GetObjectProperty we call GetCharAt directly if the object is a string and the key in a SMI. Review URL: http://codereview.chromium.org/522015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/runtime.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/runtime.cc b/src/runtime.cc index 8349833..b01e201 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -2724,7 +2724,6 @@ static Object* Runtime_GetProperty(Arguments args) { } - // KeyedStringGetProperty is called from KeyedLoadIC::GenerateGeneric. static Object* Runtime_KeyedGetProperty(Arguments args) { NoHandleAllocation ha; @@ -2776,6 +2775,13 @@ static Object* Runtime_KeyedGetProperty(Arguments args) { // If value is the hole do the general lookup. } } + } else if (args[0]->IsString() && args[1]->IsSmi()) { + // Fast case for string indexing using [] with a smi index. + HandleScope scope; + Handle str = args.at(0); + int index = Smi::cast(args[1])->value(); + Handle result = GetCharAt(str, index); + return *result; } // Fall back to GetObjectProperty. -- 2.7.4