#include "APICast.h"
#include "Completion.h"
+#include "Exception.h"
#include "JSBasePrivate.h"
#include "VM.h"
#include "JSScriptRefPrivate.h"
struct OpaqueJSScript : public SourceProvider {
public:
- static WTF::PassRefPtr<OpaqueJSScript> create(VM* vm, const String& url, int startingLineNumber, const String& source)
+ static WTF::RefPtr<OpaqueJSScript> create(VM* vm, const String& url, int startingLineNumber, const String& source)
{
- return WTF::adoptRef(new OpaqueJSScript(vm, url, startingLineNumber, source));
+ return WTF::adoptRef(*new OpaqueJSScript(vm, url, startingLineNumber, source));
}
virtual const String& source() const override
static bool parseScript(VM* vm, const SourceCode& source, ParserError& error)
{
- return JSC::parse<JSC::ProgramNode>(vm, source, 0, Identifier(), JSParseNormal, JSParseProgramCode, error);
+ return !!JSC::parse<JSC::ProgramNode>(
+ vm, source, 0, Identifier(), JSParserBuiltinMode::NotBuiltin,
+ JSParserStrictMode::NotStrict, JSParserCodeType::Program,
+ error);
}
extern "C" {
startingLineNumber = std::max(1, startingLineNumber);
- RefPtr<OpaqueJSScript> result = OpaqueJSScript::create(vm, url->string(), startingLineNumber, String(StringImpl::createFromLiteral(source, length)));
+ RefPtr<OpaqueJSScript> result = OpaqueJSScript::create(vm, url ? url->string() : String(), startingLineNumber, String(StringImpl::createFromLiteral(source, length)));
ParserError error;
if (!parseScript(vm, SourceCode(result), error)) {
if (errorMessage)
- *errorMessage = OpaqueJSString::create(error.m_message).leakRef();
+ *errorMessage = OpaqueJSString::create(error.message()).leakRef();
if (errorLine)
- *errorLine = error.m_line;
- return 0;
+ *errorLine = error.line();
+ return nullptr;
}
return result.release().leakRef();
startingLineNumber = std::max(1, startingLineNumber);
- RefPtr<OpaqueJSScript> result = OpaqueJSScript::create(vm, url->string(), startingLineNumber, source->string());
+ RefPtr<OpaqueJSScript> result = OpaqueJSScript::create(vm, url ? url->string() : String(), startingLineNumber, source->string());
ParserError error;
if (!parseScript(vm, SourceCode(result), error)) {
if (errorMessage)
- *errorMessage = OpaqueJSString::create(error.m_message).leakRef();
+ *errorMessage = OpaqueJSString::create(error.message()).leakRef();
if (errorLine)
- *errorLine = error.m_line;
- return 0;
+ *errorLine = error.line();
+ return nullptr;
}
return result.release().leakRef();
RELEASE_ASSERT_NOT_REACHED();
return 0;
}
- JSValue internalException;
+ NakedPtr<Exception> internalException;
JSValue thisValue = thisValueRef ? toJS(exec, thisValueRef) : jsUndefined();
- JSValue result = evaluate(exec, SourceCode(script), thisValue, &internalException);
+ JSValue result = evaluate(exec, SourceCode(script), thisValue, internalException);
if (internalException) {
if (exception)
- *exception = toRef(exec, internalException);
+ *exception = toRef(exec, internalException->value());
return 0;
}
ASSERT(result);