comparison src/cpu/x86/vm/methodHandles_x86.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 0abefdb54d21
children 069ab3f976d3
comparison
equal deleted inserted replaced
4058:59e515ee9354 4059:44ce519bc3d1
380 if (might_be_negative) { 380 if (might_be_negative) {
381 // clean high bits of stack motion register (was loaded as an int) 381 // clean high bits of stack motion register (was loaded as an int)
382 __ movslq(rdi_stack_move, rdi_stack_move); 382 __ movslq(rdi_stack_move, rdi_stack_move);
383 } 383 }
384 #endif //_LP64 384 #endif //_LP64
385 #ifdef ASSERT
385 if (VerifyMethodHandles) { 386 if (VerifyMethodHandles) {
386 Label L_ok, L_bad; 387 Label L_ok, L_bad;
387 int32_t stack_move_limit = 0x4000; // extra-large 388 int32_t stack_move_limit = 0x4000; // extra-large
388 __ cmpptr(rdi_stack_move, stack_move_limit); 389 __ cmpptr(rdi_stack_move, stack_move_limit);
389 __ jcc(Assembler::greaterEqual, L_bad); 390 __ jcc(Assembler::greaterEqual, L_bad);
391 __ jcc(Assembler::greater, L_ok); 392 __ jcc(Assembler::greater, L_ok);
392 __ bind(L_bad); 393 __ bind(L_bad);
393 __ stop("load_stack_move of garbage value"); 394 __ stop("load_stack_move of garbage value");
394 __ BIND(L_ok); 395 __ BIND(L_ok);
395 } 396 }
397 #endif
396 BLOCK_COMMENT("} load_stack_move"); 398 BLOCK_COMMENT("} load_stack_move");
397 } 399 }
398 400
399 #ifdef ASSERT 401 #ifdef ASSERT
400 void MethodHandles::RicochetFrame::verify_offsets() { 402 void MethodHandles::RicochetFrame::verify_offsets() {