hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp
changeset 7114 65d21c4c6337
parent 6772 2563324665d5
child 7397 5b173b4ca846
equal deleted inserted replaced
7113:f05a0ba2802f 7114:65d21c4c6337
   339   Register Rscratch = G4_scratch;
   339   Register Rscratch = G4_scratch;
   340 
   340 
   341   resolve_cache_and_index(f1_oop, Otos_i, Rcache, Rscratch, wide ? sizeof(u2) : sizeof(u1));
   341   resolve_cache_and_index(f1_oop, Otos_i, Rcache, Rscratch, wide ? sizeof(u2) : sizeof(u1));
   342 
   342 
   343   __ verify_oop(Otos_i);
   343   __ verify_oop(Otos_i);
       
   344 
       
   345   Label L_done;
       
   346   const Register Rcon_klass = G3_scratch;  // same as Rcache
       
   347   const Register Rarray_klass = G4_scratch;  // same as Rscratch
       
   348   __ load_klass(Otos_i, Rcon_klass);
       
   349   AddressLiteral array_klass_addr((address)Universe::systemObjArrayKlassObj_addr());
       
   350   __ load_contents(array_klass_addr, Rarray_klass);
       
   351   __ cmp(Rarray_klass, Rcon_klass);
       
   352   __ brx(Assembler::notEqual, false, Assembler::pt, L_done);
       
   353   __ delayed()->nop();
       
   354   __ ld(Address(Otos_i, arrayOopDesc::length_offset_in_bytes()), Rcon_klass);
       
   355   __ tst(Rcon_klass);
       
   356   __ brx(Assembler::zero, true, Assembler::pt, L_done);
       
   357   __ delayed()->clr(Otos_i);    // executed only if branch is taken
       
   358 
       
   359   // Load the exception from the system-array which wraps it:
       
   360   __ load_heap_oop(Otos_i, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Otos_i);
       
   361   __ throw_if_not_x(Assembler::never, Interpreter::throw_exception_entry(), G3_scratch);
       
   362 
       
   363   __ bind(L_done);
   344 }
   364 }
   345 
   365 
   346 void TemplateTable::ldc2_w() {
   366 void TemplateTable::ldc2_w() {
   347   transition(vtos, vtos);
   367   transition(vtos, vtos);
   348   Label retry, resolved, Long, exit;
   368   Label retry, resolved, Long, exit;