Use XS_INTERNAL for XSUBs This marks XS functions as static, reducing the size of the Perl binaries.
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/75752926 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/75752926 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/75752926 Branch: refs/heads/master Commit: 757529264259a95a2a60a2c5fe15608d648bb630 Parents: 37aa3d3 Author: Nick Wellnhofer <wellnho...@aevum.de> Authored: Mon May 30 14:20:30 2016 +0200 Committer: Nick Wellnhofer <wellnho...@aevum.de> Committed: Mon May 30 15:13:26 2016 +0200 ---------------------------------------------------------------------- compiler/src/CFCPerl.c | 7 +++++++ compiler/src/CFCPerlConstructor.c | 4 ++-- compiler/src/CFCPerlMethod.c | 8 ++++---- 3 files changed, 13 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/75752926/compiler/src/CFCPerl.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCPerl.c b/compiler/src/CFCPerl.c index d14cf84..551220b 100644 --- a/compiler/src/CFCPerl.c +++ b/compiler/src/CFCPerl.c @@ -631,6 +631,13 @@ CFCPerl_write_bindings(CFCPerl *self) { } generated_xs = CFCUtil_cat(generated_xs, "\n", NULL); + generated_xs = CFCUtil_cat(generated_xs, + "#ifndef XS_INTERNAL\n" + " #define XS_INTERNAL XS\n" + "#endif\n" + "\n", + NULL); + for (size_t i = 0; ordered[i] != NULL; i++) { CFCClass *klass = ordered[i]; if (CFCClass_included(klass)) { continue; } http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/75752926/compiler/src/CFCPerlConstructor.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCPerlConstructor.c b/compiler/src/CFCPerlConstructor.c index 1345113..83dfe83 100644 --- a/compiler/src/CFCPerlConstructor.c +++ b/compiler/src/CFCPerlConstructor.c @@ -142,8 +142,8 @@ CFCPerlConstructor_xsub_def(CFCPerlConstructor *self, CFCClass *klass) { } const char pattern[] = - "XS(%s);\n" - "XS(%s) {\n" + "XS_INTERNAL(%s);\n" + "XS_INTERNAL(%s) {\n" " dXSARGS;\n" "%s" // param_specs "%s" // locs_decl http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/75752926/compiler/src/CFCPerlMethod.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCPerlMethod.c b/compiler/src/CFCPerlMethod.c index 2b8b3e8..9f25f92 100644 --- a/compiler/src/CFCPerlMethod.c +++ b/compiler/src/CFCPerlMethod.c @@ -263,8 +263,8 @@ S_xsub_def_labeled_params(CFCPerlMethod *self, CFCClass *klass) { } char pattern[] = - "XS(%s);\n" - "XS(%s) {\n" + "XS_INTERNAL(%s);\n" + "XS_INTERNAL(%s) {\n" " dXSARGS;\n" "%s" // param_specs " int32_t locations[%d];\n" @@ -361,8 +361,8 @@ S_xsub_def_positional_args(CFCPerlMethod *self, CFCClass *klass) { } char pattern[] = - "XS(%s);\n" - "XS(%s) {\n" + "XS_INTERNAL(%s);\n" + "XS_INTERNAL(%s) {\n" " dXSARGS;\n" "%s" // working_sv "%s" // arg_decls