#include "test/cctest/test-api.h"
#include <climits>
#include <csignal>
#include <map>
#include <memory>
#include <optional>
#include <sstream>
#include <string>
#include "test/cctest/cctest.h"
#if V8_OS_POSIX
#include <unistd.h>
#endif
#include "include/v8-date.h"
#include "include/v8-extension.h"
#include "include/v8-fast-api-calls.h"
#include "include/v8-function.h"
#include "include/v8-initialization.h"
#include "include/v8-json.h"
#include "include/v8-locker.h"
#include "include/v8-primitive-object.h"
#include "include/v8-regexp.h"
#include "include/v8-util.h"
#include "src/api/api-inl.h"
#include "src/base/bounds.h"
#include "src/base/overflowing-math.h"
#include "src/base/platform/platform.h"
#include "src/base/strings.h"
#include "src/codegen/compilation-cache.h"
#include "src/common/globals.h"
#include "src/compiler/globals.h"
#include "src/execution/execution.h"
#include "src/execution/futex-emulation.h"
#include "src/execution/protectors-inl.h"
#include "src/handles/global-handles.h"
#include "src/heap/heap-inl.h"
#include "src/heap/incremental-marking.h"
#include "src/logging/metrics.h"
#include "src/objects/feedback-vector-inl.h"
#include "src/objects/feedback-vector.h"
#include "src/objects/hash-table-inl.h"
#include "src/objects/js-array-inl.h"
#include "src/objects/js-promise-inl.h"
#include "src/objects/lookup.h"
#include "src/objects/map-updater.h"
#include "src/objects/objects-inl.h"
#include "src/objects/string-inl.h"
#include "src/objects/synthetic-module-inl.h"
#include "src/profiler/cpu-profiler.h"
#include "src/utils/utils.h"
#include "test/cctest/heap/heap-tester.h"
#include "test/cctest/heap/heap-utils.h"
#include "test/common/flag-utils.h"
#include "test/common/streaming-helper.h"
#if V8_ENABLE_WEBASSEMBLY
#include "src/wasm/wasm-engine.h"
#include "test/cctest/wasm/wasm-run-utils.h"
#include "test/common/wasm/test-signatures.h"
#include "test/common/wasm/wasm-macro-gen.h"
#endif
static const bool kLogThreading = …;
Array;
Boolean;
BooleanObject;
Context;
Extension;
External;
FixedArray;
Function;
FunctionTemplate;
HandleScope;
Local;
Maybe;
Message;
MessageCallback;
Module;
Name;
None;
Object;
ObjectTemplate;
Persistent;
PropertyAttribute;
Script;
String;
Symbol;
TryCatch;
Undefined;
V8;
Value;
#define THREADED_PROFILED_TEST …
void RunWithProfiler(void (*test)()) { … }
static int signature_callback_count;
static v8::Global<Value> signature_expected_receiver_global;
static void IncrementingSignatureCallback(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
static void Returns42(const v8::FunctionCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(Handles) { … }
THREADED_TEST(IsolateOfContext) { … }
static void TestSignatureLooped(const char* operation, Local<Value> receiver,
v8::Isolate* isolate) { … }
static void TestSignatureOptimized(const char* operation, Local<Value> receiver,
v8::Isolate* isolate) { … }
static void TestSignature(const char* operation, Local<Value> receiver,
v8::Isolate* isolate) { … }
THREADED_TEST(ReceiverSignature) { … }
namespace {
void DoNothingCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { … }
}
THREADED_TEST(Regress1188563) { … }
THREADED_TEST(HulIgennem) { … }
THREADED_TEST(Access) { … }
THREADED_TEST(AccessWithReceiver) { … }
THREADED_TEST(AccessElement) { … }
THREADED_TEST(Script) { … }
class TestResource: public String::ExternalStringResource { … };
class TestOneByteResource : public String::ExternalOneByteStringResource { … };
TEST(ScriptUsingStringResource) { … }
TEST(ScriptUsingOneByteStringResource) { … }
TEST(ScriptMakingExternalString) { … }
TEST(ScriptMakingExternalOneByteString) { … }
TEST(MakingExternalStringConditions) { … }
TEST(MakingExternalOneByteStringConditions) { … }
TEST(MakingExternalUnalignedOneByteString) { … }
THREADED_TEST(UsingExternalString) { … }
THREADED_TEST(UsingExternalOneByteString) { … }
class RandomLengthResource : public v8::String::ExternalStringResource { … };
class RandomLengthOneByteResource
: public v8::String::ExternalOneByteStringResource { … };
THREADED_TEST(NewExternalForVeryLongString) { … }
TEST(ScavengeExternalString) { … }
TEST(ScavengeExternalOneByteString) { … }
class TestOneByteResourceWithDisposeControl : public TestOneByteResource { … };
int TestOneByteResourceWithDisposeControl::dispose_count = …;
int TestOneByteResourceWithDisposeControl::dispose_calls = …;
TEST(ExternalStringWithDisposeHandling) { … }
THREADED_TEST(StringConcat) { … }
THREADED_TEST(GlobalProperties) { … }
static void handle_callback_impl(const v8::FunctionCallbackInfo<Value>& info,
i::Address callback) { … }
static void handle_callback(const v8::FunctionCallbackInfo<Value>& info) { … }
static void handle_callback_2(const v8::FunctionCallbackInfo<Value>& info) { … }
static void construct_callback(
const v8::FunctionCallbackInfo<Value>& info) { … }
static void Return239Callback(Local<Name> name,
const v8::PropertyCallbackInfo<Value>& info) { … }
template<typename Handler>
static void TestFunctionTemplateInitializer(Handler handler,
Handler handler_2) { … }
template<typename Constructor, typename Accessor>
static void TestFunctionTemplateAccessor(Constructor constructor,
Accessor accessor) { … }
THREADED_PROFILED_TEST(FunctionTemplate) { … }
static void FunctionCallbackForProxyTest(
const v8::FunctionCallbackInfo<Value>& info) { … }
THREADED_TEST(FunctionTemplateWithProxy) { … }
static void SimpleCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { … }
template<typename Callback>
static void TestSimpleCallback(Callback callback) { … }
THREADED_PROFILED_TEST(SimpleCallback) { … }
template<typename T>
void FastReturnValueCallback(const v8::FunctionCallbackInfo<v8::Value>& info);
static int32_t fast_return_value_int32 = …;
static uint32_t fast_return_value_uint32 = …;
static const double kFastReturnValueDouble = …;
static bool fast_return_value_bool = …;
enum ReturnValueOddball { … };
static ReturnValueOddball fast_return_value_void;
static bool fast_return_value_object_is_empty = …;
static i::Address address_of(v8::FunctionCallback callback) { … }
template<>
void FastReturnValueCallback<int32_t>(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
template<>
void FastReturnValueCallback<uint32_t>(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
template<>
void FastReturnValueCallback<double>(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
template<>
void FastReturnValueCallback<bool>(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
template<>
void FastReturnValueCallback<void>(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
template<>
void FastReturnValueCallback<Object>(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
template <typename T>
Local<Value> TestFastReturnValues() { … }
THREADED_PROFILED_TEST(FastReturnValues) { … }
THREADED_TEST(FunctionTemplateSetLength) { … }
static void* expected_ptr;
static void callback(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
static void TestExternalPointerWrapping() { … }
THREADED_TEST(ExternalWrap) { … }
THREADED_TEST(FindInstanceInPrototypeChain) { … }
THREADED_TEST(FindInstanceInPrototypeChainWithProxy) { … }
THREADED_TEST(TinyInteger) { … }
THREADED_TEST(BigSmiInteger) { … }
THREADED_TEST(BigInteger) { … }
THREADED_TEST(TinyUnsignedInteger) { … }
THREADED_TEST(BigUnsignedSmiInteger) { … }
THREADED_TEST(BigUnsignedInteger) { … }
THREADED_TEST(OutOfSignedRangeUnsignedInteger) { … }
THREADED_TEST(IsNativeError) { … }
THREADED_TEST(IsGeneratorFunctionOrObject) { … }
THREADED_TEST(IsAsyncFunction) { … }
THREADED_TEST(ArgumentsObject) { … }
THREADED_TEST(IsMapOrSet) { … }
THREADED_TEST(StringObject) { … }
TEST(StringObjectDelete) { … }
THREADED_TEST(NumberObject) { … }
THREADED_TEST(BigIntObject) { … }
THREADED_TEST(BooleanObject) { … }
THREADED_TEST(PrimitiveAndWrappedBooleans) { … }
THREADED_TEST(Number) { … }
THREADED_TEST(ToNumber) { … }
THREADED_TEST(Date) { … }
THREADED_TEST(Boolean) { … }
static void DummyCallHandler(const v8::FunctionCallbackInfo<v8::Value>& info) { … }
static void GetM(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(GlobalPrototype) { … }
THREADED_TEST(ObjectTemplate) { … }
THREADED_TEST(IntegerValue) { … }
static void GetNirk(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
static void GetRino(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
enum ObjectInstantiationMode { … };
static void TestObjectTemplateInheritedWithPrototype(
ObjectInstantiationMode mode) { … }
THREADED_TEST(TestObjectTemplateInheritedWithAccessorsInPrototype1) { … }
THREADED_TEST(TestObjectTemplateInheritedWithAccessorsInPrototype2) { … }
THREADED_TEST(TestObjectTemplateInheritedWithAccessorsInPrototype3) { … }
static void TestObjectTemplateInheritedWithoutInstanceTemplate(
ObjectInstantiationMode mode) { … }
THREADED_TEST(TestDataTypeChecks) { … }
THREADED_TEST(TestObjectTemplateInheritedWithPrototype1) { … }
THREADED_TEST(TestObjectTemplateInheritedWithPrototype2) { … }
THREADED_TEST(TestObjectTemplateClassInheritance) { … }
namespace {
v8::Intercepted NamedPropertyGetterWhichReturns42(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
}
THREADED_TEST(TestObjectTemplateReflectConstruct) { … }
static void GetFlabby(const v8::FunctionCallbackInfo<v8::Value>& info) { … }
static void GetKnurd(Local<Name> property,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(DescriptorInheritance) { … }
THREADED_TEST(DescriptorInheritance2) { … }
void SimpleAccessorGetter(Local<String> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
void SimpleAccessorSetter(Local<String> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }
void SymbolAccessorGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
void SymbolAccessorSetter(Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }
void SymbolAccessorGetterReturnsDefault(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
static void ThrowingSymbolAccessorGetter(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(AccessorIsPreservedOnAttributeChange) { … }
THREADED_TEST(UndefinedIsNotEnumerable) { … }
v8::Global<Script> call_recursively_script_global;
static const int kTargetRecursionDepth = …;
static void CallScriptRecursivelyCall(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
static void CallFunctionRecursivelyCall(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(DeepCrossLanguageRecursion) { … }
namespace {
v8::Intercepted ThrowingPropertyHandlerGet(
Local<Name> key, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
v8::Intercepted ThrowingPropertyHandlerSet(
Local<Name> key, Local<Value>, const v8::PropertyCallbackInfo<void>& info) { … }
}
THREADED_TEST(CallbackExceptionRegression) { … }
THREADED_TEST(FunctionPrototype) { … }
bool internal_field_check_called = …;
void OnInternalFieldCheck(const char* location, const char* message) { … }
TEST(InternalDataFields) { … }
THREADED_TEST(InternalFields) { … }
TEST(InternalFieldsSubclassing) { … }
THREADED_TEST(InternalFieldsOfRegularObjects) { … }
START_ALLOW_USE_DEPRECATED(…)
THREADED_TEST(GlobalObjectInternalFields) { … }
END_ALLOW_USE_DEPRECATED(…)
THREADED_TEST(GlobalObjectHasRealIndexedProperty) { … }
static void CheckAlignedPointerInInternalField(Local<v8::Object> obj,
void* value) { … }
THREADED_TEST(InternalFieldsAlignedPointers) { … }
THREADED_TEST(SetAlignedPointerInInternalFields) { … }
static void CheckAlignedPointerInEmbedderData(LocalContext* env,
v8::Local<v8::Object> some_obj,
int index, void* value) { … }
static void* AlignedTestPointer(int i) { … }
THREADED_TEST(EmbedderDataAlignedPointers) { … }
static void CheckEmbedderData(LocalContext* env, int index,
v8::Local<Value> data) { … }
THREADED_TEST(EmbedderData) { … }
THREADED_TEST(IdentityHash) { … }
void GlobalProxyIdentityHash(bool set_in_js) { … }
THREADED_TEST(GlobalProxyIdentityHash) { … }
TEST(SymbolIdentityHash) { … }
TEST(StringIdentityHash) { … }
THREADED_TEST(SymbolProperties) { … }
THREADED_TEST(SymbolTemplateProperties) { … }
THREADED_TEST(PrivatePropertiesOnProxies) { … }
THREADED_TEST(PrivateProperties) { … }
THREADED_TEST(GlobalSymbols) { … }
THREADED_TEST(GlobalSymbolsNoContext) { … }
static void CheckWellKnownSymbol(v8::Local<v8::Symbol>(*getter)(v8::Isolate*),
const char* name) { … }
THREADED_TEST(WellKnownSymbols) { … }
THREADED_TEST(GlobalPrivates) { … }
THREADED_TEST(HiddenProperties) { … }
THREADED_TEST(Regress97784) { … }
THREADED_TEST(External) { … }
THREADED_TEST(GlobalHandle) { … }
THREADED_TEST(ResettingGlobalHandle) { … }
THREADED_TEST(ResettingGlobalHandleToEmpty) { … }
template <class T>
static v8::Global<T> PassUnique(v8::Global<T> unique) { … }
template <class T>
static v8::Global<T> ReturnUnique(v8::Isolate* isolate,
const v8::Persistent<T>& global) { … }
THREADED_TEST(Global) { … }
namespace {
class TwoPassCallbackData;
void FirstPassCallback(const v8::WeakCallbackInfo<TwoPassCallbackData>& data);
void SecondPassCallback(const v8::WeakCallbackInfo<TwoPassCallbackData>& data);
struct GCCallbackMetadata { … };
class TwoPassCallbackData { … };
void SecondPassCallback(const v8::WeakCallbackInfo<TwoPassCallbackData>& data) { … }
void FirstPassCallback(const v8::WeakCallbackInfo<TwoPassCallbackData>& data) { … }
}
TEST(TwoPassPhantomCallbacks) { … }
TEST(TwoPassPhantomCallbacksNestedGc) { … }
TEST(TwoPassPhantomCallbacksTriggeredByStringAlloc) { … }
namespace {
void* IntKeyToVoidPointer(int key) { … }
Local<v8::Object> NewObjectForIntKey(
v8::Isolate* isolate, const v8::Global<v8::ObjectTemplate>& templ,
int key) { … }
template <typename K, typename V>
class PhantomStdMapTraits : public v8::StdMapTraits<K, V> { … };
template <typename Map>
void TestGlobalValueMap() { … }
}
TEST(GlobalValueMap) { … }
TEST(VectorOfGlobals) { … }
THREADED_TEST(GlobalHandleUpcast) { … }
THREADED_TEST(HandleEquality) { … }
THREADED_TEST(HandleEqualityPrimitives) { … }
THREADED_TEST(LocalHandle) { … }
class WeakCallCounter { … };
template <typename T>
struct WeakCallCounterAndPersistent { … };
template <typename T>
static void WeakPointerCallback(
const v8::WeakCallbackInfo<WeakCallCounterAndPersistent<T>>& data) { … }
THREADED_TEST(ScriptException) { … }
bool message_received;
static void check_message_0(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
THREADED_TEST(MessageHandler0) { … }
static void check_message_1(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
TEST(MessageHandler1) { … }
static void check_message_2(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
TEST(MessageHandler2) { … }
static void check_message_3(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
TEST(MessageHandler3) { … }
static void check_message_4(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
TEST(MessageHandler4) { … }
static void check_message_5a(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
static void check_message_5b(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
TEST(MessageHandler5) { … }
namespace {
const char message_attributes_script[] = …;
void CheckMessageAttributes(std::function<void(v8::Local<v8::Context> context,
v8::Local<v8::Message> message)>
tester) { … }
}
TEST(MessageGetLineNumber) { … }
TEST(MessageGetStartColumn) { … }
TEST(MessageGetEndColumn) { … }
TEST(MessageGetStartPosition) { … }
TEST(MessageGetEndPosition) { … }
TEST(MessageGetSource) { … }
TEST(MessageGetSourceLine) { … }
TEST(GetStackTraceLimit) { … }
TEST(GetStackTraceLimitSetFromJS) { … }
TEST(GetStackTraceLimitSetNegativeFromJS) { … }
void GetCurrentStackTrace(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(MessagePrintCurrentStackTrace) { … }
THREADED_TEST(GetSetProperty) { … }
THREADED_TEST(PropertyAttributes) { … }
void ExpectArrayValues(std::vector<int> expected_values,
v8::Local<v8::Context> context,
v8::Local<v8::Array> array) { … }
THREADED_TEST(Array_New_Basic) { … }
THREADED_TEST(Array_New_FromVector) { … }
struct CreateElementFactory { … };
size_t CreateElementFactory::abort_index = …;
size_t CreateElementFactory::current_index = …;
THREADED_TEST(Array_New_FromCallback_Success) { … }
THREADED_TEST(Array_New_FromCallback_Exception) { … }
void HandleF(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(Vector) { … }
THREADED_TEST(FunctionCall) { … }
THREADED_TEST(ConstructCall) { … }
THREADED_TEST(ConversionNumber) { … }
THREADED_TEST(isNumberType) { … }
THREADED_TEST(IntegerType) { … }
static void CheckUncle(v8::Isolate* isolate, v8::TryCatch* try_catch) { … }
THREADED_TEST(ConversionException) { … }
void ThrowFromC(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(APICatch) { … }
THREADED_TEST(APIThrowTryCatch) { … }
static void check_custom_error_tostring(v8::Local<v8::Message> message,
v8::Local<v8::Value> data) { … }
TEST(CustomErrorToString) { … }
static void check_custom_error_message(v8::Local<v8::Message> message,
v8::Local<v8::Value> data) { … }
TEST(CustomErrorMessage) { … }
static void check_custom_rethrowing_message(v8::Local<v8::Message> message,
v8::Local<v8::Value> data) { … }
TEST(CustomErrorRethrowsOnToString) { … }
TEST(CustomErrorRethrowsOnToStringInsideVerboseTryCatch) { … }
static void receive_message(v8::Local<v8::Message> message,
v8::Local<v8::Value> data) { … }
TEST(APIThrowMessage) { … }
TEST(APIThrowMessageAndVerboseTryCatch) { … }
TEST(APIStackOverflowAndVerboseTryCatch) { … }
THREADED_TEST(ExternalScriptException) { … }
void CThrowCountDown(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
void JSCheck(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(EvalInTryFinally) { … }
TEST(ExceptionOrder) { … }
void ThrowValue(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(ThrowValues) { … }
THREADED_TEST(CatchZero) { … }
THREADED_TEST(CatchExceptionFromWith) { … }
THREADED_TEST(TryCatchAndFinallyHidingException) { … }
void WithTryCatch(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(TryCatchAndFinally) { … }
void TryCatchMixedNestingCheck(v8::TryCatch* try_catch) { … }
void TryCatchMixedNestingHelper(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
TEST(TryCatchMixedNesting) { … }
void TryCatchNativeHelper(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
TEST(TryCatchNative) { … }
void TryCatchNativeResetHelper(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
TEST(TryCatchNativeReset) { … }
THREADED_TEST(Equality) { … }
THREADED_TEST(TypeOf) { … }
THREADED_TEST(InstanceOf) { … }
THREADED_TEST(MultiRun) { … }
static void GetXValue(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(SimplePropertyRead) { … }
THREADED_TEST(DefinePropertyOnAPIAccessor) { … }
THREADED_TEST(DefinePropertyOnDefineGetterSetter) { … }
static v8::Local<v8::Object> GetGlobalProperty(LocalContext* context,
char const* name) { … }
THREADED_TEST(DefineAPIAccessorOnObject) { … }
THREADED_TEST(DontDeleteAPIAccessorsCannotBeOverriden) { … }
static void Get239Value(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(ElementAPIAccessor) { … }
v8::Persistent<Value> xValue;
static void SetXValue(Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }
THREADED_TEST(SimplePropertyWrite) { … }
THREADED_TEST(SetterOnly) { … }
THREADED_TEST(NoAccessors) { … }
THREADED_TEST(MultiContexts) { … }
THREADED_TEST(FunctionPrototypeAcrossContexts) { … }
THREADED_TEST(Regress892105) { … }
static void ReturnThis(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(UndetectableObject) { … }
THREADED_TEST(VoidLiteral) { … }
THREADED_TEST(ExtensibleOnUndetectable) { … }
THREADED_TEST(ConstructCallWithUndetectable) { … }
static int increment_callback_counter = …;
static void IncrementCounterConstructCallback(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(SetCallAsFunctionHandlerConstructor) { … }
TEST(PersistentHandles) { … }
static void HandleLogDelegator(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(GlobalObjectTemplate) { … }
static const char* kSimpleExtensionSource = …;
TEST(SimpleExtensions) { … }
static const char* kStackTraceFromExtensionSource = …;
TEST(StackTraceInExtension) { … }
TEST(NullExtensions) { … }
static const char* kEmbeddedExtensionSource = …;
static const int kEmbeddedExtensionSourceValidLen = …;
TEST(ExtensionMissingSourceLength) { … }
TEST(ExtensionWithSourceLength) { … }
static const char* kEvalExtensionSource1 = …;
static const char* kEvalExtensionSource2 = …;
TEST(UseEvalFromExtension) { … }
static const char* kWithExtensionSource1 = …;
static const char* kWithExtensionSource2 = …;
TEST(UseWithFromExtension) { … }
TEST(AutoExtensions) { … }
static const char* kSyntaxErrorInExtensionSource = …;
TEST(SyntaxErrorExtensions) { … }
static const char* kExceptionInExtensionSource = …;
TEST(ExceptionExtensions) { … }
static const char* kNativeCallInExtensionSource = …;
static const char* kNativeCallTest = …;
TEST(NativeCallInExtensions) { … }
class NativeFunctionExtension : public Extension { … };
TEST(NativeFunctionDeclaration) { … }
TEST(NativeFunctionDeclarationError) { … }
TEST(NativeFunctionDeclarationErrorEscape) { … }
static void CheckDependencies(const char* name, const char* expected) { … }
THREADED_TEST(ExtensionDependency) { … }
static const char* kExtensionTestScript = …;
static void CallFun(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
class FunctionExtension : public Extension { … };
static int lookup_count = …;
v8::Local<v8::FunctionTemplate> FunctionExtension::GetNativeFunctionTemplate(
v8::Isolate* isolate, v8::Local<String> name) { … }
THREADED_TEST(FunctionLookup) { … }
THREADED_TEST(NativeFunctionConstructCall) { … }
static const char* last_location;
static const char* last_message;
void StoringErrorCallback(const char* location, const char* message) { … }
TEST(ErrorReporting) { … }
static size_t dcheck_count;
void DcheckErrorCallback(const char* file, int line, const char* message) { … }
TEST(DcheckErrorHandler) { … }
static void MissingScriptInfoMessageListener(v8::Local<v8::Message> message,
v8::Local<Value> data) { … }
THREADED_TEST(ErrorWithMissingScriptInfo) { … }
struct FlagAndPersistent { … };
static void SetFlag(const v8::WeakCallbackInfo<FlagAndPersistent>& data) { … }
static void IndependentWeakHandle(bool global_gc, bool interlinked) { … }
TEST(IndependentWeakHandle) { … }
class Trivial { … };
class Trivial2 { … };
void CheckInternalFields(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }
void InternalFieldCallback(bool global_gc) { … }
TEST(InternalFieldCallback) { … }
static void ResetUseValueAndSetFlag(
const v8::WeakCallbackInfo<FlagAndPersistent>& data) { … }
void i::heap::HeapTester::ResetWeakHandle(bool global_gc) { … }
TEST(ResetWeakHandle) { … }
static void ForceMinorGC2(const v8::WeakCallbackInfo<FlagAndPersistent>& data) { … }
static void ForceMinorGC1(const v8::WeakCallbackInfo<FlagAndPersistent>& data) { … }
static void ForceFullGC2(const v8::WeakCallbackInfo<FlagAndPersistent>& data) { … }
static void ForceFullGC1(const v8::WeakCallbackInfo<FlagAndPersistent>& data) { … }
TEST(GCFromWeakCallbacks) { … }
static void ArgumentsTestCallback(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(Arguments) { … }
namespace {
int p_getter_count;
int p_getter_count2;
void PGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
void RunHolderTest(v8::Local<v8::ObjectTemplate> obj) { … }
v8::Intercepted PGetter2(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
}
THREADED_TEST(GetterHolders) { … }
THREADED_TEST(PreInterceptorHolders) { … }
THREADED_TEST(ObjectInstantiation) { … }
static int StrCmp16(uint16_t* a, uint16_t* b) { … }
static int StrNCmp16(uint16_t* a, uint16_t* b, int n) { … }
int GetUtf8Length(v8::Isolate* isolate, Local<String> str) { … }
THREADED_TEST(StringWrite) { … }
static void Utf16Helper(LocalContext& context, const char* name,
const char* lengths_name, int len) { … }
void TestUtf8DecodingAgainstReference(
v8::Isolate* isolate, const char* cases[],
const std::vector<std::vector<uint16_t>>& unicode_expected) { … }
THREADED_TEST(OverlongSequencesAndSurrogates) { … }
THREADED_TEST(Utf16) { … }
static bool SameSymbol(Local<String> s1, Local<String> s2) { … }
THREADED_TEST(Utf16Symbol) { … }
THREADED_TEST(Utf16MissingTrailing) { … }
START_ALLOW_USE_DEPRECATED(…)
THREADED_TEST(Utf16Trailing3Byte_Value) { … }
END_ALLOW_USE_DEPRECATED(…)
THREADED_TEST(Utf16Trailing3Byte_ValueView) { … }
THREADED_TEST(ToArrayIndex) { … }
THREADED_TEST(ErrorConstruction) { … }
THREADED_TEST(ExceptionCreateMessageLength) { … }
static void YGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
static void YSetter(Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }
THREADED_TEST(DeleteAccessor) { … }
static int trouble_nesting = …;
static void TroubleCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
static int report_count = …;
static void ApiUncaughtExceptionTestListener(v8::Local<v8::Message>,
v8::Local<Value>) { … }
TEST(ApiUncaughtException) { … }
static const char* script_resource_name = …;
static void ExceptionInNativeScriptTestListener(v8::Local<v8::Message> message,
v8::Local<Value>) { … }
TEST(ExceptionInNativeScript) { … }
TEST(CompilationErrorUsingTryCatchHandler) { … }
static bool g_security_callback_result = …;
static bool SecurityTestCallback(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object,
Local<v8::Value> data) { … }
TEST(SecurityHandler) { … }
THREADED_TEST(SecurityChecks) { … }
THREADED_TEST(SecurityChecksForPrototypeChain) { … }
static bool security_check_with_gc_called;
static bool SecurityTestCallbackWithGC(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object,
Local<v8::Value> data) { … }
TEST(SecurityTestGCAllowed) { … }
THREADED_TEST(CrossDomainDelete) { … }
THREADED_TEST(CrossDomainPropertyIsEnumerable) { … }
THREADED_TEST(CrossDomainFor) { … }
THREADED_TEST(CrossDomainForInOnPrototype) { … }
TEST(ContextDetachGlobal) { … }
TEST(DetachGlobal) { … }
void GetThisX(const v8::FunctionCallbackInfo<v8::Value>& info) { … }
TEST(DetachedAccesses) { … }
static bool allowed_access = …;
static bool AccessBlocker(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object,
Local<v8::Value> data) { … }
static void UnreachableGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
static void UnreachableSetter(Local<Name>, Local<Value>,
const v8::PropertyCallbackInfo<void>&) { … }
static void UnreachableFunction(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
TEST(AccessControl) { … }
TEST(AccessControlES5) { … }
static bool AccessAlwaysBlocked(Local<v8::Context> accessing_context,
Local<v8::Object> global,
Local<v8::Value> data) { … }
static bool AccessAlwaysAllowed(Local<v8::Context> accessing_context,
Local<v8::Object> global,
Local<v8::Value> data) { … }
TEST(Regress470113) { … }
THREADED_TEST(CrossDomainAccessors) { … }
static int access_count = …;
static bool AccessCounter(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object,
Local<v8::Value> data) { … }
TEST(AccessControlIC) { … }
THREADED_TEST(Version) { … }
static void InstanceFunctionCallback(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(InstanceProperties) { … }
namespace {
v8::Intercepted GlobalObjectInstancePropertiesGet(
Local<Name> key, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
int script_execution_count = …;
void ScriptExecutionCallback(v8::Isolate* isolate, Local<Context> context) { … }
}
THREADED_TEST(ContextScriptExecutionCallback) { … }
THREADED_TEST(GlobalObjectInstanceProperties) { … }
THREADED_TEST(ObjectGetOwnPropertyNames) { … }
THREADED_TEST(CallKnownGlobalReceiver) { … }
namespace {
void ShadowFunctionCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
int shadow_y;
int shadow_y_setter_call_count;
int shadow_y_getter_call_count;
void ShadowYSetter(Local<Name>, Local<Value>,
const v8::PropertyCallbackInfo<void>& info) { … }
void ShadowYGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
v8::Intercepted ShadowIndexedGet(
uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
v8::Intercepted ShadowNamedGet(
Local<Name> key, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
}
THREADED_TEST(ShadowObject) { … }
THREADED_TEST(ShadowObjectAndDataProperty) { … }
THREADED_TEST(ShadowObjectAndDataPropertyTurbo) { … }
THREADED_TEST(SetPrototype) { … }
THREADED_TEST(Regress91517) { … }
THREADED_TEST(FunctionReadOnlyPrototype) { … }
THREADED_TEST(SetPrototypeThrows) { … }
THREADED_TEST(FunctionRemovePrototype) { … }
THREADED_TEST(GetterSetterExceptions) { … }
THREADED_TEST(Constructor) { … }
THREADED_TEST(FunctionDescriptorException) { … }
THREADED_TEST(EvalAliasedDynamic) { … }
THREADED_TEST(CrossEval) { … }
THREADED_TEST(EvalInDetachedGlobal) { … }
THREADED_TEST(CrossLazyLoad) { … }
static void call_as_function(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(CallAsFunction) { … }
THREADED_TEST(CallableObject) { … }
THREADED_TEST(Regress567998) { … }
static int Recurse(v8::Isolate* isolate, int depth, int iterations) { … }
THREADED_TEST(HandleIteration) { … }
namespace {
v8::Intercepted InterceptorCallICFastApi(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
void FastApiCallback_TrivialSignature(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
START_ALLOW_USE_DEPRECATED(…)
void FastApiCallback_SimpleSignature(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
END_ALLOW_USE_DEPRECATED(…)
void GenerateSomeGarbage() { … }
void DirectApiCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { … }
}
THREADED_TEST(CallICFastApi_DirectCall_GCMoveStub) { … }
void ThrowingDirectApiCallback(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(CallICFastApi_DirectCall_Throw) { … }
namespace {
int p_getter_count_3;
Local<Value> DoDirectGetter() { … }
void DirectGetterCallback(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
template <typename Accessor>
void LoadICFastApi_DirectCall_GCMoveStub(Accessor accessor) { … }
}
THREADED_PROFILED_TEST(LoadICFastApi_DirectCall_GCMoveStub) { … }
void ThrowingDirectGetterCallback(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(LoadICFastApi_DirectCall_Throw) { … }
THREADED_PROFILED_TEST(InterceptorCallICFastApi_TrivialSignature) { … }
THREADED_PROFILED_TEST(CallICFastApi_TrivialSignature) { … }
static void ThrowingGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(VariousGetPropertiesAndThrowingCallbacks) { … }
THREADED_TEST(GetRealNamedPropertyAttributes_With_Proxy) { … }
static void ThrowingCallbackWithTryCatch(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
static int call_depth;
static void WithTryCatch(Local<Message> message, Local<Value> data) { … }
static void ThrowFromJS(Local<Message> message, Local<Value> data) { … }
static void ThrowViaApi(Local<Message> message, Local<Value> data) { … }
static void WebKitLike(Local<Message> message, Local<Value> data) { … }
THREADED_TEST(ExceptionsDoNotPropagatePastTryCatch) { … }
static void ParentGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
static void ChildGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }
THREADED_TEST(Overriding) { … }
namespace {
void ShouldThrowOnErrorAccessorGetter(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
void ShouldThrowOnErrorAccessorSetter(
Local<Name> name, Local<v8::Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }
}
THREADED_TEST(AccessorShouldThrowOnError) { … }
namespace {
v8::Intercepted ShouldThrowOnErrorGetter(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }
v8::Intercepted ShouldThrowOnErrorSetter(
Local<Name> name, Local<v8::Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }
v8::Intercepted ShouldThrowOnErrorQuery(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Integer>& info) { … }
v8::Intercepted ShouldThrowOnErrorDeleter(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Boolean>& info) { … }
void ShouldThrowOnErrorPropertyEnumerator(
const v8::PropertyCallbackInfo<v8::Array>& info) { … }
}
THREADED_TEST(InterceptorShouldThrowOnError) { … }
static void EmptyHandler(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
TEST(CallHandlerHasNoSideEffect) { … }
TEST(FunctionTemplateNewHasNoSideEffect) { … }
TEST(FunctionTemplateNewWithCacheHasNoSideEffect) { … }
TEST(FunctionNewHasNoSideEffect) { … }
static void DefaultConstructHandler(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
static void NoSideEffectConstructHandler(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
static void NoSideEffectAndSideEffectConstructHandler(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }
TEST(FunctionNewInstanceHasNoSideEffect) { … }
TEST(CallHandlerAsFunctionHasNoSideEffectNotSupported) { … }
static void IsConstructHandler(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(IsConstructCall) { … }
static void NewTargetHandler(const v8::FunctionCallbackInfo<v8::Value>& args) { … }
THREADED_TEST(NewTargetHandler) { … }
THREADED_TEST(ObjectProtoToString) { … }
TEST(ObjectProtoToStringES6) { … }
namespace {
void CheckGetConstructorNameOfVar(LocalContext& context, const char* var_name,
const char* constructor_name) { … }
}
THREADED_TEST(ObjectGetConstructorName) { … }
THREADED_TEST(SubclassGetConstructorName) { … }
UNINITIALIZED_TEST(SharedObjectGetConstructorName) { … }
unsigned ApiTestFuzzer::linear_congruential_generator;
std::vector<std::unique_ptr<ApiTestFuzzer>> ApiTestFuzzer::fuzzers_;
bool ApiTestFuzzer::fuzzing_ = …;
v8::base::Semaphore ApiTestFuzzer::all_tests_done_(0);
int ApiTestFuzzer::tests_being_run_;
int ApiTestFuzzer::active_tests_;
int ApiTestFuzzer::current_fuzzer_;
void ApiTestFuzzer::Fuzz() { … }
bool ApiTestFuzzer::NextThread() { … }void ApiTestFuzzer::Run() { … }void ApiTestFuzzer::SetUp(PartOfTest part) { … }void ApiTestFuzzer::RunAllTests() { … }int ApiTestFuzzer::GetNextFuzzer() { … }void ApiTestFuzzer::ContextSwitch() { … }void ApiTestFuzzer::TearDown() { … }void ApiTestFuzzer::CallTest() { … }#define THREADING_TEST …THREADING_TEST …THREADING_TEST …THREADING_TEST …THREADING_TEST …THREADING_TEST …THREADING_TEST …THREADING_TEST …THREADING_TEST …#undef THREADING_TESTstatic void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) { … }static void ThrowInJSNoCatch(const v8::FunctionCallbackInfo<v8::Value>& args) { … }TEST(NestedLockers) { … }TEST(NestedLockersNoTryCatch) { … }THREADED_TEST(RecursiveLocking) { … }static void UnlockForAMoment(const v8::FunctionCallbackInfo<v8::Value>& args) { … }THREADED_TEST(LockUnlockLock) { … }static int GetGlobalObjectsCount() { … }static void CheckSurvivingGlobalObjectsCount(int expected) { … }TEST(DontLeakGlobalObjects) { … }static void WeakApiCallback(
const v8::WeakCallbackInfo<Persistent<v8::Object>>& data) { … }TEST(WeakCallbackApi) { … }v8::Persistent<v8::Object> some_objectv8::Persistent<v8::Object> bad_handlevoid NewPersistentHandleCallback2(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }void NewPersistentHandleCallback1(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }TEST(NewPersistentHandleFromWeakCallback) { … }v8::Persistent<v8::Object> to_be_disposedvoid DisposeAndForceGcCallback2(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }void DisposeAndForceGcCallback1(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }TEST(DoNotUseDeletedNodesInSecondLevelGc) { … }void DisposingCallback(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }void HandleCreatingCallback2(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }void HandleCreatingCallback1(
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { … }TEST(NoGlobalHandlesOrphaningDueToWeakCallback) { … }THREADED_TEST(CheckForCrossContextObjectLiterals) { … }static v8::Local<Value> NestedScope(v8::Local<Context> env) { … }THREADED_TEST(NestedHandleScopeAndContexts) { … }static v8::base::HashMap* instruction_stream_map = …static v8::base::HashMap* jitcode_line_info = …static int saw_bar = …static int move_events = …static bool FunctionNameIs(const char* expected,
const v8::JitCodeEvent* event) { … }static void event_handler(const v8::JitCodeEvent* event) { … }UNINITIALIZED_TEST(SetJitCodeEventHandler) { … }#if V8_ENABLE_WEBASSEMBLYstatic bool saw_wasm_main = …static void wasm_event_handler(const v8::JitCodeEvent* event) { … }TEST(WasmSetJitCodeEventHandler) { … }#endif TEST(ExternalAllocatedMemory) { … }TEST(Regress51719) { … }THREADED_TEST(Regress54) { … }TEST(CatchStackOverflow) { … }static void CheckTryCatchSourceInfo(v8::Local<v8::Script> script,
const char* resource_name,
int line_offset) { … }THREADED_TEST(TryCatchSourceInfo) { … }THREADED_TEST(TryCatchSourceInfoForEOSError) { … }THREADED_TEST(CompilationCache) { … }static void FunctionNameCallback(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }THREADED_TEST(CallbackFunctionName) { … }THREADED_TEST(DateAccess) { … }void CheckIsSymbolAt(v8::Isolate* isolate, v8::Local<v8::Array> properties,
unsigned index, const char* name) { … }void CheckStringArray(v8::Isolate* isolate, v8::Local<v8::Array> properties,
unsigned length, const char* names[]) { … }void CheckProperties(v8::Isolate* isolate, v8::Local<v8::Value> val,
unsigned length, const char* names[]) { … }void CheckOwnProperties(v8::Isolate* isolate, v8::Local<v8::Value> val,
unsigned elmc, const char* elmv[]) { … }THREADED_TEST(PropertyEnumeration) { … }THREADED_TEST(PropertyEnumeration2) { … }THREADED_TEST(GetPropertyNames) { … }THREADED_TEST(ProxyGetPropertyNames) { … }THREADED_TEST(ProxyGetPropertyNamesWithOwnKeysTrap) { … }THREADED_TEST(AccessChecksReenabledCorrectly) { … }THREADED_TEST(DictionaryICLoadedFunction) { … }THREADED_TEST(CrossContextNew) { … }TEST(ObjectClone) { … }class OneByteVectorResource : public v8::String::ExternalOneByteStringResource { … }class UC16VectorResource : public v8::String::ExternalStringResource { … }static void MorphAString(i::Tagged<i::String> string,
OneByteVectorResource* one_byte_resource,
UC16VectorResource* uc16_resource) { … }THREADED_TEST(MorphCompositeStringTest) { … }TEST(CompileExternalTwoByteSource) { … }TEST(ReadOnlyPropertyInGlobalProto) { … }TEST(CreateDataProperty) { … }TEST(DefineOwnProperty) { … }TEST(DefineProperty) { … }THREADED_TEST(GetCurrentContextWhenNotInContext) { … }THREADED_TEST(InitGlobalVarInProtoChain) { … }THREADED_TEST(ReplaceConstantFunction) { … }THREADED_TEST(ScriptContextDependence) { … }#if V8_ENABLE_WEBASSEMBLYstatic int asm_warning_triggered = …static void AsmJsWarningListener(v8::Local<v8::Message> message,
v8::Local<Value>) { … }TEST(AsmJsWarning) { … }#endif static int error_level_message_count = …static int expected_error_level = …static void ErrorLevelListener(v8::Local<v8::Message> message,
v8::Local<Value>) { … }TEST(ErrorLevelWarning) { … }v8::PromiseRejectEvent reject_event = …int promise_reject_counter = …int promise_revoke_counter = …int promise_reject_after_resolved_counter = …int promise_resolve_after_resolved_counter = …int promise_reject_msg_line_number = …int promise_reject_msg_column_number = …int promise_reject_line_number = …int promise_reject_column_number = …int promise_reject_frame_count = …bool promise_reject_is_shared_cross_origin = …void PromiseRejectCallback(v8::PromiseRejectMessage reject_message) { … }v8::Local<v8::Promise> GetPromise(const char* name) { … }v8::Local<v8::Value> RejectValue() { … }void ResetPromiseStates() { … }TEST(PromiseRejectCallback) { … }TEST(PromiseRejectIsSharedCrossOrigin) { … }TEST(PromiseRejectMarkAsHandled) { … }void PromiseRejectCallbackConstructError(
v8::PromiseRejectMessage reject_message) { … }TEST(PromiseRejectCallbackConstructError) { … }void SetPromise(const char* name, v8::Local<v8::Promise> promise) { … }class PromiseHookData { … }PromiseHookData* promise_hook_datavoid CustomPromiseHook(v8::PromiseHookType type, v8::Local<v8::Promise> promise,
v8::Local<v8::Value> parentPromise) { … }TEST(PromiseHook) { … }TEST(EvalWithSourceURLInMessageScriptResourceNameOrSourceURL) { … }TEST(RecursionWithSourceURLInMessageScriptResourceNameOrSourceURL) { … }TEST(Regress2333) { … }static uint32_t* stack_limitstatic void GetStackLimitCallback(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }static uint32_t* ComputeStackLimit(uint32_t size) { … }static const int stack_breathing_room = …TEST(SetStackLimit) { … }TEST(SetStackLimitInThread) { … }THREADED_TEST(GetHeapStatistics) { … }TEST(GetHeapSpaceStatistics) { … }TEST(NumberOfNativeContexts) { … }TEST(NumberOfDetachedContexts) { … }TEST(ExternalizeOldSpaceTwoByteCons) { … }TEST(ExternalizeOldSpaceOneByteCons) { … }TEST(ExternalStringCollectedAtTearDown) { … }TEST(ExternalInternalizedStringCollectedAtTearDown) { … }TEST(ExternalInternalizedStringCollectedAtGC) { … }static double DoubleFromBits(uint64_t value) { … }static uint64_t DoubleToBits(double value) { … }static double DoubleToDateTime(double input) { … }static double DoubleFromBits(uint32_t high_bits, uint32_t low_bits) { … }THREADED_TEST(QuietSignalingNaNs) { … }static void SpaghettiIncident(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }THREADED_TEST(SpaghettiStackReThrow) { … }TEST(Regress528) { … }THREADED_TEST(ScriptOrigin) { … }THREADED_TEST(FunctionGetInferredName) { … }THREADED_TEST(FunctionGetDebugName) { … }THREADED_TEST(ScriptLineNumber) { … }THREADED_TEST(ScriptColumnNumber) { … }THREADED_TEST(ScriptStartPosition) { … }THREADED_TEST(FunctionGetScriptId) { … }THREADED_TEST(FunctionGetBoundFunction) { … }THREADED_TEST(FunctionProtoToString) { … }static void GetterWhichReturns42(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }static void SetterWhichSetsYOnThisTo23(
Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }v8::Intercepted FooGetInterceptor(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { … }v8::Intercepted FooSetInterceptor(Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }TEST(SetterOnConstructorPrototype) { … }v8::Intercepted NamedPropertySetterWhichSetsYOnThisTo23(
Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) { … }THREADED_TEST(InterceptorOnConstructorPrototype) { … }TEST(Regress618) { … }v8::Isolate* gc_callbacks_isolate = …int prologue_call_count = …int epilogue_call_count = …int prologue_call_count_second = …int epilogue_call_count_second = …int prologue_call_count_alloc = …int epilogue_call_count_alloc = …void PrologueCallback(v8::Isolate* isolate,
v8::GCType,
v8::GCCallbackFlags flags) { … }void EpilogueCallback(v8::Isolate* isolate,
v8::GCType,
v8::GCCallbackFlags flags) { … }void PrologueCallbackSecond(v8::Isolate* isolate,
v8::GCType,
v8::GCCallbackFlags flags) { … }void EpilogueCallbackSecond(v8::Isolate* isolate,
v8::GCType,
v8::GCCallbackFlags flags) { … }void PrologueCallbackNew(v8::Isolate* isolate, v8::GCType,
v8::GCCallbackFlags flags, void* data) { … }void EpilogueCallbackNew(v8::Isolate* isolate, v8::GCType,
v8::GCCallbackFlags flags, void* data) { … }TEST(GCCallbacksOld) { … }TEST(GCCallbacksWithData) { … }TEST(ContainsOnlyOneByte) { … }void FailedAccessCheckCallbackGC(Local<v8::Object> target,
v8::AccessType type,
Local<v8::Value> data) { … }TEST(GCInFailedAccessCheckCallback) { … }TEST(IsolateNewDispose) { … }UNINITIALIZED_TEST(DisposeIsolateWhenInUse) { … }static void BreakArrayGuarantees(const char* script) { … }TEST(VerifyArrayPrototypeGuarantees) { … }TEST(RunTwoIsolatesOnSingleThread) { … }static int CalcFibonacci(v8::Isolate* isolate, int limit) { … }class IsolateThread : public v8::base::Thread { … }TEST(MultipleIsolatesOnIndividualThreads) { … }TEST(IsolateDifferentContexts) { … }class InitDefaultIsolateThread : public v8::base::Thread { … }static void InitializeTestHelper(InitDefaultIsolateThread::TestCase testCase) { … }TEST(InitializeDefaultIsolateOnSecondaryThread_FatalHandler) { … }TEST(InitializeDefaultIsolateOnSecondaryThread_CounterFunction) { … }TEST(InitializeDefaultIsolateOnSecondaryThread_CreateHistogramFunction) { … }TEST(InitializeDefaultIsolateOnSecondaryThread_AddHistogramSampleFunction) { … }TEST(StringCheckMultipleContexts) { … }TEST(NumberCheckMultipleContexts) { … }TEST(BooleanCheckMultipleContexts) { … }TEST(DontDeleteCellLoadIC) { … }TEST(WrapperClassId) { … }TEST(RegExp) { … }START_ALLOW_USE_DEPRECATED(…)THREADED_TEST(Equals) { … }END_ALLOW_USE_DEPRECATED(…)v8::Intercepted Getter(v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }void Enumerator(const v8::PropertyCallbackInfo<v8::Array>& info) { … }TEST(NamedEnumeratorAndForIn) { … }TEST(DefinePropertyPostDetach) { … }static void InstallContextId(v8::Local<Context> context, int id) { … }static void CheckContextId(v8::Local<Object> object, int expected) { … }THREADED_TEST(CreationContext) { … }THREADED_TEST(CreationContextOfJsFunction) { … }THREADED_TEST(CreationContextOfJsBoundFunction) { … }v8::Intercepted HasOwnPropertyIndexedPropertyGetter(
uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info) { … }v8::Intercepted HasOwnPropertyNamedPropertyGetter(
Local<Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) { … }v8::Intercepted HasOwnPropertyIndexedPropertyQuery(
uint32_t index, const v8::PropertyCallbackInfo<v8::Integer>& info) { … }v8::Intercepted HasOwnPropertyNamedPropertyQuery(
Local<Name> property, const v8::PropertyCallbackInfo<v8::Integer>& info) { … }v8::Intercepted HasOwnPropertyNamedPropertyQuery2(
Local<Name> property, const v8::PropertyCallbackInfo<v8::Integer>& info) { … }void HasOwnPropertyAccessorGetter(
Local<Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) { … }v8::Intercepted HasOwnPropertyAccessorNameGetter(
Local<Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) { … }TEST(HasOwnProperty) { … }TEST(IndexedInterceptorWithStringProto) { … }void CheckCodeGenerationAllowed() { … }void CheckCodeGenerationDisallowed() { … }char first_fourty_bytes[41]v8::ModifyCodeGenerationFromStringsResult CodeGenerationAllowed(
Local<Context> context, Local<Value> source, bool is_code_like) { … }v8::ModifyCodeGenerationFromStringsResult CodeGenerationDisallowed(
Local<Context> context, Local<Value> source, bool is_code_like) { … }v8::ModifyCodeGenerationFromStringsResult ModifyCodeGeneration(
Local<Context> context, Local<Value> source, bool is_code_like) { … }THREADED_TEST(AllowCodeGenFromStrings) { … }TEST(ModifyCodeGenFromStrings) { … }v8::ModifyCodeGenerationFromStringsResult RejectStringsIncrementNumbers(
Local<Context> context, Local<Value> source, bool is_code_like) { … }TEST(AllowFromStringsOrModifyCodegen) { … }TEST(SetErrorMessageForCodeGenFromStrings) { … }TEST(CaptureSourceForCodeGenFromStrings) { … }static void NonObjectThis(const v8::FunctionCallbackInfo<v8::Value>& args) { … }THREADED_TEST(CallAPIFunctionOnNonObject) { … }THREADED_TEST(ReadOnlyIndexedProperties) { … }static int CountLiveMapsInMapCache(i::Tagged<i::Context> context) { … }TEST(Regress1516) { … }static void TestReceiver(Local<Value> expected_result,
Local<Value> expected_receiver,
const char* code) { … }THREADED_TEST(ForeignFunctionReceiver) { … }uint8_t callback_fired = …uint8_t before_call_entered_callback_count1 = …uint8_t before_call_entered_callback_count2 = …void CallCompletedCallback1(v8::Isolate*) { … }void CallCompletedCallback2(v8::Isolate*) { … }void BeforeCallEnteredCallback1(v8::Isolate*) { … }void BeforeCallEnteredCallback2(v8::Isolate*) { … }void RecursiveCall(const v8::FunctionCallbackInfo<v8::Value>& args) { … }TEST(CallCompletedCallback) { … }void CallCompletedCallbackNoException(v8::Isolate*) { … }void CallCompletedCallbackException(v8::Isolate*) { … }TEST(CallCompletedCallbackOneException) { … }TEST(CallCompletedCallbackTwoExceptions) { … }static void MicrotaskOne(const v8::FunctionCallbackInfo<Value>& info) { … }static void MicrotaskTwo(const v8::FunctionCallbackInfo<Value>& info) { … }void* g_passed_to_three = …static void MicrotaskThree(void* data) { … }TEST(EnqueueMicrotask) { … }static void MicrotaskExceptionOne(
const v8::FunctionCallbackInfo<Value>& info) { … }static void MicrotaskExceptionTwo(
const v8::FunctionCallbackInfo<Value>& info) { … }int handler_call_count = …static void MicrotaskExceptionHandler(Local<Message> message,
Local<Value> exception) { … }TEST(RunMicrotasksIgnoresThrownExceptions) { … }static void ThrowExceptionMicrotask(void* data) { … }int microtask_callback_count = …static void IncrementCounterMicrotask(void* data) { … }TEST(RunMicrotasksIgnoresThrownExceptionsFromApi) { … }uint8_t microtasks_completed_callback_count = …static void MicrotasksCompletedCallback(v8::Isolate* isolate, void*) { … }static void MicrotasksCompletedCallbackCallScript(v8::Isolate* isolate, void*) { … }TEST(SetAutorunMicrotasks) { … }TEST(RunMicrotasksWithoutEnteringContext) { … }static void Regress808911_MicrotaskCallback(void* data) { … }static void Regress808911_CurrentContextWrapper(
const v8::FunctionCallbackInfo<Value>& info) { … }THREADED_TEST(Regress808911) { … }TEST(ScopedMicrotasks) { … }void AssertCowElements(bool expected, const char* source) { … }TEST(CheckCOWArraysCreatedRuntimeCounter) { … }TEST(StaticGetters) { … }UNINITIALIZED_TEST(IsolateEmbedderData) { … }TEST(StringEmpty) { … }THREADED_TEST(CheckIsLeafTemplateForApiObject) { … }static void Helper137002(bool do_store,
bool polymorphic,
bool remove_accessor,
bool interceptor) { … }THREADED_TEST(Regress137002a) { … }THREADED_TEST(Regress137002b) { … }THREADED_TEST(Regress142088) { … }THREADED_TEST(Regress137496) { … }THREADED_TEST(Regress157124) { … }THREADED_TEST(Regress2535) { … }THREADED_TEST(Regress2746) { … }THREADED_TEST(Regress260106) { … }THREADED_TEST(JSONParseObject) { … }THREADED_TEST(JSONParseNumber) { … }void TestJSONParseArray(Local<Context> context, const char* input_str,
const char* expected_output_str,
i::ElementsKind expected_elements_kind) { … }THREADED_TEST(JSONParseArray) { … }THREADED_TEST(JSONStringifyObject) { … }THREADED_TEST(JSONStringifyObjectWithGap) { … }#if V8_OS_POSIXclass ThreadInterruptTest { … }THREADED_TEST(SemaphoreInterruption) { … }#endif void UnreachableCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { … }TEST(JSONStringifyAccessCheck) { … }bool access_check_fail_thrown = …bool catch_callback_called = …void FailedAccessCheckThrows(Local<v8::Object> target,
v8::AccessType type,
Local<v8::Value> data) { … }void CatcherCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { … }void HasOwnPropertyCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { … }void CheckCorrectThrow(const char* script) { … }TEST(AccessCheckThrows) { … }class RequestInterruptTestBase { … }class RequestInterruptTestBaseWithSimpleInterrupt
: public RequestInterruptTestBase { … }class RequestInterruptTestWithFunctionCall
: public RequestInterruptTestBaseWithSimpleInterrupt { … }class RequestInterruptTestWithMethodCall
: public RequestInterruptTestBaseWithSimpleInterrupt { … }class RequestInterruptTestWithAccessor
: public RequestInterruptTestBaseWithSimpleInterrupt { … }class RequestInterruptTestWithNativeAccessor
: public RequestInterruptTestBaseWithSimpleInterrupt { … }class RequestInterruptTestWithMethodCallAndInterceptor
: public RequestInterruptTestBaseWithSimpleInterrupt { … }class RequestInterruptTestWithMathAbs
: public RequestInterruptTestBaseWithSimpleInterrupt { … }TEST(RequestInterruptTestWithFunctionCall) { … }TEST(RequestInterruptTestWithMethodCall) { … }TEST(RequestInterruptTestWithAccessor) { … }TEST(RequestInterruptTestWithNativeAccessor) { … }TEST(RequestInterruptTestWithMethodCallAndInterceptor) { … }TEST(RequestInterruptTestWithMathAbs) { … }class RequestMultipleInterrupts : public RequestInterruptTestBase { … }TEST(RequestMultipleInterrupts) { … }static bool interrupt_was_called = …void SmallScriptsInterruptCallback(v8::Isolate* isolate, void* data) { … }TEST(RequestInterruptSmallScripts) { … }static v8::Global<Value> function_new_expected_env_globalstatic void FunctionNewCallback(const v8::FunctionCallbackInfo<Value>& info) { … }THREADED_TEST(FunctionNew) { … }void Verify(v8::Isolate* isolate, Local<v8::Object> obj) { … }THREADED_TEST(ObjectNew) { … }TEST(EscapableHandleScope) { … }START_ALLOW_USE_DEPRECATED(…)static void SetterWhichExpectsThisAndHolderToDiffer(
Local<Name>, Local<Value>, const v8::PropertyCallbackInfo<void>& info) { … }END_ALLOW_USE_DEPRECATED(…)TEST(Regress239669) { … }class ApiCallOptimizationChecker { … }v8::Global<Object> ApiCallOptimizationChecker::datav8::Global<Object> ApiCallOptimizationChecker::receiverv8::Global<Object> ApiCallOptimizationChecker::holderv8::Global<Object> ApiCallOptimizationChecker::calleeint ApiCallOptimizationChecker::count = …TEST(FunctionCallOptimization) { … }TEST(FunctionCallOptimizationMultipleArgs) { … }static void ReturnsSymbolCallback(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }TEST(ApiCallbackCanReturnSymbols) { … }TEST(EmptyApiCallback) { … }TEST(SimpleSignatureCheck) { … }TEST(ChainSignatureCheck) { … }static const char* last_event_messagestatic v8::LogEventStatus last_event_statusstatic int event_count = …void StoringEventLoggerCallback(const char* message, int status) { … }TEST(EventLogging) { … }TEST(PropertyDescriptor) { … }TEST(Promises) { … }TEST(PromiseThen) { … }TEST(PromiseThen2) { … }TEST(PromiseCatchCallsBuiltin) { … }TEST(PromiseStateAndValue) { … }TEST(ResolvedPromiseReFulfill) { … }TEST(RejectedPromiseReFulfill) { … }TEST(DisallowJavascriptExecutionScope) { … }TEST(AllowJavascriptExecutionScope) { … }TEST(ThrowOnJavascriptExecution) { … }class MockPlatform final : public TestPlatform { … }TEST_WITH_PLATFORM(DumpOnJavascriptExecution, MockPlatform) { … }TEST(Regress354123) { … }bool ValueEqualsString(v8::Isolate* isolate, Local<Value> lhs,
const char* rhs) { … }TEST(ScriptNameAndLineNumber) { … }TEST(ScriptPositionInfo) { … }TEST(ScriptPositionInfoWithLineEnds) { … }template <typename T>
void CheckMagicComments(v8::Isolate* isolate, Local<T> unbound_script,
const char* expected_source_url,
const char* expected_source_mapping_url) { … }void SourceURLHelper(v8::Isolate* isolate, const char* source_text,
const char* expected_source_url,
const char* expected_source_mapping_url) { … }TEST(ScriptSourceURLAndSourceMappingURL) { … }TEST(GetOwnPropertyDescriptor) { … }TEST(Regress411877) { … }TEST(GetHiddenPropertyTableAfterAccessCheck) { … }TEST(Regress411793) { … }v8::MaybeLocal<Module> UnexpectedModuleResolveCallback(
Local<Context> context, Local<String> specifier,
Local<FixedArray> import_attributes, Local<Module> referrer) { … }void RunStreamingTest(const char** chunks, v8::ScriptType type,
v8::ScriptCompiler::StreamedSource::Encoding encoding =
v8::ScriptCompiler::StreamedSource::ONE_BYTE,
bool expected_success = true,
const char* expected_source_url = nullptr,
const char* expected_source_mapping_url = nullptr) { … }void RunStreamingTest(const char** chunks,
v8::ScriptCompiler::StreamedSource::Encoding encoding =
v8::ScriptCompiler::StreamedSource::ONE_BYTE,
bool expected_success = true,
const char* expected_source_url = nullptr,
const char* expected_source_mapping_url = nullptr) { … }TEST(StreamingSimpleScript) { … }TEST(StreamingScriptConstantArray) { … }TEST(StreamingScriptEvalShadowing) { … }TEST(StreamingBiggerScript) { … }TEST(StreamingScriptWithParseError) { … }TEST(StreamingUtf8Script) { … }TEST(StreamingUtf8ScriptWithSplitCharactersSanityCheck) { … }TEST(StreamingUtf8ScriptWithSplitCharacters) { … }TEST(StreamingUtf8ScriptWithSplitCharactersValidEdgeCases) { … }TEST(StreamingUtf8ScriptWithSplitCharactersInvalidEdgeCases) { … }TEST(StreamingWithDebuggingEnabledLate) { … }TEST(StreamingScriptWithInvalidUtf8) { … }TEST(StreamingUtf8ScriptWithMultipleMultibyteCharactersSomeSplit) { … }TEST(StreamingUtf8ScriptWithMultipleMultibyteCharactersSomeSplit2) { … }TEST(StreamingWithHarmonyScopes) { … }void StreamingWithIsolateScriptCache(bool run_gc) { … }TEST(StreamingWithIsolateScriptCache) { … }TEST(StreamingWithIsolateScriptCacheClearingRootSFI) { … }TEST(CodeCache) { … }v8::MaybeLocal<Value> UnexpectedSyntheticModuleEvaluationStepsCallback(
Local<Context> context, Local<Module> module) { … }static int synthetic_module_callback_countv8::MaybeLocal<Value> SyntheticModuleEvaluationStepsCallback(
Local<Context> context, Local<Module> module) { … }v8::MaybeLocal<Value> SyntheticModuleEvaluationStepsCallbackFail(
Local<Context> context, Local<Module> module) { … }v8::MaybeLocal<Value> SyntheticModuleEvaluationStepsCallbackSetExport(
Local<Context> context, Local<Module> module) { … }Local<Module> CompileAndInstantiateModule(v8::Isolate* isolate,
Local<Context> context,
const char* resource_name,
const char* source) { … }Local<Module> CreateAndInstantiateSyntheticModule(
v8::Isolate* isolate, Local<String> module_name, Local<Context> context,
const v8::MemorySpan<const v8::Local<v8::String>>& export_names,
v8::Module::SyntheticModuleEvaluationSteps evaluation_steps) { … }Local<Module> CompileAndInstantiateModuleFromCache(
v8::Isolate* isolate, Local<Context> context, const char* resource_name,
const char* source, v8::ScriptCompiler::CachedData* cache) { … }v8::MaybeLocal<Module> SyntheticModuleResolveCallback(
Local<Context> context, Local<String> specifier,
Local<FixedArray> import_attributes, Local<Module> referrer) { … }v8::MaybeLocal<Module> SyntheticModuleThatThrowsDuringEvaluateResolveCallback(
Local<Context> context, Local<String> specifier,
Local<FixedArray> import_attributes, Local<Module> referrer) { … }TEST(ModuleCodeCache) { … }TEST(CreateSyntheticModule) { … }TEST(CreateSyntheticModuleGC) { … }TEST(CreateSyntheticModuleGCName) { … }TEST(SyntheticModuleSetExports) { … }TEST(SyntheticModuleSetMissingExport) { … }TEST(SyntheticModuleEvaluationStepsNoThrow) { … }TEST(SyntheticModuleEvaluationStepsThrow) { … }TEST(SyntheticModuleEvaluationStepsSetExport) { … }TEST(ImportFromSyntheticModule) { … }TEST(ImportFromSyntheticModuleThrow) { … }v8::MaybeLocal<Module> ModuleEvaluateTerminateExecutionResolveCallback(
Local<Context> context, Local<String> specifier,
Local<FixedArray> import_attributes, Local<Module> referrer) { … }void ModuleEvaluateTerminateExecution(
const v8::FunctionCallbackInfo<v8::Value>& args) { … }TEST(ModuleEvaluateTerminateExecution) { … }TEST(ModuleEvaluateImportTerminateExecution) { … }TEST(CodeCacheModuleScriptMismatch) { … }TEST(CodeCacheScriptModuleMismatch) { … }TEST(InvalidCodeCacheDataInCompileModule) { … }void TestInvalidCacheData(v8::ScriptCompiler::CompileOptions option) { … }TEST(InvalidCodeCacheData) { … }TEST(StringConcatOverflow) { … }TEST(TurboAsmDisablesDetach) { … }TEST(ClassPrototypeCreationContext) { … }TEST(SimpleStreamingScriptWithSourceURL) { … }TEST(StreamingScriptWithSplitSourceURL) { … }TEST(StreamingScriptWithSourceMappingURLInTheMiddle) { … }void GetCurrentHostDefinedOptionsTest(
const v8::FunctionCallbackInfo<Value>& info) { … }THREADED_TEST(TestGetCurrentHostDefinedOptions) { … }TEST(NewStringRangeError) { … }TEST(SealHandleScope) { … }TEST(SealHandleScopeNested) { … }TEST(Map) { … }TEST(Set) { … }TEST(SetDeleteThenAsArray) { … }TEST(MapDeleteThenAsArray) { … }TEST(CompatibleReceiverCheckOnCachedICHandler) { … }THREADED_TEST(ReceiverConversionForAccessors) { … }class TerminateExecutionThread : public v8::base::Thread { … }TEST(FutexInterruption) { … }TEST(StackCheckTermination) { … }static int nb_uncaught_exception_callback_calls = …bool NoAbortOnUncaughtException(v8::Isolate* isolate) { … }TEST(AbortOnUncaughtExceptionNoAbort) { … }TEST(AccessCheckedIsConcatSpreadable) { … }TEST(AccessCheckedToStringTag) { … }TEST(TemplateIteratorPrototypeIntrinsics) { … }TEST(TemplateAsyncIteratorPrototypeIntrinsics) { … }TEST(TemplateErrorPrototypeIntrinsics) { … }TEST(ObjectTemplateArrayProtoIntrinsics) { … }TEST(ObjectTemplatePerContextIntrinsics) { … }TEST(Proxy) { … }WeakCallCounterAndPersistent<Value>* CreateGarbageWithWeakCallCounter(
v8::Isolate* isolate, WeakCallCounter* counter) { … }class MemoryPressureThread : public v8::base::Thread { … }TEST(MemoryPressure) { … }TEST(SetIntegrityLevel) { … }TEST(PrivateForApiIsNumber) { … }THREADED_TEST(ImmutableProto) { … }v8::Global<v8::Context> call_eval_context_globalv8::Global<v8::Function> call_eval_bound_function_globalvoid CallEval(const v8::FunctionCallbackInfo<v8::Value>& info) { … }TEST(CrossActivationEval) { … }TEST(EvalInAccessCheckedContext) { … }THREADED_TEST(ImmutableProtoWithParent) { … }TEST(InternalFieldsOnGlobalProxy) { … }THREADED_TEST(ImmutableProtoGlobal) { … }THREADED_TEST(MutableProtoGlobal) { … }TEST(SetPrototypeTemplate) { … }void ensure_receiver_is_global_proxy(
v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { … }THREADED_TEST(GlobalAccessorInfo) { … }TEST(DeterministicRandomNumberGeneration) { … }UNINITIALIZED_TEST(AllowAtomicsWait) { … }enum ContextId { … }void CheckContexts(v8::Isolate* isolate) { … }void ContextCheckGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }void ContextCheckSetter(Local<Name> name, Local<Value>,
const v8::PropertyCallbackInfo<void>& info) { … }void ContextCheckToString(const v8::FunctionCallbackInfo<v8::Value>& info) { … }TEST(CorrectEnteredContext) { … }const int kCustomHostDefinedOptionsLengthForTesting = …v8::MaybeLocal<v8::Promise> HostImportModuleDynamicallyCallbackResolve(
Local<v8::Context> context, Local<v8::Data> host_defined_options,
Local<v8::Value> resource_name, Local<v8::String> specifier,
Local<v8::FixedArray> import_attributes) { … }TEST(DynamicImport) { … }v8::MaybeLocal<v8::Promise>
HostImportModuleDynamicallyWithAssertionsCallbackResolve(
Local<v8::Context> context, Local<v8::Data> host_defined_options,
Local<v8::Value> resource_name, Local<v8::String> specifier,
Local<v8::FixedArray> import_attributes) { … }TEST(DynamicImportWithAssertions) { … }void HostInitializeImportMetaObjectCallbackStatic(Local<Context> context,
Local<Module> module,
Local<Object> meta) { … }TEST(ImportMeta) { … }void HostInitializeImportMetaObjectCallbackThrow(Local<Context> context,
Local<Module> module,
Local<Object> meta) { … }TEST(ImportMetaThrowUnhandled) { … }TEST(ImportMetaThrowHandled) { … }v8::MaybeLocal<v8::Context> HostCreateShadowRealmContextCallbackStatic(
v8::Local<v8::Context> initiator_context) { … }TEST(CreateShadowRealmContextHostNotSupported) { … }TEST(CreateShadowRealmContext) { … }v8::MaybeLocal<v8::Context> HostCreateShadowRealmContextCallbackThrow(
v8::Local<v8::Context> initiator_context) { … }TEST(CreateShadowRealmContextThrow) { … }TEST(GetModuleNamespace) { … }TEST(ModuleGetUnboundModuleScript) { … }TEST(ModuleScriptId) { … }TEST(ModuleIsSourceTextModule) { … }TEST(GlobalTemplateWithDoubleProperty) { … }TEST(PrimitiveArray) { … }TEST(PersistentValueMap) { … }enum class AtomicsWaitCallbackAction { … }class StopAtomicsWaitThreadstruct AtomicsWaitCallbackInfo { … }class StopAtomicsWaitThread : public v8::base::Thread { … }void AtomicsWaitCallbackForTesting(
v8::Isolate::AtomicsWaitEvent event, Local<v8::SharedArrayBuffer> sab,
size_t offset_in_bytes, int64_t value, double timeout_in_ms,
v8::Isolate::AtomicsWaitWakeHandle* wake_handle, void* data) { … }void AtomicsWaitCallbackCommon(v8::Isolate* isolate, Local<Value> sab,
size_t initial_offset,
size_t offset_multiplier) { … }TEST(AtomicsWaitCallback) { … }#if V8_ENABLE_WEBASSEMBLYTEST(WasmCodeFlushingOnMemoryPressure) { … }TEST(WasmI32AtomicWaitCallback) { … }TEST(WasmI64AtomicWaitCallback) { … }#endif TEST(BigIntAPI) { … }TEST(GetJSEntryStubs) { … }TEST(MicrotaskContextShouldBeNativeContext) { … }TEST(PreviewSetKeysIteratorEntriesWithDeleted) { … }TEST(PreviewSetValuesIteratorEntriesWithDeleted) { … }TEST(PreviewMapEntriesIteratorEntries) { … }TEST(PreviewMapValuesIteratorEntriesWithDeleted) { … }TEST(PreviewMapKeysIteratorEntriesWithDeleted) { … }static v8::Isolate* isolate_1static v8::Isolate* isolate_2v8::Persistent<v8::Context> context_1v8::Persistent<v8::Context> context_2void CallIsolate1(const v8::FunctionCallbackInfo<v8::Value>& info) { … }void CallIsolate2(const v8::FunctionCallbackInfo<v8::Value>& info) { … }UNINITIALIZED_TEST(NestedIsolates) { … }#undef THREADED_PROFILED_TEST#if !defined(V8_LITE_MODE) && defined(V8_ENABLE_TURBOFAN)#ifdef V8_USE_SIMULATOR_WITH_GENERIC_C_CALLS#endif template <typename Value, typename Impl, typename Ret>
struct BasicApiChecker { … }#ifdef V8_USE_SIMULATOR_WITH_GENERIC_C_CALLS#endif enum class Behavior { … }template <typename T>
struct ApiNumberChecker : BasicApiChecker<T, ApiNumberChecker<T>, void> { … }struct UnexpectedObjectChecker
: BasicApiChecker<v8::Local<v8::Value>, UnexpectedObjectChecker, void> { … }struct EmbedderType { … }struct ApiObjectChecker
: BasicApiChecker<v8::Local<v8::Value>, ApiObjectChecker, void> { … }template <typename Value, typename Impl, typename Ret>
bool SetupTest(v8::Local<v8::Value> initial_value, LocalContext* env,
BasicApiChecker<Value, Impl, Ret>* checker,
const char* source_code, bool has_options = true,
bool accept_any_receiver = true, bool setup_try_catch = true) { … }template <typename I, std::enable_if_t<std::is_integral<I>::value, bool> = true>
void CheckEqual(I actual, I expected, std::ostringstream& error_msg) { … }template <typename F,
std::enable_if_t<std::is_floating_point<F>::value, bool> = true>
void CheckEqual(F actual, F expected, std::ostringstream& error_msg) { … }#if V8_ENABLE_WEBASSEMBLYvoid CallAndCheckFromWasm() { … }#endif template <typename T>
void CallAndCheck(T expected_value, Behavior expected_behavior,
ApiCheckerResultFlags expected_path,
v8::Local<v8::Value> initial_value,
Behavior raise_exception = Behavior::kNoException) { … }void CheckApiObjectArg() { … }static const char* fast_calls_error_message = …static const char* fast_calls_error_location = …void FastCallsErrorCallback(const char* location, const char* message) { … }void CheckFastCallsWithConstructor() { … }template <typename T>
struct ReturnValueChecker : BasicApiChecker<T, ReturnValueChecker<T>, T> { … }struct AllocationChecker : BasicApiChecker<int32_t, AllocationChecker, void> { … }struct ThrowInReentrantJSChecker
: BasicApiChecker<int32_t, ThrowInReentrantJSChecker, void> { … }template <typename T>
void CheckFastReturnValue(v8::Local<v8::Value> expected_value,
ApiCheckerResultFlags expected_path) { … }void CallAndDeopt() { … }void CallNoOptions(int32_t expected_value) { … }void CallNoConvertReceiver(int32_t expected_value) { … }void CallWithLessArguments() { … }void CallWithMoreArguments() { … }void FastApiCallWithAllocationAndGC(AllocationChecker::GCLocation gc_location) { … }TEST(FastApiCallWithAllocationAndGCInC) { … }TEST(FastApiCallWithAllocationAndGCInJS) { … }TEST(FastApiCallWithThrowInReentrantCode) { … }void DoFastReentrantCall(i::Isolate* i_isolate, LocalContext* env, int* sum,
int value, bool inner_most_throws)struct RecursiveReentrantJSChecker
: BasicApiChecker<int32_t, RecursiveReentrantJSChecker, void> { … }void DoFastReentrantCall(i::Isolate* i_isolate, LocalContext* env, int* sum,
int value, bool inner_most_throws) { … }void FastApiCallRecursion(bool inner_most_throws) { … }TEST(FastApiCallRecursionWithException) { … }TEST(FastApiCallRecursionNoException) { … }void CallWithUnexpectedReceiverType(v8::Local<v8::Value> receiver) { … }void CallWithUnexpectedObjectType(v8::Local<v8::Value> receiver) { … }class TestCFunctionInfo : public v8::CFunctionInfo { … }void CheckDynamicTypeInfo() { … }#endif TEST(FastApiStackSlot) { … }TEST(FastApiCalls) { … }#if V8_ENABLE_WEBASSEMBLYTEST(FastApiCallsFromWasm) { … }#endif#if !defined(V8_LITE_MODE) && defined(V8_ENABLE_TURBOFAN)namespace …#endif TEST(FastApiSequenceOverloads) { … }TEST(FastApiOverloadResolution) { … }TEST(Recorder_GetContext) { … }class MetricsRecorder : public v8::metrics::Recorder { … }TEST(TriggerMainThreadMetricsEvent) { … }TEST(TriggerDelayedMainThreadMetricsEvent) { … }TEST(TriggerThreadSafeMetricsEvent) { … }void SetupCodeLike(LocalContext* env, const char* name,
v8::Local<v8::FunctionTemplate> to_string,
bool is_code_like) { … }TEST(CodeLikeEval) { … }TEST(CodeLikeFunction) { … }THREADED_TEST(MicrotaskQueueOfContext) { … }THREADED_TEST(SetMicrotaskQueueOfContext) { … }bool MockSabConstructorEnabledCallback(v8::Local<v8::Context>) { … }bool MockSabConstructorDisabledCallback(v8::Local<v8::Context>) { … }TEST(TestSetSabConstructorEnabledCallback) { … }void NodeTypeCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { … }TEST(EmbedderInstanceTypes) { … }template <typename T>
void TestCopyAndMoveConstructionAndAssignment() { … }UNINITIALIZED_TEST(IsolateCreateParamsIsMovableAndCopyable) { … }UNINITIALIZED_TEST(OOMDetailsAreMovableAndCopyable) { … }UNINITIALIZED_TEST(JitCodeEventIsMovableAndCopyable) { … }#if V8_ENABLE_WEBASSEMBLYTEST(WasmAbortStreamingAfterContextDisposal) { … }#endif TEST(DeepFreezeIncompatibleTypes) { … }TEST(DeepFreezeIsFrozen) { … }TEST(DeepFreezeAllowsSyntax) { … }class AllowEmbedderObjects : public v8::Context::DeepFreezeDelegate { … }TEST(DeepFreezesJSApiObjectWithDelegate) { … }class MyObject { … }class HiddenDataDelegate : public v8::Context::DeepFreezeDelegate { … }TEST(DeepFreezeDoesntFreezeJSApiObjectFunctionData) { … }TEST(DeepFreezeForbidsJSApiObjectWithoutDelegate) { … }TEST(DeepFreezeFreezesJSApiObjectData) { … }TEST(DeepFreezeFreezesExternalObjectData) { … }void handle_property(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }void handle_property_2(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { … }void handle_property(const v8::FunctionCallbackInfo<v8::Value>& info) { … }TEST(DeepFreezeInstantiatesAccessors) { … }void handle_object_property(v8::Local<v8::Name> property,
const v8::PropertyCallbackInfo<Value>& info) { … }TEST(DeepFreezeInstantiatesAccessors2) { … }void GetIsolatePreservedContinuationData(
const v8::FunctionCallbackInfo<v8::Value>& info) { … }TEST(ContinuationPreservedEmbedderData) { … }TEST(ContinuationPreservedEmbedderDataClearedAndRestored) { … }static bool did_callback_microtask_run = …static void CallbackTaskMicrotask(void* data) { … }TEST(EnqueMicrotaskContinuationPreservedEmbedderData_CallbackTask) { … }static bool did_callable_microtask_run = …static void CallableTaskMicrotask(const v8::FunctionCallbackInfo<Value>& info) { … }TEST(EnqueMicrotaskContinuationPreservedEmbedderData_CallableTask) { … }static bool did_thenable_callback_run = …static void ThenableCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { … }TEST(ContinuationPreservedEmbedderData_Thenable) { … }TEST(WrappedFunctionWithClass) { … }