comparison src/cpu/sparc/vm/methodHandles_sparc.cpp @ 4059:44ce519bc3d1

7104960: JSR 292: +VerifyMethodHandles in product JVM can overflow buffer Reviewed-by: kvn, jrose, twisti
author never
date Tue, 08 Nov 2011 10:31:53 -0800
parents c26de9aef2ed
children 6729bbc1fcd6
comparison
equal deleted inserted replaced
4058:59e515ee9354 4059:44ce519bc3d1
350 Address G3_amh_conversion, 350 Address G3_amh_conversion,
351 Register stack_move_reg) { 351 Register stack_move_reg) {
352 BLOCK_COMMENT("load_stack_move {"); 352 BLOCK_COMMENT("load_stack_move {");
353 __ ldsw(G3_amh_conversion, stack_move_reg); 353 __ ldsw(G3_amh_conversion, stack_move_reg);
354 __ sra(stack_move_reg, CONV_STACK_MOVE_SHIFT, stack_move_reg); 354 __ sra(stack_move_reg, CONV_STACK_MOVE_SHIFT, stack_move_reg);
355 #ifdef ASSERT
355 if (VerifyMethodHandles) { 356 if (VerifyMethodHandles) {
356 Label L_ok, L_bad; 357 Label L_ok, L_bad;
357 int32_t stack_move_limit = 0x0800; // extra-large 358 int32_t stack_move_limit = 0x0800; // extra-large
358 __ cmp_and_br_short(stack_move_reg, stack_move_limit, Assembler::greaterEqual, Assembler::pn, L_bad); 359 __ cmp_and_br_short(stack_move_reg, stack_move_limit, Assembler::greaterEqual, Assembler::pn, L_bad);
359 __ cmp(stack_move_reg, -stack_move_limit); 360 __ cmp(stack_move_reg, -stack_move_limit);
361 __ delayed()->nop(); 362 __ delayed()->nop();
362 __ BIND(L_bad); 363 __ BIND(L_bad);
363 __ stop("load_stack_move of garbage value"); 364 __ stop("load_stack_move of garbage value");
364 __ BIND(L_ok); 365 __ BIND(L_ok);
365 } 366 }
367 #endif
366 BLOCK_COMMENT("} load_stack_move"); 368 BLOCK_COMMENT("} load_stack_move");
367 } 369 }
368 370
369 #ifdef ASSERT 371 #ifdef ASSERT
370 void MethodHandles::RicochetFrame::verify() const { 372 void MethodHandles::RicochetFrame::verify() const {