Mercurial > hg > graal-jvmci-8
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() { |