@@ -214,54 +214,6 @@ impl ExternAbi {
214
214
}
215
215
}
216
216
217
- #[ derive( Copy , Clone ) ]
218
- pub struct AbiData {
219
- pub abi : Abi ,
220
-
221
- /// Name of this ABI as we like it called.
222
- pub name : & ' static str ,
223
- }
224
-
225
- #[ allow( non_upper_case_globals) ]
226
- pub const AbiDatas : & [ AbiData ] = & [
227
- AbiData { abi : Abi :: Rust , name : "Rust" } ,
228
- AbiData { abi : Abi :: C { unwind : false } , name : "C" } ,
229
- AbiData { abi : Abi :: C { unwind : true } , name : "C-unwind" } ,
230
- AbiData { abi : Abi :: Cdecl { unwind : false } , name : "cdecl" } ,
231
- AbiData { abi : Abi :: Cdecl { unwind : true } , name : "cdecl-unwind" } ,
232
- AbiData { abi : Abi :: Stdcall { unwind : false } , name : "stdcall" } ,
233
- AbiData { abi : Abi :: Stdcall { unwind : true } , name : "stdcall-unwind" } ,
234
- AbiData { abi : Abi :: Fastcall { unwind : false } , name : "fastcall" } ,
235
- AbiData { abi : Abi :: Fastcall { unwind : true } , name : "fastcall-unwind" } ,
236
- AbiData { abi : Abi :: Vectorcall { unwind : false } , name : "vectorcall" } ,
237
- AbiData { abi : Abi :: Vectorcall { unwind : true } , name : "vectorcall-unwind" } ,
238
- AbiData { abi : Abi :: Thiscall { unwind : false } , name : "thiscall" } ,
239
- AbiData { abi : Abi :: Thiscall { unwind : true } , name : "thiscall-unwind" } ,
240
- AbiData { abi : Abi :: Aapcs { unwind : false } , name : "aapcs" } ,
241
- AbiData { abi : Abi :: Aapcs { unwind : true } , name : "aapcs-unwind" } ,
242
- AbiData { abi : Abi :: Win64 { unwind : false } , name : "win64" } ,
243
- AbiData { abi : Abi :: Win64 { unwind : true } , name : "win64-unwind" } ,
244
- AbiData { abi : Abi :: SysV64 { unwind : false } , name : "sysv64" } ,
245
- AbiData { abi : Abi :: SysV64 { unwind : true } , name : "sysv64-unwind" } ,
246
- AbiData { abi : Abi :: PtxKernel , name : "ptx-kernel" } ,
247
- AbiData { abi : Abi :: Msp430Interrupt , name : "msp430-interrupt" } ,
248
- AbiData { abi : Abi :: X86Interrupt , name : "x86-interrupt" } ,
249
- AbiData { abi : Abi :: GpuKernel , name : "gpu-kernel" } ,
250
- AbiData { abi : Abi :: EfiApi , name : "efiapi" } ,
251
- AbiData { abi : Abi :: AvrInterrupt , name : "avr-interrupt" } ,
252
- AbiData { abi : Abi :: AvrNonBlockingInterrupt , name : "avr-non-blocking-interrupt" } ,
253
- AbiData { abi : Abi :: CCmseNonSecureCall , name : "C-cmse-nonsecure-call" } ,
254
- AbiData { abi : Abi :: CCmseNonSecureEntry , name : "C-cmse-nonsecure-entry" } ,
255
- AbiData { abi : Abi :: System { unwind : false } , name : "system" } ,
256
- AbiData { abi : Abi :: System { unwind : true } , name : "system-unwind" } ,
257
- AbiData { abi : Abi :: RustIntrinsic , name : "rust-intrinsic" } ,
258
- AbiData { abi : Abi :: RustCall , name : "rust-call" } ,
259
- AbiData { abi : Abi :: Unadjusted , name : "unadjusted" } ,
260
- AbiData { abi : Abi :: RustCold , name : "rust-cold" } ,
261
- AbiData { abi : Abi :: RiscvInterruptM , name : "riscv-interrupt-m" } ,
262
- AbiData { abi : Abi :: RiscvInterruptS , name : "riscv-interrupt-s" } ,
263
- ] ;
264
-
265
217
#[ derive( Copy , Clone , Debug ) ]
266
218
pub struct AbiUnsupported { }
267
219
/// Returns the ABI with the given name (if any).
@@ -273,76 +225,12 @@ pub fn all_names() -> Vec<&'static str> {
273
225
ExternAbi :: ALL_VARIANTS . iter ( ) . map ( |abi| abi. as_str ( ) ) . collect ( )
274
226
}
275
227
276
- impl Abi {
228
+ impl ExternAbi {
277
229
/// Default ABI chosen for `extern fn` declarations without an explicit ABI.
278
230
pub const FALLBACK : Abi = Abi :: C { unwind : false } ;
279
231
280
- #[ inline]
281
- pub fn index ( self ) -> usize {
282
- // N.B., this ordering MUST match the AbiDatas array above.
283
- // (This is ensured by the test indices_are_correct().)
284
- use Abi :: * ;
285
- let i = match self {
286
- // Cross-platform ABIs
287
- Rust => 0 ,
288
- C { unwind : false } => 1 ,
289
- C { unwind : true } => 2 ,
290
- // Platform-specific ABIs
291
- Cdecl { unwind : false } => 3 ,
292
- Cdecl { unwind : true } => 4 ,
293
- Stdcall { unwind : false } => 5 ,
294
- Stdcall { unwind : true } => 6 ,
295
- Fastcall { unwind : false } => 7 ,
296
- Fastcall { unwind : true } => 8 ,
297
- Vectorcall { unwind : false } => 9 ,
298
- Vectorcall { unwind : true } => 10 ,
299
- Thiscall { unwind : false } => 11 ,
300
- Thiscall { unwind : true } => 12 ,
301
- Aapcs { unwind : false } => 13 ,
302
- Aapcs { unwind : true } => 14 ,
303
- Win64 { unwind : false } => 15 ,
304
- Win64 { unwind : true } => 16 ,
305
- SysV64 { unwind : false } => 17 ,
306
- SysV64 { unwind : true } => 18 ,
307
- PtxKernel => 19 ,
308
- Msp430Interrupt => 20 ,
309
- X86Interrupt => 21 ,
310
- GpuKernel => 22 ,
311
- EfiApi => 23 ,
312
- AvrInterrupt => 24 ,
313
- AvrNonBlockingInterrupt => 25 ,
314
- CCmseNonSecureCall => 26 ,
315
- CCmseNonSecureEntry => 27 ,
316
- // Cross-platform ABIs
317
- System { unwind : false } => 28 ,
318
- System { unwind : true } => 29 ,
319
- RustIntrinsic => 30 ,
320
- RustCall => 31 ,
321
- Unadjusted => 32 ,
322
- RustCold => 33 ,
323
- RiscvInterruptM => 34 ,
324
- RiscvInterruptS => 35 ,
325
- } ;
326
- debug_assert ! (
327
- AbiDatas
328
- . iter( )
329
- . enumerate( )
330
- . find( |( _, AbiData { abi, .. } ) | * abi == self )
331
- . map( |( index, _) | index)
332
- . expect( "abi variant has associated data" )
333
- == i,
334
- "Abi index did not match `AbiDatas` ordering"
335
- ) ;
336
- i
337
- }
338
-
339
- #[ inline]
340
- pub fn data ( self ) -> & ' static AbiData {
341
- & AbiDatas [ self . index ( ) ]
342
- }
343
-
344
232
pub fn name ( self ) -> & ' static str {
345
- self . data ( ) . name
233
+ self . as_str ( )
346
234
}
347
235
}
348
236
0 commit comments