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); |