Mercurial > hg > truffle
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 { |