summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/ftl/FTLJITCode.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/ftl/FTLJITCode.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/ftl/FTLJITCode.h')
-rw-r--r--Source/JavaScriptCore/ftl/FTLJITCode.h72
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
-