354 void decode_heap_oop(Register r); 355 void encode_heap_oop_not_null(Register r); 356 void decode_heap_oop_not_null(Register r); 357 void encode_heap_oop_not_null(Register dst, Register src); 358 void decode_heap_oop_not_null(Register dst, Register src); 359 360 void set_narrow_oop(Register dst, jobject obj); 361 void set_narrow_oop(Address dst, jobject obj); 362 void cmp_narrow_oop(Register dst, jobject obj); 363 void cmp_narrow_oop(Address dst, jobject obj); 364 365 void encode_klass_not_null(Register r); 366 void decode_klass_not_null(Register r); 367 void encode_klass_not_null(Register dst, Register src); 368 void decode_klass_not_null(Register dst, Register src); 369 void set_narrow_klass(Register dst, Klass* k); 370 void set_narrow_klass(Address dst, Klass* k); 371 void cmp_narrow_klass(Register dst, Klass* k); 372 void cmp_narrow_klass(Address dst, Klass* k); 373 374 // if heap base register is used - reinit it with the correct value 375 void reinit_heapbase(); 376 377 DEBUG_ONLY(void verify_heapbase(const char* msg);) 378 379 #endif // _LP64 380 381 // Int division/remainder for Java 382 // (as idivl, but checks for special case as described in JVM spec.) 383 // returns idivl instruction offset for implicit exception handling 384 int corrected_idivl(Register reg); 385 386 // Long division/remainder for Java 387 // (as idivq, but checks for special case as described in JVM spec.) 388 // returns idivq instruction offset for implicit exception handling 389 int corrected_idivq(Register reg); 390 391 void int3(); 392 393 // Long operation macros for a 32bit cpu | 354 void decode_heap_oop(Register r); 355 void encode_heap_oop_not_null(Register r); 356 void decode_heap_oop_not_null(Register r); 357 void encode_heap_oop_not_null(Register dst, Register src); 358 void decode_heap_oop_not_null(Register dst, Register src); 359 360 void set_narrow_oop(Register dst, jobject obj); 361 void set_narrow_oop(Address dst, jobject obj); 362 void cmp_narrow_oop(Register dst, jobject obj); 363 void cmp_narrow_oop(Address dst, jobject obj); 364 365 void encode_klass_not_null(Register r); 366 void decode_klass_not_null(Register r); 367 void encode_klass_not_null(Register dst, Register src); 368 void decode_klass_not_null(Register dst, Register src); 369 void set_narrow_klass(Register dst, Klass* k); 370 void set_narrow_klass(Address dst, Klass* k); 371 void cmp_narrow_klass(Register dst, Klass* k); 372 void cmp_narrow_klass(Address dst, Klass* k); 373 374 // Returns the byte size of the instructions generated by decode_klass_not_null() 375 // when compressed klass pointers are being used. 376 static int instr_size_for_decode_klass_not_null(); 377 378 // if heap base register is used - reinit it with the correct value 379 void reinit_heapbase(); 380 381 DEBUG_ONLY(void verify_heapbase(const char* msg);) 382 383 #endif // _LP64 384 385 // Int division/remainder for Java 386 // (as idivl, but checks for special case as described in JVM spec.) 387 // returns idivl instruction offset for implicit exception handling 388 int corrected_idivl(Register reg); 389 390 // Long division/remainder for Java 391 // (as idivq, but checks for special case as described in JVM spec.) 392 // returns idivq instruction offset for implicit exception handling 393 int corrected_idivq(Register reg); 394 395 void int3(); 396 397 // Long operation macros for a 32bit cpu |