96 // |
96 // |
97 |
97 |
98 void GrowableCache::recache() { |
98 void GrowableCache::recache() { |
99 int len = _elements->length(); |
99 int len = _elements->length(); |
100 |
100 |
101 FREE_C_HEAP_ARRAY(address, _cache); |
101 FREE_C_HEAP_ARRAY(address, _cache, mtInternal); |
102 _cache = NEW_C_HEAP_ARRAY(address,len+1); |
102 _cache = NEW_C_HEAP_ARRAY(address,len+1, mtInternal); |
103 |
103 |
104 for (int i=0; i<len; i++) { |
104 for (int i=0; i<len; i++) { |
105 _cache[i] = _elements->at(i)->getCacheValue(); |
105 _cache[i] = _elements->at(i)->getCacheValue(); |
106 // |
106 // |
107 // The cache entry has gone bad. Without a valid frame pointer |
107 // The cache entry has gone bad. Without a valid frame pointer |
140 } |
140 } |
141 |
141 |
142 GrowableCache::~GrowableCache() { |
142 GrowableCache::~GrowableCache() { |
143 clear(); |
143 clear(); |
144 delete _elements; |
144 delete _elements; |
145 FREE_C_HEAP_ARRAY(address, _cache); |
145 FREE_C_HEAP_ARRAY(address, _cache, mtInternal); |
146 } |
146 } |
147 |
147 |
148 void GrowableCache::initialize(void *this_obj, void listener_fun(void *, address*) ) { |
148 void GrowableCache::initialize(void *this_obj, void listener_fun(void *, address*) ) { |
149 _this_obj = this_obj; |
149 _this_obj = this_obj; |
150 _listener_fun = listener_fun; |
150 _listener_fun = listener_fun; |
151 _elements = new (ResourceObj::C_HEAP) GrowableArray<GrowableElement*>(5,true); |
151 _elements = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<GrowableElement*>(5,true); |
152 recache(); |
152 recache(); |
153 } |
153 } |
154 |
154 |
155 // number of elements in the collection |
155 // number of elements in the collection |
156 int GrowableCache::length() { |
156 int GrowableCache::length() { |