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