| Index: src/ia32/lithium-ia32.cc
|
| ===================================================================
|
| --- src/ia32/lithium-ia32.cc (revision 5982)
|
| +++ src/ia32/lithium-ia32.cc (working copy)
|
| @@ -206,6 +206,13 @@
|
| }
|
|
|
|
|
| +void LIsObjectAndBranch::PrintDataTo(StringStream* stream) const {
|
| + stream->Add("if is_object(");
|
| + input()->PrintTo(stream);
|
| + stream->Add(") then B%d else B%d", true_block_id(), false_block_id());
|
| +}
|
| +
|
| +
|
| void LIsSmiAndBranch::PrintDataTo(StringStream* stream) const {
|
| stream->Add("if is_smi(");
|
| input()->PrintTo(stream);
|
| @@ -1251,6 +1258,15 @@
|
| temp,
|
| first_id,
|
| second_id);
|
| + } else if (v->IsIsObject()) {
|
| + HIsObject* compare = HIsObject::cast(v);
|
| + ASSERT(compare->value()->representation().IsTagged());
|
| +
|
| + return new LIsObjectAndBranch(UseRegisterAtStart(compare->value()),
|
| + TempRegister(),
|
| + TempRegister(),
|
| + first_id,
|
| + second_id);
|
| } else if (v->IsCompareJSObjectEq()) {
|
| HCompareJSObjectEq* compare = HCompareJSObjectEq::cast(v);
|
| return new LCmpJSObjectEqAndBranch(UseRegisterAtStart(compare->left()),
|
| @@ -1624,6 +1640,14 @@
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoIsObject(HIsObject* instr) {
|
| + ASSERT(instr->value()->representation().IsTagged());
|
| + LOperand* value = UseRegisterAtStart(instr->value());
|
| +
|
| + return DefineAsRegister(new LIsObject(value, TempRegister()));
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoIsSmi(HIsSmi* instr) {
|
| ASSERT(instr->value()->representation().IsTagged());
|
| LOperand* value = UseAtStart(instr->value());
|
|
|