EncodedJSValue jsTestNondeterministicNondeterministicSetterExceptionAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName) { UNUSED_PARAM(exec); UNUSED_PARAM(slotBase); UNUSED_PARAM(thisValue); JSTestNondeterministic* castedThis = jsDynamicCast<JSTestNondeterministic*>(JSValue::decode(thisValue)); if (UNLIKELY(!castedThis)) { if (jsDynamicCast<JSTestNondeterministicPrototype*>(slotBase)) return reportDeprecatedGetterError(*exec, "TestNondeterministic", "nondeterministicSetterExceptionAttr"); return throwGetterTypeError(*exec, "TestNondeterministic", "nondeterministicSetterExceptionAttr"); } #if ENABLE(WEB_REPLAY) JSGlobalObject* globalObject = exec->lexicalGlobalObject(); InputCursor& cursor = globalObject->inputCursor(); static NeverDestroyed<const AtomicString> bindingName("TestNondeterministic.nondeterministicSetterExceptionAttr", AtomicString::ConstructFromLiteral); if (cursor.isCapturing()) { String memoizedResult = castedThis->impl().nondeterministicSetterExceptionAttr(); cursor.appendInput<MemoizedDOMResult<String>>(bindingName.get().string(), memoizedResult, 0); JSValue result = jsStringWithCache(exec, memoizedResult); return JSValue::encode(result); } if (cursor.isReplaying()) { String memoizedResult; MemoizedDOMResultBase* input = cursor.fetchInput<MemoizedDOMResultBase>(); if (input && input->convertTo<String>(memoizedResult)) { JSValue result = jsStringWithCache(exec, memoizedResult); return JSValue::encode(result); } } #endif TestNondeterministic& impl = castedThis->impl(); JSValue result = jsStringWithCache(exec, impl.nondeterministicSetterExceptionAttr()); return JSValue::encode(result); }
void JSTestNondeterministicOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSTestNondeterministic* jsTestNondeterministic = jsCast<JSTestNondeterministic*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestNondeterministic->impl(), jsTestNondeterministic); jsTestNondeterministic->releaseImpl(); }
EncodedJSValue JSC_HOST_CALL jsTestNondeterministicPrototypeFunctionNondeterministicZeroArgFunction(ExecState* exec) { JSValue thisValue = exec->thisValue(); JSTestNondeterministic* castedThis = jsDynamicCast<JSTestNondeterministic*>(thisValue); if (UNLIKELY(!castedThis)) return throwThisTypeError(*exec, "TestNondeterministic", "nondeterministicZeroArgFunction"); ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestNondeterministic::info()); TestNondeterministic& impl = castedThis->impl(); JSValue result; #if ENABLE(WEB_REPLAY) InputCursor& cursor = exec->lexicalGlobalObject()->inputCursor(); static NeverDestroyed<const AtomicString> bindingName("TestNondeterministic.nondeterministicZeroArgFunction", AtomicString::ConstructFromLiteral); if (cursor.isCapturing()) { bool memoizedResult = impl.nondeterministicZeroArgFunction(); cursor.appendInput<MemoizedDOMResult<bool>>(bindingName.get().string(), memoizedResult, 0); result = jsBoolean(memoizedResult); } else if (cursor.isReplaying()) { MemoizedDOMResultBase* input = cursor.fetchInput<MemoizedDOMResultBase>(); bool memoizedResult; if (input && input->convertTo<bool>(memoizedResult)) { result = jsBoolean(memoizedResult); } else result = jsBoolean(impl.nondeterministicZeroArgFunction()); } else result = jsBoolean(impl.nondeterministicZeroArgFunction()); #else result = jsBoolean(impl.nondeterministicZeroArgFunction()); #endif return JSValue::encode(result); }
void setJSTestNondeterministicNondeterministicGetterExceptionAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue) { JSValue value = JSValue::decode(encodedValue); UNUSED_PARAM(baseObject); JSTestNondeterministic* castedThis = jsDynamicCast<JSTestNondeterministic*>(JSValue::decode(thisValue)); if (UNLIKELY(!castedThis)) { if (jsDynamicCast<JSTestNondeterministicPrototype*>(JSValue::decode(thisValue))) reportDeprecatedSetterError(*exec, "TestNondeterministic", "nondeterministicGetterExceptionAttr"); else throwSetterTypeError(*exec, "TestNondeterministic", "nondeterministicGetterExceptionAttr"); return; } TestNondeterministic& impl = castedThis->impl(); const String& nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec)); if (UNLIKELY(exec->hadException())) return; impl.setNondeterministicGetterExceptionAttr(nativeValue); }
void setJSTestNondeterministicNondeterministicExceptionAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue) { JSValue value = JSValue::decode(encodedValue); UNUSED_PARAM(baseObject); JSTestNondeterministic* castedThis = jsDynamicCast<JSTestNondeterministic*>(JSValue::decode(thisValue)); if (UNLIKELY(!castedThis)) { if (jsDynamicCast<JSTestNondeterministicPrototype*>(JSValue::decode(thisValue))) reportDeprecatedSetterError(*state, "TestNondeterministic", "nondeterministicExceptionAttr"); else throwSetterTypeError(*state, "TestNondeterministic", "nondeterministicExceptionAttr"); return; } auto& impl = castedThis->impl(); String nativeValue = value.toString(state)->value(state); if (UNLIKELY(state->hadException())) return; impl.setNondeterministicExceptionAttr(nativeValue); }