Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 7329660e5898291c4456018ba6523ac121074615..671fafd80cb7605f2af063e4506ad56a07b172cd 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -239,6 +239,13 @@ void LIsSmiAndBranch::PrintDataTo(StringStream* stream) { |
} |
+void LIsUndetectableAndBranch::PrintDataTo(StringStream* stream) { |
+ stream->Add("if is_undetectable("); |
+ InputAt(0)->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); |
@@ -1078,6 +1085,12 @@ LInstruction* LChunkBuilder::DoTest(HTest* instr) { |
ASSERT(compare->value()->representation().IsTagged()); |
return new LIsSmiAndBranch(Use(compare->value())); |
+ } else if (v->IsIsUndetectable()) { |
+ HIsUndetectable* compare = HIsUndetectable::cast(v); |
+ ASSERT(compare->value()->representation().IsTagged()); |
+ |
+ return new LIsUndetectableAndBranch(UseRegisterAtStart(compare->value()), |
+ TempRegister()); |
} else if (v->IsHasInstanceType()) { |
HHasInstanceType* compare = HHasInstanceType::cast(v); |
ASSERT(compare->value()->representation().IsTagged()); |
@@ -1562,6 +1575,14 @@ LInstruction* LChunkBuilder::DoIsSmi(HIsSmi* instr) { |
} |
+LInstruction* LChunkBuilder::DoIsUndetectable(HIsUndetectable* instr) { |
+ ASSERT(instr->value()->representation().IsTagged()); |
+ LOperand* value = UseRegisterAtStart(instr->value()); |
+ |
+ return DefineAsRegister(new LIsUndetectable(value)); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoHasInstanceType(HHasInstanceType* instr) { |
ASSERT(instr->value()->representation().IsTagged()); |
LOperand* value = UseRegisterAtStart(instr->value()); |