diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/ftl/FTLJITCode.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/JavaScriptCore/ftl/FTLJITCode.h')
-rw-r--r-- | Source/JavaScriptCore/ftl/FTLJITCode.h | 72 |
1 files changed, 36 insertions, 36 deletions
diff --git a/Source/JavaScriptCore/ftl/FTLJITCode.h b/Source/JavaScriptCore/ftl/FTLJITCode.h index 3e7213983..2c2809e97 100644 --- a/Source/JavaScriptCore/ftl/FTLJITCode.h +++ b/Source/JavaScriptCore/ftl/FTLJITCode.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,63 +23,63 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef FTLJITCode_h -#define FTLJITCode_h - -#include <wtf/Platform.h> +#pragma once #if ENABLE(FTL_JIT) +#include "B3OpaqueByproducts.h" #include "DFGCommonData.h" +#include "FTLLazySlowPath.h" #include "FTLOSRExit.h" -#include "FTLStackMaps.h" #include "JITCode.h" -#include "LLVMAPI.h" -#include <wtf/RefCountedArray.h> -namespace JSC { namespace FTL { +namespace JSC { + +class TrackedReferences; -typedef int64_t LSectionWord; // We refer to LLVM data sections using LSectionWord*, just to be clear about our intended alignment restrictions. +namespace FTL { class JITCode : public JSC::JITCode { public: JITCode(); ~JITCode(); + + CodePtr addressForCall(ArityCheckMode) override; + void* executableAddressAtOffset(size_t offset) override; + void* dataAddressAtOffset(size_t offset) override; + unsigned offsetOf(void* pointerIntoCode) override; + size_t size() override; + bool contains(void*) override; + + void initializeB3Code(CodeRef); + void initializeB3Byproducts(std::unique_ptr<B3::OpaqueByproducts>); + void initializeAddressForCall(CodePtr); + void initializeArityCheckEntrypoint(CodeRef); - CodePtr addressForCall(); - void* executableAddressAtOffset(size_t offset); - void* dataAddressAtOffset(size_t offset); - unsigned offsetOf(void* pointerIntoCode); - size_t size(); - bool contains(void*); - - void initializeExitThunks(CodeRef); - void addHandle(PassRefPtr<ExecutableMemoryHandle>); - void addDataSection(RefCountedArray<LSectionWord>); - void initializeCode(CodeRef entrypoint); - - const Vector<RefPtr<ExecutableMemoryHandle>>& handles() const { return m_handles; } - const Vector<RefCountedArray<LSectionWord>>& dataSections() const { return m_dataSections; } - - CodePtr exitThunks(); + void validateReferences(const TrackedReferences&) override; + + RegisterSet liveRegistersToPreserveAtExceptionHandlingCallSite(CodeBlock*, CallSiteIndex) override; + + std::optional<CodeOrigin> findPC(CodeBlock*, void* pc) override; + + CodeRef b3Code() const { return m_b3Code; } - JITCode* ftl(); - DFG::CommonData* dfgCommon(); + JITCode* ftl() override; + DFG::CommonData* dfgCommon() override; + static ptrdiff_t commonDataOffset() { return OBJECT_OFFSETOF(JITCode, common); } DFG::CommonData common; SegmentedVector<OSRExit, 8> osrExit; - StackMaps stackmaps; + SegmentedVector<OSRExitDescriptor, 8> osrExitDescriptors; + Vector<std::unique_ptr<LazySlowPath>> lazySlowPaths; private: - Vector<RefCountedArray<LSectionWord>> m_dataSections; - Vector<RefPtr<ExecutableMemoryHandle>> m_handles; - CodeRef m_entrypoint; - CodeRef m_exitThunks; + CodePtr m_addressForCall; + CodeRef m_b3Code; + std::unique_ptr<B3::OpaqueByproducts> m_b3Byproducts; + CodeRef m_arityCheckEntrypoint; }; } } // namespace JSC::FTL #endif // ENABLE(FLT_JIT) - -#endif // FTLJITCode_h - |