Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
5f0bb98
Use dn_vector_t instead of GArray in one place in Mono
lambdageek Mar 28, 2023
a991249
include shared containers in mono shared lib, too
lambdageek Mar 28, 2023
87f5d50
convert mono_seq_point_init_next to use dn_vector_t
lambdageek Mar 28, 2023
e8c7dea
[custom-attrs] Use init/dispose instead of alloc/free for dn_vector_t
lambdageek Mar 28, 2023
2c5c00a
move container logic to toplevel; add deps to runtime components
lambdageek Mar 28, 2023
301c2a4
fix windows build
lambdageek Mar 28, 2023
ec1bf21
fix Darwin frameworks builds
lambdageek Mar 28, 2023
473df84
replace 2 uses of GArray in interp/transform.c
lambdageek Mar 28, 2023
5e4b453
replace a use of GArray in mini/seq-points.c
lambdageek Mar 28, 2023
6029c33
replace use of GArray for debug-mini
lambdageek Mar 28, 2023
0082829
WIP: start a dn_checkfail helper like g_assertf
lambdageek Apr 4, 2023
1cf3d19
remove some unused assignments from eventpipe.cmake fragment
lambdageek Apr 5, 2023
e5d2108
make containers a normal sub-project for Mono
lambdageek Apr 5, 2023
adcb5a6
Add mono implementation of dn-rt.h
lambdageek Apr 5, 2023
0eb1fd5
check dn_vector_alloc_t result
lambdageek Apr 5, 2023
15d11fd
fix coreclr build
lambdageek Apr 5, 2023
71fb5c2
add placeholder dn_rt functions for coreclr and nativeaot
lambdageek Apr 6, 2023
fa05fbf
fix mono build
lambdageek Apr 6, 2023
695575f
maybe fix coreclr/nativeaot windows build?
lambdageek Apr 6, 2023
c4a28a5
move nativeaot shims to a separate file
lambdageek Apr 6, 2023
e0526c1
fix coreclr windows?
lambdageek Apr 6, 2023
7fc5ecc
add typed dn_vector_ptr accessor macros
lambdageek Apr 6, 2023
e93efdc
Use dn_vector_ptr in a few places instead of dn_vector
lambdageek Apr 6, 2023
8009923
replace one more GArray by dn_vector_ptr_t
lambdageek Apr 6, 2023
7a5109d
replace GArray by dn_vector_t in hot reload Pass2Skeleton
lambdageek Apr 6, 2023
6c2760e
one more GArray in hot_reload
lambdageek Apr 6, 2023
351a10b
use dn_vector_ptr_t for coop cookie stack in checked build
lambdageek Apr 6, 2023
7119af1
[mono][eventpipe] fixup DS_EXIT_BLOCKING_PAL_SECTION in checked build
lambdageek Apr 6, 2023
87c6d60
replace GArray with dn_vector_t in mini-amd64
lambdageek Apr 7, 2023
571be4f
replace GArray by dn_vector_t in debug-mono-ppdb
lambdageek Apr 7, 2023
e595b68
replace GArray by dn_vector_t in log and aot profilers
lambdageek Apr 7, 2023
bc81bd6
Add G_CONTAINER_DEPRECATED macro. Mark GArray creation funcs deprecated
lambdageek Apr 7, 2023
c1fcf96
replace GArray with dn_vector_t in hazard-pointer
lambdageek Apr 7, 2023
15b08d8
replace GArray with dn_vector_t in ep-rt-mono
lambdageek Apr 7, 2023
ba3fc38
Add a shared_container_api cmake interface library
lambdageek Apr 7, 2023
bfb27a9
[icall] Don't use bareword bool in icall signature macros
lambdageek Apr 7, 2023
b739924
replace GByteArray by dn_vector_t in mono-threads
lambdageek Apr 7, 2023
b5799cc
Add a way to bypass glib container deprecation warning
lambdageek Apr 7, 2023
4a118ee
add containers dir to offsets tool include paths
lambdageek Apr 7, 2023
9fd9e91
use dn_vector_t instead of GByteArray for seq-points-data
lambdageek Apr 7, 2023
02155b3
replace GArray by dn_vector_t in mini-llvm
lambdageek Apr 7, 2023
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
10 changes: 10 additions & 0 deletions src/coreclr/nativeaot/Runtime/eventpipe/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,23 @@ list(APPEND AOT_EVENTPIPE_MANAGED_TO_NATIVE_SOURCES
${RUNTIME_DIR}/EnabledEventPipeInterface.cpp
)

set(CONTAINER_SHIM_SOURCES
${AOT_EVENTPIPE_SHIM_DIR}/dn-rt-aot.cpp
)

set(CONTAINER_SHIM_HEADERS
${AOT_EVENTPIPE_SHIM_DIR}/dn-rt-aot.h
)

list(APPEND EVENTPIPE_SOURCES
${AOT_EVENTPIPE_SHIM_SOURCES}
${AOT_EVENTPIPE_SHIM_HEADERS}
${AOT_EVENTPIPE_MANAGED_TO_NATIVE_SOURCES}
${SHARED_EVENTPIPE_CONFIG_HEADERS}
${CONTAINER_SOURCES}
${CONTAINER_HEADERS}
${CONTAINER_SHIM_HEADERS}
${CONTAINER_SHIM_SOURCES}
)

list(APPEND AOT_EVENTPIPE_DISABLED_SOURCES
Expand Down
27 changes: 27 additions & 0 deletions src/coreclr/nativeaot/Runtime/eventpipe/dn-rt-aot.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#include "common.h"
#include "gcenv.base.h"
#include "CommonTypes.h"
#include "CommonMacros.h"
#include "PalRedhawkCommon.h"
#include "PalRedhawk.h"
#include "rhassert.h"

#include "containers/dn-rt.h"

DN_NORETURN void
dn_rt_aot_failfast_msgv (const char* fmt, va_list ap)
{
RhFailFast();
UNREACHABLE();
}

DN_NORETURN void
dn_rt_aot_failfast_nomsg(const char* file, int line)
{
RhFailFast();
UNREACHABLE();
}

25 changes: 25 additions & 0 deletions src/coreclr/nativeaot/Runtime/eventpipe/dn-rt-aot.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#ifndef __DN_RT_AOT_H__
#define __DN_RT_AOT_H__

DN_NORETURN void
dn_rt_aot_failfast_msgv(const char* fmt, va_list ap);

DN_NORETURN static inline void
dn_rt_failfast_msgv(const char* fmt, va_list ap)
{
dn_rt_aot_failfast_msgv(fmt, ap);
}

DN_NORETURN void
dn_rt_aot_failfast_nomsg(const char* file, int line);

DN_NORETURN static inline void
dn_rt_failfast_nomsg(const char* file, int line)
{
dn_rt_aot_failfast_nomsg(file, line);
}

#endif /* __DN_RT_AOT_H__ */
2 changes: 2 additions & 0 deletions src/mono/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -929,6 +929,8 @@ if(NOT DISABLE_LIBS)
endif()
add_subdirectory("${CLR_SRC_NATIVE_DIR}/public" public_apis)

### Mono runtime and components

add_subdirectory(mono)
if (ENABLE_MSCORDBI AND NOT TARGET_ARCH STREQUAL "arm64" AND NOT CMAKE_CROSSCOMPILING AND NOT TARGET_IOS AND NOT TARGET_ANDROID AND NOT TARGET_BROWSER AND NOT TARGET_WASI AND NOT HOST_MACCAT)
add_subdirectory(dlls/mscordbi)
Expand Down
1 change: 1 addition & 0 deletions src/mono/mono/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ project(mono)

set(subdirs
eglib
containers
utils
sgen
metadata
Expand Down
28 changes: 24 additions & 4 deletions src/mono/mono/component/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
set(MONO_COMPONENT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../component")
set(SHARED_CONTAINERS_SOURCE_PATH "${CLR_SRC_NATIVE_DIR}/containers/")
set(SHARED_EVENTPIPE_SOURCE_PATH "${CLR_SRC_NATIVE_DIR}/eventpipe/")
set(MONO_EVENTPIPE_SHIM_SOURCE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../eventpipe/")
set(MONO_EVENTPIPE_GEN_INCLUDE_PATH "${CMAKE_CURRENT_BINARY_DIR}/eventpipe")
Expand Down Expand Up @@ -42,6 +41,9 @@ set(${MONO_DEBUGGER_COMPONENT_NAME}-stub-sources
${MONO_COMPONENT_PATH}/debugger-stub.c
)

set(${MONO_DEBUGGER_COMPONENT_NAME}-link_libraries
shared_container_objects)

# hot_reload
list(APPEND components
${MONO_HOT_RELOAD_COMPONENT_NAME}
Expand All @@ -55,6 +57,9 @@ set(${MONO_HOT_RELOAD_COMPONENT_NAME}-stub-sources
${MONO_COMPONENT_PATH}/hot_reload-stub.c
)

set(${MONO_HOT_RELOAD_COMPONENT_NAME}-link_libraries
shared_container_objects)

# diagnostics_tracing (event_pipe/diagnostics_server)
list(APPEND components
${MONO_DIAGNOSTICS_TRACING_COMPONENT_NAME}
Expand All @@ -68,7 +73,6 @@ include_directories(
)

set(${MONO_DIAGNOSTICS_TRACING_COMPONENT_NAME}-sources
${container_sources}
${eventpipe_sources}
${diagnostic_server_sources}
${MONO_COMPONENT_PATH}/event_pipe.c
Expand All @@ -86,6 +90,9 @@ set(${MONO_DIAGNOSTICS_TRACING_COMPONENT_NAME}-dependencies
${MONO_DIAGNOSTICS_TRACING_COMPONENT_NAME}-gen-sources
)

set(${MONO_DIAGNOSTICS_TRACING_COMPONENT_NAME}-link_libraries
shared_container_objects)

# marshal-ilgen
list(APPEND components
${MONO_MARSHAL_ILGEN_COMPONENT_NAME}
Expand All @@ -99,6 +106,10 @@ set(${MONO_MARSHAL_ILGEN_COMPONENT_NAME}-sources
${MONO_COMPONENT_PATH}/marshal-ilgen.h
)

set(${MONO_MARSHAL_ILGEN_COMPONENT_NAME}-link_libraries
shared_container_objects
)

# For every component not build into the AOT compiler, build the stub instead
set(stubs_for_aot "")
foreach (component IN LISTS components)
Expand Down Expand Up @@ -154,14 +165,17 @@ foreach(component IN LISTS components)
if(NOT DISABLE_COMPONENT_OBJECTS)
add_library("${component}-objects" OBJECT "${${component}-sources}")
target_link_libraries("${component}-objects" PRIVATE component_base)
target_link_libraries("${component}-objects" PUBLIC eglib_api)
target_link_libraries("${component}-objects" PUBLIC eglib_api shared_container_api)
if(DEFINED "${component}-link_libraries")
target_link_libraries("${component}-objects" PRIVATE "${${component}-link_libraries}")
endif()
foreach(dependency IN LISTS "${component}-dependencies")
add_dependencies("${component}-objects" "${dependency}")
endforeach()
endif()
add_library("${component}-stub-objects" OBJECT "${${component}-stub-sources}")
target_link_libraries("${component}-stub-objects" PRIVATE component_base)
target_link_libraries("${component}-stub-objects" PUBLIC eglib_api)
target_link_libraries("${component}-stub-objects" PUBLIC eglib_api shared_container_api)
endforeach()

if(NOT DISABLE_COMPONENTS AND NOT STATIC_COMPONENTS)
Expand All @@ -170,9 +184,15 @@ if(NOT DISABLE_COMPONENTS AND NOT STATIC_COMPONENTS)
# NOTE: keep library naming pattern in sync with RuntimeComponentManifest.targets
if(HOST_WIN32)
add_library("mono-component-${component}" SHARED "${${component}-sources}")
if(DEFINED "${component}-link_libraries")
target_link_libraries("mono-component-${component}" PRIVATE "${${component}-link_libraries}")
endif()
target_compile_definitions("mono-component-${component}" PRIVATE -DCOMPILING_COMPONENT_DYNAMIC;-DMONO_DLL_IMPORT)
else()
add_library("mono-component-${component}" SHARED $<TARGET_OBJECTS:${component}-objects>)
if(DEFINED "${component}-link_libraries")
target_link_libraries("mono-component-${component}" PRIVATE "${${component}-link_libraries}")
endif()
target_compile_definitions("${component}-objects" PRIVATE -DCOMPILING_COMPONENT_DYNAMIC;-DMONO_DLL_IMPORT)
endif()
foreach(dependency IN LISTS "${component}-dependencies")
Expand Down
31 changes: 18 additions & 13 deletions src/mono/mono/component/debugger-agent.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
#define SOCKET_ERROR (-1)
#endif

#include <dn-vector-ptr.h>

#include <mono/metadata/mono-debug.h>
#include <mono/metadata/debug-internals.h>
#include <mono/metadata/domain-internals.h>
Expand Down Expand Up @@ -7961,33 +7963,36 @@ assembly_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
guint8 *ppdb_data = NULL;
int ppdb_size = 0, ppdb_compressed_size = 0;
char *ppdb_path;
GArray *pdb_checksum_hash_type = g_array_new (FALSE, TRUE, sizeof (char*));
GArray *pdb_checksum = g_array_new (FALSE, TRUE, sizeof (guint8*));
gboolean has_debug_info = mono_get_pe_debug_info_full (ass->image, pe_guid, &pe_age, &pe_timestamp, &ppdb_data, &ppdb_size, &ppdb_compressed_size, &ppdb_path, pdb_checksum_hash_type, pdb_checksum);
dn_vector_ptr_t /* <char*> */ pdb_checksum_hash_type = {0,};
dn_vector_ptr_t /* <guint8*> */ pdb_checksum = {0,};
dn_vector_ptr_init (&pdb_checksum_hash_type);
dn_vector_ptr_init (&pdb_checksum);
gboolean has_debug_info = mono_get_pe_debug_info_full (ass->image, pe_guid, &pe_age, &pe_timestamp, &ppdb_data, &ppdb_size, &ppdb_compressed_size, &ppdb_path, &pdb_checksum_hash_type, &pdb_checksum);
if (!has_debug_info || ppdb_size > 0)
{
buffer_add_byte (buf, 0);
g_array_free (pdb_checksum_hash_type, TRUE);
g_array_free (pdb_checksum, TRUE);
dn_vector_ptr_dispose (&pdb_checksum_hash_type);
dn_vector_ptr_dispose (&pdb_checksum);
return ERR_NONE;
}
buffer_add_byte (buf, 1);
buffer_add_int (buf, pe_age);
buffer_add_byte_array (buf, pe_guid, 16);
buffer_add_string (buf, ppdb_path);
buffer_add_int (buf, pdb_checksum_hash_type->len);
for (int i = 0 ; i < pdb_checksum_hash_type->len; ++i) {
char* checksum_hash_type = g_array_index (pdb_checksum_hash_type, char*, i);
uint32_t checksum_count = dn_vector_ptr_size (&pdb_checksum_hash_type);
buffer_add_int (buf, checksum_count);
for (int i = 0 ; i < checksum_count; ++i) {
char* checksum_hash_type = *dn_vector_ptr_index_t (&pdb_checksum_hash_type, char*, i);
buffer_add_string (buf, checksum_hash_type);
if (!strcmp (checksum_hash_type, "SHA256"))
buffer_add_byte_array (buf, g_array_index (pdb_checksum, guint8*, i), 32);
buffer_add_byte_array (buf, *dn_vector_ptr_index_t (&pdb_checksum, guint8*, i), 32);
else if (!strcmp (checksum_hash_type, "SHA384"))
buffer_add_byte_array (buf, g_array_index (pdb_checksum, guint8*, i), 48);
buffer_add_byte_array (buf, *dn_vector_ptr_index_t (&pdb_checksum, guint8*, i), 48);
else if (!strcmp (checksum_hash_type, "SHA512"))
buffer_add_byte_array (buf, g_array_index (pdb_checksum, guint8*, i), 64);
buffer_add_byte_array (buf, *dn_vector_ptr_index_t (&pdb_checksum, guint8*, i), 64);
}
g_array_free (pdb_checksum_hash_type, TRUE);
g_array_free (pdb_checksum, TRUE);
dn_vector_ptr_dispose (&pdb_checksum_hash_type);
dn_vector_ptr_dispose (&pdb_checksum);
break;
}
case MDBGPROT_CMD_ASSEMBLY_HAS_DEBUG_INFO_LOADED: {
Expand Down
55 changes: 30 additions & 25 deletions src/mono/mono/component/hot_reload.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

#include "mono/component/hot_reload-internals.h"

#include <dn-vector.h>
#include <glib.h>
#include <mono/metadata/image.h>
#include "mono/metadata/assembly-internals.h"
Expand Down Expand Up @@ -313,7 +314,7 @@ struct _BaselineInfo {
GHashTable *method_params; /* maps methoddef tokens to a MonoClassMetadataUpdateMethodParamInfo* */

/* Skeletons for all newly-added types from every generation. Accessing the array requires the image lock. */
GArray *skeletons;
dn_vector_t /* of MonoAddedDefSkeleton */ *skeletons;
};


Expand Down Expand Up @@ -450,7 +451,7 @@ baseline_info_destroy (BaselineInfo *info)
}

if (info->skeletons)
g_array_free (info->skeletons, TRUE);
dn_vector_free (info->skeletons);

if (info->member_parent)
g_hash_table_destroy (info->member_parent);
Expand Down Expand Up @@ -1801,24 +1802,26 @@ skeleton_add_member (MonoAddedDefSkeleton *sk, uint32_t member_token)
}

typedef struct Pass2Context {
GArray *skeletons; /* Skeleton for each new added type definition */
GArray *nested_class_worklist; /* List of tokens in the NestedClass table to re-visit at the end of the pass */
dn_vector_t /* of MonoAddedDefSkeleton */ *skeletons; /* Skeleton for each new added type definition */
dn_vector_t /* of uint32_t */ *nested_class_worklist; /* List of tokens in the NestedClass table to re-visit at the end of the pass */
} Pass2Context;

static void
pass2_context_init (Pass2Context *ctx)
{
ctx->skeletons = g_array_new (FALSE, TRUE, sizeof(MonoAddedDefSkeleton));
ctx->nested_class_worklist = g_array_new (FALSE, TRUE, sizeof(uint32_t));
ctx->skeletons = dn_vector_alloc_t (MonoAddedDefSkeleton);
dn_checkfail (ctx->skeletons, "Allocation failed");
ctx->nested_class_worklist = dn_vector_alloc_t (uint32_t);
dn_checkfail (ctx->nested_class_worklist, "Allocation failed");
}

static void
pass2_context_destroy (Pass2Context *ctx)
{
if (ctx->skeletons)
g_array_free (ctx->skeletons, TRUE);
dn_vector_free (ctx->skeletons);
if (ctx->nested_class_worklist)
g_array_free (ctx->nested_class_worklist, TRUE);
dn_vector_free (ctx->nested_class_worklist);
}

static void
Expand All @@ -1827,14 +1830,14 @@ pass2_context_add_skeleton (Pass2Context *ctx, uint32_t typedef_token)
MonoAddedDefSkeleton sk = {0, };
g_assert (mono_metadata_token_table (typedef_token) == MONO_TABLE_TYPEDEF);
sk.typedef_token = typedef_token;
g_array_append_val (ctx->skeletons, sk);
dn_vector_push_back (ctx->skeletons, sk);
}

static MonoAddedDefSkeleton*
pass2_context_get_skeleton (Pass2Context *ctx, uint32_t typedef_token)
{
for (int i = 0 ; i < ctx->skeletons->len; ++i) {
MonoAddedDefSkeleton *sk = &((MonoAddedDefSkeleton*)ctx->skeletons->data)[i];
for (uint32_t i = 0 ; i < dn_vector_size (ctx->skeletons); ++i) {
MonoAddedDefSkeleton *sk = dn_vector_index_t (ctx->skeletons, MonoAddedDefSkeleton, i);
if (sk->typedef_token == typedef_token)
return sk;
}
Expand Down Expand Up @@ -1863,11 +1866,13 @@ static gboolean
baseline_info_consume_skeletons (Pass2Context *ctx, MonoImage *base_image, BaselineInfo *base_info, MonoError *error)
{
mono_image_lock (base_image);
if (!base_info->skeletons)
base_info->skeletons = g_array_new (FALSE, TRUE, sizeof(MonoAddedDefSkeleton));
g_array_append_vals (base_info->skeletons, ctx->skeletons->data, ctx->skeletons->len);
if (!base_info->skeletons) {
base_info->skeletons = dn_vector_alloc_t (MonoAddedDefSkeleton);
dn_checkfail (base_info->skeletons, "Allocation failed");
}
_dn_vector_append_range (base_info->skeletons, (const uint8_t*)dn_vector_data_t (ctx->skeletons, MonoAddedDefSkeleton), dn_vector_size (ctx->skeletons));
mono_image_unlock (base_image);
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_METADATA_UPDATE, "pass2: Added %d type definition skeletons. Total now %d.", ctx->skeletons->len, base_info->skeletons->len);
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_METADATA_UPDATE, "pass2: Added %d type definition skeletons. Total now %d.", dn_vector_size (ctx->skeletons), dn_vector_size (base_info->skeletons));
return TRUE;
}

Expand All @@ -1879,8 +1884,8 @@ hot_reload_get_typedef_skeleton (MonoImage *base_image, uint32_t typedef_token,
return FALSE;
gboolean found = FALSE;
mono_image_lock (base_image);
for (int i = 0; i < info->skeletons->len; ++i) {
MonoAddedDefSkeleton *sk = &((MonoAddedDefSkeleton*)info->skeletons->data)[i];
for (uint32_t i = 0; i < dn_vector_size (info->skeletons); ++i) {
MonoAddedDefSkeleton *sk = dn_vector_index_t (info->skeletons, MonoAddedDefSkeleton, i);
if (sk->typedef_token == typedef_token) {
found = TRUE;
g_assert (first_method_idx);
Expand All @@ -1906,8 +1911,8 @@ hot_reload_get_typedef_skeleton_properties (MonoImage *base_image, uint32_t type
return FALSE;
gboolean found = FALSE;
mono_image_lock (base_image);
for (int i = 0; i < info->skeletons->len; ++i) {
MonoAddedDefSkeleton *sk = &((MonoAddedDefSkeleton*)info->skeletons->data)[i];
for (uint32_t i = 0; i < dn_vector_size (info->skeletons); ++i) {
MonoAddedDefSkeleton *sk = dn_vector_index_t (info->skeletons, MonoAddedDefSkeleton, i);
if (sk->typedef_token == typedef_token) {
found = TRUE;
g_assert (first_prop_idx);
Expand All @@ -1929,8 +1934,8 @@ hot_reload_get_typedef_skeleton_events (MonoImage *base_image, uint32_t typedef_
return FALSE;
gboolean found = FALSE;
mono_image_lock (base_image);
for (int i = 0; i < info->skeletons->len; ++i) {
MonoAddedDefSkeleton *sk = &((MonoAddedDefSkeleton*)info->skeletons->data)[i];
for (uint32_t i = 0; i < dn_vector_size (info->skeletons); ++i) {
MonoAddedDefSkeleton *sk = dn_vector_index_t (info->skeletons, MonoAddedDefSkeleton, i);
if (sk->typedef_token == typedef_token) {
found = TRUE;
g_assert (first_event_idx);
Expand Down Expand Up @@ -1981,7 +1986,7 @@ add_nested_class_to_worklist (Pass2Context *ctx, MonoImage *image_base, uint32_t
return;
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_METADATA_UPDATE, "EnC: adding nested class row 0x%08x (enclosing: 0x%08x, nested: 0x%08x) to worklist", log_token, cols[MONO_NESTED_CLASS_ENCLOSING], cols[MONO_NESTED_CLASS_NESTED]);

g_array_append_val (ctx->nested_class_worklist, log_token);
dn_vector_push_back (ctx->nested_class_worklist, log_token);
}

/**
Expand All @@ -1996,9 +2001,9 @@ pass2_update_nested_classes (Pass2Context *ctx, MonoImage *image_base, MonoError
{
if (!ctx->nested_class_worklist)
return TRUE;
GArray *arr = ctx->nested_class_worklist;
for (int i = 0; i < arr->len; ++i) {
uint32_t log_token = g_array_index (arr, uint32_t, i);
dn_vector_t *arr = ctx->nested_class_worklist;
for (uint32_t i = 0; i < dn_vector_size (arr); ++i) {
uint32_t log_token = *dn_vector_index_t (arr, uint32_t, i);

uint32_t cols[MONO_TABLE_NESTEDCLASS];
mono_metadata_decode_row (&image_base->tables[MONO_TABLE_NESTEDCLASS], mono_metadata_token_index (log_token) - 1, cols, MONO_NESTED_CLASS_SIZE);
Expand Down
Loading