In-progress work: refactoring PAL not to be instanced.
This removes a lot of useless passing around of the PAL object.
This commit is contained in:
@@ -24,7 +24,7 @@ XamModule::XamModule(Runtime* runtime) :
|
||||
"xam.xex", xam_export_table, XECOUNT(xam_export_table));
|
||||
|
||||
// Setup the xam state instance.
|
||||
xam_state = auto_ptr<XamState>(new XamState(pal_, memory_, export_resolver_));
|
||||
xam_state = auto_ptr<XamState>(new XamState(memory_, export_resolver_));
|
||||
|
||||
// Register all exported functions.
|
||||
RegisterInfoExports(export_resolver_.get(), xam_state.get());
|
||||
|
||||
@@ -20,14 +20,12 @@ namespace {
|
||||
}
|
||||
|
||||
|
||||
XamState::XamState(xe_pal_ref pal, xe_memory_ref memory,
|
||||
XamState::XamState(xe_memory_ref memory,
|
||||
shared_ptr<ExportResolver> export_resolver) {
|
||||
this->pal = xe_pal_retain(pal);
|
||||
this->memory = xe_memory_retain(memory);
|
||||
export_resolver_ = export_resolver;
|
||||
}
|
||||
|
||||
XamState::~XamState() {
|
||||
xe_memory_release(memory);
|
||||
xe_pal_release(pal);
|
||||
}
|
||||
|
||||
@@ -24,11 +24,9 @@ namespace xam {
|
||||
|
||||
class XamState {
|
||||
public:
|
||||
XamState(xe_pal_ref pal, xe_memory_ref memory,
|
||||
shared_ptr<ExportResolver> export_resolver);
|
||||
XamState(xe_memory_ref memory, shared_ptr<ExportResolver> export_resolver);
|
||||
~XamState();
|
||||
|
||||
xe_pal_ref pal;
|
||||
xe_memory_ref memory;
|
||||
|
||||
private:
|
||||
|
||||
@@ -28,7 +28,6 @@ KernelState::KernelState(Runtime* runtime) :
|
||||
runtime_(runtime),
|
||||
executable_module_(NULL),
|
||||
next_handle_(0) {
|
||||
pal_ = runtime->pal();
|
||||
memory_ = runtime->memory();
|
||||
processor_ = runtime->processor();
|
||||
filesystem_ = runtime->filesystem();
|
||||
@@ -69,17 +68,12 @@ KernelState::~KernelState() {
|
||||
filesystem_.reset();
|
||||
processor_.reset();
|
||||
xe_memory_release(memory_);
|
||||
xe_pal_release(pal_);
|
||||
}
|
||||
|
||||
Runtime* KernelState::runtime() {
|
||||
return runtime_;
|
||||
}
|
||||
|
||||
xe_pal_ref KernelState::pal() {
|
||||
return pal_;
|
||||
}
|
||||
|
||||
xe_memory_ref KernelState::memory() {
|
||||
return memory_;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ public:
|
||||
~KernelState();
|
||||
|
||||
Runtime* runtime();
|
||||
xe_pal_ref pal();
|
||||
xe_memory_ref memory();
|
||||
cpu::Processor* processor();
|
||||
fs::FileSystem* filesystem();
|
||||
@@ -51,7 +50,6 @@ private:
|
||||
void RemoveObject(XObject* obj);
|
||||
|
||||
Runtime* runtime_;
|
||||
xe_pal_ref pal_;
|
||||
xe_memory_ref memory_;
|
||||
shared_ptr<cpu::Processor> processor_;
|
||||
shared_ptr<fs::FileSystem> filesystem_;
|
||||
|
||||
@@ -92,8 +92,7 @@ X_STATUS XModule::LoadFromMemory(const void* addr, const size_t length) {
|
||||
XEEXPECTNOTNULL(xex_);
|
||||
|
||||
// Prepare the module for execution.
|
||||
XEEXPECTZERO(kernel_state()->processor()->PrepareModule(
|
||||
name_, path_, xex_, runtime()->export_resolver()));
|
||||
XEEXPECTZERO(kernel_state()->processor()->LoadXexModule(name_, path_, xex_));
|
||||
|
||||
return X_STATUS_SUCCESS;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user