135 oop* _free_list; // Handle free list
136 int _allocate_before_rebuild; // Number of blocks to allocate before rebuilding free list
137
138 // Check JNI, "planned capacity" for current frame (or push/ensure)
139 size_t _planned_capacity;
140
141 #ifndef PRODUCT
142 JNIHandleBlock* _block_list_link; // Link for list below
143 static JNIHandleBlock* _block_list; // List of all allocated blocks (for debugging only)
144 #endif
145
146 static JNIHandleBlock* _block_free_list; // Free list of currently unused blocks
147 static int _blocks_allocated; // For debugging/printing
148
149 // Fill block with bad_handle values
150 void zap();
151
152 // Free list computation
153 void rebuild_free_list();
154
155 public:
156 // Handle allocation
157 jobject allocate_handle(oop obj);
158
159 // Release Handle
160 void release_handle(jobject);
161
162 // Block allocation and block free list management
163 static JNIHandleBlock* allocate_block(Thread* thread = NULL);
164 static void release_block(JNIHandleBlock* block, Thread* thread = NULL);
165
166 // JNI PushLocalFrame/PopLocalFrame support
167 JNIHandleBlock* pop_frame_link() const { return _pop_frame_link; }
168 void set_pop_frame_link(JNIHandleBlock* block) { _pop_frame_link = block; }
169
170 // Stub generator support
171 static int top_offset_in_bytes() { return offset_of(JNIHandleBlock, _top); }
172
173 // Garbage collection support
174 // Traversal of regular handles
|
135 oop* _free_list; // Handle free list
136 int _allocate_before_rebuild; // Number of blocks to allocate before rebuilding free list
137
138 // Check JNI, "planned capacity" for current frame (or push/ensure)
139 size_t _planned_capacity;
140
141 #ifndef PRODUCT
142 JNIHandleBlock* _block_list_link; // Link for list below
143 static JNIHandleBlock* _block_list; // List of all allocated blocks (for debugging only)
144 #endif
145
146 static JNIHandleBlock* _block_free_list; // Free list of currently unused blocks
147 static int _blocks_allocated; // For debugging/printing
148
149 // Fill block with bad_handle values
150 void zap();
151
152 // Free list computation
153 void rebuild_free_list();
154
155 // No more handles in the both the current and following blocks
156 void clear() { _top = 0; }
157
158 public:
159 // Handle allocation
160 jobject allocate_handle(oop obj);
161
162 // Release Handle
163 void release_handle(jobject);
164
165 // Block allocation and block free list management
166 static JNIHandleBlock* allocate_block(Thread* thread = NULL);
167 static void release_block(JNIHandleBlock* block, Thread* thread = NULL);
168
169 // JNI PushLocalFrame/PopLocalFrame support
170 JNIHandleBlock* pop_frame_link() const { return _pop_frame_link; }
171 void set_pop_frame_link(JNIHandleBlock* block) { _pop_frame_link = block; }
172
173 // Stub generator support
174 static int top_offset_in_bytes() { return offset_of(JNIHandleBlock, _top); }
175
176 // Garbage collection support
177 // Traversal of regular handles
|