You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mnemonic.apache.org by ga...@apache.org on 2018/06/06 06:18:30 UTC

mnemonic git commit: MNEMONIC-486: Implement the functionality of reference breaking mark for general durable object

Repository: mnemonic
Updated Branches:
  refs/heads/master 34dc80309 -> 20932d0e6


MNEMONIC-486: Implement the functionality of reference breaking mark for general durable object


Project: http://git-wip-us.apache.org/repos/asf/mnemonic/repo
Commit: http://git-wip-us.apache.org/repos/asf/mnemonic/commit/20932d0e
Tree: http://git-wip-us.apache.org/repos/asf/mnemonic/tree/20932d0e
Diff: http://git-wip-us.apache.org/repos/asf/mnemonic/diff/20932d0e

Branch: refs/heads/master
Commit: 20932d0e6898f9822fa9116ba5fd8b9dc4817850
Parents: 34dc803
Author: Yanhui Zhao <yz...@apache.org>
Authored: Mon Jun 4 22:22:25 2018 -0700
Committer: Yanhui Zhao <yz...@apache.org>
Committed: Mon Jun 4 22:22:25 2018 -0700

----------------------------------------------------------------------
 .../org/apache/mnemonic/AnnotatedDurableEntityClass.java     | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mnemonic/blob/20932d0e/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java b/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
index 856667e..5bc877a 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
@@ -80,6 +80,7 @@ public class AnnotatedDurableEntityClass {
     public String gftypesname;
     public long fieldoff;
     public long fieldsize;
+    public boolean refbreak;
   }
 
   protected final String cFACTORYNAMESUFFIX = "Factory";
@@ -306,6 +307,7 @@ public class AnnotatedDurableEntityClass {
           fieldinfo.efproxiesname = pgetter.EntityFactoryProxies();
           fieldinfo.gftypesname = pgetter.GenericFieldTypes();
           fieldinfo.id = pgetter.Id();
+          fieldinfo.refbreak = elem.getAnnotation(RefBreak.class) != null;
           m_dynfieldsinfo.put(methodname.substring(3), fieldinfo);
 
         }
@@ -861,7 +863,11 @@ public class AnnotatedDurableEntityClass {
             code.addStatement("return $1N", m_fieldsinfo.get("nfieldinfo").name);
             break;
           case "refbreak":
-            code.addStatement("return");
+            for (FieldInfo fldinfo : m_dynfieldsinfo.values()) {
+              if (fldinfo.refbreak && !isUnboxPrimitive(fldinfo.type)) {
+                code.addStatement("$1N = null", fldinfo.name);
+              }
+            }
             break;
           default:
             throw new AnnotationProcessingException(null, "Method %s is not supported.", name);