some wasm experiments
This commit is contained in:
		@ -476,7 +476,7 @@ int moo_inttoooi (moo_t* moo, moo_oop_t x, moo_ooi_t* i)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* do nothing. required macros are defined in moo.h */
 | 
						/* do nothing. required macros are defined in moo.h */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#elif (MOO_SIZEOF_UINTMAX_T == MOO_SIZEOF_OOW_T * 2)
 | 
					#elif (MOO_SIZEOF_UINTMAX_T == MOO_SIZEOF_OOW_T * 2) || (MOO_SIZEOF_UINTMAX_T == MOO_SIZEOF_OOW_T * 4)
 | 
				
			||||||
static MOO_INLINE int bigint_to_uintmax_noseterr (moo_t* moo, moo_oop_t num, moo_uintmax_t* w)
 | 
					static MOO_INLINE int bigint_to_uintmax_noseterr (moo_t* moo, moo_oop_t num, moo_uintmax_t* w)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	MOO_ASSERT (moo, MOO_OOP_IS_POINTER(num));
 | 
						MOO_ASSERT (moo, MOO_OOP_IS_POINTER(num));
 | 
				
			||||||
@ -492,9 +492,25 @@ static MOO_INLINE int bigint_to_uintmax_noseterr (moo_t* moo, moo_oop_t num, moo
 | 
				
			|||||||
			goto done;
 | 
								goto done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		case 2:
 | 
							case 2:
 | 
				
			||||||
			*w = ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 0) << MOO_LIW_BITS) | MOO_OBJ_GET_WORD_VAL(num, 1);
 | 
								*w = ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 0) << MOO_LIW_BITS) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 1));
 | 
				
			||||||
			goto done;
 | 
								goto done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#if (MOO_SIZEOF_UINTMAX_T >= MOO_SIZEOF_OOW_T * 4)
 | 
				
			||||||
 | 
							case 3:
 | 
				
			||||||
 | 
								*w = ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 0) << (MOO_LIW_BITS * 2)) | 
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 1) << (MOO_LIW_BITS * 1)) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 2))
 | 
				
			||||||
 | 
								goto done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case 4:
 | 
				
			||||||
 | 
								*w = ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 0) << (MOO_LIW_BITS * 3)) | 
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 1) << (MOO_LIW_BITS * 2)) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 2) << (MOO_LIW_BITS * 1)) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_WORD_VAL(num, 3))
 | 
				
			||||||
 | 
								goto done;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
			return 0; /* not convertable */
 | 
								return 0; /* not convertable */
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -504,16 +520,39 @@ static MOO_INLINE int bigint_to_uintmax_noseterr (moo_t* moo, moo_oop_t num, moo
 | 
				
			|||||||
	switch (MOO_OBJ_GET_SIZE(num))
 | 
						switch (MOO_OBJ_GET_SIZE(num))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		case 2:
 | 
							case 2:
 | 
				
			||||||
			*w = ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 0) << MOO_LIW_BITS) | MOO_OBJ_GET_HALFWORD_VAL(num, 1);
 | 
								*w = ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 0) << MOO_LIW_BITS) | 
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 1));
 | 
				
			||||||
			goto done;
 | 
								goto done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		case 4:
 | 
							case 4:
 | 
				
			||||||
			*w = ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 0) << MOO_LIW_BITS * 3) | 
 | 
								*w = ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 0) << MOO_LIW_BITS * 3) | 
 | 
				
			||||||
			     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 1) << MOO_LIW_BITS * 2) |
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 1) << MOO_LIW_BITS * 2) |
 | 
				
			||||||
			     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 2) << MOO_LIW_BITS * 1) |
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 2) << MOO_LIW_BITS * 1) |
 | 
				
			||||||
			     MOO_OBJ_GET_HALFWORD_VAL(num, 3);
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 3));
 | 
				
			||||||
			goto done;
 | 
								goto done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#if (MOO_SIZEOF_UINTMAX_T >= MOO_SIZEOF_OOW_T * 4)
 | 
				
			||||||
 | 
							case 6:
 | 
				
			||||||
 | 
								*w = ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 0) << MOO_LIW_BITS * 5) | 
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 1) << MOO_LIW_BITS * 4) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 2) << MOO_LIW_BITS * 3) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 3) << MOO_LIW_BITS * 2) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 4) << MOO_LIW_BITS * 1) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 5));
 | 
				
			||||||
 | 
								goto done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case 8:
 | 
				
			||||||
 | 
								*w = ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 0) << MOO_LIW_BITS * 7) | 
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 1) << MOO_LIW_BITS * 6) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 2) << MOO_LIW_BITS * 5) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 3) << MOO_LIW_BITS * 4) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 4) << MOO_LIW_BITS * 3) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 5) << MOO_LIW_BITS * 2) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 6) << MOO_LIW_BITS * 1) |
 | 
				
			||||||
 | 
								     ((moo_uintmax_t)MOO_OBJ_GET_HALFWORD_VAL(num, 7));
 | 
				
			||||||
 | 
								goto done;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
			return 0; /* not convertable */
 | 
								return 0; /* not convertable */
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -115,8 +115,26 @@ MOO_EXPORT int moo_compilestd(
 | 
				
			|||||||
	const moo_iostd_t* in,
 | 
						const moo_iostd_t* in,
 | 
				
			||||||
	moo_oow_t          count
 | 
						moo_oow_t          count
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MOO_EXPORT int moo_compilefileb (
 | 
				
			||||||
 | 
						moo_t*           moo, 
 | 
				
			||||||
 | 
						const moo_bch_t* path
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MOO_EXPORT int moo_compilefileu (
 | 
				
			||||||
 | 
						moo_t*           moo, 
 | 
				
			||||||
 | 
						const moo_uch_t* path
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MOO_EXPORT int moo_invokestdb (
 | 
				
			||||||
 | 
						moo_t*           moo,
 | 
				
			||||||
 | 
						const moo_bch_t* objname,
 | 
				
			||||||
 | 
						const moo_bch_t* mthname
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MOO_EXPORT void moo_rcvtickstd (
 | 
					MOO_EXPORT void moo_rcvtickstd (
 | 
				
			||||||
	moo_t*             moo,
 | 
						moo_t*             moo,
 | 
				
			||||||
	int                v
 | 
						int                v
 | 
				
			||||||
 | 
				
			|||||||
@ -4241,8 +4241,61 @@ int moo_compilestd (moo_t* moo, const moo_iostd_t* in, moo_oow_t count)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int moo_compilefileb (moo_t* moo, const moo_bch_t* path)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						moo_iostd_t in;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						MOO_MEMSET (&in, 0, MOO_SIZEOF(in));
 | 
				
			||||||
 | 
						in.type = MOO_IOSTD_FILEB;
 | 
				
			||||||
 | 
						in.u.fileb.path = path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return moo_compilestd(moo, &in, 1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int moo_compilefileu (moo_t* moo, const moo_uch_t* path)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						moo_iostd_t in;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						MOO_MEMSET (&in, 0, MOO_SIZEOF(in));
 | 
				
			||||||
 | 
						in.type = MOO_IOSTD_FILEU;
 | 
				
			||||||
 | 
						in.u.fileu.path = path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return moo_compilestd(moo, &in, 1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int moo_invokestdb (moo_t* moo, const moo_bch_t* objname, const moo_bch_t* mthname)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if defined(MOO_OOCH_IS_UCH)
 | 
				
			||||||
 | 
						int n = -1;
 | 
				
			||||||
 | 
						moo_oocs_t o, m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						o.ptr = moo_dupbtooocstr(moo, objname, &o.len);
 | 
				
			||||||
 | 
						m.ptr = moo_dupbtooocstr(moo, mthname, &m.len);
 | 
				
			||||||
 | 
						if (!o.ptr || !m.ptr) goto done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						n = moo_invoke(moo, &o, &m);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					done:
 | 
				
			||||||
 | 
						if (m.ptr) moo_freemem (moo, m.ptr);
 | 
				
			||||||
 | 
						if (o.ptr) moo_freemem (moo, o.ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return n;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						moo_oocs_t o, m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						o.ptr = objname;
 | 
				
			||||||
 | 
						o.len = moo_count_bcstr(objname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						m.ptr = objname;
 | 
				
			||||||
 | 
						m.len = moo_count_bcstr(objname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return moo_invoke(moo, &o, &m);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void moo_rcvtickstd (moo_t* moo, int v)
 | 
					void moo_rcvtickstd (moo_t* moo, int v)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	xtn_t* xtn = GET_XTN(moo);
 | 
						xtn_t* xtn = GET_XTN(moo);
 | 
				
			||||||
 | 
				
			|||||||
@ -6,16 +6,33 @@ Temporary notes on how to build libmoo to web assembly with emscripten.
 | 
				
			|||||||
#### How to Build
 | 
					#### How to Build
 | 
				
			||||||
 mkdir -p bld/emcc
 | 
					 mkdir -p bld/emcc
 | 
				
			||||||
 cd blc/emcc
 | 
					 cd blc/emcc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## run configure and make under emconfigure and emmake respectively
 | 
				
			||||||
 emconfigure ../../configure --prefix=${HOME}/xxx-emcc --disable-shared --enable-dynamic-module --disable-mod-x11 --disable-mod-con --disable-mod-sck CFLAGS="-Wall -O2 -g"
 | 
					 emconfigure ../../configure --prefix=${HOME}/xxx-emcc --disable-shared --enable-dynamic-module --disable-mod-x11 --disable-mod-con --disable-mod-sck CFLAGS="-Wall -O2 -g"
 | 
				
			||||||
 emmake make
 | 
					 emmake make
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## convert the library to web assembly - the command produces libmoo.js and  libmoo.wasm
 | 
				
			||||||
 ##emcc lib/.libs/libmoo.a -s WASM=1 -s EXPORT_ALL=1 -s LINKABLE=1 -o libmoo.js
 | 
					 ##emcc lib/.libs/libmoo.a -s WASM=1 -s EXPORT_ALL=1 -s LINKABLE=1 -o libmoo.js
 | 
				
			||||||
 #if you have defined MOO_EXPORT as EMSCRIPTEN_KEEPALIVE, the following will do
 | 
					 #if you have defined MOO_EXPORT as EMSCRIPTEN_KEEPALIVE, the following will do
 | 
				
			||||||
 ##emcc lib/.libs/libmoo.a -s WASM=1 -s -s LINKABLE=1 -o libmoo.js
 | 
					 ##emcc lib/.libs/libmoo.a -s WASM=1 -s -s LINKABLE=1 -o libmoo.js
 | 
				
			||||||
 ###emcc lib/.libs/libmoo.a lib/.libs/libmoox.a -s WASM=1 -s -s LINKABLE=1 -o libmoo.js
 | 
					 ###emcc lib/.libs/libmoo.a lib/.libs/libmoox.a -s WASM=1 -s LINKABLE=1 -o libmoo.js
 | 
				
			||||||
 emcc lib/.libs/libmoo.a lib/.libs/libmoox.a -s WASM=1 -s -s LINKABLE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" -o libmoo.js
 | 
					
 | 
				
			||||||
 | 
					## -s ALLOW_MEMORY_GROWTH=1
 | 
				
			||||||
 | 
					emcc lib/.libs/libmoo.a lib/.libs/libmoox.a -s WASM=1 -s LINKABLE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" -o libmoo.js  --embed-file ../../kernel/
 | 
				
			||||||
 | 
					 ### --embed-file, if given a directory, includes all files under the directory.
 | 
				
			||||||
 | 
					 ### the result libmoo.js will contain lines like below:
 | 
				
			||||||
 | 
					 ###   Module['FS_createDataFile']('/kernel', 'Apex.moo', fileData35, true, true, false);
 | 
				
			||||||
 | 
					 ###   var fileData36 = [];
 | 
				
			||||||
 | 
					 ###   fileData36.push.apply(fileData36, [35, 105, ...
 | 
				
			||||||
 | 
					 ### 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## when i executed the command above, some versions of wasm-ld complained like below 
 | 
				
			||||||
 | 
					## if the library is compiled with -pthread.
 | 
				
			||||||
 | 
					##   wasm-ld: error: 'atomics' feature is disallowed by atomic_2835fb94.c.o, so --shared-memory must not be used
 | 
				
			||||||
 | 
					## a quick work around was  to remove -pthread before building with 'emmake make'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 ## if defined some javascript functions in moo.cb.js...
 | 
					 ## if defined some javascript functions in moo.cb.js...
 | 
				
			||||||
 emcc -Wall -O2 -g lib/.libs/libmoo.a ws.c -DMOO_HAVE_CFG_H -Ilib -I../../lib -s WASM=1 -s -s LINKABLE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" -o libmoo.js --pre-js moo.cb.js
 | 
					 emcc -Wall -O2 -g lib/.libs/libmoo.a ws.c -DMOO_HAVE_CFG_H -Ilib -I../../lib -s WASM=1 -s LINKABLE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" -o libmoo.js --pre-js moo.cb.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### moo.worker.js
 | 
					#### moo.worker.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -5,19 +5,23 @@
 | 
				
			|||||||
<body>
 | 
					<body>
 | 
				
			||||||
    <input type="button" value="Test" onclick="do_test();" />
 | 
					    <input type="button" value="Test" onclick="do_test();" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    <script type="text/javascript">
 | 
					    <script type="text/javascript">
 | 
				
			||||||
        var g_WebWorker = new Worker("moo.worker.js");
 | 
					        var g_WebWorker = new Worker("moo.worker.js");
 | 
				
			||||||
 | 
					        if (typeof(WebAssembly) === 'undefined')
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					              alert ('No web assebly support in this browser');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //if (typeof(WebAssembly) === 'undefined')
 | 
					        g_WebWorker.onerror = function (evt) { 
 | 
				
			||||||
        //{
 | 
							console.log(`Error from Web Worker: ${evt.message}`); 
 | 
				
			||||||
        //      alert ('No web assebly support in this browser');
 | 
						};
 | 
				
			||||||
        //}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        g_WebWorker.onerror = function (evt) { console.log(`Error from Web Worker: ${evt.message}`); }
 | 
					        g_WebWorker.onmessage = function (evt) { 
 | 
				
			||||||
        g_WebWorker.onmessage = function (evt) { console.log(`Message from the Web Worker:\n\n ${evt.data}`); }
 | 
							console.log(`Message from the Web Worker:\n\n ${evt.data}`); 
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        function do_test() {
 | 
					        function do_test()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
                g_WebWorker.postMessage({ "cmd": "test-moo", "data": "nothing as of now.." });
 | 
					                g_WebWorker.postMessage({ "cmd": "test-moo", "data": "nothing as of now.." });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    </script>
 | 
					    </script>
 | 
				
			||||||
 | 
				
			|||||||
@ -8,9 +8,14 @@ Module.onRuntimeInitialized = function()
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const libmoo = {
 | 
					const libmoo = {
 | 
				
			||||||
        //open: Module.cwrap('moo_openstd', 'number', ['number', 'number', 'number']),
 | 
					        open: Module.cwrap('moo_openstd', 'number', ['number', 'number', 'number']),
 | 
				
			||||||
        //close: Module.cwrap('moo_close', '', ['number']),
 | 
					        close: Module.cwrap('moo_close', '', ['number']),
 | 
				
			||||||
        open_moo: Module.cwrap('open_moo', '', [''])
 | 
						ignite: Module.cwrap('moo_ignite', 'number', ['number', 'number']),
 | 
				
			||||||
 | 
						initdbgi: Module.cwrap('moo_initdbgi', 'number', ['number', 'number']),
 | 
				
			||||||
 | 
						compilefile: Module.cwrap('moo_compilefileb', 'number', ['number', 'string']),
 | 
				
			||||||
 | 
						invoke: Module.cwrap('moo_invokestdb', 'number', ['number', 'string', 'string'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//console.log ("QQ %O\n", self);
 | 
					//console.log ("QQ %O\n", self);
 | 
				
			||||||
@ -27,11 +32,27 @@ self.addEventListener ('message', function (evt) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                if (self.__ready)
 | 
					                if (self.__ready)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                        //var moo = libmoo.open(0, null, null);
 | 
					                        var moo, tmp;
 | 
				
			||||||
			var moo = libmoo.open_moo();
 | 
								var msg = "";
 | 
				
			||||||
                        self.postMessage ('XXXXXXXXXXXXXXXx - ' + moo);
 | 
					
 | 
				
			||||||
 | 
								moo = libmoo.open(0, null, null);
 | 
				
			||||||
 | 
								msg = msg.concat("open - " + moo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								tmp = libmoo.ignite(moo, 5000000);
 | 
				
			||||||
 | 
								msg = msg.concat(" ignite - " + tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								tmp = libmoo.initdbgi(moo, 102400);
 | 
				
			||||||
 | 
								msg = msg.concat(" initdgbi - " + tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								tmp = libmoo.compilefile(moo, "kernel/test-001.moo");
 | 
				
			||||||
 | 
								msg = msg.concat(" compilefile - " + tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								tmp = libmoo.invoke(moo, "MyObject", "main");
 | 
				
			||||||
 | 
								msg = msg.concat(" invoke - " + tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        self.postMessage (msg);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
                        //libmoo.close (moo);
 | 
					                        libmoo.close (moo);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
        } 
 | 
					        } 
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user