[coop handles] Add mono_string_handle_pin_chars
authorAleksey Kliger <aleksey@xamarin.com>
Thu, 25 May 2017 22:17:59 +0000 (18:17 -0400)
committerAleksey Kliger <aleksey@xamarin.com>
Fri, 26 May 2017 14:29:20 +0000 (10:29 -0400)
mono/metadata/handle.c
mono/metadata/handle.h

index bdb1c773593c3f03c5ff7d5a57263a4057bcc9cb..59bde7fbe7750ef52ee801160bae8f94b6c87ba3 100644 (file)
@@ -490,6 +490,15 @@ mono_array_handle_pin_with_size (MonoArrayHandle handle, int size, uintptr_t idx
        return mono_array_addr_with_size (raw, size, idx);
 }
 
+gunichar2*
+mono_string_handle_pin_chars (MonoStringHandle handle, uint32_t *gchandle)
+{
+       g_assert (gchandle != NULL);
+       *gchandle = mono_gchandle_from_handle (MONO_HANDLE_CAST (MonoObject, handle), TRUE);
+       MonoString *raw = MONO_HANDLE_RAW (handle);
+       return mono_string_chars (raw);
+}
+
 void
 mono_array_handle_memcpy_refs (MonoArrayHandle dest, uintptr_t dest_idx, MonoArrayHandle src, uintptr_t src_idx, uintptr_t len)
 {
index 5a8e3356268585de1d5f97412760f4e3918a22b2..398f7d57cbab7771d4d278d00bf099d67728e8ce 100644 (file)
@@ -468,6 +468,9 @@ mono_array_handle_pin_with_size (MonoArrayHandle handle, int size, uintptr_t ind
 
 #define MONO_ARRAY_HANDLE_PIN(handle,type,index,gchandle_out) mono_array_handle_pin_with_size (MONO_HANDLE_CAST(MonoArray,(handle)), sizeof (type), (index), (gchandle_out))
 
+gunichar2 *
+mono_string_handle_pin_chars (MonoStringHandle s, uint32_t *gchandle_out);
+
 void
 mono_error_set_exception_handle (MonoError *error, MonoExceptionHandle exc);