[turbofan] Save OOL constant pool pointer in CodeGenerator::AssemblePrologue.
authorulan@chromium.org <ulan@chromium.org>
Wed, 10 Sep 2014 14:40:59 +0000 (14:40 +0000)
committerulan@chromium.org <ulan@chromium.org>
Wed, 10 Sep 2014 14:40:59 +0000 (14:40 +0000)
BUG=
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/541733002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/compiler/arm/code-generator-arm.cc

index a0279c6..d663590 100644 (file)
@@ -619,8 +619,14 @@ void CodeGenerator::AssembleDeoptimizerCall(int deoptimization_id) {
 void CodeGenerator::AssemblePrologue() {
   CallDescriptor* descriptor = linkage()->GetIncomingDescriptor();
   if (descriptor->kind() == CallDescriptor::kCallAddress) {
-    __ Push(lr, fp);
-    __ mov(fp, sp);
+    if (FLAG_enable_ool_constant_pool) {
+      __ Push(lr, fp, pp);
+      // Adjust FP to point to saved FP.
+      __ sub(fp, sp, Operand(StandardFrameConstants::kConstantPoolOffset));
+    } else {
+      __ Push(lr, fp);
+      __ mov(fp, sp);
+    }
     const RegList saves = descriptor->CalleeSavedRegisters();
     if (saves != 0) {  // Save callee-saved registers.
       int register_save_area_size = 0;