5#ifndef V8_SNAPSHOT_EMBEDDED_EMBEDDED_FILE_WRITER_H_
6#define V8_SNAPSHOT_EMBEDDED_EMBEDDED_FILE_WRITER_H_
20#if defined(V8_OS_WIN64)
43#if defined(V8_OS_WIN64)
44 void SetBuiltinUnwindData(
46 const win64_unwindinfo::BuiltinUnwindInfo& unwinding_info)
override {
48 unwind_infos_[
static_cast<int>(
builtin)] = unwinding_info;
57 if (embedded_variant ==
nullptr)
return;
75 std::unique_ptr<PlatformEmbeddedFileWriterBase> writer =
99 w->
Comment(
"Autogenerated file. Do not edit.");
111 "Source positions in the embedded blob refer to filenames by id.");
112 w->
Comment(
"Assembly directives here map the id to a filename.");
117 for (
int i = 0;
i <
size;
i++) {
128 embedded_blob_code_symbol;
129 base::SNPrintF(embedded_blob_code_symbol,
"v8_%s_embedded_blob_code_",
131 return std::string{embedded_blob_code_symbol.
begin()};
136 embedded_blob_data_symbol;
137 base::SNPrintF(embedded_blob_data_symbol,
"v8_%s_embedded_blob_data_",
139 return std::string{embedded_blob_data_symbol.
begin()};
144 w->
Comment(
"The embedded blob data section starts here.");
160 std::string name)
const;
168#if defined(V8_OS_WIN_X64)
170 uint64_t rva_start, uint64_t rva_end)
const;
189#if defined(V8_OS_WIN64)
static FILE * FOpen(const char *path, const char *mode)
constexpr T * begin() const
static constexpr int kBuiltinCount
void PrepareBuiltinSourcePositionMap(Builtins *builtins) override
static FILE * GetFileDescriptorOrDie(const char *filename)
const char * target_arch_
const char * embedded_src_path_
void WriteCodeSection(PlatformEmbeddedFileWriterBase *w, const i::EmbeddedData *blob) const
static constexpr int kFirstExternalFilenameId
std::string EmbeddedBlobDataSymbol() const
std::vector< LabelInfo > label_info_[Builtins::kBuiltinCount]
void WriteFileEpilogue(PlatformEmbeddedFileWriterBase *w, const i::EmbeddedData *blob) const
std::string EmbeddedBlobCodeSymbol() const
std::vector< uint8_t > source_positions_[Builtins::kBuiltinCount]
static int ExternalFilenameIdToIndex(int id)
void WriteEmbedded(const i::EmbeddedData *blob) const
void WriteDataSection(PlatformEmbeddedFileWriterBase *w, const i::EmbeddedData *blob) const
static int ExternalFilenameIndexToId(int index)
void WriteFilePrologue(PlatformEmbeddedFileWriterBase *w) const
std::vector< const char * > external_filenames_by_index_
int GetExternallyCompiledFilenameCount() const override
void SetTargetArch(const char *target_arch)
void MaybeWriteEmbeddedFile(const i::EmbeddedData *blob) const
void SetTargetOs(const char *target_os)
std::map< const char *, int > external_filenames_
static void WriteBinaryContentsAsInlineAssembly(PlatformEmbeddedFileWriterBase *w, const uint8_t *data, uint32_t size)
const char * embedded_variant_
void WriteBuiltinLabels(PlatformEmbeddedFileWriterBase *w, std::string name) const
void SetEmbeddedVariant(const char *embedded_variant)
static constexpr int kTemporaryStringLength
void SetEmbeddedFile(const char *embedded_src_path)
int LookupOrAddExternallyCompiledFilename(const char *filename) override
void WriteExternalFilenames(PlatformEmbeddedFileWriterBase *w) const
void WriteBuiltin(PlatformEmbeddedFileWriterBase *w, const i::EmbeddedData *blob, const Builtin builtin) const
const char * GetExternallyCompiledFilename(int fileid) const override
int SNPrintF(Vector< char > str, const char *format,...)
void PrintF(const char *format,...)
std::unique_ptr< PlatformEmbeddedFileWriterBase > NewPlatformEmbeddedFileWriter(const char *target_arch, const char *target_os)
static constexpr char kDefaultEmbeddedVariant[]
#define CHECK_EQ(lhs, rhs)
#define DCHECK_LT(v1, v2)