Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
23 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
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
2 changes: 2 additions & 0 deletions src/mono/mono/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
project(mono)

set(SHARED_CONTAINERS_SOURCE_PATH "${CLR_SRC_NATIVE_DIR}/containers/")

set(subdirs
eglib
utils
Expand Down
16 changes: 15 additions & 1 deletion src/mono/mono/metadata/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
project(metadata C)

include (${SHARED_CONTAINERS_SOURCE_PATH}containers.cmake)

set(shared_container_sources "")

list(APPEND shared_container_sources
${SHARED_CONTAINER_SOURCES}
${SHARED_CONTAINER_HEADERS}
)

addprefix(shared_container_sources ${SHARED_CONTAINERS_SOURCE_PATH} "${shared_container_sources}")

add_library(shared_container_objects OBJECT ${shared_container_sources})
target_include_directories(shared_container_objects PUBLIC ${SHARED_CONTAINERS_SOURCE_PATH})

#
# This library contains the icall tables if the runtime was configured with DISABLE_ICALL_TABLES
#
Expand Down Expand Up @@ -203,7 +217,7 @@ target_compile_definitions(metadata_objects PRIVATE ${metadata_compile_definitio
target_link_libraries(metadata_objects PRIVATE monoapi eglib_api utils_objects)
# note: metadata_objects is an object library, so this doesn't force linking with sgen,
# it just adds the relevant include directories - which we need even with Boehm
target_link_libraries(metadata_objects PRIVATE sgen_objects)
target_link_libraries(metadata_objects PRIVATE sgen_objects shared_container_objects)
target_compile_definitions(metadata_objects PRIVATE -DMONO_DLL_EXPORT)
target_include_directories(metadata_objects PRIVATE ${PROJECT_BINARY_DIR}/../..
${PROJECT_SOURCE_DIR}/../..
Expand Down
21 changes: 13 additions & 8 deletions src/mono/mono/metadata/custom-attrs.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
* Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
#include <config.h>
#include <dn-vector.h>
#include "mono/metadata/assembly.h"
#include "mono/metadata/class-init.h"
#include "mono/metadata/class-internals.h"
Expand Down Expand Up @@ -1880,6 +1881,7 @@ mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
mono_error_cleanup (error);
return result;
}

/**
* mono_custom_attrs_from_index_checked:
* \returns NULL if no attributes are found. On error returns NULL and sets \p error.
Expand All @@ -1891,7 +1893,7 @@ mono_custom_attrs_from_index_checked (MonoImage *image, guint32 idx, gboolean ig
guint32 cols [MONO_CUSTOM_ATTR_SIZE];
MonoTableInfo *ca;
MonoCustomAttrInfo *ainfo;
GArray *attr_array;
dn_vector_t *attr_array;
const char *data;
MonoCustomAttrEntry* attr;

Expand All @@ -1904,7 +1906,10 @@ mono_custom_attrs_from_index_checked (MonoImage *image, guint32 idx, gboolean ig
return NULL;
i --;
// initial size chosen arbitrarily, but default is 16 which is rather small
attr_array = g_array_sized_new (TRUE, TRUE, sizeof (guint32), 128);
dn_vector_custom_alloc_params_t vec_params = {0,};
vec_params.capacity = 128;
vec_params.attributes = DN_VECTOR_ATTRIBUTE_MEMORY_INIT;
attr_array = dn_vector_custom_alloc_t (&vec_params, uint32_t);
while (!mono_metadata_table_bounds_check (image, MONO_TABLE_CUSTOMATTRIBUTE, i + 1)) {
if (mono_metadata_decode_row_col (ca, i, MONO_CUSTOM_ATTR_PARENT) != idx) {
if (G_LIKELY (!image->has_updates)) {
Expand All @@ -1916,19 +1921,19 @@ mono_custom_attrs_from_index_checked (MonoImage *image, guint32 idx, gboolean ig
continue;
}
}
attr_array = g_array_append_val (attr_array, i);
dn_vector_push_back (attr_array, i);
++i;
}
len = attr_array->len;
len = dn_vector_size (attr_array);
if (!len) {
g_array_free (attr_array, TRUE);
dn_vector_free (attr_array);
return NULL;
}
ainfo = (MonoCustomAttrInfo *)g_malloc0 (MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * len);
ainfo->num_attrs = len;
ainfo->image = image;
for (i = 0; i < len; ++i) {
mono_metadata_decode_row (ca, g_array_index (attr_array, guint32, i), cols, MONO_CUSTOM_ATTR_SIZE);
mono_metadata_decode_row (ca, *dn_vector_index_t (attr_array, uint32_t, i), cols, MONO_CUSTOM_ATTR_SIZE);
mtoken = cols [MONO_CUSTOM_ATTR_TYPE] >> MONO_CUSTOM_ATTR_TYPE_BITS;
switch (cols [MONO_CUSTOM_ATTR_TYPE] & MONO_CUSTOM_ATTR_TYPE_MASK) {
case MONO_CUSTOM_ATTR_TYPE_METHODDEF:
Expand All @@ -1949,7 +1954,7 @@ mono_custom_attrs_from_index_checked (MonoImage *image, guint32 idx, gboolean ig
mono_error_cleanup (error);
error_init (error);
} else {
g_array_free (attr_array, TRUE);
dn_vector_free (attr_array);
g_free (ainfo);
return NULL;
}
Expand All @@ -1959,7 +1964,7 @@ mono_custom_attrs_from_index_checked (MonoImage *image, guint32 idx, gboolean ig
attr->data_size = mono_metadata_decode_value (data, &data);
attr->data = (guchar*)data;
}
g_array_free (attr_array, TRUE);
dn_vector_free (attr_array);

return ainfo;
}
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/mini/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ set(monosgen-sources "${icu_shim_sources};${mini_sources};${ZLIB_SOURCES}")

add_library(monosgen-objects OBJECT "${monosgen-sources}")
target_link_libraries (monosgen-objects PRIVATE monoapi eglib_api utils_objects sgen_objects metadata_objects)
add_library(monosgen-static STATIC $<TARGET_OBJECTS:eglib_objects> $<TARGET_OBJECTS:utils_objects> $<TARGET_OBJECTS:sgen_objects> $<TARGET_OBJECTS:metadata_objects> $<TARGET_OBJECTS:monosgen-objects>)
add_library(monosgen-static STATIC $<TARGET_OBJECTS:eglib_objects> $<TARGET_OBJECTS:utils_objects> $<TARGET_OBJECTS:sgen_objects> $<TARGET_OBJECTS:metadata_objects> $<TARGET_OBJECTS:monosgen-objects> $<TARGET_OBJECTS:shared_container_objects>)
set_target_properties(monosgen-static PROPERTIES OUTPUT_NAME ${MONO_LIB_NAME})

if(DISABLE_COMPONENTS OR AOT_COMPONENTS)
Expand Down