summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/interpreter/test-interpreter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/interpreter/test-interpreter.cc')
-rw-r--r--deps/v8/test/cctest/interpreter/test-interpreter.cc25
1 files changed, 18 insertions, 7 deletions
diff --git a/deps/v8/test/cctest/interpreter/test-interpreter.cc b/deps/v8/test/cctest/interpreter/test-interpreter.cc
index f3f4021f88..ad2577aeab 100644
--- a/deps/v8/test/cctest/interpreter/test-interpreter.cc
+++ b/deps/v8/test/cctest/interpreter/test-interpreter.cc
@@ -12,6 +12,8 @@
#include "src/interpreter/bytecode-array-iterator.h"
#include "src/interpreter/bytecode-label.h"
#include "src/interpreter/interpreter.h"
+#include "src/objects-inl.h"
+#include "src/unicode-cache.h"
#include "test/cctest/cctest.h"
#include "test/cctest/interpreter/interpreter-tester.h"
#include "test/cctest/test-feedback-vector.h"
@@ -555,6 +557,10 @@ TEST(InterpreterBinaryOpTypeFeedback) {
isolate->factory()->NewHeapNumber(1.4142),
isolate->factory()->NewHeapNumber(3.1415 + 1.4142),
BinaryOperationFeedback::kNumber},
+ {Token::Value::ADD, isolate->factory()->NewStringFromAsciiChecked("foo"),
+ isolate->factory()->NewStringFromAsciiChecked("bar"),
+ isolate->factory()->NewStringFromAsciiChecked("foobar"),
+ BinaryOperationFeedback::kString},
{Token::Value::ADD, Handle<Smi>(Smi::FromInt(2), isolate),
isolate->factory()->NewStringFromAsciiChecked("2"),
isolate->factory()->NewStringFromAsciiChecked("22"),
@@ -1794,9 +1800,9 @@ TEST(InterpreterStringComparisons) {
BytecodeArrayBuilder builder(isolate, handles.main_zone(), 0, 0, 1);
Register r0(0);
- builder.LoadLiteral(factory->NewStringFromAsciiChecked(lhs))
+ builder.LoadLiteral(factory->InternalizeUtf8String(lhs))
.StoreAccumulatorInRegister(r0)
- .LoadLiteral(factory->NewStringFromAsciiChecked(rhs))
+ .LoadLiteral(factory->InternalizeUtf8String(rhs))
.CompareOperation(comparison, r0, vector->GetIndex(slot))
.Return();
@@ -1809,8 +1815,11 @@ TEST(InterpreterStringComparisons) {
CompareC(comparison, inputs[i], inputs[j]));
Object* feedback = vector->Get(slot);
CHECK(feedback->IsSmi());
- CHECK_EQ(CompareOperationFeedback::kAny,
- static_cast<Smi*>(feedback)->value());
+ int const expected_feedback =
+ Token::IsOrderedRelationalCompareOp(comparison)
+ ? CompareOperationFeedback::kString
+ : CompareOperationFeedback::kInternalizedString;
+ CHECK_EQ(expected_feedback, static_cast<Smi*>(feedback)->value());
}
}
}
@@ -1822,7 +1831,7 @@ TEST(InterpreterMixedComparisons) {
// convertible to a HeapNumber so comparison will be between numeric
// values except for the strict comparisons where no conversion is
// performed.
- const char* inputs[] = {"-1.77", "-40.333", "0.01", "55.77e5", "2.01"};
+ const char* inputs[] = {"-1.77", "-40.333", "0.01", "55.77e50", "2.01"};
UnicodeCache unicode_cache;
@@ -1875,8 +1884,10 @@ TEST(InterpreterMixedComparisons) {
CompareC(comparison, lhs, rhs, true));
Object* feedback = vector->Get(slot);
CHECK(feedback->IsSmi());
- CHECK_EQ(CompareOperationFeedback::kAny,
- static_cast<Smi*>(feedback)->value());
+ // kNumber | kString gets converted to CompareOperationHint::kAny.
+ int expected_feedback = CompareOperationFeedback::kNumber |
+ CompareOperationFeedback::kString;
+ CHECK_EQ(expected_feedback, static_cast<Smi*>(feedback)->value());
}
}
}