summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/process.h
diff options
context:
space:
mode:
authorGravatar Lioncash2018-08-03 14:33:59 -0400
committerGravatar Lioncash2018-08-03 14:45:45 -0400
commit2beda7c2b3d2fe70ff36edf178d9bb2f5b308bf9 (patch)
tree8decd2e8d79f579920f1da76190b46a68eac5f88 /src/core/hle/kernel/process.h
parentMerge pull request #908 from lioncash/memory (diff)
downloadyuzu-2beda7c2b3d2fe70ff36edf178d9bb2f5b308bf9.tar.gz
yuzu-2beda7c2b3d2fe70ff36edf178d9bb2f5b308bf9.tar.xz
yuzu-2beda7c2b3d2fe70ff36edf178d9bb2f5b308bf9.zip
kernel/process: Use accessors instead of class members for referencing segment array
Using member variables for referencing the segments array increases the size of the class in memory for little benefit. The same behavior can be achieved through the use of accessors that just return the relevant segment.
Diffstat (limited to 'src/core/hle/kernel/process.h')
-rw-r--r--src/core/hle/kernel/process.h44
1 files changed, 32 insertions, 12 deletions
diff --git a/src/core/hle/kernel/process.h b/src/core/hle/kernel/process.h
index 98d8da35e..f29ee67c6 100644
--- a/src/core/hle/kernel/process.h
+++ b/src/core/hle/kernel/process.h
@@ -55,6 +55,12 @@ enum class ProcessStatus { Created, Running, Exited };
55class ResourceLimit; 55class ResourceLimit;
56 56
57struct CodeSet final : public Object { 57struct CodeSet final : public Object {
58 struct Segment {
59 size_t offset = 0;
60 VAddr addr = 0;
61 u32 size = 0;
62 };
63
58 static SharedPtr<CodeSet> Create(std::string name); 64 static SharedPtr<CodeSet> Create(std::string name);
59 65
60 std::string GetTypeName() const override { 66 std::string GetTypeName() const override {
@@ -69,24 +75,38 @@ struct CodeSet final : public Object {
69 return HANDLE_TYPE; 75 return HANDLE_TYPE;
70 } 76 }
71 77
72 /// Name of the process 78 Segment& CodeSegment() {
73 std::string name; 79 return segments[0];
80 }
74 81
75 std::shared_ptr<std::vector<u8>> memory; 82 const Segment& CodeSegment() const {
83 return segments[0];
84 }
76 85
77 struct Segment { 86 Segment& RODataSegment() {
78 size_t offset = 0; 87 return segments[1];
79 VAddr addr = 0; 88 }
80 u32 size = 0;
81 };
82 89
83 Segment segments[3]; 90 const Segment& RODataSegment() const {
84 Segment& code = segments[0]; 91 return segments[1];
85 Segment& rodata = segments[1]; 92 }
86 Segment& data = segments[2]; 93
94 Segment& DataSegment() {
95 return segments[2];
96 }
97
98 const Segment& DataSegment() const {
99 return segments[2];
100 }
101
102 std::shared_ptr<std::vector<u8>> memory;
87 103
104 Segment segments[3];
88 VAddr entrypoint; 105 VAddr entrypoint;
89 106
107 /// Name of the process
108 std::string name;
109
90private: 110private:
91 CodeSet(); 111 CodeSet();
92 ~CodeSet() override; 112 ~CodeSet() override;