EmitX64: JitState type as template parameter
This commit is contained in:
parent
2d164d9345
commit
455757d7b6
4 changed files with 307 additions and 293 deletions
|
@ -34,7 +34,7 @@ struct A32EmitContext final : public EmitContext {
|
|||
bool FPSCR_DN() const override;
|
||||
};
|
||||
|
||||
class A32EmitX64 final : public EmitX64<u32> {
|
||||
class A32EmitX64 final : public EmitX64<A32JitState> {
|
||||
public:
|
||||
A32EmitX64(BlockOfCode* code, UserCallbacks cb, Jit* jit_interface);
|
||||
~A32EmitX64();
|
||||
|
|
|
@ -23,6 +23,8 @@ constexpr size_t SpillCount = 64;
|
|||
#endif
|
||||
|
||||
struct A32JitState {
|
||||
using ProgramCounterType = u32;
|
||||
|
||||
A32JitState() { ResetRSB(); }
|
||||
|
||||
std::array<u32, 16> Reg{}; // Current register file.
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -18,7 +18,7 @@
|
|||
#include "backend_x64/reg_alloc.h"
|
||||
#include "common/address_range.h"
|
||||
#include "dynarmic/callbacks.h"
|
||||
#include "frontend/A32/location_descriptor.h"
|
||||
#include "frontend/ir/location_descriptor.h"
|
||||
#include "frontend/ir/terminal.h"
|
||||
|
||||
namespace Dynarmic {
|
||||
|
@ -47,14 +47,16 @@ struct EmitContext {
|
|||
IR::Block& block;
|
||||
};
|
||||
|
||||
template <typename ProgramCounterType>
|
||||
template <typename JitStateType>
|
||||
class EmitX64 {
|
||||
public:
|
||||
using ProgramCounterType = typename JitStateType::ProgramCounterType;
|
||||
|
||||
struct BlockDescriptor {
|
||||
CodePtr entrypoint; // Entrypoint of emitted code
|
||||
size_t size; // Length in bytes of emitted code
|
||||
|
||||
A32::LocationDescriptor start_location;
|
||||
IR::LocationDescriptor start_location;
|
||||
boost::icl::discrete_interval<ProgramCounterType> range;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue