* src/vm/jit/stack.c (GET_NEW_VAR): Fixed macro argument.
[cacao.git] / src / vm / properties.c
index fb91c9cb87be2ee22ef71857fbfbf2c76f7cd1bf..3b093650446068d04caede416319c7cb068a415d 100644 (file)
@@ -28,7 +28,7 @@
 
    Changes:
 
-   $Id: properties.c 4552 2006-03-04 17:15:44Z twisti $
+   $Id: properties.c 5049 2006-06-23 12:07:26Z twisti $
 
 */
 
@@ -79,9 +79,7 @@ static methodinfo *mput;
 
 bool properties_init(void)
 {
-       list_properties = NEW(list);
-
-       list_init(list_properties, OFFSET(list_properties_entry, linkage));
+       list_properties = list_create(OFFSET(list_properties_entry, linkage));
 
        /* everything's ok */
 
@@ -131,7 +129,7 @@ void properties_add(char *key, char *value)
        p->key   = key;
        p->value = value;
 
-       list_addlast(list_properties, p);
+       list_add_last_unsynced(list_properties, p);
 }
 
 
@@ -145,8 +143,11 @@ char *properties_get(char *key)
 {
        list_properties_entry *p;
 
-       for (p = list_first(list_properties); p != NULL;
-                p = list_next(list_properties, p)) {
+       /* We search backwards, so we get the newest entry for a key, as
+          the list may contain more than one entry for a specific key. */
+
+       for (p = list_last(list_properties); p != NULL;
+                p = list_prev(list_properties, p)) {
                if (strcmp(p->key, key) == 0)
                        return p->value;
        }
@@ -166,10 +167,10 @@ void properties_system_add(char *key, char *value)
        java_lang_String *k;
        java_lang_String *v;
 
-       k = javastring_new_char(key);
-       v = javastring_new_char(value);
+       k = javastring_new_from_utf_string(key);
+       v = javastring_new_from_utf_string(value);
 
-       (void) vm_call_method_intern(mput, psystem, k, v, NULL);
+       (void) vm_call_method(mput, (java_objectheader *) psystem, k, v);
 }