A64: In the Simulator, corrupt caller-saved registers after runtime printf call.
authoralexandre.rames@arm.com <alexandre.rames@arm.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 20 Mar 2014 10:03:17 +0000 (10:03 +0000)
committeralexandre.rames@arm.com <alexandre.rames@arm.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 20 Mar 2014 10:03:17 +0000 (10:03 +0000)
R=ulan@chromium.org

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

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

src/a64/simulator-a64.cc

index 343ddc4..d414bf5 100644 (file)
@@ -3623,9 +3623,12 @@ void Simulator::VisitException(Instruction* instr) {
           result = fprintf(stream_, "%s", format);
         }
         fputs(clr_normal, stream_);
-        set_xreg(0, result);
 
-        // TODO(jbramley): Consider clobbering all caller-saved registers here.
+#ifdef DEBUG
+        CorruptAllCallerSavedCPURegisters();
+#endif
+
+        set_xreg(0, result);
 
         // The printf parameters are inlined in the code, so skip them.
         set_pc(pc_->InstructionAtOffset(kPrintfLength));