Changeset 156521 in webkit
- Timestamp:
- Sep 26, 2013 5:39:00 PM (11 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r156518 r156521 1 2013-09-26 Andreas Kling <akling@apple.com> 2 3 GetterSetter construction should take a VM instead of ExecState. 4 <https://webkit.org/b/121993> 5 6 Reviewed by Sam Weinig. 7 8 Pass VM& instead of ExecState* to GetterSetter. Updated surrounding 9 code at touched sites to cache VM in a local for fewer loads. 10 11 JSC release binary size -= 4120 bytes. 12 1 13 2013-09-26 Oliver Hunt <oliver@apple.com> 2 14 -
trunk/Source/JavaScriptCore/jit/JITStubs.cpp
r156511 r156521 2113 2113 JSObject* baseObj = asObject(stackFrame.args[0].jsValue()); 2114 2114 2115 GetterSetter* accessor = GetterSetter::create(callFrame); 2115 VM& vm = callFrame->vm(); 2116 GetterSetter* accessor = GetterSetter::create(vm); 2116 2117 2117 2118 JSValue getter = stackFrame.args[2].jsValue(); … … 2122 2123 2123 2124 if (!getter.isUndefined()) 2124 accessor->setGetter( callFrame->vm(), asObject(getter));2125 accessor->setGetter(vm, asObject(getter)); 2125 2126 if (!setter.isUndefined()) 2126 accessor->setSetter( callFrame->vm(), asObject(setter));2127 accessor->setSetter(vm, asObject(setter)); 2127 2128 baseObj->putDirectAccessor(callFrame, stackFrame.args[1].identifier(), accessor, Accessor); 2128 2129 } -
trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
r156511 r156521 788 788 JSObject* baseObj = asObject(LLINT_OP(1).jsValue()); 789 789 790 GetterSetter* accessor = GetterSetter::create( exec);790 GetterSetter* accessor = GetterSetter::create(vm); 791 791 LLINT_CHECK_EXCEPTION(); 792 792 -
trunk/Source/JavaScriptCore/runtime/GetterSetter.h
r154038 r156521 39 39 40 40 private: 41 GetterSetter( ExecState* exec)42 : JSCell( exec->vm(), exec->vm().getterSetterStructure.get())41 GetterSetter(VM& vm) 42 : JSCell(vm, vm.getterSetterStructure.get()) 43 43 { 44 44 } … … 47 47 typedef JSCell Base; 48 48 49 static GetterSetter* create( ExecState* exec)49 static GetterSetter* create(VM& vm) 50 50 { 51 GetterSetter* getterSetter = new (NotNull, allocateCell<GetterSetter>( *exec->heap())) GetterSetter(exec);52 getterSetter->finishCreation( exec->vm());51 GetterSetter* getterSetter = new (NotNull, allocateCell<GetterSetter>(vm.heap)) GetterSetter(vm); 52 getterSetter->finishCreation(vm); 53 53 return getterSetter; 54 54 } -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r155891 r156521 227 227 { 228 228 ExecState* exec = JSGlobalObject::globalExec(); 229 230 m_functionPrototype.set(exec->vm(), this, FunctionPrototype::create(exec, this, FunctionPrototype::createStructure(exec->vm(), this, jsNull()))); // The real prototype will be set once ObjectPrototype is created. 231 m_functionStructure.set(exec->vm(), this, JSFunction::createStructure(exec->vm(), this, m_functionPrototype.get())); 232 m_boundFunctionStructure.set(exec->vm(), this, JSBoundFunction::createStructure(exec->vm(), this, m_functionPrototype.get())); 233 m_namedFunctionStructure.set(exec->vm(), this, Structure::addPropertyTransition(exec->vm(), m_functionStructure.get(), exec->vm().propertyNames->name, DontDelete | ReadOnly | DontEnum, 0, m_functionNameOffset)); 234 m_internalFunctionStructure.set(exec->vm(), this, InternalFunction::createStructure(exec->vm(), this, m_functionPrototype.get())); 229 VM& vm = exec->vm(); 230 231 m_functionPrototype.set(vm, this, FunctionPrototype::create(exec, this, FunctionPrototype::createStructure(vm, this, jsNull()))); // The real prototype will be set once ObjectPrototype is created. 232 m_functionStructure.set(vm, this, JSFunction::createStructure(vm, this, m_functionPrototype.get())); 233 m_boundFunctionStructure.set(vm, this, JSBoundFunction::createStructure(vm, this, m_functionPrototype.get())); 234 m_namedFunctionStructure.set(vm, this, Structure::addPropertyTransition(vm, m_functionStructure.get(), vm.propertyNames->name, DontDelete | ReadOnly | DontEnum, 0, m_functionNameOffset)); 235 m_internalFunctionStructure.set(vm, this, InternalFunction::createStructure(vm, this, m_functionPrototype.get())); 235 236 JSFunction* callFunction = 0; 236 237 JSFunction* applyFunction = 0; 237 238 m_functionPrototype->addFunctionProperties(exec, this, &callFunction, &applyFunction); 238 m_callFunction.set( exec->vm(), this, callFunction);239 m_applyFunction.set( exec->vm(), this, applyFunction);240 m_objectPrototype.set( exec->vm(), this, ObjectPrototype::create(exec, this, ObjectPrototype::createStructure(exec->vm(), this, jsNull())));241 GetterSetter* protoAccessor = GetterSetter::create( exec);242 protoAccessor->setGetter( exec->vm(), JSFunction::create(exec, this, 0, String(), globalFuncProtoGetter));243 protoAccessor->setSetter( exec->vm(), JSFunction::create(exec, this, 0, String(), globalFuncProtoSetter));244 m_objectPrototype->putDirectAccessor(exec, exec->propertyNames().underscoreProto, protoAccessor, Accessor | DontEnum);245 m_functionPrototype->structure()->setPrototypeWithoutTransition( exec->vm(), m_objectPrototype.get());246 247 m_typedArrays[toIndex(TypeInt8)].prototype.set( exec->vm(), this, JSInt8ArrayPrototype::create(exec, this, JSInt8ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));248 m_typedArrays[toIndex(TypeInt16)].prototype.set( exec->vm(), this, JSInt16ArrayPrototype::create(exec, this, JSInt16ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));249 m_typedArrays[toIndex(TypeInt32)].prototype.set( exec->vm(), this, JSInt32ArrayPrototype::create(exec, this, JSInt32ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));250 m_typedArrays[toIndex(TypeUint8)].prototype.set( exec->vm(), this, JSUint8ArrayPrototype::create(exec, this, JSUint8ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));251 m_typedArrays[toIndex(TypeUint8Clamped)].prototype.set( exec->vm(), this, JSUint8ClampedArrayPrototype::create(exec, this, JSUint8ClampedArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));252 m_typedArrays[toIndex(TypeUint16)].prototype.set( exec->vm(), this, JSUint16ArrayPrototype::create(exec, this, JSUint16ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));253 m_typedArrays[toIndex(TypeUint32)].prototype.set( exec->vm(), this, JSUint32ArrayPrototype::create(exec, this, JSUint32ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));254 m_typedArrays[toIndex(TypeFloat32)].prototype.set( exec->vm(), this, JSFloat32ArrayPrototype::create(exec, this, JSFloat32ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));255 m_typedArrays[toIndex(TypeFloat64)].prototype.set( exec->vm(), this, JSFloat64ArrayPrototype::create(exec, this, JSFloat64ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));256 m_typedArrays[toIndex(TypeDataView)].prototype.set( exec->vm(), this, JSDataViewPrototype::create(exec->vm(), JSDataViewPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));257 258 m_typedArrays[toIndex(TypeInt8)].structure.set( exec->vm(), this, JSInt8Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeInt8)].prototype.get()));259 m_typedArrays[toIndex(TypeInt16)].structure.set( exec->vm(), this, JSInt16Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeInt16)].prototype.get()));260 m_typedArrays[toIndex(TypeInt32)].structure.set( exec->vm(), this, JSInt32Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeInt32)].prototype.get()));261 m_typedArrays[toIndex(TypeUint8)].structure.set( exec->vm(), this, JSUint8Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeUint8)].prototype.get()));262 m_typedArrays[toIndex(TypeUint8Clamped)].structure.set( exec->vm(), this, JSUint8ClampedArray::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeUint8Clamped)].prototype.get()));263 m_typedArrays[toIndex(TypeUint16)].structure.set( exec->vm(), this, JSUint16Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeUint16)].prototype.get()));264 m_typedArrays[toIndex(TypeUint32)].structure.set( exec->vm(), this, JSUint32Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeUint32)].prototype.get()));265 m_typedArrays[toIndex(TypeFloat32)].structure.set( exec->vm(), this, JSFloat32Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeFloat32)].prototype.get()));266 m_typedArrays[toIndex(TypeFloat64)].structure.set( exec->vm(), this, JSFloat64Array::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeFloat64)].prototype.get()));267 m_typedArrays[toIndex(TypeDataView)].structure.set( exec->vm(), this, JSDataView::createStructure(exec->vm(), this, m_typedArrays[toIndex(TypeDataView)].prototype.get()));268 269 m_nameScopeStructure.set( exec->vm(), this, JSNameScope::createStructure(exec->vm(), this, jsNull()));270 m_activationStructure.set( exec->vm(), this, JSActivation::createStructure(exec->vm(), this, jsNull()));271 m_strictEvalActivationStructure.set( exec->vm(), this, StrictEvalActivation::createStructure(exec->vm(), this, jsNull()));272 m_withScopeStructure.set( exec->vm(), this, JSWithScope::createStructure(exec->vm(), this, jsNull()));273 274 m_nullPrototypeObjectStructure.set( exec->vm(), this, JSFinalObject::createStructure(vm(), this, jsNull(), JSFinalObject::defaultInlineCapacity()));275 276 m_callbackFunctionStructure.set( exec->vm(), this, JSCallbackFunction::createStructure(exec->vm(), this, m_functionPrototype.get()));277 m_argumentsStructure.set( exec->vm(), this, Arguments::createStructure(exec->vm(), this, m_objectPrototype.get()));278 m_callbackConstructorStructure.set( exec->vm(), this, JSCallbackConstructor::createStructure(exec->vm(), this, m_objectPrototype.get()));279 m_callbackObjectStructure.set( exec->vm(), this, JSCallbackObject<JSDestructibleObject>::createStructure(exec->vm(), this, m_objectPrototype.get()));239 m_callFunction.set(vm, this, callFunction); 240 m_applyFunction.set(vm, this, applyFunction); 241 m_objectPrototype.set(vm, this, ObjectPrototype::create(exec, this, ObjectPrototype::createStructure(vm, this, jsNull()))); 242 GetterSetter* protoAccessor = GetterSetter::create(vm); 243 protoAccessor->setGetter(vm, JSFunction::create(exec, this, 0, String(), globalFuncProtoGetter)); 244 protoAccessor->setSetter(vm, JSFunction::create(exec, this, 0, String(), globalFuncProtoSetter)); 245 m_objectPrototype->putDirectAccessor(exec, vm.propertyNames->underscoreProto, protoAccessor, Accessor | DontEnum); 246 m_functionPrototype->structure()->setPrototypeWithoutTransition(vm, m_objectPrototype.get()); 247 248 m_typedArrays[toIndex(TypeInt8)].prototype.set(vm, this, JSInt8ArrayPrototype::create(exec, this, JSInt8ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 249 m_typedArrays[toIndex(TypeInt16)].prototype.set(vm, this, JSInt16ArrayPrototype::create(exec, this, JSInt16ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 250 m_typedArrays[toIndex(TypeInt32)].prototype.set(vm, this, JSInt32ArrayPrototype::create(exec, this, JSInt32ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 251 m_typedArrays[toIndex(TypeUint8)].prototype.set(vm, this, JSUint8ArrayPrototype::create(exec, this, JSUint8ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 252 m_typedArrays[toIndex(TypeUint8Clamped)].prototype.set(vm, this, JSUint8ClampedArrayPrototype::create(exec, this, JSUint8ClampedArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 253 m_typedArrays[toIndex(TypeUint16)].prototype.set(vm, this, JSUint16ArrayPrototype::create(exec, this, JSUint16ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 254 m_typedArrays[toIndex(TypeUint32)].prototype.set(vm, this, JSUint32ArrayPrototype::create(exec, this, JSUint32ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 255 m_typedArrays[toIndex(TypeFloat32)].prototype.set(vm, this, JSFloat32ArrayPrototype::create(exec, this, JSFloat32ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 256 m_typedArrays[toIndex(TypeFloat64)].prototype.set(vm, this, JSFloat64ArrayPrototype::create(exec, this, JSFloat64ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 257 m_typedArrays[toIndex(TypeDataView)].prototype.set(vm, this, JSDataViewPrototype::create(vm, JSDataViewPrototype::createStructure(vm, this, m_objectPrototype.get()))); 258 259 m_typedArrays[toIndex(TypeInt8)].structure.set(vm, this, JSInt8Array::createStructure(vm, this, m_typedArrays[toIndex(TypeInt8)].prototype.get())); 260 m_typedArrays[toIndex(TypeInt16)].structure.set(vm, this, JSInt16Array::createStructure(vm, this, m_typedArrays[toIndex(TypeInt16)].prototype.get())); 261 m_typedArrays[toIndex(TypeInt32)].structure.set(vm, this, JSInt32Array::createStructure(vm, this, m_typedArrays[toIndex(TypeInt32)].prototype.get())); 262 m_typedArrays[toIndex(TypeUint8)].structure.set(vm, this, JSUint8Array::createStructure(vm, this, m_typedArrays[toIndex(TypeUint8)].prototype.get())); 263 m_typedArrays[toIndex(TypeUint8Clamped)].structure.set(vm, this, JSUint8ClampedArray::createStructure(vm, this, m_typedArrays[toIndex(TypeUint8Clamped)].prototype.get())); 264 m_typedArrays[toIndex(TypeUint16)].structure.set(vm, this, JSUint16Array::createStructure(vm, this, m_typedArrays[toIndex(TypeUint16)].prototype.get())); 265 m_typedArrays[toIndex(TypeUint32)].structure.set(vm, this, JSUint32Array::createStructure(vm, this, m_typedArrays[toIndex(TypeUint32)].prototype.get())); 266 m_typedArrays[toIndex(TypeFloat32)].structure.set(vm, this, JSFloat32Array::createStructure(vm, this, m_typedArrays[toIndex(TypeFloat32)].prototype.get())); 267 m_typedArrays[toIndex(TypeFloat64)].structure.set(vm, this, JSFloat64Array::createStructure(vm, this, m_typedArrays[toIndex(TypeFloat64)].prototype.get())); 268 m_typedArrays[toIndex(TypeDataView)].structure.set(vm, this, JSDataView::createStructure(vm, this, m_typedArrays[toIndex(TypeDataView)].prototype.get())); 269 270 m_nameScopeStructure.set(vm, this, JSNameScope::createStructure(vm, this, jsNull())); 271 m_activationStructure.set(vm, this, JSActivation::createStructure(vm, this, jsNull())); 272 m_strictEvalActivationStructure.set(vm, this, StrictEvalActivation::createStructure(vm, this, jsNull())); 273 m_withScopeStructure.set(vm, this, JSWithScope::createStructure(vm, this, jsNull())); 274 275 m_nullPrototypeObjectStructure.set(vm, this, JSFinalObject::createStructure(vm, this, jsNull(), JSFinalObject::defaultInlineCapacity())); 276 277 m_callbackFunctionStructure.set(vm, this, JSCallbackFunction::createStructure(vm, this, m_functionPrototype.get())); 278 m_argumentsStructure.set(vm, this, Arguments::createStructure(vm, this, m_objectPrototype.get())); 279 m_callbackConstructorStructure.set(vm, this, JSCallbackConstructor::createStructure(vm, this, m_objectPrototype.get())); 280 m_callbackObjectStructure.set(vm, this, JSCallbackObject<JSDestructibleObject>::createStructure(vm, this, m_objectPrototype.get())); 280 281 #if JSC_OBJC_API_ENABLED 281 m_objcCallbackFunctionStructure.set( exec->vm(), this, ObjCCallbackFunction::createStructure(exec->vm(), this, m_functionPrototype.get()));282 m_objcWrapperObjectStructure.set( exec->vm(), this, JSCallbackObject<JSAPIWrapperObject>::createStructure(exec->vm(), this, m_objectPrototype.get()));282 m_objcCallbackFunctionStructure.set(vm, this, ObjCCallbackFunction::createStructure(vm, this, m_functionPrototype.get())); 283 m_objcWrapperObjectStructure.set(vm, this, JSCallbackObject<JSAPIWrapperObject>::createStructure(vm, this, m_objectPrototype.get())); 283 284 #endif 284 285 285 m_arrayPrototype.set( exec->vm(), this, ArrayPrototype::create(exec, this, ArrayPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));286 287 m_originalArrayStructureForIndexingShape[UndecidedShape >> IndexingShapeShift].set( exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithUndecided));288 m_originalArrayStructureForIndexingShape[Int32Shape >> IndexingShapeShift].set( exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithInt32));289 m_originalArrayStructureForIndexingShape[DoubleShape >> IndexingShapeShift].set( exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithDouble));290 m_originalArrayStructureForIndexingShape[ContiguousShape >> IndexingShapeShift].set( exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithContiguous));291 m_originalArrayStructureForIndexingShape[ArrayStorageShape >> IndexingShapeShift].set( exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithArrayStorage));292 m_originalArrayStructureForIndexingShape[SlowPutArrayStorageShape >> IndexingShapeShift].set( exec->vm(), this, JSArray::createStructure(exec->vm(), this, m_arrayPrototype.get(), ArrayWithSlowPutArrayStorage));286 m_arrayPrototype.set(vm, this, ArrayPrototype::create(exec, this, ArrayPrototype::createStructure(vm, this, m_objectPrototype.get()))); 287 288 m_originalArrayStructureForIndexingShape[UndecidedShape >> IndexingShapeShift].set(vm, this, JSArray::createStructure(vm, this, m_arrayPrototype.get(), ArrayWithUndecided)); 289 m_originalArrayStructureForIndexingShape[Int32Shape >> IndexingShapeShift].set(vm, this, JSArray::createStructure(vm, this, m_arrayPrototype.get(), ArrayWithInt32)); 290 m_originalArrayStructureForIndexingShape[DoubleShape >> IndexingShapeShift].set(vm, this, JSArray::createStructure(vm, this, m_arrayPrototype.get(), ArrayWithDouble)); 291 m_originalArrayStructureForIndexingShape[ContiguousShape >> IndexingShapeShift].set(vm, this, JSArray::createStructure(vm, this, m_arrayPrototype.get(), ArrayWithContiguous)); 292 m_originalArrayStructureForIndexingShape[ArrayStorageShape >> IndexingShapeShift].set(vm, this, JSArray::createStructure(vm, this, m_arrayPrototype.get(), ArrayWithArrayStorage)); 293 m_originalArrayStructureForIndexingShape[SlowPutArrayStorageShape >> IndexingShapeShift].set(vm, this, JSArray::createStructure(vm, this, m_arrayPrototype.get(), ArrayWithSlowPutArrayStorage)); 293 294 for (unsigned i = 0; i < NumberOfIndexingShapes; ++i) 294 295 m_arrayStructureForIndexingShapeDuringAllocation[i] = m_originalArrayStructureForIndexingShape[i]; 295 296 296 m_regExpMatchesArrayStructure.set( exec->vm(), this, RegExpMatchesArray::createStructure(exec->vm(), this, m_arrayPrototype.get()));297 298 RegExp* emptyRegex = RegExp::create( exec->vm(), "", NoFlags);299 300 m_regExpPrototype.set( exec->vm(), this, RegExpPrototype::create(exec, this, RegExpPrototype::createStructure(exec->vm(), this, m_objectPrototype.get()), emptyRegex));301 m_regExpStructure.set( exec->vm(), this, RegExpObject::createStructure(exec->vm(), this, m_regExpPrototype.get()));297 m_regExpMatchesArrayStructure.set(vm, this, RegExpMatchesArray::createStructure(vm, this, m_arrayPrototype.get())); 298 299 RegExp* emptyRegex = RegExp::create(vm, "", NoFlags); 300 301 m_regExpPrototype.set(vm, this, RegExpPrototype::create(exec, this, RegExpPrototype::createStructure(vm, this, m_objectPrototype.get()), emptyRegex)); 302 m_regExpStructure.set(vm, this, RegExpObject::createStructure(vm, this, m_regExpPrototype.get())); 302 303 303 304 #if ENABLE(PROMISES) 304 m_promisePrototype.set( exec->vm(), this, JSPromisePrototype::create(exec, this, JSPromisePrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));305 m_promiseStructure.set( exec->vm(), this, JSPromise::createStructure(exec->vm(), this, m_promisePrototype.get()));306 307 m_promiseResolverPrototype.set( exec->vm(), this, JSPromiseResolverPrototype::create(exec, this, JSPromiseResolverPrototype::createStructure(exec->vm(), this, m_objectPrototype.get())));308 m_promiseResolverStructure.set( exec->vm(), this, JSPromiseResolver::createStructure(exec->vm(), this, m_promiseResolverPrototype.get()));309 m_promiseCallbackStructure.set( exec->vm(), this, JSPromiseCallback::createStructure(exec->vm(), this, m_functionPrototype.get()));310 m_promiseWrapperCallbackStructure.set( exec->vm(), this, JSPromiseWrapperCallback::createStructure(exec->vm(), this, m_functionPrototype.get()));305 m_promisePrototype.set(vm, this, JSPromisePrototype::create(exec, this, JSPromisePrototype::createStructure(vm, this, m_objectPrototype.get()))); 306 m_promiseStructure.set(vm, this, JSPromise::createStructure(vm, this, m_promisePrototype.get())); 307 308 m_promiseResolverPrototype.set(vm, this, JSPromiseResolverPrototype::create(exec, this, JSPromiseResolverPrototype::createStructure(vm, this, m_objectPrototype.get()))); 309 m_promiseResolverStructure.set(vm, this, JSPromiseResolver::createStructure(vm, this, m_promiseResolverPrototype.get())); 310 m_promiseCallbackStructure.set(vm, this, JSPromiseCallback::createStructure(vm, this, m_functionPrototype.get())); 311 m_promiseWrapperCallbackStructure.set(vm, this, JSPromiseWrapperCallback::createStructure(vm, this, m_functionPrototype.get())); 311 312 #endif // ENABLE(PROMISES) 312 313 313 314 #define CREATE_PROTOTYPE_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName) \ 314 m_ ## lowerName ## Prototype.set( exec->vm(), this, capitalName##Prototype::create(exec, this, capitalName##Prototype::createStructure(exec->vm(), this, m_objectPrototype.get()))); \315 m_ ## properName ## Structure.set( exec->vm(), this, instanceType::createStructure(exec->vm(), this, m_ ## lowerName ## Prototype.get()));315 m_ ## lowerName ## Prototype.set(vm, this, capitalName##Prototype::create(exec, this, capitalName##Prototype::createStructure(vm, this, m_objectPrototype.get()))); \ 316 m_ ## properName ## Structure.set(vm, this, instanceType::createStructure(vm, this, m_ ## lowerName ## Prototype.get())); 316 317 317 318 FOR_EACH_SIMPLE_BUILTIN_TYPE(CREATE_PROTOTYPE_FOR_SIMPLE_TYPE) … … 321 322 // Constructors 322 323 323 JSCell* objectConstructor = ObjectConstructor::create(exec, this, ObjectConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_objectPrototype.get());324 JSCell* functionConstructor = FunctionConstructor::create(exec, this, FunctionConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_functionPrototype.get());325 JSCell* arrayConstructor = ArrayConstructor::create(exec, this, ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_arrayPrototype.get());324 JSCell* objectConstructor = ObjectConstructor::create(exec, this, ObjectConstructor::createStructure(vm, this, m_functionPrototype.get()), m_objectPrototype.get()); 325 JSCell* functionConstructor = FunctionConstructor::create(exec, this, FunctionConstructor::createStructure(vm, this, m_functionPrototype.get()), m_functionPrototype.get()); 326 JSCell* arrayConstructor = ArrayConstructor::create(exec, this, ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_arrayPrototype.get()); 326 327 327 328 #if ENABLE(PROMISES) 328 JSCell* promiseConstructor = JSPromiseConstructor::create(exec, this, JSPromiseConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_promisePrototype.get());329 JSCell* promiseResolverConstructor = JSPromiseResolverConstructor::create(exec, this, JSPromiseResolverConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_promiseResolverPrototype.get());329 JSCell* promiseConstructor = JSPromiseConstructor::create(exec, this, JSPromiseConstructor::createStructure(vm, this, m_functionPrototype.get()), m_promisePrototype.get()); 330 JSCell* promiseResolverConstructor = JSPromiseResolverConstructor::create(exec, this, JSPromiseResolverConstructor::createStructure(vm, this, m_functionPrototype.get()), m_promiseResolverPrototype.get()); 330 331 #endif // ENABLE(PROMISES) 331 332 332 m_regExpConstructor.set( exec->vm(), this, RegExpConstructor::create(exec, this, RegExpConstructor::createStructure(exec->vm(), this, m_functionPrototype.get()), m_regExpPrototype.get()));333 m_regExpConstructor.set(vm, this, RegExpConstructor::create(exec, this, RegExpConstructor::createStructure(vm, this, m_functionPrototype.get()), m_regExpPrototype.get())); 333 334 334 335 #define CREATE_CONSTRUCTOR_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName) \ 335 capitalName ## Constructor* lowerName ## Constructor = capitalName ## Constructor::create(exec, this, capitalName ## Constructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_ ## lowerName ## Prototype.get()); \336 m_ ## lowerName ## Prototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, lowerName ## Constructor, DontEnum); \336 capitalName ## Constructor* lowerName ## Constructor = capitalName ## Constructor::create(exec, this, capitalName ## Constructor::createStructure(vm, this, m_functionPrototype.get()), m_ ## lowerName ## Prototype.get()); \ 337 m_ ## lowerName ## Prototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, lowerName ## Constructor, DontEnum); \ 337 338 338 339 FOR_EACH_SIMPLE_BUILTIN_TYPE(CREATE_CONSTRUCTOR_FOR_SIMPLE_TYPE) … … 340 341 #undef CREATE_CONSTRUCTOR_FOR_SIMPLE_TYPE 341 342 342 m_errorConstructor.set( exec->vm(), this, errorConstructor);343 344 Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure( exec->vm(), this, m_errorPrototype.get());345 Structure* nativeErrorStructure = NativeErrorConstructor::createStructure( exec->vm(), this, m_functionPrototype.get());346 m_evalErrorConstructor.set( exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("EvalError")));347 m_rangeErrorConstructor.set( exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("RangeError")));348 m_referenceErrorConstructor.set( exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("ReferenceError")));349 m_syntaxErrorConstructor.set( exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("SyntaxError")));350 m_typeErrorConstructor.set( exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("TypeError")));351 m_URIErrorConstructor.set( exec->vm(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("URIError")));352 353 m_objectPrototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, objectConstructor, DontEnum);354 m_functionPrototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, functionConstructor, DontEnum);355 m_arrayPrototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, arrayConstructor, DontEnum);356 m_regExpPrototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, m_regExpConstructor.get(), DontEnum);343 m_errorConstructor.set(vm, this, errorConstructor); 344 345 Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(vm, this, m_errorPrototype.get()); 346 Structure* nativeErrorStructure = NativeErrorConstructor::createStructure(vm, this, m_functionPrototype.get()); 347 m_evalErrorConstructor.set(vm, this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("EvalError"))); 348 m_rangeErrorConstructor.set(vm, this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("RangeError"))); 349 m_referenceErrorConstructor.set(vm, this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("ReferenceError"))); 350 m_syntaxErrorConstructor.set(vm, this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("SyntaxError"))); 351 m_typeErrorConstructor.set(vm, this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("TypeError"))); 352 m_URIErrorConstructor.set(vm, this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral("URIError"))); 353 354 m_objectPrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, objectConstructor, DontEnum); 355 m_functionPrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, functionConstructor, DontEnum); 356 m_arrayPrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, arrayConstructor, DontEnum); 357 m_regExpPrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, m_regExpConstructor.get(), DontEnum); 357 358 #if ENABLE(PROMISES) 358 m_promisePrototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, promiseConstructor, DontEnum);359 m_promiseResolverPrototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, promiseResolverConstructor, DontEnum);359 m_promisePrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, promiseConstructor, DontEnum); 360 m_promiseResolverPrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, promiseResolverConstructor, DontEnum); 360 361 #endif 361 362 362 putDirectWithoutTransition( exec->vm(), exec->propertyNames().Object, objectConstructor, DontEnum);363 putDirectWithoutTransition( exec->vm(), exec->propertyNames().Function, functionConstructor, DontEnum);364 putDirectWithoutTransition( exec->vm(), exec->propertyNames().Array, arrayConstructor, DontEnum);365 putDirectWithoutTransition( exec->vm(), exec->propertyNames().RegExp, m_regExpConstructor.get(), DontEnum);366 putDirectWithoutTransition( exec->vm(), exec->propertyNames().EvalError, m_evalErrorConstructor.get(), DontEnum);367 putDirectWithoutTransition( exec->vm(), exec->propertyNames().RangeError, m_rangeErrorConstructor.get(), DontEnum);368 putDirectWithoutTransition( exec->vm(), exec->propertyNames().ReferenceError, m_referenceErrorConstructor.get(), DontEnum);369 putDirectWithoutTransition( exec->vm(), exec->propertyNames().SyntaxError, m_syntaxErrorConstructor.get(), DontEnum);370 putDirectWithoutTransition( exec->vm(), exec->propertyNames().TypeError, m_typeErrorConstructor.get(), DontEnum);371 putDirectWithoutTransition( exec->vm(), exec->propertyNames().URIError, m_URIErrorConstructor.get(), DontEnum);363 putDirectWithoutTransition(vm, vm.propertyNames->Object, objectConstructor, DontEnum); 364 putDirectWithoutTransition(vm, vm.propertyNames->Function, functionConstructor, DontEnum); 365 putDirectWithoutTransition(vm, vm.propertyNames->Array, arrayConstructor, DontEnum); 366 putDirectWithoutTransition(vm, vm.propertyNames->RegExp, m_regExpConstructor.get(), DontEnum); 367 putDirectWithoutTransition(vm, vm.propertyNames->EvalError, m_evalErrorConstructor.get(), DontEnum); 368 putDirectWithoutTransition(vm, vm.propertyNames->RangeError, m_rangeErrorConstructor.get(), DontEnum); 369 putDirectWithoutTransition(vm, vm.propertyNames->ReferenceError, m_referenceErrorConstructor.get(), DontEnum); 370 putDirectWithoutTransition(vm, vm.propertyNames->SyntaxError, m_syntaxErrorConstructor.get(), DontEnum); 371 putDirectWithoutTransition(vm, vm.propertyNames->TypeError, m_typeErrorConstructor.get(), DontEnum); 372 putDirectWithoutTransition(vm, vm.propertyNames->URIError, m_URIErrorConstructor.get(), DontEnum); 372 373 #if ENABLE(PROMISES) 373 putDirectWithoutTransition( exec->vm(), exec->propertyNames().Promise, promiseConstructor, DontEnum);374 putDirectWithoutTransition( exec->vm(), exec->propertyNames().PromiseResolver, promiseResolverConstructor, DontEnum);374 putDirectWithoutTransition(vm, vm.propertyNames->Promise, promiseConstructor, DontEnum); 375 putDirectWithoutTransition(vm, vm.propertyNames->PromiseResolver, promiseResolverConstructor, DontEnum); 375 376 #endif 376 377 377 378 378 379 #define PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName) \ 379 putDirectWithoutTransition( exec->vm(), exec->propertyNames().jsName, lowerName ## Constructor, DontEnum); \380 putDirectWithoutTransition(vm, vm.propertyNames-> jsName, lowerName ## Constructor, DontEnum); \ 380 381 381 382 FOR_EACH_SIMPLE_BUILTIN_TYPE(PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE) … … 384 385 385 386 386 m_evalFunction.set( exec->vm(), this, JSFunction::create(exec, this, 1, exec->propertyNames().eval.string(), globalFuncEval));387 putDirectWithoutTransition( exec->vm(), exec->propertyNames().eval, m_evalFunction.get(), DontEnum);388 389 putDirectWithoutTransition( exec->vm(), exec->propertyNames().JSON, JSONObject::create(exec, this, JSONObject::createStructure(exec->vm(), this, m_objectPrototype.get())), DontEnum);390 putDirectWithoutTransition( exec->vm(), exec->propertyNames().Math, MathObject::create(exec, this, MathObject::createStructure(exec->vm(), this, m_objectPrototype.get())), DontEnum);387 m_evalFunction.set(vm, this, JSFunction::create(exec, this, 1, vm.propertyNames->eval.string(), globalFuncEval)); 388 putDirectWithoutTransition(vm, vm.propertyNames->eval, m_evalFunction.get(), DontEnum); 389 390 putDirectWithoutTransition(vm, vm.propertyNames->JSON, JSONObject::create(exec, this, JSONObject::createStructure(vm, this, m_objectPrototype.get())), DontEnum); 391 putDirectWithoutTransition(vm, vm.propertyNames->Math, MathObject::create(exec, this, MathObject::createStructure(vm, this, m_objectPrototype.get())), DontEnum); 391 392 392 393 FixedArray<InternalFunction*, NUMBER_OF_TYPED_ARRAY_TYPES> typedArrayConstructors; 393 typedArrayConstructors[toIndex(TypeInt8)] = JSInt8ArrayConstructor::create(this, JSInt8ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt8)].prototype.get(), "Int8Array");394 typedArrayConstructors[toIndex(TypeInt16)] = JSInt16ArrayConstructor::create(this, JSInt16ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt16)].prototype.get(), "Int16Array");395 typedArrayConstructors[toIndex(TypeInt32)] = JSInt32ArrayConstructor::create(this, JSInt32ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt32)].prototype.get(), "Int32Array");396 typedArrayConstructors[toIndex(TypeUint8)] = JSUint8ArrayConstructor::create(this, JSUint8ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint8)].prototype.get(), "Uint8Array");397 typedArrayConstructors[toIndex(TypeUint8Clamped)] = JSUint8ClampedArrayConstructor::create(this, JSUint8ClampedArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint8Clamped)].prototype.get(), "Uint8ClampedArray");398 typedArrayConstructors[toIndex(TypeUint16)] = JSUint16ArrayConstructor::create(this, JSUint16ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint16)].prototype.get(), "Uint16Array");399 typedArrayConstructors[toIndex(TypeUint32)] = JSUint32ArrayConstructor::create(this, JSUint32ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint32)].prototype.get(), "Uint32Array");400 typedArrayConstructors[toIndex(TypeFloat32)] = JSFloat32ArrayConstructor::create(this, JSFloat32ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeFloat32)].prototype.get(), "Float32Array");401 typedArrayConstructors[toIndex(TypeFloat64)] = JSFloat64ArrayConstructor::create(this, JSFloat64ArrayConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeFloat64)].prototype.get(), "Float64Array");402 typedArrayConstructors[toIndex(TypeDataView)] = JSDataViewConstructor::create(this, JSDataViewConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeDataView)].prototype.get(), "DataView");394 typedArrayConstructors[toIndex(TypeInt8)] = JSInt8ArrayConstructor::create(this, JSInt8ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt8)].prototype.get(), "Int8Array"); 395 typedArrayConstructors[toIndex(TypeInt16)] = JSInt16ArrayConstructor::create(this, JSInt16ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt16)].prototype.get(), "Int16Array"); 396 typedArrayConstructors[toIndex(TypeInt32)] = JSInt32ArrayConstructor::create(this, JSInt32ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeInt32)].prototype.get(), "Int32Array"); 397 typedArrayConstructors[toIndex(TypeUint8)] = JSUint8ArrayConstructor::create(this, JSUint8ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint8)].prototype.get(), "Uint8Array"); 398 typedArrayConstructors[toIndex(TypeUint8Clamped)] = JSUint8ClampedArrayConstructor::create(this, JSUint8ClampedArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint8Clamped)].prototype.get(), "Uint8ClampedArray"); 399 typedArrayConstructors[toIndex(TypeUint16)] = JSUint16ArrayConstructor::create(this, JSUint16ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint16)].prototype.get(), "Uint16Array"); 400 typedArrayConstructors[toIndex(TypeUint32)] = JSUint32ArrayConstructor::create(this, JSUint32ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeUint32)].prototype.get(), "Uint32Array"); 401 typedArrayConstructors[toIndex(TypeFloat32)] = JSFloat32ArrayConstructor::create(this, JSFloat32ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeFloat32)].prototype.get(), "Float32Array"); 402 typedArrayConstructors[toIndex(TypeFloat64)] = JSFloat64ArrayConstructor::create(this, JSFloat64ArrayConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeFloat64)].prototype.get(), "Float64Array"); 403 typedArrayConstructors[toIndex(TypeDataView)] = JSDataViewConstructor::create(this, JSDataViewConstructor::createStructure(vm, this, m_functionPrototype.get()), m_typedArrays[toIndex(TypeDataView)].prototype.get(), "DataView"); 403 404 404 405 for (unsigned typedArrayIndex = NUMBER_OF_TYPED_ARRAY_TYPES; typedArrayIndex--;) { 405 m_typedArrays[typedArrayIndex].prototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, typedArrayConstructors[typedArrayIndex], DontEnum);406 putDirectWithoutTransition( exec->vm(), Identifier(exec, typedArrayConstructors[typedArrayIndex]->name(exec)), typedArrayConstructors[typedArrayIndex], DontEnum);406 m_typedArrays[typedArrayIndex].prototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, typedArrayConstructors[typedArrayIndex], DontEnum); 407 putDirectWithoutTransition(vm, Identifier(exec, typedArrayConstructors[typedArrayIndex]->name(exec)), typedArrayConstructors[typedArrayIndex], DontEnum); 407 408 } 408 409 409 410 GlobalPropertyInfo staticGlobals[] = { 410 GlobalPropertyInfo( exec->propertyNames().NaN, jsNaN(), DontEnum | DontDelete | ReadOnly),411 GlobalPropertyInfo( exec->propertyNames().Infinity, jsNumber(std::numeric_limits<double>::infinity()), DontEnum | DontDelete | ReadOnly),412 GlobalPropertyInfo( exec->propertyNames().undefinedKeyword, jsUndefined(), DontEnum | DontDelete | ReadOnly)411 GlobalPropertyInfo(vm.propertyNames->NaN, jsNaN(), DontEnum | DontDelete | ReadOnly), 412 GlobalPropertyInfo(vm.propertyNames->Infinity, jsNumber(std::numeric_limits<double>::infinity()), DontEnum | DontDelete | ReadOnly), 413 GlobalPropertyInfo(vm.propertyNames->undefinedKeyword, jsUndefined(), DontEnum | DontDelete | ReadOnly) 413 414 }; 414 415 addStaticGlobals(staticGlobals, WTF_ARRAY_LENGTH(staticGlobals)); … … 420 421 421 422 if (m_experimentsEnabled) { 422 NamePrototype* privateNamePrototype = NamePrototype::create(exec, NamePrototype::createStructure( exec->vm(), this, m_objectPrototype.get()));423 m_privateNameStructure.set( exec->vm(), this, NameInstance::createStructure(exec->vm(), this, privateNamePrototype));424 425 JSCell* privateNameConstructor = NameConstructor::create(exec, this, NameConstructor::createStructure( exec->vm(), this, m_functionPrototype.get()), privateNamePrototype);426 privateNamePrototype->putDirectWithoutTransition( exec->vm(), exec->propertyNames().constructor, privateNameConstructor, DontEnum);427 putDirectWithoutTransition( exec->vm(), Identifier(exec, "Name"), privateNameConstructor, DontEnum);428 } 429 430 resetPrototype( exec->vm(), prototype);423 NamePrototype* privateNamePrototype = NamePrototype::create(exec, NamePrototype::createStructure(vm, this, m_objectPrototype.get())); 424 m_privateNameStructure.set(vm, this, NameInstance::createStructure(vm, this, privateNamePrototype)); 425 426 JSCell* privateNameConstructor = NameConstructor::create(exec, this, NameConstructor::createStructure(vm, this, m_functionPrototype.get()), privateNamePrototype); 427 privateNamePrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, privateNameConstructor, DontEnum); 428 putDirectWithoutTransition(vm, Identifier(exec, "Name"), privateNameConstructor, DontEnum); 429 } 430 431 resetPrototype(vm, prototype); 431 432 } 432 433 … … 550 551 void JSGlobalObject::createThrowTypeError(ExecState* exec) 551 552 { 553 VM& vm = exec->vm(); 552 554 JSFunction* thrower = JSFunction::create(exec, this, 0, String(), globalFuncThrowTypeError); 553 GetterSetter* getterSetter = GetterSetter::create( exec);554 getterSetter->setGetter( exec->vm(), thrower);555 getterSetter->setSetter( exec->vm(), thrower);556 m_throwTypeErrorGetterSetter.set( exec->vm(), this, getterSetter);555 GetterSetter* getterSetter = GetterSetter::create(vm); 556 getterSetter->setGetter(vm, thrower); 557 getterSetter->setSetter(vm, thrower); 558 m_throwTypeErrorGetterSetter.set(vm, this, getterSetter); 557 559 } 558 560 -
trunk/Source/JavaScriptCore/runtime/JSObject.cpp
r155143 r156521 1633 1633 void JSObject::putIndexedDescriptor(ExecState* exec, SparseArrayEntry* entryInMap, const PropertyDescriptor& descriptor, PropertyDescriptor& oldDescriptor) 1634 1634 { 1635 VM& vm = exec->vm(); 1636 1635 1637 if (descriptor.isDataDescriptor()) { 1636 1638 if (descriptor.value()) 1637 entryInMap->set( exec->vm(), this, descriptor.value());1639 entryInMap->set(vm, this, descriptor.value()); 1638 1640 else if (oldDescriptor.isAccessorDescriptor()) 1639 entryInMap->set( exec->vm(), this, jsUndefined());1641 entryInMap->set(vm, this, jsUndefined()); 1640 1642 entryInMap->attributes = descriptor.attributesOverridingCurrent(oldDescriptor) & ~Accessor; 1641 1643 return; … … 1654 1656 setter = oldDescriptor.setterObject(); 1655 1657 1656 GetterSetter* accessor = GetterSetter::create( exec);1658 GetterSetter* accessor = GetterSetter::create(vm); 1657 1659 if (getter) 1658 accessor->setGetter( exec->vm(), getter);1660 accessor->setGetter(vm, getter); 1659 1661 if (setter) 1660 accessor->setSetter( exec->vm(), setter);1661 1662 entryInMap->set( exec->vm(), this, accessor);1662 accessor->setSetter(vm, setter); 1663 1664 entryInMap->set(vm, this, accessor); 1663 1665 entryInMap->attributes = descriptor.attributesOverridingCurrent(oldDescriptor) & ~ReadOnly; 1664 1666 return; … … 2397 2399 static bool putDescriptor(ExecState* exec, JSObject* target, PropertyName propertyName, const PropertyDescriptor& descriptor, unsigned attributes, const PropertyDescriptor& oldDescriptor) 2398 2400 { 2401 VM& vm = exec->vm(); 2399 2402 if (descriptor.isGenericDescriptor() || descriptor.isDataDescriptor()) { 2400 2403 if (descriptor.isGenericDescriptor() && oldDescriptor.isAccessorDescriptor()) { 2401 GetterSetter* accessor = GetterSetter::create( exec);2404 GetterSetter* accessor = GetterSetter::create(vm); 2402 2405 if (oldDescriptor.getterPresent()) 2403 accessor->setGetter( exec->vm(), oldDescriptor.getterObject());2406 accessor->setGetter(vm, oldDescriptor.getterObject()); 2404 2407 if (oldDescriptor.setterPresent()) 2405 accessor->setSetter( exec->vm(), oldDescriptor.setterObject());2408 accessor->setSetter(vm, oldDescriptor.setterObject()); 2406 2409 target->putDirectAccessor(exec, propertyName, accessor, attributes | Accessor); 2407 2410 return true; … … 2412 2415 else if (oldDescriptor.value()) 2413 2416 newValue = oldDescriptor.value(); 2414 target->putDirect( exec->vm(), propertyName, newValue, attributes & ~Accessor);2417 target->putDirect(vm, propertyName, newValue, attributes & ~Accessor); 2415 2418 if (attributes & ReadOnly) 2416 2419 target->structure()->setContainsReadOnlyProperties(); … … 2418 2421 } 2419 2422 attributes &= ~ReadOnly; 2420 GetterSetter* accessor = GetterSetter::create( exec);2423 GetterSetter* accessor = GetterSetter::create(vm); 2421 2424 2422 2425 if (descriptor.getterPresent()) 2423 accessor->setGetter( exec->vm(), descriptor.getterObject());2426 accessor->setGetter(vm, descriptor.getterObject()); 2424 2427 else if (oldDescriptor.getterPresent()) 2425 accessor->setGetter( exec->vm(), oldDescriptor.getterObject());2428 accessor->setGetter(vm, oldDescriptor.getterObject()); 2426 2429 if (descriptor.setterPresent()) 2427 accessor->setSetter( exec->vm(), descriptor.setterObject());2430 accessor->setSetter(vm, descriptor.setterObject()); 2428 2431 else if (oldDescriptor.setterPresent()) 2429 accessor->setSetter( exec->vm(), oldDescriptor.setterObject());2432 accessor->setSetter(vm, oldDescriptor.setterObject()); 2430 2433 2431 2434 target->putDirectAccessor(exec, propertyName, accessor, attributes | Accessor); -
trunk/Source/JavaScriptCore/runtime/MapPrototype.cpp
r154861 r156521 64 64 JSC_NATIVE_FUNCTION(vm.propertyNames->set, mapProtoFuncSet, DontEnum, 2); 65 65 66 GetterSetter* accessor = GetterSetter::create( exec);66 GetterSetter* accessor = GetterSetter::create(vm); 67 67 JSFunction* function = JSFunction::create(exec, globalObject, 0, vm.propertyNames->size.string(), mapProtoFuncSize); 68 accessor->setGetter( exec->vm(), function);68 accessor->setGetter(vm, function); 69 69 putDirectAccessor(exec, vm.propertyNames->size, accessor, DontEnum | Accessor); 70 70 } -
trunk/Source/JavaScriptCore/runtime/SetPrototype.cpp
r154916 r156521 62 62 JSC_NATIVE_FUNCTION(vm.propertyNames->has, setProtoFuncHas, DontEnum, 1); 63 63 64 GetterSetter* accessor = GetterSetter::create( exec);64 GetterSetter* accessor = GetterSetter::create(vm); 65 65 JSFunction* function = JSFunction::create(exec, globalObject, 0, vm.propertyNames->size.string(), setProtoFuncSize); 66 accessor->setGetter( exec->vm(), function);66 accessor->setGetter(vm, function); 67 67 putDirectAccessor(exec, vm.propertyNames->size, accessor, DontEnum | Accessor); 68 68 }
Note: See TracChangeset
for help on using the changeset viewer.