Optimize CFCClass_fresh_methods

Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/a761adcb
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/a761adcb
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/a761adcb

Branch: refs/heads/markdown_v2
Commit: a761adcb5a906014964cdaa6d2feda738b0068dc
Parents: 2aeb8db
Author: Nick Wellnhofer <[email protected]>
Authored: Wed Dec 3 19:24:21 2014 +0100
Committer: Nick Wellnhofer <[email protected]>
Committed: Wed Dec 3 19:24:21 2014 +0100

----------------------------------------------------------------------
 compiler/src/CFCBindClass.c | 4 ----
 compiler/src/CFCC.c         | 2 --
 compiler/src/CFCCHtml.c     | 2 --
 compiler/src/CFCCMan.c      | 2 --
 compiler/src/CFCClass.c     | 3 +--
 compiler/src/CFCClass.h     | 2 ++
 compiler/src/CFCPerl.c      | 1 -
 compiler/src/CFCPerlClass.c | 3 ---
 compiler/src/CFCTestClass.c | 4 +---
 9 files changed, 4 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCBindClass.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCBindClass.c b/compiler/src/CFCBindClass.c
index 5f2ef24..cb8a1db 100644
--- a/compiler/src/CFCBindClass.c
+++ b/compiler/src/CFCBindClass.c
@@ -587,8 +587,6 @@ CFCBindClass_callback_decs(CFCBindClass *self) {
         }
     }
 
-    FREEMEM(fresh_methods);
-
     return cb_decs;
 }
 
@@ -643,7 +641,6 @@ S_sub_declarations(CFCBindClass *self) {
         declarations = CFCUtil_cat(declarations, dec, "\n\n", NULL);
         FREEMEM(dec);
     }
-    FREEMEM(fresh_methods);
     return declarations;
 }
 
@@ -723,7 +720,6 @@ S_short_names(CFCBindClass *self) {
             short_names = CFCUtil_cat(short_names, "  #define ", short_imp,
                                       " ", full_imp, "\n", NULL);
         }
-        FREEMEM(fresh_methods);
 
         CFCMethod  **methods = CFCClass_methods(client);
         for (int i = 0; methods[i] != NULL; i++) {

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCC.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCC.c b/compiler/src/CFCC.c
index 96408d6..cf9a4cf 100644
--- a/compiler/src/CFCC.c
+++ b/compiler/src/CFCC.c
@@ -143,8 +143,6 @@ S_callback_decs(CFCClass *klass) {
         }
     }
 
-    FREEMEM(fresh_methods);
-
     return cb_decs;
 }
 

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCCHtml.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCCHtml.c b/compiler/src/CFCCHtml.c
index da02942..76b8109 100644
--- a/compiler/src/CFCCHtml.c
+++ b/compiler/src/CFCCHtml.c
@@ -546,7 +546,6 @@ S_html_create_methods(CFCClass *klass) {
     }
 
     FREEMEM(methods_html);
-    FREEMEM(fresh_methods);
     return result;
 }
 
@@ -598,7 +597,6 @@ S_html_create_fresh_methods(CFCClass *klass, CFCClass 
*invoker) {
         result = CFCUtil_cat(result, "</dl>\n", NULL);
     }
 
-    FREEMEM(fresh_methods);
     return result;
 }
 

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCCMan.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCCMan.c b/compiler/src/CFCCMan.c
index 650eab5..e559d6b 100644
--- a/compiler/src/CFCCMan.c
+++ b/compiler/src/CFCCMan.c
@@ -250,7 +250,6 @@ S_man_create_methods(CFCClass *klass) {
 
     FREEMEM(methods_man);
     FREEMEM(novel_man);
-    FREEMEM(fresh_methods);
     return result;
 }
 
@@ -280,7 +279,6 @@ S_man_create_inherited_methods(CFCClass *klass) {
         FREEMEM(full_method_sym);
     }
 
-    FREEMEM(fresh_methods);
     return result;
 }
 

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCClass.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCClass.c b/compiler/src/CFCClass.c
index 10f4e92..b0a47c8 100644
--- a/compiler/src/CFCClass.c
+++ b/compiler/src/CFCClass.c
@@ -667,8 +667,7 @@ S_fresh_syms(CFCClass *self, CFCSymbol **syms) {
 
 CFCMethod**
 CFCClass_fresh_methods(CFCClass *self) {
-    // TODO: Return self->fresh_methods
-    return (CFCMethod**)S_fresh_syms(self, (CFCSymbol**)self->methods);
+    return self->fresh_methods;
 }
 
 CFCVariable**

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCClass.h
----------------------------------------------------------------------
diff --git a/compiler/src/CFCClass.h b/compiler/src/CFCClass.h
index 8d7f4d8..5d0701c 100644
--- a/compiler/src/CFCClass.h
+++ b/compiler/src/CFCClass.h
@@ -158,11 +158,13 @@ CFCClass**
 CFCClass_tree_to_ladder(CFCClass *self);
 
 /** Return an array of all methods implemented in this class.
+ * Must not be freed by the caller.
  */
 struct CFCMethod**
 CFCClass_fresh_methods(CFCClass *self);
 
 /** Return an array of all member variables declared in this class.
+ * Must be freed by the caller.
  */
 struct CFCVariable**
 CFCClass_fresh_member_vars(CFCClass *self);

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCPerl.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCPerl.c b/compiler/src/CFCPerl.c
index a04bb61..6637dee 100644
--- a/compiler/src/CFCPerl.c
+++ b/compiler/src/CFCPerl.c
@@ -610,7 +610,6 @@ S_write_callbacks_c(CFCPerl *self) {
                 FREEMEM(cb_def);
             }
         }
-        FREEMEM(fresh_methods);
     }
 
     content = CFCUtil_cat(content, self->c_footer, NULL);

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCPerlClass.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCPerlClass.c b/compiler/src/CFCPerlClass.c
index bb8e4de..782f719 100644
--- a/compiler/src/CFCPerlClass.c
+++ b/compiler/src/CFCPerlClass.c
@@ -264,8 +264,6 @@ CFCPerlClass_method_bindings(CFCClass *klass) {
         bound[num_bound] = NULL;
     }
 
-    FREEMEM(fresh_methods);
-
     return bound;
 }
 
@@ -515,7 +513,6 @@ CFCPerlClass_method_metadata_code(CFCPerlClass *self) {
         }
     }
 
-    FREEMEM(fresh_methods);
     return code;
 }
 

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/a761adcb/compiler/src/CFCTestClass.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCTestClass.c b/compiler/src/CFCTestClass.c
index a4e5ddc..1bdc5e4 100644
--- a/compiler/src/CFCTestClass.c
+++ b/compiler/src/CFCTestClass.c
@@ -169,7 +169,6 @@ S_run_tests(CFCTest *test) {
         OK(test, fresh_member_vars[0] == thing, "fresh_member_vars[0]");
         OK(test, fresh_member_vars[1] == NULL, "fresh_member_vars[1]");
 
-        FREEMEM(fresh_methods);
         FREEMEM(fresh_member_vars);
     }
 
@@ -193,7 +192,6 @@ S_run_tests(CFCTest *test) {
     {
         CFCMethod **fresh_methods = CFCClass_fresh_methods(final_foo);
         OK(test, fresh_methods[0] == NULL, "fresh_methods[0]");
-        FREEMEM(fresh_methods);
     }
 
     {
@@ -279,7 +277,7 @@ S_run_tests(CFCTest *test) {
         CFCSymbol **inert_vars  = (CFCSymbol**)CFCClass_inert_vars(klass);
         CFCSymbol **member_vars = (CFCSymbol**)CFCClass_member_vars(klass);
         CFCSymbol **functions   = (CFCSymbol**)CFCClass_functions(klass);
-        CFCSymbol **methods     = (CFCSymbol**)CFCClass_methods(klass);
+        CFCSymbol **methods     = (CFCSymbol**)CFCClass_fresh_methods(klass);
         OK(test, S_has_symbol(inert_vars, "num_dogs"), "parsed inert var");
         OK(test, S_has_symbol(inert_vars, "top_dog"), "parsed public inert 
var");
         OK(test, S_has_symbol(member_vars, "mom"), "parsed member var");

Reply via email to