diff options
| author | 2015-08-21 17:09:30 -0400 | |
|---|---|---|
| committer | 2015-08-21 17:09:33 -0400 | |
| commit | 78e7c77ff55123c144f2344e03535af7d677aa12 (patch) | |
| tree | 9e3b97c1fed3c278e39087dc126967f6ac16dbc5 /src | |
| parent | Merge pull request #1056 from lioncash/emitter (diff) | |
| download | yuzu-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')
| -rw-r--r-- | src/common/x64/emitter.cpp | 23 | ||||
| -rw-r--r-- | src/common/x64/emitter.h | 8 |
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 | ||
| 112 | void XEmitter::Write8(u8 value) | ||
| 113 | { | ||
| 114 | *code++ = value; | ||
| 115 | } | ||
| 116 | |||
| 117 | void XEmitter::Write16(u16 value) | ||
| 118 | { | ||
| 119 | std::memcpy(code, &value, sizeof(u16)); | ||
| 120 | code += sizeof(u16); | ||
| 121 | } | ||
| 122 | |||
| 123 | void XEmitter::Write32(u32 value) | ||
| 124 | { | ||
| 125 | std::memcpy(code, &value, sizeof(u32)); | ||
| 126 | code += sizeof(u32); | ||
| 127 | } | ||
| 128 | |||
| 129 | void XEmitter::Write64(u64 value) | ||
| 130 | { | ||
| 131 | std::memcpy(code, &value, sizeof(u64)); | ||
| 132 | code += sizeof(u64); | ||
| 133 | } | ||
| 134 | |||
| 112 | void XEmitter::ReserveCodeSpace(int bytes) | 135 | void 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 | ||
| 361 | protected: | 361 | protected: |
| 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 | ||
| 367 | public: | 367 | public: |
| 368 | XEmitter() { code = nullptr; flags_locked = false; } | 368 | XEmitter() { code = nullptr; flags_locked = false; } |