add bool value to speed up primitives

This commit is contained in:
2025-08-29 12:58:02 +01:00
parent 0f0a3f5d31
commit c01dee80b0
5 changed files with 24 additions and 7 deletions

View File

@@ -398,6 +398,7 @@ ArgonObject *new_number_object(mpq_t number) {
add_field(object, "__class__", ARGON_NUMBER_TYPE);
object->type = TYPE_NUMBER;
object->value.as_number = mpq_new_gc_from(number);
object->as_bool = mpq_cmp_si(number, 0, 1) != 0;
return object;
}
@@ -409,6 +410,7 @@ ArgonObject *new_number_object_from_long(long n, unsigned long d) {
mpq_set_si(r, n, d);
object->type = TYPE_NUMBER;
object->value.as_number = mpq_new_gc_from(r);
object->as_bool = n!=0;
mpq_clear(r);
return object;
}
@@ -421,6 +423,7 @@ ArgonObject *new_number_object_from_double(double d) {
mpq_set_d(r, d);
object->type = TYPE_NUMBER;
object->value.as_number = mpq_new_gc_from(r);
object->as_bool = d!=0;
mpq_clear(r);
return object;
}

View File

@@ -21,6 +21,7 @@ ArgonObject *new_object() {
object->dict = createHashmap_GC();
add_field(object, "__class__", ARGON_TYPE_TYPE);
add_field(object, "__base__", BASE_CLASS);
object->as_bool = true;
return object;
}

View File

@@ -22,6 +22,7 @@ ArgonObject *new_string_object(char*data, size_t length) {
object->value.as_str.data = ar_alloc_atomic(length);
memcpy(object->value.as_str.data, data, length);
object->value.as_str.length = length;
object->as_bool = length;
return object;
}