< prev index next >

src/cpu/s390/vm/templateTable_s390.cpp

Print this page




2365 // The Rcache and index registers must be set before call.
2366 // Index is already a byte offset, don't shift!
2367 void TemplateTable::load_field_cp_cache_entry(Register obj,
2368                                               Register cache,
2369                                               Register index,
2370                                               Register off,
2371                                               Register flags,
2372                                               bool is_static = false) {
2373   assert_different_registers(cache, index, flags, off);
2374   ByteSize cp_base_offset = ConstantPoolCache::base_offset();
2375 
2376   // Field offset
2377   __ mem2reg_opt(off, Address(cache, index, cp_base_offset + ConstantPoolCacheEntry::f2_offset()));
2378   // Flags. Must load 64 bits.
2379   __ mem2reg_opt(flags, Address(cache, index, cp_base_offset + ConstantPoolCacheEntry::flags_offset()));
2380 
2381   // klass overwrite register
2382   if (is_static) {
2383     __ mem2reg_opt(obj, Address(cache, index, cp_base_offset + ConstantPoolCacheEntry::f1_offset()));
2384     __ mem2reg_opt(obj, Address(obj, Klass::java_mirror_offset()));

2385   }
2386 }
2387 
2388 void TemplateTable::load_invoke_cp_cache_entry(int byte_no,
2389                                                Register method,
2390                                                Register itable_index,
2391                                                Register flags,
2392                                                bool is_invokevirtual,
2393                                                bool is_invokevfinal, // unused
2394                                                bool is_invokedynamic) {
2395   BLOCK_COMMENT("load_invoke_cp_cache_entry {");
2396   // Setup registers.
2397   const Register cache     = Z_ARG1;
2398   const Register cpe_offset= flags;
2399   const ByteSize base_off  = ConstantPoolCache::base_offset();
2400   const ByteSize f1_off    = ConstantPoolCacheEntry::f1_offset();
2401   const ByteSize f2_off    = ConstantPoolCacheEntry::f2_offset();
2402   const ByteSize flags_off = ConstantPoolCacheEntry::flags_offset();
2403   const int method_offset  = in_bytes(base_off + ((byte_no == f2_byte) ? f2_off : f1_off));
2404   const int flags_offset   = in_bytes(base_off + flags_off);




2365 // The Rcache and index registers must be set before call.
2366 // Index is already a byte offset, don't shift!
2367 void TemplateTable::load_field_cp_cache_entry(Register obj,
2368                                               Register cache,
2369                                               Register index,
2370                                               Register off,
2371                                               Register flags,
2372                                               bool is_static = false) {
2373   assert_different_registers(cache, index, flags, off);
2374   ByteSize cp_base_offset = ConstantPoolCache::base_offset();
2375 
2376   // Field offset
2377   __ mem2reg_opt(off, Address(cache, index, cp_base_offset + ConstantPoolCacheEntry::f2_offset()));
2378   // Flags. Must load 64 bits.
2379   __ mem2reg_opt(flags, Address(cache, index, cp_base_offset + ConstantPoolCacheEntry::flags_offset()));
2380 
2381   // klass overwrite register
2382   if (is_static) {
2383     __ mem2reg_opt(obj, Address(cache, index, cp_base_offset + ConstantPoolCacheEntry::f1_offset()));
2384     __ mem2reg_opt(obj, Address(obj, Klass::java_mirror_offset()));
2385     __ resolve_oop_handle(obj);
2386   }
2387 }
2388 
2389 void TemplateTable::load_invoke_cp_cache_entry(int byte_no,
2390                                                Register method,
2391                                                Register itable_index,
2392                                                Register flags,
2393                                                bool is_invokevirtual,
2394                                                bool is_invokevfinal, // unused
2395                                                bool is_invokedynamic) {
2396   BLOCK_COMMENT("load_invoke_cp_cache_entry {");
2397   // Setup registers.
2398   const Register cache     = Z_ARG1;
2399   const Register cpe_offset= flags;
2400   const ByteSize base_off  = ConstantPoolCache::base_offset();
2401   const ByteSize f1_off    = ConstantPoolCacheEntry::f1_offset();
2402   const ByteSize f2_off    = ConstantPoolCacheEntry::f2_offset();
2403   const ByteSize flags_off = ConstantPoolCacheEntry::flags_offset();
2404   const int method_offset  = in_bytes(base_off + ((byte_no == f2_byte) ? f2_off : f1_off));
2405   const int flags_offset   = in_bytes(base_off + flags_off);


< prev index next >