diff options
author | alon@honor <none@none> | 2010-09-04 21:39:06 -0700 |
---|---|---|
committer | alon@honor <none@none> | 2010-09-04 21:39:06 -0700 |
commit | cd668dc906a4225032273b47f4745756fa8c0aed (patch) | |
tree | 6052ba5bebb3c7eef120e53e915542ec46cad0bc /src | |
parent | c3d043f32921b28dee20c5b68e0c1424d266b2a3 (diff) |
atexit +test
Diffstat (limited to 'src')
-rw-r--r-- | src/parser.js | 2 | ||||
-rw-r--r-- | src/postamble.js | 4 | ||||
-rw-r--r-- | src/preamble.js | 4 | ||||
-rw-r--r-- | src/snippets.js | 4 |
4 files changed, 11 insertions, 3 deletions
diff --git a/src/parser.js b/src/parser.js index 22fdd3e6..c231e538 100644 --- a/src/parser.js +++ b/src/parser.js @@ -1937,7 +1937,7 @@ function JSify(data) { substrate.addZyme('FunctionStub', { selectItem: function(item) { return item.intertype == 'functionStub' && !item.JS }, processItem: function(item) { - if (['_vsnprintf'].indexOf(item.ident) != -1) { + if (item.ident in Snippets) { item.JS = item.ident + ' = ' + Snippets[item.ident].toString(); } else { item.JS = '// stub for ' + item.ident; diff --git a/src/postamble.js b/src/postamble.js index fe5d91f9..f65d51d1 100644 --- a/src/postamble.js +++ b/src/postamble.js @@ -12,6 +12,10 @@ function run(args) { __globalConstructor__(); _main(argc, argv); + + while( __ATEXIT__.length > 0) { + __ATEXIT__.pop()(); + } } try { diff --git a/src/preamble.js b/src/preamble.js index 21179750..c6752c8f 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -6,6 +6,8 @@ function __globalConstructor__() { var __THREW__ = false; // Used in checking for thrown exceptions. +var __ATEXIT__ = []; + var HEAP = []; var HEAPTOP = 0; @@ -62,8 +64,6 @@ function Pointer_stringify(ptr) { return ret; } -NULL = Pointer_make([]); - function _malloc(size) { // XXX hardcoded ptr impl var ret = HEAPTOP; diff --git a/src/snippets.js b/src/snippets.js index f2fa9440..a97321f9 100644 --- a/src/snippets.js +++ b/src/snippets.js @@ -11,5 +11,9 @@ var Snippets = { if (HEAP[dst+i] == 0) break; } }, + + _atexit: function(func) { + __ATEXIT__.push(func); + }, }; |