#include "src/regexp/experimental/experimental-interpreter.h"
#include <optional>
#include <string>
#include "src/base/strings.h"
#include "src/common/assert-scope.h"
#include "src/flags/flags.h"
#include "src/objects/fixed-array-inl.h"
#include "src/objects/string-inl.h"
#include "src/regexp/experimental/experimental.h"
#include "src/strings/char-predicates-inl.h"
#include "src/zone/zone-allocator.h"
#include "src/zone/zone-list-inl.h"
namespace v8 {
namespace internal {
namespace {
constexpr int kUndefinedRegisterValue = …;
template <class Character>
bool SatisfiesAssertion(RegExpAssertion::Type type,
base::Vector<const Character> context, int position) { … }
base::Vector<RegExpInstruction> ToInstructionVector(
Tagged<TrustedByteArray> raw_bytes,
const DisallowGarbageCollection& no_gc) { … }
template <class Character>
base::Vector<const Character> ToCharacterVector(
Tagged<String> str, const DisallowGarbageCollection& no_gc);
template <>
base::Vector<const uint8_t> ToCharacterVector<uint8_t>(
Tagged<String> str, const DisallowGarbageCollection& no_gc) { … }
template <>
base::Vector<const base::uc16> ToCharacterVector<base::uc16>(
Tagged<String> str, const DisallowGarbageCollection& no_gc) { … }
class FilterGroups { … };
template <class Character>
class NfaInterpreter { … };
}
int ExperimentalRegExpInterpreter::FindMatches(
Isolate* isolate, RegExp::CallOrigin call_origin,
Tagged<TrustedByteArray> bytecode, int register_count_per_match,
Tagged<String> input, int start_index, int32_t* output_registers,
int output_register_count, Zone* zone) { … }
}
}