#undef DEBUG
+/* Make sure computing VALUE doesn't cause a GC */
+/* Don't move to handles.h */
+#define mono_handle_setval(handle,field,value) MONO_HANDLE_RAW (handle)->field = (value)
+
+#define mono_handle_setref(handle,field,value) MONO_HANDLE_SET((handle),field,(value))
+
+#define mono_array_handle_setref(array,index,value) MONO_HANDLE_ARRAY_SETREF ((array), (index), (value))
+
static gint32 string_invariant_compare_char (gunichar2 c1, gunichar2 c2,
gint32 options);
return ret;
}
-static MonoArray*
-create_group_sizes_array (const gint *gs, gint ml, MonoError *error)
-{
- MonoArray *ret;
- int i, len = 0;
-
- error_init (error);
-
- for (i = 0; i < ml; i++) {
- if (gs [i] == -1)
- break;
- len++;
- }
-
- ret = mono_array_new_cached (mono_domain_get (),
- mono_get_int32_class (), len, error);
- return_val_if_nok (error, NULL);
-
- for(i = 0; i < len; i++)
- mono_array_set_internal (ret, gint32, i, gs [i]);
-
- return ret;
-}
-
-static MonoArray*
+static MonoArrayHandle
create_names_array_idx (const guint16 *names, int ml, MonoError *error)
{
- MonoArray *ret;
+ MonoArrayHandle ret;
MonoDomain *domain;
- int i;
-
- error_init (error);
if (names == NULL)
- return NULL;
+ return NULL_HANDLE_ARRAY;
domain = mono_domain_get ();
- ret = mono_array_new_cached (mono_domain_get (), mono_get_string_class (), ml, error);
- return_val_if_nok (error, NULL);
+ ret = mono_array_new_handle (domain, mono_get_string_class (), ml, error);
+ return_val_if_nok (error, NULL_HANDLE_ARRAY);
- for(i = 0; i < ml; i++) {
+ MonoStringHandle s_h = MONO_HANDLE_NEW (MonoString, NULL);
+ for (int i = 0; i < ml; i++) {
MonoString *s = mono_string_new_checked (domain, dtidx2string (names [i]), error);
- return_val_if_nok (error, NULL);
- mono_array_setref_internal (ret, i, s);
+ return_val_if_nok (error, NULL_HANDLE_ARRAY);
+ MONO_HANDLE_ASSIGN_RAW (s_h, s);
+ mono_array_handle_setref (ret, i, s_h);
}
return ret;
}
-static MonoArray*
+static MonoArrayHandle
create_names_array_idx_dynamic (const guint16 *names, int ml, MonoError *error)
{
- MonoArray *ret;
+ MonoArrayHandle ret;
MonoDomain *domain;
int i, len = 0;
error_init (error);
if (names == NULL)
- return NULL;
+ return NULL_HANDLE_ARRAY;
domain = mono_domain_get ();
len++;
}
- ret = mono_array_new_cached (mono_domain_get (), mono_get_string_class (), len, error);
- return_val_if_nok (error, NULL);
+ ret = mono_array_new_handle (domain, mono_get_string_class (), len, error);
+ return_val_if_nok (error, NULL_HANDLE_ARRAY);
+ MonoStringHandle s_h = MONO_HANDLE_NEW (MonoString, NULL);
for(i = 0; i < len; i++) {
- MonoString *s = mono_string_new_checked (domain, pattern2string (names [i]), error);
- return_val_if_nok (error, NULL);
- mono_array_setref_internal (ret, i, s);
+ MONO_HANDLE_ASSIGN_RAW (s_h, mono_string_new_checked (domain, pattern2string (names [i]), error));
+ return_val_if_nok (error, NULL_HANDLE_ARRAY);
+ mono_array_handle_setref (ret, i, s_h);
}
return ret;
}
MonoBoolean
-ves_icall_System_Globalization_CalendarData_fill_calendar_data (MonoCalendarData *this_obj, MonoString *name, gint32 calendar_index)
+ves_icall_System_Globalization_CalendarData_fill_calendar_data (MonoCalendarDataHandle this_obj, MonoStringHandle name, gint32 calendar_index, MonoError *error)
{
- ERROR_DECL (error);
MonoDomain *domain;
+ MonoArrayHandle arr;
+ MonoStringHandle s;
const DateTimeFormatEntry *dfe;
const CultureInfoNameEntry *ne;
const CultureInfoEntry *ci;
char *n;
- n = mono_string_to_utf8_checked_internal (name, error);
- if (mono_error_set_pending_exception (error))
- return FALSE;
+ n = mono_string_handle_to_utf8 (name, error);
+ return_val_if_nok (error, FALSE);
ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
sizeof (CultureInfoNameEntry), culture_name_locator);
g_free (n);
- if (ne == NULL) {
+ if (ne == NULL)
return FALSE;
- }
ci = &culture_entries [ne->culture_entry_index];
dfe = &datetime_format_entries [ci->datetime_format_index];
domain = mono_domain_get ();
- MonoString *native_name = mono_string_new_checked (domain, idx2string (ci->nativename), error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, NativeName, native_name);
- MonoArray *short_date_patterns = create_names_array_idx_dynamic (dfe->short_date_patterns,
- NUM_SHORT_DATE_PATTERNS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, ShortDatePatterns, short_date_patterns);
- MonoArray *year_month_patterns =create_names_array_idx_dynamic (dfe->year_month_patterns,
- NUM_YEAR_MONTH_PATTERNS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, YearMonthPatterns, year_month_patterns);
-
- MonoArray *long_date_patterns = create_names_array_idx_dynamic (dfe->long_date_patterns,
- NUM_LONG_DATE_PATTERNS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, LongDatePatterns, long_date_patterns);
-
- MonoString *month_day_pattern = mono_string_new_checked (domain, pattern2string (dfe->month_day_pattern), error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, MonthDayPattern, month_day_pattern);
-
- MonoArray *day_names = create_names_array_idx (dfe->day_names, NUM_DAYS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, DayNames, day_names);
-
- MonoArray *abbr_day_names = create_names_array_idx (dfe->abbreviated_day_names,
- NUM_DAYS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, AbbreviatedDayNames, abbr_day_names);
-
- MonoArray *ss_day_names = create_names_array_idx (dfe->shortest_day_names, NUM_DAYS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, SuperShortDayNames, ss_day_names);
-
- MonoArray *month_names = create_names_array_idx (dfe->month_names, NUM_MONTHS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, MonthNames, month_names);
-
- MonoArray *abbr_mon_names = create_names_array_idx (dfe->abbreviated_month_names,
- NUM_MONTHS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, AbbreviatedMonthNames, abbr_mon_names);
+ s = mono_string_new_handle (domain, idx2string (ci->nativename), error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, NativeName, s);
+
+ arr = create_names_array_idx_dynamic (dfe->short_date_patterns, NUM_SHORT_DATE_PATTERNS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, ShortDatePatterns, arr);
+ arr = create_names_array_idx_dynamic (dfe->year_month_patterns,
+ NUM_YEAR_MONTH_PATTERNS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, YearMonthPatterns, arr);
+
+ arr = create_names_array_idx_dynamic (dfe->long_date_patterns,
+ NUM_LONG_DATE_PATTERNS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, LongDatePatterns, arr);
+
+ MonoStringHandle month_day_pattern = mono_string_new_handle (domain, pattern2string (dfe->month_day_pattern), error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, MonthDayPattern, month_day_pattern);
+
+ arr = create_names_array_idx (dfe->day_names, NUM_DAYS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, DayNames, arr);
+
+ arr = create_names_array_idx (dfe->abbreviated_day_names, NUM_DAYS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, AbbreviatedDayNames, arr);
+
+ arr = create_names_array_idx (dfe->shortest_day_names, NUM_DAYS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, SuperShortDayNames, arr);
+
+ arr = create_names_array_idx (dfe->month_names, NUM_MONTHS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, MonthNames, arr);
+ arr = create_names_array_idx (dfe->abbreviated_month_names, NUM_MONTHS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, AbbreviatedMonthNames, arr);
- MonoArray *gen_month_names = create_names_array_idx (dfe->month_genitive_names, NUM_MONTHS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, GenitiveMonthNames, gen_month_names);
+ arr = create_names_array_idx (dfe->month_genitive_names, NUM_MONTHS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, GenitiveMonthNames, arr);
- MonoArray *gen_abbr_mon_names = create_names_array_idx (dfe->abbreviated_month_genitive_names, NUM_MONTHS, error);
- return_val_and_set_pending_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, GenitiveAbbreviatedMonthNames, gen_abbr_mon_names);
+ arr = create_names_array_idx (dfe->abbreviated_month_genitive_names, NUM_MONTHS, error);
+ return_val_if_nok (error, FALSE);
+ MONO_HANDLE_SET (this_obj, GenitiveAbbreviatedMonthNames, arr);
return TRUE;
}
void
-ves_icall_System_Globalization_CultureData_fill_culture_data (MonoCultureData *this_obj, gint32 datetime_index)
+ves_icall_System_Globalization_CultureData_fill_culture_data (MonoCultureDataHandle this_obj, gint32 datetime_index, MonoError *error)
{
- ERROR_DECL (error);
MonoDomain *domain;
const DateTimeFormatEntry *dfe;
+ MonoArrayHandle arr;
g_assert (datetime_index >= 0);
domain = mono_domain_get ();
-#define SET_STR(obj,field,domain,expr,err) do { \
- MonoString *_tmp_str = mono_string_new_checked ((domain), (expr), (err)); \
- if (mono_error_set_pending_exception ((err))) \
- return; \
- MONO_OBJECT_SETREF_INTERNAL ((obj), field, _tmp_str); \
+#define SET_STR_FIELD(obj,field,domain,expr,error) do { \
+ MonoStringHandle _str = mono_string_new_handle ((domain), (expr), (error)); \
+ return_if_nok (error); \
+ MONO_HANDLE_SET ((obj), field, _str); \
} while (0)
- SET_STR (this_obj, AMDesignator, domain, idx2string (dfe->am_designator), error);
- SET_STR (this_obj, PMDesignator, domain, idx2string (dfe->pm_designator), error);
- SET_STR (this_obj, TimeSeparator, domain, idx2string (dfe->time_separator), error);
-#undef SET_STR
-
- MonoArray *long_time_patterns = create_names_array_idx_dynamic (dfe->long_time_patterns,
- NUM_LONG_TIME_PATTERNS, error);
- if (mono_error_set_pending_exception (error))
- return;
- MONO_OBJECT_SETREF_INTERNAL (this_obj, LongTimePatterns, long_time_patterns);
-
- MonoArray *short_time_patterns = create_names_array_idx_dynamic (dfe->short_time_patterns,
- NUM_SHORT_TIME_PATTERNS, error);
- if (mono_error_set_pending_exception (error))
- return;
- MONO_OBJECT_SETREF_INTERNAL (this_obj, ShortTimePatterns, short_time_patterns);
- this_obj->FirstDayOfWeek = dfe->first_day_of_week;
- this_obj->CalendarWeekRule = dfe->calendar_week_rule;
+ SET_STR_FIELD (this_obj, AMDesignator, domain, idx2string (dfe->am_designator), error);
+ SET_STR_FIELD (this_obj, PMDesignator, domain, idx2string (dfe->pm_designator), error);
+ SET_STR_FIELD (this_obj, TimeSeparator, domain, idx2string (dfe->time_separator), error);
+
+#undef SET_STR_FIELD
+
+ arr = create_names_array_idx_dynamic (dfe->long_time_patterns,
+ NUM_LONG_TIME_PATTERNS, error);
+ return_if_nok (error);
+ MONO_HANDLE_SET (this_obj, LongTimePatterns, arr);
+ arr = create_names_array_idx_dynamic (dfe->short_time_patterns,
+ NUM_SHORT_TIME_PATTERNS, error);
+ return_if_nok (error);
+ MONO_HANDLE_SET (this_obj, ShortTimePatterns, arr);
+
+ MONO_HANDLE_SETVAL (this_obj, FirstDayOfWeek, guint32, dfe->first_day_of_week);
+ MONO_HANDLE_SETVAL (this_obj, CalendarWeekRule, guint32, dfe->calendar_week_rule);
}
gconstpointer
}
static MonoBoolean
-construct_culture (MonoCultureInfo *this_obj, const CultureInfoEntry *ci, MonoError *error)
+construct_culture (MonoCultureInfoHandle this_obj, const CultureInfoEntry *ci, MonoError *error)
{
MonoDomain *domain = mono_domain_get ();
- error_init (error);
-
- this_obj->lcid = ci->lcid;
+ mono_handle_setval (this_obj, lcid, ci->lcid);
-#define SET_STR(obj,field,domain,expr,err) do { \
- MonoString *_tmp_str = mono_string_new_checked ((domain), (expr), (err)); \
- return_val_if_nok (err, FALSE); \
- MONO_OBJECT_SETREF_INTERNAL ((obj), field, _tmp_str); \
+#define SET_STR_FIELD(obj,field,domain,expr,error) do { \
+ MonoStringHandle _str = mono_string_new_handle ((domain), (expr), (error)); \
+ return_val_if_nok (error, FALSE); \
+ MONO_HANDLE_SET ((obj), field, _str); \
} while (0)
- SET_STR (this_obj, name, domain, idx2string (ci->name), error);
- SET_STR (this_obj, englishname, domain, idx2string (ci->englishname), error);
- SET_STR (this_obj, nativename, domain, idx2string (ci->nativename), error);
- SET_STR (this_obj, win3lang, domain, idx2string (ci->win3lang), error);
- SET_STR (this_obj, iso3lang, domain, idx2string (ci->iso3lang), error);
- SET_STR (this_obj, iso2lang, domain, idx2string (ci->iso2lang), error);
+ SET_STR_FIELD (this_obj, name, domain, idx2string (ci->name), error);
+ SET_STR_FIELD (this_obj, englishname, domain, idx2string (ci->englishname), error);
+ SET_STR_FIELD (this_obj, nativename, domain, idx2string (ci->nativename), error);
+ SET_STR_FIELD (this_obj, win3lang, domain, idx2string (ci->win3lang), error);
+ SET_STR_FIELD (this_obj, iso3lang, domain, idx2string (ci->iso3lang), error);
+ SET_STR_FIELD (this_obj, iso2lang, domain, idx2string (ci->iso2lang), error);
// It's null for neutral cultures
- if (ci->territory > 0) {
- SET_STR (this_obj, territory, domain, idx2string (ci->territory), error);
- }
+ if (ci->territory > 0)
+ SET_STR_FIELD (this_obj, territory, domain, idx2string (ci->territory), error);
+
+#undef SET_STR_FIELD
- MonoArray *native_calendar_names = create_names_array_idx (ci->native_calendar_names, NUM_CALENDARS, error);
+ MonoArrayHandle native_calendar_names = create_names_array_idx (ci->native_calendar_names, NUM_CALENDARS, error);
return_val_if_nok (error, FALSE);
- MONO_OBJECT_SETREF_INTERNAL (this_obj, native_calendar_names, native_calendar_names);
- this_obj->parent_lcid = ci->parent_lcid;
- this_obj->datetime_index = ci->datetime_format_index;
- this_obj->number_index = ci->number_format_index;
- this_obj->calendar_type = ci->calendar_type;
- this_obj->text_info_data = &ci->text_info;
-#undef SET_STR
-
+ mono_handle_setref (this_obj, native_calendar_names, native_calendar_names);
+ mono_handle_setval (this_obj, parent_lcid, ci->parent_lcid);
+ mono_handle_setval (this_obj, datetime_index, ci->datetime_format_index);
+ mono_handle_setval (this_obj, number_index, ci->number_format_index);
+ mono_handle_setval (this_obj, calendar_type, ci->calendar_type);
+ mono_handle_setval (this_obj, text_info_data, &ci->text_info);
return TRUE;
}
static MonoBoolean
-construct_region (MonoRegionInfo *this_obj, const RegionInfoEntry *ri, MonoError *error)
+construct_region (MonoRegionInfoHandle this_obj, const RegionInfoEntry *ri, MonoError *error)
{
MonoDomain *domain = mono_domain_get ();
- error_init (error);
+ mono_handle_setval (this_obj, geo_id, ri->geo_id);
-#define SET_STR(obj,field,domain,expr,err) do { \
- MonoString *_tmp_str = mono_string_new_checked ((domain), (expr), (err)); \
- return_val_if_nok (err, FALSE); \
- MONO_OBJECT_SETREF_INTERNAL ((obj), field, _tmp_str); \
+#define SET_STR_FIELD(obj,field,domain,expr,error) do { \
+ MonoStringHandle _str = mono_string_new_handle ((domain), (expr), (error)); \
+ return_val_if_nok (error, FALSE); \
+ MONO_HANDLE_SET ((obj), field, _str); \
} while (0)
- this_obj->geo_id = ri->geo_id;
- SET_STR (this_obj, iso2name, domain, idx2string (ri->iso2name), error);
- SET_STR (this_obj, iso3name, domain, idx2string (ri->iso3name), error);
- SET_STR (this_obj, win3name, domain, idx2string (ri->win3name), error);
- SET_STR (this_obj, english_name, domain, idx2string (ri->english_name), error);
- SET_STR (this_obj, native_name, domain, idx2string (ri->native_name), error);
- SET_STR (this_obj, currency_symbol, domain, idx2string (ri->currency_symbol), error);
- SET_STR (this_obj, iso_currency_symbol, domain, idx2string (ri->iso_currency_symbol), error);
- SET_STR (this_obj, currency_english_name, domain, idx2string (ri->currency_english_name), error);
- SET_STR (this_obj, currency_native_name, domain, idx2string (ri->currency_native_name), error);
-
-#undef SET_STR
+ SET_STR_FIELD (this_obj, iso2name, domain, idx2string (ri->iso2name), error);
+ SET_STR_FIELD (this_obj, iso3name, domain, idx2string (ri->iso3name), error);
+ SET_STR_FIELD (this_obj, win3name, domain, idx2string (ri->win3name), error);
+ SET_STR_FIELD (this_obj, english_name, domain, idx2string (ri->english_name), error);
+ SET_STR_FIELD (this_obj, native_name, domain, idx2string (ri->native_name), error);
+ SET_STR_FIELD (this_obj, currency_symbol, domain, idx2string (ri->currency_symbol), error);
+ SET_STR_FIELD (this_obj, iso_currency_symbol, domain, idx2string (ri->iso_currency_symbol), error);
+ SET_STR_FIELD (this_obj, currency_english_name, domain, idx2string (ri->currency_english_name), error);
+ SET_STR_FIELD (this_obj, currency_native_name, domain, idx2string (ri->currency_native_name), error);
+
+#undef SET_STR_FIELD
return TRUE;
}
MonoStringHandle
ves_icall_System_Globalization_CultureInfo_get_current_locale_name (MonoError *error)
{
- error_init (error);
gchar *locale;
MonoDomain *domain;
locale = get_current_locale_name ();
if (locale == NULL)
- return MONO_HANDLE_CAST (MonoString, NULL_HANDLE);
+ return NULL_HANDLE_STRING;
domain = mono_domain_get ();
MonoStringHandle ret = mono_string_new_handle (domain, locale, error);
}
MonoBoolean
-ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_lcid (MonoCultureInfo *this_obj,
- gint lcid)
+ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_lcid (MonoCultureInfoHandle this_obj,
+ int lcid, MonoError *error)
{
- ERROR_DECL (error);
const CultureInfoEntry *ci;
ci = culture_info_entry_from_lcid (lcid);
if(ci == NULL)
return FALSE;
- if (!construct_culture (this_obj, ci, error)) {
- mono_error_set_pending_exception (error);
- return FALSE;
- }
- return TRUE;
+ return construct_culture (this_obj, ci, error);
}
MonoBoolean
-ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (MonoCultureInfo *this_obj,
- MonoString *name)
+ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (MonoCultureInfoHandle this_obj,
+ MonoStringHandle name, MonoError *error)
{
- ERROR_DECL (error);
const CultureInfoNameEntry *ne;
char *n;
- n = mono_string_to_utf8_checked_internal (name, error);
- if (mono_error_set_pending_exception (error))
- return FALSE;
+ n = mono_string_handle_to_utf8 (name, error);
+ return_val_if_nok (error, FALSE);
ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
sizeof (CultureInfoNameEntry), culture_name_locator);
}
g_free (n);
- if (!construct_culture (this_obj, &culture_entries [ne->culture_entry_index], error)) {
- mono_error_set_pending_exception (error);
- return FALSE;
- }
- return TRUE;
-}
-/*
-MonoBoolean
-ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_specific_name (MonoCultureInfo *ci,
- MonoString *name)
-{
- gchar *locale;
- gboolean ret;
-
- locale = mono_string_to_utf8 (name);
- ret = construct_culture_from_specific_name (ci, locale);
- g_free (locale);
-
- return ret;
+ return construct_culture (this_obj, &culture_entries [ne->culture_entry_index], error);
}
-*/
MonoBoolean
-ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (MonoRegionInfo *this_obj,
- MonoString *name)
+ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (MonoRegionInfoHandle this_obj,
+ MonoStringHandle name, MonoError *error)
{
- ERROR_DECL (error);
const RegionInfoNameEntry *ne;
char *n;
- n = mono_string_to_utf8_checked_internal (name, error);
- if (mono_error_set_pending_exception (error))
- return FALSE;
+ n = mono_string_handle_to_utf8 (name, error);
+ return_val_if_nok (error, FALSE);
ne = (const RegionInfoNameEntry *)mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
sizeof (RegionInfoNameEntry), region_name_locator);
}
g_free (n);
- MonoBoolean result = construct_region (this_obj, ®ion_entries [ne->region_entry_index], error);
- mono_error_set_pending_exception (error);
- return result;
+ return construct_region (this_obj, ®ion_entries [ne->region_entry_index], error);
}
-MonoArray*
+MonoArrayHandle
ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean neutral,
- MonoBoolean specific, MonoBoolean installed)
+ MonoBoolean specific, MonoBoolean installed,
+ MonoError *error)
{
- ERROR_DECL (error);
- MonoArray *ret;
+ MonoArrayHandle ret;
MonoClass *klass;
- MonoCultureInfo *culture;
MonoDomain *domain;
+ MonoCultureInfoHandle culture_h;
const CultureInfoEntry *ci;
gint i, len;
gboolean is_neutral;
if (neutral)
len++;
- ret = mono_array_new_checked (domain, klass, len, error);
+ ret = mono_array_new_handle (domain, klass, len, error);
goto_if_nok (error, fail);
if (len == 0)
len = 0;
if (neutral)
- mono_array_setref_internal (ret, len++, NULL);
+ len ++;
+ culture_h = MONO_HANDLE_NEW (MonoCultureInfo, NULL);
for (i = 0; i < NUM_CULTURE_ENTRIES; i++) {
ci = &culture_entries [i];
is_neutral = ci->territory == 0;
if ((neutral && is_neutral) || (specific && !is_neutral)) {
- culture = (MonoCultureInfo *) mono_object_new_checked (domain, klass, error);
+ MONO_HANDLE_ASSIGN_RAW (culture_h, mono_object_new_checked (domain, klass, error));
goto_if_nok (error, fail);
- mono_runtime_object_init_checked ((MonoObject *) culture, error);
+ mono_runtime_object_init_handle (MONO_HANDLE_CAST (MonoObject, culture_h), error);
goto_if_nok (error, fail);
- if (!construct_culture (culture, ci, error))
+ if (!construct_culture (culture_h, ci, error))
goto fail;
- culture->use_user_override = TRUE;
- mono_array_setref_internal (ret, len++, culture);
+ mono_handle_setval (culture_h, use_user_override, TRUE);
+ mono_array_handle_setref (ret, len, culture_h);
+ len ++;
}
}
return ret;
}
-static gint32 string_invariant_compare_char (gunichar2 c1, gunichar2 c2,
- gint32 options)
+static gint32
+string_invariant_compare_char (gunichar2 c1, gunichar2 c2,
+ gint32 options)
{
gint32 result;
}
}
-void ves_icall_System_Text_Normalization_load_normalization_resource (guint8 **argProps,
+void
+ves_icall_System_Text_Normalization_load_normalization_resource (guint8 **argProps,
guint8 **argMappedChars,
guint8 **argCharMapIndex,
guint8 **argHelperIndex,
guint8 **argCombiningClass,
MonoError *error)
{
- error_init (error);
#ifdef DISABLE_NORMALIZATION
mono_error_set_not_supported (error, "This runtime has been compiled without string normalization support.");
return;