Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp @ 12160:f98f5d48f511
7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
Summary: Do patching rather bailing out for unlinked call with appendix
Reviewed-by: twisti, kvn
author | roland |
---|---|
date | Wed, 21 Aug 2013 13:34:45 +0200 |
parents | b800986664f4 |
children | 7944aba7ba41 |
comparison
equal
deleted
inserted
replaced
12159:b17d8f6d9ed7 | 12160:f98f5d48f511 |
---|---|
518 | 518 |
519 | 519 |
520 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo *info) { | 520 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo *info) { |
521 // Allocate a new index in table to hold the object once it's been patched | 521 // Allocate a new index in table to hold the object once it's been patched |
522 int oop_index = __ oop_recorder()->allocate_oop_index(NULL); | 522 int oop_index = __ oop_recorder()->allocate_oop_index(NULL); |
523 PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_mirror_id, oop_index); | 523 PatchingStub* patch = new PatchingStub(_masm, patching_id(info), oop_index); |
524 | 524 |
525 AddressLiteral addrlit(NULL, oop_Relocation::spec(oop_index)); | 525 AddressLiteral addrlit(NULL, oop_Relocation::spec(oop_index)); |
526 assert(addrlit.rspec().type() == relocInfo::oop_type, "must be an oop reloc"); | 526 assert(addrlit.rspec().type() == relocInfo::oop_type, "must be an oop reloc"); |
527 // It may not seem necessary to use a sethi/add pair to load a NULL into dest, but the | 527 // It may not seem necessary to use a sethi/add pair to load a NULL into dest, but the |
528 // NULL will be dynamically patched later and the patched value may be large. We must | 528 // NULL will be dynamically patched later and the patched value may be large. We must |