From 02a9d6abbd4729b84beb4b68694d237eef8b2c9c Mon Sep 17 00:00:00 2001 From: kobalicek Date: Fri, 30 May 2014 17:02:03 +0200 Subject: [PATCH] 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). --- src/asmjit/base/assembler.cpp | 2 ++ src/asmjit/base/codegen.cpp | 5 ++++ src/asmjit/base/codegen.h | 51 +++++++++++++++++++++++++++------ src/asmjit/base/compiler.cpp | 7 +++++ src/asmjit/base/compiler.h | 4 +++ src/asmjit/base/context.cpp | 9 ++++++ src/asmjit/base/context_p.h | 4 +++ src/asmjit/base/func.h | 4 +++ src/asmjit/base/logger.cpp | 7 +++++ src/asmjit/base/logger.h | 4 +++ src/asmjit/config.h | 17 ++++++----- src/asmjit/x86/x86assembler.cpp | 37 ++++++++++++++++-------- src/asmjit/x86/x86compiler.cpp | 17 ++++++----- src/asmjit/x86/x86compiler.h | 4 +++ src/asmjit/x86/x86context.cpp | 50 +++++++++++++++++++++++--------- src/asmjit/x86/x86context_p.h | 4 +++ src/asmjit/x86/x86func.cpp | 4 +-- src/asmjit/x86/x86func.h | 4 +++ src/asmjit/x86/x86inst.h | 4 +-- 19 files changed, 185 insertions(+), 53 deletions(-) diff --git a/src/asmjit/base/assembler.cpp b/src/asmjit/base/assembler.cpp index 98de19f..4332c5f 100644 --- a/src/asmjit/base/assembler.cpp +++ b/src/asmjit/base/assembler.cpp @@ -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; } diff --git a/src/asmjit/base/codegen.cpp b/src/asmjit/base/codegen.cpp index 1445a7a..bd3ba69 100644 --- a/src/asmjit/base/codegen.cpp +++ b/src/asmjit/base/codegen.cpp @@ -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(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; } diff --git a/src/asmjit/base/codegen.h b/src/asmjit/base/codegen.h index 82458c6..7a46786 100644 --- a/src/asmjit/base/codegen.h +++ b/src/asmjit/base/codegen.h @@ -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; diff --git a/src/asmjit/base/compiler.cpp b/src/asmjit/base/compiler.cpp index 68c57b6..156f568 100644 --- a/src/asmjit/base/compiler.cpp +++ b/src/asmjit/base/compiler.cpp @@ -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 diff --git a/src/asmjit/base/compiler.h b/src/asmjit/base/compiler.h index 83dc88c..f521236 100644 --- a/src/asmjit/base/compiler.h +++ b/src/asmjit/base/compiler.h @@ -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 diff --git a/src/asmjit/base/context.cpp b/src/asmjit/base/context.cpp index 7cf48d4..dc6563c 100644 --- a/src/asmjit/base/context.cpp +++ b/src/asmjit/base/context.cpp @@ -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 diff --git a/src/asmjit/base/context_p.h b/src/asmjit/base/context_p.h index 6f39d65..8461a49 100644 --- a/src/asmjit/base/context_p.h +++ b/src/asmjit/base/context_p.h @@ -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 diff --git a/src/asmjit/base/func.h b/src/asmjit/base/func.h index 9e7e6b9..3ab8ccc 100644 --- a/src/asmjit/base/func.h +++ b/src/asmjit/base/func.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 diff --git a/src/asmjit/base/logger.cpp b/src/asmjit/base/logger.cpp index 7bcb94f..23a4de3 100644 --- a/src/asmjit/base/logger.cpp +++ b/src/asmjit/base/logger.cpp @@ -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 diff --git a/src/asmjit/base/logger.h b/src/asmjit/base/logger.h index d7de08e..310df68 100644 --- a/src/asmjit/base/logger.h +++ b/src/asmjit/base/logger.h @@ -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 diff --git a/src/asmjit/config.h b/src/asmjit/config.h index 3b4eea1..9f4d543 100644 --- a/src/asmjit/config.h +++ b/src/asmjit/config.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 diff --git a/src/asmjit/x86/x86assembler.cpp b/src/asmjit/x86/x86assembler.cpp index c22f289..9ccc008 100644 --- a/src/asmjit/x86/x86assembler.cpp +++ b/src/asmjit/x86/x86assembler.cpp @@ -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(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); diff --git a/src/asmjit/x86/x86compiler.cpp b/src/asmjit/x86/x86compiler.cpp index a77dcd4..c6a1ca4 100644 --- a/src/asmjit/x86/x86compiler.cpp +++ b/src/asmjit/x86/x86compiler.cpp @@ -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 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(assembler.getCodeSize()), static_cast(assembler.getOffset()), static_cast(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) diff --git a/src/asmjit/x86/x86compiler.h b/src/asmjit/x86/x86compiler.h index f14c0c1..7dd99fa 100644 --- a/src/asmjit/x86/x86compiler.h +++ b/src/asmjit/x86/x86compiler.h @@ -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 diff --git a/src/asmjit/x86/x86context.cpp b/src/asmjit/x86/x86context.cpp index 9886dee..e835fd6 100644 --- a/src/asmjit/x86/x86context.cpp +++ b/src/asmjit/x86/x86context.cpp @@ -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(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(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(assembler), start, stop); - else +#if !defined(ASMJIT_DISABLE_LOGGER) + if (assembler->hasLogger()) return X86X64Context_serialize<1>(this, static_cast(assembler), start, stop); +#endif // !ASMJIT_DISABLE_LOGGER + + return X86X64Context_serialize<0>(this, static_cast(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) diff --git a/src/asmjit/x86/x86context_p.h b/src/asmjit/x86/x86context_p.h index 8d9f1c9..2224c5e 100644 --- a/src/asmjit/x86/x86context_p.h +++ b/src/asmjit/x86/x86context_p.h @@ -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 diff --git a/src/asmjit/x86/x86func.cpp b/src/asmjit/x86/x86func.cpp index d99e0fe..18421cc 100644 --- a/src/asmjit/x86/x86func.cpp +++ b/src/asmjit/x86/x86func.cpp @@ -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) diff --git a/src/asmjit/x86/x86func.h b/src/asmjit/x86/x86func.h index bcd230f..bfc7919 100644 --- a/src/asmjit/x86/x86func.h +++ b/src/asmjit/x86/x86func.h @@ -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 diff --git a/src/asmjit/x86/x86inst.h b/src/asmjit/x86/x86inst.h index 82108c1..ca81825 100644 --- a/src/asmjit/x86/x86inst.h +++ b/src/asmjit/x86/x86inst.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 //!