You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2013/06/14 05:47:43 UTC
[lucy-commits] [5/5] git commit: refs/heads/LUCY-256-thunk-hack1 - Change method
invocation to use thunks.
Change method invocation to use thunks.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/a665f5ae
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/a665f5ae
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/a665f5ae
Branch: refs/heads/LUCY-256-thunk-hack1
Commit: a665f5aec756e3973e3633770897b10b26cad875
Parents: 2621c29
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Thu Jun 13 20:43:02 2013 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Thu Jun 13 20:43:02 2013 -0700
----------------------------------------------------------------------
clownfish/compiler/src/CFCBindMethod.c | 24 ++++++------------------
1 file changed, 6 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/a665f5ae/clownfish/compiler/src/CFCBindMethod.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindMethod.c b/clownfish/compiler/src/CFCBindMethod.c
index c2214a1..1f12c1c 100644
--- a/clownfish/compiler/src/CFCBindMethod.c
+++ b/clownfish/compiler/src/CFCBindMethod.c
@@ -88,23 +88,16 @@ S_virtual_method_def(CFCMethod *method, CFCClass *klass) {
CFCParamList *param_list = CFCMethod_get_param_list(method);
const char *PREFIX = CFCClass_get_PREFIX(klass);
const char *invoker_struct = CFCClass_full_struct_sym(klass);
- const char *common_struct
- = CFCType_get_specifier(CFCMethod_self_type(method));
char *full_meth_sym = CFCMethod_full_method_sym(method, klass);
char *full_offset_sym = CFCMethod_full_offset_sym(method, klass);
- char *full_typedef = CFCMethod_full_typedef(method, klass);
// Prepare parameter lists, minus invoker. The invoker gets forced to
// "self" later.
if (CFCParamList_variadic(param_list)) {
CFCUtil_die("Variadic methods not supported");
}
- const char *arg_names_minus_invoker = CFCParamList_name_list(param_list);
const char *params_minus_invoker = CFCParamList_to_c(param_list);
- while (*arg_names_minus_invoker && *arg_names_minus_invoker != ',') {
- arg_names_minus_invoker++;
- }
while (*params_minus_invoker && *params_minus_invoker != ',') {
params_minus_invoker++;
}
@@ -116,21 +109,16 @@ S_virtual_method_def(CFCMethod *method, CFCClass *klass) {
const char pattern[] =
"extern %sVISIBLE size_t %s;\n"
- "static CFISH_INLINE %s\n"
- "%s(const %s *self%s) {\n"
- " const %s method = (%s)cfish_obj_method(self, %s);\n"
- " %smethod((%s*)self%s);\n"
- "}\n";
+ "%sVISIBLE %s\n"
+ "%s(const %s *self%s);\n"
+ "\n";
char *method_def
- = CFCUtil_sprintf(pattern, PREFIX, full_offset_sym, ret_type_str,
- full_meth_sym, invoker_struct, params_minus_invoker,
- full_typedef, full_typedef, full_offset_sym,
- maybe_return, common_struct,
- arg_names_minus_invoker);
+ = CFCUtil_sprintf(pattern, PREFIX, full_offset_sym,
+ PREFIX, ret_type_str, full_meth_sym,
+ invoker_struct, params_minus_invoker);
FREEMEM(full_offset_sym);
FREEMEM(full_meth_sym);
- FREEMEM(full_typedef);
return method_def;
}