mirror of
https://github.com/asmjit/asmjit.git
synced 2025-12-17 04:24:37 +03:00
Added ability to disable logging at completely at compile-time (reducing asmjit size a bit).
Added ability to disable Compiler completely at compile-time (reducing asmjit size a lot).
This commit is contained in:
@@ -216,8 +216,10 @@ Error BaseAssembler::embed(const void* data, uint32_t size) {
|
||||
::memcpy(cursor, data, size);
|
||||
setCursor(cursor + size);
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (_logger)
|
||||
_logger->logBinary(kLoggerStyleData, data, size);
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
return kErrorOk;
|
||||
}
|
||||
|
||||
@@ -40,10 +40,12 @@ CodeGen::~CodeGen() {
|
||||
// [asmjit::CodeGen - Logging]
|
||||
// ============================================================================
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
Error CodeGen::setLogger(Logger* logger) {
|
||||
_logger = logger;
|
||||
return kErrorOk;
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// ============================================================================
|
||||
// [asmjit::CodeGen - Error]
|
||||
@@ -64,16 +66,19 @@ Error CodeGen::setError(Error error, const char* message) {
|
||||
if (handler != NULL && handler->handleError(error, message))
|
||||
return error;
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
Logger* logger = _logger;
|
||||
if (logger != NULL) {
|
||||
logger->logFormat(kLoggerStyleComment,
|
||||
"*** ERROR: %s (%u).\n", message, static_cast<unsigned int>(error));
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// The handler->handleError() function may throw an exception or longjmp()
|
||||
// to terminate the execution of setError(). This is the reason why we have
|
||||
// delayed changing the _error member until now.
|
||||
_error = error;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
@@ -104,46 +104,72 @@ struct CodeGen {
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
//! Get runtime.
|
||||
ASMJIT_INLINE Runtime* getRuntime() const { return _runtime; }
|
||||
ASMJIT_INLINE Runtime* getRuntime() const {
|
||||
return _runtime;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// [Logger]
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
//! Get whether the code generator has a logger.
|
||||
ASMJIT_INLINE bool hasLogger() const { return _logger != NULL; }
|
||||
ASMJIT_INLINE bool hasLogger() const {
|
||||
return _logger != NULL;
|
||||
}
|
||||
|
||||
//! Get logger.
|
||||
ASMJIT_INLINE Logger* getLogger() const { return _logger; }
|
||||
ASMJIT_INLINE Logger* getLogger() const {
|
||||
return _logger;
|
||||
}
|
||||
|
||||
//! Set logger to `logger`.
|
||||
ASMJIT_API Error setLogger(Logger* logger);
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// [Arch]
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
//! Get target architecture.
|
||||
ASMJIT_INLINE uint32_t getArch() const { return _arch; }
|
||||
ASMJIT_INLINE uint32_t getArch() const {
|
||||
return _arch;
|
||||
}
|
||||
|
||||
//! Get default register size (4 or 8 bytes).
|
||||
ASMJIT_INLINE uint32_t getRegSize() const { return _regSize; }
|
||||
ASMJIT_INLINE uint32_t getRegSize() const {
|
||||
return _regSize;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// [Error]
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
//! Get last error code.
|
||||
ASMJIT_INLINE Error getError() const { return _error; }
|
||||
ASMJIT_INLINE Error getError() const {
|
||||
return _error;
|
||||
}
|
||||
|
||||
//! Set last error code and propagate it through the error handler.
|
||||
ASMJIT_API Error setError(Error error, const char* message = NULL);
|
||||
|
||||
//! Clear the last error code.
|
||||
ASMJIT_INLINE void clearError() { _error = kErrorOk; }
|
||||
ASMJIT_INLINE void clearError() {
|
||||
_error = kErrorOk;
|
||||
}
|
||||
|
||||
//! Get error handler.
|
||||
ASMJIT_INLINE ErrorHandler* getErrorHandler() const { return _errorHandler; }
|
||||
ASMJIT_INLINE ErrorHandler* getErrorHandler() const {
|
||||
return _errorHandler;
|
||||
}
|
||||
|
||||
//! Set error handler.
|
||||
ASMJIT_API Error setErrorHandler(ErrorHandler* handler);
|
||||
|
||||
//! Clear error handler.
|
||||
ASMJIT_INLINE Error clearErrorHandler() { return setErrorHandler(NULL); }
|
||||
ASMJIT_INLINE Error clearErrorHandler() {
|
||||
return setErrorHandler(NULL);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// [Features]
|
||||
@@ -201,8 +227,15 @@ struct CodeGen {
|
||||
|
||||
//! Runtime.
|
||||
Runtime* _runtime;
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
//! Logger.
|
||||
Logger* _logger;
|
||||
#else
|
||||
// Makes the libraries built with/without logging support binary compatible.
|
||||
void* _logger;
|
||||
#endif // ASMJIT_DISABLE_LOGGER
|
||||
|
||||
//! Error handler, called by \ref setError().
|
||||
ErrorHandler* _errorHandler;
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
// [Export]
|
||||
#define ASMJIT_EXPORTS
|
||||
|
||||
// [Guard]
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/assembler.h"
|
||||
#include "../base/compiler.h"
|
||||
@@ -583,3 +587,6 @@ void BaseCompiler::rename(BaseVar& var, const char* name) {
|
||||
|
||||
// [Api-End]
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#ifndef _ASMJIT_BASE_COMPILER_H
|
||||
#define _ASMJIT_BASE_COMPILER_H
|
||||
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/assembler.h"
|
||||
#include "../base/codegen.h"
|
||||
@@ -2103,4 +2106,5 @@ ASMJIT_INLINE Node::Node(BaseCompiler* compiler, uint32_t type) {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
#endif // _ASMJIT_BASE_COMPILER_H
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
// [Export]
|
||||
#define ASMJIT_EXPORTS
|
||||
|
||||
// [Guard]
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/context_p.h"
|
||||
#include "../base/intutil.h"
|
||||
@@ -329,8 +333,10 @@ Error BaseContext::compile(FuncNode* func) {
|
||||
ASMJIT_PROPAGATE_ERROR(removeUnreachableCode());
|
||||
ASMJIT_PROPAGATE_ERROR(analyze());
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (_compiler->hasLogger())
|
||||
ASMJIT_PROPAGATE_ERROR(annotate());
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
ASMJIT_PROPAGATE_ERROR(translate());
|
||||
|
||||
@@ -346,3 +352,6 @@ Error BaseContext::compile(FuncNode* func) {
|
||||
|
||||
// [Api-End]
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#ifndef _ASMJIT_BASE_CONTEXT_P_H
|
||||
#define _ASMJIT_BASE_CONTEXT_P_H
|
||||
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/compiler.h"
|
||||
#include "../base/zone.h"
|
||||
@@ -285,4 +288,5 @@ struct BaseContext {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
#endif // _ASMJIT_BASE_CONTEXT_P_H
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#ifndef _ASMJIT_BASE_FUNC_H
|
||||
#define _ASMJIT_BASE_FUNC_H
|
||||
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/operand.h"
|
||||
|
||||
@@ -644,4 +647,5 @@ struct FuncBuilder10 : public FuncPrototype {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
#endif // _ASMJIT_BASE_FUNC_H
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
// [Export]
|
||||
#define ASMJIT_EXPORTS
|
||||
|
||||
// [Guard]
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/intutil.h"
|
||||
#include "../base/logger.h"
|
||||
@@ -158,3 +162,6 @@ void StringLogger::logString(uint32_t style, const char* buf, size_t len) {
|
||||
|
||||
// [Api-End]
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#ifndef _ASMJIT_BASE_LOGGER_H
|
||||
#define _ASMJIT_BASE_LOGGER_H
|
||||
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/string.h"
|
||||
|
||||
@@ -229,4 +232,5 @@ struct StringLogger : public Logger {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
#endif // _ASMJIT_BASE_LOGGER_H
|
||||
|
||||
@@ -18,15 +18,15 @@
|
||||
// [AsmJit - Debugging]
|
||||
// ============================================================================
|
||||
|
||||
// #define ASMJIT_DEBUG // Define to enable debug-mode.
|
||||
// #define ASMJIT_RELEASE // Define to enable release-mode (no debugging).
|
||||
// #define ASMJIT_DEBUG // Define to enable debug-mode.
|
||||
// #define ASMJIT_RELEASE // Define to enable release-mode.
|
||||
|
||||
// ============================================================================
|
||||
// [AsmJit - Library]
|
||||
// ============================================================================
|
||||
|
||||
// #define ASMJIT_STATIC // Define to enable static-library build.
|
||||
// #define ASMJIT_API // Define to override ASMJIT_API decorator.
|
||||
// #define ASMJIT_EMBED // Asmjit is embedded (implies ASMJIT_STATIC).
|
||||
// #define ASMJIT_STATIC // Define to enable static-library build.
|
||||
|
||||
// ============================================================================
|
||||
// [AsmJit - Features]
|
||||
@@ -34,9 +34,12 @@
|
||||
|
||||
// If none of these is defined AsmJit will select host architecture by default.
|
||||
|
||||
// #define ASMJIT_BUILD_X86 // Define to enable x86 instruction set (32-bit).
|
||||
// #define ASMJIT_BUILD_X64 // Define to enable x64 instruction set (64-bit).
|
||||
// #define ASMJIT_BUILD_HOST // Define to enable host instruction set.
|
||||
// #define ASMJIT_BUILD_X86 // Define to enable x86 instruction set (32-bit).
|
||||
// #define ASMJIT_BUILD_X64 // Define to enable x64 instruction set (64-bit).
|
||||
// #define ASMJIT_BUILD_HOST // Define to enable host instruction set.
|
||||
|
||||
// #define ASMJIT_DISABLE_COMPILER // Disable Compiler.
|
||||
// #define ASMJIT_DISABLE_LOGGER // Disable Logger (completely).
|
||||
|
||||
// [Guard]
|
||||
#endif // _ASMJIT_CONFIG_H
|
||||
|
||||
@@ -222,9 +222,10 @@ void X86X64Assembler::_bind(const Label& label) {
|
||||
// Label can be bound only once.
|
||||
ASMJIT_ASSERT(data->offset == -1);
|
||||
|
||||
// Log.
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (_logger)
|
||||
_logger->logFormat(kLoggerStyleLabel, "L%u:\n", index);
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
size_t pos = getOffset();
|
||||
|
||||
@@ -295,9 +296,10 @@ Error X86X64Assembler::embedLabel(const Label& op) {
|
||||
LabelData* label = getLabelDataById(op.getId());
|
||||
RelocData reloc;
|
||||
|
||||
if (_logger) {
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (_logger)
|
||||
_logger->logFormat(kLoggerStyleData, regSize == 4 ? ".dd L%u\n" : ".dq L%u\n", op.getId());
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
reloc.type = kRelocRelToAbs;
|
||||
reloc.size = regSize;
|
||||
@@ -338,10 +340,11 @@ Error X86X64Assembler::embedLabel(const Label& op) {
|
||||
// ============================================================================
|
||||
|
||||
Error X86X64Assembler::_align(uint32_t mode, uint32_t offset) {
|
||||
if (_logger) {
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (_logger)
|
||||
_logger->logFormat(kLoggerStyleDirective,
|
||||
"%s.align %u\n", _logger->getIndentation(), static_cast<unsigned int>(offset));
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
if (offset <= 1 || !IntUtil::isPowerOf2(offset) || offset > 64)
|
||||
return setError(kErrorInvalidArgument);
|
||||
@@ -542,8 +545,10 @@ static ASMJIT_INLINE size_t X86X64Assembler_relocCode(const X86X64Assembler* sel
|
||||
// Advance trampoline pointer.
|
||||
tramp += 8;
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (self->_logger)
|
||||
self->_logger->logFormat(kLoggerStyleComment, "; Trampoline %llX\n", r.data);
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
}
|
||||
}
|
||||
|
||||
@@ -557,6 +562,7 @@ static ASMJIT_INLINE size_t X86X64Assembler_relocCode(const X86X64Assembler* sel
|
||||
// [asmjit::x86x64::Assembler - Logging]
|
||||
// ============================================================================
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
// Logging helpers.
|
||||
static const char* AssemblerX86_operandSize[] = {
|
||||
"",
|
||||
@@ -884,6 +890,7 @@ static bool X86Assembler_dumpComment(StringBuilder& sb, size_t len, const uint8_
|
||||
|
||||
return sb.appendChar('\n');
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// ============================================================================
|
||||
// [asmjit::x86x64::Assembler - Emit]
|
||||
@@ -4068,11 +4075,12 @@ _EmitDisplacement:
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
_EmitDone:
|
||||
#if defined(ASMJIT_DEBUG)
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
# if defined(ASMJIT_DEBUG)
|
||||
if (self->_logger || assertIllegal) {
|
||||
#else
|
||||
# else
|
||||
if (self->_logger) {
|
||||
#endif // ASMJIT_DEBUG
|
||||
# endif // ASMJIT_DEBUG
|
||||
StringBuilderT<512> sb;
|
||||
uint32_t loggerOptions = 0;
|
||||
|
||||
@@ -4088,17 +4096,22 @@ _EmitDone:
|
||||
else
|
||||
X86Assembler_dumpComment(sb, sb.getLength(), NULL, 0, 0, self->_comment);
|
||||
|
||||
#if defined(ASMJIT_DEBUG)
|
||||
# if defined(ASMJIT_DEBUG)
|
||||
if (self->_logger)
|
||||
#endif // ASMJIT_DEBUG
|
||||
# endif // ASMJIT_DEBUG
|
||||
self->_logger->logString(kLoggerStyleDefault, sb.getData(), sb.getLength());
|
||||
|
||||
#if defined(ASMJIT_DEBUG)
|
||||
# if defined(ASMJIT_DEBUG)
|
||||
// Raise an assertion failure, because this situation shouldn't happen.
|
||||
if (assertIllegal)
|
||||
assertionFailed(sb.getData(), __FILE__, __LINE__);
|
||||
#endif // ASMJIT_DEBUG
|
||||
# endif // ASMJIT_DEBUG
|
||||
}
|
||||
#else
|
||||
# if defined(ASMJIT_DEBUG)
|
||||
ASMJIT_ASSERT(!assertIllegal);
|
||||
# endif // ASMJIT_DEBUG
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
self->_comment = NULL;
|
||||
self->setCursor(cursor);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
// [Guard]
|
||||
#include "../build.h"
|
||||
#if defined(ASMJIT_BUILD_X86) || defined(ASMJIT_BUILD_X64)
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER) && (defined(ASMJIT_BUILD_X86) || defined(ASMJIT_BUILD_X64))
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/intutil.h"
|
||||
@@ -624,11 +624,12 @@ _OnError:
|
||||
template<typename Assembler>
|
||||
static ASMJIT_INLINE void* X86X64Compiler_make(X86X64Compiler* self) {
|
||||
Assembler assembler(self->_runtime);
|
||||
Logger* logger = self->_logger;
|
||||
|
||||
if (logger) {
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
Logger* logger = self->_logger;
|
||||
if (logger)
|
||||
assembler.setLogger(logger);
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
assembler._features = self->_features;
|
||||
|
||||
@@ -642,13 +643,15 @@ static ASMJIT_INLINE void* X86X64Compiler_make(X86X64Compiler* self) {
|
||||
}
|
||||
|
||||
void* result = assembler.make();
|
||||
if (logger) {
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (logger)
|
||||
logger->logFormat(kLoggerStyleComment,
|
||||
"*** COMPILER SUCCESS - Wrote %u bytes, code: %u, trampolines: %u.\n\n",
|
||||
static_cast<unsigned int>(assembler.getCodeSize()),
|
||||
static_cast<unsigned int>(assembler.getOffset()),
|
||||
static_cast<unsigned int>(assembler.getTrampolineSize()));
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -762,4 +765,4 @@ Compiler::~Compiler() {}
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // ASMJIT_BUILD_X86 || ASMJIT_BUILD_X64
|
||||
#endif // !ASMJIT_DISABLE_COMPILER && (ASMJIT_BUILD_X86 || ASMJIT_BUILD_X64)
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#ifndef _ASMJIT_X86_X86COMPILER_H
|
||||
#define _ASMJIT_X86_X86COMPILER_H
|
||||
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/compiler.h"
|
||||
#include "../base/vectypes.h"
|
||||
@@ -4217,4 +4220,5 @@ struct Compiler : public X86X64Compiler {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
#endif // _ASMJIT_X86_X86COMPILER_H
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
// [Guard]
|
||||
#include "../build.h"
|
||||
#if defined(ASMJIT_BUILD_X86) || defined(ASMJIT_BUILD_X64)
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER) && (defined(ASMJIT_BUILD_X86) || defined(ASMJIT_BUILD_X64))
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/intutil.h"
|
||||
@@ -59,9 +59,11 @@ X86X64Context::X86X64Context(X86X64Compiler* compiler) : BaseContext(compiler) {
|
||||
}
|
||||
#endif // ASMJIT_BUILD_X64
|
||||
|
||||
_state = &_x86State;
|
||||
_emitComments = compiler->getLogger() != NULL;
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
_emitComments = compiler->hasLogger();
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
_state = &_x86State;
|
||||
reset();
|
||||
}
|
||||
|
||||
@@ -2802,6 +2804,7 @@ _NoMemory:
|
||||
// [asmjit::x86x64::X86X64Context - Annotate]
|
||||
// ============================================================================
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
static void X86X64Context_annotateVariable(X86X64Context* self,
|
||||
StringBuilder& sb, const VarData* vd) {
|
||||
|
||||
@@ -2908,8 +2911,10 @@ static bool X86X64Context_annotateInstruction(X86X64Context* self,
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
Error X86X64Context::annotate() {
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
FuncNode* func = getFunc();
|
||||
|
||||
Node* node_ = func;
|
||||
@@ -2935,8 +2940,9 @@ Error X86X64Context::annotate() {
|
||||
|
||||
node_ = node_->getNext();
|
||||
}
|
||||
|
||||
_annotationLength = maxLen + 1;
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
return kErrorOk;
|
||||
}
|
||||
|
||||
@@ -4758,8 +4764,10 @@ static Error X86X64Context_translatePrologEpilog(X86X64Context* self, X86X64Func
|
||||
|
||||
compiler->_setCursor(func->getEntryNode());
|
||||
|
||||
if (compiler->getLogger())
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (compiler->hasLogger())
|
||||
compiler->comment("Prolog");
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// Entry.
|
||||
if (func->isNaked()) {
|
||||
@@ -4873,8 +4881,10 @@ static Error X86X64Context_translatePrologEpilog(X86X64Context* self, X86X64Func
|
||||
}
|
||||
}
|
||||
|
||||
if (compiler->getLogger())
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (compiler->hasLogger())
|
||||
compiler->comment("Body");
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// [Epilog]
|
||||
@@ -4882,8 +4892,10 @@ static Error X86X64Context_translatePrologEpilog(X86X64Context* self, X86X64Func
|
||||
|
||||
compiler->_setCursor(func->getExitNode());
|
||||
|
||||
if (compiler->getLogger())
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (compiler->hasLogger())
|
||||
compiler->comment("Epilog");
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// Restore Xmm/Mm/Gp (Mov).
|
||||
stackPtr = stackBase;
|
||||
@@ -5305,22 +5317,26 @@ static ASMJIT_INLINE Error X86X64Context_serialize(X86X64Context* self, X86X64As
|
||||
Node* node_ = start;
|
||||
StringBuilder& sb = self->_stringBuilder;
|
||||
|
||||
Logger* logger;
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
uint32_t vdCount;
|
||||
uint32_t annotationLength;
|
||||
|
||||
Logger* logger;
|
||||
|
||||
if (LoggingEnabled) {
|
||||
logger = assembler->getLogger();
|
||||
|
||||
vdCount = static_cast<uint32_t>(self->_contextVd.getLength());
|
||||
annotationLength = self->_annotationLength;
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
// Create labels on Assembler side.
|
||||
ASMJIT_PROPAGATE_ERROR(
|
||||
assembler->_registerIndexedLabels(self->getCompiler()->_targets.getLength()));
|
||||
|
||||
do {
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (LoggingEnabled) {
|
||||
sb.clear();
|
||||
|
||||
@@ -5368,6 +5384,7 @@ static ASMJIT_INLINE Error X86X64Context_serialize(X86X64Context* self, X86X64As
|
||||
|
||||
assembler->_comment = sb.getData();
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
switch (node_->getType()) {
|
||||
case kNodeTypeAlign: {
|
||||
@@ -5384,10 +5401,13 @@ static ASMJIT_INLINE Error X86X64Context_serialize(X86X64Context* self, X86X64As
|
||||
|
||||
case kNodeTypeComment: {
|
||||
CommentNode* node = static_cast<CommentNode*>(node_);
|
||||
if (LoggingEnabled) {
|
||||
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (LoggingEnabled)
|
||||
logger->logFormat(kLoggerStyleComment,
|
||||
"%s; %s\n", logger->getIndentation(), node->getComment());
|
||||
}
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5570,10 +5590,12 @@ static ASMJIT_INLINE Error X86X64Context_serialize(X86X64Context* self, X86X64As
|
||||
}
|
||||
|
||||
Error X86X64Context::serialize(BaseAssembler* assembler, Node* start, Node* stop) {
|
||||
if (!assembler->hasLogger())
|
||||
return X86X64Context_serialize<0>(this, static_cast<X86X64Assembler*>(assembler), start, stop);
|
||||
else
|
||||
#if !defined(ASMJIT_DISABLE_LOGGER)
|
||||
if (assembler->hasLogger())
|
||||
return X86X64Context_serialize<1>(this, static_cast<X86X64Assembler*>(assembler), start, stop);
|
||||
#endif // !ASMJIT_DISABLE_LOGGER
|
||||
|
||||
return X86X64Context_serialize<0>(this, static_cast<X86X64Assembler*>(assembler), start, stop);
|
||||
}
|
||||
|
||||
} // x86x64 namespace
|
||||
@@ -5583,4 +5605,4 @@ Error X86X64Context::serialize(BaseAssembler* assembler, Node* start, Node* stop
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // ASMJIT_BUILD_X86 || ASMJIT_BUILD_X64
|
||||
#endif // !ASMJIT_DISABLE_COMPILER && (ASMJIT_BUILD_X86 || ASMJIT_BUILD_X64)
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#ifndef _ASMJIT_X86_X86CONTEXT_P_H
|
||||
#define _ASMJIT_X86_X86CONTEXT_P_H
|
||||
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/compiler.h"
|
||||
#include "../base/context_p.h"
|
||||
@@ -515,4 +518,5 @@ struct X86X64Context : public BaseContext {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
#endif // _ASMJIT_X86_X86CONTEXT_P_H
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
// [Guard]
|
||||
#include "../build.h"
|
||||
#if defined(ASMJIT_BUILD_X86) || defined(ASMJIT_BUILD_X64)
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER) && (defined(ASMJIT_BUILD_X86) || defined(ASMJIT_BUILD_X64))
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/globals.h"
|
||||
@@ -544,4 +544,4 @@ void X86X64FuncDecl::reset() {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // ASMJIT_BUILD_X86 || ASMJIT_BUILD_X64
|
||||
#endif // !ASMJIT_DISABLE_COMPILER && (ASMJIT_BUILD_X86 || ASMJIT_BUILD_X64)
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#ifndef _ASMJIT_X86_X86FUNC_H
|
||||
#define _ASMJIT_X86_X86FUNC_H
|
||||
|
||||
#include "../build.h"
|
||||
#if !defined(ASMJIT_DISABLE_COMPILER)
|
||||
|
||||
// [Dependencies - AsmJit]
|
||||
#include "../base/func.h"
|
||||
#include "../x86/x86util.h"
|
||||
@@ -485,4 +488,5 @@ struct X86X64FuncDecl : public FuncDecl {
|
||||
#include "../apiend.h"
|
||||
|
||||
// [Guard]
|
||||
#endif // !ASMJIT_DISABLE_COMPILER
|
||||
#endif // _ASMJIT_X86_X86FUNC_H
|
||||
|
||||
@@ -1464,7 +1464,7 @@ ASMJIT_ENUM(kInstFlags) {
|
||||
//! \internal
|
||||
//!
|
||||
//! Combination of `kInstFlagMem2` and `kInstFlagMem4`.
|
||||
kInstFlagMem2_4 = kInstFlagMem2 | kInstFlagMem4,
|
||||
kInstFlagMem2_4 = kInstFlagMem2 | kInstFlagMem4,
|
||||
|
||||
//! \internal
|
||||
//!
|
||||
@@ -1474,7 +1474,7 @@ ASMJIT_ENUM(kInstFlags) {
|
||||
//! \internal
|
||||
//!
|
||||
//! Combination of `kInstFlagMem4` and `kInstFlagMem8`.
|
||||
kInstFlagMem4_8 = kInstFlagMem4 | kInstFlagMem8,
|
||||
kInstFlagMem4_8 = kInstFlagMem4 | kInstFlagMem8,
|
||||
|
||||
//! \internal
|
||||
//!
|
||||
|
||||
Reference in New Issue
Block a user