diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/assembler/LinkBuffer.h | |
parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/assembler/LinkBuffer.h')
-rw-r--r-- | Source/JavaScriptCore/assembler/LinkBuffer.h | 51 |
1 files changed, 14 insertions, 37 deletions
diff --git a/Source/JavaScriptCore/assembler/LinkBuffer.h b/Source/JavaScriptCore/assembler/LinkBuffer.h index 9b0d4c437..8d4ce521f 100644 --- a/Source/JavaScriptCore/assembler/LinkBuffer.h +++ b/Source/JavaScriptCore/assembler/LinkBuffer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2010, 2012-2015 Apple Inc. All rights reserved. + * Copyright (C) 2009, 2010, 2012, 2013 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -43,7 +43,6 @@ namespace JSC { -class CodeBlock; class VM; // LinkBuffer: @@ -80,34 +79,36 @@ class LinkBuffer { #endif public: - LinkBuffer(VM& vm, MacroAssembler& macroAssembler, void* ownerUID, JITCompilationEffort effort = JITCompilationMustSucceed) + LinkBuffer(VM& vm, MacroAssembler* masm, void* ownerUID, JITCompilationEffort effort = JITCompilationMustSucceed) : m_size(0) #if ENABLE(BRANCH_COMPACTION) , m_initialSize(0) #endif , m_didAllocate(false) , m_code(0) + , m_assembler(masm) , m_vm(&vm) #ifndef NDEBUG , m_completed(false) #endif { - linkCode(macroAssembler, ownerUID, effort); + linkCode(ownerUID, effort); } - LinkBuffer(VM& vm, MacroAssembler& macroAssembler, void* code, size_t size) + LinkBuffer(VM& vm, MacroAssembler* masm, void* code, size_t size) : m_size(size) #if ENABLE(BRANCH_COMPACTION) , m_initialSize(0) #endif , m_didAllocate(false) , m_code(code) + , m_assembler(masm) , m_vm(&vm) #ifndef NDEBUG , m_completed(false) #endif { - linkCode(macroAssembler, 0, JITCompilationCanFail); + linkCode(0, JITCompilationCanFail); } ~LinkBuffer() @@ -163,11 +164,6 @@ public: } // These methods are used to obtain handles to allow the code to be relinked / repatched later. - - CodeLocationLabel entrypoint() - { - return CodeLocationLabel(code()); - } CodeLocationCall locationOf(Call call) { @@ -248,30 +244,17 @@ public: { return m_code; } - - // FIXME: this does not account for the AssemblerData size! + size_t size() { return m_size; } - - bool wasAlreadyDisassembled() const { return m_alreadyDisassembled; } - void didAlreadyDisassemble() { m_alreadyDisassembled = true; } private: -#if ENABLE(BRANCH_COMPACTION) - int executableOffsetFor(int location) - { - if (!location) - return 0; - return bitwise_cast<int32_t*>(m_assemblerStorage.buffer())[location / sizeof(int32_t) - 1]; - } -#endif - template <typename T> T applyOffset(T src) { #if ENABLE(BRANCH_COMPACTION) - src.m_offset -= executableOffsetFor(src.m_offset); + src.m_offset -= m_assembler->executableOffsetFor(src.m_offset); #endif return src; } @@ -285,10 +268,10 @@ private: void allocate(size_t initialSize, void* ownerUID, JITCompilationEffort); void shrink(size_t newSize); - JS_EXPORT_PRIVATE void linkCode(MacroAssembler&, void* ownerUID, JITCompilationEffort); + JS_EXPORT_PRIVATE void linkCode(void* ownerUID, JITCompilationEffort); #if ENABLE(BRANCH_COMPACTION) template <typename InstructionType> - void copyCompactAndLinkCode(MacroAssembler&, void* ownerUID, JITCompilationEffort); + void copyCompactAndLinkCode(void* ownerUID, JITCompilationEffort); #endif void performFinalization(); @@ -305,15 +288,14 @@ private: size_t m_size; #if ENABLE(BRANCH_COMPACTION) size_t m_initialSize; - AssemblerData m_assemblerStorage; #endif bool m_didAllocate; void* m_code; + MacroAssembler* m_assembler; VM* m_vm; #ifndef NDEBUG bool m_completed; #endif - bool m_alreadyDisassembled { false }; }; #define FINALIZE_CODE_IF(condition, linkBufferReference, dataLogFArgumentsForHeading) \ @@ -321,11 +303,6 @@ private: ? ((linkBufferReference).finalizeCodeWithDisassembly dataLogFArgumentsForHeading) \ : (linkBufferReference).finalizeCodeWithoutDisassembly()) -bool shouldShowDisassemblyFor(CodeBlock*); - -#define FINALIZE_CODE_FOR(codeBlock, linkBufferReference, dataLogFArgumentsForHeading) \ - FINALIZE_CODE_IF(shouldShowDisassemblyFor(codeBlock) || Options::asyncDisassembly(), linkBufferReference, dataLogFArgumentsForHeading) - // Use this to finalize code, like so: // // CodeRef code = FINALIZE_CODE(linkBuffer, ("my super thingy number %d", number)); @@ -343,10 +320,10 @@ bool shouldShowDisassemblyFor(CodeBlock*); // is true, so you can hide expensive disassembly-only computations inside there. #define FINALIZE_CODE(linkBufferReference, dataLogFArgumentsForHeading) \ - FINALIZE_CODE_IF(JSC::Options::asyncDisassembly() || JSC::Options::showDisassembly(), linkBufferReference, dataLogFArgumentsForHeading) + FINALIZE_CODE_IF(JSC::Options::showDisassembly(), linkBufferReference, dataLogFArgumentsForHeading) #define FINALIZE_DFG_CODE(linkBufferReference, dataLogFArgumentsForHeading) \ - FINALIZE_CODE_IF(JSC::Options::asyncDisassembly() || JSC::Options::showDisassembly() || Options::showDFGDisassembly(), linkBufferReference, dataLogFArgumentsForHeading) + FINALIZE_CODE_IF((JSC::Options::showDisassembly() || Options::showDFGDisassembly()), linkBufferReference, dataLogFArgumentsForHeading) } // namespace JSC |