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

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

Issue 8528010: Changes to pass the current isolate to all runtime and native calls. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/zone.cc ('k') | no next file » | 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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/assert.h" 5 #include "vm/assert.h"
6 #include "vm/dart.h" 6 #include "vm/dart.h"
7 #include "vm/isolate.h" 7 #include "vm/isolate.h"
8 #include "vm/unit_test.h" 8 #include "vm/unit_test.h"
9 #include "vm/zone.h" 9 #include "vm/zone.h"
10 10
11 namespace dart { 11 namespace dart {
12 12
13 DECLARE_DEBUG_FLAG(bool, trace_zone_sizes); 13 DECLARE_DEBUG_FLAG(bool, trace_zone_sizes);
14 14
15 UNIT_TEST_CASE(AllocateZone) { 15 UNIT_TEST_CASE(AllocateZone) {
16 #if defined(DEBUG) 16 #if defined(DEBUG)
17 FLAG_trace_zone_sizes = true; 17 FLAG_trace_zone_sizes = true;
18 #endif 18 #endif
19 Isolate* isolate = Isolate::Init(); 19 Isolate* isolate = Isolate::Init();
20 EXPECT(Isolate::Current() == isolate); 20 EXPECT(Isolate::Current() == isolate);
21 EXPECT(isolate->current_zone() == NULL); 21 EXPECT(isolate->current_zone() == NULL);
22 { 22 {
23 Zone zone; 23 Zone zone(isolate);
24 EXPECT(isolate->current_zone() != NULL); 24 EXPECT(isolate->current_zone() != NULL);
25 intptr_t allocated_size = 0; 25 intptr_t allocated_size = 0;
26 26
27 // The loop is to make sure we overflow one segment and go on 27 // The loop is to make sure we overflow one segment and go on
28 // to the next segment. 28 // to the next segment.
29 for (int i = 0; i < 1000; i++) { 29 for (int i = 0; i < 1000; i++) {
30 uword first = zone.Allocate(2 * kWordSize); 30 uword first = zone.Allocate(2 * kWordSize);
31 uword second = zone.Allocate(3 * kWordSize); 31 uword second = zone.Allocate(3 * kWordSize);
32 EXPECT(first != second); 32 EXPECT(first != second);
33 allocated_size = ((2 + 3) * kWordSize); 33 allocated_size = ((2 + 3) * kWordSize);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 SimpleZoneObject() : slot(marker++) { } 87 SimpleZoneObject() : slot(marker++) { }
88 virtual int GetSlot() { return slot; } 88 virtual int GetSlot() { return slot; }
89 int slot; 89 int slot;
90 }; 90 };
91 91
92 // Reset the marker. 92 // Reset the marker.
93 marker = 0; 93 marker = 0;
94 94
95 // Create a few zone allocated objects. 95 // Create a few zone allocated objects.
96 { 96 {
97 Zone zone; 97 Zone zone(isolate);
98 EXPECT_EQ(0, zone.SizeInBytes()); 98 EXPECT_EQ(0, zone.SizeInBytes());
99 SimpleZoneObject* first = new SimpleZoneObject(); 99 SimpleZoneObject* first = new SimpleZoneObject();
100 EXPECT(first != NULL); 100 EXPECT(first != NULL);
101 SimpleZoneObject* second = new SimpleZoneObject(); 101 SimpleZoneObject* second = new SimpleZoneObject();
102 EXPECT(second != NULL); 102 EXPECT(second != NULL);
103 EXPECT(first != second); 103 EXPECT(first != second);
104 intptr_t expected_size = (2 * sizeof(SimpleZoneObject)); 104 intptr_t expected_size = (2 * sizeof(SimpleZoneObject));
105 EXPECT_LE(expected_size, zone.SizeInBytes()); 105 EXPECT_LE(expected_size, zone.SizeInBytes());
106 106
107 // Make sure the constructors were invoked. 107 // Make sure the constructors were invoked.
108 EXPECT_EQ(0, first->slot); 108 EXPECT_EQ(0, first->slot);
109 EXPECT_EQ(1, second->slot); 109 EXPECT_EQ(1, second->slot);
110 110
111 // Make sure we can write to the members of the zone objects. 111 // Make sure we can write to the members of the zone objects.
112 first->slot = 42; 112 first->slot = 42;
113 second->slot = 87; 113 second->slot = 87;
114 EXPECT_EQ(42, first->slot); 114 EXPECT_EQ(42, first->slot);
115 EXPECT_EQ(87, second->slot); 115 EXPECT_EQ(87, second->slot);
116 } 116 }
117 EXPECT(isolate->current_zone() == NULL); 117 EXPECT(isolate->current_zone() == NULL);
118 isolate->Shutdown(); 118 isolate->Shutdown();
119 delete isolate; 119 delete isolate;
120 } 120 }
121 121
122 } // namespace dart 122 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/zone.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698