@@ -666,6 +666,40 @@ TYPED_HANDLE_DECL (MonoDelegate);
666
666
667
667
typedef void (* InterpJitInfoFunc ) (MonoJitInfo * ji , gpointer user_data );
668
668
669
+ #ifdef MONO_SMALL_CONFIG
670
+ #define MONO_IMT_SIZE 9
671
+ #else
672
+ #define MONO_IMT_SIZE 19
673
+ #endif
674
+
675
+ typedef union {
676
+ int vtable_slot ;
677
+ gpointer target_code ;
678
+ } MonoImtItemValue ;
679
+
680
+ typedef struct _MonoImtBuilderEntry {
681
+ gpointer key ;
682
+ struct _MonoImtBuilderEntry * next ;
683
+ MonoImtItemValue value ;
684
+ int children ;
685
+ guint8 has_target_code : 1 ;
686
+ } MonoImtBuilderEntry ;
687
+
688
+ typedef struct _MonoIMTCheckItem MonoIMTCheckItem ;
689
+
690
+ struct _MonoIMTCheckItem {
691
+ gpointer key ;
692
+ int check_target_idx ;
693
+ MonoImtItemValue value ;
694
+ guint8 * jmp_code ;
695
+ guint8 * code_target ;
696
+ guint8 is_equals ;
697
+ guint8 compare_done ;
698
+ guint8 chunk_size ;
699
+ guint8 short_branch ;
700
+ guint8 has_target_code ;
701
+ };
702
+
669
703
/*
670
704
* Callbacks supplied by the runtime and called by the modules in metadata/
671
705
* This interface is easier to extend than adding a new function type +
@@ -704,6 +738,10 @@ typedef struct {
704
738
MonoBoolean (* get_frame_info ) (gint32 skip , MonoMethod * * out_method ,
705
739
MonoDebugSourceLocation * * out_location ,
706
740
gint32 * iloffset , gint32 * native_offset );
741
+ gboolean (* get_cached_class_info ) (MonoClass * klass , MonoCachedClassInfo * res );
742
+ gboolean (* get_class_from_name ) (MonoImage * image , const char * name_space , const char * name , MonoClass * * res );
743
+ gpointer (* build_imt_trampoline ) (MonoVTable * vtable , MonoIMTCheckItem * * imt_entries , int count , gpointer fail_trunk );
744
+ MonoJitInfo * (* find_jit_info_in_aot ) (MonoImage * image , gpointer addr );
707
745
} MonoRuntimeCallbacks ;
708
746
709
747
typedef gboolean (* MonoInternalStackWalk ) (MonoStackFrameInfo * frame , MonoContext * ctx , gpointer data );
@@ -1579,45 +1617,6 @@ mono_nullable_box_handle (gpointer buf, MonoClass *klass, MonoError *error);
1579
1617
MonoObjectHandle
1580
1618
mono_new_null (void );
1581
1619
1582
- #ifdef MONO_SMALL_CONFIG
1583
- #define MONO_IMT_SIZE 9
1584
- #else
1585
- #define MONO_IMT_SIZE 19
1586
- #endif
1587
-
1588
- typedef union {
1589
- int vtable_slot ;
1590
- gpointer target_code ;
1591
- } MonoImtItemValue ;
1592
-
1593
- typedef struct _MonoImtBuilderEntry {
1594
- gpointer key ;
1595
- struct _MonoImtBuilderEntry * next ;
1596
- MonoImtItemValue value ;
1597
- int children ;
1598
- guint8 has_target_code : 1 ;
1599
- } MonoImtBuilderEntry ;
1600
-
1601
- typedef struct _MonoIMTCheckItem MonoIMTCheckItem ;
1602
-
1603
- struct _MonoIMTCheckItem {
1604
- gpointer key ;
1605
- int check_target_idx ;
1606
- MonoImtItemValue value ;
1607
- guint8 * jmp_code ;
1608
- guint8 * code_target ;
1609
- guint8 is_equals ;
1610
- guint8 compare_done ;
1611
- guint8 chunk_size ;
1612
- guint8 short_branch ;
1613
- guint8 has_target_code ;
1614
- };
1615
-
1616
- typedef gpointer (* MonoImtTrampolineBuilder ) (MonoVTable * vtable , MonoIMTCheckItem * * imt_entries , int count , gpointer fail_trunk );
1617
-
1618
- void
1619
- mono_install_imt_trampoline_builder (MonoImtTrampolineBuilder func );
1620
-
1621
1620
void
1622
1621
mono_set_always_build_imt_trampolines (gboolean value );
1623
1622
0 commit comments