| Index: src/x64/lithium-x64.cc
|
| diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
|
| index 0af2ce4fc46fb7e71c36b81eec8dbc26fc96eac2..fc5591dc185d11e512d7a7a45284c06240583bfc 100644
|
| --- a/src/x64/lithium-x64.cc
|
| +++ b/src/x64/lithium-x64.cc
|
| @@ -230,6 +230,13 @@ void LIsObjectAndBranch::PrintDataTo(StringStream* stream) {
|
| }
|
|
|
|
|
| +void LIsStringAndBranch::PrintDataTo(StringStream* stream) {
|
| + stream->Add("if is_string(");
|
| + InputAt(0)->PrintTo(stream);
|
| + stream->Add(") then B%d else B%d", true_block_id(), false_block_id());
|
| +}
|
| +
|
| +
|
| void LIsSmiAndBranch::PrintDataTo(StringStream* stream) {
|
| stream->Add("if is_smi(");
|
| InputAt(0)->PrintTo(stream);
|
| @@ -244,6 +251,14 @@ void LIsUndetectableAndBranch::PrintDataTo(StringStream* stream) {
|
| }
|
|
|
|
|
| +void LCompareGenericAndBranch::PrintDataTo(StringStream* stream) {
|
| + stream->Add("if compare_generic(");
|
| + InputAt(0)->PrintTo(stream);
|
| + InputAt(1)->PrintTo(stream);
|
| + stream->Add(") then B%d else B%d", true_block_id(), false_block_id());
|
| +}
|
| +
|
| +
|
| void LHasInstanceTypeAndBranch::PrintDataTo(StringStream* stream) {
|
| stream->Add("if has_instance_type(");
|
| InputAt(0)->PrintTo(stream);
|
| @@ -1407,7 +1422,7 @@ LInstruction* LChunkBuilder::DoCompareGeneric(HCompareGeneric* instr) {
|
| LOperand* left = UseFixed(instr->left(), rdx);
|
| LOperand* right = UseFixed(instr->right(), rax);
|
| LCmpT* result = new LCmpT(left, right);
|
| - return MarkAsCall(DefineFixed(result, rax), instr);
|
| + return AssignEnvironment(MarkAsCall(DefineFixed(result, rax), instr));
|
| }
|
|
|
|
|
| @@ -1465,6 +1480,12 @@ LInstruction* LChunkBuilder::DoIsObjectAndBranch(HIsObjectAndBranch* instr) {
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoIsStringAndBranch(HIsStringAndBranch* instr) {
|
| + ASSERT(instr->value()->representation().IsTagged());
|
| + return new LIsStringAndBranch(UseRegisterAtStart(instr->value()));
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoIsSmiAndBranch(HIsSmiAndBranch* instr) {
|
| ASSERT(instr->value()->representation().IsTagged());
|
| return new LIsSmiAndBranch(Use(instr->value()));
|
| @@ -1479,6 +1500,19 @@ LInstruction* LChunkBuilder::DoIsUndetectableAndBranch(
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoCompareGenericAndBranch(
|
| + HCompareGenericAndBranch* instr) {
|
| +
|
| + ASSERT(instr->left()->representation().IsTagged());
|
| + ASSERT(instr->right()->representation().IsTagged());
|
| + LOperand* left = UseFixed(instr->left(), rdx);
|
| + LOperand* right = UseFixed(instr->right(), rax);
|
| + LCompareGenericAndBranch* result = new LCompareGenericAndBranch(left, right);
|
| +
|
| + return AssignEnvironment(MarkAsCall(result, instr));
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoHasInstanceTypeAndBranch(
|
| HHasInstanceTypeAndBranch* instr) {
|
| ASSERT(instr->value()->representation().IsTagged());
|
|
|