summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--RELEASE-NOTES.txt1
-rw-r--r--src/main/java/com/amazon/carbonado/spi/StorableGenerator.java16
2 files changed, 6 insertions, 11 deletions
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 0f04527..e2d3ede 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -6,6 +6,7 @@ Carbonado change history
- Fixed bug when decoding old Storable generations - new properties must be
cleared. Otherwise, indexes on newly added properties might not get updated.
- Added system properties to control performance characteristics of MergeSortBuffer.
+- Fixed verify error in generation of markPropertiesDirty.
1.1-BETA9 to 1.1-BETA10
-------------------------------
diff --git a/src/main/java/com/amazon/carbonado/spi/StorableGenerator.java b/src/main/java/com/amazon/carbonado/spi/StorableGenerator.java
index aad7d87..93f9b38 100644
--- a/src/main/java/com/amazon/carbonado/spi/StorableGenerator.java
+++ b/src/main/java/com/amazon/carbonado/spi/StorableGenerator.java
@@ -2382,15 +2382,7 @@ public final class StorableGenerator<S extends Storable> {
if ((ordinal & 0xf) == 0 || ordinal >= count) {
String stateFieldName = PROPERTY_STATE_FIELD_NAME + ((ordinal - 1) >> 4);
if (name == MARK_ALL_PROPERTIES_DIRTY) {
- if (orMask == 0) {
- if (andMask != 0) {
- b.loadThis();
- b.loadField(stateFieldName, TypeDesc.INT);
- b.loadConstant(~andMask);
- b.math(Opcode.IAND);
- b.storeField(stateFieldName, TypeDesc.INT);
- }
- } else {
+ if (orMask != 0 || andMask != 0) {
b.loadThis(); // [this
b.loadThis(); // [this, this
b.loadField(stateFieldName, TypeDesc.INT); // [this, this.stateField
@@ -2398,8 +2390,10 @@ public final class StorableGenerator<S extends Storable> {
b.loadConstant(~andMask);
b.math(Opcode.IAND);
}
- b.loadConstant(orMask);
- b.math(Opcode.IOR);
+ if (orMask != 0) {
+ b.loadConstant(orMask);
+ b.math(Opcode.IOR);
+ }
b.storeField(stateFieldName, TypeDesc.INT);
}
} else {