diff options
Diffstat (limited to 'deps/v8/test/cctest/interpreter/test-interpreter.cc')
-rw-r--r-- | deps/v8/test/cctest/interpreter/test-interpreter.cc | 25 |
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()); } } } |