1.1 --- a/templates/native/common.c Tue Sep 05 00:27:39 2023 +0200
1.2 +++ b/templates/native/common.c Tue Sep 05 01:24:01 2023 +0200
1.3 @@ -30,9 +30,9 @@
1.4 {
1.5 /* Create a new string and mutate the __data__, __size__ and __key__ attributes. */
1.6 __attr attr = __NEWINSTANCE(__builtins___str_str);
1.7 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(attr), __data__), (__attr) {.strvalue=s});
1.8 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(attr), __size__), __INTVALUE(size));
1.9 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(attr), __key__), __NULL);
1.10 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(attr), __data__), (__attr) {.strvalue=s});
1.11 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(attr), __size__), __INTVALUE(size));
1.12 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(attr), __key__), __NULL);
1.13 return attr;
1.14 }
1.15
1.16 @@ -40,7 +40,7 @@
1.17 {
1.18 /* Create a new list and mutate the __data__ attribute. */
1.19 __attr attr = __NEWINSTANCE(__builtins___list_list);
1.20 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(attr), __data__), (__attr) {.seqvalue=f});
1.21 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(attr), __data__), (__attr) {.seqvalue=f});
1.22 return attr;
1.23 }
1.24
2.1 --- a/templates/native/list.c Tue Sep 05 00:27:39 2023 +0200
2.2 +++ b/templates/native/list.c Tue Sep 05 01:24:01 2023 +0200
2.3 @@ -56,7 +56,7 @@
2.4
2.5 /* Replace the __data__ attribute if appropriate. */
2.6 if (newdata != data)
2.7 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(self), __data__), ((__attr) {.seqvalue=newdata}));
2.8 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(self), __data__), ((__attr) {.seqvalue=newdata}));
2.9 return __builtins___none_None;
2.10 }
2.11
2.12 @@ -84,7 +84,7 @@
2.13
2.14 /* Replace the __data__ attribute if appropriate. */
2.15 if (newdata != data)
2.16 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(self), __data__), ((__attr) {.seqvalue=newdata}));
2.17 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(self), __data__), ((__attr) {.seqvalue=newdata}));
2.18 return __builtins___none_None;
2.19 }
2.20
3.1 --- a/templates/ops.h Tue Sep 05 00:27:39 2023 +0200
3.2 +++ b/templates/ops.h Tue Sep 05 01:24:01 2023 +0200
3.3 @@ -46,6 +46,8 @@
3.4 #define __load_via_attr_ref(ATTR) (*(ATTR))
3.5 #define __store_via_attr_ref(ATTR, VALUE) __set_attr(ATTR, VALUE)
3.6
3.7 +#define __store_via_attr_ref__(ATTR, VALUE) (*(ATTR) = VALUE)
3.8 +
3.9 /* Direct retrieval operations, returning attributes. */
3.10
3.11 __attr __load_via_class__(__ref obj, int pos);
4.1 --- a/templates/progops.c Tue Sep 05 00:27:39 2023 +0200
4.2 +++ b/templates/progops.c Tue Sep 05 01:24:01 2023 +0200
4.3 @@ -32,7 +32,7 @@
4.4 {
4.5 obj->table = table;
4.6 obj->pos = __INSTANCEPOS;
4.7 - __store_via_attr_ref(__get_object_attr_ref(obj, __class__), __ATTRVALUE(cls));
4.8 + __store_via_attr_ref__(__get_object_attr_ref(obj, __class__), __ATTRVALUE(cls));
4.9 }
4.10
4.11 __attr __new(const __table * table, __ref cls, size_t size, int immutable)
4.12 @@ -81,7 +81,7 @@
4.13
4.14 /* Store a reference to the data in the object's __data__ attribute. */
4.15
4.16 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(self), __data__), (__attr) {.seqvalue=data});
4.17 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(self), __data__), (__attr) {.seqvalue=data});
4.18 __newdata_sequence(number, data, args);
4.19 return self;
4.20 }
4.21 @@ -97,7 +97,7 @@
4.22
4.23 /* Store a reference to the data in the object's __data__ attribute. */
4.24
4.25 - __store_via_attr_ref(__get_object_attr_ref(__VALUE(self), __data__), (__attr) {.seqvalue=data});
4.26 + __store_via_attr_ref__(__get_object_attr_ref(__VALUE(self), __data__), (__attr) {.seqvalue=data});
4.27 __newdata_sequence(number, data, args);
4.28 return self;
4.29 }
4.30 @@ -315,7 +315,7 @@
4.31
4.32 void __SETDEFAULT(__ref obj, int pos, __attr value)
4.33 {
4.34 - __store_via_attr_ref(__get_object_attr_ref__(obj, __FUNCTION_INSTANCE_SIZE + pos), value);
4.35 + __store_via_attr_ref__(__get_object_attr_ref__(obj, __FUNCTION_INSTANCE_SIZE + pos), value);
4.36 }
4.37
4.38 __attr __GETDEFAULT(__ref obj, int pos)