Emscripten fixes

This commit is contained in:
Joshua Granick
2023-05-19 23:10:16 -07:00
parent df2ae53ad3
commit eec6e5e0fa
5 changed files with 47 additions and 48 deletions

View File

@@ -55,7 +55,7 @@ class Bytes
return untyped $sget(b, pos);
#elseif flash
return b[pos];
#elseif cpp
#elseif (cpp || emscripten)
return untyped b[pos];
#elseif java
return untyped b[pos] & 0xFF;
@@ -72,7 +72,7 @@ class Bytes
untyped $sset(b, pos, v);
#elseif flash
b[pos] = v;
#elseif cpp
#elseif (cpp || emscripten)
untyped b[pos] = v;
#elseif java
b[pos] = cast v;
@@ -104,7 +104,7 @@ class Bytes
cs.system.Array.Copy(src.b, srcpos, b, pos, len);
#elseif python
python.Syntax.code("self.b[{0}:{0}+{1}] = src.b[srcpos:srcpos+{1}]", pos, len);
#elseif cpp
#elseif (cpp || emscripten)
b.blit(pos, src.b, srcpos, len);
#else
var b1 = b;
@@ -136,7 +136,7 @@ class Bytes
pos += len & ~3;
for (i in 0...len & 3)
set(pos++, value);
#elseif cpp
#elseif (cpp || emscripten)
untyped __global__.__hxcpp_memory_memset(b, pos, len, value);
#else
for (i in 0...len)
@@ -206,7 +206,7 @@ class Bytes
return length - other.length;
// #elseif cs
// TODO: memcmp if unsafe flag is on
#elseif cpp
#elseif (cpp || emscripten)
return b.memcmp(other.b);
#else
var b1 = b;
@@ -232,7 +232,7 @@ class Bytes
#elseif flash
b.position = pos;
return b.readDouble();
#elseif cpp
#elseif (cpp || emscripten)
if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds;
return untyped __global__.__hxcpp_memory_get_double(b, pos);
#else
@@ -254,7 +254,7 @@ class Bytes
#elseif flash
b.position = pos;
return b.readFloat();
#elseif cpp
#elseif (cpp || emscripten)
if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds;
return untyped __global__.__hxcpp_memory_get_float(b, pos);
#else
@@ -278,7 +278,7 @@ class Bytes
#elseif flash
b.position = pos;
b.writeDouble(v);
#elseif cpp
#elseif (cpp || emscripten)
if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds;
untyped __global__.__hxcpp_memory_set_double(b, pos, v);
#else
@@ -304,7 +304,7 @@ class Bytes
#elseif flash
b.position = pos;
b.writeFloat(v);
#elseif cpp
#elseif (cpp || emscripten)
if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds;
untyped __global__.__hxcpp_memory_set_float(b, pos, v);
#else
@@ -398,7 +398,7 @@ class Bytes
#elseif flash
b.position = pos;
return b.readUTFBytes(len);
#elseif cpp
#elseif (cpp || emscripten)
var result:String = "";
untyped __global__.__hxcpp_string_of_bytes(b, result, pos, len);
return result;
@@ -510,7 +510,7 @@ class Bytes
var b = new flash.utils.ByteArray();
b.length = length;
return new Bytes(length, b);
#elseif cpp
#elseif (cpp || emscripten)
var a = new BytesData();
if (length > 0) cpp.NativeArray.setSize(a, length);
return new Bytes(length, a);
@@ -540,7 +540,7 @@ class Bytes
var b = new flash.utils.ByteArray();
b.writeUTFBytes(s);
return new Bytes(b.length, b);
#elseif cpp
#elseif (cpp || emscripten)
var a = new BytesData();
untyped __global__.__hxcpp_bytes_of_string(a, s);
return new Bytes(a.length, a);
@@ -638,7 +638,7 @@ class Bytes
return untyped __dollar__sget(b, pos);
#elseif flash
return b[pos];
#elseif cpp
#elseif (cpp || emscripten)
return untyped b.unsafeGet(pos);
#elseif java
return untyped b[pos] & 0xFF;

View File

@@ -7,7 +7,7 @@ import lime.app.Event;
#if haxe4
import sys.thread.Deque;
import sys.thread.Thread;
#elseif cpp
#elseif (cpp || emscripten)
import cpp.vm.Deque;
import cpp.vm.Thread;
#elseif neko
@@ -30,7 +30,7 @@ class ThreadPool
public var onProgress = new Event<Dynamic->Void>();
public var onRun = new Event<Dynamic->Void>();
#if (cpp || neko)
#if (cpp || neko || emscripten)
@:noCompletion private var __synchronous:Bool;
@:noCompletion private var __workCompleted:Int;
@:noCompletion private var __workIncoming = new Deque<ThreadPoolMessage>();
@@ -45,7 +45,7 @@ class ThreadPool
currentThreads = 0;
#if (cpp || neko)
#if (cpp || neko || emscripten)
__workQueued = 0;
__workCompleted = 0;
#end
@@ -67,7 +67,7 @@ class ThreadPool
// }
public function queue(state:Dynamic = null):Void
{
#if (cpp || neko)
#if (cpp || neko || emscripten)
// TODO: Better way to handle this?
if (Application.current != null && Application.current.window != null && !__synchronous)
@@ -98,7 +98,7 @@ class ThreadPool
public function sendComplete(state:Dynamic = null):Void
{
#if (cpp || neko)
#if (cpp || neko || emscripten)
if (!__synchronous)
{
__workResult.add(new ThreadPoolMessage(COMPLETE, state));
@@ -111,7 +111,7 @@ class ThreadPool
public function sendError(state:Dynamic = null):Void
{
#if (cpp || neko)
#if (cpp || neko || emscripten)
if (!__synchronous)
{
__workResult.add(new ThreadPoolMessage(ERROR, state));
@@ -124,7 +124,7 @@ class ThreadPool
public function sendProgress(state:Dynamic = null):Void
{
#if (cpp || neko)
#if (cpp || neko || emscripten)
if (!__synchronous)
{
__workResult.add(new ThreadPoolMessage(PROGRESS, state));
@@ -137,7 +137,7 @@ class ThreadPool
@:noCompletion private function runWork(state:Dynamic = null):Void
{
#if (cpp || neko)
#if (cpp || neko || emscripten)
if (!__synchronous)
{
__workResult.add(new ThreadPoolMessage(WORK, state));
@@ -150,7 +150,7 @@ class ThreadPool
doWork.dispatch(state);
}
#if (cpp || neko)
#if (cpp || neko || emscripten)
@:noCompletion private function __doWork():Void
{
while (true)