hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
changeset 5688 9052dc91ea67
parent 5419 f2e8cc8c12ea
child 5702 201c5cde25bb
equal deleted inserted replaced
5687:b862d1f189bd 5688:9052dc91ea67
   212   Label L_got_cache, L_giant_index;
   212   Label L_got_cache, L_giant_index;
   213   if (EnableInvokeDynamic) {
   213   if (EnableInvokeDynamic) {
   214     __ cmpb(Address(rsi, 0), Bytecodes::_invokedynamic);
   214     __ cmpb(Address(rsi, 0), Bytecodes::_invokedynamic);
   215     __ jcc(Assembler::equal, L_giant_index);
   215     __ jcc(Assembler::equal, L_giant_index);
   216   }
   216   }
   217   __ get_cache_and_index_at_bcp(rbx, rcx, 1, false);
   217   __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u2));
   218   __ bind(L_got_cache);
   218   __ bind(L_got_cache);
   219   __ movl(rbx, Address(rbx, rcx,
   219   __ movl(rbx, Address(rbx, rcx,
   220                     Address::times_ptr, constantPoolCacheOopDesc::base_offset() +
   220                     Address::times_ptr, constantPoolCacheOopDesc::base_offset() +
   221                     ConstantPoolCacheEntry::flags_offset()));
   221                     ConstantPoolCacheEntry::flags_offset()));
   222   __ andptr(rbx, 0xFF);
   222   __ andptr(rbx, 0xFF);
   224   __ dispatch_next(state, step);
   224   __ dispatch_next(state, step);
   225 
   225 
   226   // out of the main line of code...
   226   // out of the main line of code...
   227   if (EnableInvokeDynamic) {
   227   if (EnableInvokeDynamic) {
   228     __ bind(L_giant_index);
   228     __ bind(L_giant_index);
   229     __ get_cache_and_index_at_bcp(rbx, rcx, 1, true);
   229     __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u4));
   230     __ jmp(L_got_cache);
   230     __ jmp(L_got_cache);
   231   }
   231   }
   232 
   232 
   233   return entry;
   233   return entry;
   234 }
   234 }