< prev index next >

src/hotspot/cpu/x86/stubGenerator_x86_64.hpp

Print this page

621   // only for C2, but done for C1 as well) we need a callee-saved oop
622   // map and therefore have to make these stubs into RuntimeStubs
623   // rather than BufferBlobs.  If the compiler needs all registers to
624   // be preserved between the fault point and the exception handler
625   // then it must assume responsibility for that in
626   // AbstractCompiler::continuation_for_implicit_null_exception or
627   // continuation_for_implicit_division_by_zero_exception. All other
628   // implicit exceptions (e.g., NullPointerException or
629   // AbstractMethodError on entry) are either at call sites or
630   // otherwise assume that stack unwinding will be initiated, so
631   // caller saved registers were assumed volatile in the compiler.
632   address generate_throw_exception(const char* name,
633                                    address runtime_entry,
634                                    Register arg1 = noreg,
635                                    Register arg2 = noreg);
636 
637   // shared exception handler for FFM upcall stubs
638   address generate_upcall_stub_exception_handler();
639   address generate_upcall_stub_load_target();
640 



641   // Specialized stub implementations for UseSecondarySupersTable.
642   void generate_lookup_secondary_supers_table_stub();
643 
644   // Slow path implementation for UseSecondarySupersTable.
645   address generate_lookup_secondary_supers_table_slow_path_stub();
646 
647   void create_control_words();
648 
649   // Initialization
650   void generate_preuniverse_stubs();
651   void generate_initial_stubs();
652   void generate_continuation_stubs();
653   void generate_compiler_stubs();
654   void generate_final_stubs();
655 
656 #if INCLUDE_CDS
657   static void init_AOTAddressTable_adler(GrowableArray<address>& external_addresses);
658   static void init_AOTAddressTable_aes(GrowableArray<address>& external_addresses);
659   static void init_AOTAddressTable_cbrt(GrowableArray<address>& external_addresses);
660   static void init_AOTAddressTable_chacha(GrowableArray<address>& external_addresses);

621   // only for C2, but done for C1 as well) we need a callee-saved oop
622   // map and therefore have to make these stubs into RuntimeStubs
623   // rather than BufferBlobs.  If the compiler needs all registers to
624   // be preserved between the fault point and the exception handler
625   // then it must assume responsibility for that in
626   // AbstractCompiler::continuation_for_implicit_null_exception or
627   // continuation_for_implicit_division_by_zero_exception. All other
628   // implicit exceptions (e.g., NullPointerException or
629   // AbstractMethodError on entry) are either at call sites or
630   // otherwise assume that stack unwinding will be initiated, so
631   // caller saved registers were assumed volatile in the compiler.
632   address generate_throw_exception(const char* name,
633                                    address runtime_entry,
634                                    Register arg1 = noreg,
635                                    Register arg2 = noreg);
636 
637   // shared exception handler for FFM upcall stubs
638   address generate_upcall_stub_exception_handler();
639   address generate_upcall_stub_load_target();
640 
641   // interpreter or compiled code marshalling registers to/from inline type instance
642   address generate_return_value_stub(address destination, const char* name, bool has_res);
643 
644   // Specialized stub implementations for UseSecondarySupersTable.
645   void generate_lookup_secondary_supers_table_stub();
646 
647   // Slow path implementation for UseSecondarySupersTable.
648   address generate_lookup_secondary_supers_table_slow_path_stub();
649 
650   void create_control_words();
651 
652   // Initialization
653   void generate_preuniverse_stubs();
654   void generate_initial_stubs();
655   void generate_continuation_stubs();
656   void generate_compiler_stubs();
657   void generate_final_stubs();
658 
659 #if INCLUDE_CDS
660   static void init_AOTAddressTable_adler(GrowableArray<address>& external_addresses);
661   static void init_AOTAddressTable_aes(GrowableArray<address>& external_addresses);
662   static void init_AOTAddressTable_cbrt(GrowableArray<address>& external_addresses);
663   static void init_AOTAddressTable_chacha(GrowableArray<address>& external_addresses);
< prev index next >