equal
deleted
inserted
replaced
357 __ align(CodeEntryAlignment); |
357 __ align(CodeEntryAlignment); |
358 } |
358 } |
359 return offset; |
359 return offset; |
360 } |
360 } |
361 |
361 |
|
362 void LIR_Assembler::clinit_barrier(ciMethod* method) { |
|
363 assert(VM_Version::supports_fast_class_init_checks(), "sanity"); |
|
364 assert(method->holder()->is_being_initialized() || method->holder()->is_initialized(), |
|
365 "initialization should have been started"); |
|
366 |
|
367 Label L_skip_barrier; |
|
368 Register klass = rscratch1; |
|
369 Register thread = LP64_ONLY( r15_thread ) NOT_LP64( noreg ); |
|
370 assert(thread != noreg, "x86_32 not implemented"); |
|
371 |
|
372 __ mov_metadata(klass, method->holder()->constant_encoding()); |
|
373 __ clinit_barrier(klass, thread, &L_skip_barrier /*L_fast_path*/); |
|
374 |
|
375 __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); |
|
376 |
|
377 __ bind(L_skip_barrier); |
|
378 } |
362 |
379 |
363 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) { |
380 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) { |
364 jobject o = NULL; |
381 jobject o = NULL; |
365 PatchingStub* patch = new PatchingStub(_masm, patching_id(info)); |
382 PatchingStub* patch = new PatchingStub(_masm, patching_id(info)); |
366 __ movoop(reg, o); |
383 __ movoop(reg, o); |