void JSTestCustomNamedGetterOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSTestCustomNamedGetter* jsTestCustomNamedGetter = jsCast<JSTestCustomNamedGetter*>(handle.get().asCell()); DOMWrapperWorld* world = static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, jsTestCustomNamedGetter->impl(), jsTestCustomNamedGetter); jsTestCustomNamedGetter->releaseImpl(); }
EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* state, JSObject*, EncodedJSValue thisValue, PropertyName) { JSTestCustomNamedGetter* domObject = jsDynamicCast<JSTestCustomNamedGetter*>(JSValue::decode(thisValue)); if (!domObject) return throwVMTypeError(state); return JSValue::encode(JSTestCustomNamedGetter::getConstructor(state->vm(), domObject->globalObject())); }
bool JSTestCustomNamedGetter::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot& slot) { JSTestCustomNamedGetter* thisObject = jsCast<JSTestCustomNamedGetter*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); if (canGetItemsForName(exec, static_cast<TestCustomNamedGetter*>(thisObject->impl()), propertyName)) { slot.setCustom(thisObject, thisObject->nameGetter); return true; } return getStaticValueSlot<JSTestCustomNamedGetter, Base>(exec, &JSTestCustomNamedGetterTable, thisObject, propertyName, slot); }
bool JSTestCustomNamedGetter::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot& slot) { JSTestCustomNamedGetter* thisObject = jsCast<JSTestCustomNamedGetter*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); if (canGetItemsForName(exec, &thisObject->impl(), propertyName)) { slot.setCustom(thisObject, ReadOnly | DontDelete | DontEnum, thisObject->nameGetter); return true; } return getStaticValueSlot<JSTestCustomNamedGetter, Base>(exec, JSTestCustomNamedGetterTable, thisObject, propertyName, slot); }
bool JSTestCustomNamedGetter::getOwnPropertySlotByIndex(JSCell* cell, ExecState* exec, unsigned index, PropertySlot& slot) { JSTestCustomNamedGetter* thisObject = jsCast<JSTestCustomNamedGetter*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); PropertyName propertyName = Identifier::from(exec, index); if (canGetItemsForName(exec, static_cast<TestCustomNamedGetter*>(thisObject->impl()), propertyName)) { slot.setCustom(thisObject, thisObject->nameGetter); return true; } return Base::getOwnPropertySlotByIndex(thisObject, exec, index, slot); }
bool JSTestCustomNamedGetter::getOwnPropertySlotByIndex(JSObject* object, ExecState* exec, unsigned index, PropertySlot& slot) { JSTestCustomNamedGetter* thisObject = jsCast<JSTestCustomNamedGetter*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); PropertyName propertyName = Identifier::from(exec, index); if (canGetItemsForName(exec, &thisObject->impl(), propertyName)) { slot.setCustom(thisObject, ReadOnly | DontDelete | DontEnum, thisObject->nameGetter); return true; } return Base::getOwnPropertySlotByIndex(thisObject, exec, index, slot); }
bool JSTestCustomNamedGetter::getOwnPropertyDescriptor(JSObject* object, ExecState* exec, PropertyName propertyName, PropertyDescriptor& descriptor) { JSTestCustomNamedGetter* thisObject = jsCast<JSTestCustomNamedGetter*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); if (canGetItemsForName(exec, static_cast<TestCustomNamedGetter*>(thisObject->impl()), propertyName)) { PropertySlot slot; slot.setCustom(thisObject, nameGetter); descriptor.setDescriptor(slot.getValue(exec, propertyName), ReadOnly | DontDelete | DontEnum); return true; } return getStaticValueDescriptor<JSTestCustomNamedGetter, Base>(exec, &JSTestCustomNamedGetterTable, thisObject, propertyName, descriptor); }
EncodedJSValue JSC_HOST_CALL jsTestCustomNamedGetterPrototypeFunctionAnotherFunction(ExecState* exec) { JSValue thisValue = exec->hostThisValue(); if (!thisValue.inherits(&JSTestCustomNamedGetter::s_info)) return throwVMTypeError(exec); JSTestCustomNamedGetter* castedThis = jsCast<JSTestCustomNamedGetter*>(asObject(thisValue)); ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestCustomNamedGetter::s_info); TestCustomNamedGetter* impl = static_cast<TestCustomNamedGetter*>(castedThis->impl()); if (exec->argumentCount() < 1) return throwVMError(exec, createNotEnoughArgumentsError(exec)); const String& str(exec->argument(0).isEmpty() ? String() : exec->argument(0).toString(exec)->value(exec)); if (exec->hadException()) return JSValue::encode(jsUndefined()); impl->anotherFunction(str); return JSValue::encode(jsUndefined()); }
EncodedJSValue JSC_HOST_CALL jsTestCustomNamedGetterPrototypeFunctionAnotherFunction(ExecState* state) { JSValue thisValue = state->thisValue(); JSTestCustomNamedGetter* castedThis = jsDynamicCast<JSTestCustomNamedGetter*>(thisValue); if (UNLIKELY(!castedThis)) return throwThisTypeError(*state, "TestCustomNamedGetter", "anotherFunction"); ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestCustomNamedGetter::info()); auto& impl = castedThis->impl(); if (UNLIKELY(state->argumentCount() < 1)) return throwVMError(state, createNotEnoughArgumentsError(state)); String str = state->argument(0).toString(state)->value(state); if (UNLIKELY(state->hadException())) return JSValue::encode(jsUndefined()); impl.anotherFunction(str); return JSValue::encode(jsUndefined()); }
JSValue jsTestCustomNamedGetterConstructor(ExecState* exec, JSValue slotBase, PropertyName) { JSTestCustomNamedGetter* domObject = jsCast<JSTestCustomNamedGetter*>(asObject(slotBase)); return JSTestCustomNamedGetter::getConstructor(exec, domObject->globalObject()); }