Mercurial > hg > graal-compiler
comparison src/share/vm/c1/c1_CodeStubs.hpp @ 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 | 46f6f063b272 |
children | de6a9e811145 |
comparison
equal
deleted
inserted
replaced
12159:b17d8f6d9ed7 | 12160:f98f5d48f511 |
---|---|
362 class PatchingStub: public CodeStub { | 362 class PatchingStub: public CodeStub { |
363 public: | 363 public: |
364 enum PatchID { | 364 enum PatchID { |
365 access_field_id, | 365 access_field_id, |
366 load_klass_id, | 366 load_klass_id, |
367 load_mirror_id | 367 load_mirror_id, |
368 load_appendix_id | |
368 }; | 369 }; |
369 enum constants { | 370 enum constants { |
370 patch_info_size = 3 | 371 patch_info_size = 3 |
371 }; | 372 }; |
372 private: | 373 private: |
415 case lir_patch_normal: field_offset = 0; break; | 416 case lir_patch_normal: field_offset = 0; break; |
416 default: ShouldNotReachHere(); | 417 default: ShouldNotReachHere(); |
417 } | 418 } |
418 NativeMovRegMem* n_move = nativeMovRegMem_at(pc_start()); | 419 NativeMovRegMem* n_move = nativeMovRegMem_at(pc_start()); |
419 n_move->set_offset(field_offset); | 420 n_move->set_offset(field_offset); |
420 } else if (_id == load_klass_id || _id == load_mirror_id) { | 421 } else if (_id == load_klass_id || _id == load_mirror_id || _id == load_appendix_id) { |
421 assert(_obj != noreg, "must have register object for load_klass/load_mirror"); | 422 assert(_obj != noreg, "must have register object for load_klass/load_mirror"); |
422 #ifdef ASSERT | 423 #ifdef ASSERT |
423 // verify that we're pointing at a NativeMovConstReg | 424 // verify that we're pointing at a NativeMovConstReg |
424 nativeMovConstReg_at(pc_start()); | 425 nativeMovConstReg_at(pc_start()); |
425 #endif | 426 #endif |