aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2015-03-31 11:59:17 +0100
committerMatthew Wild <mwild1@gmail.com>2015-03-31 11:59:17 +0100
commitdf5f4d11127ef339d328cb82f923202457980e44 (patch)
treef6e013ea0e4bb55e0add40e072f40ebc4c2825bc
parent25d886be280a1b6d9965b38cb22aa328354de0c2 (diff)
downloadprosody-df5f4d11127ef339d328cb82f923202457980e44.tar.gz
prosody-df5f4d11127ef339d328cb82f923202457980e44.zip
util.table, Makefile: New C module that allows pre-allocation of tables to improve performance and decrease memory fragmentation
-rw-r--r--util-src/Makefile4
-rw-r--r--util-src/table.c14
2 files changed, 16 insertions, 2 deletions
diff --git a/util-src/Makefile b/util-src/Makefile
index 3a1ba3f2..3674975c 100644
--- a/util-src/Makefile
+++ b/util-src/Makefile
@@ -14,9 +14,9 @@ CFLAGS+=-ggdb
.PHONY: all install clean
.SUFFIXES: .c .o .so
-all: encodings.so hashes.so net.so pposix.so signal.so
+all: encodings.so hashes.so net.so pposix.so signal.so table.so
-install: encodings.so hashes.so net.so pposix.so signal.so
+install: encodings.so hashes.so net.so pposix.so signal.so table.so
install *.so ../util/
clean:
diff --git a/util-src/table.c b/util-src/table.c
new file mode 100644
index 00000000..118ee334
--- /dev/null
+++ b/util-src/table.c
@@ -0,0 +1,14 @@
+#include <lua.h>
+#include <lauxlib.h>
+
+static int Lcreate_table(lua_State* L) {
+ lua_createtable(L, luaL_checkinteger(L, 1), luaL_checkinteger(L, 2));
+ return 1;
+}
+
+int luaopen_util_table(lua_State *L) {
+ lua_newtable(L);
+ lua_pushcfunction(L, Lcreate_table);
+ lua_setfield(L, -2, "create");
+ return 1;
+}