GIF89; GIF89; %PDF- %PDF-
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef INCLUDE_V8_SNAPSHOT_H_
#define INCLUDE_V8_SNAPSHOT_H_
#include "v8-internal.h" // NOLINT(build/include_directory)
#include "v8-isolate.h" // NOLINT(build/include_directory)
#include "v8-local-handle.h" // NOLINT(build/include_directory)
#include "v8config.h" // NOLINT(build/include_directory)
namespace v8 {
class Object;
namespace internal {
class SnapshotCreatorImpl;
} // namespace internal
class V8_EXPORT StartupData {
public:
/**
* Whether the data created can be rehashed and and the hash seed can be
* recomputed when deserialized.
* Only valid for StartupData returned by SnapshotCreator::CreateBlob().
*/
bool CanBeRehashed() const;
/**
* Allows embedders to verify whether the data is valid for the current
* V8 instance.
*/
bool IsValid() const;
const char* data;
int raw_size;
};
/**
* Callback and supporting data used in SnapshotCreator to implement embedder
* logic to serialize internal fields of v8::Objects.
* Internal fields that directly reference V8 objects are serialized without
* calling this callback. Internal fields that contain aligned pointers are
* serialized by this callback if it returns non-zero result. Otherwise it is
* serialized verbatim.
*/
struct SerializeInternalFieldsCallback {
using CallbackFunction = StartupData (*)(Local<Object> holder, int index,
void* data);
SerializeInternalFieldsCallback(CallbackFunction function = nullptr,
void* data_arg = nullptr)
: callback(function), data(data_arg) {}
CallbackFunction callback;
void* data;
};
/**
* Similar to SerializeInternalFieldsCallback, but works with the embedder data
* in a v8::Context.
*/
struct SerializeContextDataCallback {
using CallbackFunction = StartupData (*)(Local<Context> holder, int index,
void* data);
SerializeContextDataCallback(CallbackFunction function = nullptr,
void* data_arg = nullptr)
: callback(function), data(data_arg) {}
CallbackFunction callback;
void* data;
};
/**
* Callback and supporting data used to implement embedder logic to deserialize
* internal fields of v8::Objects.
*/
struct DeserializeInternalFieldsCallback {
using CallbackFunction = void (*)(Local<Object> holder, int index,
StartupData payload, void* data);
DeserializeInternalFieldsCallback(CallbackFunction function = nullptr,
void* data_arg = nullptr)
: callback(function), data(data_arg) {}
CallbackFunction callback;
void* data;
};
/**
* Similar to DeserializeInternalFieldsCallback, but works with the embedder
* data in a v8::Context.
*/
struct DeserializeContextDataCallback {
using CallbackFunction = void (*)(Local<Context> holder, int index,
StartupData payload, void* data);
DeserializeContextDataCallback(CallbackFunction function = nullptr,
void* data_arg = nullptr)
: callback(function), data(data_arg) {}
CallbackFunction callback;
void* data;
};
/**
* Helper class to create a snapshot data blob.
*
* The Isolate used by a SnapshotCreator is owned by it, and will be entered
* and exited by the constructor and destructor, respectively; The destructor
* will also destroy the Isolate. Experimental language features, including
* those available by default, are not available while creating a snapshot.
*/
class V8_EXPORT SnapshotCreator {
public:
enum class FunctionCodeHandling { kClear, kKeep };
/**
* Initialize and enter an isolate, and set it up for serialization.
* The isolate is either created from scratch or from an existing snapshot.
* The caller keeps ownership of the argument snapshot.
* \param existing_blob existing snapshot from which to create this one.
* \param external_references a null-terminated array of external references
* that must be equivalent to CreateParams::external_references.
* \param owns_isolate whether this SnapshotCreator should call
* v8::Isolate::Dispose() during its destructor.
*/
V8_DEPRECATE_SOON("Use the version that passes CreateParams instead.")
explicit SnapshotCreator(Isolate* isolate,
const intptr_t* external_references = nullptr,
const StartupData* existing_blob = nullptr,
bool owns_isolate = true);
/**
* Create and enter an isolate, and set it up for serialization.
* The isolate is either created from scratch or from an existing snapshot.
* The caller keeps ownership of the argument snapshot.
* \param existing_blob existing snapshot from which to create this one.
* \param external_references a null-terminated array of external references
* that must be equivalent to CreateParams::external_references.
*/
V8_DEPRECATE_SOON("Use the version that passes CreateParams instead.")
explicit SnapshotCreator(const intptr_t* external_references = nullptr,
const StartupData* existing_blob = nullptr);
/**
* Creates an Isolate for serialization and enters it. The creator fully owns
* the Isolate and will invoke `v8::Isolate::Dispose()` during destruction.
*
* \param params The parameters to initialize the Isolate for. Details:
* - `params.external_references` are expected to be a
* null-terminated array of external references.
* - `params.existing_blob` is an optional snapshot blob from
* which can be used to initialize the new blob.
*/
explicit SnapshotCreator(const v8::Isolate::CreateParams& params);
/**
* Initializes an Isolate for serialization and enters it. The creator does
* not own the Isolate but merely initialize it properly.
*
* \param isolate The isolate that was allocated by `Isolate::Allocate()~.
* \param params The parameters to initialize the Isolate for. Details:
* - `params.external_references` are expected to be a
* null-terminated array of external references.
* - `params.existing_blob` is an optional snapshot blob from
* which can be used to initialize the new blob.
*/
SnapshotCreator(v8::Isolate* isolate,
const v8::Isolate::CreateParams& params);
/**
* Destroy the snapshot creator, and exit and dispose of the Isolate
* associated with it.
*/
~SnapshotCreator();
/**
* \returns the isolate prepared by the snapshot creator.
*/
Isolate* GetIsolate();
/**
* Set the default context to be included in the snapshot blob.
* The snapshot will not contain the global proxy, and we expect one or a
* global object template to create one, to be provided upon deserialization.
*
* \param internal_fields_serializer An optional callback used to serialize
* internal pointer fields set by
* v8::Object::SetAlignedPointerInInternalField().
*
* \param context_data_serializer An optional callback used to serialize
* context embedder data set by
* v8::Context::SetAlignedPointerInEmbedderData().
*
*/
void SetDefaultContext(
Local<Context> context,
SerializeInternalFieldsCallback internal_fields_serializer =
SerializeInternalFieldsCallback(),
SerializeContextDataCallback context_data_serializer =
SerializeContextDataCallback());
/**
* Add additional context to be included in the snapshot blob.
* The snapshot will include the global proxy.
*
* \param internal_fields_serializer Similar to internal_fields_serializer
* in SetDefaultContext() but only applies to the context being added.
*
* \param context_data_serializer Similar to context_data_serializer
* in SetDefaultContext() but only applies to the context being added.
*/
size_t AddContext(Local<Context> context,
SerializeInternalFieldsCallback internal_fields_serializer =
SerializeInternalFieldsCallback(),
SerializeContextDataCallback context_data_serializer =
SerializeContextDataCallback());
/**
* Attach arbitrary V8::Data to the context snapshot, which can be retrieved
* via Context::GetDataFromSnapshotOnce after deserialization. This data does
* not survive when a new snapshot is created from an existing snapshot.
* \returns the index for retrieval.
*/
template <class T>
V8_INLINE size_t AddData(Local<Context> context, Local<T> object);
/**
* Attach arbitrary V8::Data to the isolate snapshot, which can be retrieved
* via Isolate::GetDataFromSnapshotOnce after deserialization. This data does
* not survive when a new snapshot is created from an existing snapshot.
* \returns the index for retrieval.
*/
template <class T>
V8_INLINE size_t AddData(Local<T> object);
/**
* Created a snapshot data blob.
* This must not be called from within a handle scope.
* \param function_code_handling whether to include compiled function code
* in the snapshot.
* \returns { nullptr, 0 } on failure, and a startup snapshot on success. The
* caller acquires ownership of the data array in the return value.
*/
StartupData CreateBlob(FunctionCodeHandling function_code_handling);
// Disallow copying and assigning.
SnapshotCreator(const SnapshotCreator&) = delete;
void operator=(const SnapshotCreator&) = delete;
private:
size_t AddData(Local<Context> context, internal::Address object);
size_t AddData(internal::Address object);
internal::SnapshotCreatorImpl* impl_;
friend class internal::SnapshotCreatorImpl;
};
template <class T>
size_t SnapshotCreator::AddData(Local<Context> context, Local<T> object) {
return AddData(context, internal::ValueHelper::ValueAsAddress(*object));
}
template <class T>
size_t SnapshotCreator::AddData(Local<T> object) {
return AddData(internal::ValueHelper::ValueAsAddress(*object));
}
} // namespace v8
#endif // INCLUDE_V8_SNAPSHOT_H_
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| cppgc | Folder | 0755 |
|
|
| libplatform | Folder | 0755 |
|
|
| openssl | Folder | 0755 |
|
|
| uv | Folder | 0755 |
|
|
| common.gypi | File | 26.59 KB | 0644 |
|
| config.gypi | File | 32.08 KB | 0644 |
|
| js_native_api.h | File | 31.64 KB | 0644 |
|
| js_native_api_types.h | File | 6.87 KB | 0644 |
|
| node.h | File | 67.99 KB | 0644 |
|
| node_api.h | File | 10.34 KB | 0644 |
|
| node_api_types.h | File | 1.57 KB | 0644 |
|
| node_buffer.h | File | 3.6 KB | 0644 |
|
| node_object_wrap.h | File | 3.78 KB | 0644 |
|
| node_version.h | File | 4.14 KB | 0644 |
|
| uv.h | File | 71.1 KB | 0644 |
|
| v8-array-buffer.h | File | 17.89 KB | 0644 |
|
| v8-callbacks.h | File | 16.59 KB | 0644 |
|
| v8-container.h | File | 5.82 KB | 0644 |
|
| v8-context.h | File | 17.76 KB | 0644 |
|
| v8-cppgc.h | File | 7.46 KB | 0644 |
|
| v8-data.h | File | 1.58 KB | 0644 |
|
| v8-date.h | File | 1.19 KB | 0644 |
|
| v8-debug.h | File | 5.04 KB | 0644 |
|
| v8-embedder-heap.h | File | 2.71 KB | 0644 |
|
| v8-embedder-state-scope.h | File | 1.46 KB | 0644 |
|
| v8-exception.h | File | 7.41 KB | 0644 |
|
| v8-extension.h | File | 1.83 KB | 0644 |
|
| v8-external.h | File | 924 B | 0644 |
|
| v8-forward.h | File | 1.65 KB | 0644 |
|
| v8-function-callback.h | File | 19.19 KB | 0644 |
|
| v8-function.h | File | 4.42 KB | 0644 |
|
| v8-handle-base.h | File | 4.3 KB | 0644 |
|
| v8-initialization.h | File | 10.23 KB | 0644 |
|
| v8-internal.h | File | 57.22 KB | 0644 |
|
| v8-isolate.h | File | 63.38 KB | 0644 |
|
| v8-json.h | File | 1.32 KB | 0644 |
|
| v8-local-handle.h | File | 23.6 KB | 0644 |
|
| v8-locker.h | File | 3.86 KB | 0644 |
|
| v8-maybe.h | File | 4.47 KB | 0644 |
|
| v8-memory-span.h | File | 6.27 KB | 0644 |
|
| v8-message.h | File | 7.24 KB | 0644 |
|
| v8-microtask-queue.h | File | 4.95 KB | 0644 |
|
| v8-microtask.h | File | 861 B | 0644 |
|
| v8-object.h | File | 29.55 KB | 0644 |
|
| v8-persistent-handle.h | File | 17.81 KB | 0644 |
|
| v8-platform.h | File | 47.9 KB | 0644 |
|
| v8-primitive-object.h | File | 2.53 KB | 0644 |
|
| v8-primitive.h | File | 27.69 KB | 0644 |
|
| v8-profiler.h | File | 41.11 KB | 0644 |
|
| v8-promise.h | File | 5.17 KB | 0644 |
|
| v8-proxy.h | File | 1.23 KB | 0644 |
|
| v8-regexp.h | File | 3.1 KB | 0644 |
|
| v8-script.h | File | 30.59 KB | 0644 |
|
| v8-snapshot.h | File | 10.15 KB | 0644 |
|
| v8-source-location.h | File | 2.54 KB | 0644 |
|
| v8-statistics.h | File | 7.45 KB | 0644 |
|
| v8-template.h | File | 50.36 KB | 0644 |
|
| v8-traced-handle.h | File | 12.4 KB | 0644 |
|
| v8-typed-array.h | File | 11.3 KB | 0644 |
|
| v8-unwinder.h | File | 4.64 KB | 0644 |
|
| v8-value-serializer.h | File | 10.56 KB | 0644 |
|
| v8-value.h | File | 16.71 KB | 0644 |
|
| v8-version.h | File | 773 B | 0644 |
|
| v8-wasm.h | File | 6 KB | 0644 |
|
| v8-weak-callback-info.h | File | 2.41 KB | 0644 |
|
| v8.h | File | 3.69 KB | 0644 |
|
| v8config.h | File | 32.85 KB | 0644 |
|
| zconf.h | File | 16.6 KB | 0644 |
|
| zlib.h | File | 95.17 KB | 0644 |
|