Changeset 221822 in webkit for trunk/Source/JavaScriptCore/API
- Timestamp:
- Sep 9, 2017, 9:21:45 AM (8 years ago)
- Location:
- trunk/Source/JavaScriptCore/API
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSBase.cpp
r220822 r221822 97 97 } 98 98 ExecState* exec = toJS(ctx); 99 JSLockHolder locker(exec); 99 VM& vm = exec->vm(); 100 JSLockHolder locker(vm); 100 101 101 102 startingLineNumber = std::max(1, startingLineNumber); … … 111 112 *exception = toRef(exec, syntaxException); 112 113 #if ENABLE(REMOTE_INSPECTOR) 113 Exception* exception = Exception::create( exec->vm(), syntaxException);114 Exception* exception = Exception::create(vm, syntaxException); 114 115 exec->vmEntryGlobalObject()->inspectorController().reportAPIException(exec, exception); 115 116 #endif … … 131 132 132 133 ExecState* exec = toJS(ctx); 133 JSLockHolder locker(exec); 134 VM& vm = exec->vm(); 135 JSLockHolder locker(vm); 134 136 135 exec->vm().heap.reportAbandonedObjectGraph();137 vm.heap.reportAbandonedObjectGraph(); 136 138 } 137 139 … … 143 145 } 144 146 ExecState* exec = toJS(ctx); 145 JSLockHolder locker(exec); 147 VM& vm = exec->vm(); 148 JSLockHolder locker(vm); 146 149 147 exec->vm().heap.deprecatedReportExtraMemory(size);150 vm.heap.deprecatedReportExtraMemory(size); 148 151 } 149 152 … … 157 160 158 161 ExecState* exec = toJS(ctx); 159 JSLockHolder locker(exec); 160 exec->vm().heap.collectNow(Sync, CollectionScope::Full); 162 VM& vm = exec->vm(); 163 JSLockHolder locker(vm); 164 vm.heap.collectNow(Sync, CollectionScope::Full); 161 165 } 162 166 … … 167 171 168 172 ExecState* exec = toJS(ctx); 169 JSLockHolder locker(exec); 170 exec->vm().heap.collectSync(CollectionScope::Eden); 173 VM& vm = exec->vm(); 174 JSLockHolder locker(vm); 175 vm.heap.collectSync(CollectionScope::Eden); 171 176 } 172 177 -
trunk/Source/JavaScriptCore/API/JSCallbackConstructor.h
r194369 r221822 39 39 static JSCallbackConstructor* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, JSClassRef classRef, JSObjectCallAsConstructorCallback callback) 40 40 { 41 JSCallbackConstructor* constructor = new (NotNull, allocateCell<JSCallbackConstructor>(*exec->heap())) JSCallbackConstructor(globalObject, structure, classRef, callback); 41 VM& vm = exec->vm(); 42 JSCallbackConstructor* constructor = new (NotNull, allocateCell<JSCallbackConstructor>(vm.heap)) JSCallbackConstructor(globalObject, structure, classRef, callback); 42 43 constructor->finishCreation(globalObject, classRef); 43 44 return constructor; -
trunk/Source/JavaScriptCore/API/JSCallbackObject.h
r210829 r221822 139 139 static JSCallbackObject* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, JSClassRef classRef, void* data) 140 140 { 141 VM& vm = exec->vm(); 141 142 ASSERT_UNUSED(globalObject, !structure->globalObject() || structure->globalObject() == globalObject); 142 JSCallbackObject* callbackObject = new (NotNull, allocateCell<JSCallbackObject>( *exec->heap())) JSCallbackObject(exec, structure, classRef, data);143 JSCallbackObject* callbackObject = new (NotNull, allocateCell<JSCallbackObject>(vm.heap)) JSCallbackObject(exec, structure, classRef, data); 143 144 callbackObject->finishCreation(exec); 144 145 return callbackObject; -
trunk/Source/JavaScriptCore/API/JSContext.mm
r220186 r221822 116 116 - (void)setException:(JSValue *)value 117 117 { 118 JSC::JSLockHolder locker(toJS(m_context)); 118 JSC::ExecState* exec = toJS(m_context); 119 JSC::VM& vm = exec->vm(); 120 JSC::JSLockHolder locker(vm); 119 121 if (value) 120 m_exception.set( toJS(m_context)->vm(), toJS(JSValueToObject(m_context, valueInternalValue(value), 0)));122 m_exception.set(vm, toJS(JSValueToObject(m_context, valueInternalValue(value), 0))); 121 123 else 122 124 m_exception.clear(); -
trunk/Source/JavaScriptCore/API/JSContextRef.cpp
r214905 r221822 190 190 } 191 191 ExecState* exec = toJS(ctx); 192 JSLockHolder locker(exec); 193 194 return toRef(jsCast<JSObject*>(exec->lexicalGlobalObject()->methodTable()->toThis(exec->lexicalGlobalObject(), exec, NotStrictMode))); 192 VM& vm = exec->vm(); 193 JSLockHolder locker(vm); 194 195 return toRef(jsCast<JSObject*>(exec->lexicalGlobalObject()->methodTable(vm)->toThis(exec->lexicalGlobalObject(), exec, NotStrictMode))); 195 196 } 196 197 … … 305 306 } 306 307 ExecState* exec = toJS(ctx); 307 JSLockHolder lock(exec); 308 VM& vm = exec->vm(); 309 JSLockHolder lock(vm); 308 310 StringBuilder builder; 309 CallFrame* frame = exec->vm().topCallFrame;311 CallFrame* frame = vm.topCallFrame; 310 312 311 313 ASSERT(maxStackSize); -
trunk/Source/JavaScriptCore/API/JSManagedValue.mm
r208306 r221822 265 265 { 266 266 WTF::Locker<JSC::JSLock> locker(m_lock.get()); 267 if (!m_lock->vm()) 267 JSC::VM* vm = m_lock->vm(); 268 if (!vm) 268 269 return nil; 269 270 270 JSC::JSLockHolder apiLocker( m_lock->vm());271 JSC::JSLockHolder apiLocker(vm); 271 272 if (!m_globalObject) 272 273 return nil; -
trunk/Source/JavaScriptCore/API/JSObjectRef.cpp
r221546 r221822 90 90 } 91 91 ExecState* exec = toJS(ctx); 92 JSLockHolder locker(exec); 92 VM& vm = exec->vm(); 93 JSLockHolder locker(vm); 93 94 94 95 if (!jsClass) … … 97 98 JSCallbackObject<JSDestructibleObject>* object = JSCallbackObject<JSDestructibleObject>::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackObjectStructure(), jsClass, data); 98 99 if (JSObject* prototype = jsClass->prototype(exec)) 99 object->setPrototypeDirect( exec->vm(), prototype);100 object->setPrototypeDirect(vm, prototype); 100 101 101 102 return toRef(object); … … 109 110 } 110 111 ExecState* exec = toJS(ctx); 111 JSLockHolder locker(exec); 112 return toRef(JSCallbackFunction::create(exec->vm(), exec->lexicalGlobalObject(), callAsFunction, name ? name->string() : ASCIILiteral("anonymous"))); 112 VM& vm = exec->vm(); 113 JSLockHolder locker(vm); 114 return toRef(JSCallbackFunction::create(vm, exec->lexicalGlobalObject(), callAsFunction, name ? name->string() : ASCIILiteral("anonymous"))); 113 115 } 114 116 … … 120 122 } 121 123 ExecState* exec = toJS(ctx); 122 JSLockHolder locker(exec); 124 VM& vm = exec->vm(); 125 JSLockHolder locker(vm); 123 126 124 127 JSValue jsPrototype = jsClass ? jsClass->prototype(exec) : 0; … … 127 130 128 131 JSCallbackConstructor* constructor = JSCallbackConstructor::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackConstructorStructure(), jsClass, callAsConstructor); 129 constructor->putDirect( exec->vm(), exec->propertyNames().prototype, jsPrototype, DontEnum | DontDelete | ReadOnly);132 constructor->putDirect(vm, vm.propertyNames->prototype, jsPrototype, DontEnum | DontDelete | ReadOnly); 130 133 return toRef(constructor); 131 134 } … … 138 141 } 139 142 ExecState* exec = toJS(ctx); 140 JSLockHolder locker(exec); 143 VM& vm = exec->vm(); 144 JSLockHolder locker(vm); 141 145 142 146 startingLineNumber = std::max(1, startingLineNumber); 143 Identifier nameID = name ? name->identifier(& exec->vm()) : Identifier::fromString(exec, "anonymous");147 Identifier nameID = name ? name->identifier(&vm) : Identifier::fromString(exec, "anonymous"); 144 148 145 149 MarkedArgumentBuffer args; … … 260 264 ExecState* exec = toJS(ctx); 261 265 VM& vm = exec->vm(); 262 JSLockHolder locker( exec);266 JSLockHolder locker(vm); 263 267 264 268 JSObject* jsObject = toJS(object); … … 267 271 if (JSProxy* proxy = jsDynamicCast<JSProxy*>(vm, jsObject)) { 268 272 if (JSGlobalObject* globalObject = jsDynamicCast<JSGlobalObject*>(vm, proxy->target())) { 269 globalObject->resetPrototype( exec->vm(), jsValue.isObject() ? jsValue : jsNull());273 globalObject->resetPrototype(vm, jsValue.isObject() ? jsValue : jsNull()); 270 274 return; 271 275 } … … 273 277 RELEASE_ASSERT_NOT_REACHED(); 274 278 } 275 jsObject->setPrototype( exec->vm(), exec, jsValue.isObject() ? jsValue : jsNull());279 jsObject->setPrototype(vm, exec, jsValue.isObject() ? jsValue : jsNull()); 276 280 } 277 281 … … 283 287 } 284 288 ExecState* exec = toJS(ctx); 285 JSLockHolder locker(exec); 286 287 JSObject* jsObject = toJS(object); 288 289 return jsObject->hasProperty(exec, propertyName->identifier(&exec->vm())); 289 VM& vm = exec->vm(); 290 JSLockHolder locker(vm); 291 292 JSObject* jsObject = toJS(object); 293 294 return jsObject->hasProperty(exec, propertyName->identifier(&vm)); 290 295 } 291 296 … … 297 302 } 298 303 ExecState* exec = toJS(ctx); 299 JSLockHolder locker(exec); 300 301 JSObject* jsObject = toJS(object); 302 303 JSValue jsValue = jsObject->get(exec, propertyName->identifier(&exec->vm())); 304 VM& vm = exec->vm(); 305 JSLockHolder locker(vm); 306 307 JSObject* jsObject = toJS(object); 308 309 JSValue jsValue = jsObject->get(exec, propertyName->identifier(&vm)); 304 310 handleExceptionIfNeeded(exec, exception); 305 311 return toRef(exec, jsValue); … … 318 324 319 325 JSObject* jsObject = toJS(object); 320 Identifier name(propertyName->identifier(& exec->vm()));326 Identifier name(propertyName->identifier(&vm)); 321 327 JSValue jsValue = toJS(exec, value); 322 328 … … 325 331 if (doesNotHaveProperty) { 326 332 PropertyDescriptor desc(jsValue, attributes); 327 jsObject->methodTable( )->defineOwnProperty(jsObject, exec, name, desc, false);333 jsObject->methodTable(vm)->defineOwnProperty(jsObject, exec, name, desc, false); 328 334 } else { 329 335 PutPropertySlot slot(jsObject); 330 jsObject->methodTable( )->put(jsObject, exec, name, jsValue, slot);336 jsObject->methodTable(vm)->put(jsObject, exec, name, jsValue, slot); 331 337 } 332 338 } … … 358 364 } 359 365 ExecState* exec = toJS(ctx); 360 JSLockHolder locker(exec); 366 VM& vm = exec->vm(); 367 JSLockHolder locker(vm); 361 368 362 369 JSObject* jsObject = toJS(object); 363 370 JSValue jsValue = toJS(exec, value); 364 371 365 jsObject->methodTable( )->putByIndex(jsObject, exec, propertyIndex, jsValue, false);372 jsObject->methodTable(vm)->putByIndex(jsObject, exec, propertyIndex, jsValue, false); 366 373 handleExceptionIfNeeded(exec, exception); 367 374 } … … 374 381 } 375 382 ExecState* exec = toJS(ctx); 376 JSLockHolder locker(exec); 377 378 JSObject* jsObject = toJS(object); 379 380 bool result = jsObject->methodTable()->deleteProperty(jsObject, exec, propertyName->identifier(&exec->vm())); 383 VM& vm = exec->vm(); 384 JSLockHolder locker(vm); 385 386 JSObject* jsObject = toJS(object); 387 388 bool result = jsObject->methodTable(vm)->deleteProperty(jsObject, exec, propertyName->identifier(&vm)); 381 389 handleExceptionIfNeeded(exec, exception); 382 390 return result; … … 456 464 ExecState* exec = toJS(ctx); 457 465 VM& vm = exec->vm(); 458 JSLockHolder locker( exec);466 JSLockHolder locker(vm); 459 467 JSObject* jsObject = toJS(object); 460 468 JSValue result; 461 Identifier name(propertyName->identifier(& exec->vm()));469 Identifier name(propertyName->identifier(&vm)); 462 470 463 471 … … 481 489 ExecState* exec = toJS(ctx); 482 490 VM& vm = exec->vm(); 483 JSLockHolder locker( exec);491 JSLockHolder locker(vm); 484 492 JSObject* jsObject = toJS(object); 485 493 JSValue jsValue = value ? toJS(exec, value) : JSValue(); 486 Identifier name(propertyName->identifier(& exec->vm()));494 Identifier name(propertyName->identifier(&vm)); 487 495 488 496 // Get wrapped object if proxied … … 491 499 492 500 if (jsObject->inherits(vm, JSCallbackObject<JSGlobalObject>::info())) { 493 jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->setPrivateProperty( exec->vm(), name, jsValue);501 jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->setPrivateProperty(vm, name, jsValue); 494 502 return true; 495 503 } 496 504 if (jsObject->inherits(vm, JSCallbackObject<JSDestructibleObject>::info())) { 497 jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->setPrivateProperty( exec->vm(), name, jsValue);505 jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->setPrivateProperty(vm, name, jsValue); 498 506 return true; 499 507 } 500 508 #if JSC_OBJC_API_ENABLED 501 509 if (jsObject->inherits(vm, JSCallbackObject<JSAPIWrapperObject>::info())) { 502 jsCast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->setPrivateProperty( exec->vm(), name, jsValue);510 jsCast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->setPrivateProperty(vm, name, jsValue); 503 511 return true; 504 512 } … … 511 519 ExecState* exec = toJS(ctx); 512 520 VM& vm = exec->vm(); 513 JSLockHolder locker( exec);514 JSObject* jsObject = toJS(object); 515 Identifier name(propertyName->identifier(& exec->vm()));521 JSLockHolder locker(vm); 522 JSObject* jsObject = toJS(object); 523 Identifier name(propertyName->identifier(&vm)); 516 524 517 525 // Get wrapped object if proxied … … 540 548 if (!object) 541 549 return false; 542 JSLockHolder locker(toJS(ctx)); 550 ExecState* exec = toJS(ctx); 551 VM& vm = exec->vm(); 552 JSLockHolder locker(vm); 543 553 CallData callData; 544 554 JSCell* cell = toJS(object); 545 return cell->methodTable( )->getCallData(cell, callData) != CallType::None;555 return cell->methodTable(vm)->getCallData(cell, callData) != CallType::None; 546 556 } 547 557 … … 549 559 { 550 560 ExecState* exec = toJS(ctx); 551 JSLockHolder locker(exec); 561 VM& vm = exec->vm(); 562 JSLockHolder locker(vm); 552 563 553 564 if (!object) … … 565 576 566 577 CallData callData; 567 CallType callType = jsObject->methodTable( )->getCallData(jsObject, callData);578 CallType callType = jsObject->methodTable(vm)->getCallData(jsObject, callData); 568 579 if (callType == CallType::None) 569 580 return 0; … … 587 598 { 588 599 ExecState* exec = toJS(ctx); 589 JSLockHolder locker(exec); 600 VM& vm = exec->vm(); 601 JSLockHolder locker(vm); 590 602 591 603 if (!object) … … 595 607 596 608 ConstructData constructData; 597 ConstructType constructType = jsObject->methodTable( )->getConstructData(jsObject, constructData);609 ConstructType constructType = jsObject->methodTable(vm)->getConstructData(jsObject, constructData); 598 610 if (constructType == ConstructType::None) 599 611 return 0; … … 637 649 JSPropertyNameArrayRef propertyNames = new OpaqueJSPropertyNameArray(vm); 638 650 PropertyNameArray array(vm, PropertyNameMode::Strings); 639 jsObject->methodTable( )->getPropertyNames(jsObject, exec, array, EnumerationMode());651 jsObject->methodTable(*vm)->getPropertyNames(jsObject, exec, array, EnumerationMode()); 640 652 641 653 size_t size = array.size(); … … 674 686 { 675 687 PropertyNameArray* propertyNames = toJS(array); 676 JSLockHolder locker(propertyNames->vm()); 677 propertyNames->add(propertyName->identifier(propertyNames->vm())); 688 VM* vm = propertyNames->vm(); 689 JSLockHolder locker(vm); 690 propertyNames->add(propertyName->identifier(vm)); 678 691 } 679 692 -
trunk/Source/JavaScriptCore/API/JSScriptRef.cpp
r212365 r221822 146 146 { 147 147 ExecState* exec = toJS(context); 148 JSLockHolder locker(exec); 149 if (&script->vm() != &exec->vm()) { 148 VM& vm = exec->vm(); 149 JSLockHolder locker(vm); 150 if (&script->vm() != &vm) { 150 151 RELEASE_ASSERT_NOT_REACHED(); 151 152 return 0; -
trunk/Source/JavaScriptCore/API/JSTypedArray.cpp
r217052 r221822 142 142 ExecState* exec = toJS(ctx); 143 143 VM& vm = exec->vm(); 144 JSLockHolder locker( exec);144 JSLockHolder locker(vm); 145 145 146 146 JSValue value = toJS(exec, valueRef); … … 196 196 ExecState* exec = toJS(ctx); 197 197 VM& vm = exec->vm(); 198 JSLockHolder locker( exec);198 JSLockHolder locker(vm); 199 199 200 200 if (arrayType == kJSTypedArrayTypeNone || arrayType == kJSTypedArrayTypeArrayBuffer) … … 220 220 ExecState* exec = toJS(ctx); 221 221 VM& vm = exec->vm(); 222 JSLockHolder locker( exec);222 JSLockHolder locker(vm); 223 223 224 224 if (arrayType == kJSTypedArrayTypeNone || arrayType == kJSTypedArrayTypeArrayBuffer) … … 241 241 ExecState* exec = toJS(ctx); 242 242 VM& vm = exec->vm(); 243 JSLockHolder locker( exec);243 JSLockHolder locker(vm); 244 244 JSObject* object = toJS(objectRef); 245 245 … … 292 292 ExecState* exec = toJS(ctx); 293 293 VM& vm = exec->vm(); 294 JSLockHolder locker( exec);294 JSLockHolder locker(vm); 295 295 JSObject* object = toJS(objectRef); 296 296 297 297 if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(vm, object)) 298 return toRef( exec->vm().m_typedArrayController->toJS(exec, typedArray->globalObject(), typedArray->possiblySharedBuffer()));298 return toRef(vm.m_typedArrayController->toJS(exec, typedArray->globalObject(), typedArray->possiblySharedBuffer())); 299 299 300 300 return nullptr; … … 304 304 { 305 305 ExecState* exec = toJS(ctx); 306 JSLockHolder locker(exec); 306 VM& vm = exec->vm(); 307 JSLockHolder locker(vm); 307 308 308 309 auto buffer = ArrayBuffer::createFromBytes(bytes, byteLength, [=](void* p) { … … 311 312 }); 312 313 313 JSArrayBuffer* jsBuffer = JSArrayBuffer::create( exec->vm(), exec->lexicalGlobalObject()->arrayBufferStructure(ArrayBufferSharingMode::Default), WTFMove(buffer));314 JSArrayBuffer* jsBuffer = JSArrayBuffer::create(vm, exec->lexicalGlobalObject()->arrayBufferStructure(ArrayBufferSharingMode::Default), WTFMove(buffer)); 314 315 if (handleExceptionIfNeeded(exec, exception) == ExceptionStatus::DidThrow) 315 316 return nullptr; … … 322 323 ExecState* exec = toJS(ctx); 323 324 VM& vm = exec->vm(); 324 JSLockHolder locker( exec);325 JSLockHolder locker(vm); 325 326 JSObject* object = toJS(objectRef); 326 327 -
trunk/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp
r211247 r221822 45 45 { 46 46 ExecState* exec = toJS(context); 47 JSLockHolder locker(exec); 48 RefPtr<OpaqueJSWeakObjectMap> map = OpaqueJSWeakObjectMap::create(exec->vm(), privateData, callback); 47 VM& vm = exec->vm(); 48 JSLockHolder locker(vm); 49 RefPtr<OpaqueJSWeakObjectMap> map = OpaqueJSWeakObjectMap::create(vm, privateData, callback); 49 50 exec->lexicalGlobalObject()->registerWeakMap(map.get()); 50 51 return map.get(); … … 58 59 } 59 60 ExecState* exec = toJS(ctx); 60 JSLockHolder locker(exec); 61 VM& vm = exec->vm(); 62 JSLockHolder locker(vm); 61 63 JSObject* obj = toJS(object); 62 64 if (!obj) 63 65 return; 64 ASSERT(obj->inherits( exec->vm(), JSProxy::info())65 || obj->inherits( exec->vm(), JSCallbackObject<JSGlobalObject>::info())66 || obj->inherits( exec->vm(), JSCallbackObject<JSDestructibleObject>::info()));66 ASSERT(obj->inherits(vm, JSProxy::info()) 67 || obj->inherits(vm, JSCallbackObject<JSGlobalObject>::info()) 68 || obj->inherits(vm, JSCallbackObject<JSDestructibleObject>::info())); 67 69 map->map().set(key, obj); 68 70 } -
trunk/Source/JavaScriptCore/API/JSWrapperMap.mm
r221723 r221822 110 110 { 111 111 JSC::ExecState* exec = toJS(ctx); 112 JSC::JSLockHolder locker(exec); 112 JSC::VM& vm = exec->vm(); 113 JSC::JSLockHolder locker(vm); 113 114 114 115 JSC::JSObject* constructor = toJS(constructorRef); 115 116 JSC::JSValue instance = toJS(exec, possibleInstance); 116 return JSC::JSObject::defaultHasInstance(exec, instance, constructor->get(exec, exec->propertyNames().prototype));117 return JSC::JSObject::defaultHasInstance(exec, instance, constructor->get(exec, vm.propertyNames->prototype)); 117 118 } 118 119 … … 120 121 { 121 122 JSC::ExecState* exec = toJS(ctx); 122 JSC::JSLockHolder locker(exec); 123 JSC::VM& vm = exec->vm(); 124 JSC::JSLockHolder locker(vm); 123 125 124 126 ASSERT(jsClass); … … 126 128 object->setWrappedObject(wrappedObject); 127 129 if (JSC::JSObject* prototype = jsClass->prototype(exec)) 128 object->setPrototypeDirect( exec->vm(), prototype);130 object->setPrototypeDirect(vm, prototype); 129 131 130 132 return object; -
trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm
r221097 r221822 676 676 677 677 JSC::ExecState* exec = toJS([context JSGlobalContextRef]); 678 JSC::JSLockHolder locker(exec); 678 JSC::VM& vm = exec->vm(); 679 JSC::JSLockHolder locker(vm); 679 680 auto impl = std::make_unique<JSC::ObjCCallbackFunctionImpl>(invocation, type, instanceClass, WTFMove(arguments), WTFMove(result)); 680 681 const String& name = impl->name(); 681 return toRef(JSC::ObjCCallbackFunction::create( exec->vm(), exec->lexicalGlobalObject(), name, WTFMove(impl)));682 return toRef(JSC::ObjCCallbackFunction::create(vm, exec->lexicalGlobalObject(), name, WTFMove(impl))); 682 683 } 683 684
Note:
See TracChangeset
for help on using the changeset viewer.