[mono] Remove domain lock (#50328)
authorZoltan Varga <vargaz@gmail.com>
Tue, 30 Mar 2021 23:18:03 +0000 (19:18 -0400)
committerGitHub <noreply@github.com>
Tue, 30 Mar 2021 23:18:03 +0000 (19:18 -0400)
commitdb7e04d23e3026b691c24e2b21224b5fa8ee3f43
tree4b1a0c5623eb1270257cc85f1708f1383f9808d2
parent62ac429174fdc8f461c08a0e3ba51358ceb7773e
[mono] Remove domain lock (#50328)

* [mono] Reduce domain lock usage.

* Avoid double locking the loader+domain lock, its not needed.
* Use the mem manager lock and the loader lock in a few places instead of
  the domain lock.
* Use lock free code in mono_jit_runtime_invoke ().
* Avoid locking around mono_jit_info_table_add (), it does locking itself.

* [mono] Internalize access to MonoMemoryManager.mp to memory-manager.c.

Also add a separate non-coop lock to protect it, since its accessed
very frequently.

* Use a separate lock for each memory manager.

* Remove the domain lock.
12 files changed:
src/mono/mono/metadata/appdomain.c
src/mono/mono/metadata/domain-internals.h
src/mono/mono/metadata/domain.c
src/mono/mono/metadata/loader-internals.h
src/mono/mono/metadata/lock-tracer.h
src/mono/mono/metadata/memory-manager.c
src/mono/mono/metadata/object.c
src/mono/mono/metadata/sre.c
src/mono/mono/mini/interp/interp.c
src/mono/mono/mini/mini-generic-sharing.c
src/mono/mono/mini/mini-runtime.c
src/mono/mono/mini/mini.c