2207 // The Rcache and Rindex registers must be set before call.
2208 // Input:
2209 // - Rcache, Rindex
2210 // Output:
2211 // - Robj, Roffset, Rflags
2212 void TemplateTable::load_field_cp_cache_entry(Register Robj,
2213 Register Rcache,
2214 Register Rindex /* unused on PPC64 */,
2215 Register Roffset,
2216 Register Rflags,
2217 bool is_static = false) {
2218 assert_different_registers(Rcache, Rflags, Roffset);
2219 // assert(Rindex == noreg, "parameter not used on PPC64");
2220
2221 ByteSize cp_base_offset = ConstantPoolCache::base_offset();
2222 __ ld(Rflags, in_bytes(cp_base_offset) + in_bytes(ConstantPoolCacheEntry::flags_offset()), Rcache);
2223 __ ld(Roffset, in_bytes(cp_base_offset) + in_bytes(ConstantPoolCacheEntry::f2_offset()), Rcache);
2224 if (is_static) {
2225 __ ld(Robj, in_bytes(cp_base_offset) + in_bytes(ConstantPoolCacheEntry::f1_offset()), Rcache);
2226 __ ld(Robj, in_bytes(Klass::java_mirror_offset()), Robj);
2227 // Acquire not needed here. Following access has an address dependency on this value.
2228 }
2229 }
2230
2231 // Load the constant pool cache entry at invokes into registers.
2232 // Resolve if necessary.
2233
2234 // Input Registers:
2235 // - None, bcp is used, though
2236 //
2237 // Return registers:
2238 // - Rmethod (f1 field or f2 if invokevirtual)
2239 // - Ritable_index (f2 field)
2240 // - Rflags (flags field)
2241 //
2242 // Kills:
2243 // - R21
2244 //
2245 void TemplateTable::load_invoke_cp_cache_entry(int byte_no,
2246 Register Rmethod,
|
2207 // The Rcache and Rindex registers must be set before call.
2208 // Input:
2209 // - Rcache, Rindex
2210 // Output:
2211 // - Robj, Roffset, Rflags
2212 void TemplateTable::load_field_cp_cache_entry(Register Robj,
2213 Register Rcache,
2214 Register Rindex /* unused on PPC64 */,
2215 Register Roffset,
2216 Register Rflags,
2217 bool is_static = false) {
2218 assert_different_registers(Rcache, Rflags, Roffset);
2219 // assert(Rindex == noreg, "parameter not used on PPC64");
2220
2221 ByteSize cp_base_offset = ConstantPoolCache::base_offset();
2222 __ ld(Rflags, in_bytes(cp_base_offset) + in_bytes(ConstantPoolCacheEntry::flags_offset()), Rcache);
2223 __ ld(Roffset, in_bytes(cp_base_offset) + in_bytes(ConstantPoolCacheEntry::f2_offset()), Rcache);
2224 if (is_static) {
2225 __ ld(Robj, in_bytes(cp_base_offset) + in_bytes(ConstantPoolCacheEntry::f1_offset()), Rcache);
2226 __ ld(Robj, in_bytes(Klass::java_mirror_offset()), Robj);
2227 __ resolve_oop_handle(Robj);
2228 // Acquire not needed here. Following access has an address dependency on this value.
2229 }
2230 }
2231
2232 // Load the constant pool cache entry at invokes into registers.
2233 // Resolve if necessary.
2234
2235 // Input Registers:
2236 // - None, bcp is used, though
2237 //
2238 // Return registers:
2239 // - Rmethod (f1 field or f2 if invokevirtual)
2240 // - Ritable_index (f2 field)
2241 // - Rflags (flags field)
2242 //
2243 // Kills:
2244 // - R21
2245 //
2246 void TemplateTable::load_invoke_cp_cache_entry(int byte_no,
2247 Register Rmethod,
|