Index: src/arm/lithium-arm.cc |
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc |
index 417927f51ec127ab36bc33e3175fde79f94b9c6b..4f089f86f7a50ad0ee56b53ea52152542a15b85d 100644 |
--- a/src/arm/lithium-arm.cc |
+++ b/src/arm/lithium-arm.cc |
@@ -237,6 +237,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); |
@@ -1079,6 +1086,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()); |
@@ -1529,6 +1542,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()); |