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:
parent
c26f2c32f9
commit
8b866d9c87
@ -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)();
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user