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