Reviewers: Jakob,
Description:
Internalize string keys in Keyed{Store,Load}IC.
[email protected]
BUG=v8:3144
LOG=N
Please review this at https://codereview.chromium.org/162983003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+7, -14 lines):
M src/factory.h
M src/factory.cc
M src/ic.cc
M src/objects.cc
M test/cctest/test-api.cc
Index: src/factory.cc
diff --git a/src/factory.cc b/src/factory.cc
index
63bb44166d694d0dae0b219760b2617a2215434a..6bce5d3a6a368d1a47b238944dd1b68a2731ad25
100644
--- a/src/factory.cc
+++ b/src/factory.cc
@@ -1300,12 +1300,6 @@ Handle<Code> Factory::CopyCode(Handle<Code> code,
Vector<byte> reloc_info) {
}
-Handle<String> Factory::InternalizedStringFromString(Handle<String> value)
{
- CALL_HEAP_FUNCTION(isolate(),
- isolate()->heap()->InternalizeString(*value), String);
-}
-
-
Handle<JSObject> Factory::NewJSObject(Handle<JSFunction> constructor,
PretenureFlag pretenure) {
JSFunction::EnsureHasInitialMap(constructor);
Index: src/factory.h
diff --git a/src/factory.h b/src/factory.h
index
284e6f96a5fcf1c2baa78aa7128be53a89e356b9..00ae587d640aadcaac3e9cb5cf8be0b93dfef162
100644
--- a/src/factory.h
+++ b/src/factory.h
@@ -225,9 +225,6 @@ class Factory {
Handle<Context> previous,
Handle<ScopeInfo> scope_info);
- // Return the internalized version of the passed in string.
- Handle<String> InternalizedStringFromString(Handle<String> value);
-
// Allocate a new struct. The struct is pretenured (allocated directly
in
// the old generation).
Handle<Struct> NewStruct(InstanceType type);
Index: src/ic.cc
diff --git a/src/ic.cc b/src/ic.cc
index
e1405396c1fe90cec1c272f3c7192175c4aad924..0377ba97b2e35ae2cbd4db0d21370f0e54c08379
100644
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -983,6 +983,8 @@ static Handle<Object> TryConvertKey(Handle<Object> key,
Isolate* isolate) {
key = Handle<Smi>(Smi::FromInt(int_value), isolate);
}
}
+ } else if (key->IsString()) {
+ key = isolate->factory()->InternalizeString(Handle<String>::cast(key));
} else if (key->IsUndefined()) {
key = isolate->factory()->undefined_string();
}
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
fc6e34a1aaf00fb47fcfb03af69220e3aecc8a63..84fcee71e5a78ed8a99b7ab85623a419622b848d
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -732,7 +732,7 @@ void JSObject::SetNormalizedProperty(Handle<JSObject>
object,
Handle<NameDictionary>
property_dictionary(object->property_dictionary());
if (!name->IsUniqueName()) {
- name = object->GetIsolate()->factory()->InternalizedStringFromString(
+ name = object->GetIsolate()->factory()->InternalizeString(
Handle<String>::cast(name));
}
@@ -2152,7 +2152,7 @@ Handle<Object> JSObject::AddProperty(Handle<JSObject>
object,
Isolate* isolate = object->GetIsolate();
if (!name->IsUniqueName()) {
- name = isolate->factory()->InternalizedStringFromString(
+ name = isolate->factory()->InternalizeString(
Handle<String>::cast(name));
}
@@ -3135,7 +3135,7 @@ static int AppendUniqueCallbacks(NeanderArray*
callbacks,
Handle<AccessorInfo> entry(AccessorInfo::cast(callbacks->get(i)));
if (entry->name()->IsUniqueName()) continue;
Handle<String> key =
- isolate->factory()->InternalizedStringFromString(
+ isolate->factory()->InternalizeString(
Handle<String>(String::cast(entry->name())));
entry->set_name(*key);
}
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index
17d2fbc7515bebf774b03c4ad8858b77607c3ed8..4bef425be279c7fa56c2220096783106392ac4da
100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -764,7 +764,7 @@ THREADED_TEST(UsingExternalString) {
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in survivor space now
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in old gen now
i::Handle<i::String> isymbol =
- factory->InternalizedStringFromString(istring);
+ factory->InternalizeString(istring);
CHECK(isymbol->IsInternalizedString());
}
CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags);
@@ -784,7 +784,7 @@ THREADED_TEST(UsingExternalAsciiString) {
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in survivor space now
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in old gen now
i::Handle<i::String> isymbol =
- factory->InternalizedStringFromString(istring);
+ factory->InternalizeString(istring);
CHECK(isymbol->IsInternalizedString());
}
CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.