V8 Project
v8memory.h
Go to the documentation of this file.
1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_MEMORY_H_
6 #define V8_MEMORY_H_
7 
8 namespace v8 {
9 namespace internal {
10 
11 // Memory provides an interface to 'raw' memory. It encapsulates the casts
12 // that typically are needed when incompatible pointer types are used.
13 
14 class Memory {
15  public:
16  static uint8_t& uint8_at(Address addr) {
17  return *reinterpret_cast<uint8_t*>(addr);
18  }
19 
20  static uint16_t& uint16_at(Address addr) {
21  return *reinterpret_cast<uint16_t*>(addr);
22  }
23 
24  static uint32_t& uint32_at(Address addr) {
25  return *reinterpret_cast<uint32_t*>(addr);
26  }
27 
28  static int32_t& int32_at(Address addr) {
29  return *reinterpret_cast<int32_t*>(addr);
30  }
31 
32  static uint64_t& uint64_at(Address addr) {
33  return *reinterpret_cast<uint64_t*>(addr);
34  }
35 
36  static int& int_at(Address addr) {
37  return *reinterpret_cast<int*>(addr);
38  }
39 
40  static unsigned& unsigned_at(Address addr) {
41  return *reinterpret_cast<unsigned*>(addr);
42  }
43 
44  static intptr_t& intptr_at(Address addr) {
45  return *reinterpret_cast<intptr_t*>(addr);
46  }
47 
48  static uintptr_t& uintptr_at(Address addr) {
49  return *reinterpret_cast<uintptr_t*>(addr);
50  }
51 
52  static double& double_at(Address addr) {
53  return *reinterpret_cast<double*>(addr);
54  }
55 
56  static Address& Address_at(Address addr) {
57  return *reinterpret_cast<Address*>(addr);
58  }
59 
60  static Object*& Object_at(Address addr) {
61  return *reinterpret_cast<Object**>(addr);
62  }
63 
65  return *reinterpret_cast<Handle<Object>*>(addr);
66  }
67 };
68 
69 } } // namespace v8::internal
70 
71 #endif // V8_MEMORY_H_
static uint8_t & uint8_at(Address addr)
Definition: v8memory.h:16
static int & int_at(Address addr)
Definition: v8memory.h:36
static uint32_t & uint32_at(Address addr)
Definition: v8memory.h:24
static Object *& Object_at(Address addr)
Definition: v8memory.h:60
static Address & Address_at(Address addr)
Definition: v8memory.h:56
static Handle< Object > & Object_Handle_at(Address addr)
Definition: v8memory.h:64
static uint16_t & uint16_at(Address addr)
Definition: v8memory.h:20
static intptr_t & intptr_at(Address addr)
Definition: v8memory.h:44
static uint64_t & uint64_at(Address addr)
Definition: v8memory.h:32
static uintptr_t & uintptr_at(Address addr)
Definition: v8memory.h:48
static double & double_at(Address addr)
Definition: v8memory.h:52
static unsigned & unsigned_at(Address addr)
Definition: v8memory.h:40
static int32_t & int32_at(Address addr)
Definition: v8memory.h:28
unsigned short uint16_t
Definition: unicode.cc:23
int int32_t
Definition: unicode.cc:24
byte * Address
Definition: globals.h:101
Debugger support for the V8 JavaScript engine.
Definition: accessors.cc:20