JSC::EvalExecutable *QScriptProgramPrivate::executable(JSC::ExecState *exec, QScriptEnginePrivate *eng) { if (_executable) { if (eng == engine) return _executable.get(); _executable = 0; } WTF::PassRefPtr<QScript::UStringSourceProviderWithFeedback> provider = QScript::UStringSourceProviderWithFeedback::create(sourceCode, fileName, firstLineNumber, eng); sourceId = provider->asID(); JSC::SourceCode source(provider, firstLineNumber); //after construction of SourceCode provider variable will be null. _executable = JSC::EvalExecutable::create(exec, source); engine = eng; isCompiled = false; return _executable.get(); }
JSC::EvalExecutable *QScriptProgramPrivate::executable(JSC::ExecState *exec, QScriptEnginePrivate *eng) { if (_executable) { if (eng == engine) return _executable.get(); // "Migrating" to another engine; clean up old state QScript::APIShim shim(engine); _executable.clear(); engine->unregisterScriptProgram(this); } WTF::PassRefPtr<QScript::UStringSourceProviderWithFeedback> provider = QScript::UStringSourceProviderWithFeedback::create(sourceCode, fileName, firstLineNumber, eng); sourceId = provider->asID(); JSC::SourceCode source(provider, firstLineNumber); //after construction of SourceCode provider variable will be null. _executable = JSC::EvalExecutable::create(exec, source); engine = eng; engine->registerScriptProgram(this); isCompiled = false; return _executable.get(); }