378 void InterpreterMacroAssembler::get_cache_index_at_bcp(Register Rdst, int bcp_offset, size_t index_size) { |
378 void InterpreterMacroAssembler::get_cache_index_at_bcp(Register Rdst, int bcp_offset, size_t index_size) { |
379 assert(bcp_offset > 0, "bcp is still pointing to start of bytecode"); |
379 assert(bcp_offset > 0, "bcp is still pointing to start of bytecode"); |
380 if (index_size == sizeof(u2)) { |
380 if (index_size == sizeof(u2)) { |
381 get_2_byte_integer_at_bcp(bcp_offset, Rdst, Unsigned); |
381 get_2_byte_integer_at_bcp(bcp_offset, Rdst, Unsigned); |
382 } else if (index_size == sizeof(u4)) { |
382 } else if (index_size == sizeof(u4)) { |
383 assert(EnableInvokeDynamic, "giant index used only for JSR 292"); |
|
384 get_4_byte_integer_at_bcp(bcp_offset, Rdst, Signed); |
383 get_4_byte_integer_at_bcp(bcp_offset, Rdst, Signed); |
385 assert(ConstantPool::decode_invokedynamic_index(~123) == 123, "else change next line"); |
384 assert(ConstantPool::decode_invokedynamic_index(~123) == 123, "else change next line"); |
386 nand(Rdst, Rdst, Rdst); // convert to plain index |
385 nand(Rdst, Rdst, Rdst); // convert to plain index |
387 } else if (index_size == sizeof(u1)) { |
386 } else if (index_size == sizeof(u1)) { |
388 lbz(Rdst, bcp_offset, R14_bcp); |
387 lbz(Rdst, bcp_offset, R14_bcp); |