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
parent e56e84bf
...@@ -2724,7 +2724,6 @@ static Object* Runtime_GetProperty(Arguments args) { ...@@ -2724,7 +2724,6 @@ static Object* Runtime_GetProperty(Arguments args) {
} }
// KeyedStringGetProperty is called from KeyedLoadIC::GenerateGeneric. // KeyedStringGetProperty is called from KeyedLoadIC::GenerateGeneric.
static Object* Runtime_KeyedGetProperty(Arguments args) { static Object* Runtime_KeyedGetProperty(Arguments args) {
NoHandleAllocation ha; NoHandleAllocation ha;
...@@ -2776,6 +2775,13 @@ static Object* Runtime_KeyedGetProperty(Arguments args) { ...@@ -2776,6 +2775,13 @@ static Object* Runtime_KeyedGetProperty(Arguments args) {
// If value is the hole do the general lookup. // 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<String> str = args.at<String>(0);
int index = Smi::cast(args[1])->value();
Handle<Object> result = GetCharAt(str, index);
return *result;
} }
// Fall back to GetObjectProperty. // Fall back to GetObjectProperty.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment