EncodedJSValue JSC_HOST_CALL regExpProtoFuncToString(ExecState* exec) { JSValue thisValue = exec->thisValue(); if (!thisValue.isObject()) return throwVMTypeError(exec); JSObject* thisObject = asObject(thisValue); StringRecursionChecker checker(exec, thisObject); if (JSValue earlyReturnValue = checker.earlyReturnValue()) return JSValue::encode(earlyReturnValue); JSValue sourceValue = thisObject->get(exec, exec->propertyNames().source); if (exec->hadException()) return JSValue::encode(jsUndefined()); String source = sourceValue.toString(exec)->value(exec); if (exec->hadException()) return JSValue::encode(jsUndefined()); auto flags = flagsString(exec, thisObject); if (exec->hadException()) return JSValue::encode(jsUndefined()); return JSValue::encode(jsMakeNontrivialString(exec, '/', source, '/', flags.data())); }
EncodedJSValue JSC_HOST_CALL regExpProtoGetterFlags(ExecState* exec) { JSValue thisValue = exec->thisValue(); if (!thisValue.isObject()) return throwVMTypeError(exec); auto flags = flagsString(exec, asObject(thisValue)); if (exec->hadException()) return JSValue::encode(jsUndefined()); return JSValue::encode(jsString(exec, flags.data())); }