summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorGravatar Lioncash2015-08-21 17:09:30 -0400
committerGravatar Lioncash2015-08-21 17:09:33 -0400
commit78e7c77ff55123c144f2344e03535af7d677aa12 (patch)
tree9e3b97c1fed3c278e39087dc126967f6ac16dbc5 /src/common
parentMerge pull request #1056 from lioncash/emitter (diff)
downloadyuzu-78e7c77ff55123c144f2344e03535af7d677aa12.tar.gz
yuzu-78e7c77ff55123c144f2344e03535af7d677aa12.tar.xz
yuzu-78e7c77ff55123c144f2344e03535af7d677aa12.zip
emitter: Remove pointer casts
This should also technically silence quite a few ubsan warnings.
Diffstat (limited to 'src/common')
-rw-r--r--src/common/x64/emitter.cpp23
-rw-r--r--src/common/x64/emitter.h8
2 files changed, 27 insertions, 4 deletions
diff --git a/src/common/x64/emitter.cpp b/src/common/x64/emitter.cpp
index cf31f8d69..749a75b72 100644
--- a/src/common/x64/emitter.cpp
+++ b/src/common/x64/emitter.cpp
@@ -109,6 +109,29 @@ u8 *XEmitter::GetWritableCodePtr()
109 return code; 109 return code;
110} 110}
111 111
112void XEmitter::Write8(u8 value)
113{
114 *code++ = value;
115}
116
117void XEmitter::Write16(u16 value)
118{
119 std::memcpy(code, &value, sizeof(u16));
120 code += sizeof(u16);
121}
122
123void XEmitter::Write32(u32 value)
124{
125 std::memcpy(code, &value, sizeof(u32));
126 code += sizeof(u32);
127}
128
129void XEmitter::Write64(u64 value)
130{
131 std::memcpy(code, &value, sizeof(u64));
132 code += sizeof(u64);
133}
134
112void XEmitter::ReserveCodeSpace(int bytes) 135void XEmitter::ReserveCodeSpace(int bytes)
113{ 136{
114 for (int i = 0; i < bytes; i++) 137 for (int i = 0; i < bytes; i++)
diff --git a/src/common/x64/emitter.h b/src/common/x64/emitter.h
index 86f4a1fff..3d6eeb564 100644
--- a/src/common/x64/emitter.h
+++ b/src/common/x64/emitter.h
@@ -359,10 +359,10 @@ private:
359 void ABI_CalculateFrameSize(u32 mask, size_t rsp_alignment, size_t needed_frame_size, size_t* shadowp, size_t* subtractionp, size_t* xmm_offsetp); 359 void ABI_CalculateFrameSize(u32 mask, size_t rsp_alignment, size_t needed_frame_size, size_t* shadowp, size_t* subtractionp, size_t* xmm_offsetp);
360 360
361protected: 361protected:
362 void Write8(u8 value) {*code++ = value;} 362 void Write8(u8 value);
363 void Write16(u16 value) {*(u16*)code = (value); code += 2;} 363 void Write16(u16 value);
364 void Write32(u32 value) {*(u32*)code = (value); code += 4;} 364 void Write32(u32 value);
365 void Write64(u64 value) {*(u64*)code = (value); code += 8;} 365 void Write64(u64 value);
366 366
367public: 367public:
368 XEmitter() { code = nullptr; flags_locked = false; } 368 XEmitter() { code = nullptr; flags_locked = false; }