Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: src/a64/simulator-a64.h

Issue 172223002: A64: Use fixed width MemoryRead/Write in simulator. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/a64/simulator-a64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/a64/simulator-a64.h
diff --git a/src/a64/simulator-a64.h b/src/a64/simulator-a64.h
index 535f287096a317e9ce157b17c033f2184399d0ed..195d3d1b171f3e57c0860a5422142c7349c09a79 100644
--- a/src/a64/simulator-a64.h
+++ b/src/a64/simulator-a64.h
@@ -665,17 +665,48 @@ class Simulator : public DecoderVisitor {
void CheckMemoryAccess(uint8_t* address, uint8_t* stack);
uint64_t MemoryRead(uint8_t* address, unsigned num_bytes);
- uint8_t MemoryRead8(uint8_t* address);
- uint16_t MemoryRead16(uint8_t* address);
- uint32_t MemoryRead32(uint8_t* address);
+ template <typename T>
+ T MemoryRead(uint8_t* address) {
+ ASSERT(address != NULL);
+ T read = 0;
+ memcpy(&read, address, sizeof(T));
+ return read;
+ }
+ uint8_t MemoryRead8(uint8_t* address) {
+ return MemoryRead<uint8_t>(address);
+ }
+ uint16_t MemoryRead16(uint8_t* address) {
+ return MemoryRead<uint16_t>(address);
+ }
+ uint32_t MemoryRead32(uint8_t* address) {
+ return MemoryRead<uint32_t>(address);
+ }
+ uint64_t MemoryRead64(uint8_t* address) {
+ return MemoryRead<uint64_t>(address);
+ }
float MemoryReadFP32(uint8_t* address);
- uint64_t MemoryRead64(uint8_t* address);
double MemoryReadFP64(uint8_t* address);
void MemoryWrite(uint8_t* address, uint64_t value, unsigned num_bytes);
- void MemoryWrite32(uint8_t* address, uint32_t value);
+ template <typename T>
+ void MemoryWrite(uint8_t* address, T value) {
+ ASSERT(address != NULL);
+ LogWrite(address, value, sizeof(T));
+ memcpy(address, &value, sizeof(T));
+ }
+ void MemoryWrite8(uint8_t* address, uint8_t value) {
+ MemoryWrite<uint8_t>(address, value);
+ }
+ void MemoryWrite16(uint8_t* address, uint16_t value) {
+ MemoryWrite<uint16_t>(address, value);
+ }
+ void MemoryWrite32(uint8_t* address, uint32_t value) {
+ MemoryWrite<uint32_t>(address, value);
+ }
+ void MemoryWrite64(uint8_t* address, uint64_t value) {
+ MemoryWrite<uint64_t>(address, value);
+ }
void MemoryWriteFP32(uint8_t* address, float value);
- void MemoryWrite64(uint8_t* address, uint64_t value);
void MemoryWriteFP64(uint8_t* address, double value);
int64_t ShiftOperand(unsigned reg_size,
« no previous file with comments | « no previous file | src/a64/simulator-a64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698