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

Side by Side Diff: runtime/vm/verified_memory_test.cc

Issue 2974233002: VM: Re-format to use at most one newline between functions (Closed)
Patch Set: Rebase and merge Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/utils_test.cc ('k') | runtime/vm/verifier.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/verified_memory.h"
5 #include "platform/assert.h" 6 #include "platform/assert.h"
6 #include "vm/unit_test.h" 7 #include "vm/unit_test.h"
7 #include "vm/verified_memory.h"
8 8
9 namespace dart { 9 namespace dart {
10 10
11 void Init() { 11 void Init() {
12 #if defined(DEBUG) 12 #if defined(DEBUG)
13 FLAG_verified_mem = true; 13 FLAG_verified_mem = true;
14 #endif 14 #endif
15 } 15 }
16 16
17
18 void Shutdown() { 17 void Shutdown() {
19 #if defined(DEBUG) 18 #if defined(DEBUG)
20 // We must reset this to false to avoid checking some assumptions in 19 // We must reset this to false to avoid checking some assumptions in
21 // VM shutdown that are left violated by these tests. 20 // VM shutdown that are left violated by these tests.
22 FLAG_verified_mem = false; 21 FLAG_verified_mem = false;
23 #endif 22 #endif
24 } 23 }
25 24
26
27 VM_UNIT_TEST_CASE(VerifiedMemoryReserve) { 25 VM_UNIT_TEST_CASE(VerifiedMemoryReserve) {
28 Init(); 26 Init();
29 const intptr_t kReservationSize = 64 * KB; 27 const intptr_t kReservationSize = 64 * KB;
30 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize); 28 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize);
31 EXPECT_EQ(kReservationSize, vm->size()); 29 EXPECT_EQ(kReservationSize, vm->size());
32 delete vm; 30 delete vm;
33 Shutdown(); 31 Shutdown();
34 } 32 }
35 33
36
37 VM_UNIT_TEST_CASE(VerifiedMemoryCommit) { 34 VM_UNIT_TEST_CASE(VerifiedMemoryCommit) {
38 Init(); 35 Init();
39 const intptr_t kReservationSize = 64 * KB; 36 const intptr_t kReservationSize = 64 * KB;
40 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize); 37 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize);
41 EXPECT_EQ(kReservationSize, vm->size()); 38 EXPECT_EQ(kReservationSize, vm->size());
42 vm->Commit(false); 39 vm->Commit(false);
43 delete vm; 40 delete vm;
44 Shutdown(); 41 Shutdown();
45 } 42 }
46 43
47
48 VM_UNIT_TEST_CASE(VerifiedMemoryBasic) { 44 VM_UNIT_TEST_CASE(VerifiedMemoryBasic) {
49 Init(); 45 Init();
50 const intptr_t kReservationSize = 64 * KB; 46 const intptr_t kReservationSize = 64 * KB;
51 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize); 47 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize);
52 EXPECT_EQ(kReservationSize, vm->size()); 48 EXPECT_EQ(kReservationSize, vm->size());
53 vm->Commit(false); 49 vm->Commit(false);
54 double* addr = reinterpret_cast<double*>(vm->address()); 50 double* addr = reinterpret_cast<double*>(vm->address());
55 VerifiedMemory::Write(&addr[0], 0.5); 51 VerifiedMemory::Write(&addr[0], 0.5);
56 EXPECT_EQ(0.5, addr[0]); 52 EXPECT_EQ(0.5, addr[0]);
57 VerifiedMemory::Write(&addr[1], 1.5); 53 VerifiedMemory::Write(&addr[1], 1.5);
58 VerifiedMemory::Write(&addr[2], 2.5); 54 VerifiedMemory::Write(&addr[2], 2.5);
59 VerifiedMemory::Write(&addr[0], 0.25); 55 VerifiedMemory::Write(&addr[0], 0.25);
60 static const double kNaN = NAN; 56 static const double kNaN = NAN;
61 VerifiedMemory::Write(&addr[0], kNaN); // Bitwise comparison should be used. 57 VerifiedMemory::Write(&addr[0], kNaN); // Bitwise comparison should be used.
62 VerifiedMemory::Write(&addr[0], 0.5); 58 VerifiedMemory::Write(&addr[0], 0.5);
63 int64_t* unverified = reinterpret_cast<int64_t*>(&addr[3]); 59 int64_t* unverified = reinterpret_cast<int64_t*>(&addr[3]);
64 *unverified = 123; 60 *unverified = 123;
65 VerifiedMemory::Verify(reinterpret_cast<uword>(addr), 3 * sizeof(double)); 61 VerifiedMemory::Verify(reinterpret_cast<uword>(addr), 3 * sizeof(double));
66 delete vm; 62 delete vm;
67 Shutdown(); 63 Shutdown();
68 } 64 }
69 65
70
71 VM_UNIT_TEST_CASE(VerifiedMemoryAccept) { 66 VM_UNIT_TEST_CASE(VerifiedMemoryAccept) {
72 Init(); 67 Init();
73 const intptr_t kReservationSize = 64 * KB; 68 const intptr_t kReservationSize = 64 * KB;
74 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize); 69 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize);
75 EXPECT_EQ(kReservationSize, vm->size()); 70 EXPECT_EQ(kReservationSize, vm->size());
76 vm->Commit(false); 71 vm->Commit(false);
77 double* addr = reinterpret_cast<double*>(vm->address()); 72 double* addr = reinterpret_cast<double*>(vm->address());
78 VerifiedMemory::Write(&addr[0], 0.5); 73 VerifiedMemory::Write(&addr[0], 0.5);
79 VerifiedMemory::Write(&addr[1], 1.5); 74 VerifiedMemory::Write(&addr[1], 1.5);
80 VerifiedMemory::Write(&addr[2], 2.5); 75 VerifiedMemory::Write(&addr[2], 2.5);
81 VerifiedMemory::Write(&addr[0], 0.25); 76 VerifiedMemory::Write(&addr[0], 0.25);
82 // Unverified write followed by Accept ("I know what I'm doing"). 77 // Unverified write followed by Accept ("I know what I'm doing").
83 memset(addr, 0xf3, 2 * sizeof(double)); 78 memset(addr, 0xf3, 2 * sizeof(double));
84 VerifiedMemory::Accept(reinterpret_cast<uword>(addr), 2 * sizeof(double)); 79 VerifiedMemory::Accept(reinterpret_cast<uword>(addr), 2 * sizeof(double));
85 VerifiedMemory::Verify(reinterpret_cast<uword>(addr), 3 * sizeof(double)); 80 VerifiedMemory::Verify(reinterpret_cast<uword>(addr), 3 * sizeof(double));
86 delete vm; 81 delete vm;
87 Shutdown(); 82 Shutdown();
88 } 83 }
89 84
90
91 // Negative tests below. 85 // Negative tests below.
92 86
93 VM_UNIT_TEST_CASE(VerifyImplicit_Crash) { 87 VM_UNIT_TEST_CASE(VerifyImplicit_Crash) {
94 Init(); 88 Init();
95 const intptr_t kReservationSize = 64 * KB; 89 const intptr_t kReservationSize = 64 * KB;
96 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize); 90 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize);
97 EXPECT_EQ(kReservationSize, vm->size()); 91 EXPECT_EQ(kReservationSize, vm->size());
98 vm->Commit(false); 92 vm->Commit(false);
99 double* addr = reinterpret_cast<double*>(vm->address()); 93 double* addr = reinterpret_cast<double*>(vm->address());
100 addr[0] = 0.5; // Forget to use Write. 94 addr[0] = 0.5; // Forget to use Write.
101 VerifiedMemory::Write(&addr[0], 1.5); 95 VerifiedMemory::Write(&addr[0], 1.5);
102 Shutdown(); 96 Shutdown();
103 } 97 }
104 98
105
106 VM_UNIT_TEST_CASE(VerifyExplicit_Crash) { 99 VM_UNIT_TEST_CASE(VerifyExplicit_Crash) {
107 Init(); 100 Init();
108 const intptr_t kReservationSize = 64 * KB; 101 const intptr_t kReservationSize = 64 * KB;
109 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize); 102 VirtualMemory* vm = VerifiedMemory::Reserve(kReservationSize);
110 EXPECT_EQ(kReservationSize, vm->size()); 103 EXPECT_EQ(kReservationSize, vm->size());
111 vm->Commit(false); 104 vm->Commit(false);
112 double* addr = reinterpret_cast<double*>(vm->address()); 105 double* addr = reinterpret_cast<double*>(vm->address());
113 VerifiedMemory::Write(&addr[0], 0.5); 106 VerifiedMemory::Write(&addr[0], 0.5);
114 VerifiedMemory::Write(&addr[1], 1.5); 107 VerifiedMemory::Write(&addr[1], 1.5);
115 addr[1] = 3.5; // Forget to use Write. 108 addr[1] = 3.5; // Forget to use Write.
116 VerifiedMemory::Write(&addr[2], 2.5); 109 VerifiedMemory::Write(&addr[2], 2.5);
117 VerifiedMemory::Verify(reinterpret_cast<uword>(addr), 3 * sizeof(double)); 110 VerifiedMemory::Verify(reinterpret_cast<uword>(addr), 3 * sizeof(double));
118 Shutdown(); 111 Shutdown();
119 } 112 }
120 113
121 } // namespace dart 114 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/utils_test.cc ('k') | runtime/vm/verifier.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698