< prev index next >
src/hotspot/cpu/x86/x86_64.ad
Print this page
*** 872,881 ****
--- 872,894 ----
MacroAssembler _masm(&cbuf);
int framesize = C->frame_size_in_bytes();
int bangsize = C->bang_size_in_bytes();
+ if (C->clinit_barrier_on_entry()) {
+ assert(C->method()->holder()->is_being_initialized(), "sanity");
+ Label L_skip_barrier;
+ Register klass = rscratch1;
+
+ __ mov_metadata(klass, C->method()->holder()->constant_encoding());
+ __ clinit_barrier(klass, r15_thread, &L_skip_barrier /*L_fast_path*/);
+
+ __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path
+
+ __ bind(L_skip_barrier);
+ }
+
__ verified_entry(framesize, C->need_stack_bang(bangsize)?bangsize:0, false, C->stub_function() != NULL);
C->set_frame_complete(cbuf.insts_size());
if (C->has_mach_constant_base_node()) {
< prev index next >