MonoInst *out_args;
MonoInst *vret_var;
gconstpointer fptr;
+ MonoJitICallId jit_icall_id;
guint stack_usage;
guint stack_align_amount;
+ regmask_t used_iregs;
+ regmask_t used_fregs;
+ GSList *out_ireg_args;
+ GSList *out_freg_args;
+ GSList *outarg_vts;
+ CallInfo *call_info;
+#ifdef ENABLE_LLVM
+ LLVMCallInfo *cinfo;
+ int rgctx_arg_reg, imt_arg_reg;
+#endif
+#ifdef TARGET_ARM
+ /* See the comment in mini-arm.c!mono_arch_emit_call for RegTypeFP. */
+ GSList *float_args;
+#endif
+ // Bitfields are at the end due to an unexplained problem with C++ and LLVM.
+ // This is also their ideal place to minimize padding for alignment,
+ // unless there is a placement to increase locality.
+
guint is_virtual : 1;
// FIXME tailcall field is written after read; prefer MONO_IS_TAILCALL_OPCODE.
guint tailcall : 1;
/* If this is TRUE, 'fptr' points to a MonoJumpInfo instead of an address. */
guint fptr_is_patch : 1;
- MonoJitICallId jit_icall_id;
/*
- * If this is true, then the call returns a vtype in a register using the same
+ * If this is true, then the call returns a vtype in a register using the same
* calling convention as OP_CALL.
*/
guint vret_in_reg : 1;
guint32 rgctx_reg : 1;
/* Whenever the call will need an unbox trampoline */
guint need_unbox_trampoline : 1;
- regmask_t used_iregs;
- regmask_t used_fregs;
- GSList *out_ireg_args;
- GSList *out_freg_args;
- GSList *outarg_vts;
- CallInfo *call_info;
-#ifdef ENABLE_LLVM
- LLVMCallInfo *cinfo;
- int rgctx_arg_reg, imt_arg_reg;
-#endif
-#ifdef TARGET_ARM
- /* See the comment in mini-arm.c!mono_arch_emit_call for RegTypeFP. */
- GSList *float_args;
-#endif
};
struct MonoCallArgParm {
#endif /* HAVE_USR_INCLUDE_MALLOC_H */
#endif /* NO_MALLINFO */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#if !ONLY_MSPACES
/* ------------------- Declarations of public routines ------------------- */
#endif /* MSPACES */
-#ifdef __cplusplus
-}; /* end of extern "C" */
-#endif /* __cplusplus */
-
/*
========================================================================
To make a fully customizable malloc.h header file, cut everything
#include <stddef.h> /* for size_t */
#include <mono/utils/mono-compiler.h>
-// Returning an undefined struct by value from extern "C"
-// is sometimes an error. Mono does not use the code (dlmallinfo)..
-//
-// Other fixes:
-// - define the struct
-// - #if __cplusplus
-// - #if HOST_WASM
-// - #ifndef HAVE_USR_INCLUDE_MALLOC_H
-// - Make it not extern "C".
-// - Return the struct through an out parameter.
-// - remove extern "C" entirely in dlmalloc.
-//
-// Mono does not use the function (dlmallinfo).
-//
-#define NO_MALLINFO 1 /* mono */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
#if !ONLY_MSPACES
#ifndef USE_DL_PREFIX
#endif /* MSPACES */
-#ifdef __cplusplus
-}; /* end of extern "C" */
-#endif
-
#endif /* MALLOC_280_H */