Skip to content

Commit 5460a0d

Browse files
committed
Add a backwards compatibility directive for Emscripten < 3.1.35
1 parent 8d227c4 commit 5460a0d

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

lib/lib_webgpu.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ mergeInto(LibraryManager.library, {
4343
return x;
4444
},
4545

46+
////////////////////////////////////////////////////////////////
47+
// Backwards compatibility for building with Emscripten < 3.1.35
48+
$stringToUTF8Array: function(str, heap, outIdx, maxBytesToWrite) {
49+
#if CAN_ADDRESS_2GB
50+
outIdx >>>= 0;
51+
#endif
52+
if (!(maxBytesToWrite > 0)) return 0; var startIdx = outIdx; var endIdx = outIdx + maxBytesToWrite - 1; for (var i = 0; i < str.length; ++i) { var u = str.charCodeAt(i); if (u >= 0xD800 && u <= 0xDFFF) { var u1 = str.charCodeAt(++i); u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); } if (u <= 0x7F) { if (outIdx >= endIdx) break; heap[outIdx++] = u; } else if (u <= 0x7FF) { if (outIdx + 1 >= endIdx) break; heap[outIdx++] = 0xC0 | (u >> 6); heap[outIdx++] = 0x80 | (u & 63); } else if (u <= 0xFFFF) { if (outIdx + 2 >= endIdx) break; heap[outIdx++] = 0xE0 | (u >> 12); heap[outIdx++] = 0x80 | ((u >> 6) & 63); heap[outIdx++] = 0x80 | (u & 63); } else { if (outIdx + 3 >= endIdx) break; heap[outIdx++] = 0xF0 | (u >> 18); heap[outIdx++] = 0x80 | ((u >> 12) & 63); heap[outIdx++] = 0x80 | ((u >> 6) & 63); heap[outIdx++] = 0x80 | (u & 63); } } heap[outIdx] = 0; return outIdx - startIdx; },
53+
$stringToUTF8__deps: ['$stringToUTF8Array'],
54+
$stringToUTF8: function(str, outPtr, maxBytesToWrite) { return stringToUTF8Array(str, {{{ heapAndOffset('HEAPU8', 'outPtr') }}}, maxBytesToWrite); },
55+
$lengthBytesUTF8: function(str) { var len = 0; for (var i = 0; i < str.length; ++i) { var c = str.charCodeAt(i); if (c <= 0x7F) { len++; } else if (c <= 0x7FF) { len += 2; } else if (c >= 0xD800 && c <= 0xDFFF) { len += 4; ++i; } else { len += 3; } } return len; },
56+
////////////////////////////////////////////////////////////////
57+
4658
// Stores a ID->WebGPU object mapping registry of global top-level WebGPU objects.
4759
$wgpu: {},
4860

0 commit comments

Comments
 (0)