diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/ftl/FTLJITCode.h | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/ftl/FTLJITCode.h')
-rw-r--r-- | Source/JavaScriptCore/ftl/FTLJITCode.h | 65 |
1 files changed, 30 insertions, 35 deletions
diff --git a/Source/JavaScriptCore/ftl/FTLJITCode.h b/Source/JavaScriptCore/ftl/FTLJITCode.h index 6f90545c9..3e7213983 100644 --- a/Source/JavaScriptCore/ftl/FTLJITCode.h +++ b/Source/JavaScriptCore/ftl/FTLJITCode.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * Copyright (C) 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 @@ -26,60 +26,55 @@ #ifndef FTLJITCode_h #define FTLJITCode_h +#include <wtf/Platform.h> + #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 { - -class TrackedReferences; +namespace JSC { namespace FTL { -namespace FTL { +typedef int64_t LSectionWord; // We refer to LLVM data sections using LSectionWord*, just to be clear about our intended alignment restrictions. 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); - void validateReferences(const TrackedReferences&) override; - - RegisterSet liveRegistersToPreserveAtExceptionHandlingCallSite(CodeBlock*, CallSiteIndex) override; - - Optional<CodeOrigin> findPC(CodeBlock*, void* pc) override; - - CodeRef b3Code() const { return m_b3Code; } + 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(); - JITCode* ftl() override; - DFG::CommonData* dfgCommon() override; - static ptrdiff_t commonDataOffset() { return OBJECT_OFFSETOF(JITCode, common); } + JITCode* ftl(); + DFG::CommonData* dfgCommon(); DFG::CommonData common; SegmentedVector<OSRExit, 8> osrExit; - SegmentedVector<OSRExitDescriptor, 8> osrExitDescriptors; - Vector<std::unique_ptr<LazySlowPath>> lazySlowPaths; + StackMaps stackmaps; private: - CodePtr m_addressForCall; - CodeRef m_b3Code; - std::unique_ptr<B3::OpaqueByproducts> m_b3Byproducts; - CodeRef m_arityCheckEntrypoint; + Vector<RefCountedArray<LSectionWord>> m_dataSections; + Vector<RefPtr<ExecutableMemoryHandle>> m_handles; + CodeRef m_entrypoint; + CodeRef m_exitThunks; }; } } // namespace JSC::FTL |