@@ -2778,7 +2778,12 @@ AdapterBlob* AdapterHandlerLibrary::lookup_aot_cache(AdapterHandlerEntry* handle
27782778 adapter_blob->get_offsets (offsets);
27792779 address i2c_entry = adapter_blob->content_begin ();
27802780 assert (offsets[0 ] == 0 , " sanity check" );
2781- handler->set_entry_points (i2c_entry, i2c_entry + offsets[1 ], i2c_entry + offsets[2 ], i2c_entry + offsets[3 ]);
2781+ handler->set_entry_points (
2782+ i2c_entry,
2783+ (offsets[1 ] != -1 ) ? (i2c_entry + offsets[1 ]) : nullptr ,
2784+ (offsets[2 ] != -1 ) ? (i2c_entry + offsets[2 ]) : nullptr ,
2785+ (offsets[3 ] != -1 ) ? (i2c_entry + offsets[3 ]) : nullptr
2786+ );
27822787 }
27832788 return adapter_blob;
27842789}
@@ -2842,9 +2847,12 @@ bool AdapterHandlerLibrary::generate_adapter_code(AdapterBlob*& adapter_blob,
28422847 assert (AdapterBlob::ENTRY_COUNT == 4 , " sanity" );
28432848 address i2c_entry = handler->get_i2c_entry ();
28442849 entry_offset[0 ] = 0 ; // i2c_entry offset
2845- entry_offset[1 ] = handler->get_c2i_entry () - i2c_entry;
2846- entry_offset[2 ] = handler->get_c2i_unverified_entry () - i2c_entry;
2847- entry_offset[3 ] = handler->get_c2i_no_clinit_check_entry () - i2c_entry;
2850+ entry_offset[1 ] = (handler->get_c2i_entry () != nullptr ) ?
2851+ (handler->get_c2i_entry () - i2c_entry) : -1 ;
2852+ entry_offset[2 ] = (handler->get_c2i_unverified_entry () != nullptr ) ?
2853+ (handler->get_c2i_unverified_entry () - i2c_entry) : -1 ;
2854+ entry_offset[3 ] = (handler->get_c2i_no_clinit_check_entry () != nullptr ) ?
2855+ (handler->get_c2i_no_clinit_check_entry () - i2c_entry) : -1 ;
28482856
28492857 adapter_blob = AdapterBlob::create (&buffer, entry_offset);
28502858 if (adapter_blob == nullptr ) {
0 commit comments