void LIR_Assembler::patching_epilog(PatchingStub*patch){ append_patching_stub(patch); #ifdef ASSERT Bytecodes::Code code=patch->_info->scope()->method()->java_code_at_bci(patch->_info->bci()); if(patch->name()[0]=='A'){ switch (code) { case Bytecodes::_putstatic: case Bytecodes::_getstatic: case Bytecodes::_putfield: case Bytecodes::_getfield: break; default: ShouldNotReachHere(); } } else if (patch->name()[0] == 'L') { switch (code) { case Bytecodes::_putstatic: case Bytecodes::_getstatic: case Bytecodes::_new: case Bytecodes::_anewarray: case Bytecodes::_multianewarray: case Bytecodes::_instanceof: case Bytecodes::_checkcast: case Bytecodes::_ldc: case Bytecodes::_ldc_w: break; default: ShouldNotReachHere(); } } else { ShouldNotReachHere(); } #endif }
void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) { // we must have enough patching space so that call can be inserted while ((intx) _masm->pc() - (intx) patch->pc_start() < NativeCall::instruction_size) { _masm->nop(); } patch->install(_masm, patch_code, obj, info); append_patching_stub(patch); #ifdef ASSERT Bytecodes::Code code = info->scope()->method()->java_code_at_bci(info->stack()->bci()); if (patch->id() == PatchingStub::access_field_id) { switch (code) { case Bytecodes::_putstatic: case Bytecodes::_getstatic: case Bytecodes::_putfield: case Bytecodes::_getfield: break; default: ShouldNotReachHere(); } } else if (patch->id() == PatchingStub::load_klass_id) { switch (code) { case Bytecodes::_new: case Bytecodes::_anewarray: case Bytecodes::_multianewarray: case Bytecodes::_instanceof: case Bytecodes::_checkcast: break; default: ShouldNotReachHere(); } } else if (patch->id() == PatchingStub::load_mirror_id) { switch (code) { case Bytecodes::_putstatic: case Bytecodes::_getstatic: case Bytecodes::_ldc: case Bytecodes::_ldc_w: break; default: ShouldNotReachHere(); } } else { ShouldNotReachHere(); } #endif }