Merge pull request #93750 from adamscott/add-bigint-support-on-js-value-conversion

Add `bigint` support on JS value conversion
This commit is contained in:
Rémi Verschelde 2024-07-04 11:31:58 +02:00
commit 01c24ff862
No known key found for this signature in database
GPG Key ID: C3336907360768E1
1 changed files with 12 additions and 4 deletions

View File

@ -81,11 +81,16 @@ const GodotJSWrapper = {
case 0:
return null;
case 1:
return !!GodotRuntime.getHeapValue(val, 'i64');
case 2:
return GodotRuntime.getHeapValue(val, 'i64');
return Boolean(GodotRuntime.getHeapValue(val, 'i64'));
case 2: {
// `heap_value` may be a bigint.
const heap_value = GodotRuntime.getHeapValue(val, 'i64');
return heap_value >= Number.MIN_SAFE_INTEGER && heap_value <= Number.MAX_SAFE_INTEGER
? Number(heap_value)
: heap_value;
}
case 3:
return GodotRuntime.getHeapValue(val, 'double');
return Number(GodotRuntime.getHeapValue(val, 'double'));
case 4:
return GodotRuntime.parseString(GodotRuntime.getHeapValue(val, '*'));
case 24: // OBJECT
@ -110,6 +115,9 @@ const GodotJSWrapper = {
}
GodotRuntime.setHeapValue(p_exchange, p_val, 'double');
return 3; // FLOAT
} else if (type === 'bigint') {
GodotRuntime.setHeapValue(p_exchange, p_val, 'i64');
return 2; // INT
} else if (type === 'string') {
const c_str = GodotRuntime.allocString(p_val);
GodotRuntime.setHeapValue(p_exchange, c_str, '*');