summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/ftl/FTLJITCode.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/ftl/FTLJITCode.h
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-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.h65
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