< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page




 859     st->print("cmpl    [r15_thread + #disarmed_offset], #disarmed_value\t");
 860     st->print("\n\t");
 861     st->print("je      fast_entry\t");
 862     st->print("\n\t");
 863     st->print("call    #nmethod_entry_barrier_stub\t");
 864     st->print("\n\tfast_entry:");
 865   }
 866   st->cr();
 867 }
 868 #endif
 869 
 870 void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
 871   Compile* C = ra_->C;
 872   MacroAssembler _masm(&cbuf);
 873 
 874   int framesize = C->frame_size_in_bytes();
 875   int bangsize = C->bang_size_in_bytes();
 876 
 877   if (C->clinit_barrier_on_entry()) {
 878     assert(VM_Version::supports_fast_class_init_checks(), "sanity");
 879     assert(!C->method()->holder()->is_not_initialized(), "initialization should have been started");

 880 
 881     Label L_skip_barrier;
 882     Register klass = rscratch1;
 883 
 884     __ mov_metadata(klass, C->method()->holder()->constant_encoding());
 885     __ clinit_barrier(klass, r15_thread, &L_skip_barrier /*L_fast_path*/);
 886 
 887     __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path
 888 
 889     __ bind(L_skip_barrier);
 890   }
 891 
 892   __ verified_entry(framesize, C->need_stack_bang(bangsize)?bangsize:0, false, C->stub_function() != NULL);
 893 
 894   C->set_frame_complete(cbuf.insts_size());
 895 
 896   if (C->has_mach_constant_base_node()) {
 897     // NOTE: We set the table base offset here because users might be
 898     // emitted before MachConstantBaseNode.
 899     Compile::ConstantTable& constant_table = C->constant_table();




 859     st->print("cmpl    [r15_thread + #disarmed_offset], #disarmed_value\t");
 860     st->print("\n\t");
 861     st->print("je      fast_entry\t");
 862     st->print("\n\t");
 863     st->print("call    #nmethod_entry_barrier_stub\t");
 864     st->print("\n\tfast_entry:");
 865   }
 866   st->cr();
 867 }
 868 #endif
 869 
 870 void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
 871   Compile* C = ra_->C;
 872   MacroAssembler _masm(&cbuf);
 873 
 874   int framesize = C->frame_size_in_bytes();
 875   int bangsize = C->bang_size_in_bytes();
 876 
 877   if (C->clinit_barrier_on_entry()) {
 878     assert(VM_Version::supports_fast_class_init_checks(), "sanity");
 879     assert(C->method()->holder()->is_being_initialized() || C->method()->holder()->is_initialized(),
 880            "initialization should have been started");
 881 
 882     Label L_skip_barrier;
 883     Register klass = rscratch1;
 884 
 885     __ mov_metadata(klass, C->method()->holder()->constant_encoding());
 886     __ clinit_barrier(klass, r15_thread, &L_skip_barrier /*L_fast_path*/);
 887 
 888     __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path
 889 
 890     __ bind(L_skip_barrier);
 891   }
 892 
 893   __ verified_entry(framesize, C->need_stack_bang(bangsize)?bangsize:0, false, C->stub_function() != NULL);
 894 
 895   C->set_frame_complete(cbuf.insts_size());
 896 
 897   if (C->has_mach_constant_base_node()) {
 898     // NOTE: We set the table base offset here because users might be
 899     // emitted before MachConstantBaseNode.
 900     Compile::ConstantTable& constant_table = C->constant_table();


< prev index next >