aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <azakai@mozilla.com>2010-11-20 11:45:36 -0800
committerAlon Zakai <azakai@mozilla.com>2010-11-20 11:45:36 -0800
commit4a4472588be087687985695f29a2ca2e02f9648e (patch)
treed4b490147adee21ea5f2ecf027f4c256c44b910c /src
parent6b4d1efe357c8f983b9ec1d0975bb809e37636bc (diff)
simple realloc implementation
Diffstat (limited to 'src')
-rw-r--r--src/library.js15
-rw-r--r--src/preamble.js7
2 files changed, 16 insertions, 6 deletions
diff --git a/src/library.js b/src/library.js
index 6567ebab..b7c9c157 100644
--- a/src/library.js
+++ b/src/library.js
@@ -39,6 +39,21 @@ var Library = {
throw 'ABORT: ' + code + ', at ' + (new Error().stack);
},
+ realloc: function(ptr, size) {
+ // Very simple, inefficient implementation - if you use a real malloc, best to use
+ // a real realloc with it
+ if (!size) {
+ if (ptr) _free(ptr);
+ return 0;
+ }
+ var ret = _malloc(size);
+ if (ptr) {
+ _memcpy(ret, ptr, size); // might be some invalid reads
+ _free(ptr);
+ }
+ return ret;
+ },
+
// string.h
strspn: function(pstr, pset) {
diff --git a/src/preamble.js b/src/preamble.js
index 133e2669..47278f83 100644
--- a/src/preamble.js
+++ b/src/preamble.js
@@ -301,7 +301,6 @@ function _atoi(s) {
}
function _llvm_memcpy_i32(dest, src, num, idunno) {
-// XXX hardcoded ptr impl
for (var i = 0; i < num; i++) {
#if SAFE_HEAP
SAFE_HEAP_STORE(dest + i, HEAP[src + i]);
@@ -314,12 +313,8 @@ function _llvm_memcpy_i32(dest, src, num, idunno) {
#endif
#endif
}
-// dest = Pointer_niceify(dest);
-// src = Pointer_niceify(src);
-// dest.slab = src.slab.slice(src.pos);
}
-_llvm_memcpy_i64 = _llvm_memcpy_i32;
-_llvm_memcpy_p0i8_p0i8_i32 = _llvm_memcpy_i32;
+_memcpy = _llvm_memcpy_i64 = _llvm_memcpy_p0i8_p0i8_i32 = _llvm_memcpy_i32;
function llvm_memset_i32(ptr, value, num) {
for (var i = 0; i < num; i++) {