963 address trampoline_call(Address entry, CodeBuffer *cbuf = NULL);
964
965 static bool far_branches() {
966 return ReservedCodeCacheSize > branch_range;
967 }
968
969 // Jumps that can reach anywhere in the code cache.
970 // Trashes tmp.
971 void far_call(Address entry, CodeBuffer *cbuf = NULL, Register tmp = rscratch1);
972 void far_jump(Address entry, CodeBuffer *cbuf = NULL, Register tmp = rscratch1);
973
974 static int far_branch_size() {
975 if (far_branches()) {
976 return 3 * 4; // adrp, add, br
977 } else {
978 return 4;
979 }
980 }
981
982 // Emit the CompiledIC call idiom
983 address ic_call(address entry);
984
985 public:
986
987 // Data
988
989 void mov_metadata(Register dst, Metadata* obj);
990 Address allocate_metadata_address(Metadata* obj);
991 Address constant_oop_address(jobject obj);
992
993 void movoop(Register dst, jobject obj, bool immediate = false);
994
995 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic.
996 void kernel_crc32(Register crc, Register buf, Register len,
997 Register table0, Register table1, Register table2, Register table3,
998 Register tmp, Register tmp2, Register tmp3);
999 // CRC32 code for java.util.zip.CRC32C::updateBytes() instrinsic.
1000 void kernel_crc32c(Register crc, Register buf, Register len,
1001 Register table0, Register table1, Register table2, Register table3,
1002 Register tmp, Register tmp2, Register tmp3);
1003
|
963 address trampoline_call(Address entry, CodeBuffer *cbuf = NULL);
964
965 static bool far_branches() {
966 return ReservedCodeCacheSize > branch_range;
967 }
968
969 // Jumps that can reach anywhere in the code cache.
970 // Trashes tmp.
971 void far_call(Address entry, CodeBuffer *cbuf = NULL, Register tmp = rscratch1);
972 void far_jump(Address entry, CodeBuffer *cbuf = NULL, Register tmp = rscratch1);
973
974 static int far_branch_size() {
975 if (far_branches()) {
976 return 3 * 4; // adrp, add, br
977 } else {
978 return 4;
979 }
980 }
981
982 // Emit the CompiledIC call idiom
983 address ic_call(address entry, jint method_index = 0);
984
985 public:
986
987 // Data
988
989 void mov_metadata(Register dst, Metadata* obj);
990 Address allocate_metadata_address(Metadata* obj);
991 Address constant_oop_address(jobject obj);
992
993 void movoop(Register dst, jobject obj, bool immediate = false);
994
995 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic.
996 void kernel_crc32(Register crc, Register buf, Register len,
997 Register table0, Register table1, Register table2, Register table3,
998 Register tmp, Register tmp2, Register tmp3);
999 // CRC32 code for java.util.zip.CRC32C::updateBytes() instrinsic.
1000 void kernel_crc32c(Register crc, Register buf, Register len,
1001 Register table0, Register table1, Register table2, Register table3,
1002 Register tmp, Register tmp2, Register tmp3);
1003
|