Changeset 210149 in webkit for trunk/Source/JavaScriptCore/API/JSScriptRef.cpp
- Timestamp:
- Dec 25, 2016, 10:35:07 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSScriptRef.cpp
r209627 r210149 42 42 struct OpaqueJSScript : public SourceProvider { 43 43 public: 44 static WTF::RefPtr<OpaqueJSScript> create(VM * vm, const String& url, int startingLineNumber, const String& source)44 static WTF::RefPtr<OpaqueJSScript> create(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source) 45 45 { 46 return WTF::adoptRef(*new OpaqueJSScript(vm, url, startingLineNumber, source));46 return WTF::adoptRef(*new OpaqueJSScript(vm, sourceOrigin, url, startingLineNumber, source)); 47 47 } 48 48 … … 57 57 } 58 58 59 VM *vm() const { return m_vm; }59 VM& vm() const { return m_vm; } 60 60 61 61 private: 62 OpaqueJSScript(VM * vm, const String& url, int startingLineNumber, const String& source)63 : SourceProvider( url, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()), SourceProviderSourceType::Program)62 OpaqueJSScript(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source) 63 : SourceProvider(sourceOrigin, url, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()), SourceProviderSourceType::Program) 64 64 , m_vm(vm) 65 65 , m_source(source.isNull() ? *StringImpl::empty() : *source.impl()) … … 69 69 virtual ~OpaqueJSScript() { } 70 70 71 VM *m_vm;71 VM& m_vm; 72 72 Ref<StringImpl> m_source; 73 73 }; 74 74 75 static bool parseScript(VM *vm, const SourceCode& source, ParserError& error)75 static bool parseScript(VM& vm, const SourceCode& source, ParserError& error) 76 76 { 77 77 return !!JSC::parse<JSC::ProgramNode>( 78 vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin,78 &vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin, 79 79 JSParserStrictMode::NotStrict, JSParserScriptMode::Classic, SourceParseMode::ProgramMode, SuperBinding::NotNeeded, 80 80 error); … … 85 85 JSScriptRef JSScriptCreateReferencingImmortalASCIIText(JSContextGroupRef contextGroup, JSStringRef url, int startingLineNumber, const char* source, size_t length, JSStringRef* errorMessage, int* errorLine) 86 86 { 87 VM* vm =toJS(contextGroup);88 JSLockHolder locker( vm);87 auto& vm = *toJS(contextGroup); 88 JSLockHolder locker(&vm); 89 89 for (size_t i = 0; i < length; i++) { 90 90 if (!isASCII(source[i])) … … 94 94 startingLineNumber = std::max(1, startingLineNumber); 95 95 96 auto result = OpaqueJSScript::create(vm, url ? url->string() : String(), startingLineNumber, String(StringImpl::createFromLiteral(source, length))); 96 auto sourceURLString = url ? url->string() : String(); 97 auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, String(StringImpl::createFromLiteral(source, length))); 97 98 98 99 ParserError error; … … 110 111 JSScriptRef JSScriptCreateFromString(JSContextGroupRef contextGroup, JSStringRef url, int startingLineNumber, JSStringRef source, JSStringRef* errorMessage, int* errorLine) 111 112 { 112 VM* vm =toJS(contextGroup);113 JSLockHolder locker( vm);113 auto& vm = *toJS(contextGroup); 114 JSLockHolder locker(&vm); 114 115 115 116 startingLineNumber = std::max(1, startingLineNumber); 116 117 117 auto result = OpaqueJSScript::create(vm, url ? url->string() : String(), startingLineNumber, source->string()); 118 auto sourceURLString = url ? url->string() : String(); 119 auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, source->string()); 118 120 119 121 ParserError error; … … 131 133 void JSScriptRetain(JSScriptRef script) 132 134 { 133 JSLockHolder locker( script->vm());135 JSLockHolder locker(&script->vm()); 134 136 script->ref(); 135 137 } … … 137 139 void JSScriptRelease(JSScriptRef script) 138 140 { 139 JSLockHolder locker( script->vm());141 JSLockHolder locker(&script->vm()); 140 142 script->deref(); 141 143 } … … 145 147 ExecState* exec = toJS(context); 146 148 JSLockHolder locker(exec); 147 if ( script->vm() != &exec->vm()) {149 if (&script->vm() != &exec->vm()) { 148 150 RELEASE_ASSERT_NOT_REACHED(); 149 151 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.