Mercurial > hg > graal-compiler
comparison src/share/vm/utilities/array.hpp @ 432:275a3b7ff0d6
6770949: minor tweaks before 6655638
Summary: minor cleanups & tuning of array.hpp, debug.cpp, growableArray.hpp, hashtable.cpp
Reviewed-by: kvn
author | jrose |
---|---|
date | Wed, 12 Nov 2008 23:26:45 -0800 |
parents | a61af66fc99e |
children | ad8c8ca4ab0f |
comparison
equal
deleted
inserted
replaced
431:a45484ea312d | 432:275a3b7ff0d6 |
---|---|
38 // creation | 38 // creation |
39 ResourceArray() { | 39 ResourceArray() { |
40 _length = 0; | 40 _length = 0; |
41 _data = NULL; | 41 _data = NULL; |
42 DEBUG_ONLY(init_nesting();) | 42 DEBUG_ONLY(init_nesting();) |
43 // client may call initialize, at most once | |
43 } | 44 } |
44 | 45 |
45 | 46 |
46 ResourceArray(size_t esize, int length) { | 47 ResourceArray(size_t esize, int length) { |
48 DEBUG_ONLY(_data = NULL); | |
49 initialize(esize, length); | |
50 } | |
51 | |
52 void initialize(size_t esize, int length) { | |
47 assert(length >= 0, "illegal length"); | 53 assert(length >= 0, "illegal length"); |
54 assert(_data == NULL, "must be new object"); | |
48 _length = length; | 55 _length = length; |
49 _data = resource_allocate_bytes(esize * length); | 56 _data = resource_allocate_bytes(esize * length); |
50 DEBUG_ONLY(init_nesting();) | 57 DEBUG_ONLY(init_nesting();) |
51 } | 58 } |
52 | 59 |
109 \ | 116 \ |
110 public: \ | 117 public: \ |
111 /* creation */ \ | 118 /* creation */ \ |
112 array_name() : base_class() {} \ | 119 array_name() : base_class() {} \ |
113 array_name(const int length) : base_class(esize, length) {} \ | 120 array_name(const int length) : base_class(esize, length) {} \ |
114 array_name(const int length, const etype fx) : base_class(esize, length) { \ | 121 array_name(const int length, const etype fx) { initialize(length, fx); } \ |
122 void initialize(const int length) { base_class::initialize(esize, length); } \ | |
123 void initialize(const int length, const etype fx) { \ | |
124 initialize(length); \ | |
115 for (int i = 0; i < length; i++) ((etype*)_data)[i] = fx; \ | 125 for (int i = 0; i < length; i++) ((etype*)_data)[i] = fx; \ |
116 } \ | 126 } \ |
117 \ | 127 \ |
118 /* standard operations */ \ | 128 /* standard operations */ \ |
119 etype& operator [] (const int i) const { \ | 129 etype& operator [] (const int i) const { \ |
155 _length = i+1; \ | 165 _length = i+1; \ |
156 } \ | 166 } \ |
157 \ | 167 \ |
158 public: \ | 168 public: \ |
159 /* creation */ \ | 169 /* creation */ \ |
160 stack_name() : array_name() { _size = 0; } \ | 170 stack_name() : array_name() { _size = 0; } \ |
161 stack_name(const int size) : array_name(size){ _length = 0; _size = size; } \ | 171 stack_name(const int size) { initialize(size); } \ |
162 stack_name(const int size, const etype fx) : array_name(size, fx) { _size = size; } \ | 172 stack_name(const int size, const etype fx) { initialize(size, fx); } \ |
173 void initialize(const int size, const etype fx) { \ | |
174 _size = size; \ | |
175 array_name::initialize(size, fx); \ | |
176 /* _length == size, allocation and size are the same */ \ | |
177 } \ | |
178 void initialize(const int size) { \ | |
179 _size = size; \ | |
180 array_name::initialize(size); \ | |
181 _length = 0; /* reset length to zero; _size records the allocation */ \ | |
182 } \ | |
163 \ | 183 \ |
164 /* standard operations */ \ | 184 /* standard operations */ \ |
165 int size() const { return _size; } \ | 185 int size() const { return _size; } \ |
166 \ | 186 \ |
167 void push(const etype x) { \ | 187 int push(const etype x) { \ |
168 if (length() >= size()) expand(esize, length(), _size); \ | 188 int len = length(); \ |
169 ((etype*)_data)[_length++] = x; \ | 189 if (len >= size()) expand(esize, len, _size); \ |
190 ((etype*)_data)[len] = x; \ | |
191 _length = len+1; \ | |
192 return len; \ | |
170 } \ | 193 } \ |
171 \ | 194 \ |
172 etype pop() { \ | 195 etype pop() { \ |
173 assert(!is_empty(), "stack is empty"); \ | 196 assert(!is_empty(), "stack is empty"); \ |
174 return ((etype*)_data)[--_length]; \ | 197 return ((etype*)_data)[--_length]; \ |
233 \ | 256 \ |
234 /* deprecated operations - for compatibility with GrowableArray only */ \ | 257 /* deprecated operations - for compatibility with GrowableArray only */ \ |
235 int capacity() const { return size(); } \ | 258 int capacity() const { return size(); } \ |
236 void clear() { truncate(0); } \ | 259 void clear() { truncate(0); } \ |
237 void trunc_to(const int length) { truncate(length); } \ | 260 void trunc_to(const int length) { truncate(length); } \ |
238 void append(const etype x) { push(x); } \ | 261 int append(const etype x) { return push(x); } \ |
239 void appendAll(const stack_name* stack) { push_all(stack); } \ | 262 void appendAll(const stack_name* stack) { push_all(stack); } \ |
240 etype last() const { return top(); } \ | 263 etype last() const { return top(); } \ |
241 }; \ | 264 }; \ |
242 | 265 |
243 | 266 |