Fix bug in test-macro-assembler-x64 which is the probable cause for hanging on Win64.

Review URL: http://codereview.chromium.org/6733024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
lrn@chromium.org 2011-03-24 13:01:16 +00:00
parent c26f2c32f9
commit 8b866d9c87
2 changed files with 4 additions and 2 deletions

View File

@ -45,11 +45,11 @@ MacroAssembler::MacroAssembler(void* buffer, int size)
generating_stub_(false), generating_stub_(false),
allow_stub_calls_(true), allow_stub_calls_(true),
root_array_available_(true), root_array_available_(true),
code_object_(HEAP->undefined_value()) { code_object_(isolate()->heap()->undefined_value()) {
} }
static intptr_t RootRegisterDelta(ExternalReference other, Isolate* isolate) { static intptr_t RootRegisterDelta(ExternalReference other, Isolate* isolate) {
Address roots_register_value = kRootRegisterBias + Address roots_register_value = kRootRegisterBias +
reinterpret_cast<Address>(isolate->heap()->roots_address()); reinterpret_cast<Address>(isolate->heap()->roots_address());
intptr_t delta = other.address() - roots_register_value; intptr_t delta = other.address() - roots_register_value;

View File

@ -95,6 +95,7 @@ typedef int (*F0)();
static void EntryCode(MacroAssembler* masm) { static void EntryCode(MacroAssembler* masm) {
// Smi constant register is callee save. // Smi constant register is callee save.
__ push(v8::internal::kSmiConstantRegister); __ push(v8::internal::kSmiConstantRegister);
__ push(v8::internal::kRootRegister);
__ InitializeSmiConstantRegister(); __ InitializeSmiConstantRegister();
__ InitializeRootRegister(); __ InitializeRootRegister();
} }
@ -106,6 +107,7 @@ static void ExitCode(MacroAssembler* masm) {
__ cmpq(rdx, v8::internal::kSmiConstantRegister); __ cmpq(rdx, v8::internal::kSmiConstantRegister);
__ movq(rdx, Immediate(-1)); __ movq(rdx, Immediate(-1));
__ cmovq(not_equal, rax, rdx); __ cmovq(not_equal, rax, rdx);
__ pop(v8::internal::kRootRegister);
__ pop(v8::internal::kSmiConstantRegister); __ pop(v8::internal::kSmiConstantRegister);
} }