302
303 // C++ bool manipulation
304
305 void movbool(Register dst, Address src);
306 void movbool(Address dst, bool boolconst);
307 void movbool(Address dst, Register src);
308 void testbool(Register dst);
309
310 void resolve_oop_handle(Register result, Register tmp = rscratch2);
311 void load_mirror(Register mirror, Register method, Register tmp = rscratch2);
312
313 // oop manipulations
314 void load_klass(Register dst, Register src);
315 void store_klass(Register dst, Register src);
316
317 void access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src,
318 Register tmp1, Register thread_tmp);
319 void access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src,
320 Register tmp1, Register tmp2);
321
322 // Resolves obj for read access. Result is placed in the same register.
323 // All other registers are preserved.
324 void resolve_for_read(DecoratorSet decorators, Register obj);
325
326 // Resolves obj for write access. Result is placed in the same register.
327 // All other registers are preserved.
328 void resolve_for_write(DecoratorSet decorators, Register obj);
329
330 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg,
331 Register thread_tmp = noreg, DecoratorSet decorators = 0);
332 void load_heap_oop_not_null(Register dst, Address src, Register tmp1 = noreg,
333 Register thread_tmp = noreg, DecoratorSet decorators = 0);
334 void store_heap_oop(Address dst, Register src, Register tmp1 = noreg,
335 Register tmp2 = noreg, DecoratorSet decorators = 0);
336
337 // Used for storing NULL. All other oop constants should be
338 // stored using routines that take a jobject.
339 void store_heap_oop_null(Address dst);
340
341 void load_prototype_header(Register dst, Register src);
342
343 #ifdef _LP64
344 void store_klass_gap(Register dst, Register src);
345
346 // This dummy is to prevent a call to store_heap_oop from
347 // converting a zero (like NULL) into a Register by giving
348 // the compiler two choices it can't resolve
|
302
303 // C++ bool manipulation
304
305 void movbool(Register dst, Address src);
306 void movbool(Address dst, bool boolconst);
307 void movbool(Address dst, Register src);
308 void testbool(Register dst);
309
310 void resolve_oop_handle(Register result, Register tmp = rscratch2);
311 void load_mirror(Register mirror, Register method, Register tmp = rscratch2);
312
313 // oop manipulations
314 void load_klass(Register dst, Register src);
315 void store_klass(Register dst, Register src);
316
317 void access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src,
318 Register tmp1, Register thread_tmp);
319 void access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src,
320 Register tmp1, Register tmp2);
321
322 // Resolves obj access. Result is placed in the same register.
323 // All other registers are preserved.
324 void resolve(DecoratorSet decorators, Register obj);
325
326 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg,
327 Register thread_tmp = noreg, DecoratorSet decorators = 0);
328 void load_heap_oop_not_null(Register dst, Address src, Register tmp1 = noreg,
329 Register thread_tmp = noreg, DecoratorSet decorators = 0);
330 void store_heap_oop(Address dst, Register src, Register tmp1 = noreg,
331 Register tmp2 = noreg, DecoratorSet decorators = 0);
332
333 // Used for storing NULL. All other oop constants should be
334 // stored using routines that take a jobject.
335 void store_heap_oop_null(Address dst);
336
337 void load_prototype_header(Register dst, Register src);
338
339 #ifdef _LP64
340 void store_klass_gap(Register dst, Register src);
341
342 // This dummy is to prevent a call to store_heap_oop from
343 // converting a zero (like NULL) into a Register by giving
344 // the compiler two choices it can't resolve
|