Commit 8b866d9c authored by lrn@chromium.org's avatar lrn@chromium.org

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
parent c26f2c32
...@@ -45,11 +45,11 @@ MacroAssembler::MacroAssembler(void* buffer, int size) ...@@ -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;
......
...@@ -95,6 +95,7 @@ typedef int (*F0)(); ...@@ -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) { ...@@ -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);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment