diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h
index 6c78f10..0310877 100644
--- a/compiler/optimizing/code_generator.h
+++ b/compiler/optimizing/code_generator.h
@@ -238,6 +238,13 @@
 
   void AllocateLocations(HInstruction* instruction);
 
+  // Tells whether the stack frame of the compiled method is
+  // considered "empty", that is either actually having a size of zero,
+  // or just containing the saved return address register.
+  bool HasEmptyFrame() const {
+    return GetFrameSize() == (CallPushesPC() ? GetWordSize() : 0);
+  }
+
  protected:
   CodeGenerator(HGraph* graph,
                 size_t number_of_core_registers,
@@ -312,10 +319,6 @@
     return instruction_set == kX86 || instruction_set == kX86_64;
   }
 
-  bool HasEmptyFrame() const {
-    return GetFrameSize() == (CallPushesPC() ? GetWordSize() : 0);
-  }
-
   // Arm64 has its own type for a label, so we need to templatize this method
   // to share the logic.
   template <typename T>
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index c518f33..0ece77d 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -376,7 +376,10 @@
       compiler_driver,
       codegen->GetInstructionSet(),
       ArrayRef<const uint8_t>(allocator.GetMemory()),
-      codegen->GetFrameSize(),
+      // Follow Quick's behavior and set the frame size to zero if it is
+      // considered "empty" (see the definition of
+      // art::CodeGenerator::HasEmptyFrame).
+      codegen->HasEmptyFrame() ? 0 : codegen->GetFrameSize(),
       codegen->GetCoreSpillMask(),
       codegen->GetFpuSpillMask(),
       ArrayRef<const uint8_t>(stack_map));
@@ -400,17 +403,21 @@
   codegen->BuildNativeGCMap(&gc_map, dex_compilation_unit);
 
   compilation_stats_.RecordStat(MethodCompilationStat::kCompiledBaseline);
-  return CompiledMethod::SwapAllocCompiledMethod(compiler_driver,
-                                                 codegen->GetInstructionSet(),
-                                                 ArrayRef<const uint8_t>(allocator.GetMemory()),
-                                                 codegen->GetFrameSize(),
-                                                 codegen->GetCoreSpillMask(),
-                                                 codegen->GetFpuSpillMask(),
-                                                 &src_mapping_table,
-                                                 AlignVectorSize(mapping_table),
-                                                 AlignVectorSize(vmap_table),
-                                                 AlignVectorSize(gc_map),
-                                                 ArrayRef<const uint8_t>());
+  return CompiledMethod::SwapAllocCompiledMethod(
+      compiler_driver,
+      codegen->GetInstructionSet(),
+      ArrayRef<const uint8_t>(allocator.GetMemory()),
+      // Follow Quick's behavior and set the frame size to zero if it is
+      // considered "empty" (see the definition of
+      // art::CodeGenerator::HasEmptyFrame).
+      codegen->HasEmptyFrame() ? 0 : codegen->GetFrameSize(),
+      codegen->GetCoreSpillMask(),
+      codegen->GetFpuSpillMask(),
+      &src_mapping_table,
+      AlignVectorSize(mapping_table),
+      AlignVectorSize(vmap_table),
+      AlignVectorSize(gc_map),
+      ArrayRef<const uint8_t>());
 }
 
 CompiledMethod* OptimizingCompiler::Compile(const DexFile::CodeItem* code_item,
