To be reverted.

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
This commit is contained in:
lrn@chromium.org 2010-05-27 12:22:23 +00:00
parent 0dd031aa01
commit 72f192296d

View File

@ -1245,17 +1245,38 @@ void RegExpMacroAssemblerX64::BranchOrBacktrack(Condition condition,
void RegExpMacroAssemblerX64::SafeCall(Label* to) { void RegExpMacroAssemblerX64::SafeCall(Label* to) {
__ call(to); __ call(to);
//// TESTING CODE - REVERT WHEN TEST IS DONE.
__ nop();
//// END TESTING CODE
} }
void RegExpMacroAssemblerX64::SafeCallTarget(Label* label) { void RegExpMacroAssemblerX64::SafeCallTarget(Label* label) {
__ bind(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()); __ subq(Operand(rsp, 0), code_object_pointer());
} }
void RegExpMacroAssemblerX64::SafeReturn() { void RegExpMacroAssemblerX64::SafeReturn() {
__ addq(Operand(rsp, 0), code_object_pointer()); __ 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); __ ret(0);
} }