1.1 --- a/templates/native.c Fri Dec 02 21:16:06 2016 +0100
1.2 +++ b/templates/native.c Fri Dec 02 22:26:53 2016 +0100
1.3 @@ -103,11 +103,11 @@
1.4
1.5 __attr __fn_native__int_add(__attr __args[])
1.6 {
1.7 - __attr * const self = &__args[1];
1.8 + __attr * const _data = &__args[1];
1.9 __attr * const other = &__args[2];
1.10 - /* self.__data__ and other.__data__ interpreted as int */
1.11 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.12 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.13 + /* _data and other interpreted as int */
1.14 + int i = _data->intvalue;
1.15 + int j = other->intvalue;
1.16
1.17 /* Return the new integer. */
1.18 /* NOTE: No overflow test applied. */
1.19 @@ -116,11 +116,11 @@
1.20
1.21 __attr __fn_native__int_sub(__attr __args[])
1.22 {
1.23 - __attr * const self = &__args[1];
1.24 + __attr * const _data = &__args[1];
1.25 __attr * const other = &__args[2];
1.26 - /* self.__data__ and other.__data__ interpreted as int */
1.27 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.28 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.29 + /* _data and other interpreted as int */
1.30 + int i = _data->intvalue;
1.31 + int j = other->intvalue;
1.32
1.33 /* Return the new integer. */
1.34 /* NOTE: No overflow test applied. */
1.35 @@ -129,11 +129,11 @@
1.36
1.37 __attr __fn_native__int_mul(__attr __args[])
1.38 {
1.39 - __attr * const self = &__args[1];
1.40 + __attr * const _data = &__args[1];
1.41 __attr * const other = &__args[2];
1.42 - /* self.__data__ and other.__data__ interpreted as int */
1.43 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.44 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.45 + /* _data and other interpreted as int */
1.46 + int i = _data->intvalue;
1.47 + int j = other->intvalue;
1.48
1.49 /* Return the new integer. */
1.50 /* NOTE: No overflow test applied. */
1.51 @@ -142,11 +142,11 @@
1.52
1.53 __attr __fn_native__int_div(__attr __args[])
1.54 {
1.55 - __attr * const self = &__args[1];
1.56 + __attr * const _data = &__args[1];
1.57 __attr * const other = &__args[2];
1.58 - /* self.__data__ and other.__data__ interpreted as int */
1.59 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.60 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.61 + /* _data and other interpreted as int */
1.62 + int i = _data->intvalue;
1.63 + int j = other->intvalue;
1.64
1.65 /* Return the new integer. */
1.66 /* NOTE: No overflow test applied. */
1.67 @@ -155,11 +155,11 @@
1.68
1.69 __attr __fn_native__int_mod(__attr __args[])
1.70 {
1.71 - __attr * const self = &__args[1];
1.72 + __attr * const _data = &__args[1];
1.73 __attr * const other = &__args[2];
1.74 - /* self.__data__ and other.__data__ interpreted as int */
1.75 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.76 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.77 + /* _data and other interpreted as int */
1.78 + int i = _data->intvalue;
1.79 + int j = other->intvalue;
1.80
1.81 /* Return the new integer. */
1.82 /* NOTE: No overflow test applied. */
1.83 @@ -168,9 +168,9 @@
1.84
1.85 __attr __fn_native__int_neg(__attr __args[])
1.86 {
1.87 - __attr * const self = &__args[1];
1.88 - /* self.__data__ interpreted as int */
1.89 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.90 + __attr * const _data = &__args[1];
1.91 + /* _data interpreted as int */
1.92 + int i = _data->intvalue;
1.93
1.94 /* Return the new integer. */
1.95 return __new_int(-i);
1.96 @@ -178,11 +178,11 @@
1.97
1.98 __attr __fn_native__int_pow(__attr __args[])
1.99 {
1.100 - __attr * const self = &__args[1];
1.101 + __attr * const _data = &__args[1];
1.102 __attr * const other = &__args[2];
1.103 - /* self.__data__ and other.__data__ interpreted as int */
1.104 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.105 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.106 + /* _data and other interpreted as int */
1.107 + int i = _data->intvalue;
1.108 + int j = other->intvalue;
1.109
1.110 /* Return the new integer. */
1.111 /* NOTE: No overflow test applied. */
1.112 @@ -191,11 +191,11 @@
1.113
1.114 __attr __fn_native__int_and(__attr __args[])
1.115 {
1.116 - __attr * const self = &__args[1];
1.117 + __attr * const _data = &__args[1];
1.118 __attr * const other = &__args[2];
1.119 - /* self.__data__ and other.__data__ interpreted as int */
1.120 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.121 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.122 + /* _data and other interpreted as int */
1.123 + int i = _data->intvalue;
1.124 + int j = other->intvalue;
1.125
1.126 /* Return the new integer. */
1.127 /* NOTE: No overflow test applied. */
1.128 @@ -204,11 +204,11 @@
1.129
1.130 __attr __fn_native__int_or(__attr __args[])
1.131 {
1.132 - __attr * const self = &__args[1];
1.133 + __attr * const _data = &__args[1];
1.134 __attr * const other = &__args[2];
1.135 - /* self.__data__ and other.__data__ interpreted as int */
1.136 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.137 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.138 + /* _data and other interpreted as int */
1.139 + int i = _data->intvalue;
1.140 + int j = other->intvalue;
1.141
1.142 /* Return the new integer. */
1.143 /* NOTE: No overflow test applied. */
1.144 @@ -217,11 +217,11 @@
1.145
1.146 __attr __fn_native__int_xor(__attr __args[])
1.147 {
1.148 - __attr * const self = &__args[1];
1.149 + __attr * const _data = &__args[1];
1.150 __attr * const other = &__args[2];
1.151 - /* self.__data__ and other.__data__ interpreted as int */
1.152 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.153 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.154 + /* _data and other interpreted as int */
1.155 + int i = _data->intvalue;
1.156 + int j = other->intvalue;
1.157
1.158 /* Return the new integer. */
1.159 /* NOTE: No overflow test applied. */
1.160 @@ -230,11 +230,11 @@
1.161
1.162 __attr __fn_native__int_lt(__attr __args[])
1.163 {
1.164 - __attr * const self = &__args[1];
1.165 + __attr * const _data = &__args[1];
1.166 __attr * const other = &__args[2];
1.167 - /* self.__data__ and other.__data__ interpreted as int */
1.168 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.169 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.170 + /* _data and other interpreted as int */
1.171 + int i = _data->intvalue;
1.172 + int j = other->intvalue;
1.173
1.174 /* Return a boolean result. */
1.175 return i < j ? __builtins___boolean_True : __builtins___boolean_False;
1.176 @@ -242,11 +242,11 @@
1.177
1.178 __attr __fn_native__int_gt(__attr __args[])
1.179 {
1.180 - __attr * const self = &__args[1];
1.181 + __attr * const _data = &__args[1];
1.182 __attr * const other = &__args[2];
1.183 - /* self.__data__ and other.__data__ interpreted as int */
1.184 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.185 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.186 + /* _data and other interpreted as int */
1.187 + int i = _data->intvalue;
1.188 + int j = other->intvalue;
1.189
1.190 /* Return a boolean result. */
1.191 return i > j ? __builtins___boolean_True : __builtins___boolean_False;
1.192 @@ -254,11 +254,11 @@
1.193
1.194 __attr __fn_native__int_eq(__attr __args[])
1.195 {
1.196 - __attr * const self = &__args[1];
1.197 + __attr * const _data = &__args[1];
1.198 __attr * const other = &__args[2];
1.199 - /* self.__data__ and other.__data__ interpreted as int */
1.200 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.201 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.202 + /* _data and other interpreted as int */
1.203 + int i = _data->intvalue;
1.204 + int j = other->intvalue;
1.205
1.206 /* Return a boolean result. */
1.207 return i == j ? __builtins___boolean_True : __builtins___boolean_False;
1.208 @@ -266,11 +266,11 @@
1.209
1.210 __attr __fn_native__int_ne(__attr __args[])
1.211 {
1.212 - __attr * const self = &__args[1];
1.213 + __attr * const _data = &__args[1];
1.214 __attr * const other = &__args[2];
1.215 - /* self.__data__ and other.__data__ interpreted as int */
1.216 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.217 - int j = __load_via_object(other->value, __pos___data__).intvalue;
1.218 + /* _data and other interpreted as int */
1.219 + int i = _data->intvalue;
1.220 + int j = other->intvalue;
1.221
1.222 /* Return a boolean result. */
1.223 return i != j ? __builtins___boolean_True : __builtins___boolean_False;
1.224 @@ -278,9 +278,9 @@
1.225
1.226 __attr __fn_native__int_str(__attr __args[])
1.227 {
1.228 - __attr * const self = &__args[1];
1.229 - /* self.__data__ interpreted as int */
1.230 - int i = __load_via_object(self->value, __pos___data__).intvalue;
1.231 + __attr * const _data = &__args[1];
1.232 + /* _data interpreted as int */
1.233 + int i = _data->intvalue;
1.234 int n = i != 0 ? (int) ceil(log10(abs(i)+1)) + 1 : 2;
1.235 char *s = (char *) __ALLOCATE(n, sizeof(char));
1.236
1.237 @@ -293,11 +293,11 @@
1.238
1.239 __attr __fn_native__str_add(__attr __args[])
1.240 {
1.241 - __attr * const self = &__args[1];
1.242 + __attr * const _data = &__args[1];
1.243 __attr * const other = &__args[2];
1.244 - /* self.__data__, other.__data__ interpreted as string */
1.245 - char *s = __load_via_object(self->value, __pos___data__).strvalue;
1.246 - char *o = __load_via_object(other->value, __pos___data__).strvalue;
1.247 + /* _data, other interpreted as string */
1.248 + char *s = _data->strvalue;
1.249 + char *o = other->strvalue;
1.250 int n = strlen(s) + strlen(o) + 1;
1.251 char *r = (char *) __ALLOCATE(n, sizeof(char));
1.252
1.253 @@ -310,11 +310,11 @@
1.254
1.255 __attr __fn_native__str_lt(__attr __args[])
1.256 {
1.257 - __attr * const self = &__args[1];
1.258 + __attr * const _data = &__args[1];
1.259 __attr * const other = &__args[2];
1.260 - /* self.__data__, other.__data__ interpreted as string */
1.261 - char *s = __load_via_object(self->value, __pos___data__).strvalue;
1.262 - char *o = __load_via_object(other->value, __pos___data__).strvalue;
1.263 + /* _data, other interpreted as string */
1.264 + char *s = _data->strvalue;
1.265 + char *o = other->strvalue;
1.266
1.267 /* NOTE: Using simple byte-level string operations. */
1.268 return strcmp(s, o) < 0 ? __builtins___boolean_True : __builtins___boolean_False;
1.269 @@ -322,11 +322,11 @@
1.270
1.271 __attr __fn_native__str_gt(__attr __args[])
1.272 {
1.273 - __attr * const self = &__args[1];
1.274 + __attr * const _data = &__args[1];
1.275 __attr * const other = &__args[2];
1.276 - /* self.__data__, other.__data__ interpreted as string */
1.277 - char *s = __load_via_object(self->value, __pos___data__).strvalue;
1.278 - char *o = __load_via_object(other->value, __pos___data__).strvalue;
1.279 + /* _data, other interpreted as string */
1.280 + char *s = _data->strvalue;
1.281 + char *o = other->strvalue;
1.282
1.283 /* NOTE: Using simple byte-level string operations. */
1.284 return strcmp(s, o) > 0 ? __builtins___boolean_True : __builtins___boolean_False;
1.285 @@ -334,11 +334,11 @@
1.286
1.287 __attr __fn_native__str_eq(__attr __args[])
1.288 {
1.289 - __attr * const self = &__args[1];
1.290 + __attr * const _data = &__args[1];
1.291 __attr * const other = &__args[2];
1.292 - /* self.__data__, other.__data__ interpreted as string */
1.293 - char *s = __load_via_object(self->value, __pos___data__).strvalue;
1.294 - char *o = __load_via_object(other->value, __pos___data__).strvalue;
1.295 + /* _data, other interpreted as string */
1.296 + char *s = _data->strvalue;
1.297 + char *o = other->strvalue;
1.298
1.299 /* NOTE: Using simple byte-level string operations. */
1.300 return strcmp(s, o) == 0 ? __builtins___boolean_True : __builtins___boolean_False;
1.301 @@ -346,9 +346,9 @@
1.302
1.303 __attr __fn_native__str_len(__attr __args[])
1.304 {
1.305 - __attr * const self = &__args[1];
1.306 - /* self.__data__ interpreted as string */
1.307 - char *s = __load_via_object(self->value, __pos___data__).strvalue;
1.308 + __attr * const _data = &__args[1];
1.309 + /* _data interpreted as string */
1.310 + char *s = _data->strvalue;
1.311
1.312 /* Return the new integer. */
1.313 return __new_int(strlen(s));
1.314 @@ -356,29 +356,29 @@
1.315
1.316 __attr __fn_native__str_nonempty(__attr __args[])
1.317 {
1.318 - __attr * const self = &__args[1];
1.319 - /* self.__data__ interpreted as string */
1.320 - char *s = __load_via_object(self->value, __pos___data__).strvalue;
1.321 + __attr * const _data = &__args[1];
1.322 + /* _data interpreted as string */
1.323 + char *s = _data->strvalue;
1.324
1.325 return strlen(s) ? __builtins___boolean_True : __builtins___boolean_False;
1.326 }
1.327
1.328 __attr __fn_native__str_ord(__attr __args[])
1.329 {
1.330 - __attr * const self = &__args[1];
1.331 - /* self.__data__ interpreted as string */
1.332 - char *s = __load_via_object(self->value, __pos___data__).strvalue;
1.333 + __attr * const _data = &__args[1];
1.334 + /* _data interpreted as string */
1.335 + char *s = _data->strvalue;
1.336
1.337 return __new_int((unsigned int) s[0]);
1.338 }
1.339
1.340 __attr __fn_native__str_substr(__attr __args[])
1.341 {
1.342 - __attr * const self = &__args[1];
1.343 + __attr * const _data = &__args[1];
1.344 __attr * const start = &__args[2];
1.345 __attr * const size = &__args[3];
1.346 - /* self.__data__ interpreted as string */
1.347 - char *s = __load_via_object(self->value, __pos___data__).strvalue, *sub;
1.348 + /* _data interpreted as string */
1.349 + char *s = _data->strvalue, *sub;
1.350 /* start.__data__ interpreted as int */
1.351 int i = __load_via_object(start->value, __pos___data__).intvalue;
1.352 /* size.__data__ interpreted as int */
1.353 @@ -403,10 +403,10 @@
1.354
1.355 __attr __fn_native__list_setsize(__attr __args[])
1.356 {
1.357 - __attr * const self = &__args[1];
1.358 + __attr * const _data = &__args[1];
1.359 __attr * const size = &__args[2];
1.360 - /* self.__data__ interpreted as list */
1.361 - __fragment *data = __load_via_object(self->value, __pos___data__).seqvalue;
1.362 + /* _data interpreted as list */
1.363 + __fragment *data = _data->seqvalue;
1.364 /* size.__data__ interpreted as int */
1.365 unsigned int n = __load_via_object(size->value, __pos___data__).intvalue;
1.366
1.367 @@ -432,9 +432,9 @@
1.368 {
1.369 __attr * const self = &__args[1];
1.370 __attr * const other = &__args[2];
1.371 - /* self.__data__, other.__data__ interpreted as list */
1.372 + /* self.__data__, other interpreted as list */
1.373 __fragment *data = __load_via_object(self->value, __pos___data__).seqvalue;
1.374 - __fragment *other_data = __load_via_object(other->value, __pos___data__).seqvalue;
1.375 + __fragment *other_data = other->seqvalue;
1.376 __fragment *newdata = data;
1.377 unsigned int size = data->size, capacity = data->capacity;
1.378 unsigned int other_size = other_data->size;
1.379 @@ -461,9 +461,9 @@
1.380
1.381 __attr __fn_native__list_len(__attr __args[])
1.382 {
1.383 - __attr * const self = &__args[1];
1.384 - /* self.__data__ interpreted as fragment */
1.385 - unsigned int size = __load_via_object(self->value, __pos___data__).seqvalue->size;
1.386 + __attr * const _data = &__args[1];
1.387 + /* _data interpreted as fragment */
1.388 + unsigned int size = _data->seqvalue->size;
1.389
1.390 /* Return the new integer. */
1.391 return __new_int(size);
1.392 @@ -471,17 +471,17 @@
1.393
1.394 __attr __fn_native__list_nonempty(__attr __args[])
1.395 {
1.396 - __attr * const self = &__args[1];
1.397 + __attr * const _data = &__args[1];
1.398
1.399 - return __load_via_object(self->value, __pos___data__).seqvalue->size ? __builtins___boolean_True : __builtins___boolean_False;
1.400 + return _data->seqvalue->size ? __builtins___boolean_True : __builtins___boolean_False;
1.401 }
1.402
1.403 __attr __fn_native__list_element(__attr __args[])
1.404 {
1.405 - __attr * const self = &__args[1];
1.406 + __attr * const _data = &__args[1];
1.407 __attr * const index = &__args[2];
1.408 - /* self.__data__ interpreted as fragment */
1.409 - __attr *elements = __load_via_object(self->value, __pos___data__).seqvalue->attrs;
1.410 + /* _data interpreted as fragment */
1.411 + __attr *elements = _data->seqvalue->attrs;
1.412 /* index.__data__ interpreted as int */
1.413 int i = __load_via_object(index->value, __pos___data__).intvalue;
1.414
1.415 @@ -490,11 +490,11 @@
1.416
1.417 __attr __fn_native__list_setelement(__attr __args[])
1.418 {
1.419 - __attr * const self = &__args[1];
1.420 + __attr * const _data = &__args[1];
1.421 __attr * const index = &__args[2];
1.422 __attr * const value = &__args[3];
1.423 - /* self.__data__ interpreted as fragment */
1.424 - __attr *elements = __load_via_object(self->value, __pos___data__).seqvalue->attrs;
1.425 + /* _data interpreted as fragment */
1.426 + __attr *elements = _data->seqvalue->attrs;
1.427 /* index.__data__ interpreted as int */
1.428 int i = __load_via_object(index->value, __pos___data__).intvalue;
1.429
1.430 @@ -679,9 +679,9 @@
1.431
1.432 __attr __fn_native__buffer_str(__attr __args[])
1.433 {
1.434 - __attr * const self = &__args[1];
1.435 - /* self.__data__ interpreted as buffer */
1.436 - __fragment *data = __load_via_object(self->value, __pos___data__).seqvalue;
1.437 + __attr * const _data = &__args[1];
1.438 + /* _data interpreted as buffer */
1.439 + __fragment *data = _data->seqvalue;
1.440 unsigned int size = 0, i, j, n;
1.441 char *s, *o;
1.442