Changes: Christian Thalinger
Edwin Steiner
- $Id: string.c 4921 2006-05-15 14:24:36Z twisti $
+ $Id: string.c 5123 2006-07-12 21:45:34Z twisti $
*/
#include "mm/memory.h"
#include "native/include/java_lang_String.h"
+
+#if defined(ENABLE_THREADS)
+# include "threads/native/lock.h"
+#else
+# include "threads/none/lock.h"
+#endif
+
+#include "vm/builtin.h"
#include "vm/exceptions.h"
#include "vm/loader.h"
#include "vm/options.h"
*******************************************************************************/
-utf *javastring_toutf(java_lang_String *string, bool isclassname)
+utf *javastring_toutf(java_lang_String *s, bool isclassname)
{
- java_lang_String *str = (java_lang_String *) string;
+ if (s == NULL)
+ return utf_null;
- return utf_new_u2(str->value->data + str->offset, str->count, isclassname);
+ return utf_new_u2(s->value->data + s->offset, s->count, isclassname);
}
s4 javastring_strlen(java_lang_String *s)
{
- if (!s)
+ if (s == NULL)
return 0;
return s->count;
u4 slot;
u2 i;
-#if defined(ENABLE_THREADS)
- builtin_monitorenter(lock_hashtable_string);
-#endif
+ LOCK_MONITOR_ENTER(lock_hashtable_string);
/* find location in hashtable */
if (!copymode)
mem_free(a, sizeof(java_chararray) + sizeof(u2) * (length - 1) + 10);
-#if defined(ENABLE_THREADS)
- builtin_monitorexit(lock_hashtable_string);
-#endif
+ LOCK_MONITOR_EXIT(lock_hashtable_string);
return (java_objectheader *) js;
}
/* if we use eager loading, we have to check loaded String class */
if (opt_eager)
- list_addfirst(&unlinkedclasses, class_java_lang_String);
+ list_add_first(&unlinkedclasses, class_java_lang_String);
/* create new javastring */
hashtable_string = newhash;
}
-#if defined(ENABLE_THREADS)
- builtin_monitorexit(lock_hashtable_string);
-#endif
+ LOCK_MONITOR_EXIT(lock_hashtable_string);
return (java_objectheader *) js;
}