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

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

Issue 2277363002: [stubs] Consolidate TryToName implementation (Closed)
Patch Set: Created 4 years, 4 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
« src/compiler/code-assembler.h ('K') | « src/compiler/code-assembler.cc ('k') | no next file » | 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 597bdfe000ba0d2729ca3a41f4a04a23c9be2f0f..f0d36960e580a44c5a1647079c5ac1835c7a4290 100644
--- a/test/cctest/test-code-stub-assembler.cc
+++ b/test/cctest/test-code-stub-assembler.cc
@@ -132,7 +132,7 @@ TEST(TryToName) {
Label passed(&m), failed(&m);
Label if_keyisindex(&m), if_keyisunique(&m), if_bailout(&m);
- Variable var_index(&m, MachineRepresentation::kWord32);
+ Variable var_index(&m, MachineType::PointerRepresentation());
m.TryToName(key, &if_keyisindex, &var_index, &if_keyisunique, &if_bailout);
@@ -140,8 +140,8 @@ TEST(TryToName) {
m.GotoUnless(
m.WordEqual(expected_result, m.SmiConstant(Smi::FromInt(kKeyIsIndex))),
&failed);
- m.Branch(m.Word32Equal(m.SmiToWord32(expected_arg), var_index.value()),
- &passed, &failed);
+ m.Branch(m.WordEqual(m.SmiUntag(expected_arg), var_index.value()), &passed,
+ &failed);
m.Bind(&if_keyisunique);
m.GotoUnless(
@@ -181,9 +181,17 @@ TEST(TryToName) {
}
{
- // TryToName(<negative smi>) => bailout.
+ // TryToName(<negative smi>) => if_keyisindex: smi value.
+ // A subsequent bounds check needs to take care of this case.
Handle<Object> key(Smi::FromInt(-1), isolate);
- ft.CheckTrue(key, expect_bailout);
+ ft.CheckTrue(key, expect_index, key);
+ }
+
+ {
+ // TryToName(<heap number with int value>) => if_keyisindex: number.
+ Handle<Object> key(isolate->factory()->NewHeapNumber(153));
+ Handle<Object> index(Smi::FromInt(153), isolate);
+ ft.CheckTrue(key, expect_index, index);
}
{
@@ -206,6 +214,17 @@ TEST(TryToName) {
}
{
+ // TryToName(<non-internalized number string>) => if_keyisindex: number.
+ Handle<String> key = isolate->factory()->NewStringFromAsciiChecked("153");
+ uint32_t dummy;
+ key->AsArrayIndex(&dummy);
Igor Sheludko 2016/09/01 14:31:31 CHECK(...)?
Jakob Kummerow 2016/09/05 13:15:54 Done.
+ DCHECK(key->HasHashCode());
Igor Sheludko 2016/09/01 14:31:31 DCHECK -> CHECK
Jakob Kummerow 2016/09/05 13:15:54 Done. (I don't see the necessity, as that's not th
+ DCHECK(!key->IsInternalizedString());
Igor Sheludko 2016/09/01 14:31:31 Same here.
Jakob Kummerow 2016/09/05 13:15:54 Done.
+ Handle<Object> index(Smi::FromInt(153), isolate);
+ ft.CheckTrue(key, expect_index, index);
+ }
+
+ {
// TryToName(<non-internalized string>) => bailout.
Handle<Object> key = isolate->factory()->NewStringFromAsciiChecked("test");
ft.CheckTrue(key, expect_bailout);
« src/compiler/code-assembler.h ('K') | « src/compiler/code-assembler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698