Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 5324ef39cb320f0662ffbefec360cf87a4bf93f8..25fc74973a8a721c0c3afdffbd76722d6026c5bc 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -10509,6 +10509,35 @@ void HOptimizedGraphBuilder::GenerateRegExpExec(CallRuntime* call) { |
} |
+void HOptimizedGraphBuilder::GenerateDoubleLo(CallRuntime* call) { |
+ ASSERT_EQ(1, call->arguments()->length()); |
+ CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); |
+ HValue* value = Pop(); |
+ HInstruction* result = NewUncasted<HDoubleBits>(value, HDoubleBits::LOW); |
+ return ast_context()->ReturnInstruction(result, call->id()); |
+} |
+ |
+ |
+void HOptimizedGraphBuilder::GenerateDoubleHi(CallRuntime* call) { |
+ ASSERT_EQ(1, call->arguments()->length()); |
+ CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); |
+ HValue* value = Pop(); |
+ HInstruction* result = NewUncasted<HDoubleBits>(value, HDoubleBits::HIGH); |
+ return ast_context()->ReturnInstruction(result, call->id()); |
+} |
+ |
+ |
+void HOptimizedGraphBuilder::GenerateConstructDouble(CallRuntime* call) { |
+ ASSERT_EQ(2, call->arguments()->length()); |
+ CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); |
+ CHECK_ALIVE(VisitForValue(call->arguments()->at(1))); |
+ HValue* lo = Pop(); |
+ HValue* hi = Pop(); |
+ HInstruction* result = NewUncasted<HConstructDouble>(hi, lo); |
+ return ast_context()->ReturnInstruction(result, call->id()); |
+} |
+ |
+ |
// Construct a RegExp exec result with two in-object properties. |
void HOptimizedGraphBuilder::GenerateRegExpConstructResult(CallRuntime* call) { |
ASSERT_EQ(3, call->arguments()->length()); |