Merge V8 5.3.332.45. DO NOT MERGE
Test: Manual
FPIIM-449
Change-Id: Id3254828b068abdea3cb10442e0172a8c9a98e03
(cherry picked from commit 13e2dadd00298019ed862f2b2fc5068bba730bcf)
diff --git a/test/cctest/compiler/test-js-typed-lowering.cc b/test/cctest/compiler/test-js-typed-lowering.cc
index 0075de5..0dac0da 100644
--- a/test/cctest/compiler/test-js-typed-lowering.cc
+++ b/test/cctest/compiler/test-js-typed-lowering.cc
@@ -47,7 +47,8 @@
Graph graph;
Typer typer;
Node* context_node;
- BinaryOperationHints const hints = BinaryOperationHints::Any();
+ BinaryOperationHints const binop_hints = BinaryOperationHints::Any();
+ CompareOperationHints const compare_hints = CompareOperationHints::Any();
Node* Parameter(Type* t, int32_t index = 0) {
Node* n = graph.NewNode(common.Parameter(index), graph.start());
@@ -255,11 +256,11 @@
TEST(NumberBinops) {
JSTypedLoweringTester R;
const Operator* ops[] = {
- R.javascript.Add(R.hints), R.simplified.NumberAdd(),
- R.javascript.Subtract(R.hints), R.simplified.NumberSubtract(),
- R.javascript.Multiply(R.hints), R.simplified.NumberMultiply(),
- R.javascript.Divide(R.hints), R.simplified.NumberDivide(),
- R.javascript.Modulus(R.hints), R.simplified.NumberModulus(),
+ R.javascript.Add(R.binop_hints), R.simplified.NumberAdd(),
+ R.javascript.Subtract(R.binop_hints), R.simplified.NumberSubtract(),
+ R.javascript.Multiply(R.binop_hints), R.simplified.NumberMultiply(),
+ R.javascript.Divide(R.binop_hints), R.simplified.NumberDivide(),
+ R.javascript.Modulus(R.binop_hints), R.simplified.NumberModulus(),
};
for (size_t i = 0; i < arraysize(kNumberTypes); ++i) {
@@ -301,11 +302,11 @@
public:
JSBitwiseShiftTypedLoweringTester() : JSTypedLoweringTester() {
int i = 0;
- set(i++, javascript.ShiftLeft(hints), true);
+ set(i++, javascript.ShiftLeft(binop_hints), true);
set(i++, simplified.NumberShiftLeft(), false);
- set(i++, javascript.ShiftRight(hints), true);
+ set(i++, javascript.ShiftRight(binop_hints), true);
set(i++, simplified.NumberShiftRight(), false);
- set(i++, javascript.ShiftRightLogical(hints), false);
+ set(i++, javascript.ShiftRightLogical(binop_hints), false);
set(i++, simplified.NumberShiftRightLogical(), false);
}
static const int kNumberOps = 6;
@@ -357,11 +358,11 @@
public:
JSBitwiseTypedLoweringTester() : JSTypedLoweringTester() {
int i = 0;
- set(i++, javascript.BitwiseOr(hints), true);
+ set(i++, javascript.BitwiseOr(binop_hints), true);
set(i++, simplified.NumberBitwiseOr(), true);
- set(i++, javascript.BitwiseXor(hints), true);
+ set(i++, javascript.BitwiseXor(binop_hints), true);
set(i++, simplified.NumberBitwiseXor(), true);
- set(i++, javascript.BitwiseAnd(hints), true);
+ set(i++, javascript.BitwiseAnd(binop_hints), true);
set(i++, simplified.NumberBitwiseAnd(), true);
}
static const int kNumberOps = 6;
@@ -492,7 +493,7 @@
for (size_t i = 0; i < arraysize(others); i++) {
Type* t = Type::Union(Type::Number(), others[i], R.main_zone());
Node* r = R.ReduceUnop(R.javascript.ToNumber(), t);
- CHECK_EQ(IrOpcode::kJSToNumber, r->opcode());
+ CHECK_EQ(IrOpcode::kPlainPrimitiveToNumber, r->opcode());
}
}
@@ -571,10 +572,14 @@
JSTypedLoweringTester R;
const Operator* ops[] = {
- R.javascript.LessThan(), R.simplified.StringLessThan(),
- R.javascript.LessThanOrEqual(), R.simplified.StringLessThanOrEqual(),
- R.javascript.GreaterThan(), R.simplified.StringLessThan(),
- R.javascript.GreaterThanOrEqual(), R.simplified.StringLessThanOrEqual()};
+ R.javascript.LessThan(CompareOperationHints::Any()),
+ R.simplified.StringLessThan(),
+ R.javascript.LessThanOrEqual(CompareOperationHints::Any()),
+ R.simplified.StringLessThanOrEqual(),
+ R.javascript.GreaterThan(CompareOperationHints::Any()),
+ R.simplified.StringLessThan(),
+ R.javascript.GreaterThanOrEqual(CompareOperationHints::Any()),
+ R.simplified.StringLessThanOrEqual()};
for (size_t i = 0; i < arraysize(kStringTypes); i++) {
Node* p0 = R.Parameter(kStringTypes[i], 0);
@@ -618,10 +623,14 @@
JSTypedLoweringTester R;
const Operator* ops[] = {
- R.javascript.LessThan(), R.simplified.NumberLessThan(),
- R.javascript.LessThanOrEqual(), R.simplified.NumberLessThanOrEqual(),
- R.javascript.GreaterThan(), R.simplified.NumberLessThan(),
- R.javascript.GreaterThanOrEqual(), R.simplified.NumberLessThanOrEqual()};
+ R.javascript.LessThan(CompareOperationHints::Any()),
+ R.simplified.NumberLessThan(),
+ R.javascript.LessThanOrEqual(CompareOperationHints::Any()),
+ R.simplified.NumberLessThanOrEqual(),
+ R.javascript.GreaterThan(CompareOperationHints::Any()),
+ R.simplified.NumberLessThan(),
+ R.javascript.GreaterThanOrEqual(CompareOperationHints::Any()),
+ R.simplified.NumberLessThanOrEqual()};
Node* const p0 = R.Parameter(Type::Number(), 0);
Node* const p1 = R.Parameter(Type::Number(), 1);
@@ -655,7 +664,8 @@
for (size_t j = 0; j < arraysize(types); j++) {
Node* p1 = R.Parameter(types[j], 1);
{
- const Operator* less_than = R.javascript.LessThan();
+ const Operator* less_than =
+ R.javascript.LessThan(CompareOperationHints::Any());
Node* cmp = R.Binop(less_than, p0, p1);
Node* r = R.reduce(cmp);
if (types[i]->Is(Type::String()) && types[j]->Is(Type::String())) {
@@ -700,14 +710,14 @@
case 2:
effect_use = R.graph.NewNode(R.common.EffectPhi(1), ton, R.start());
case 3:
- effect_use =
- R.graph.NewNode(R.javascript.Add(R.hints), ton, ton, R.context(),
- frame_state, frame_state, ton, R.start());
+ effect_use = R.graph.NewNode(R.javascript.Add(R.binop_hints), ton, ton,
+ R.context(), frame_state, frame_state, ton,
+ R.start());
break;
case 4:
- effect_use =
- R.graph.NewNode(R.javascript.Add(R.hints), p0, p0, R.context(),
- frame_state, frame_state, ton, R.start());
+ effect_use = R.graph.NewNode(R.javascript.Add(R.binop_hints), p0, p0,
+ R.context(), frame_state, frame_state, ton,
+ R.start());
break;
case 5:
effect_use = R.graph.NewNode(R.common.Return(), p0, ton, R.start());
@@ -801,7 +811,8 @@
{
const Operator* op =
- strict ? R->javascript.StrictEqual() : R->javascript.Equal();
+ strict ? R->javascript.StrictEqual(CompareOperationHints::Any())
+ : R->javascript.Equal(CompareOperationHints::Any());
Node* eq = R->Binop(op, p0, p1);
Node* r = R->reduce(eq);
R->CheckBinop(expected, r);
@@ -809,7 +820,8 @@
{
const Operator* op =
- strict ? R->javascript.StrictNotEqual() : R->javascript.NotEqual();
+ strict ? R->javascript.StrictNotEqual(CompareOperationHints::Any())
+ : R->javascript.NotEqual(CompareOperationHints::Any());
Node* ne = R->Binop(op, p0, p1);
Node* n = R->reduce(ne);
CHECK_EQ(IrOpcode::kBooleanNot, n->opcode());
@@ -876,14 +888,22 @@
JSTypedLoweringTester R;
const Operator* ops[] = {
- R.javascript.Equal(), R.simplified.NumberEqual(),
- R.javascript.Add(R.hints), R.simplified.NumberAdd(),
- R.javascript.Subtract(R.hints), R.simplified.NumberSubtract(),
- R.javascript.Multiply(R.hints), R.simplified.NumberMultiply(),
- R.javascript.Divide(R.hints), R.simplified.NumberDivide(),
- R.javascript.Modulus(R.hints), R.simplified.NumberModulus(),
- R.javascript.LessThan(), R.simplified.NumberLessThan(),
- R.javascript.LessThanOrEqual(), R.simplified.NumberLessThanOrEqual(),
+ R.javascript.Equal(R.compare_hints),
+ R.simplified.NumberEqual(),
+ R.javascript.Add(R.binop_hints),
+ R.simplified.NumberAdd(),
+ R.javascript.Subtract(R.binop_hints),
+ R.simplified.NumberSubtract(),
+ R.javascript.Multiply(R.binop_hints),
+ R.simplified.NumberMultiply(),
+ R.javascript.Divide(R.binop_hints),
+ R.simplified.NumberDivide(),
+ R.javascript.Modulus(R.binop_hints),
+ R.simplified.NumberModulus(),
+ R.javascript.LessThan(R.compare_hints),
+ R.simplified.NumberLessThan(),
+ R.javascript.LessThanOrEqual(R.compare_hints),
+ R.simplified.NumberLessThanOrEqual(),
};
for (size_t j = 0; j < arraysize(ops); j += 2) {
@@ -904,9 +924,9 @@
JSTypedLoweringTester R;
const Operator* ops[] = {
- R.javascript.Subtract(R.hints), R.simplified.NumberSubtract(),
- R.javascript.Multiply(R.hints), R.simplified.NumberMultiply(),
- R.javascript.Divide(R.hints), R.simplified.NumberDivide(),
+ R.javascript.Subtract(R.binop_hints), R.simplified.NumberSubtract(),
+ R.javascript.Multiply(R.binop_hints), R.simplified.NumberMultiply(),
+ R.javascript.Divide(R.binop_hints), R.simplified.NumberDivide(),
};
for (size_t j = 0; j < arraysize(ops); j += 2) {
@@ -929,10 +949,10 @@
JSTypedLoweringTester R;
const Operator* ops[] = {
- R.javascript.Add(R.hints), R.simplified.NumberAdd(),
- R.javascript.Subtract(R.hints), R.simplified.NumberSubtract(),
- R.javascript.Multiply(R.hints), R.simplified.NumberMultiply(),
- R.javascript.Divide(R.hints), R.simplified.NumberDivide(),
+ R.javascript.Add(R.binop_hints), R.simplified.NumberAdd(),
+ R.javascript.Subtract(R.binop_hints), R.simplified.NumberSubtract(),
+ R.javascript.Multiply(R.binop_hints), R.simplified.NumberMultiply(),
+ R.javascript.Divide(R.binop_hints), R.simplified.NumberDivide(),
};
for (size_t j = 0; j < arraysize(ops); j += 2) {
@@ -967,8 +987,9 @@
JSTypedLoweringTester R;
const Operator* ops[] = {
- R.javascript.GreaterThan(), R.simplified.NumberLessThan(),
- R.javascript.GreaterThanOrEqual(), R.simplified.NumberLessThanOrEqual(),
+ R.javascript.GreaterThan(R.compare_hints), R.simplified.NumberLessThan(),
+ R.javascript.GreaterThanOrEqual(R.compare_hints),
+ R.simplified.NumberLessThanOrEqual(),
};
for (size_t j = 0; j < arraysize(ops); j += 2) {
@@ -1178,16 +1199,16 @@
};
Entry ops[] = {
- {R.javascript.LessThan(), R.machine.Uint32LessThan(),
+ {R.javascript.LessThan(R.compare_hints), R.machine.Uint32LessThan(),
R.machine.Int32LessThan(), R.simplified.NumberLessThan(), false},
- {R.javascript.LessThanOrEqual(), R.machine.Uint32LessThanOrEqual(),
- R.machine.Int32LessThanOrEqual(), R.simplified.NumberLessThanOrEqual(),
- false},
- {R.javascript.GreaterThan(), R.machine.Uint32LessThan(),
+ {R.javascript.LessThanOrEqual(R.compare_hints),
+ R.machine.Uint32LessThanOrEqual(), R.machine.Int32LessThanOrEqual(),
+ R.simplified.NumberLessThanOrEqual(), false},
+ {R.javascript.GreaterThan(R.compare_hints), R.machine.Uint32LessThan(),
R.machine.Int32LessThan(), R.simplified.NumberLessThan(), true},
- {R.javascript.GreaterThanOrEqual(), R.machine.Uint32LessThanOrEqual(),
- R.machine.Int32LessThanOrEqual(), R.simplified.NumberLessThanOrEqual(),
- true}};
+ {R.javascript.GreaterThanOrEqual(R.compare_hints),
+ R.machine.Uint32LessThanOrEqual(), R.machine.Int32LessThanOrEqual(),
+ R.simplified.NumberLessThanOrEqual(), true}};
for (size_t o = 0; o < arraysize(ops); o++) {
for (size_t i = 0; i < arraysize(kNumberTypes); i++) {