comparison src/cpu/x86/vm/interp_masm_x86_64.cpp @ 13034:ea79ab313e98

8027252: Crash in interpreter because get_unsigned_2_byte_index_at_bcp reads 4 bytes Summary: Use 2-byte loads to load indexes from the byte code stream to avoid out of bounds reads. Reviewed-by: coleenp, sspitsyn
author mgerdin
date Wed, 30 Oct 2013 15:35:25 +0100
parents 5ccbab1c69f3
children 096c224171c4 d3f14809b051
comparison
equal deleted inserted replaced
13002:1a04de1aaedb 13034:ea79ab313e98
190 190
191 void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp( 191 void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp(
192 Register reg, 192 Register reg,
193 int bcp_offset) { 193 int bcp_offset) {
194 assert(bcp_offset >= 0, "bcp is still pointing to start of bytecode"); 194 assert(bcp_offset >= 0, "bcp is still pointing to start of bytecode");
195 movl(reg, Address(r13, bcp_offset)); 195 load_unsigned_short(reg, Address(r13, bcp_offset));
196 bswapl(reg); 196 bswapl(reg);
197 shrl(reg, 16); 197 shrl(reg, 16);
198 } 198 }
199 199
200 200