comparison src/cpu/x86/vm/templateTable_x86_32.cpp @ 3785:ddd894528dbc

7056328: JSR 292 invocation sometimes fails in adapters for types not on boot class path Reviewed-by: never
author jrose
date Thu, 23 Jun 2011 17:14:06 -0700
parents 286c498ae0d4
children fdb992d83a87
comparison
equal deleted inserted replaced
3784:aabf25fa3f05 3785:ddd894528dbc
371 { Label L; 371 { Label L;
372 __ cmpl(rdx, JVM_CONSTANT_Integer); 372 __ cmpl(rdx, JVM_CONSTANT_Integer);
373 __ jcc(Assembler::equal, L); 373 __ jcc(Assembler::equal, L);
374 __ cmpl(rdx, JVM_CONSTANT_String); 374 __ cmpl(rdx, JVM_CONSTANT_String);
375 __ jcc(Assembler::equal, L); 375 __ jcc(Assembler::equal, L);
376 __ cmpl(rdx, JVM_CONSTANT_Object);
377 __ jcc(Assembler::equal, L);
376 __ stop("unexpected tag type in ldc"); 378 __ stop("unexpected tag type in ldc");
377 __ bind(L); 379 __ bind(L);
378 } 380 }
379 #endif 381 #endif
380 Label isOop; 382 Label isOop;
381 // atos and itos 383 // atos and itos
382 // String is only oop type we will see here 384 // Integer is only non-oop type we will see here
383 __ cmpl(rdx, JVM_CONSTANT_String); 385 __ cmpl(rdx, JVM_CONSTANT_Integer);
384 __ jccb(Assembler::equal, isOop); 386 __ jccb(Assembler::notEqual, isOop);
385 __ movl(rax, Address(rcx, rbx, Address::times_ptr, base_offset)); 387 __ movl(rax, Address(rcx, rbx, Address::times_ptr, base_offset));
386 __ push(itos); 388 __ push(itos);
387 __ jmp(Done); 389 __ jmp(Done);
388 __ bind(isOop); 390 __ bind(isOop);
389 __ movptr(rax, Address(rcx, rbx, Address::times_ptr, base_offset)); 391 __ movptr(rax, Address(rcx, rbx, Address::times_ptr, base_offset));