| Index: src/ia32/lithium-ia32.cc
|
| ===================================================================
|
| --- src/ia32/lithium-ia32.cc (revision 10006)
|
| +++ src/ia32/lithium-ia32.cc (working copy)
|
| @@ -225,6 +225,13 @@
|
| }
|
|
|
|
|
| +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);
|
| @@ -239,6 +246,14 @@
|
| }
|
|
|
|
|
| +void LStringCompareAndBranch::PrintDataTo(StringStream* stream) {
|
| + stream->Add("if compare_generic(");
|
| + InputAt(1)->PrintTo(stream);
|
| + InputAt(2)->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);
|
| @@ -1499,6 +1514,13 @@
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoIsStringAndBranch(HIsStringAndBranch* instr) {
|
| + ASSERT(instr->value()->representation().IsTagged());
|
| + LOperand* temp = TempRegister();
|
| + return new LIsStringAndBranch(UseRegister(instr->value()), temp);
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoIsSmiAndBranch(HIsSmiAndBranch* instr) {
|
| ASSERT(instr->value()->representation().IsTagged());
|
| return new(zone()) LIsSmiAndBranch(Use(instr->value()));
|
| @@ -1513,6 +1535,21 @@
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoStringCompareAndBranch(
|
| + HStringCompareAndBranch* instr) {
|
| + ASSERT(instr->left()->representation().IsTagged());
|
| + ASSERT(instr->right()->representation().IsTagged());
|
| + LOperand* context = UseFixed(instr->context(), esi);
|
| + LOperand* left = UseFixed(instr->left(), edx);
|
| + LOperand* right = UseFixed(instr->right(), eax);
|
| +
|
| + LStringCompareAndBranch* result = new
|
| + LStringCompareAndBranch(context, left, right);
|
| +
|
| + return MarkAsCall(result, instr);
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoHasInstanceTypeAndBranch(
|
| HHasInstanceTypeAndBranch* instr) {
|
| ASSERT(instr->value()->representation().IsTagged());
|
|
|