static NEVER_INLINE JSValue* callEval(ExecState* exec, JSObject* thisObj, ScopeChainNode* scopeChain, RegisterFile* registerFile, Register* r, int argv, int argc, JSValue*& exceptionValue)
{
-#if JAVASCRIPT_PROFILING
Profiler** profiler = Profiler::enabledProfilerReference();
JSObject* evalFunction = scopeChain->globalObject()->evalFunction();
if (*profiler)
(*profiler)->willExecute(exec, evalFunction);
-#endif
JSValue* x = argc >= 2 ? r[argv + 1].u.jsValue : jsUndefined();
return 0;
}
-#if JAVASCRIPT_PROFILING
JSValue* result = machine().execute(evalNode.get(), exec, thisObj, registerFile, r - (*registerFile->basePointer()) + argv + argc, scopeChain, &exceptionValue);
if ((*profiler))
(*profiler)->didExecute(exec, evalFunction);
return result;
-#else
- return machine().execute(evalNode.get(), exec, thisObj, registerFile, r - (*registerFile->basePointer()) + argv + argc, scopeChain, &exceptionValue);
-#endif
}
Machine& machine()
exec->m_callFrameOffset = callerRegisterOffset - codeBlock->numLocals - CallFrameHeaderSize;
vPC = callFrame[ReturnVPC].u.vPC;
-#if JAVASCRIPT_PROFILING
if (Profiler* profiler = *Profiler::enabledProfilerReference())
profiler->didExecute(exec, callFrame[Callee].u.jsObject);
-#endif
return true;
}
if (codeBlock->needsFullScopeChain)
scopeChain = scopeChain->copy();
-#if JAVASCRIPT_PROFILING
Profiler** profiler = Profiler::enabledProfilerReference();
if (*profiler)
(*profiler)->willExecute(exec, programNode->sourceURL(), programNode->lineNo());
-#endif
ExecState newExec(exec, this, registerFile, scopeChain, -1);
registerFileStack->popGlobalRegisterFile();
-#if JAVASCRIPT_PROFILING
if (*profiler)
(*profiler)->didExecute(exec, programNode->sourceURL(), programNode->lineNo());
-#endif
return result;
}
ExecState newExec(exec, this, registerFile, scopeChain, callFrameOffset);
-#if JAVASCRIPT_PROFILING
Profiler** profiler = Profiler::enabledProfilerReference();
if (*profiler)
(*profiler)->willExecute(exec, function);
-#endif
m_reentryDepth++;
JSValue* result = privateExecute(Normal, &newExec, registerFile, r, scopeChain, newCodeBlock, exception);
m_reentryDepth--;
-#if JAVASCRIPT_PROFILING
if (*profiler)
(*profiler)->didExecute(exec, function);
-#endif
+
registerFile->shrink(oldSize);
return result;
}
if (codeBlock->needsFullScopeChain)
scopeChain = scopeChain->copy();
-#if JAVASCRIPT_PROFILING
Profiler** profiler = Profiler::enabledProfilerReference();
if (*profiler)
(*profiler)->willExecute(exec, evalNode->sourceURL(), evalNode->lineNo());
-#endif
ExecState newExec(exec, this, registerFile, scopeChain, -1);
registerFile->shrink(oldSize);
-#if JAVASCRIPT_PROFILING
if (*profiler)
(*profiler)->didExecute(exec, evalNode->sourceURL(), evalNode->lineNo());
-#endif
return result;
}
Register** registerBase = registerFile->basePointer();
Instruction* vPC = codeBlock->instructions.begin();
JSValue** k = codeBlock->jsValues.data();
-#if JAVASCRIPT_PROFILING
Profiler** enabledProfilerReference = Profiler::enabledProfilerReference();
#if HAVE(COMPUTED_GOTO)
goto *(&&profilerFetchHack);
profilerFetchHack:
#endif
-
-#endif
-
+
registerFile->setSafeForReentry(false);
#define VM_CHECK_EXCEPTION() \
do { \
CallType callType = v->getCallData(callData);
if (callType == CallTypeJS) {
-#if JAVASCRIPT_PROFILING
if (*enabledProfilerReference)
(*enabledProfilerReference)->willExecute(exec, static_cast<JSObject*>(v));
-#endif
int registerOffset = r - (*registerBase);
Register* callFrame = r + argv - CallFrameHeaderSize;
int callFrameOffset = registerOffset + argv - CallFrameHeaderSize;
}
if (callType == CallTypeNative) {
-#if JAVASCRIPT_PROFILING
if (*enabledProfilerReference)
(*enabledProfilerReference)->willExecute(exec, static_cast<JSObject*>(v));
-#endif
int registerOffset = r - (*registerBase);
r[argv].u.jsValue = base == missingThisObjectMarker() ? exec->globalThisValue() : (r[base].u.jsValue)->toObject(exec); // "this" value
r = (*registerBase) + registerOffset;
r[dst].u.jsValue = returnValue;
-#if JAVASCRIPT_PROFILING
if (*enabledProfilerReference)
(*enabledProfilerReference)->didExecute(exec, static_cast<JSObject*>(v));
-#endif
VM_CHECK_EXCEPTION();
++vPC;
exec->m_callFrameOffset = callerRegisterOffset - codeBlock->numLocals - CallFrameHeaderSize;
int r0 = callFrame[ReturnValueRegister].u.i;
r[r0].u.jsValue = returnValue;
-
-#if JAVASCRIPT_PROFILING
+
if (*enabledProfilerReference)
(*enabledProfilerReference)->didExecute(exec, callFrame[Callee].u.jsObject);
-#endif
+
NEXT_OPCODE;
}
BEGIN_OPCODE(op_construct) {
JSObject* constructor = static_cast<JSObject*>(funcVal);
if (constructType == ConstructTypeJS) {
-#if JAVASCRIPT_PROFILING
if (*enabledProfilerReference)
(*enabledProfilerReference)->willExecute(exec, constructor);
-#endif
+
int registerOffset = r - (*registerBase);
Register* callFrame = r + argv - CallFrameHeaderSize;
int callFrameOffset = registerOffset + argv - CallFrameHeaderSize;
}
if (constructType == ConstructTypeNative) {
-#if JAVASCRIPT_PROFILING
if (*enabledProfilerReference)
(*enabledProfilerReference)->willExecute(exec, constructor);
-#endif
+
int registerOffset = r - (*registerBase);
List args(&r[argv + 1].u.jsValue, argc - 1);
VM_CHECK_EXCEPTION();
r[dst].u.jsValue = returnValue;
-#if JAVASCRIPT_PROFILING
if (*enabledProfilerReference)
(*enabledProfilerReference)->didExecute(exec, constructor);
-#endif
+
++vPC;
NEXT_OPCODE;
}