To be reverted.
authorlrn@chromium.org <lrn@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 27 May 2010 12:22:23 +0000 (12:22 +0000)
committerlrn@chromium.org <lrn@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 27 May 2010 12:22:23 +0000 (12:22 +0000)
Add extra checks for bad stack content in X64 RE-macro-assembler,
to check for crash that is only reproducible with the buildbot and
only in release mode.

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

src/x64/regexp-macro-assembler-x64.cc

index 383399e..fcb5aa5 100644 (file)
@@ -1245,17 +1245,38 @@ void RegExpMacroAssemblerX64::BranchOrBacktrack(Condition condition,
 
 void RegExpMacroAssemblerX64::SafeCall(Label* to) {
   __ call(to);
+//// TESTING CODE - REVERT WHEN TEST IS DONE.
+  __ nop();
+//// END TESTING CODE
 }
 
 
 void RegExpMacroAssemblerX64::SafeCallTarget(Label* label) {
   __ bind(label);
+  //// TESTING CODE - REVERT WHEN TEST IS DONE.
+    __ movq(rax, Operand(rsp, 0));
+    __ movb(rax, Operand(rax, 0));
+    __ cmpb(rax, Immediate(0x90));  // Points to nop.
+    Label ok;
+    __ j(equal, &ok);
+    __ int3();
+    __ bind(&ok);
+  //// END TESTING CODE
   __ subq(Operand(rsp, 0), code_object_pointer());
 }
 
 
 void RegExpMacroAssemblerX64::SafeReturn() {
   __ addq(Operand(rsp, 0), code_object_pointer());
+//// TESTING CODE - REVERT WHEN TEST IS DONE.
+  __ movq(rax, Operand(rsp, 0));
+  __ movb(rax, Operand(rax, 0));
+  __ cmpb(rax, Immediate(0x90));  // Points to nop.
+  Label ok;
+  __ j(equal, &ok);
+  __ int3();
+  __ bind(&ok);
+//// END TESTING CODE
   __ ret(0);
 }