@@ -17,28 +17,27 @@ import runtime;
1717namespace lsplant ::art {
1818export class ClassLinker {
1919private:
20- inline static MemberFunction<
21- " _ZNK3art11ClassLinker27SetEntryPointsToInterpreterEPNS_9ArtMethodE" , ClassLinker,
22- void (ArtMethod *)>
23- SetEntryPointsToInterpreter_;
24-
25- inline static Hooker<" _ZN3art11ClassLinker30ShouldUseInterpreterEntrypointEPNS_9ArtMethodEPKv" ,
26- bool (ArtMethod *, const void *)>
27- ShouldUseInterpreterEntrypoint_ = +[](ArtMethod *art_method, const void *quick_code) {
20+ inline static auto SetEntryPointsToInterpreter_ =
21+ " _ZNK3art11ClassLinker27SetEntryPointsToInterpreterEPNS_9ArtMethodE" _sym.as<void (ClassLinker::*)(ArtMethod *)>;
22+
23+ inline static auto ShouldUseInterpreterEntrypoint_ =
24+ " _ZN3art11ClassLinker30ShouldUseInterpreterEntrypointEPNS_9ArtMethodEPKv" _sym.hook->*[]
25+ <Backup auto backup>
26+ (ArtMethod *art_method, const void *quick_code)static -> bool {
2827 if (quick_code != nullptr && IsHooked (art_method)) [[unlikely]] {
2928 return false ;
3029 }
31- return ShouldUseInterpreterEntrypoint_ (art_method, quick_code);
30+ return backup (art_method, quick_code);
3231 };
3332
34- inline static Function< " art_quick_to_interpreter_bridge " , void ( void *)>
35- art_quick_to_interpreter_bridge_ ;
33+ inline static auto art_quick_to_interpreter_bridge_ =
34+ " art_quick_to_interpreter_bridge " _sym.as< void ( void *)> ;
3635
37- inline static Function< " _ZN3art15instrumentationL19GetOptimizedCodeForEPNS_9ArtMethodE " ,
38- void *(ArtMethod *)> GetOptimizedCodeFor_ ;
36+ inline static auto GetOptimizedCodeFor_ =
37+ " _ZN3art15instrumentationL19GetOptimizedCodeForEPNS_9ArtMethodE " _sym.as< void *(ArtMethod *)>;
3938
40- inline static MemberFunction< " _ZNK3art11ClassLinker29GetRuntimeQuickGenericJniStubEv " ,
41- ClassLinker, void *()> GetRuntimeQuickGenericJniStub_ ;
39+ inline static auto GetRuntimeQuickGenericJniStub_=
40+ " _ZNK3art11ClassLinker29GetRuntimeQuickGenericJniStubEv " _sym.as< void *(ClassLinker::*)()> ;
4241
4342 inline static art::ArtMethod *MayGetBackup (art::ArtMethod *method) {
4443 if (auto backup = IsHooked (method); backup) [[unlikely]] {
@@ -48,57 +47,60 @@ export class ClassLinker {
4847 return method;
4948 }
5049
51- inline static MemberHooker<" _ZN3art6mirror9ArtMethod14RegisterNativeEPNS_6ThreadEPKvb" ,
52- ClassLinker, void (ArtMethod *, Thread *, const void *, bool )>
53- RegisterNativeThread_ = +[](ClassLinker *thiz, ArtMethod *method, Thread *thread,
54- const void *native_method, bool is_fast) {
55- return RegisterNativeThread_ (thiz, MayGetBackup (method), thread, native_method,
56- is_fast);
50+ inline static auto RegisterNativeThread_ =
51+ " _ZN3art6mirror9ArtMethod14RegisterNativeEPNS_6ThreadEPKvb" _sym.hook->*[]
52+ <MemBackup auto backup>
53+ (ClassLinker *thiz, ArtMethod *method, Thread *thread, const void *native_method, bool is_fast) static -> void {
54+ return backup (thiz, MayGetBackup (method), thread, native_method, is_fast);
55+ };
56+
57+ inline static auto UnregisterNativeThread_ =
58+ " _ZN3art6mirror9ArtMethod16UnregisterNativeEPNS_6ThreadE" _sym.hook->*[]
59+ <MemBackup auto backup>
60+ (ClassLinker *thiz, ArtMethod *method, Thread *thread) static -> void {
61+ return backup (thiz, MayGetBackup (method), thread);
5762 };
5863
59- inline static MemberHooker<" _ZN3art6mirror9ArtMethod16UnregisterNativeEPNS_6ThreadE" ,
60- ClassLinker, void (ArtMethod *, Thread *)>
61- UnregisterNativeThread_ = +[](ClassLinker *thiz, ArtMethod *method, Thread *thread) {
62- return UnregisterNativeThread_ (thiz, MayGetBackup (method), thread);
64+ inline static auto RegisterNativeFast_ =
65+ " _ZN3art9ArtMethod14RegisterNativeEPKvb" _sym.hook->*[]
66+ <MemBackup auto backup>
67+ (ClassLinker *thiz, ArtMethod *method, const void *native_method, bool is_fast) static -> void {
68+ return backup (thiz, MayGetBackup (method), native_method, is_fast);
6369 };
6470
65- inline static MemberHooker<" _ZN3art9ArtMethod14RegisterNativeEPKvb" , ClassLinker,
66- void (ArtMethod *, const void *, bool )>
67- RegisterNativeFast_ =
68- +[](ClassLinker *thiz, ArtMethod *method, const void *native_method, bool is_fast) {
69- return RegisterNativeFast_ (thiz, MayGetBackup (method), native_method, is_fast);
70- };
71-
72- inline static MemberHooker<" _ZN3art9ArtMethod16UnregisterNativeEv" , ClassLinker,
73- void (ArtMethod *)>
74- UnregisterNativeFast_ = +[](ClassLinker *thiz, ArtMethod *method) {
75- return UnregisterNativeFast_ (thiz, MayGetBackup (method));
71+ inline static auto UnregisterNativeFast_ =
72+ " _ZN3art9ArtMethod16UnregisterNativeEv" _sym.hook->*[]
73+ <MemBackup auto backup>
74+ (ClassLinker *thiz, ArtMethod *method) static -> void {
75+ return backup (thiz, MayGetBackup (method));
7676 };
7777
78- inline static MemberHooker<" _ZN3art9ArtMethod14RegisterNativeEPKv" , ClassLinker,
79- const void *(ArtMethod *, const void *)>
80- RegisterNative_ = +[](ClassLinker *thiz, ArtMethod *method, const void *native_method) {
81- return RegisterNative_ (thiz, MayGetBackup (method), native_method);
78+ inline static auto RegisterNative_ =
79+ " _ZN3art9ArtMethod14RegisterNativeEPKv" _sym.hook->*[]
80+ <MemBackup auto backup>
81+ (ClassLinker *thiz, ArtMethod *method, const void *native_method) static -> const void * {
82+ return backup (thiz, MayGetBackup (method), native_method);
8283 };
8384
84- inline static MemberHooker<" _ZN3art9ArtMethod16UnregisterNativeEv" , ClassLinker,
85- const void *(ArtMethod *)>
86- UnregisterNative_ = +[](ClassLinker *thiz, ArtMethod *method) {
87- return UnregisterNative_ (thiz, MayGetBackup (method));
85+ inline static auto UnregisterNative_ =
86+ " _ZN3art9ArtMethod16UnregisterNativeEv" _sym.hook->*[]
87+ <MemBackup auto backup>
88+ (ClassLinker *thiz, ArtMethod *method) static -> const void * {
89+ return backup (thiz, MayGetBackup (method));
8890 };
8991
90- inline static MemberHooker<
91- " _ZN3art11ClassLinker14RegisterNativeEPNS_6ThreadEPNS_9ArtMethodEPKv" , ClassLinker,
92- const void *(Thread *, ArtMethod *, const void *) >
93- RegisterNativeClassLinker_ =
94- +[](ClassLinker * thiz, Thread * self, ArtMethod * method, const void * native_method) {
95- return RegisterNativeClassLinker_ (thiz, self, MayGetBackup (method), native_method) ;
96- };
97-
98- inline static MemberHooker< " _ZN3art11ClassLinker16UnregisterNativeEPNS_6ThreadEPNS_9ArtMethodE" ,
99- ClassLinker, const void *(Thread *, ArtMethod *) >
100- UnregisterNativeClassLinker_ = +[] (ClassLinker *thiz, Thread *self, ArtMethod *method) {
101- return UnregisterNativeClassLinker_ (thiz, self, MayGetBackup (method));
92+ inline static auto RegisterNativeClassLinker_ =
93+ " _ZN3art11ClassLinker14RegisterNativeEPNS_6ThreadEPNS_9ArtMethodEPKv" _sym.hook->*[]
94+ <MemBackup auto backup >
95+ (ClassLinker *thiz, Thread *self, ArtMethod *method, const void *native_method) static -> const void *{
96+ return backup ( thiz, self, MayGetBackup ( method), native_method);
97+ } ;
98+
99+ inline static auto UnregisterNativeClassLinker_ =
100+ " _ZN3art11ClassLinker16UnregisterNativeEPNS_6ThreadEPNS_9ArtMethodE" _sym.hook->*[]
101+ <MemBackup auto backup >
102+ (ClassLinker *thiz, Thread *self, ArtMethod *method) static -> const void * {
103+ return backup (thiz, self, MayGetBackup (method));
102104 };
103105
104106 static void RestoreBackup (const dex::ClassDef *class_def, art::Thread *self) {
@@ -123,44 +125,44 @@ export class ClassLinker {
123125 }
124126 }
125127
126- inline static MemberHooker<
127- " _ZN3art11ClassLinker22FixupStaticTrampolinesENS_6ObjPtrINS_6mirror5ClassEEE" , ClassLinker,
128- void (ObjPtr<mirror::Class>) >
129- FixupStaticTrampolines_ = +[] (ClassLinker *thiz, ObjPtr<mirror::Class> mirror_class) {
130- FixupStaticTrampolines_ (thiz, mirror_class);
128+ inline static auto FixupStaticTrampolines_ =
129+ " _ZN3art11ClassLinker22FixupStaticTrampolinesENS_6ObjPtrINS_6mirror5ClassEEE" _sym.hook->*[]
130+ <MemBackup auto backup >
131+ (ClassLinker *thiz, ObjPtr<mirror::Class> mirror_class) static -> void {
132+ backup (thiz, mirror_class);
131133 RestoreBackup (mirror_class->GetClassDef (), nullptr );
132134 };
133135
134- inline static MemberHooker<
135- " _ZN3art11ClassLinker22FixupStaticTrampolinesEPNS_6ThreadENS_6ObjPtrINS_6mirror5ClassEEE" ,
136- ClassLinker, void (Thread *, ObjPtr<mirror::Class>) >
137- FixupStaticTrampolinesWithThread_ =
138- +[](ClassLinker * thiz, Thread * self, ObjPtr<mirror::Class> mirror_class) {
139- FixupStaticTrampolinesWithThread_ (thiz , self, mirror_class );
140- RestoreBackup (mirror_class-> GetClassDef (), self) ;
141- };
142-
143- inline static MemberHooker< " _ZN3art11ClassLinker22FixupStaticTrampolinesEPNS_6mirror5ClassE" ,
144- ClassLinker, void (mirror::Class *) >
145- FixupStaticTrampolinesRaw_ = +[] (ClassLinker *thiz, mirror::Class *mirror_class) {
146- FixupStaticTrampolinesRaw_ (thiz, mirror_class);
136+ inline static auto FixupStaticTrampolinesWithThread_ =
137+ " _ZN3art11ClassLinker22FixupStaticTrampolinesEPNS_6ThreadENS_6ObjPtrINS_6mirror5ClassEEE" _sym.hook->*[]
138+ <MemBackup auto backup >
139+ (ClassLinker *thiz, Thread *self, ObjPtr<mirror::Class> mirror_class) static -> void {
140+ backup ( thiz, self, mirror_class);
141+ RestoreBackup (mirror_class-> GetClassDef () , self);
142+ } ;
143+
144+ inline static auto FixupStaticTrampolinesRaw_ =
145+ " _ZN3art11ClassLinker22FixupStaticTrampolinesEPNS_6mirror5ClassE" _sym.hook->*[]
146+ <MemBackup auto backup >
147+ (ClassLinker *thiz, mirror::Class *mirror_class)static -> void {
148+ backup (thiz, mirror_class);
147149 RestoreBackup (mirror_class->GetClassDef (), nullptr );
148150 };
149151
150- inline static MemberHooker<
151- { " _ZN3art11ClassLinker26VisiblyInitializedCallback29AdjustThreadVisibilityCounterEPNS_6ThreadEi" ,
152- " _ZN3art11ClassLinker26VisiblyInitializedCallback29AdjustThreadVisibilityCounterEPNS_6ThreadEl" },
153- ClassLinker, void (Thread *, ssize_t ) >
154- AdjustThreadVisibilityCounter_ = +[] (ClassLinker *thiz, Thread *self, ssize_t adjustment) {
155- AdjustThreadVisibilityCounter_ (thiz, self, adjustment);
152+ inline static auto AdjustThreadVisibilityCounter_ =
153+ ( " _ZN3art11ClassLinker26VisiblyInitializedCallback29AdjustThreadVisibilityCounterEPNS_6ThreadEi" _sym |
154+ " _ZN3art11ClassLinker26VisiblyInitializedCallback29AdjustThreadVisibilityCounterEPNS_6ThreadEl" _sym).hook->*[]
155+ <MemBackup auto backup >
156+ (ClassLinker *thiz, Thread *self, ssize_t adjustment) static -> void {
157+ backup (thiz, self, adjustment);
156158 RestoreBackup (nullptr , self);
157159 };
158160
159- inline static MemberHooker<
160- " _ZN3art11ClassLinker26VisiblyInitializedCallback22MarkVisiblyInitializedEPNS_6ThreadE" ,
161- ClassLinker, void (Thread *) >
162- MarkVisiblyInitialized_ = +[] (ClassLinker *thiz, Thread *self) {
163- MarkVisiblyInitialized_ (thiz, self);
161+ inline static auto MarkVisiblyInitialized_ =
162+ " _ZN3art11ClassLinker26VisiblyInitializedCallback22MarkVisiblyInitializedEPNS_6ThreadE" _sym.hook->*[]
163+ <MemBackup auto backup >
164+ (ClassLinker *thiz, Thread *self) static -> void {
165+ backup (thiz, self);
164166 RestoreBackup (nullptr , self);
165167 };
166168
0 commit comments