Commit 4b580cad authored by yangguo's avatar yangguo Committed by Commit bot

[debugger,interpreter] fix source position of compare operation.

R=mstarzinger@chromium.org
BUG=v8:4690
LOG=N

Review URL: https://codereview.chromium.org/1903223003

Cr-Commit-Position: refs/heads/master@{#35729}
parent fcbe95c8
......@@ -3685,7 +3685,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3705,6 +3704,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ CompareRoot(r0, Heap::kTrueValueRootIndex);
......@@ -3713,6 +3713,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
PopOperand(r1);
InstanceOfStub stub(isolate());
__ CallStub(&stub);
......@@ -3724,6 +3725,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cond = CompareIC::ComputeCondition(op);
PopOperand(r1);
......
......@@ -3605,7 +3605,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// Try to generate an optimized comparison with a literal value.
// TODO(jbramley): This only checks common values like NaN or undefined.
......@@ -3628,6 +3627,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ CompareRoot(x0, Heap::kTrueValueRootIndex);
......@@ -3636,6 +3636,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
PopOperand(x1);
InstanceOfStub stub(isolate());
__ CallStub(&stub);
......@@ -3647,6 +3648,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cond = CompareIC::ComputeCondition(op);
// Pop the stack value.
......
......@@ -1746,16 +1746,19 @@ bool FullCodeGenerator::TryLiteralCompare(CompareOperation* expr) {
Expression* sub_expr;
Handle<String> check;
if (expr->IsLiteralCompareTypeof(&sub_expr, &check)) {
SetExpressionPosition(expr);
EmitLiteralCompareTypeof(expr, sub_expr, check);
return true;
}
if (expr->IsLiteralCompareUndefined(&sub_expr)) {
SetExpressionPosition(expr);
EmitLiteralCompareNil(expr, sub_expr, kUndefinedValue);
return true;
}
if (expr->IsLiteralCompareNull(&sub_expr)) {
SetExpressionPosition(expr);
EmitLiteralCompareNil(expr, sub_expr, kNullValue);
return true;
}
......
......@@ -3593,7 +3593,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3613,6 +3612,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ cmp(eax, isolate()->factory()->true_value());
......@@ -3621,6 +3621,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
PopOperand(edx);
InstanceOfStub stub(isolate());
__ CallStub(&stub);
......@@ -3632,6 +3633,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cc = CompareIC::ComputeCondition(op);
PopOperand(edx);
......
......@@ -3705,7 +3705,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3725,6 +3724,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ LoadRoot(t0, Heap::kTrueValueRootIndex);
......@@ -3733,6 +3733,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
__ mov(a0, result_register());
PopOperand(a1);
InstanceOfStub stub(isolate());
......@@ -3745,6 +3746,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cc = CompareIC::ComputeCondition(op);
__ mov(a0, result_register());
PopOperand(a1);
......
......@@ -3706,7 +3706,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3726,6 +3725,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ LoadRoot(a4, Heap::kTrueValueRootIndex);
......@@ -3734,6 +3734,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
__ mov(a0, result_register());
PopOperand(a1);
InstanceOfStub stub(isolate());
......@@ -3746,6 +3747,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cc = CompareIC::ComputeCondition(op);
__ mov(a0, result_register());
PopOperand(a1);
......
......@@ -3670,7 +3670,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3690,6 +3689,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ CompareRoot(r3, Heap::kTrueValueRootIndex);
......@@ -3698,6 +3698,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
PopOperand(r4);
InstanceOfStub stub(isolate());
__ CallStub(&stub);
......@@ -3709,6 +3710,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cond = CompareIC::ComputeCondition(op);
PopOperand(r4);
......
......@@ -3578,7 +3578,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3598,6 +3597,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ CompareRoot(r2, Heap::kTrueValueRootIndex);
......@@ -3606,6 +3606,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
PopOperand(r3);
InstanceOfStub stub(isolate());
__ CallStub(&stub);
......@@ -3617,6 +3618,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cond = CompareIC::ComputeCondition(op);
PopOperand(r3);
......
......@@ -3578,7 +3578,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3598,6 +3597,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ CompareRoot(rax, Heap::kTrueValueRootIndex);
......@@ -3606,6 +3606,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
PopOperand(rdx);
InstanceOfStub stub(isolate());
__ CallStub(&stub);
......@@ -3617,6 +3618,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cc = CompareIC::ComputeCondition(op);
PopOperand(rdx);
......
......@@ -3585,7 +3585,6 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
Comment cmnt(masm_, "[ CompareOperation");
SetExpressionPosition(expr);
// First we try a fast inlined version of the compare when one of
// the operands is a literal.
......@@ -3605,6 +3604,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
switch (op) {
case Token::IN:
VisitForStackValue(expr->right());
SetExpressionPosition(expr);
CallRuntimeWithOperands(Runtime::kHasProperty);
PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
__ cmp(eax, isolate()->factory()->true_value());
......@@ -3613,6 +3613,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
case Token::INSTANCEOF: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
PopOperand(edx);
InstanceOfStub stub(isolate());
__ CallStub(&stub);
......@@ -3624,6 +3625,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
default: {
VisitForAccumulatorValue(expr->right());
SetExpressionPosition(expr);
Condition cc = CompareIC::ComputeCondition(op);
PopOperand(edx);
......
......@@ -54,7 +54,7 @@ assertEquals(42, get);
assertEquals([
"a0",
"b17", "h4b20", "i2b20", // [[Has]]
"b17", "h4b17", "i2b17", // [[Has]]
"c15", "j4c15", "k2c15", // [[Get]]
"d0", "l4d11", "m2d11", // [[Set]]
"g0"
......
......@@ -754,7 +754,6 @@
['ignition == True', {
# TODO(yangguo,4690): assertion failures in debugger tests.
'es6/debug-stepnext-for': [FAIL],
'es6/debug-stepin-proxies': [FAIL],
'regress/regress-crbug-119800': [FAIL],
# TODO(yangguo,4690): flaky failures on the bots.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment