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