UnlinkedFunctionExecutable* UnlinkedFunctionExecutable::fromGlobalCode(const Identifier& name, ExecState* exec, Debugger*, const SourceCode& source, JSObject** exception) { ParserError error; CodeCache* codeCache = exec->globalData().codeCache(); UnlinkedFunctionExecutable* executable = codeCache->getFunctionExecutableFromGlobalCode(exec->globalData(), name, source, error); if (error.m_type != ParserError::ErrorNone) { *exception = error.toErrorObject(exec->lexicalGlobalObject(), source); return 0; } return executable; }
UnlinkedFunctionExecutable* UnlinkedFunctionExecutable::fromGlobalCode(const Identifier& name, ExecState* exec, Debugger*, const SourceCode& source, JSObject** exception) { ParserError error; VM& vm = exec->vm(); CodeCache* codeCache = vm.codeCache(); UnlinkedFunctionExecutable* executable = codeCache->getFunctionExecutableFromGlobalCode(vm, name, source, error); if (exec->lexicalGlobalObject()->hasDebugger()) exec->lexicalGlobalObject()->debugger()->sourceParsed(exec, source.provider(), error.m_line, error.m_message); if (error.m_type != ParserError::ErrorNone) { *exception = error.toErrorObject(exec->lexicalGlobalObject(), source); return 0; } return executable; }
UnlinkedFunctionExecutable* UnlinkedFunctionExecutable::fromGlobalCode( const Identifier& name, ExecState& exec, const SourceCode& source, JSObject*& exception, int overrideLineNumber) { ParserError error; VM& vm = exec.vm(); CodeCache* codeCache = vm.codeCache(); UnlinkedFunctionExecutable* executable = codeCache->getFunctionExecutableFromGlobalCode(vm, name, source, error); auto& globalObject = *exec.lexicalGlobalObject(); if (globalObject.hasDebugger()) globalObject.debugger()->sourceParsed(&exec, source.provider(), error.line(), error.message()); if (error.isValid()) { exception = error.toErrorObject(&globalObject, source, overrideLineNumber); return nullptr; } return executable; }