Revision: 9175
Author:   [email protected]
Date:     Wed Sep  7 06:13:56 2011
Log:      Make one-character strings into symbols more agressively.
Review URL: http://codereview.chromium.org/7840029
http://code.google.com/p/v8/source/detail?r=9175

Modified:
 /branches/bleeding_edge/src/heap.cc
 /branches/bleeding_edge/test/cctest/test-profile-generator.cc

=======================================
--- /branches/bleeding_edge/src/heap.cc Wed Sep  7 04:49:12 2011
+++ /branches/bleeding_edge/src/heap.cc Wed Sep  7 06:13:56 2011
@@ -3623,6 +3623,9 @@

 MaybeObject* Heap::AllocateStringFromAscii(Vector<const char> string,
                                            PretenureFlag pretenure) {
+  if (string.length() == 1) {
+    return Heap::LookupSingleCharacterStringFromCode(string[0]);
+  }
   Object* result;
   { MaybeObject* maybe_result =
         AllocateRawAsciiString(string.length(), pretenure);
=======================================
--- /branches/bleeding_edge/test/cctest/test-profile-generator.cc Fri Aug 12 02:49:55 2011 +++ /branches/bleeding_edge/test/cctest/test-profile-generator.cc Wed Sep 7 06:13:56 2011
@@ -37,16 +37,16 @@
   TokenEnumerator te;
   CHECK_EQ(TokenEnumerator::kNoSecurityToken, te.GetTokenId(NULL));
   v8::HandleScope hs;
-  v8::Local<v8::String> token1(v8::String::New("1"));
+  v8::Local<v8::String> token1(v8::String::New("1x"));
   CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
   CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
-  v8::Local<v8::String> token2(v8::String::New("2"));
+  v8::Local<v8::String> token2(v8::String::New("2x"));
   CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2)));
   CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2)));
   CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
   {
     v8::HandleScope hs;
-    v8::Local<v8::String> token3(v8::String::New("3"));
+    v8::Local<v8::String> token3(v8::String::New("3x"));
     CHECK_EQ(2, te.GetTokenId(*v8::Utils::OpenHandle(*token3)));
     CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2)));
     CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to