Metadata Loader Locking

The locking functions here are used by code in class.c and metadata.c to lock access to the shared hashtables inside the MonoImage

mono_loader_lock

mono_loader_unlock

Metadata access API

This is the low-level API for accessing the metadata images.

mono_cli_rva_image_map

mono_pe_file_open

mono_meta_table_name

mono_metadata_blob_heap

mono_metadata_compute_size

mono_metadata_custom_attrs_from_index

mono_metadata_decode_blob_size

mono_metadata_decode_row_col

mono_metadata_decode_row

mono_metadata_decode_signed_value

mono_metadata_decode_value

mono_metadata_encode_value

mono_metadata_events_from_typedef

mono_metadata_field_info

mono_metadata_free_array

mono_metadata_free_marshal_spec

mono_metadata_free_mh

mono_metadata_free_type

mono_metadata_generic_inst_equal

mono_metadata_generic_inst_hash

mono_metadata_generic_inst_is_valuetype

mono_metadata_generic_method_equal

mono_metadata_get_constant_index

mono_metadata_get_marshal_info

mono_metadata_get_table

mono_metadata_guid_heap

mono_metadata_implmap_from_method

mono_metadata_interfaces_from_typedef_full

mono_metadata_interfaces_from_typedef

mono_metadata_load_generic_params

mono_metadata_locate

mono_metadata_locate_token

mono_metadata_methods_from_event

mono_metadata_methods_from_property

mono_metadata_nested_in_typedef

mono_metadata_nesting_typedef

mono_metadata_packing_from_typedef

mono_metadata_parse_array_full

mono_metadata_parse_array

mono_metadata_parse_custom_mod

mono_metadata_parse_field_type

mono_metadata_parse_marshal_spec

mono_metadata_parse_method_signature_full

mono_metadata_parse_method_signature

mono_metadata_parse_mh_full

mono_metadata_parse_mh

mono_metadata_parse_param

mono_metadata_parse_signature_full

mono_metadata_parse_signature

mono_metadata_parse_typedef_or_ref

mono_metadata_parse_type_full

mono_metadata_parse_type

mono_metadata_properties_from_typedef

mono_metadata_string_heap

mono_metadata_token_from_dor

mono_metadata_typedef_from_field

mono_metadata_typedef_from_method

mono_metadata_type_equal

mono_metadata_type_hash

mono_metadata_user_string

mono_metadata_declsec_from_index

mono_metadata_free_method_signature

Generics Support

mono_metadata_generic_class_is_valuetype

mono_metadata_has_generic_params

mono_metadata_inflate_generic_inst

mono_metadata_parse_generic_inst

Tokens

mono_ldtoken

mono_lookup_dynamic_token

mono_ldstr

mono_exception_from_token

mono_create_jit_trampoline_from_token

Working with signatures

mono_signature_explicit_this

mono_signature_get_call_conv

mono_signature_get_desc

mono_signature_get_param_count

mono_signature_get_params

mono_signature_get_return_type

mono_signature_hash

mono_signature_is_instance

mono_signature_vararg_start

OpCodes

mono_opcode_name

mono_opcode_value

Metadata Loading Errors

The routines in this section are used to cope with errors during metadata loading. Errors in metadata handling can happen for many reason, and these include (this is not an exhaustive list).

The mono_loader_set_* routines are invoked during metadata loading to flag that an error has happened. The class loading errros are flagged in a per-thread basis.

In various spots in the runtime the mono_loader_get_last_error routine is called to check if there was a problem, and then errors are propagated upwards on the stack until we reach a point where an exception can be raised and no runtime locks are held.

The mono_loader_error_prepare_exception takes a MonoLoaderError structure (the value returned from mono_loader_get_last_error), turns that into an exception and clears the error condition from the current thread.

mono_loader_set_error_field_load

mono_loader_set_error_method_load

mono_loader_set_error_type_load

mono_loader_get_last_error

mono_loader_clear_error

mono_loader_error_prepare_exception