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;
 }