Index: src/x64/codegen-x64.cc |
=================================================================== |
--- src/x64/codegen-x64.cc (revision 2275) |
+++ src/x64/codegen-x64.cc (working copy) |
@@ -1486,7 +1486,8 @@ |
// The receiver is the argument to the runtime call. It is the |
// first value pushed when the reference was loaded to the |
// frame. |
- frame_->PushElementAt(target.size() - 1); |
+ // TODO(X64): Enable this and the switch back to fast, once they work. |
+ // frame_->PushElementAt(target.size() - 1); |
// Result ignored = frame_->CallRuntime(Runtime::kToSlowProperties, 1); |
} |
if (node->op() == Token::ASSIGN || |
@@ -1538,7 +1539,8 @@ |
// argument to the runtime call is the receiver, which is the |
// first value pushed as part of the reference, which is below |
// the lhs value. |
- frame_->PushElementAt(target.size()); |
+ // TODO(X64): Enable this once ToFastProperties works. |
+ // frame_->PushElementAt(target.size()); |
// Result ignored = frame_->CallRuntime(Runtime::kToFastProperties, 1); |
} |
} |
@@ -2305,7 +2307,7 @@ |
(operation != NULL && operation->op() == Token::TYPEOF) && |
(right->AsLiteral() != NULL && |
right->AsLiteral()->handle()->IsString())) { |
- Handle<String> check(String::cast(*right->AsLiteral()->handle())); |
+ Handle<String> check(Handle<String>::cast(right->AsLiteral()->handle())); |
// Load the operand and move it to a register. |
LoadTypeofExpression(operation->expression()); |
@@ -3257,7 +3259,7 @@ |
CompareStub stub(cc, strict); |
Result result = frame_->CallStub(&stub, &left_side, &right_side); |
result.ToRegister(); |
- __ cmpq(result.reg(), Immediate(0)); |
+ __ testq(result.reg(), result.reg()); |
result.Unuse(); |
dest->true_target()->Branch(cc); |
dest->false_target()->Jump(); |
@@ -3323,11 +3325,7 @@ |
// When non-smi, call out to the compare stub. |
CompareStub stub(cc, strict); |
Result answer = frame_->CallStub(&stub, &left_side, &right_side); |
- if (cc == equal) { |
- __ testq(answer.reg(), answer.reg()); |
- } else { |
- __ cmpq(answer.reg(), Immediate(0)); |
- } |
+ __ testq(answer.reg(), answer.reg()); // Both zero and sign flag right. |
answer.Unuse(); |
dest->Split(cc); |
} else { |