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

Introduce WASM JITs for interpreter opcodes, do_jit_call, and interp_entry wrappers #76477

Merged
merged 3 commits into from
Nov 15, 2022
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/mono/mono/mini/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,8 @@ set(interp_sources
interp/mintops.c
interp/transform.c
interp/tiering.h
interp/tiering.c)
interp/tiering.c
interp/jiterpreter.c)
set(interp_stub_sources
interp-stubs.c)

Expand Down
7 changes: 7 additions & 0 deletions src/mono/mono/mini/driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@
#include "mini-runtime.h"
#include "interp/interp.h"

#if HOST_BROWSER
#include "interp/jiterpreter.h"
#endif

#include <string.h>
#include <ctype.h>
#include <locale.h>
Expand Down Expand Up @@ -1843,6 +1847,9 @@ mono_jit_parse_options (int argc, char * argv[])
} else if (strncmp (argv [i], "--profile=", 10) == 0) {
mini_add_profiler_argument (argv [i] + 10);
} else if (argv [i][0] == '-' && argv [i][1] == '-' && mini_parse_debug_option (argv [i] + 2)) {
#if HOST_BROWSER
} else if (argv [i][0] == '-' && argv [i][1] == '-' && mono_jiterp_parse_option (argv [i] + 2)) {
#endif
vargaz marked this conversation as resolved.
Show resolved Hide resolved
} else {
fprintf (stderr, "Unsupported command line option: '%s'\n", argv [i]);
exit (1);
Expand Down
37 changes: 37 additions & 0 deletions src/mono/mono/mini/interp/interp-internals.h
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,43 @@ mono_interp_jit_call_supported (MonoMethod *method, MonoMethodSignature *sig);
void
mono_interp_error_cleanup (MonoError *error);

gboolean
mono_interp_is_method_multicastdelegate_invoke (MonoMethod *method);

MONO_NEVER_INLINE void
mono_interp_exec_method (InterpFrame *frame, ThreadContext *context, FrameClauseArgs *clause_args);

#if HOST_BROWSER

gboolean
mono_jiterp_isinst (MonoObject* object, MonoClass* klass);

void
mono_jiterp_check_pending_unwind (ThreadContext *context);

void *
mono_jiterp_get_context (void);

int
mono_jiterp_overflow_check_i4 (gint32 lhs, gint32 rhs, int opcode);

int
mono_jiterp_overflow_check_u4 (guint32 lhs, guint32 rhs, int opcode);

void
mono_jiterp_ld_delegate_method_ptr (gpointer *destination, MonoDelegate **source);

int
mono_jiterp_stackval_to_data (MonoType *type, stackval *val, void *data);

int
mono_jiterp_stackval_from_data (MonoType *type, stackval *result, const void *data);

gpointer
mono_jiterp_frame_data_allocator_alloc (FrameDataAllocator *stack, InterpFrame *frame, int size);

#endif

static inline int
mint_type(MonoType *type)
{
Expand Down
Loading