Index: src/x64/lithium-x64.cc |
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc |
index 7ca7c05c4c1d92ac391843c0a4875087dd0b2645..a24f7a8060690557cc06d61da98645abd35c6d8c 100644 |
--- a/src/x64/lithium-x64.cc |
+++ b/src/x64/lithium-x64.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); |
@@ -1077,6 +1084,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()); |
@@ -1536,6 +1549,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()); |