Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 045ed82650a25acfb669e3225c9aaedfea92b991..83b753b591ad07cdb311b13b0c3df369f33b9c69 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -5077,8 +5077,6 @@ void CEntryStub::Generate(MacroAssembler* masm) { |
// esi: current context (C callee-saved) |
// edi: JS function of the caller (C callee-saved) |
- ProfileEntryHookStub::MaybeCallEntryHook(masm); |
- |
// NOTE: Invocations of builtins may return failure objects instead |
// of a proper result. The builtin entry handles this by performing |
// a garbage collection and retrying the builtin (twice). |
@@ -5152,8 +5150,6 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
Label invoke, handler_entry, exit; |
Label not_outermost_js, not_outermost_js_2; |
- ProfileEntryHookStub::MaybeCallEntryHook(masm); |
- |
// Set up frame. |
__ push(ebp); |
__ mov(ebp, esp); |
@@ -7695,11 +7691,7 @@ void StubFailureTrampolineStub::Generate(MacroAssembler* masm) { |
void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |
- if (masm->isolate()->function_entry_hook() != NULL) { |
- // It's always safe to call the entry hook stub, as the hook itself |
- // is not allowed to call back to V8. |
- AllowStubCallsScope allow_stub_calls(masm, true); |
- |
+ if (entry_hook_ != NULL) { |
ProfileEntryHookStub stub; |
masm->CallStub(&stub); |
} |
@@ -7707,11 +7699,9 @@ void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |
void ProfileEntryHookStub::Generate(MacroAssembler* masm) { |
- // Save volatile registers. |
- const int kNumSavedRegisters = 3; |
- __ push(eax); |
+ // Ecx is the only volatile register we must save. |
+ const int kNumSavedRegisters = 1; |
__ push(ecx); |
- __ push(edx); |
// Calculate and push the original stack pointer. |
__ lea(eax, Operand(esp, (kNumSavedRegisters + 1) * kPointerSize)); |
@@ -7724,16 +7714,12 @@ void ProfileEntryHookStub::Generate(MacroAssembler* masm) { |
__ push(eax); |
// Call the entry hook. |
- ASSERT(masm->isolate()->function_entry_hook() != NULL); |
- __ call(FUNCTION_ADDR(masm->isolate()->function_entry_hook()), |
- RelocInfo::RUNTIME_ENTRY); |
+ int32_t hook_location = reinterpret_cast<int32_t>(&entry_hook_); |
+ __ call(Operand(hook_location, RelocInfo::NONE32)); |
__ add(esp, Immediate(2 * kPointerSize)); |
// Restore ecx. |
- __ pop(edx); |
__ pop(ecx); |
- __ pop(eax); |
- |
__ ret(0); |
} |