diff options
author | max99x <max99x@gmail.com> | 2011-08-25 22:21:00 +0300 |
---|---|---|
committer | max99x <max99x@gmail.com> | 2011-08-25 22:21:00 +0300 |
commit | f99ce662ae538554d0d3053aacdb47126938291c (patch) | |
tree | 3cdd607322ddfa96573b05a7ebf9e41cbd105cd6 | |
parent | 84f122cbee271c6ecf9be877c2ea699ab8f9cb1c (diff) |
Style fixes in response to code review. No change in functionality.
-rw-r--r-- | src/intertyper.js | 40 | ||||
-rw-r--r-- | src/jsifier.js | 3 | ||||
-rw-r--r-- | src/parseTools.js | 9 | ||||
-rw-r--r-- | tests/runner.py | 26 |
4 files changed, 38 insertions, 40 deletions
diff --git a/src/intertyper.js b/src/intertyper.js index 1db3cf88..ed8d5099 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -461,22 +461,18 @@ function intertyper(data, parseFunctions, baseLineNum) { item.tokens = item.tokens.filter(function(token) { return !(token.text in LLVM.LINKAGES || token.text in LLVM.PARAM_ATTR || token.text in set('hidden', 'nounwind', 'define', 'inlinehint', '{') || token.text in LLVM.CALLING_CONVENTIONS); }); - var ret = { + var params = parseParamTokens(item.tokens[2].item.tokens); + return [{ intertype: 'function', ident: toNiceIdent(item.tokens[1].text), returnType: item.tokens[0].text, - params: parseParamTokens(item.tokens[2].item.tokens), - lineNum: item.lineNum - }; - ret.hasVarArgs = false; - ret.paramIdents = ret.params.map(function(param) { - if (param.intertype == 'varargs') { - ret.hasVarArgs = true; - return null; - } - return toNiceIdent(param.ident); - }).filter(function(param) { return param != null });; - return [ret]; + params: params, + hasVarArgs: hasVarArgs(params), + lineNum: item.lineNum, + paramIdents: params.map(function(param) { + return (param.intertype == 'varargs') ? null : toNiceIdent(param.ident); + }).filter(function(param) { return param != null; }) + }]; } }); // label @@ -799,23 +795,15 @@ function intertyper(data, parseFunctions, baseLineNum) { item.tokens.splice(1, 1); } - var ret = { + var params = parseParamTokens(item.tokens[3].item.tokens); + return [{ intertype: 'functionStub', ident: toNiceIdent(item.tokens[2].text), returnType: item.tokens[1], - params: parseParamTokens(item.tokens[3].item.tokens), - hasVarArgs: false, + params: params, + hasVarArgs: hasVarArgs(params), lineNum: item.lineNum - }; - - for (var i = 0; i < ret.params.length; i++) { - if (ret.params[i].intertype == 'varargs') { - ret.hasVarArgs = true; - break; - } - } - - return [ret]; + }]; } }); // 'unreachable' diff --git a/src/jsifier.js b/src/jsifier.js index 1bbd4d20..94f78134 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -199,7 +199,8 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) { return ret; } else { if (item.external && BUILD_AS_SHARED_LIB) { - // External variables in shared libraries should not be declared. + // External variables in shared libraries should not be declared as + // they would shadow similarly-named globals in the parent. item.JS = ''; } else { item.JS = 'var ' + item.ident + ';'; diff --git a/src/parseTools.js b/src/parseTools.js index 5473ff37..4b3e63e1 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -333,6 +333,15 @@ function parseParamTokens(params) { return ret; } +function hasVarArgs(params) { + for (var i = 0; i < params.length; i++) { + if (params[i].intertype == 'varargs') { + return true; + } + } + return false; +} + function finalizeParam(param) { if (param.intertype in PARSABLE_LLVM_FUNCTIONS) { return finalizeLLVMFunctionCall(param); diff --git a/tests/runner.py b/tests/runner.py index e51f8e86..907e2c91 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -1871,14 +1871,14 @@ if 'benchmark' not in sys.argv: typedef int (*CMP_TYPE)(const void*, const void*); - CMP_TYPE get_cmp() { + extern "C" CMP_TYPE get_cmp() { return lib_cmp; } ''' dirname = self.get_dir() filename = os.path.join(dirname, 'liblib.cpp') BUILD_AS_SHARED_LIB = 1 - EXPORTED_FUNCTIONS = ['__Z7get_cmpv'] + EXPORTED_FUNCTIONS = ['_get_cmp'] self.build(lib_src, dirname, filename) shutil.move(filename + '.o.js', os.path.join(dirname, 'liblib.so')) @@ -1908,7 +1908,7 @@ if 'benchmark' not in sys.argv: printf("Could not load lib.\\n"); return 1; } - getter_ptr = (CMP_TYPE (*)()) dlsym(lib_handle, "_Z7get_cmpv"); + getter_ptr = (CMP_TYPE (*)()) dlsym(lib_handle, "get_cmp"); if (getter_ptr == NULL) { printf("Could not find func.\\n"); return 1; @@ -1965,7 +1965,7 @@ if 'benchmark' not in sys.argv: p_f(); } - void (*func(int x, void(*fptr)()))() { + extern "C" void (*func(int x, void(*fptr)()))() { printf("In func: %d\\n", x); fptr(); return lib_fptr; @@ -1974,7 +1974,7 @@ if 'benchmark' not in sys.argv: dirname = self.get_dir() filename = os.path.join(dirname, 'liblib.cpp') BUILD_AS_SHARED_LIB = 1 - EXPORTED_FUNCTIONS = ['__Z4funciPFvvE'] + EXPORTED_FUNCTIONS = ['_func'] EXPORTED_GLOBALS = ['_global'] self.build(lib_src, dirname, filename) shutil.move(filename + '.o.js', os.path.join(dirname, 'liblib.so')) @@ -2007,9 +2007,9 @@ if 'benchmark' not in sys.argv: } // Test looked up function. - func_fptr = (FUNCTYPE*) dlsym(lib_handle, "_Z4funciPFvvE"); + func_fptr = (FUNCTYPE*) dlsym(lib_handle, "func"); // Load twice to test cache. - func_fptr = (FUNCTYPE*) dlsym(lib_handle, "_Z4funciPFvvE"); + func_fptr = (FUNCTYPE*) dlsym(lib_handle, "func"); if (func_fptr == NULL) { printf("Could not find func.\\n"); return 1; @@ -2049,14 +2049,14 @@ if 'benchmark' not in sys.argv: lib_src = r''' #include <stdio.h> extern int parent_global; - void func() { + extern "C" void func() { printf("Parent global: %d.\n", parent_global); } ''' dirname = self.get_dir() filename = os.path.join(dirname, 'liblib.cpp') BUILD_AS_SHARED_LIB = 1 - EXPORTED_FUNCTIONS = ['__Z4funcv'] + EXPORTED_FUNCTIONS = ['_func'] self.build(lib_src, dirname, filename) shutil.move(filename + '.o.js', os.path.join(dirname, 'liblib.so')) @@ -2070,7 +2070,7 @@ if 'benchmark' not in sys.argv: void (*fptr)(); lib_handle = dlopen("liblib.so", RTLD_NOW); - fptr = (void (*)())dlsym(lib_handle, "_Z4funcv"); + fptr = (void (*)())dlsym(lib_handle, "func"); fptr(); parent_global = 456; fptr(); @@ -2096,14 +2096,14 @@ if 'benchmark' not in sys.argv: global BUILD_AS_SHARED_LIB, EXPORTED_FUNCTIONS lib_src = r''' void print_ints(int n, ...); - void func() { + extern "C" void func() { print_ints(2, 13, 42); } ''' dirname = self.get_dir() filename = os.path.join(dirname, 'liblib.cpp') BUILD_AS_SHARED_LIB = 1 - EXPORTED_FUNCTIONS = ['__Z4funcv'] + EXPORTED_FUNCTIONS = ['_func'] self.build(lib_src, dirname, filename) shutil.move(filename + '.o.js', os.path.join(dirname, 'liblib.so')) @@ -2128,7 +2128,7 @@ if 'benchmark' not in sys.argv: print_ints(2, 100, 200); lib_handle = dlopen("liblib.so", RTLD_NOW); - fptr = (void (*)())dlsym(lib_handle, "_Z4funcv"); + fptr = (void (*)())dlsym(lib_handle, "func"); fptr(); return 0; |