EncodedJSValue JSC_HOST_CALL jsTestNondeterministicPrototypeFunctionNondeterministicZeroArgFunction(ExecState* state) { JSValue thisValue = state->thisValue(); JSTestNondeterministic* castedThis = jsDynamicCast<JSTestNondeterministic*>(thisValue); if (UNLIKELY(!castedThis)) return throwThisTypeError(*state, "TestNondeterministic", "nondeterministicZeroArgFunction"); ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestNondeterministic::info()); auto& impl = castedThis->wrapped(); JSValue result; #if ENABLE(WEB_REPLAY) InputCursor& cursor = state->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); }
bool setJSTestNondeterministicNondeterministicGetterExceptionAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) { JSValue value = JSValue::decode(encodedValue); UNUSED_PARAM(thisValue); JSTestNondeterministic* castedThis = jsDynamicCast<JSTestNondeterministic*>(JSValue::decode(thisValue)); if (UNLIKELY(!castedThis)) { return throwSetterTypeError(*state, "TestNondeterministic", "nondeterministicGetterExceptionAttr"); } auto& impl = castedThis->wrapped(); String nativeValue = value.toString(state)->value(state); if (UNLIKELY(state->hadException())) return false; impl.setNondeterministicGetterExceptionAttr(nativeValue); return true; }