Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Strengthen several fields and TLS and functions from void*. #10269

Merged
merged 6 commits into from Aug 31, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion mono/metadata/appdomain.h
Expand Up @@ -13,6 +13,7 @@

#include <mono/utils/mono-publib.h>

#include <mono/utils/mono-forward.h>
#include <mono/metadata/object.h>
#include <mono/metadata/reflection.h>

Expand All @@ -23,7 +24,6 @@ typedef void (*MonoThreadStartCB) (intptr_t tid, void* stack_start,
typedef void (*MonoThreadAttachCB) (intptr_t tid, void* stack_start);

typedef struct _MonoAppDomain MonoAppDomain;
typedef struct _MonoJitInfo MonoJitInfo;

typedef void (*MonoDomainFunc) (MonoDomain *domain, void* user_data);

Expand Down
2 changes: 1 addition & 1 deletion mono/metadata/boehm-gc.c
Expand Up @@ -613,7 +613,7 @@ mono_push_other_roots (void)
{
g_hash_table_foreach (roots, push_root, NULL);
FOREACH_THREAD_EXCLUDE (info, MONO_THREAD_INFO_FLAGS_NO_GC) {
HandleStack* stack = (HandleStack*)info->handle_stack;
HandleStack* stack = info->handle_stack;
if (stack)
push_handle_stack (stack);
} FOREACH_THREAD_END
Expand Down
9 changes: 5 additions & 4 deletions mono/metadata/domain-internals.h
Expand Up @@ -7,6 +7,7 @@
#ifndef __MONO_METADATA_DOMAIN_INTERNALS_H__
#define __MONO_METADATA_DOMAIN_INTERNALS_H__

#include <mono/utils/mono-forward-internal.h>
#include <mono/metadata/object-forward.h>
#include <mono/metadata/appdomain.h>
#include <mono/metadata/mempool.h>
Expand Down Expand Up @@ -215,12 +216,12 @@ struct _MonoJitInfo {
union {
MonoMethod *method;
MonoImage *image;
gpointer aot_info;
gpointer tramp_info;
MonoAotModule *aot_info;
MonoTrampInfo *tramp_info;
} d;
union {
struct _MonoJitInfo *next_jit_code_hash;
struct _MonoJitInfo *next_tombstone;
MonoJitInfo *next_jit_code_hash;
MonoJitInfo *next_tombstone;
} n;
gpointer code_start;
guint32 unwind_info;
Expand Down
2 changes: 1 addition & 1 deletion mono/metadata/domain.c
Expand Up @@ -52,7 +52,7 @@

//#define DEBUG_DOMAIN_UNLOAD 1

#define GET_APPDOMAIN() ((MonoDomain*)mono_tls_get_domain ())
#define GET_APPDOMAIN mono_tls_get_domain
#define SET_APPDOMAIN(x) do { \
MonoThreadInfo *info; \
mono_tls_set_domain (x); \
Expand Down
8 changes: 4 additions & 4 deletions mono/metadata/handle.c
Expand Up @@ -198,7 +198,7 @@ mono_handle_new (MonoObject *obj, const char *owner)
#endif
{
MonoThreadInfo *info = mono_thread_info_current ();
HandleStack *handles = (HandleStack *)info->handle_stack;
HandleStack *handles = info->handle_stack;
HandleChunk *top = handles->top;
#ifdef MONO_HANDLE_TRACK_SP
mono_handle_chunk_leak_check (handles);
Expand Down Expand Up @@ -252,7 +252,7 @@ mono_handle_new_interior (gpointer rawptr, const char *owner)
#endif
{
MonoThreadInfo *info = mono_thread_info_current ();
HandleStack *handles = (HandleStack *)info->handle_stack;
HandleStack *handles = info->handle_stack;
HandleChunk *top = handles->interior;
#ifdef MONO_HANDLE_TRACK_SP
mono_handle_chunk_leak_check (handles);
Expand Down Expand Up @@ -428,7 +428,7 @@ mono_handle_stack_scan (HandleStack *stack, GcScanFunc func, gpointer gc_data, g
void
mono_stack_mark_record_size (MonoThreadInfo *info, HandleStackMark *stackmark, const char *func_name)
{
HandleStack *handles = (HandleStack *)info->handle_stack;
HandleStack *handles = info->handle_stack;
HandleChunk *cur = stackmark->chunk;
int size = -stackmark->size; //discard the starting point of the stack
while (cur) {
Expand Down Expand Up @@ -493,7 +493,7 @@ mono_gchandle_from_handle (MonoObjectHandle handle, mono_bool pinned)
/* FIXME: chunk_element_to_chunk_idx does a linear search through the
* chunks and we only need it for the assert */
MonoThreadInfo *info = mono_thread_info_current ();
HandleStack *stack = (HandleStack*) info->handle_stack;
HandleStack *stack = info->handle_stack;
HandleChunkElem* elem = handle_to_chunk_element (handle);
int elem_idx = 0;
HandleChunk *chunk = chunk_element_to_chunk_idx (stack, elem, &elem_idx);
Expand Down
6 changes: 3 additions & 3 deletions mono/metadata/handle.h
Expand Up @@ -112,7 +112,7 @@ struct _HandleChunk {
HandleChunkElem elems [OBJECTS_PER_HANDLES_CHUNK];
};

typedef struct {
typedef struct MonoHandleStack {
HandleChunk *top; //alloc from here
HandleChunk *bottom; //scan from here
#ifdef MONO_HANDLE_TRACK_SP
Expand Down Expand Up @@ -177,7 +177,7 @@ mono_stack_mark_init (MonoThreadInfo *info, HandleStackMark *stackmark)
#ifdef MONO_HANDLE_TRACK_SP
gpointer sptop = &stackmark;
#endif
HandleStack *handles = (HandleStack *)info->handle_stack;
HandleStack *handles = info->handle_stack;
stackmark->size = handles->top->size;
stackmark->chunk = handles->top;
stackmark->interior_size = handles->interior->size;
Expand All @@ -190,7 +190,7 @@ mono_stack_mark_init (MonoThreadInfo *info, HandleStackMark *stackmark)
static inline void
mono_stack_mark_pop (MonoThreadInfo *info, HandleStackMark *stackmark)
{
HandleStack *handles = (HandleStack *)info->handle_stack;
HandleStack *handles = info->handle_stack;
HandleChunk *old_top = stackmark->chunk;
old_top->size = stackmark->size;
mono_memory_write_barrier ();
Expand Down
1 change: 1 addition & 0 deletions mono/metadata/loader.h
Expand Up @@ -5,6 +5,7 @@
#ifndef _MONO_METADATA_LOADER_H_
#define _MONO_METADATA_LOADER_H_ 1

#include <mono/utils/mono-forward.h>
#include <mono/metadata/metadata.h>
#include <mono/metadata/image.h>
#include <mono/utils/mono-error.h>
Expand Down
3 changes: 2 additions & 1 deletion mono/metadata/metadata-internals.h
Expand Up @@ -5,6 +5,7 @@
#ifndef __MONO_METADATA_INTERNALS_H__
#define __MONO_METADATA_INTERNALS_H__

#include "mono/utils/mono-forward-internal.h"
#include "mono/metadata/image.h"
#include "mono/metadata/blob.h"
#include "mono/metadata/cil-coff.h"
Expand Down Expand Up @@ -320,7 +321,7 @@ struct _MonoImage {
MonoImage **files;
guint32 file_count;

gpointer aot_module;
MonoAotModule *aot_module;

guint8 aotid[16];

Expand Down
3 changes: 1 addition & 2 deletions mono/metadata/metadata.h
Expand Up @@ -7,6 +7,7 @@

#include <mono/utils/mono-publib.h>

#include <mono/utils/mono-forward.h>
#include <mono/metadata/blob.h>
#include <mono/metadata/row-indexes.h>
#include <mono/metadata/image.h>
Expand All @@ -23,8 +24,6 @@ MONO_BEGIN_DECLS

#define MONO_CLASS_IS_IMPORT(c) ((mono_class_get_flags (c) & TYPE_ATTRIBUTE_IMPORT))

typedef struct _MonoDomain MonoDomain;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any header with a removed typedef should gain an include.


typedef enum {
MONO_EXCEPTION_CLAUSE_NONE,
MONO_EXCEPTION_CLAUSE_FILTER,
Expand Down
3 changes: 2 additions & 1 deletion mono/metadata/object-internals.h
Expand Up @@ -5,6 +5,7 @@
#ifndef __MONO_OBJECT_INTERNALS_H__
#define __MONO_OBJECT_INTERNALS_H__

#include <mono/utils/mono-forward-internal.h>
#include <mono/metadata/object-forward.h>
#include <mono/metadata/object.h>
#include <mono/metadata/threads.h>
Expand Down Expand Up @@ -491,7 +492,7 @@ struct _MonoInternalThread {

struct _MonoThread {
MonoObject obj;
struct _MonoInternalThread *internal_thread;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any header switching from its own forward declare to rely on typedef should gain an include.

MonoInternalThread *internal_thread;
MonoObject *start_obj;
MonoException *pending_exception;
};
Expand Down
1 change: 1 addition & 0 deletions mono/metadata/object.h
Expand Up @@ -5,6 +5,7 @@
#ifndef _MONO_CLI_OBJECT_H_
#define _MONO_CLI_OBJECT_H_

#include <mono/utils/mono-forward.h>
#include <mono/metadata/object-forward.h>
#include <mono/metadata/class.h>
#include <mono/utils/mono-error.h>
Expand Down
2 changes: 1 addition & 1 deletion mono/metadata/sgen-client-mono.h
Expand Up @@ -683,7 +683,7 @@ sgen_client_binary_protocol_collection_end_stats (long long major_scan, long lon
{
}

#define TLAB_ACCESS_INIT SgenThreadInfo *__thread_info__ = (SgenThreadInfo*)mono_tls_get_sgen_thread_info ()
#define TLAB_ACCESS_INIT SgenThreadInfo *__thread_info__ = mono_tls_get_sgen_thread_info ()
#define IN_CRITICAL_REGION (__thread_info__->client_info.in_critical_region)

/* Enter must be visible before anything is done in the critical region. */
Expand Down
10 changes: 5 additions & 5 deletions mono/metadata/sgen-mono.c
Expand Up @@ -836,7 +836,7 @@ mono_gc_clear_domain (MonoDomain * domain)
sgen_clear_nursery_fragments ();

FOREACH_THREAD_ALL (info) {
mono_handle_stack_free_domain ((HandleStack*)info->client_info.info.handle_stack, domain);
mono_handle_stack_free_domain (info->client_info.info.handle_stack, domain);
} FOREACH_THREAD_END

if (sgen_mono_xdomain_checks && domain != mono_get_root_domain ()) {
Expand Down Expand Up @@ -1637,7 +1637,7 @@ report_handle_stack_roots (GCRootReport *report, SgenThreadInfo *info, gboolean
ud.report = report;
ud.info = info;

mono_handle_stack_scan ((HandleStack *) info->client_info.info.handle_stack, report_handle_stack_root, &ud, ud.precise, FALSE);
mono_handle_stack_scan (info->client_info.info.handle_stack, report_handle_stack_root, &ud, ud.precise, FALSE);
}

static void
Expand Down Expand Up @@ -2064,7 +2064,7 @@ sgen_client_thread_detach_with_lock (SgenThreadInfo *p)
sgen_binary_protocol_thread_unregister ((gpointer)tid);
SGEN_LOG (3, "unregister thread %p (%p)", p, (gpointer)tid);

HandleStack *handles = (HandleStack*) p->client_info.info.handle_stack;
HandleStack *handles = p->client_info.info.handle_stack;
p->client_info.info.handle_stack = NULL;
mono_handle_stack_free (handles);
}
Expand Down Expand Up @@ -2253,13 +2253,13 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
beginning of the object.
*/
if (precise)
mono_handle_stack_scan ((HandleStack*)info->client_info.info.handle_stack, (GcScanFunc)ctx.ops->copy_or_mark_object, ctx.queue, precise, TRUE);
mono_handle_stack_scan (info->client_info.info.handle_stack, (GcScanFunc)ctx.ops->copy_or_mark_object, ctx.queue, precise, TRUE);
else {
PinHandleStackInteriorPtrData ud;
memset (&ud, 0, sizeof (ud));
ud.start_nursery = (void**)start_nursery;
ud.end_nursery = (void**)end_nursery;
mono_handle_stack_scan ((HandleStack*)info->client_info.info.handle_stack, pin_handle_stack_interior_ptrs, &ud, precise, FALSE);
mono_handle_stack_scan (info->client_info.info.handle_stack, pin_handle_stack_interior_ptrs, &ud, precise, FALSE);
}
}
} FOREACH_THREAD_END
Expand Down
3 changes: 1 addition & 2 deletions mono/metadata/threads-types.h
Expand Up @@ -15,6 +15,7 @@

#include <glib.h>

#include <mono/utils/mono-forward-internal.h>
#include <mono/metadata/object.h>
#include "mono/metadata/handle.h"
#include "mono/utils/mono-compiler.h"
Expand Down Expand Up @@ -59,8 +60,6 @@ typedef enum {
#define SPECIAL_STATIC_THREAD 1
#define SPECIAL_STATIC_CONTEXT 2

typedef struct _MonoInternalThread MonoInternalThread;

/* It's safe to access System.Threading.InternalThread from native code via a
* raw pointer because all instances should be pinned. But for uniformity of
* icall wrapping, let's declare a MonoInternalThreadHandle anyway.
Expand Down
6 changes: 3 additions & 3 deletions mono/metadata/threads.c
Expand Up @@ -181,8 +181,8 @@ static void threads_add_pending_joinable_runtime_thread (MonoThreadInfo *mono_th
static gboolean threads_wait_pending_joinable_threads (uint32_t timeout);
static gchar* thread_dump_dir = NULL;

#define SET_CURRENT_OBJECT(x) (mono_tls_set_thread (x))
#define GET_CURRENT_OBJECT() ((MonoInternalThread*) mono_tls_get_thread ())
#define SET_CURRENT_OBJECT mono_tls_set_thread
#define GET_CURRENT_OBJECT mono_tls_get_thread

/* function called at thread start */
static MonoThreadStartCB mono_thread_start_cb = NULL;
Expand Down Expand Up @@ -1079,7 +1079,7 @@ fire_attach_profiler_events (MonoNativeThreadId tid)

// The handle stack is a pseudo-root similar to the finalizer queues.
MONO_PROFILER_RAISE (gc_root_register, (
info->handle_stack,
(const mono_byte*)info->handle_stack,
1,
MONO_ROOT_SOURCE_HANDLE,
(void *) tid,
Expand Down