• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <cassert>
17 
18 #include "libabckit/include/c/abckit.h"
19 #include "libabckit/include/c/ir_core.h"
20 #include "libabckit/include/c/isa/isa_dynamic.h"
21 
22 #include "libabckit/src/metadata_inspect_impl.h"
23 #include "libabckit/src/helpers_common.h"
24 #include "libabckit/src/ir_impl.h"
25 #include "libabckit/src/adapter_static/ir_static.h"
26 
27 #include "libabckit/src/macros.h"
28 
29 #include <iostream>
30 
31 #include "isa_dynamic_impl_instr.h"
32 
33 namespace libabckit {
34 
35 AbckitIsaApiDynamic g_isaApiDynamicImpl = {
36     IgetModule,
37     IsetModule,
38     IgetDYNAMICConditionCode,
39     IsetDYNAMICConditionCode,
40     IgetDYNAMICOpcode,
41     IgetImportDescriptor,
42     IsetImportDescriptor,
43     IgetExportDescriptor,
44     IsetExportDescriptor,
45     IcreateDYNAMICLoadString,
46     IcreateDYNAMICLdnan,
47     IcreateDYNAMICLdinfinity,
48     IcreateDYNAMICLdundefined,
49     IcreateDYNAMICLdnull,
50     IcreateDYNAMICLdsymbol,
51     IcreateDYNAMICLdglobal,
52     IcreateDYNAMICLdtrue,
53     IcreateDYNAMICLdfalse,
54     IcreateDYNAMICLdhole,
55     IcreateDYNAMICLdnewtarget,
56     IcreateDYNAMICLdthis,
57     IcreateDYNAMICPoplexenv,
58     IcreateDYNAMICGetunmappedargs,
59     IcreateDYNAMICAsyncfunctionenter,
60     IcreateDYNAMICLdfunction,
61     IcreateDYNAMICDebugger,
62     IcreateDYNAMICGetpropiterator,
63     IcreateDYNAMICGetiterator,
64     IcreateDYNAMICGetasynciterator,
65     IcreateDYNAMICLdprivateproperty,
66     IcreateDYNAMICStprivateproperty,
67     IcreateDYNAMICTestin,
68     IcreateDYNAMICDefinefieldbyname,
69     IcreateDYNAMICDefinepropertybyname,
70     IcreateDYNAMICCreateemptyobject,
71     IcreateDYNAMICCreateemptyarray,
72     IcreateDYNAMICCreategeneratorobj,
73     IcreateDYNAMICCreateiterresultobj,
74     IcreateDYNAMICCreateobjectwithexcludedkeys,
75     IcreateDYNAMICWideCreateobjectwithexcludedkeys,
76     IcreateDYNAMICCreatearraywithbuffer,
77     IcreateDYNAMICCreateobjectwithbuffer,
78     IcreateDYNAMICNewobjapply,
79     IcreateDYNAMICNewobjrange,
80     IcreateDYNAMICWideNewobjrange,
81     IcreateDYNAMICNewlexenv,
82     IcreateDYNAMICWideNewlexenv,
83     IcreateDYNAMICNewlexenvwithname,
84     IcreateDYNAMICWideNewlexenvwithname,
85     IcreateDYNAMICCreateasyncgeneratorobj,
86     IcreateDYNAMICAsyncgeneratorresolve,
87     IcreateDYNAMICAdd2,
88     IcreateDYNAMICSub2,
89     IcreateDYNAMICMul2,
90     IcreateDYNAMICDiv2,
91     IcreateDYNAMICMod2,
92     IcreateDYNAMICEq,
93     IcreateDYNAMICNoteq,
94     IcreateDYNAMICLess,
95     IcreateDYNAMICLesseq,
96     IcreateDYNAMICGreater,
97     IcreateDYNAMICGreatereq,
98     IcreateDYNAMICShl2,
99     IcreateDYNAMICShr2,
100     IcreateDYNAMICAshr2,
101     IcreateDYNAMICAnd2,
102     IcreateDYNAMICOr2,
103     IcreateDYNAMICXor2,
104     IcreateDYNAMICExp,
105     IcreateDYNAMICTypeof,
106     IcreateDYNAMICTonumber,
107     IcreateDYNAMICTonumeric,
108     IcreateDYNAMICNeg,
109     IcreateDYNAMICNot,
110     IcreateDYNAMICInc,
111     IcreateDYNAMICDec,
112     IcreateDYNAMICIstrue,
113     IcreateDYNAMICIsfalse,
114     IcreateDYNAMICIsin,
115     IcreateDYNAMICInstanceof,
116     IcreateDYNAMICStrictnoteq,
117     IcreateDYNAMICStricteq,
118     IcreateDYNAMICCallruntimeNotifyconcurrentresult,
119     IcreateDYNAMICCallruntimeDefinefieldbyvalue,
120     IcreateDYNAMICCallruntimeDefinefieldbyindex,
121     IcreateDYNAMICCallruntimeTopropertykey,
122     IcreateDYNAMICCallruntimeCreateprivateproperty,
123     IcreateDYNAMICCallruntimeDefineprivateproperty,
124     IcreateDYNAMICCallruntimeCallinit,
125     IcreateDYNAMICCallruntimeDefinesendableclass,
126     IcreateDYNAMICCallruntimeLdsendableclass,
127     IcreateDYNAMICCallruntimeLdsendableexternalmodulevar,
128     IcreateDYNAMICCallruntimeWideldsendableexternalmodulevar,
129     IcreateDYNAMICCallruntimeNewsendableenv,
130     IcreateDYNAMICCallruntimeWidenewsendableenv,
131     IcreateDYNAMICCallruntimeStsendablevar,
132     IcreateDYNAMICCallruntimeWidestsendablevar,
133     IcreateDYNAMICCallruntimeLdsendablevar,
134     IcreateDYNAMICCallruntimeWideldsendablevar,
135     IcreateDYNAMICCallruntimeIstrue,
136     IcreateDYNAMICCallruntimeIsfalse,
137     IcreateDYNAMICThrow,
138     IcreateDYNAMICThrowNotexists,
139     IcreateDYNAMICThrowPatternnoncoercible,
140     IcreateDYNAMICThrowDeletesuperproperty,
141     IcreateDYNAMICThrowConstassignment,
142     IcreateDYNAMICThrowIfnotobject,
143     IcreateDYNAMICThrowUndefinedifhole,
144     IcreateDYNAMICThrowIfsupernotcorrectcall,
145     IcreateDYNAMICThrowUndefinedifholewithname,
146     IcreateDYNAMICCallarg0,
147     IcreateDYNAMICCallarg1,
148     IcreateDYNAMICCallargs2,
149     IcreateDYNAMICCallargs3,
150     IcreateDYNAMICCallrange,
151     IcreateDYNAMICWideCallrange,
152     IcreateDYNAMICSupercallspread,
153     IcreateDYNAMICApply,
154     IcreateDYNAMICCallthis0,
155     IcreateDYNAMICCallthis1,
156     IcreateDYNAMICCallthis2,
157     IcreateDYNAMICCallthis3,
158     IcreateDYNAMICCallthisrange,
159     IcreateDYNAMICWideCallthisrange,
160     IcreateDYNAMICSupercallthisrange,
161     IcreateDYNAMICWideSupercallthisrange,
162     IcreateDYNAMICSupercallarrowrange,
163     IcreateDYNAMICWideSupercallarrowrange,
164     IcreateDYNAMICDefinegettersetterbyvalue,
165     IcreateDYNAMICDefinefunc,
166     IcreateDYNAMICDefinemethod,
167     IcreateDYNAMICDefineclasswithbuffer,
168     IcreateDYNAMICResumegenerator,
169     IcreateDYNAMICGetresumemode,
170     IcreateDYNAMICGettemplateobject,
171     IcreateDYNAMICGetnextpropname,
172     IcreateDYNAMICDelobjprop,
173     IcreateDYNAMICSuspendgenerator,
174     IcreateDYNAMICAsyncfunctionawaituncaught,
175     IcreateDYNAMICCopydataproperties,
176     IcreateDYNAMICStarrayspread,
177     IcreateDYNAMICSetobjectwithproto,
178     IcreateDYNAMICLdobjbyvalue,
179     IcreateDYNAMICStobjbyvalue,
180     IcreateDYNAMICStownbyvalue,
181     IcreateDYNAMICLdsuperbyvalue,
182     IcreateDYNAMICStsuperbyvalue,
183     IcreateDYNAMICLdobjbyindex,
184     IcreateDYNAMICWideLdobjbyindex,
185     IcreateDYNAMICStobjbyindex,
186     IcreateDYNAMICWideStobjbyindex,
187     IcreateDYNAMICStownbyindex,
188     IcreateDYNAMICWideStownbyindex,
189     IcreateDYNAMICAsyncfunctionresolve,
190     IcreateDYNAMICAsyncfunctionreject,
191     IcreateDYNAMICCopyrestargs,
192     IcreateDYNAMICWideCopyrestargs,
193     IcreateDYNAMICLdlexvar,
194     IcreateDYNAMICWideLdlexvar,
195     IcreateDYNAMICStlexvar,
196     IcreateDYNAMICWideStlexvar,
197     IcreateDYNAMICGetmodulenamespace,
198     IcreateDYNAMICWideGetmodulenamespace,
199     IcreateDYNAMICStmodulevar,
200     IcreateDYNAMICWideStmodulevar,
201     IcreateDYNAMICTryldglobalbyname,
202     IcreateDYNAMICTrystglobalbyname,
203     IcreateDYNAMICLdglobalvar,
204     IcreateDYNAMICStglobalvar,
205     IcreateDYNAMICLdobjbyname,
206     IcreateDYNAMICStobjbyname,
207     IcreateDYNAMICStownbyname,
208     IcreateDYNAMICLdsuperbyname,
209     IcreateDYNAMICStsuperbyname,
210     IcreateDYNAMICLdlocalmodulevar,
211     IcreateDYNAMICWideLdlocalmodulevar,
212     IcreateDYNAMICLdexternalmodulevar,
213     IcreateDYNAMICWideLdexternalmodulevar,
214     IcreateDYNAMICStownbyvaluewithnameset,
215     IcreateDYNAMICStownbynamewithnameset,
216     IcreateDYNAMICLdbigint,
217     IcreateDYNAMICLdthisbyname,
218     IcreateDYNAMICStthisbyname,
219     IcreateDYNAMICLdthisbyvalue,
220     IcreateDYNAMICStthisbyvalue,
221     IcreateDYNAMICWideLdpatchvar,
222     IcreateDYNAMICWideStpatchvar,
223     IcreateDYNAMICDynamicimport,
224     IcreateDYNAMICAsyncgeneratorreject,
225     IcreateDYNAMICSetgeneratorstate,
226     IcreateDYNAMICReturn,
227     IcreateDYNAMICReturnundefined,
228     IcreateDYNAMICIf,
229 };
230 
231 }  // namespace libabckit
232 
233 #ifdef ABCKIT_ENABLE_MOCK_IMPLEMENTATION
234 #include "./mock/abckit_mock.h"
235 #endif
236 
AbckitGetIsaApiDynamicImpl(AbckitApiVersion version)237 extern "C" AbckitIsaApiDynamic const *AbckitGetIsaApiDynamicImpl(AbckitApiVersion version)
238 {
239 #ifdef ABCKIT_ENABLE_MOCK_IMPLEMENTATION
240     return AbckitGetMockIsaApiDynamicImpl(version);
241 #endif
242     switch (version) {
243         case ABCKIT_VERSION_RELEASE_1_0_0:
244             return &libabckit::g_isaApiDynamicImpl;
245         default:
246             libabckit::statuses::SetLastError(ABCKIT_STATUS_UNKNOWN_API_VERSION);
247             return nullptr;
248     }
249 }
250