Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1793)

Unified Diff: test/cctest/test-code-stub-assembler.cc

Issue 2549773002: Internalize strings in-place (Closed)
Patch Set: rebased Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/x87/macro-assembler-x87.cc ('k') | test/cctest/test-strings.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-code-stub-assembler.cc
diff --git a/test/cctest/test-code-stub-assembler.cc b/test/cctest/test-code-stub-assembler.cc
index 068ef9c3d169205ba7a38bb7ffb807f2c88a0c9e..61c6b7bf7ed33c673e20b6945bc21e06e67700ec 100644
--- a/test/cctest/test-code-stub-assembler.cc
+++ b/test/cctest/test-code-stub-assembler.cc
@@ -180,47 +180,6 @@ TEST(ToString) {
}
}
-TEST(FlattenString) {
- Isolate* isolate(CcTest::InitIsolateOnce());
- const int kNumParams = 1;
- CodeAssemblerTester data(isolate, kNumParams);
- CodeStubAssembler m(data.state());
- m.Return(m.FlattenString(m.Parameter(0)));
-
- Handle<Code> code = data.GenerateCode();
- FunctionTester ft(code, kNumParams);
-
- Handle<FixedArray> test_cases(isolate->factory()->NewFixedArray(4));
- Handle<String> expected(
- isolate->factory()->InternalizeUtf8String("hello, world!"));
- test_cases->set(0, *expected);
-
- Handle<String> string(
- isolate->factory()->InternalizeUtf8String("filler hello, world! filler"));
- Handle<String> sub_string(
- isolate->factory()->NewProperSubString(string, 7, 20));
- test_cases->set(1, *sub_string);
-
- Handle<String> hello(isolate->factory()->InternalizeUtf8String("hello,"));
- Handle<String> world(isolate->factory()->InternalizeUtf8String(" world!"));
- Handle<String> cons_str(
- isolate->factory()->NewConsString(hello, world).ToHandleChecked());
- test_cases->set(2, *cons_str);
-
- Handle<String> empty(isolate->factory()->InternalizeUtf8String(""));
- Handle<String> fake_cons_str(
- isolate->factory()->NewConsString(expected, empty).ToHandleChecked());
- test_cases->set(3, *fake_cons_str);
-
- for (int i = 0; i < 4; ++i) {
- Handle<String> test = handle(String::cast(test_cases->get(i)));
- Handle<Object> result = ft.Call(test).ToHandleChecked();
- CHECK(result->IsString());
- CHECK(Handle<String>::cast(result)->IsFlat());
- CHECK(String::Equals(Handle<String>::cast(result), expected));
- }
-}
-
TEST(TryToName) {
typedef CodeAssemblerLabel Label;
typedef CodeAssemblerVariable Variable;
@@ -238,22 +197,26 @@ TEST(TryToName) {
Label passed(&m), failed(&m);
Label if_keyisindex(&m), if_keyisunique(&m), if_bailout(&m);
- Variable var_index(&m, MachineType::PointerRepresentation());
-
- m.TryToName(key, &if_keyisindex, &var_index, &if_keyisunique, &if_bailout);
-
- m.Bind(&if_keyisindex);
- m.GotoUnless(
- m.WordEqual(expected_result, m.SmiConstant(Smi::FromInt(kKeyIsIndex))),
- &failed);
- m.Branch(m.WordEqual(m.SmiUntag(expected_arg), var_index.value()), &passed,
- &failed);
-
- m.Bind(&if_keyisunique);
- m.GotoUnless(
- m.WordEqual(expected_result, m.SmiConstant(Smi::FromInt(kKeyIsUnique))),
- &failed);
- m.Branch(m.WordEqual(expected_arg, key), &passed, &failed);
+ {
+ Variable var_index(&m, MachineType::PointerRepresentation());
+ Variable var_unique(&m, MachineRepresentation::kTagged);
+
+ m.TryToName(key, &if_keyisindex, &var_index, &if_keyisunique, &var_unique,
+ &if_bailout);
+
+ m.Bind(&if_keyisindex);
+ m.GotoUnless(m.WordEqual(expected_result,
+ m.SmiConstant(Smi::FromInt(kKeyIsIndex))),
+ &failed);
+ m.Branch(m.WordEqual(m.SmiUntag(expected_arg), var_index.value()),
+ &passed, &failed);
+
+ m.Bind(&if_keyisunique);
+ m.GotoUnless(m.WordEqual(expected_result,
+ m.SmiConstant(Smi::FromInt(kKeyIsUnique))),
+ &failed);
+ m.Branch(m.WordEqual(expected_arg, var_unique.value()), &passed, &failed);
+ }
m.Bind(&if_bailout);
m.Branch(
@@ -349,6 +312,23 @@ TEST(TryToName) {
Handle<Object> key = isolate->factory()->NewStringFromAsciiChecked("test");
ft.CheckTrue(key, expect_bailout);
}
+
+ {
+ // TryToName(<thin string>) => internalized version.
+ Handle<String> s = isolate->factory()->NewStringFromAsciiChecked("foo");
+ Handle<String> internalized = isolate->factory()->InternalizeString(s);
+ ft.CheckTrue(s, expect_unique, internalized);
+ }
+
+ {
+ // TryToName(<thin two-byte string>) => internalized version.
+ uc16 array1[] = {2001, 2002, 2003};
+ Vector<const uc16> str1(array1);
+ Handle<String> s =
+ isolate->factory()->NewStringFromTwoByte(str1).ToHandleChecked();
+ Handle<String> internalized = isolate->factory()->InternalizeString(s);
+ ft.CheckTrue(s, expect_unique, internalized);
+ }
}
namespace {
« no previous file with comments | « src/x87/macro-assembler-x87.cc ('k') | test/cctest/test-strings.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698