diff options
Diffstat (limited to 'src')
63 files changed, 4 insertions, 2616 deletions
diff --git a/src/bun.js/bindings/OnigurumaRegExp.cpp b/src/bun.js/bindings/OnigurumaRegExp.cpp deleted file mode 100644 index 446a576e8..000000000 --- a/src/bun.js/bindings/OnigurumaRegExp.cpp +++ /dev/null @@ -1,903 +0,0 @@ -#include "OnigurumaRegExp.h" - -#include "ZigGlobalObject.h" -#define ONIG_ESCAPE_UCHAR_COLLISION -#include "oniguruma/src/oniguruma.h" - -using namespace JSC; -using namespace WebCore; - -#include "WebCoreJSClientData.h" - -extern "C" EncodedJSValue jsFunctionGetOnigurumaRegExpConstructor(JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, PropertyName attributeName) -{ - auto& vm = lexicalGlobalObject->vm(); - Zig::GlobalObject* globalObject = reinterpret_cast<Zig::GlobalObject*>(lexicalGlobalObject); - return JSValue::encode(globalObject->OnigurumaRegExpConstructor()); -} - -namespace Zig { - -static WTF::String to16Bit(ASCIILiteral str) -{ - UChar* buffer = nullptr; - auto out = WTF::StringImpl::createUninitialized(str.length(), buffer); - WTF::StringImpl::copyCharacters(buffer, str.characters8(), str.length()); - return WTF::String(WTFMove(out)); -} - -static WTF::String to16Bit(JSC::JSString* str, JSC::JSGlobalObject* globalObject) -{ - if (!str->is8Bit() || str->length() == 0) { - return str->value(globalObject); - } - - auto value = str->value(globalObject); - auto outStr = WTF::String(value.characters8(), value.length()); - outStr.convertTo16Bit(); - return outStr; -} - -static WTF::String to16Bit(WTF::String str) -{ - if (str.is8Bit()) { - auto out = str.isolatedCopy(); - out.convertTo16Bit(); - return out; - } - - return str; -} - -static WTF::String to16Bit(JSValue jsValue, JSC::JSGlobalObject* globalObject, ASCIILiteral defaultValue) -{ - if (!jsValue || jsValue.isUndefinedOrNull()) { - return to16Bit(defaultValue); - } - - auto* jsString = jsValue.toString(globalObject); - if (jsString->length() == 0) { - return to16Bit(defaultValue); - } - - return to16Bit(jsString, globalObject); -} - -static WTF::String convertToOnigurumaSyntax(const WTF::String& string) -{ - WTF::StringBuilder sb; - uint32_t length = string.length(); - const UChar* characters = string.characters16(); - bool inCharacterClass = false; - bool inCharacterProperty = false; - - for (int i = 0; i < length; i++) { - - // extend multibyte hex characters - while (characters[i] == '\\') { - if (i + 1 < length && characters[i + 1] == 'x') { - if (i + 2 < length && isxdigit(characters[i + 2])) { - if (i + 3 < length && isxdigit(characters[i + 3])) { - sb.append(string.substring(i, 4)); - sb.append("\\x00"_s); - i += 4; - } else { - // skip '\' - sb.append(string.substring(i + 1, 2)); - i += 3; - } - } else { - break; - } - } else { - break; - } - } - - if (i >= length) { - break; - } - - // convert character properties - if (UNLIKELY(characters[i] == '{' && i - 2 >= 0 && (characters[i - 1] == 'p' || characters[i - 1] == 'P') && characters[i - 2] == '\\')) { - sb.append(characters[i]); - i += 1; - if (i == length) { - break; - } - - // handle negative - if (characters[i] == '^') { - sb.append(characters[i]); - i += 1; - if (i == length) { - break; - } - } - - // could be \p{propName=propValue} or \p{propValue}. - bool foundEquals = false; - WTF::StringBuilder propName; - while (characters[i] != '}') { - if (characters[i] == '=') { - foundEquals = true; - i += 1; - if (i == length) { - break; - } - continue; - } - - if (foundEquals) { - sb.append(characters[i]); - } else { - propName.append(characters[i]); - } - - i += 1; - if (i == length) { - break; - } - } - - if (!foundEquals) { - sb.append(propName.toString()); - } - } - - if (i >= length) { - break; - } - - // escape brackets in character classes - if (inCharacterClass) { - // we know ']' will be escaped so there isn't a need to scan for the closing bracket - if (characters[i] == '[' || characters[i] == ']') { - if (characters[i - 1] != '\\') { - // character class intersections not supported, assume end of character class - if (characters[i] == ']') { - inCharacterClass = false; - } else { - sb.append('\\'); - } - } - } - } else { - if (characters[i] == '[') { - if (i - 1 >= 0) { - if (characters[i - 1] != '\\') { - inCharacterClass = true; - } - } else { - inCharacterClass = true; - } - } - } - - sb.append(characters[i]); - } - - return to16Bit(sb.toString()); -} - -static inline bool is16BitLineTerminator(UChar c) -{ - return c == '\r' || c == '\n' || (c & ~1) == 0x2028; -} - -static inline WTF::String escapedPattern(const WTF::String& pattern, const UChar* characters, size_t length) -{ - bool previousCharacterWasBackslash = false; - bool inBrackets = false; - bool shouldEscape = false; - - // 15.10.6.4 specifies that RegExp.prototype.toString must return '/' + source + '/', - // and also states that the result must be a valid RegularExpressionLiteral. '//' is - // not a valid RegularExpressionLiteral (since it is a single line comment), and hence - // source cannot ever validly be "". If the source is empty, return a different Pattern - // that would match the same thing. - if (!length) - return "(?:)"_s; - - // early return for strings that don't contain a forwards slash and LineTerminator - for (unsigned i = 0; i < length; ++i) { - UChar ch = characters[i]; - if (!previousCharacterWasBackslash) { - if (inBrackets) { - if (ch == ']') - inBrackets = false; - } else { - if (ch == '/') { - shouldEscape = true; - break; - } - if (ch == '[') - inBrackets = true; - } - } - - if (is16BitLineTerminator(ch)) { - shouldEscape = true; - break; - } - - if (previousCharacterWasBackslash) - previousCharacterWasBackslash = false; - else - previousCharacterWasBackslash = ch == '\\'; - } - - if (!shouldEscape) - return pattern; - - previousCharacterWasBackslash = false; - inBrackets = false; - StringBuilder result; - for (unsigned i = 0; i < length; ++i) { - UChar ch = characters[i]; - if (!previousCharacterWasBackslash) { - if (inBrackets) { - if (ch == ']') - inBrackets = false; - } else { - if (ch == '/') - result.append('\\'); - else if (ch == '[') - inBrackets = true; - } - } - - // escape LineTerminator - if (is16BitLineTerminator(ch)) { - if (!previousCharacterWasBackslash) { - result.append('\\'); - } - - if (ch == '\n') { - result.append('n'); - } else if (ch == '\r') { - result.append('r'); - } else if (ch == 0x2028) { - result.append("u2028"); - } else { - result.append("u2029"); - } - } else - result.append(ch); - - if (previousCharacterWasBackslash) - previousCharacterWasBackslash = false; - else - previousCharacterWasBackslash = ch == '\\'; - } - - return result.toString(); -} - -WTF::String sortRegExpFlags(WTF::String flagsString) -{ - WTF::Vector<UChar> flags = { 'd', 'g', 'i', 'm', 's', 'u', 'y' }; - WTF::StringBuilder result; - - for (auto flag : flags) { - if (flagsString.contains(flag)) { - result.append(flag); - } - } - - return result.toString(); -} - -bool validateRegExpFlags(WTF::StringView flags) -{ - std::map<char16_t, bool> flagsAllowed = { { 'g', false }, { 'i', false }, { 'm', false }, { 's', false }, { 'u', false }, { 'y', false }, { 'd', false } }; - for (auto flag : flags.codeUnits()) { - auto flagItr = flagsAllowed.find(flag); - if (flagItr == flagsAllowed.end() || flagItr->second) { - return false; - } - flagItr->second = true; - } - - return true; -} - -std::once_flag onigurumaEncodingInitFlag; - -static regex_t* createOnigurumaRegExp(JSGlobalObject* globalObject, const WTF::String& patternString, const WTF::String& flagsString, int& errorCode, OnigErrorInfo& errorInfo) -{ - auto& vm = globalObject->vm(); - auto throwScope = DECLARE_THROW_SCOPE(vm); - - OnigEncoding encodings[] = { - ONIG_ENCODING_UTF16_LE, - }; - std::call_once(onigurumaEncodingInitFlag, [&encodings]() { - onig_initialize(encodings, 1); - }); - - OnigOptionType options = 0; - if (flagsString.contains('i')) { - options |= ONIG_OPTION_IGNORECASE; - } - if (flagsString.contains('m')) { - options |= ONIG_OPTION_MULTILINE; - } else { - options |= ONIG_OPTION_SINGLELINE; - } - if (flagsString.contains('s')) { - options |= ONIG_OPTION_MULTILINE; - } - - OnigSyntaxType* syntax = ONIG_SYNTAX_ONIGURUMA; - OnigEncodingType* encoding = encodings[0]; - regex_t* onigRegExp = NULL; - - errorCode = onig_new( - &onigRegExp, - reinterpret_cast<const OnigUChar*>(patternString.characters16()), - reinterpret_cast<const OnigUChar*>(patternString.characters16() + patternString.length()), - options, - encoding, - syntax, - &errorInfo); - - return onigRegExp; -} - -class OnigurumaRegExpPrototype final : public JSC::JSNonFinalObject { -public: - using Base = JSC::JSNonFinalObject; - - static OnigurumaRegExpPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) - { - OnigurumaRegExpPrototype* ptr = new (NotNull, JSC::allocateCell<OnigurumaRegExpPrototype>(vm)) OnigurumaRegExpPrototype(vm, globalObject, structure); - ptr->finishCreation(vm, globalObject); - return ptr; - } - - DECLARE_INFO; - template<typename CellType, JSC::SubspaceAccess> - static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) - { - return &vm.plainObjectSpace(); - } - static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) - { - return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); - } - -private: - OnigurumaRegExpPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) - : Base(vm, structure) - { - } - - void finishCreation(JSC::VM&, JSC::JSGlobalObject*); -}; - -const ClassInfo OnigurumaRegExpConstructor::s_info = { "Function"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(OnigurumaRegExpConstructor) }; -const ClassInfo OnigurumaRegExpPrototype::s_info = { "Object"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(OnigurumaRegExpPrototype) }; -const ClassInfo OnigurumaRegEx::s_info = { "RegExp"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(OnigurumaRegEx) }; - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterGlobal, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - return JSValue::encode(jsBoolean(thisValue->flagsString().contains('g'))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterDotAll, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - return JSValue::encode(jsBoolean(thisValue->flagsString().contains('s'))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterHasIndices, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - return JSValue::encode(jsBoolean(thisValue->flagsString().contains('d'))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterIgnoreCase, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - return JSValue::encode(jsBoolean(thisValue->flagsString().contains('i'))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterMultiline, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - return JSValue::encode(jsBoolean(thisValue->flagsString().contains('m'))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterSticky, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - - return JSValue::encode(jsBoolean(thisValue->flagsString().contains('y'))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterUnicode, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - return JSValue::encode(jsBoolean(thisValue->flagsString().contains('u'))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterSource, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (!thisValue) - return JSValue::encode(jsUndefined()); - - return JSValue::encode(jsString(globalObject->vm(), escapedPattern(thisValue->patternString(), thisValue->patternString().characters16(), thisValue->patternString().length()))); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterFlags, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (!thisValue) - return JSValue::encode(jsUndefined()); - - return JSValue::encode(jsString(globalObject->vm(), thisValue->flagsString())); -} - -JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterLastIndex, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - return JSValue::encode(jsNumber(thisValue->m_lastIndex)); -} - -JSC_DEFINE_CUSTOM_SETTER(onigurumaRegExpProtoSetterLastIndex, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, EncodedJSValue encodedValue, PropertyName)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis)); - if (UNLIKELY(!thisValue)) { - return JSValue::encode(jsUndefined()); - } - auto throwScope = DECLARE_THROW_SCOPE(globalObject->vm()); - JSValue value = JSValue::decode(encodedValue); - if (!value.isAnyInt()) { - throwException(globalObject, throwScope, createTypeError(globalObject, "lastIndex must be an integer"_s)); - return false; - } - int32_t lastIndex = value.toInt32(globalObject); - thisValue->m_lastIndex = lastIndex; - return true; -} - -// compile is deprecated -JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncCompile, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - VM& vm = globalObject->vm(); - auto scope = DECLARE_CATCH_SCOPE(vm); - auto throwScope = DECLARE_THROW_SCOPE(vm); - - JSValue thisValue = callFrame->thisValue(); - auto* thisRegExp = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue()); - if (UNLIKELY(!thisRegExp)) - return JSValue::encode(jsUndefined()); - - if (thisRegExp->globalObject() != globalObject) { - throwScope.throwException(globalObject, createTypeError(globalObject, makeString("RegExp.prototype.compile function's Realm must be the same to |this| RegExp object"_s))); - return JSValue::encode({}); - } - - JSValue arg0 = callFrame->argument(0); - JSValue arg1 = callFrame->argument(1); - - WTF::String patternStringExtended; - if (auto* regExpObject = jsDynamicCast<OnigurumaRegEx*>(arg0)) { - if (!arg1.isUndefined()) { - throwScope.throwException(globalObject, createTypeError(globalObject, makeString("Cannot supply flags when constructing one RegExp from another."_s))); - return JSValue::encode({}); - } - thisRegExp->setPatternString(regExpObject->patternString()); - patternStringExtended = convertToOnigurumaSyntax(thisRegExp->patternString()); - thisRegExp->setFlagsString(regExpObject->flagsString()); - } else { - WTF::String newPatternString = to16Bit(arg0, globalObject, "(?:)"_s); - RETURN_IF_EXCEPTION(scope, {}); - - patternStringExtended = convertToOnigurumaSyntax(newPatternString); - - WTF::String newFlagsString = to16Bit(arg1, globalObject, ""_s); - RETURN_IF_EXCEPTION(scope, {}); - - if (!validateRegExpFlags(newFlagsString)) { - throwScope.throwException(globalObject, createSyntaxError(globalObject, makeString("Invalid flags supplied to RegExp constructor."_s))); - return JSValue::encode({}); - } - - newFlagsString = sortRegExpFlags(newFlagsString); - - thisRegExp->setPatternString(newPatternString); - thisRegExp->setFlagsString(newFlagsString); - } - - // for pattern syntax checking - int errorCode = 0; - OnigErrorInfo errorInfo = { 0 }; - regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(thisRegExp->patternString()), thisRegExp->flagsString(), errorCode, errorInfo); - if (errorCode != ONIG_NORMAL) { - OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 }; - int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo); - WTF::StringBuilder errorMessage; - errorMessage.append("Invalid regular expression: "_s); - if (length < 0) { - errorMessage.append("An unknown error occurred."_s); - } else { - errorMessage.appendCharacters(errorBuff, length); - } - if (onigurumaRegExp != nullptr) { - onig_free(onigurumaRegExp); - } - throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString())); - return JSValue::encode({}); - } - onig_free(onigurumaRegExp); - - thisRegExp->m_lastIndex = 0; - - return JSValue::encode(thisRegExp); -} - -JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncTest, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - auto& vm = globalObject->vm(); - auto scope = DECLARE_THROW_SCOPE(vm); - auto throwScope = DECLARE_THROW_SCOPE(vm); - - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue()); - if (!thisValue) - return JSValue::encode(jsUndefined()); - - JSValue arg = callFrame->argument(0); - if (!arg.isString()) { - scope.throwException(globalObject, createTypeError(globalObject, "Argument 0 of RegExp.prototype.test must be a string"_s)); - return JSValue::encode(jsBoolean(false)); - } - - WTF::String string = to16Bit(arg, globalObject, ""_s); - RETURN_IF_EXCEPTION(scope, JSValue::encode({})); - - int errorCode = 0; - OnigErrorInfo errorInfo = { 0 }; - regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(thisValue->patternString()), thisValue->flagsString(), errorCode, errorInfo); - if (errorCode != ONIG_NORMAL) { - OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 }; - int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo); - WTF::StringBuilder errorMessage; - errorMessage.append("Invalid regular expression: "_s); - if (length < 0) { - errorMessage.append("An unknown error occurred."_s); - } else { - errorMessage.appendCharacters(errorBuff, length); - } - if (onigurumaRegExp != nullptr) { - onig_free(onigurumaRegExp); - } - throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString())); - return JSValue::encode({}); - } - - OnigRegion* region = onig_region_new(); - - const OnigUChar* end = reinterpret_cast<const OnigUChar*>(string.characters16() + string.length()); - const OnigUChar* start = reinterpret_cast<const OnigUChar*>(string.characters16() + thisValue->m_lastIndex); - const OnigUChar* range = end; - - if (thisValue->m_lastIndex >= string.length()) { - onig_region_free(region, 1); - onig_free(onigurumaRegExp); - thisValue->m_lastIndex = 0; - return JSValue::encode(jsBoolean(false)); - } - - int result = onig_search( - onigurumaRegExp, - reinterpret_cast<const OnigUChar*>(string.characters16()), - end, - start, - range, - region, - ONIG_OPTION_DEFAULT); - - if (result < 0) { - thisValue->m_lastIndex = 0; - onig_region_free(region, 1); - onig_free(onigurumaRegExp); - return JSValue::encode(jsBoolean(false)); - } - - if (thisValue->flagsString().contains('y') && region->beg[0] != thisValue->m_lastIndex) { - onig_region_free(region, 1); - onig_free(onigurumaRegExp); - return JSValue::encode(jsBoolean(false)); - } - - if (thisValue->flagsString().contains('g')) { - thisValue->m_lastIndex = region->end[0] / 2; - } else { - thisValue->m_lastIndex = 0; - } - - onig_region_free(region, 1); - onig_free(onigurumaRegExp); - - return JSValue::encode(jsBoolean(true)); -} - -JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncExec, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - auto& vm = globalObject->vm(); - auto scope = DECLARE_THROW_SCOPE(vm); - auto throwScope = DECLARE_THROW_SCOPE(vm); - - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue()); - if (!thisValue) - return JSValue::encode(jsUndefined()); - - JSValue arg = callFrame->argument(0); - if (!arg || arg.isUndefinedOrNull()) { - thisValue->m_lastIndex = 0; - return JSValue::encode(jsNull()); - } - - WTF::String string = to16Bit(arg, globalObject, ""_s); - RETURN_IF_EXCEPTION(scope, JSValue::encode({})); - - int errorCode = 0; - OnigErrorInfo errorInfo = { 0 }; - regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(thisValue->patternString()), thisValue->flagsString(), errorCode, errorInfo); - if (errorCode != ONIG_NORMAL) { - OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 }; - int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo); - WTF::StringBuilder errorMessage; - errorMessage.append("Invalid regular expression: "_s); - if (length < 0) { - errorMessage.append("An unknown error occurred."_s); - } else { - errorMessage.appendCharacters(errorBuff, length); - } - if (onigurumaRegExp != nullptr) { - onig_free(onigurumaRegExp); - } - throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString())); - return JSValue::encode({}); - } - - OnigRegion* region = onig_region_new(); - - const OnigUChar* end = reinterpret_cast<const OnigUChar*>(string.characters16() + string.length()); - const OnigUChar* start = reinterpret_cast<const OnigUChar*>(string.characters16() + thisValue->m_lastIndex); - const OnigUChar* range = end; - - int result = onig_search( - onigurumaRegExp, - reinterpret_cast<const OnigUChar*>(string.characters16()), - end, - start, - range, - region, - ONIG_OPTION_DEFAULT); - - if (result < 0) { - onig_region_free(region, 1); - onig_free(onigurumaRegExp); - thisValue->m_lastIndex = 0; - return JSValue::encode(jsNull()); - } - - JSArray* array = constructEmptyArray(globalObject, nullptr, 0); - RETURN_IF_EXCEPTION(scope, JSValue::encode({})); - JSArray* indicesArray = constructEmptyArray(globalObject, nullptr, 0); - RETURN_IF_EXCEPTION(scope, JSValue::encode({})); - - array->putDirect(vm, vm.propertyNames->index, jsNumber(region->beg[0] / 2)); - array->putDirect(vm, vm.propertyNames->input, jsString(vm, string)); - array->putDirect(vm, vm.propertyNames->groups, jsUndefined()); - - for (int i = 0; i < region->num_regs; i++) { - size_t outStringLen = (region->end[i] / 2) - (region->beg[i] / 2); - UChar* ptr; - WTF::String outString; - if (outStringLen > 0) { - outString = WTF::String::createUninitialized(static_cast<unsigned int>(outStringLen), ptr); - if (UNLIKELY(!ptr)) { - throwOutOfMemoryError(globalObject, scope); - onig_region_free(region, 1); - onig_free(onigurumaRegExp); - return JSValue::encode(jsNull()); - } - - memcpy(ptr, (region->beg[i] / 2) + string.characters16(), outStringLen * sizeof(UChar)); - } - - array->putDirectIndex(globalObject, i, jsString(vm, outString)); - - JSArray* indices = constructEmptyArray(globalObject, nullptr, 0); - RETURN_IF_EXCEPTION(scope, JSValue::encode({})); - indices->putDirectIndex(globalObject, 0, jsNumber(region->beg[i] / 2)); - indices->putDirectIndex(globalObject, 1, jsNumber(region->end[i] / 2)); - indicesArray->putDirectIndex(globalObject, i, indices); - } - - if (thisValue->flagsString().contains('d')) { - array->putDirect(vm, vm.propertyNames->indices, indicesArray); - } - - if (thisValue->flagsString().contains('g')) { - thisValue->m_lastIndex = region->end[0] / 2; - } else { - thisValue->m_lastIndex = 0; - } - - onig_region_free(region, 1); - onig_free(onigurumaRegExp); - - return JSValue::encode(array); -} - -JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncToString, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue()); - if (!thisValue) - return JSValue::encode(jsUndefined()); - - WTF::String patternString = escapedPattern(thisValue->patternString(), thisValue->patternString().characters16(), thisValue->patternString().length()); - WTF::String flagsString = thisValue->flagsString(); - - WTF::StringBuilder source; - source.append("/"_s); - source.append(patternString); - source.append("/"_s); - source.append(flagsString); - - return JSValue::encode(jsString(globalObject->vm(), source.toString())); -} - -void OnigurumaRegExpPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject) -{ - Base::finishCreation(vm); - ASSERT(inherits(info())); - this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->compile), 2, onigurumaRegExpProtoFuncCompile, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0)); - this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->exec), 1, onigurumaRegExpProtoFuncExec, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0)); - this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->toString), 0, onigurumaRegExpProtoFuncToString, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0)); - this->putDirectCustomAccessor(vm, vm.propertyNames->global, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterGlobal, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->dotAll, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterDotAll, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->hasIndices, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterHasIndices, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->ignoreCase, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterIgnoreCase, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->multiline, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterMultiline, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->sticky, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterSticky, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->unicode, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterUnicode, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->source, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterSource, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->flags, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterFlags, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly); - this->putDirectCustomAccessor(vm, vm.propertyNames->lastIndex, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterLastIndex, onigurumaRegExpProtoSetterLastIndex), 0 | PropertyAttribute::CustomAccessor); - - this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->test), 1, onigurumaRegExpProtoFuncTest, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0)); - - this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->matchSymbol, onigurumaRegExpPrototypeMatchCodeGenerator(vm), static_cast<unsigned>(0)); - this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->matchAllSymbol, onigurumaRegExpPrototypeMatchAllCodeGenerator(vm), static_cast<unsigned>(0)); - this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->replaceSymbol, onigurumaRegExpPrototypeReplaceCodeGenerator(vm), static_cast<unsigned>(0)); - this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->searchSymbol, onigurumaRegExpPrototypeSearchCodeGenerator(vm), static_cast<unsigned>(0)); - this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->splitSymbol, onigurumaRegExpPrototypeSplitCodeGenerator(vm), static_cast<unsigned>(0)); -} - -JSC::Structure* OnigurumaRegExpConstructor::createClassStructure(JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) -{ - JSC::VM& vm = globalObject->vm(); - return OnigurumaRegEx::createStructure( - vm, - globalObject, - prototype); -} -JSC::JSObject* OnigurumaRegExpConstructor::createPrototype(JSC::JSGlobalObject* globalObject) -{ - return OnigurumaRegExpPrototype::create(globalObject->vm(), globalObject, OnigurumaRegExpPrototype::createStructure(globalObject->vm(), globalObject, globalObject->objectPrototype())); -} - -void OnigurumaRegExpConstructor::finishCreation(VM& vm, JSValue prototype) -{ - - Base::finishCreation(vm, 0, "RegExp"_s, PropertyAdditionMode::WithoutStructureTransition); - putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); - ASSERT(inherits(info())); -} - -OnigurumaRegExpConstructor* OnigurumaRegExpConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSValue prototype) -{ - OnigurumaRegExpConstructor* ptr = new (NotNull, JSC::allocateCell<OnigurumaRegExpConstructor>(vm)) OnigurumaRegExpConstructor(vm, structure, construct); - ptr->finishCreation(vm, prototype); - return ptr; -} - -static JSC::EncodedJSValue constructOrCall(Zig::GlobalObject* globalObject, JSValue arg0, JSValue arg1) -{ - auto& vm = globalObject->vm(); - auto scope = DECLARE_CATCH_SCOPE(vm); - auto throwScope = DECLARE_THROW_SCOPE(vm); - - WTF::String patternString = to16Bit(arg0, globalObject, "(?:)"_s); - RETURN_IF_EXCEPTION(scope, {}); - - WTF::String flagsString = to16Bit(arg1, globalObject, ""_s); - RETURN_IF_EXCEPTION(scope, {}); - - if (!validateRegExpFlags(flagsString)) { - throwScope.throwException(globalObject, createSyntaxError(globalObject, makeString("Invalid flags supplied to RegExp constructor."_s))); - return JSValue::encode({}); - } - - flagsString = sortRegExpFlags(flagsString); - - // create for pattern compilation errors, but need to create another for each exec/test - int errorCode = 0; - OnigErrorInfo errorInfo = { 0 }; - regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(patternString), flagsString, errorCode, errorInfo); - if (errorCode != ONIG_NORMAL) { - OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 }; - int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo); - WTF::StringBuilder errorMessage; - errorMessage.append("Invalid regular expression: "_s); - if (length < 0) { - errorMessage.append("An unknown error occurred."_s); - } else { - errorMessage.appendCharacters(errorBuff, length); - } - throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString())); - return JSValue::encode({}); - } - onig_free(onigurumaRegExp); - - OnigurumaRegEx* result = OnigurumaRegEx::create(globalObject, WTFMove(patternString), WTFMove(flagsString)); - - return JSValue::encode(result); -} - -JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES OnigurumaRegExpConstructor::construct(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame) -{ - Zig::GlobalObject* globalObject = reinterpret_cast<Zig::GlobalObject*>(lexicalGlobalObject); - JSC::VM& vm = globalObject->vm(); - JSObject* newTarget = asObject(callFrame->newTarget()); - auto* constructor = globalObject->OnigurumaRegExpConstructor(); - Structure* structure = globalObject->OnigurumaRegExpStructure(); - if (constructor != newTarget) { - auto scope = DECLARE_THROW_SCOPE(vm); - - auto* functionGlobalObject = reinterpret_cast<Zig::GlobalObject*>( - // ShadowRealm functions belong to a different global object. - getFunctionRealm(globalObject, newTarget)); - RETURN_IF_EXCEPTION(scope, {}); - structure = InternalFunction::createSubclassStructure( - globalObject, - newTarget, - functionGlobalObject->OnigurumaRegExpStructure()); - } - - return constructOrCall(globalObject, callFrame->argument(0), callFrame->argument(1)); -} - -} diff --git a/src/bun.js/bindings/OnigurumaRegExp.h b/src/bun.js/bindings/OnigurumaRegExp.h deleted file mode 100644 index 8ddb65a0c..000000000 --- a/src/bun.js/bindings/OnigurumaRegExp.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once - -#include "root.h" -#include "BunBuiltinNames.h" -#include "BunClientData.h" -#include "ZigGlobalObject.h" - -extern "C" JSC::EncodedJSValue jsFunctionGetOnigurumaRegExpConstructor(JSC::JSGlobalObject* lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName attributeName); - -namespace Zig { - -using namespace JSC; -using namespace WebCore; - -class OnigurumaRegEx final : public JSC::JSDestructibleObject { -public: - using Base = JSC::JSDestructibleObject; - - static OnigurumaRegEx* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) - { - OnigurumaRegEx* ptr = new (NotNull, JSC::allocateCell<OnigurumaRegEx>(vm)) OnigurumaRegEx(vm, globalObject, structure); - ptr->finishCreation(vm); - return ptr; - } - - static OnigurumaRegEx* create(JSC::JSGlobalObject* globalObject, WTF::String&& pattern, WTF::String&& flags) - { - auto* structure = reinterpret_cast<Zig::GlobalObject*>(globalObject)->OnigurumaRegExpStructure(); - auto* object = create(globalObject->vm(), globalObject, structure); - object->m_flagsString = WTFMove(flags); - object->m_patternString = WTFMove(pattern); - - return object; - } - - DECLARE_EXPORT_INFO; - template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) - { - if constexpr (mode == JSC::SubspaceAccess::Concurrently) - return nullptr; - - return WebCore::subspaceForImpl<OnigurumaRegEx, UseCustomHeapCellType::No>( - vm, - [](auto& spaces) { return spaces.m_clientSubspaceForOnigurumaRegExp.get(); }, - [](auto& spaces, auto&& space) { spaces.m_clientSubspaceForOnigurumaRegExp = WTFMove(space); }, - [](auto& spaces) { return spaces.m_subspaceForOnigurumaRegExp.get(); }, - [](auto& spaces, auto&& space) { spaces.m_subspaceForOnigurumaRegExp = WTFMove(space); }); - } - - static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) - { - return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(RegExpObjectType, StructureFlags), info()); - } - - // static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); - - const WTF::String& flagsString() const { return m_flagsString; } - void setFlagsString(const WTF::String& flagsString) { m_flagsString = flagsString; } - const WTF::String& patternString() const { return m_patternString; } - void setPatternString(const WTF::String& patternString) { m_patternString = patternString; } - - int32_t m_lastIndex = 0; - -private: - OnigurumaRegEx(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) - : Base(vm, structure) - { - } - - void finishCreation(JSC::VM&) - { - Base::finishCreation(vm()); - } - - WTF::String m_patternString = {}; - WTF::String m_flagsString = {}; -}; - -class OnigurumaRegExpConstructor final : public JSC::InternalFunction { -public: - using Base = JSC::InternalFunction; - static OnigurumaRegExpConstructor* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSValue prototype); - - // Must be defined for each specialization class. - static JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES construct(JSC::JSGlobalObject*, JSC::CallFrame*); - DECLARE_EXPORT_INFO; - - static JSC::Structure* createClassStructure(JSC::JSGlobalObject*, JSC::JSValue prototype); - static JSC::JSObject* createPrototype(JSC::JSGlobalObject*); - - static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) - { - return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::InternalFunctionType, StructureFlags), info()); - } - -private: - OnigurumaRegExpConstructor(JSC::VM& vm, JSC::Structure* structure, JSC::NativeFunction nativeFunction) - : Base(vm, structure, nativeFunction, nativeFunction) - - { - } - - void finishCreation(JSC::VM&, JSValue prototype); -}; - -}
\ No newline at end of file diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 1e70fdd99..e8ee74943 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -167,8 +167,6 @@ using JSBuffer = WebCore::JSBuffer; #include "webcrypto/JSCryptoKey.h" #include "webcrypto/JSSubtleCrypto.h" -#include "OnigurumaRegExp.h" - constexpr size_t DEFAULT_ERROR_STACK_TRACE_LIMIT = 10; #ifdef __APPLE__ @@ -2579,17 +2577,6 @@ void GlobalObject::finishCreation(VM& vm) init.setConstructor(constructor); }); - m_OnigurumaRegExpClassStructure.initLater( - [](LazyClassStructure::Initializer& init) { - auto* prototype = OnigurumaRegExpConstructor::createPrototype(init.global); - auto* structure = OnigurumaRegExpConstructor::createClassStructure(init.global, prototype); - auto* constructor = OnigurumaRegExpConstructor::create( - init.vm, init.global, OnigurumaRegExpConstructor::createStructure(init.vm, init.global, init.global->functionPrototype()), prototype); - init.setPrototype(prototype); - init.setStructure(structure); - init.setConstructor(constructor); - }); - m_callSiteStructure.initLater( [](LazyClassStructure::Initializer& init) { auto* prototype = CallSitePrototype::create(init.vm, CallSitePrototype::createStructure(init.vm, init.global, init.global->objectPrototype()), init.global); @@ -3224,11 +3211,6 @@ void GlobalObject::installAPIGlobals(JSClassRef* globals, int count, JSC::VM& vm } { - JSC::Identifier identifier = JSC::Identifier::fromString(vm, "OnigurumaRegExp"_s); - object->putDirectCustomAccessor(vm, identifier, JSC::CustomGetterSetter::create(vm, jsFunctionGetOnigurumaRegExpConstructor, nullptr), JSC::PropertyAttribute::CustomAccessor | 0); - } - - { JSC::Identifier identifier = JSC::Identifier::fromString(vm, "stringHashCode"_s); object->putDirectNativeFunction(vm, this, identifier, 1, functionHashCode, ImplementationVisibility::Public, NoIntrinsic, JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DontDelete | 0); @@ -3362,7 +3344,6 @@ void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor) thisObject->m_JSReadableStateClassStructure.visit(visitor); thisObject->m_JSStringDecoderClassStructure.visit(visitor); thisObject->m_NapiClassStructure.visit(visitor); - thisObject->m_OnigurumaRegExpClassStructure.visit(visitor); thisObject->m_pendingVirtualModuleResultStructure.visit(visitor); thisObject->m_performMicrotaskFunction.visit(visitor); diff --git a/src/bun.js/bindings/ZigGlobalObject.h b/src/bun.js/bindings/ZigGlobalObject.h index 90d67d34f..7335c9d97 100644 --- a/src/bun.js/bindings/ZigGlobalObject.h +++ b/src/bun.js/bindings/ZigGlobalObject.h @@ -224,10 +224,6 @@ public: JSC::JSObject* JSReadableState() { return m_JSReadableStateClassStructure.constructorInitializedOnMainThread(this); } JSC::JSValue JSReadableStatePrototype() { return m_JSReadableStateClassStructure.prototypeInitializedOnMainThread(this); } - JSC::Structure* OnigurumaRegExpStructure() { return m_OnigurumaRegExpClassStructure.getInitializedOnMainThread(this); } - JSC::JSValue OnigurumaRegExpPrototype() { return m_OnigurumaRegExpClassStructure.prototypeInitializedOnMainThread(this); } - JSC::JSObject* OnigurumaRegExpConstructor() { return m_OnigurumaRegExpClassStructure.constructorInitializedOnMainThread(this); } - JSC::JSMap* readableStreamNativeMap() { return m_lazyReadableStreamPrototypeMap.getInitializedOnMainThread(this); } JSC::JSMap* requireMap() { return m_requireMap.getInitializedOnMainThread(this); } JSC::Structure* encodeIntoObjectStructure() { return m_encodeIntoObjectStructure.getInitializedOnMainThread(this); } @@ -465,7 +461,6 @@ private: LazyClassStructure m_JSReadableStateClassStructure; LazyClassStructure m_JSStringDecoderClassStructure; LazyClassStructure m_NapiClassStructure; - LazyClassStructure m_OnigurumaRegExpClassStructure; LazyClassStructure m_callSiteStructure; /** diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index b5a78af0a..f37af006b 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -82,7 +82,6 @@ #include "JavaScriptCore/PropertyNameArray.h" #include "JavaScriptCore/HashMapImpl.h" #include "JavaScriptCore/HashMapImplInlines.h" -#include "OnigurumaRegExp.h" template<typename UWSResponse> static void copyToUWS(WebCore::FetchHeaders* headers, UWSResponse* res) @@ -382,22 +381,7 @@ bool Bun__deepEquals(JSC__JSGlobalObject* globalObject, JSValue v1, JSValue v2, return false; } - if (OnigurumaRegEx* left = jsDynamicCast<OnigurumaRegEx*>(v1)) { - OnigurumaRegEx* right = jsDynamicCast<OnigurumaRegEx*>(v2); - if (UNLIKELY(!right)) { - return false; - } - - if (!equal(left->patternString(), right->patternString())) { - return false; - } - - if (!equal(left->flagsString(), right->flagsString())) { - return false; - } - - return true; - } else if (JSC::RegExpObject* left = jsDynamicCast<JSC::RegExpObject*>(v1)) { + if (JSC::RegExpObject* left = jsDynamicCast<JSC::RegExpObject*>(v1)) { JSC::RegExpObject* right = jsDynamicCast<JSC::RegExpObject*>(v2); if (UNLIKELY(!right)) { diff --git a/src/bun.js/bindings/headers-cpp.h b/src/bun.js/bindings/headers-cpp.h index b1cbc2cf6..b8bf7c300 100644 --- a/src/bun.js/bindings/headers-cpp.h +++ b/src/bun.js/bindings/headers-cpp.h @@ -1,4 +1,4 @@ -//-- AUTOGENERATED FILE -- 1671153921 +//-- AUTOGENERATED FILE -- 1671319165 // clang-format off #pragma once diff --git a/src/bun.js/bindings/headers.h b/src/bun.js/bindings/headers.h index 29bc2b21a..f29395eff 100644 --- a/src/bun.js/bindings/headers.h +++ b/src/bun.js/bindings/headers.h @@ -1,5 +1,5 @@ // clang-format off -//-- AUTOGENERATED FILE -- 1671153921 +//-- AUTOGENERATED FILE -- 1671319165 #pragma once #include <stddef.h> diff --git a/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h b/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h index e7504c024..5c7acd18a 100644 --- a/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h +++ b/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h @@ -29,7 +29,6 @@ public: std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForStringDecoder; std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForReadableState; std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForPendingVirtualModuleResult; - std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForOnigurumaRegExp; std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForCallSite; std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForNapiExternal; #include "ZigGeneratedClasses+DOMClientIsoSubspaces.h" diff --git a/src/bun.js/bindings/webcore/DOMIsoSubspaces.h b/src/bun.js/bindings/webcore/DOMIsoSubspaces.h index cba631c61..d15866b7b 100644 --- a/src/bun.js/bindings/webcore/DOMIsoSubspaces.h +++ b/src/bun.js/bindings/webcore/DOMIsoSubspaces.h @@ -29,7 +29,6 @@ public: std::unique_ptr<IsoSubspace> m_subspaceForStringDecoder; std::unique_ptr<IsoSubspace> m_subspaceForReadableState; std::unique_ptr<IsoSubspace> m_subspaceForPendingVirtualModuleResult; - std::unique_ptr<IsoSubspace> m_subspaceForOnigurumaRegExp; std::unique_ptr<IsoSubspace> m_subspaceForCallSite; std::unique_ptr<IsoSubspace> m_subspaceForNapiExternal; #include "ZigGeneratedClasses+DOMIsoSubspaces.h" diff --git a/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp b/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp index 93e13369a..446b8fd81 100644 --- a/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp +++ b/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp @@ -8,7 +8,6 @@ namespace Zig { class GlobalObject; } * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/WebCoreJSBuiltins.cpp b/src/bun.js/builtins/WebCoreJSBuiltins.cpp index 1e8fa06d6..f5b25a463 100644 --- a/src/bun.js/builtins/WebCoreJSBuiltins.cpp +++ b/src/bun.js/builtins/WebCoreJSBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * @@ -40,7 +39,6 @@ #include "ImportMetaObjectBuiltins.cpp" #include "JSBufferConstructorBuiltins.cpp" #include "JSBufferPrototypeBuiltins.cpp" -#include "OnigurumaRegExpPrototypeBuiltins.cpp" #include "ProcessObjectInternalsBuiltins.cpp" #include "ReadableByteStreamControllerBuiltins.cpp" #include "ReadableByteStreamInternalsBuiltins.cpp" diff --git a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp index fac21b4ec..3bec31ac7 100644 --- a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h index b86a05c27..fc56f2911 100644 --- a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h +++ b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp index 39080d690..7d4fc6e2e 100644 --- a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h index 9e2a43707..975394c5f 100644 --- a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h +++ b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp index 82aaefddb..ed428601a 100644 --- a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp +++ b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h index a05d5c9b8..06811f00a 100644 --- a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h +++ b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp index 75a52c699..360168176 100644 --- a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h index f3182273c..5cc424ec8 100644 --- a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h +++ b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp index 1ec885ee0..ed14b6699 100644 --- a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp +++ b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h index 67670d715..f9181b402 100644 --- a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h +++ b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp index 367041f65..cd8b072d4 100644 --- a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp +++ b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h index 04fa9df0b..75de0fce2 100644 --- a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h +++ b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.cpp b/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.cpp deleted file mode 100644 index cf55745b1..000000000 --- a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.cpp +++ /dev/null @@ -1,672 +0,0 @@ -/* - * Copyright (c) 2015 Igalia - * Copyright (c) 2015 Igalia S.L. - * Copyright (c) 2015 Igalia. - * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. - * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. - * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. - * Copyright (c) 2022 Codeblog Corp. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for -// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py - -#include "config.h" -#include "OnigurumaRegExpPrototypeBuiltins.h" - -#include "WebCoreJSClientData.h" -#include <JavaScriptCore/HeapInlines.h> -#include <JavaScriptCore/IdentifierInlines.h> -#include <JavaScriptCore/ImplementationVisibility.h> -#include <JavaScriptCore/Intrinsic.h> -#include <JavaScriptCore/JSCJSValueInlines.h> -#include <JavaScriptCore/JSCellInlines.h> -#include <JavaScriptCore/StructureInlines.h> -#include <JavaScriptCore/VM.h> - -namespace WebCore { - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_onigurumaRegExpPrototypeAdvanceStringIndexCodeLength = 427; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeAdvanceStringIndexCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeAdvanceStringIndexCode = - "(function (string, index, unicode)\n" \ - "{\n" \ - " //\n" \ - " \"use strict\";\n" \ - "\n" \ - " if (!unicode)\n" \ - " return index + 1;\n" \ - "\n" \ - " if (index + 1 >= string.length)\n" \ - " return index + 1;\n" \ - "\n" \ - " var first = string.@charCodeAt(index);\n" \ - " if (first < 0xD800 || first > 0xDBFF)\n" \ - " return index + 1;\n" \ - "\n" \ - " var second = string.@charCodeAt(index + 1);\n" \ - " if (second < 0xDC00 || second > 0xDFFF)\n" \ - " return index + 1;\n" \ - "\n" \ - " return index + 2;\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchSlowCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchSlowCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchSlowCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_onigurumaRegExpPrototypeMatchSlowCodeLength = 796; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeMatchSlowCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeMatchSlowCode = - "(function (regexp, str)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " if (!regexp.global)\n" \ - " return regexp.exec(str);\n" \ - " \n" \ - " var unicode = regexp.unicode;\n" \ - " regexp.lastIndex = 0;\n" \ - " var resultList = [];\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " //\n" \ - " var maximumReasonableMatchSize = 100000000;\n" \ - "\n" \ - " while (true) {\n" \ - " var result = regexp.exec(str);\n" \ - " \n" \ - " if (result === null) {\n" \ - " if (resultList.length === 0)\n" \ - " return null;\n" \ - " return resultList;\n" \ - " }\n" \ - "\n" \ - " if (resultList.length > maximumReasonableMatchSize)\n" \ - " @throwOutOfMemoryError();\n" \ - "\n" \ - " var resultString = @toString(result[0]);\n" \ - "\n" \ - " if (!resultString.length)\n" \ - " regexp.lastIndex = @advanceStringIndex(str, regexp.lastIndex, unicode);\n" \ - "\n" \ - " @arrayPush(resultList, resultString);\n" \ - " }\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_onigurumaRegExpPrototypeMatchCodeLength = 225; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeMatchCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeMatchCode = - "(function (strArg)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " if (!@isObject(this))\n" \ - " @throwTypeError(\"RegExp.prototype.@@match requires that |this| be an Object\");\n" \ - "\n" \ - " var str = @toString(strArg);\n" \ - "\n" \ - " return @matchSlow(this, str);\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchAllCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchAllCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchAllCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_onigurumaRegExpPrototypeMatchAllCodeLength = 2928; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeMatchAllCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeMatchAllCode = - "(function (strArg)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " var regExp = this;\n" \ - " if (!@isObject(regExp)) {\n" \ - " @throwTypeError(\"RegExp.prototype.@@matchAll requires |this| to be an Object\");\n" \ - " }\n" \ - "\n" \ - " var string = @toString(strArg);\n" \ - "\n" \ - " var Matcher = @speciesConstructor(regExp, @Bun.OnigurumaRegExp);\n" \ - "\n" \ - " var flags = @toString(regExp.flags);\n" \ - " var matcher = new Matcher(regExp.source, flags);\n" \ - " matcher.lastIndex = @toLength(regExp.lastIndex);\n" \ - "\n" \ - " var global = @stringIncludesInternal.@call(flags, \"g\");\n" \ - " var fullUnicode = @stringIncludesInternal.@call(flags, \"u\");\n" \ - "\n" \ - " var iterator = globalThis.Symbol.iterator;\n" \ - "\n" \ - " var RegExpStringIterator = class RegExpStringIterator {\n" \ - " constructor(regExp, string, global, fullUnicode)\n" \ - " {\n" \ - " \n" \ - " @putByIdDirectPrivate(this, \"regExpStringIteratorRegExp\", regExp);\n" \ - " @putByIdDirectPrivate(this, \"regExpStringIteratorString\", string);\n" \ - " @putByIdDirectPrivate(this, \"regExpStringIteratorGlobal\", global);\n" \ - " @putByIdDirectPrivate(this, \"regExpStringIteratorUnicode\", fullUnicode);\n" \ - " @putByIdDirectPrivate(this, \"regExpStringIteratorDone\", false);\n" \ - " }\n" \ - "\n" \ - " next() {\n" \ - " \"use strict\";\n" \ - " if (!@isObject(this)) {\n" \ - " @throwTypeError(\"%RegExpStringIteratorPrototype%.next requires |this| to be an Object\");\n" \ - " }\n" \ - " \n" \ - " var done = @getByIdDirectPrivate(this, \"regExpStringIteratorDone\");\n" \ - " if (done === @undefined) {\n" \ - " @throwTypeError(\"%RegExpStringIteratorPrototype%.next requires |this| to be an RegExp String Iterator instance\");\n" \ - " }\n" \ - " \n" \ - " if (done) {\n" \ - " return { value: @undefined, done: true };\n" \ - " }\n" \ - " \n" \ - " var regExp = @getByIdDirectPrivate(this, \"regExpStringIteratorRegExp\");\n" \ - " var string = @getByIdDirectPrivate(this, \"regExpStringIteratorString\");\n" \ - " var global = @getByIdDirectPrivate(this, \"regExpStringIteratorGlobal\");\n" \ - " var fullUnicode = @getByIdDirectPrivate(this, \"regExpStringIteratorUnicode\");\n" \ - " var match = regExp.exec(string);\n" \ - " if (match === null) {\n" \ - " @putByIdDirectPrivate(this, \"regExpStringIteratorDone\", true);\n" \ - " return { value: @undefined, done: true };\n" \ - " }\n" \ - " \n" \ - " if (global) {\n" \ - " var matchStr = @toString(match[0]);\n" \ - " if (matchStr === \"\") {\n" \ - " var thisIndex = @toLength(regExp.lastIndex);\n" \ - " regExp.lastIndex = @advanceStringIndex(string, thisIndex, fullUnicode);\n" \ - " }\n" \ - " } else\n" \ - " @putByIdDirectPrivate(this, \"regExpStringIteratorDone\", true);\n" \ - " \n" \ - " return { value: match, done: false };\n" \ - " }\n" \ - "\n" \ - " [iterator]() {\n" \ - " return this;\n" \ - " }\n" \ - "\n" \ - " };\n" \ - "\n" \ - " return new RegExpStringIterator(matcher, string, global, fullUnicode);\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeGetSubstitutionCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_onigurumaRegExpPrototypeGetSubstitutionCodeLength = 3603; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeGetSubstitutionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeGetSubstitutionCode = - "(function (matched, str, position, captures, namedCaptures, replacement)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " var matchLength = matched.length;\n" \ - " var stringLength = str.length;\n" \ - " var tailPos = position + matchLength;\n" \ - " var m = captures.length;\n" \ - " var replacementLength = replacement.length;\n" \ - " var result = \"\";\n" \ - " var lastStart = 0;\n" \ - "\n" \ - " for (var start = 0; start = @stringIndexOfInternal.@call(replacement, \"$\", lastStart), start !== -1; lastStart = start) {\n" \ - " if (start - lastStart > 0)\n" \ - " result = result + @stringSubstring.@call(replacement, lastStart, start);\n" \ - " start++;\n" \ - " if (start >= replacementLength)\n" \ - " result = result + \"$\";\n" \ - " else {\n" \ - " var ch = replacement[start];\n" \ - " switch (ch)\n" \ - " {\n" \ - " case \"$\":\n" \ - " result = result + \"$\";\n" \ - " start++;\n" \ - " break;\n" \ - " case \"&\":\n" \ - " result = result + matched;\n" \ - " start++;\n" \ - " break;\n" \ - " case \"`\":\n" \ - " if (position > 0)\n" \ - " result = result + @stringSubstring.@call(str, 0, position);\n" \ - " start++;\n" \ - " break;\n" \ - " case \"'\":\n" \ - " if (tailPos < stringLength)\n" \ - " result = result + @stringSubstring.@call(str, tailPos);\n" \ - " start++;\n" \ - " break;\n" \ - " case \"<\":\n" \ - " if (namedCaptures !== @undefined) {\n" \ - " var groupNameStartIndex = start + 1;\n" \ - " var groupNameEndIndex = @stringIndexOfInternal.@call(replacement, \">\", groupNameStartIndex);\n" \ - " if (groupNameEndIndex !== -1) {\n" \ - " var groupName = @stringSubstring.@call(replacement, groupNameStartIndex, groupNameEndIndex);\n" \ - " var capture = namedCaptures[groupName];\n" \ - " if (capture !== @undefined)\n" \ - " result = result + @toString(capture);\n" \ - "\n" \ - " start = groupNameEndIndex + 1;\n" \ - " break;\n" \ - " }\n" \ - " }\n" \ - "\n" \ - " result = result + \"$<\";\n" \ - " start++;\n" \ - " break;\n" \ - " default:\n" \ - " var chCode = ch.@charCodeAt(0);\n" \ - " if (chCode >= 0x30 && chCode <= 0x39) {\n" \ - " var originalStart = start - 1;\n" \ - " start++;\n" \ - "\n" \ - " var n = chCode - 0x30;\n" \ - " if (n > m) {\n" \ - " result = result + @stringSubstring.@call(replacement, originalStart, start);\n" \ - " break;\n" \ - " }\n" \ - "\n" \ - " if (start < replacementLength) {\n" \ - " var nextChCode = replacement.@charCodeAt(start);\n" \ - " if (nextChCode >= 0x30 && nextChCode <= 0x39) {\n" \ - " var nn = 10 * n + nextChCode - 0x30;\n" \ - " if (nn <= m) {\n" \ - " n = nn;\n" \ - " start++;\n" \ - " }\n" \ - " }\n" \ - " }\n" \ - "\n" \ - " if (n == 0) {\n" \ - " result = result + @stringSubstring.@call(replacement, originalStart, start);\n" \ - " break;\n" \ - " }\n" \ - "\n" \ - " var capture = captures[n - 1];\n" \ - " if (capture !== @undefined)\n" \ - " result = result + capture;\n" \ - " } else\n" \ - " result = result + \"$\";\n" \ - " break;\n" \ - " }\n" \ - " }\n" \ - " }\n" \ - "\n" \ - " return result + @stringSubstring.@call(replacement, lastStart);\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeReplaceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeReplaceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeReplaceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_onigurumaRegExpPrototypeReplaceCodeLength = 3208; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeReplaceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeReplaceCode = - "(function (strArg, replace)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " if (!@isObject(this))\n" \ - " @throwTypeError(\"RegExp.prototype.@@replace requires that |this| be an Object\");\n" \ - "\n" \ - " var regexp = this;\n" \ - "\n" \ - " var str = @toString(strArg);\n" \ - " var stringLength = str.length;\n" \ - " var functionalReplace = @isCallable(replace);\n" \ - "\n" \ - " if (!functionalReplace)\n" \ - " replace = @toString(replace);\n" \ - "\n" \ - " var global = regexp.global;\n" \ - " var unicode = false;\n" \ - "\n" \ - " if (global) {\n" \ - " unicode = regexp.unicode;\n" \ - " regexp.lastIndex = 0;\n" \ - " }\n" \ - "\n" \ - " var resultList = [];\n" \ - " var result;\n" \ - " var done = false;\n" \ - " while (!done) {\n" \ - " result = regexp.exec(str);\n" \ - "\n" \ - " if (result === null)\n" \ - " done = true;\n" \ - " else {\n" \ - " @arrayPush(resultList, result);\n" \ - " if (!global)\n" \ - " done = true;\n" \ - " else {\n" \ - " var matchStr = @toString(result[0]);\n" \ - "\n" \ - " if (!matchStr.length) {\n" \ - " var thisIndex = @toLength(regexp.lastIndex);\n" \ - " regexp.lastIndex = @advanceStringIndex(str, thisIndex, unicode);\n" \ - " }\n" \ - " }\n" \ - " }\n" \ - " }\n" \ - "\n" \ - " var accumulatedResult = \"\";\n" \ - " var nextSourcePosition = 0;\n" \ - "\n" \ - " for (var i = 0, resultListLength = resultList.length; i < resultListLength; ++i) {\n" \ - " var result = resultList[i];\n" \ - " var nCaptures = result.length - 1;\n" \ - " if (nCaptures < 0)\n" \ - " nCaptures = 0;\n" \ - " var matched = @toString(result[0]);\n" \ - " var matchLength = matched.length;\n" \ - " var position = @toIntegerOrInfinity(result.index);\n" \ - " position = (position > stringLength) ? stringLength : position;\n" \ - " position = (position < 0) ? 0 : position;\n" \ - "\n" \ - " var captures = [];\n" \ - " for (var n = 1; n <= nCaptures; n++) {\n" \ - " var capN = result[n];\n" \ - " if (capN !== @undefined)\n" \ - " capN = @toString(capN);\n" \ - " @arrayPush(captures, capN);\n" \ - " }\n" \ - "\n" \ - " var replacement;\n" \ - " var namedCaptures = result.groups;\n" \ - "\n" \ - " if (functionalReplace) {\n" \ - " var replacerArgs = [ matched ];\n" \ - " for (var j = 0; j < captures.length; j++)\n" \ - " @arrayPush(replacerArgs, captures[j]);\n" \ - "\n" \ - " @arrayPush(replacerArgs, position);\n" \ - " @arrayPush(replacerArgs, str);\n" \ - "\n" \ - " if (namedCaptures !== @undefined)\n" \ - " @arrayPush(replacerArgs, namedCaptures);\n" \ - "\n" \ - " var replValue = replace.@apply(@undefined, replacerArgs);\n" \ - " replacement = @toString(replValue);\n" \ - " } else {\n" \ - " if (namedCaptures !== @undefined)\n" \ - " namedCaptures = @toObject(namedCaptures, \"RegExp.prototype[Symbol.replace] requires 'groups' property of a match not be null\");\n" \ - "\n" \ - " replacement = @getSubstitution(matched, str, position, captures, namedCaptures, replace);\n" \ - " }\n" \ - "\n" \ - " if (position >= nextSourcePosition) {\n" \ - " accumulatedResult = accumulatedResult + @stringSubstring.@call(str, nextSourcePosition, position) + replacement;\n" \ - " nextSourcePosition = position + matchLength;\n" \ - " }\n" \ - " }\n" \ - "\n" \ - " if (nextSourcePosition >= stringLength)\n" \ - " return accumulatedResult;\n" \ - "\n" \ - " return accumulatedResult + @stringSubstring.@call(str, nextSourcePosition);\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeSearchCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeSearchCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSearchCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_onigurumaRegExpPrototypeSearchCodeLength = 631; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeSearchCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeSearchCode = - "(function (strArg)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " var regexp = this;\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " if (!@isObject(this))\n" \ - " @throwTypeError(\"RegExp.prototype.@@search requires that |this| be an Object\");\n" \ - "\n" \ - " //\n" \ - " var str = @toString(strArg)\n" \ - "\n" \ - " //\n" \ - " var previousLastIndex = regexp.lastIndex;\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " if (!@sameValue(previousLastIndex, 0))\n" \ - " regexp.lastIndex = 0;\n" \ - "\n" \ - " //\n" \ - " var result = regexp.exec(str);\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " //\n" \ - " if (!@sameValue(regexp.lastIndex, previousLastIndex))\n" \ - " regexp.lastIndex = previousLastIndex;\n" \ - "\n" \ - " //\n" \ - " if (result === null)\n" \ - " return -1;\n" \ - "\n" \ - " //\n" \ - " return result.index;\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeSplitCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeSplitCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSplitCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_onigurumaRegExpPrototypeSplitCodeLength = 2926; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeSplitCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeSplitCode = - "(function (string, limit)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " if (!@isObject(this))\n" \ - " @throwTypeError(\"RegExp.prototype.@@split requires that |this| be an Object\");\n" \ - " var regexp = this;\n" \ - "\n" \ - " //\n" \ - " var str = @toString(string);\n" \ - "\n" \ - " //\n" \ - " var speciesConstructor = @speciesConstructor(regexp, @RegExp);\n" \ - "\n" \ - " //\n" \ - " var flags = @toString(regexp.flags);\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " var unicodeMatching = @stringIncludesInternal.@call(flags, \"u\");\n" \ - " //\n" \ - " //\n" \ - " var newFlags = @stringIncludesInternal.@call(flags, \"y\") ? flags : flags + \"y\";\n" \ - "\n" \ - " //\n" \ - " var splitter = new speciesConstructor(regexp.source, newFlags);\n" \ - "\n" \ - " //\n" \ - " //\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " var result = [];\n" \ - "\n" \ - " //\n" \ - " limit = (limit === @undefined) ? 0xffffffff : limit >>> 0;\n" \ - "\n" \ - " //\n" \ - " if (!limit)\n" \ - " return result;\n" \ - "\n" \ - " //\n" \ - " var size = str.length;\n" \ - "\n" \ - " //\n" \ - " if (!size) {\n" \ - " //\n" \ - " var z = splitter.exec(str);\n" \ - " //\n" \ - " if (z !== null)\n" \ - " return result;\n" \ - " //\n" \ - " @putByValDirect(result, 0, str);\n" \ - " //\n" \ - " return result;\n" \ - " }\n" \ - "\n" \ - " //\n" \ - " var position = 0;\n" \ - " //\n" \ - " var matchPosition = 0;\n" \ - "\n" \ - " //\n" \ - " while (matchPosition < size) {\n" \ - " //\n" \ - " splitter.lastIndex = matchPosition;\n" \ - " //\n" \ - " var matches = splitter.exec(str);\n" \ - " //\n" \ - " if (matches === null)\n" \ - " matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching);\n" \ - " //\n" \ - " else {\n" \ - " //\n" \ - " var endPosition = @toLength(splitter.lastIndex);\n" \ - " //\n" \ - " endPosition = (endPosition <= size) ? endPosition : size;\n" \ - " //\n" \ - " if (endPosition === position)\n" \ - " matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching);\n" \ - " //\n" \ - " else {\n" \ - " //\n" \ - " var subStr = @stringSubstring.@call(str, position, matchPosition);\n" \ - " //\n" \ - " //\n" \ - " @arrayPush(result, subStr);\n" \ - " //\n" \ - " if (result.length == limit)\n" \ - " return result;\n" \ - "\n" \ - " //\n" \ - " position = endPosition;\n" \ - " //\n" \ - " //\n" \ - " var numberOfCaptures = matches.length > 1 ? matches.length - 1 : 0;\n" \ - "\n" \ - " //\n" \ - " var i = 1;\n" \ - " //\n" \ - " while (i <= numberOfCaptures) {\n" \ - " //\n" \ - " var nextCapture = matches[i];\n" \ - " //\n" \ - " //\n" \ - " @arrayPush(result, nextCapture);\n" \ - " //\n" \ - " if (result.length == limit)\n" \ - " return result;\n" \ - " //\n" \ - " i++;\n" \ - " }\n" \ - " //\n" \ - " matchPosition = position;\n" \ - " }\n" \ - " }\n" \ - " }\n" \ - " //\n" \ - " var remainingStr = @stringSubstring.@call(str, position, size);\n" \ - " //\n" \ - " @arrayPush(result, remainingStr);\n" \ - " //\n" \ - " return result;\n" \ - "})\n" \ -; - -const JSC::ConstructAbility s_onigurumaRegExpPrototypeTestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_onigurumaRegExpPrototypeTestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeTestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_onigurumaRegExpPrototypeTestCodeLength = 452; -static const JSC::Intrinsic s_onigurumaRegExpPrototypeTestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_onigurumaRegExpPrototypeTestCode = - "(function (strArg)\n" \ - "{\n" \ - " \"use strict\";\n" \ - "\n" \ - " var regexp = this;\n" \ - "\n" \ - " if (regexp.test == @Bun.OnigurumaRegExp.prototype.test) {\n" \ - " return regexp.test(strArg);\n" \ - " }\n" \ - "\n" \ - " //\n" \ - " //\n" \ - " if (!@isObject(regexp))\n" \ - " @throwTypeError(\"RegExp.prototype.test requires that |this| be an Object\");\n" \ - "\n" \ - " //\n" \ - " var str = @toString(strArg);\n" \ - "\n" \ - " //\n" \ - " var match = regexp.exec(str);\n" \ - "\n" \ - " //\n" \ - " if (match !== null)\n" \ - " return true;\n" \ - " return false;\n" \ - "})\n" \ -; - - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().onigurumaRegExpPrototypeBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().onigurumaRegExpPrototypeBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - - -} // namespace WebCore diff --git a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.h b/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.h deleted file mode 100644 index d8d17d14d..000000000 --- a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.h +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2015 Igalia - * Copyright (c) 2015 Igalia S.L. - * Copyright (c) 2015 Igalia. - * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. - * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. - * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. - * Copyright (c) 2022 Codeblog Corp. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for -// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py - -#pragma once - -#include <JavaScriptCore/BuiltinUtils.h> -#include <JavaScriptCore/Identifier.h> -#include <JavaScriptCore/JSFunction.h> -#include <JavaScriptCore/UnlinkedFunctionExecutable.h> - -namespace JSC { -class FunctionExecutable; -} - -namespace WebCore { - -/* OnigurumaRegExpPrototype */ -extern const char* const s_onigurumaRegExpPrototypeAdvanceStringIndexCode; -extern const int s_onigurumaRegExpPrototypeAdvanceStringIndexCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeMatchSlowCode; -extern const int s_onigurumaRegExpPrototypeMatchSlowCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchSlowCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchSlowCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchSlowCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeMatchCode; -extern const int s_onigurumaRegExpPrototypeMatchCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeMatchAllCode; -extern const int s_onigurumaRegExpPrototypeMatchAllCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchAllCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchAllCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchAllCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeGetSubstitutionCode; -extern const int s_onigurumaRegExpPrototypeGetSubstitutionCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeGetSubstitutionCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeReplaceCode; -extern const int s_onigurumaRegExpPrototypeReplaceCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeReplaceCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeReplaceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeReplaceCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeSearchCode; -extern const int s_onigurumaRegExpPrototypeSearchCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeSearchCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeSearchCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSearchCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeSplitCode; -extern const int s_onigurumaRegExpPrototypeSplitCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeSplitCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeSplitCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSplitCodeImplementationVisibility; -extern const char* const s_onigurumaRegExpPrototypeTestCode; -extern const int s_onigurumaRegExpPrototypeTestCodeLength; -extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeTestCodeConstructAbility; -extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeTestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeTestCodeImplementationVisibility; - -#define WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_DATA(macro) \ - macro(advanceStringIndex, onigurumaRegExpPrototypeAdvanceStringIndex, 3) \ - macro(matchSlow, onigurumaRegExpPrototypeMatchSlow, 2) \ - macro(match, onigurumaRegExpPrototypeMatch, 1) \ - macro(matchAll, onigurumaRegExpPrototypeMatchAll, 1) \ - macro(getSubstitution, onigurumaRegExpPrototypeGetSubstitution, 6) \ - macro(replace, onigurumaRegExpPrototypeReplace, 2) \ - macro(search, onigurumaRegExpPrototypeSearch, 1) \ - macro(split, onigurumaRegExpPrototypeSplit, 2) \ - macro(test, onigurumaRegExpPrototypeTest, 1) \ - -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_ADVANCESTRINGINDEX 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_MATCHSLOW 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_MATCH 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_MATCHALL 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_GETSUBSTITUTION 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_REPLACE 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_SEARCH 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_SPLIT 1 -#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_TEST 1 - -#define WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(macro) \ - macro(onigurumaRegExpPrototypeAdvanceStringIndexCode, advanceStringIndex, ASCIILiteral(), s_onigurumaRegExpPrototypeAdvanceStringIndexCodeLength) \ - macro(onigurumaRegExpPrototypeMatchSlowCode, matchSlow, ASCIILiteral(), s_onigurumaRegExpPrototypeMatchSlowCodeLength) \ - macro(onigurumaRegExpPrototypeMatchCode, match, "[Symbol.match]"_s, s_onigurumaRegExpPrototypeMatchCodeLength) \ - macro(onigurumaRegExpPrototypeMatchAllCode, matchAll, "[Symbol.matchAll]"_s, s_onigurumaRegExpPrototypeMatchAllCodeLength) \ - macro(onigurumaRegExpPrototypeGetSubstitutionCode, getSubstitution, ASCIILiteral(), s_onigurumaRegExpPrototypeGetSubstitutionCodeLength) \ - macro(onigurumaRegExpPrototypeReplaceCode, replace, "[Symbol.replace]"_s, s_onigurumaRegExpPrototypeReplaceCodeLength) \ - macro(onigurumaRegExpPrototypeSearchCode, search, "[Symbol.search]"_s, s_onigurumaRegExpPrototypeSearchCodeLength) \ - macro(onigurumaRegExpPrototypeSplitCode, split, "[Symbol.split]"_s, s_onigurumaRegExpPrototypeSplitCodeLength) \ - macro(onigurumaRegExpPrototypeTestCode, test, ASCIILiteral(), s_onigurumaRegExpPrototypeTestCodeLength) \ - -#define WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(macro) \ - macro(advanceStringIndex) \ - macro(getSubstitution) \ - macro(match) \ - macro(matchAll) \ - macro(matchSlow) \ - macro(replace) \ - macro(search) \ - macro(split) \ - macro(test) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class OnigurumaRegExpPrototypeBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit OnigurumaRegExpPrototypeBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* OnigurumaRegExpPrototypeBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void OnigurumaRegExpPrototypeBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} - -} // namespace WebCore diff --git a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp index 5c452c7f8..28cd73663 100644 --- a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h index 078eb6234..c3af84061 100644 --- a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h +++ b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp index e5f3b348e..3b38a593b 100644 --- a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h index b3ed9b51a..2e19b9d21 100644 --- a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp index 087291d8e..f1732e48e 100644 --- a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h index 87afb3da2..06ee280bf 100644 --- a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp index 246d7b241..46dcf7f4e 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h index 94969b6e1..c1d1a4c7f 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp index 52b56f01a..5e0cf16d4 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h index 91d764366..a5549ad98 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp index 2d50f9cb3..223d8f564 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h index a51da4f44..b85038a43 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp index 2e9b3f231..185d6cdee 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h index 3dda64a21..5ae59810a 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp index 9504549e0..24b91037b 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h index b3b9aed91..b883be6b8 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp index 854d46faa..1b15e84e1 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h index 39b8e8b0d..a617260be 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h +++ b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp index c231091b6..7a1f7f098 100644 --- a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp +++ b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h index 6e3315a08..089992d77 100644 --- a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h +++ b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp b/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp index bb276fc34..82319d8b9 100644 --- a/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp +++ b/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/TransformStreamBuiltins.h b/src/bun.js/builtins/cpp/TransformStreamBuiltins.h index f299a0659..8547fd350 100644 --- a/src/bun.js/builtins/cpp/TransformStreamBuiltins.h +++ b/src/bun.js/builtins/cpp/TransformStreamBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp index 7a30763d3..aae09e51d 100644 --- a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp +++ b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h index e837fc8c7..a38e0111e 100644 --- a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h +++ b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp index 0f09ce57e..2a0c48fa3 100644 --- a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp +++ b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h index 90768e1b6..4850ac1fb 100644 --- a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h +++ b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h b/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h index e843b7136..fe709cb07 100644 --- a/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h +++ b/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h @@ -8,7 +8,6 @@ namespace Zig { class GlobalObject; } * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h b/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h index 0d6d0372c..598e0948e 100644 --- a/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h +++ b/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * @@ -42,7 +41,6 @@ #include "ImportMetaObjectBuiltins.h" #include "JSBufferConstructorBuiltins.h" #include "JSBufferPrototypeBuiltins.h" -#include "OnigurumaRegExpPrototypeBuiltins.h" #include "ProcessObjectInternalsBuiltins.h" #include "ReadableByteStreamControllerBuiltins.h" #include "ReadableByteStreamInternalsBuiltins.h" @@ -73,7 +71,6 @@ public: , m_importMetaObjectBuiltins(m_vm) , m_jsBufferConstructorBuiltins(m_vm) , m_jsBufferPrototypeBuiltins(m_vm) - , m_onigurumaRegExpPrototypeBuiltins(m_vm) , m_processObjectInternalsBuiltins(m_vm) , m_readableByteStreamControllerBuiltins(m_vm) , m_readableByteStreamInternalsBuiltins(m_vm) @@ -104,7 +101,6 @@ public: ImportMetaObjectBuiltinsWrapper& importMetaObjectBuiltins() { return m_importMetaObjectBuiltins; } JSBufferConstructorBuiltinsWrapper& jsBufferConstructorBuiltins() { return m_jsBufferConstructorBuiltins; } JSBufferPrototypeBuiltinsWrapper& jsBufferPrototypeBuiltins() { return m_jsBufferPrototypeBuiltins; } - OnigurumaRegExpPrototypeBuiltinsWrapper& onigurumaRegExpPrototypeBuiltins() { return m_onigurumaRegExpPrototypeBuiltins; } ProcessObjectInternalsBuiltinsWrapper& processObjectInternalsBuiltins() { return m_processObjectInternalsBuiltins; } ReadableByteStreamControllerBuiltinsWrapper& readableByteStreamControllerBuiltins() { return m_readableByteStreamControllerBuiltins; } ReadableByteStreamInternalsBuiltinsWrapper& readableByteStreamInternalsBuiltins() { return m_readableByteStreamInternalsBuiltins; } @@ -130,7 +126,6 @@ private: ImportMetaObjectBuiltinsWrapper m_importMetaObjectBuiltins; JSBufferConstructorBuiltinsWrapper m_jsBufferConstructorBuiltins; JSBufferPrototypeBuiltinsWrapper m_jsBufferPrototypeBuiltins; - OnigurumaRegExpPrototypeBuiltinsWrapper m_onigurumaRegExpPrototypeBuiltins; ProcessObjectInternalsBuiltinsWrapper m_processObjectInternalsBuiltins; ReadableByteStreamControllerBuiltinsWrapper m_readableByteStreamControllerBuiltins; ReadableByteStreamInternalsBuiltinsWrapper m_readableByteStreamInternalsBuiltins; diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp index c4d996494..fed47de16 100644 --- a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp +++ b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h index e8b90012b..41e5a62ab 100644 --- a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h +++ b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp index 4876aa54a..4a2088728 100644 --- a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp +++ b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h index cadcb9840..70d154bcd 100644 --- a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h +++ b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp index e75d0e5dc..73df2027d 100644 --- a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp +++ b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h index a869ed60f..f38a4ac60 100644 --- a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h +++ b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h @@ -4,7 +4,6 @@ * Copyright (c) 2015 Igalia. * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. * Copyright (c) 2015, 2016, 2017 Canon Inc. - * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved. * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. * Copyright (c) 2022 Codeblog Corp. All rights reserved. * diff --git a/src/bun.js/builtins/js/OnigurumaRegExpPrototype.js b/src/bun.js/builtins/js/OnigurumaRegExpPrototype.js deleted file mode 100644 index e894069f3..000000000 --- a/src/bun.js/builtins/js/OnigurumaRegExpPrototype.js +++ /dev/null @@ -1,583 +0,0 @@ -/* - * Copyright (C) 2016-2018 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -@linkTimeConstant -function advanceStringIndex(string, index, unicode) -{ - // This function implements AdvanceStringIndex described in ES6 21.2.5.2.3. - "use strict"; - - if (!unicode) - return index + 1; - - if (index + 1 >= string.length) - return index + 1; - - var first = string.@charCodeAt(index); - if (first < 0xD800 || first > 0xDBFF) - return index + 1; - - var second = string.@charCodeAt(index + 1); - if (second < 0xDC00 || second > 0xDFFF) - return index + 1; - - return index + 2; -} - - -@linkTimeConstant -function matchSlow(regexp, str) -{ - "use strict"; - - if (!regexp.global) - return regexp.exec(str); - - var unicode = regexp.unicode; - regexp.lastIndex = 0; - var resultList = []; - - // FIXME: It would be great to implement a solution similar to what we do in - // RegExpObject::matchGlobal(). It's not clear if this is possible, since this loop has - // effects. https://bugs.webkit.org/show_bug.cgi?id=158145 - var maximumReasonableMatchSize = 100000000; - - while (true) { - var result = regexp.exec(str); - - if (result === null) { - if (resultList.length === 0) - return null; - return resultList; - } - - if (resultList.length > maximumReasonableMatchSize) - @throwOutOfMemoryError(); - - var resultString = @toString(result[0]); - - if (!resultString.length) - regexp.lastIndex = @advanceStringIndex(str, regexp.lastIndex, unicode); - - @arrayPush(resultList, resultString); - } -} - -@overriddenName="[Symbol.match]" -function match(strArg) -{ - "use strict"; - - if (!@isObject(this)) - @throwTypeError("RegExp.prototype.@@match requires that |this| be an Object"); - - var str = @toString(strArg); - - return @matchSlow(this, str); -} - -@overriddenName="[Symbol.matchAll]" -function matchAll(strArg) -{ - "use strict"; - - var regExp = this; - if (!@isObject(regExp)) { - @throwTypeError("RegExp.prototype.@@matchAll requires |this| to be an Object"); - } - - var string = @toString(strArg); - - var Matcher = @speciesConstructor(regExp, @Bun.OnigurumaRegExp); - - var flags = @toString(regExp.flags); - var matcher = new Matcher(regExp.source, flags); - matcher.lastIndex = @toLength(regExp.lastIndex); - - var global = @stringIncludesInternal.@call(flags, "g"); - var fullUnicode = @stringIncludesInternal.@call(flags, "u"); - - var iterator = globalThis.Symbol.iterator; - - var RegExpStringIterator = class RegExpStringIterator { - constructor(regExp, string, global, fullUnicode) - { - - @putByIdDirectPrivate(this, "regExpStringIteratorRegExp", regExp); - @putByIdDirectPrivate(this, "regExpStringIteratorString", string); - @putByIdDirectPrivate(this, "regExpStringIteratorGlobal", global); - @putByIdDirectPrivate(this, "regExpStringIteratorUnicode", fullUnicode); - @putByIdDirectPrivate(this, "regExpStringIteratorDone", false); - } - - next() { - "use strict"; - if (!@isObject(this)) { - @throwTypeError("%RegExpStringIteratorPrototype%.next requires |this| to be an Object"); - } - - var done = @getByIdDirectPrivate(this, "regExpStringIteratorDone"); - if (done === @undefined) { - @throwTypeError("%RegExpStringIteratorPrototype%.next requires |this| to be an RegExp String Iterator instance"); - } - - if (done) { - return { value: @undefined, done: true }; - } - - var regExp = @getByIdDirectPrivate(this, "regExpStringIteratorRegExp"); - var string = @getByIdDirectPrivate(this, "regExpStringIteratorString"); - var global = @getByIdDirectPrivate(this, "regExpStringIteratorGlobal"); - var fullUnicode = @getByIdDirectPrivate(this, "regExpStringIteratorUnicode"); - var match = regExp.exec(string); - if (match === null) { - @putByIdDirectPrivate(this, "regExpStringIteratorDone", true); - return { value: @undefined, done: true }; - } - - if (global) { - var matchStr = @toString(match[0]); - if (matchStr === "") { - var thisIndex = @toLength(regExp.lastIndex); - regExp.lastIndex = @advanceStringIndex(string, thisIndex, fullUnicode); - } - } else - @putByIdDirectPrivate(this, "regExpStringIteratorDone", true); - - return { value: match, done: false }; - } - - [iterator]() { - return this; - } - - }; - - return new RegExpStringIterator(matcher, string, global, fullUnicode); -} - -@linkTimeConstant -function getSubstitution(matched, str, position, captures, namedCaptures, replacement) -{ - "use strict"; - - var matchLength = matched.length; - var stringLength = str.length; - var tailPos = position + matchLength; - var m = captures.length; - var replacementLength = replacement.length; - var result = ""; - var lastStart = 0; - - for (var start = 0; start = @stringIndexOfInternal.@call(replacement, "$", lastStart), start !== -1; lastStart = start) { - if (start - lastStart > 0) - result = result + @stringSubstring.@call(replacement, lastStart, start); - start++; - if (start >= replacementLength) - result = result + "$"; - else { - var ch = replacement[start]; - switch (ch) - { - case "$": - result = result + "$"; - start++; - break; - case "&": - result = result + matched; - start++; - break; - case "`": - if (position > 0) - result = result + @stringSubstring.@call(str, 0, position); - start++; - break; - case "'": - if (tailPos < stringLength) - result = result + @stringSubstring.@call(str, tailPos); - start++; - break; - case "<": - if (namedCaptures !== @undefined) { - var groupNameStartIndex = start + 1; - var groupNameEndIndex = @stringIndexOfInternal.@call(replacement, ">", groupNameStartIndex); - if (groupNameEndIndex !== -1) { - var groupName = @stringSubstring.@call(replacement, groupNameStartIndex, groupNameEndIndex); - var capture = namedCaptures[groupName]; - if (capture !== @undefined) - result = result + @toString(capture); - - start = groupNameEndIndex + 1; - break; - } - } - - result = result + "$<"; - start++; - break; - default: - var chCode = ch.@charCodeAt(0); - if (chCode >= 0x30 && chCode <= 0x39) { - var originalStart = start - 1; - start++; - - var n = chCode - 0x30; - if (n > m) { - result = result + @stringSubstring.@call(replacement, originalStart, start); - break; - } - - if (start < replacementLength) { - var nextChCode = replacement.@charCodeAt(start); - if (nextChCode >= 0x30 && nextChCode <= 0x39) { - var nn = 10 * n + nextChCode - 0x30; - if (nn <= m) { - n = nn; - start++; - } - } - } - - if (n == 0) { - result = result + @stringSubstring.@call(replacement, originalStart, start); - break; - } - - var capture = captures[n - 1]; - if (capture !== @undefined) - result = result + capture; - } else - result = result + "$"; - break; - } - } - } - - return result + @stringSubstring.@call(replacement, lastStart); -} - -@overriddenName="[Symbol.replace]" -function replace(strArg, replace) -{ - "use strict"; - - if (!@isObject(this)) - @throwTypeError("RegExp.prototype.@@replace requires that |this| be an Object"); - - var regexp = this; - - var str = @toString(strArg); - var stringLength = str.length; - var functionalReplace = @isCallable(replace); - - if (!functionalReplace) - replace = @toString(replace); - - var global = regexp.global; - var unicode = false; - - if (global) { - unicode = regexp.unicode; - regexp.lastIndex = 0; - } - - var resultList = []; - var result; - var done = false; - while (!done) { - result = regexp.exec(str); - - if (result === null) - done = true; - else { - @arrayPush(resultList, result); - if (!global) - done = true; - else { - var matchStr = @toString(result[0]); - - if (!matchStr.length) { - var thisIndex = @toLength(regexp.lastIndex); - regexp.lastIndex = @advanceStringIndex(str, thisIndex, unicode); - } - } - } - } - - var accumulatedResult = ""; - var nextSourcePosition = 0; - - for (var i = 0, resultListLength = resultList.length; i < resultListLength; ++i) { - var result = resultList[i]; - var nCaptures = result.length - 1; - if (nCaptures < 0) - nCaptures = 0; - var matched = @toString(result[0]); - var matchLength = matched.length; - var position = @toIntegerOrInfinity(result.index); - position = (position > stringLength) ? stringLength : position; - position = (position < 0) ? 0 : position; - - var captures = []; - for (var n = 1; n <= nCaptures; n++) { - var capN = result[n]; - if (capN !== @undefined) - capN = @toString(capN); - @arrayPush(captures, capN); - } - - var replacement; - var namedCaptures = result.groups; - - if (functionalReplace) { - var replacerArgs = [ matched ]; - for (var j = 0; j < captures.length; j++) - @arrayPush(replacerArgs, captures[j]); - - @arrayPush(replacerArgs, position); - @arrayPush(replacerArgs, str); - - if (namedCaptures !== @undefined) - @arrayPush(replacerArgs, namedCaptures); - - var replValue = replace.@apply(@undefined, replacerArgs); - replacement = @toString(replValue); - } else { - if (namedCaptures !== @undefined) - namedCaptures = @toObject(namedCaptures, "RegExp.prototype[Symbol.replace] requires 'groups' property of a match not be null"); - - replacement = @getSubstitution(matched, str, position, captures, namedCaptures, replace); - } - - if (position >= nextSourcePosition) { - accumulatedResult = accumulatedResult + @stringSubstring.@call(str, nextSourcePosition, position) + replacement; - nextSourcePosition = position + matchLength; - } - } - - if (nextSourcePosition >= stringLength) - return accumulatedResult; - - return accumulatedResult + @stringSubstring.@call(str, nextSourcePosition); -} - -// 21.2.5.9 RegExp.prototype[@@search] (string) -@overriddenName="[Symbol.search]" -function search(strArg) -{ - "use strict"; - - var regexp = this; - - // 1. Let rx be the this value. - // 2. If Type(rx) is not Object, throw a TypeError exception. - if (!@isObject(this)) - @throwTypeError("RegExp.prototype.@@search requires that |this| be an Object"); - - // 3. Let S be ? ToString(string). - var str = @toString(strArg) - - // 4. Let previousLastIndex be ? Get(rx, "lastIndex"). - var previousLastIndex = regexp.lastIndex; - - // 5. If SameValue(previousLastIndex, 0) is false, then - // 5.a. Perform ? Set(rx, "lastIndex", 0, true). - if (!@sameValue(previousLastIndex, 0)) - regexp.lastIndex = 0; - - // 6. Let result be ? RegExpExec(rx, S). - var result = regexp.exec(str); - - // 7. Let currentLastIndex be ? Get(rx, "lastIndex"). - // 8. If SameValue(currentLastIndex, previousLastIndex) is false, then - // 8.a. Perform ? Set(rx, "lastIndex", previousLastIndex, true). - if (!@sameValue(regexp.lastIndex, previousLastIndex)) - regexp.lastIndex = previousLastIndex; - - // 9. If result is null, return -1. - if (result === null) - return -1; - - // 10. Return ? Get(result, "index"). - return result.index; -} - -// ES 21.2.5.11 RegExp.prototype[@@split](string, limit) -@overriddenName="[Symbol.split]" -function split(string, limit) -{ - "use strict"; - - // 1. Let rx be the this value. - // 2. If Type(rx) is not Object, throw a TypeError exception. - if (!@isObject(this)) - @throwTypeError("RegExp.prototype.@@split requires that |this| be an Object"); - var regexp = this; - - // 3. Let S be ? ToString(string). - var str = @toString(string); - - // 4. Let C be ? SpeciesConstructor(rx, %RegExp%). - var speciesConstructor = @speciesConstructor(regexp, @RegExp); - - // 5. Let flags be ? ToString(? Get(rx, "flags")). - var flags = @toString(regexp.flags); - - // 6. If flags contains "u", var unicodeMatching be true. - // 7. Else, let unicodeMatching be false. - var unicodeMatching = @stringIncludesInternal.@call(flags, "u"); - // 8. If flags contains "y", var newFlags be flags. - // 9. Else, let newFlags be the string that is the concatenation of flags and "y". - var newFlags = @stringIncludesInternal.@call(flags, "y") ? flags : flags + "y"; - - // 10. Let splitter be ? Construct(C, « rx, newFlags »). - var splitter = new speciesConstructor(regexp.source, newFlags); - - // We need to check again for RegExp subclasses that will fail the speciesConstructor test - // but can still use the fast path after we invoke the constructor above. - - // 11. Let A be ArrayCreate(0). - // 12. Let lengthA be 0. - var result = []; - - // 13. If limit is undefined, let lim be 2^32-1; else var lim be ? ToUint32(limit). - limit = (limit === @undefined) ? 0xffffffff : limit >>> 0; - - // 16. If lim = 0, return A. - if (!limit) - return result; - - // 14. [Defered from above] Let size be the number of elements in S. - var size = str.length; - - // 17. If size = 0, then - if (!size) { - // a. Let z be ? RegExpExec(splitter, S). - var z = splitter.exec(str); - // b. If z is not null, return A. - if (z !== null) - return result; - // c. Perform ! CreateDataProperty(A, "0", S). - @putByValDirect(result, 0, str); - // d. Return A. - return result; - } - - // 15. [Defered from above] Let p be 0. - var position = 0; - // 18. Let q be p. - var matchPosition = 0; - - // 19. Repeat, while q < size - while (matchPosition < size) { - // a. Perform ? Set(splitter, "lastIndex", q, true). - splitter.lastIndex = matchPosition; - // b. Let z be ? RegExpExec(splitter, S). - var matches = splitter.exec(str); - // c. If z is null, let q be AdvanceStringIndex(S, q, unicodeMatching). - if (matches === null) - matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching); - // d. Else z is not null, - else { - // i. Let e be ? ToLength(? Get(splitter, "lastIndex")). - var endPosition = @toLength(splitter.lastIndex); - // ii. Let e be min(e, size). - endPosition = (endPosition <= size) ? endPosition : size; - // iii. If e = p, let q be AdvanceStringIndex(S, q, unicodeMatching). - if (endPosition === position) - matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching); - // iv. Else e != p, - else { - // 1. Let T be a String value equal to the substring of S consisting of the elements at indices p (inclusive) through q (exclusive). - var subStr = @stringSubstring.@call(str, position, matchPosition); - // 2. Perform ! CreateDataProperty(A, ! ToString(lengthA), T). - // 3. Let lengthA be lengthA + 1. - @arrayPush(result, subStr); - // 4. If lengthA = lim, return A. - if (result.length == limit) - return result; - - // 5. Let p be e. - position = endPosition; - // 6. Let numberOfCaptures be ? ToLength(? Get(z, "length")). - // 7. Let numberOfCaptures be max(numberOfCaptures-1, 0). - var numberOfCaptures = matches.length > 1 ? matches.length - 1 : 0; - - // 8. Let i be 1. - var i = 1; - // 9. Repeat, while i <= numberOfCaptures, - while (i <= numberOfCaptures) { - // a. Let nextCapture be ? Get(z, ! ToString(i)). - var nextCapture = matches[i]; - // b. Perform ! CreateDataProperty(A, ! ToString(lengthA), nextCapture). - // d. Let lengthA be lengthA + 1. - @arrayPush(result, nextCapture); - // e. If lengthA = lim, return A. - if (result.length == limit) - return result; - // c. Let i be i + 1. - i++; - } - // 10. Let q be p. - matchPosition = position; - } - } - } - // 20. Let T be a String value equal to the substring of S consisting of the elements at indices p (inclusive) through size (exclusive). - var remainingStr = @stringSubstring.@call(str, position, size); - // 21. Perform ! CreateDataProperty(A, ! ToString(lengthA), T). - @arrayPush(result, remainingStr); - // 22. Return A. - return result; -} - -// ES 21.2.5.13 RegExp.prototype.test(string) -function test(strArg) -{ - "use strict"; - - var regexp = this; - - if (regexp.test == @Bun.OnigurumaRegExp.prototype.test) { - return regexp.test(strArg); - } - - // 1. Let R be the this value. - // 2. If Type(R) is not Object, throw a TypeError exception. - if (!@isObject(regexp)) - @throwTypeError("RegExp.prototype.test requires that |this| be an Object"); - - // 3. Let string be ? ToString(S). - var str = @toString(strArg); - - // 4. Let match be ? RegExpExec(R, string). - var match = regexp.exec(str); - - // 5. If match is not null, return true; else return false. - if (match !== null) - return true; - return false; -} diff --git a/src/deps/oniguruma b/src/deps/oniguruma deleted file mode 160000 -Subproject 0be69456f20278740a0db8418ba45c1a08e15a2 diff --git a/src/js_ast.zig b/src/js_ast.zig index ffdce6783..75539f235 100644 --- a/src/js_ast.zig +++ b/src/js_ast.zig @@ -1846,33 +1846,6 @@ pub const E = struct { pub var empty = RegExp{ .value = "" }; - pub fn usesLookBehindAssertion(this: *const RegExp) bool { - var pat = this.pattern(); - while (pat.len > 0) { - const start = strings.indexOfChar(pat, '?') orelse return false; - if (start == 0) { - pat = pat[1..]; - continue; - } - const l_paren = pat[start - 1]; - if (start > 1 and pat[start - 2] == '\\') { - pat = pat[start..]; - continue; - } - if (l_paren != '(' or pat.len < start + 1) { - pat = pat[start..]; - continue; - } - const op = pat[start + 1]; - if (op == '<') { - return true; - } - pat = pat[start + 1 ..]; - } - - return false; - } - pub fn pattern(this: RegExp) string { // rewind until we reach the /foo/gim diff --git a/src/js_printer.zig b/src/js_printer.zig index 062221ac6..1a817cc37 100644 --- a/src/js_printer.zig +++ b/src/js_printer.zig @@ -2581,32 +2581,7 @@ pub fn NewPrinter( p.print(" "); } - if (comptime is_bun_platform) { - if (e.value.len > 2 and e.usesLookBehindAssertion()) { - p.print("(new globalThis.Bun.OnigurumaRegExp("); - const pattern = e.pattern(); - const flags = e.flags(); - std.debug.assert(pattern.len > 0); - var buf = bun.default_allocator.alloc(u16, strings.elementLengthUTF8IntoUTF16([]const u8, pattern)) catch unreachable; - defer bun.default_allocator.free(buf); - const buf_len = std.unicode.utf8ToUtf16Le(buf, pattern) catch unreachable; - std.debug.assert(buf_len == buf.len); - const q = p.bestQuoteCharForString(buf, true); - p.print(q); - p.printQuotedUTF16(buf, q); - p.print(q); - if (flags.len > 0) { - p.print(","); - p.printSpace(); - p.printQuotedUTF8(flags, true); - } - p.print("))"); - } else { - p.print(e.value); - } - } else { - p.print(e.value); - } + p.print(e.value); // Need a space before the next identifier to avoid it turning into flags p.prev_reg_exp_end = p.writer.written; |