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.

Reply via email to