Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 926b3bfbb4e690b8b43905ee72b8c94173581ec0..07551a76ca088c0595d857266d3664592f2af86c 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -3951,6 +3951,14 @@ void MacroAssembler::CallApiFunctionAndReturn(ExternalReference function, |
Addu(s2, s2, Operand(1)); |
sw(s2, MemOperand(s3, kLevelOffset)); |
+ if (FLAG_log_timer_events) { |
+ FrameScope frame(this, StackFrame::MANUAL); |
+ PushSafepointRegisters(); |
+ PrepareCallCFunction(0, a0); |
+ CallCFunction(ExternalReference::log_enter_external_function(isolate()), 0); |
+ PopSafepointRegisters(); |
+ } |
+ |
// The O32 ABI requires us to pass a pointer in a0 where the returned struct |
// (4 bytes) will be placed. This is also built into the Simulator. |
// Set up the pointer to the returned value (a0). It was allocated in |
@@ -3963,6 +3971,14 @@ void MacroAssembler::CallApiFunctionAndReturn(ExternalReference function, |
DirectCEntryStub stub; |
stub.GenerateCall(this, function); |
+ if (FLAG_log_timer_events) { |
+ FrameScope frame(this, StackFrame::MANUAL); |
+ PushSafepointRegisters(); |
+ PrepareCallCFunction(0, a0); |
+ CallCFunction(ExternalReference::log_leave_external_function(isolate()), 0); |
+ PopSafepointRegisters(); |
+ } |
+ |
// As mentioned above, on MIPS a pointer is returned - we need to dereference |
// it to get the actual return value (which is also a pointer). |
lw(v0, MemOperand(v0)); |