mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 17:00:19 +02:00
It has been a long time coming that FEX no longer needed to leak IR implementation details to the frontend, this was legacy due to IR CI and various other problems. Now that the last bits of IR leaking has been removed, move everything that we can internally to the implementation. We still have a couple of minor details in the exposed IR.h to the frontend, but these are limited to a few enums and some thunking struct information rather than all the implementation details. No functional change with this, just moving headers around.
41 lines
827 B
C++
41 lines
827 B
C++
// SPDX-License-Identifier: MIT
|
|
/*
|
|
$info$
|
|
tags: glue|thunks
|
|
$end_info$
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "Interface/IR/IR.h"
|
|
|
|
#include <FEXCore/fextl/memory.h>
|
|
#include <FEXCore/fextl/vector.h>
|
|
|
|
namespace FEXCore::Context {
|
|
class ContextImpl;
|
|
}
|
|
|
|
namespace FEXCore::Core {
|
|
struct InternalThreadState;
|
|
}
|
|
|
|
namespace FEXCore::IR {
|
|
struct SHA256Sum;
|
|
}
|
|
|
|
namespace FEXCore {
|
|
typedef void ThunkedFunction(void* ArgsRv);
|
|
|
|
class ThunkHandler {
|
|
public:
|
|
virtual ThunkedFunction* LookupThunk(const IR::SHA256Sum &sha256) = 0;
|
|
virtual void RegisterTLSState(FEXCore::Core::InternalThreadState *Thread) = 0;
|
|
virtual ~ThunkHandler() { }
|
|
|
|
static fextl::unique_ptr<ThunkHandler> Create();
|
|
|
|
virtual void AppendThunkDefinitions(fextl::vector<FEXCore::IR::ThunkDefinition> const& Definitions) = 0;
|
|
};
|
|
};
|