diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.textile b/README.textile old mode 100644 new mode 100755 diff --git a/akka.iml b/akka.iml old mode 100644 new mode 100755 diff --git a/akka.ipr b/akka.ipr old mode 100644 new mode 100755 index eda6fcf859..7853bb23b7 --- a/akka.ipr +++ b/akka.ipr @@ -1,1828 +1,1827 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - localhost - 5050 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/akka.iws b/akka.iws old mode 100644 new mode 100755 index 7c3e906ab7..2efc7b8748 --- a/akka.iws +++ b/akka.iws @@ -1,2459 +1,2244 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Inspections - - - - - AOP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - localhost - 5050 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inspections + + + + + AOP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/buildfile b/buildfile old mode 100644 new mode 100755 diff --git a/embedded-repo/org/multiverse/multiverse/0.3/META-INF/MANIFEST.MF b/embedded-repo/org/multiverse/multiverse/0.3/META-INF/MANIFEST.MF new file mode 100755 index 0000000000..cbf41afa31 --- /dev/null +++ b/embedded-repo/org/multiverse/multiverse/0.3/META-INF/MANIFEST.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +Ant-Version: Apache Ant 1.7.1 +Created-By: 10.0-b22 (Sun Microsystems Inc.) +Premain-Class: org.multiverse.standard.instrumentation.MultiverseJavaA + gent + diff --git a/embedded-repo/org/multiverse/multiverse/0.3/multiverse-0.3.jar b/embedded-repo/org/multiverse/multiverse/0.3/multiverse-0.3.jar index cdafe64fd2..2cf8404aeb 100755 Binary files a/embedded-repo/org/multiverse/multiverse/0.3/multiverse-0.3.jar and b/embedded-repo/org/multiverse/multiverse/0.3/multiverse-0.3.jar differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/AtomicObject.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/AtomicObject.class new file mode 100755 index 0000000000..7e54238884 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/AtomicObject.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/DirtinessStatus.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/DirtinessStatus.class new file mode 100755 index 0000000000..6607ec11df Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/DirtinessStatus.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Latch.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Latch.class new file mode 100755 index 0000000000..601fc55245 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Latch.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Stm.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Stm.class new file mode 100755 index 0000000000..dcb815abda Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Stm.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Tranlocal.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Tranlocal.class new file mode 100755 index 0000000000..7ac1f7ad8f Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Tranlocal.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/TranlocalSnapshot.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/TranlocalSnapshot.class new file mode 100755 index 0000000000..b75c9d1f10 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/TranlocalSnapshot.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Transaction.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Transaction.class new file mode 100755 index 0000000000..6bcbe1f94a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/Transaction.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/TransactionStatus.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/TransactionStatus.class new file mode 100755 index 0000000000..46a6eef2ba Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/TransactionStatus.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/AtomicMethod.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/AtomicMethod.class new file mode 100755 index 0000000000..126fd33f9f Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/AtomicMethod.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/Exclude.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/Exclude.class new file mode 100755 index 0000000000..787f6eabf2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/Exclude.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/TransactionalObject.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/TransactionalObject.class new file mode 100755 index 0000000000..717a7faaec Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/annotations/TransactionalObject.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/AlreadyAbortedException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/AlreadyAbortedException.class new file mode 100755 index 0000000000..bd23f83125 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/AlreadyAbortedException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/AlreadyCommittedException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/AlreadyCommittedException.class new file mode 100755 index 0000000000..ee8edb3aaa Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/AlreadyCommittedException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/CommitFailureException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/CommitFailureException.class new file mode 100755 index 0000000000..e34bce73b6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/CommitFailureException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToLoadOldVersionException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToLoadOldVersionException.class new file mode 100755 index 0000000000..8ab7124562 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToLoadOldVersionException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToObtainLocksException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToObtainLocksException.class new file mode 100755 index 0000000000..d2321daba0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToObtainLocksException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToResetException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToResetException.class new file mode 100755 index 0000000000..d93fc870bb Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/FailedToResetException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/LoadException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/LoadException.class new file mode 100755 index 0000000000..3636995064 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/LoadException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/LockedException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/LockedException.class new file mode 100755 index 0000000000..68002fb84e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/LockedException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/NoProgressPossibleException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/NoProgressPossibleException.class new file mode 100755 index 0000000000..f1749e9c15 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/NoProgressPossibleException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/PanicError.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/PanicError.class new file mode 100755 index 0000000000..9eaeca3019 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/PanicError.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/ReadonlyException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/ReadonlyException.class new file mode 100755 index 0000000000..51f9c0f584 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/ReadonlyException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/RetryError.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/RetryError.class new file mode 100755 index 0000000000..6d32cb20c6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/RetryError.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/StmException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/StmException.class new file mode 100755 index 0000000000..f3937e6f84 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/StmException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/TodoException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/TodoException.class new file mode 100755 index 0000000000..c48aac4cda Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/TodoException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/UncommittedAtomicObjectException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/UncommittedAtomicObjectException.class new file mode 100755 index 0000000000..8b77deea0d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/UncommittedAtomicObjectException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/WriteConflictException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/WriteConflictException.class new file mode 100755 index 0000000000..e020e0ba61 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/api/exceptions/WriteConflictException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/BackoffContentionManager.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/BackoffContentionManager.class new file mode 100755 index 0000000000..9bdef9d5f2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/BackoffContentionManager.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/ContentionManager.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/ContentionManager.class new file mode 100755 index 0000000000..5037dd054e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/ContentionManager.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/GreedyContentionManager.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/GreedyContentionManager.class new file mode 100755 index 0000000000..f3018501c2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/GreedyContentionManager.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/KarmaContentionManager.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/KarmaContentionManager.class new file mode 100755 index 0000000000..6a15766f00 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/KarmaContentionManager.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/PriorityContentionManager.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/PriorityContentionManager.class new file mode 100755 index 0000000000..1209900f88 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/contentionmanagers/PriorityContentionManager.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/DefaultLock.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/DefaultLock.class new file mode 100755 index 0000000000..ae2f62087a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/DefaultLock.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/Lock.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/Lock.class new file mode 100755 index 0000000000..8b0d87d734 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/Lock.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/LockMode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/LockMode.class new file mode 100755 index 0000000000..fe9d1675fa Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/LockMode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/OfflineLock.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/OfflineLock.class new file mode 100755 index 0000000000..2ebf6826fd Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/locking/OfflineLock.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/optimalisaties.txt b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/optimalisaties.txt new file mode 100755 index 0000000000..35282af877 --- /dev/null +++ b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/optimalisaties.txt @@ -0,0 +1,192 @@ +---------------- Faster Get-Transactie optimizations ----------------- + +De huidige transactie moet opgehaald worden via de ThreadLocal. Dit kan een kostbare aangelegenheid worden, +dus de vraag is hoe je dit kunt optimaliseren: + +voor: + +int get(){ + $IntValue tranlocalThis = ($IntValue)TransactionThreadLocal.get().read(this); + return tranlocalThis; +} + +void foo(){ + Transaction t = startTransaction(); + someIntValue.get(); + t.commit(); +} + +Kosten zijn nu 1 getTransaction. + +na: + +int get(Transaction t){ + $IntValue tranlocalThis = ($IntValue)t.read(this); + return tranlocalThis; +} + +void foo(){ + Transaction t = startTransaction(); + someIntValue.get(t); + t.commit(); +} + +Kosten zijn nu 0 getTransaction. + +Wat: + Je zult de signature van de methode breder moeten maken zodat de transaction meegegeven gaat worden. + Je zult aanroepende methodes ook breder moeten maken. +Wanneer: + Tot hoe diep ga je. + +Note: + Volgens mij is dit een vrij eenvoudige optimalisatie aangezien je niets hoeft te weten van de andere classes. + Als er extra methodes bij worden gegenereerd, kan je gewoon de huidige methode aanroepen vervangen + +----------------- Optimization --------------------------- + +Methods that don't need a transaction.. + +doel" + verminderen overhead transactie creatie/administratie. + +-------------- Optimization ----------------------------- + +probleem: +Als een object bewerkingen gaat doen op een of meer transactionele objecten, dan zal je iedere keer als +je de $Object wilt hebben, naar de transactie moeten gaan om het op te halen. Dit ophalen is kostbaar +(in ieder geval een stuk kostbaarder dan een variable. En het ophalen gaat door de extra code dat nodig is, +ook de JIT in de weg zitten. + +doel: +-verminderen van het aatal verzoeken dat gedaan wordt om de state op te halen. +-JIT niet in de weg zitten bij optimalisaties + +Randvoorwaarden: +- als de waarde niet veranderd (finals bv) +- als de waarde wel veranderd, moet je nieuwe $Object ophalen... maar kan nog steeds geoptimaliseerd worden. + +voor: + public int pop() { + Transaction t = TransactionThreadLocal.get(); + if (readyToPopStack.isEmpty()) { + while (!pushedStack.isEmpty()) { + readyToPopStack.push(pushedStack.pop()); + } + } + + return readyToPopStack.pop(); + } + +1<=kosten<=(readyToPopStack + 3*pushedStack.size)*Transaction.read + +na: + public int pop() { + Transaction t = TransactionThreadLocal.get(); + $IntStack $readyToPopStack = ($IntStack) t.read(readyToPopStack); + if ($readyToPopStack.isEmpty()) { + $IntStack $pushedStack = ($IntStack) t.read(pushedStack); + while (!$pushedStack.isEmpty()) { + $readyToPopStack.push($pushedStack.pop()); + } + } + + return $readyToPopStack.pop(); + } +} + +1<=kosten<=2 * Transaction.read + + +--------------- Constant Simplification Optimization -------------- + +---------------- Pass $Object instead Object optimization --------- + +Probleem: +Als je een methode hebt die daarin een transactioneel Object mee krijgt, zal binnen die methode het $Object +opgehaald moeten worden. Dit kan kostbaar zijn. Als de callee de $Object toch al heeft, dan is het eenvoudiger +om de $Object mee te geven. + +Oplossing: + +Genereer een extra methode: + +voor + + public static void inc(IntValue intValue){ + Transaction t = TransactionThreadLocal.get(); + $IntValue $intValue = ($IntValue)intValue; + $intValue.set($intValue.get()); + } + + public static void inc2(IntValue intValue){ + inc(intValue); + inc(intValue); + } + +na + + public static void inc($IntValue $intValue){ + $intValue.set($intValue.get()); + } + + public static void inc2(IntValue intValue){ + $IntValue $intValue = ($IntValue)getTransaction().read(intValue); + $intValue.inc(); + $intValue.inc(); + } + + public static void inc2($IntValue $intValue){ + $intValue.inc(); + $intValue.inc(); + } + + +De caller van de inc2 functie kan nu dus kiezen uit de inc2 waar het $Object nog opgehaald moet worden, +en waar niet. Als je kijkt naar de laatste inc2, dan zie je dat hij niets duurder is dan een klassieke POJO. + +Randvoorwaarden: + +------------------- Reduce Return Value Transformation optimization --------------------- + +Problem: + +Onnodig return values omzetten is kostbaar, dus je kunt een extra methode aanbieden + +voor: + +public IntValue min(IntValue a, IntValue b){ + +} + +public void foo(IntValue a, IntValue b){ + IntValue result = min(a,b); + result.inc(); +} + + +na: + +public $IntValue $min(IntValue a, IntValue b){ + +} + +public void foo(IntValue a, IntValue b){ + $IntValue $result = min(a,b); + $result.inc(); +} + + +-------------------- Readonly Transaction Optimization ? --------- + + +De optimalisaties zouden onafhankelijk + +----------------------- kosten optimalisatie inzichtelijk maken: + +het aantal keren dat er een Transaction.read gedaan moet worden. + + + ----------------- + + meerdere keren transactie ophalen binnen een methode kan vervangen worden door een enkele keer ophalen. \ No newline at end of file diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/AbaRef.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/AbaRef.class new file mode 100755 index 0000000000..389dd546b0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/AbaRef.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/ManagedRef.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/ManagedRef.class new file mode 100755 index 0000000000..0c93c4e6ee Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/ManagedRef.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/Ref.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/Ref.class new file mode 100755 index 0000000000..01b3eb4c4d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/refs/Ref.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStm.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStm.class new file mode 100755 index 0000000000..3094b7f6ce Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStm.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmDebugConstants.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmDebugConstants.class new file mode 100755 index 0000000000..40b46ea024 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmDebugConstants.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmStatistics.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmStatistics.class new file mode 100755 index 0000000000..a773abd0c3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmStatistics.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmStatisticsPrintThread.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmStatisticsPrintThread.class new file mode 100755 index 0000000000..6e9c4cb592 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/DefaultStmStatisticsPrintThread.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/ReadonlyTransaction$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/ReadonlyTransaction$1.class new file mode 100755 index 0000000000..bec1d14723 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/ReadonlyTransaction$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/ReadonlyTransaction.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/ReadonlyTransaction.class new file mode 100755 index 0000000000..127b4d971a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/ReadonlyTransaction.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction$1.class new file mode 100755 index 0000000000..1cd14a6a39 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction$SnapshotStack.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction$SnapshotStack.class new file mode 100755 index 0000000000..69068d1ac6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction$SnapshotStack.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction.class new file mode 100755 index 0000000000..bf276fcd13 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/UpdateTransaction.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseClassLoader.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseClassLoader.class new file mode 100755 index 0000000000..ea22bd7f56 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseClassLoader.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$AtomicMethodClassFileTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$AtomicMethodClassFileTransformer.class new file mode 100755 index 0000000000..c671d727be Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$AtomicMethodClassFileTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$AtomicObjectClassFileTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$AtomicObjectClassFileTransformer.class new file mode 100755 index 0000000000..14b7a8a0f3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$AtomicObjectClassFileTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$PrepareClassFileTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$PrepareClassFileTransformer.class new file mode 100755 index 0000000000..c032016eb2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$PrepareClassFileTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$TransactionLocalObjectClassFileTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$TransactionLocalObjectClassFileTransformer.class new file mode 100755 index 0000000000..e194503d28 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent$TransactionLocalObjectClassFileTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent.class new file mode 100755 index 0000000000..78414a2921 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/MultiverseJavaAgent.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AbstractClassFileTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AbstractClassFileTransformer.class new file mode 100755 index 0000000000..7908052485 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AbstractClassFileTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AsmUtils.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AsmUtils.class new file mode 100755 index 0000000000..8aeecc9be3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AsmUtils.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AtomicMethodClassNodeTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AtomicMethodClassNodeTransformer.class new file mode 100755 index 0000000000..c44a07c08d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AtomicMethodClassNodeTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AtomicObjectClassNodeTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AtomicObjectClassNodeTransformer.class new file mode 100755 index 0000000000..f7350fd31e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/AtomicObjectClassNodeTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/ClassBuilder.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/ClassBuilder.class new file mode 100755 index 0000000000..52657e4aa4 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/ClassBuilder.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/CodeBuilder.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/CodeBuilder.class new file mode 100755 index 0000000000..e32b607d27 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/CodeBuilder.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/PreparationAnnotation.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/PreparationAnnotation.class new file mode 100755 index 0000000000..27ab7c8694 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/PreparationAnnotation.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/PreparationClassNodeTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/PreparationClassNodeTransformer.class new file mode 100755 index 0000000000..4f04e66704 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/PreparationClassNodeTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/TranlocalClassNodeTransformer$ReadonlyCheckAdviceAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/TranlocalClassNodeTransformer$ReadonlyCheckAdviceAdapter.class new file mode 100755 index 0000000000..7b9568b65b Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/TranlocalClassNodeTransformer$ReadonlyCheckAdviceAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/TranlocalClassNodeTransformer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/TranlocalClassNodeTransformer.class new file mode 100755 index 0000000000..5bcbaba728 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/asm/TranlocalClassNodeTransformer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/todo.txt b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/todo.txt new file mode 100755 index 0000000000..b16e8f0ec0 --- /dev/null +++ b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/instrumentation/todo.txt @@ -0,0 +1,35 @@ +todo + +- er is een probleem met atomic en constructors. + +- Het toevoegen van een Atomic annotation geeft problemen met een constantpool. + +- bij de Tranlocal nog een snapshot + +- TranlocalSnapshot + +- de debug info van de methodes uit de FastAtomicObjectMixin meenemen naar de class zelf. + +- test for multiple clinit clauses + +idea + +done + +- de automatic package moet gerenamed worden. + +- Tranlocal opzetten mbv tree api + +- bij de Tranlocal moet nog een committed check gedaan worden + +- problemen met het toevoegen van nieuwe classes in asm structuur + +- aangezien je een chain hebt, ben je de orginele kwijt... zou je die misschien mee kunnen geven? + +- de nieuwe Tranlocal toevoegen aan de classloader. + +- Tranlocal en privatize constructor + +- bij de Tranlocal getDirtnessState + + diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/FastAtomicObjectMixin.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/FastAtomicObjectMixin.class new file mode 100755 index 0000000000..3e04a5d79c Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/FastAtomicObjectMixin.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/SlowAtomicObjectMixin$State.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/SlowAtomicObjectMixin$State.class new file mode 100755 index 0000000000..9e4f6f2a66 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/SlowAtomicObjectMixin$State.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/SlowAtomicObjectMixin.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/SlowAtomicObjectMixin.class new file mode 100755 index 0000000000..177a1e5ebb Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/standard/mixins/SlowAtomicObjectMixin.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/AtomicTemplate$InvisibleCheckedException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/AtomicTemplate$InvisibleCheckedException.class new file mode 100755 index 0000000000..0f9dfa6f49 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/AtomicTemplate$InvisibleCheckedException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/AtomicTemplate.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/AtomicTemplate.class new file mode 100755 index 0000000000..f2170fd40e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/AtomicTemplate.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/OrElseTemplate.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/OrElseTemplate.class new file mode 100755 index 0000000000..5cf6e83416 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/templates/OrElseTemplate.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/todo.txt b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/todo.txt new file mode 100755 index 0000000000..3c940ff6d5 --- /dev/null +++ b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/todo.txt @@ -0,0 +1,219 @@ +todo tasks + +- testen wat er gebeurd bij een duplicate field.. dus als je een field toevoegd doe ook al in +de mixin zit. + +- testen wat er gebeurd bij een duplicate method... dus als een method toevoegd doe ook al +in de mixin zit. + +- er is een probleem bij een atomicobject zonder velden + +- flashback transactions test + +- de exclude functionaliteit moet getest worden. + +- instrumentatie gaat fout als er velden worden uitgesloten (misschien access, misschien exclude) en +blijven dus netjes in de AtomicObject staan, maar de code die doet aanroepen op de Tranlocal. + Dit kan opgelost worden mbv een custom remapper implementatie te maken. + +- stm exectutor aanpassen zodat hij op de instrumentatie werkt. + +- constructors en atomic kunnen niet goed omgaan met super calls + +- constructors en atomic kunnen niet goed omgaan met this calls + +- de Tranlocal bij de instrumentatie moet speciale behandeling hebben voor methods zodat +ze public zijn. + +- TransactionalObject annotation and AtomicObject interface + +- bij de tranlocal instrumentatie, een grote hoeveelheid no-ops in de code. + +- incTransactionReadonlyCount: niet gebruikt + +- instead of having a locked bit, the tranlocal could have access to the transaction. Once committed, +this reference can be set to null. Can also be used for detecting if a tranlocal can in from a different +transaction. + +- what happens when a throwable is thrown while executing the orelse template. if the throwable +is caught, it leaves the transaction in an inconsistent state. + +- exceptions in the exception package zijn afhankelijk van de standard package + +- de name 'standard' voor de default stm implementation is lame. + +- the interfaces in the api package contain a lot of implementation specific stuff. A lot of that +stuff could be added using instrumentation. + +- de methods of the AtomicObject should be part of the standard implementation. + +- RetrySpinningWriteSetLockPolicy + +- BalancedTree moet nog rotatie hebben + +- wat moet er gebeuren als een transactie een load doet op uncommitted data. + + opgelost in de code + + opgelost in de documentatie van de load methodes + - opgelost in de code van andere methodes behalve de loadmethods van de transactie. + - documentatie + - unit tests + +- FastTom.registerRetryListener en de noProgressPossibleException + +- atomic en constructors werk niet goed mbt instrumentatie.. Class validate fout + + -de PipelineLongTest geeft bij het debuggen een : + java.lang.ClassFormatError: Invalid length 65519 in LocalVariableTable in class file org/multiverse/integration/PipelineLongTest + Dit komt door de atomicclassfiletransformer aangezien dat de enigste instrumentatie is die er nu in zit. + +- FastTomTest afmaken + +- checkin op subversion + +- LOAD PROBLAMTIEK + + - it could happen that a readonly transaction fails because it reads a TransactionalObject that + is locked. + + - privatize functie aanpassen zodat fail fast. + + - it could happen that a writetransaction fails with the privatized call because it reads a + TransactionalObject that is locked. + +- IntValuePerformanceTest moet naar benchy geport worden. + +- CigaretteSmokersProblemSimplifiedTest + +- move the benchmarks to this project + - depends on instrumentation + +- SpinningWriteSetlockPolicy unit tests + +todo features + +- name on transaction + +- retry in instrumentation needs to be added + +- retry limit on atomictemplate. + +- support for real serialized isolation level + +- instrumentation of Transactional Objects. + +- history for stale objects + +- customizable contention managers + +- customizable lock acquire manager. + +- pessimistic locking online + +- nested transactions + +- SkipList + +- better queue that allows better concurrency. + +idea: + +- a performance test comparing the 'managed ref' approach vs the full blown multiverse approach. + +- a performance comparison between 'uninstrumented' code and instrumented code. + +- statistics about number of loads that could get information from the transaction instead +of loading from main memory. This is also needed for optimizing bytecode. + +- Commute Clojure nazoeken + +- after commit event (for example for starting threads). + +- could the abort and retry mechanism be implemented more efficiently? Atm the whole transaction +is aborted and the complete transaction needs to be re-done. A more efficient implemention could block +and wait until a write has happened on some field and continue with the operation, just like a classic +wait/notify. + +- more efficient wait/notify: for example the balancedtree and sleeping for a specific key. Atm +all objects loaded by a transaction are a reason to wake up (cause a change happens on them). But +what if you are only interested in a specific field... this could reduce the stress on the mechanism + +- logging instrumentation: instrumentation that adds logging. + +- transaction level statistics + +- jmx component om statistics grafisch inzichtelijk te maken + +- door onderscheid te maken tussen attachednew en loaded, zou je eventueel nog optimalisaties kunnen doen: + - op nieuw objecten hoef je geen lock aan te vragen + - op nieuw objecten hoef je niet te valideren + - op nieuw objecten hoef je geen lock te releasen + - op nieuw objecten hoef je je niet druk te maken over retrylisteners + +- online pessimistic locking + +- Optimization for transaction usage + +via DebugConstants er in laten genereren +- exceptions opnieuw aanmaken of bestaande instance hergebruiken: + +- te kijken wat te doen met de exception hierarcy.. zoals moeten andere exceptions extenden van abortexception and +retryerror? + +- bloomfilter + +- heeft het nu om een read op een writetransactie te hebben terwijl je de $readPrivatized daar ook al hebt? + +- abort silently + +- retry moet gebeuren als er een write is gebeurd + +- all methods of transactionalobjects should automatically have the automic tag + +- ipv de cheap latch zou je ook de monitor lock van de transactie kunnen gebruiken. +Dit scheelt nog een object creatie. + +- enchance the $Object structure so that it also can be used for tree (replacement for the identity hashmap) + +- timeout tijd.. spaarrekening waar je iedere keer vanaf kunt boeken. + +- de timeout tijds op de locks zetten + +- een abortAndRetry interruptibly? + +- abort en retry met timeouts? + +- managed ref annotation: by setting a ref, you don't force an object to an atomic object +but a normal object using a managed ref. + +done + +- fields can be excluded by using the @Exclude annotation. + +- dirtiness state -> dirtiness status so that is looks more like the transactionstatus. + +- cyclichandling test TranlocalSingleLinkedNode en origin + +- documentatie bij de stm is matig + +- TL2STM is onlogisch qua naamgeving aangezien TL2 niet wordt gebruikt. + +- package indeling: in de root staan zowel de interfaces als implementaties. + +- bij de AtomicObject heb je een load die een immutable versie terug geeft, en een privatize voor +een mutable versie. Bij de transactie heb je een load die een mutable versie terug geeft, en een +load readonly die een immutable versie terug geeft. Dit is inconsistent. + +- incTransactionPendingRetryCount: niet gebruikt + +- incTransactionRetriedCount: niet gebruikt + +- de naam voor tranlocal moet nog aangepast worden in de instrumentatie + +- exception hierarchy still is messy + +- constructors van atomicobjecten testen + +--------------------------------- + +de writes gebeuren nadat de versie is opgehoogd, je kunt dus niet zomaar de laatste versie uitlezen + diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/transformaties.txt b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/transformaties.txt new file mode 100755 index 0000000000..2bf1edba21 --- /dev/null +++ b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/transformaties.txt @@ -0,0 +1,180 @@ +doel: + +bepalen welke initiele transformaties (zonder optimalisaties) nodig zijn + +------------------- volledig stateless classes----------------------------------------------------------- + +aangezien ze geen state hebben kunnen ze geignored worden. + +-------------------- objecten met alleen maar primtives zonder interfaces en super classes --------------- + +voor: + +class Foo{ + int a; + boolean b; + + void inc(){ + a++; + } +} + +na: + +class Foo implements TransactionalObject{ + + Foo(){ + Transaction t = TransactionThreadLocal.get(); + t.attachAsNew(new $Foo()); + } + + void inc(){ + Transaction t = TransactionThreadLocal.get(); + $Foo $foo = ($Foo)t.read(this); + $foo.inc(); + } + + +alle methods van TransactionalObject +} + +class $Foo implements $Object{ + int a; + int b; + boolean committed; + long version; + + void inc(){ + if(committed){ + throw new ReadonlyException(); + }else{ + a++; + } + } + + ... + + + methods van $Object +} + +Stappen: + +- Plaats TransactionalObject interface op Original en implementeer die + +- Verhuis alle velden van Object naar $Object + +- Copieer de methodes van Object naar $Object + +- Transformeer alle methodes van Original zodat ze de call forwarden naarde $Object + +- de methodes die een mutatie aanbrengen op het $Object moeten voorzien zijn van een committed check. + +- ? Moet de $Object ook de interfaces/superclasses van de Original overnemen? + +--------------- methodes zonder argumenten ------------------------------------ + +--------------- methodes met primitive argumenten ----------------------------- + +--------------- methodes met transactional argumenten ------------------------- + +--------------- methodes met runtime determined argumenten -------------------- + +--------------- methode met void return type ---------------------------------- + +--------------- methode met primtive return type ------------------------------ + +--------------- + +--------------- objecten met non stm members and non primitives --------------- + +---------------- object met only final fields --------------------------------- + +voor: + +class IntValueConstant{ + + final IntValue intValue; + + public IntValueConstant(int i){ + intValue = new IntValue(i); + } + + void inc(){ + intValue.inc(); + } +} + + +na: + +class IntValueConstant{ + + final IntValue intValue; + + public IntValueConstant(int i){ + intValue = new IntValue(i); + } + +} + + +todo: hoeft dus niets aan te gebeuren. + +--------------- objecten met mutable stm members ------------------------------ + +voor: + +class IntValueHolder{ + + IntValue intValue; + + void set(IntValue intValue){ + this.intValue = intValue; + } + + IntValue get(){ + return intValue; + } +} + +na: + +class IntValueHolder{ + + void set(IntValue intValue){ + Transaction t = TransactionThreadLocal.get(); + $IntValueHolder tranlocalThis = ($IntValueHolder)t.read(this); + tranlocalThis.set(intValue); + } +} + +class $IntValueHolder implements $Object{ + + IntValue intValue; + + void set(IntValue intValue){ + this.intValue = intValue; + } + + void get(){ + return intValue; + } +} + +---------------- objecten met runtime determined stm members ----------------- + + +----------------- static inner objects --------------------------------------- + + +--------------------- non static inner objects ------------------------------- + +------------------- subclasses ----------------------------------------------- + + +------------------- static methods ------------------------------------------- + + +-------------------- missing transaction ------------------------------------- + +idealiter zou je willen dat zo gauw er geen transactie aanwezig is, er een wordt gemaakt en na afloop +weer wordt gecommit. \ No newline at end of file diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/GlobalStmInstance.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/GlobalStmInstance.class new file mode 100755 index 0000000000..6790add051 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/GlobalStmInstance.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/Listeners.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/Listeners.class new file mode 100755 index 0000000000..0128cd7e35 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/Listeners.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/StmUtils.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/StmUtils.class new file mode 100755 index 0000000000..a8d0d436aa Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/StmUtils.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/TransactionThreadLocal.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/TransactionThreadLocal.class new file mode 100755 index 0000000000..11eaf6b0fa Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/TransactionThreadLocal.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/latches/CheapLatch.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/latches/CheapLatch.class new file mode 100755 index 0000000000..dd9500abbc Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/utils/latches/CheapLatch.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/FailFastWriteSetLockPolicy.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/FailFastWriteSetLockPolicy.class new file mode 100755 index 0000000000..c649098344 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/FailFastWriteSetLockPolicy.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/RetrySpinningWriteSetLockPolicy.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/RetrySpinningWriteSetLockPolicy.class new file mode 100755 index 0000000000..29acd4c2e1 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/RetrySpinningWriteSetLockPolicy.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/SpinningWriteSetLockPolicy.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/SpinningWriteSetLockPolicy.class new file mode 100755 index 0000000000..5d4fd1461d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/SpinningWriteSetLockPolicy.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/WriteSet.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/WriteSet.class new file mode 100755 index 0000000000..2f82125e77 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/WriteSet.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/WriteSetLockPolicy.class b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/WriteSetLockPolicy.class new file mode 100755 index 0000000000..e05819853d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/multiverse/writeset/WriteSetLockPolicy.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/AnnotationVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/AnnotationVisitor.class new file mode 100755 index 0000000000..3749adf966 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/AnnotationVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/AnnotationWriter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/AnnotationWriter.class new file mode 100755 index 0000000000..968291a431 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/AnnotationWriter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Attribute.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Attribute.class new file mode 100755 index 0000000000..e2df42e56a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Attribute.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ByteVector.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ByteVector.class new file mode 100755 index 0000000000..d090ec850b Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ByteVector.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassAdapter.class new file mode 100755 index 0000000000..dafeb12e19 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassReader.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassReader.class new file mode 100755 index 0000000000..9d5e12eeee Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassReader.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassVisitor.class new file mode 100755 index 0000000000..cfa07cb5fc Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassWriter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassWriter.class new file mode 100755 index 0000000000..c8e76c7689 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/ClassWriter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Edge.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Edge.class new file mode 100755 index 0000000000..076dc75ac6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Edge.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/FieldVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/FieldVisitor.class new file mode 100755 index 0000000000..d8400758c3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/FieldVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/FieldWriter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/FieldWriter.class new file mode 100755 index 0000000000..5955f2c484 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/FieldWriter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Frame.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Frame.class new file mode 100755 index 0000000000..b9db9f5470 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Frame.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Handler.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Handler.class new file mode 100755 index 0000000000..8ba5894090 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Handler.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Item.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Item.class new file mode 100755 index 0000000000..5bc7e3091f Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Item.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Label.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Label.class new file mode 100755 index 0000000000..73384edd82 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Label.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodAdapter.class new file mode 100755 index 0000000000..4d13a0d9c4 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodVisitor.class new file mode 100755 index 0000000000..8a3831f73d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodWriter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodWriter.class new file mode 100755 index 0000000000..ccb0776f61 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/MethodWriter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Opcodes.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Opcodes.class new file mode 100755 index 0000000000..6c357d25dd Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Opcodes.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Type.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Type.class new file mode 100755 index 0000000000..6d15ab94ae Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/Type.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/AdviceAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/AdviceAdapter.class new file mode 100755 index 0000000000..24f8fb2bc3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/AdviceAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/AnalyzerAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/AnalyzerAdapter.class new file mode 100755 index 0000000000..290677f0f5 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/AnalyzerAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/CodeSizeEvaluator.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/CodeSizeEvaluator.class new file mode 100755 index 0000000000..a4fe080f8a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/CodeSizeEvaluator.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/EmptyVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/EmptyVisitor.class new file mode 100755 index 0000000000..95a6aafeec Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/EmptyVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/GeneratorAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/GeneratorAdapter.class new file mode 100755 index 0000000000..2a5d570994 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/GeneratorAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/InstructionAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/InstructionAdapter.class new file mode 100755 index 0000000000..e99d73b8be Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/InstructionAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$1.class new file mode 100755 index 0000000000..6d4afefae1 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$Instantiation.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$Instantiation.class new file mode 100755 index 0000000000..ec1fe45b32 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$Instantiation.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$Subroutine.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$Subroutine.class new file mode 100755 index 0000000000..0cd80cb333 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter$Subroutine.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter.class new file mode 100755 index 0000000000..22851be254 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/JSRInlinerAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/LocalVariablesSorter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/LocalVariablesSorter.class new file mode 100755 index 0000000000..320371c99d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/LocalVariablesSorter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/Method.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/Method.class new file mode 100755 index 0000000000..8634265c9c Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/Method.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/Remapper.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/Remapper.class new file mode 100755 index 0000000000..0919b578a0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/Remapper.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingAnnotationAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingAnnotationAdapter.class new file mode 100755 index 0000000000..b34261f5e1 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingAnnotationAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingClassAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingClassAdapter.class new file mode 100755 index 0000000000..e5aaf97862 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingClassAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingFieldAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingFieldAdapter.class new file mode 100755 index 0000000000..44bf4221dc Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingFieldAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingMethodAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingMethodAdapter.class new file mode 100755 index 0000000000..e8c767b802 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingMethodAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingSignatureAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingSignatureAdapter.class new file mode 100755 index 0000000000..0d62473f79 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/RemappingSignatureAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SerialVersionUIDAdder$Item.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SerialVersionUIDAdder$Item.class new file mode 100755 index 0000000000..1ebc0a58e6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SerialVersionUIDAdder$Item.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SerialVersionUIDAdder.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SerialVersionUIDAdder.class new file mode 100755 index 0000000000..f34c853b84 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SerialVersionUIDAdder.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SimpleRemapper.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SimpleRemapper.class new file mode 100755 index 0000000000..1f4d1760b6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/SimpleRemapper.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/StaticInitMerger.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/StaticInitMerger.class new file mode 100755 index 0000000000..381034342e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/StaticInitMerger.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/TableSwitchGenerator.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/TableSwitchGenerator.class new file mode 100755 index 0000000000..c286987db8 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/commons/TableSwitchGenerator.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureReader.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureReader.class new file mode 100755 index 0000000000..c09b44608a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureReader.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureVisitor.class new file mode 100755 index 0000000000..f4b548096d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureWriter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureWriter.class new file mode 100755 index 0000000000..0e992a2f79 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/signature/SignatureWriter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/AbstractInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/AbstractInsnNode.class new file mode 100755 index 0000000000..b228ccf012 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/AbstractInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/AnnotationNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/AnnotationNode.class new file mode 100755 index 0000000000..33c429e384 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/AnnotationNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/ClassNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/ClassNode.class new file mode 100755 index 0000000000..2ad9952a2b Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/ClassNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FieldInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FieldInsnNode.class new file mode 100755 index 0000000000..d5414fd7b5 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FieldInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FieldNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FieldNode.class new file mode 100755 index 0000000000..029a5e8730 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FieldNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FrameNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FrameNode.class new file mode 100755 index 0000000000..d6fffa4656 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/FrameNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/IincInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/IincInsnNode.class new file mode 100755 index 0000000000..eab63819e0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/IincInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InnerClassNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InnerClassNode.class new file mode 100755 index 0000000000..db65bb34b8 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InnerClassNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList$1.class new file mode 100755 index 0000000000..39b07a49c9 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList$InsnListIterator.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList$InsnListIterator.class new file mode 100755 index 0000000000..e63a2d5798 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList$InsnListIterator.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList.class new file mode 100755 index 0000000000..719abb3e4f Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnList.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnNode.class new file mode 100755 index 0000000000..e823a1649a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/InsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/IntInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/IntInsnNode.class new file mode 100755 index 0000000000..c99cc6f94b Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/IntInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/JumpInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/JumpInsnNode.class new file mode 100755 index 0000000000..7383e9027e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/JumpInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LabelNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LabelNode.class new file mode 100755 index 0000000000..8637b7e0bd Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LabelNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LdcInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LdcInsnNode.class new file mode 100755 index 0000000000..f2a8040cb0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LdcInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LineNumberNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LineNumberNode.class new file mode 100755 index 0000000000..47ab3348d2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LineNumberNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LocalVariableNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LocalVariableNode.class new file mode 100755 index 0000000000..bcc385eebe Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LocalVariableNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LookupSwitchInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LookupSwitchInsnNode.class new file mode 100755 index 0000000000..3b8169831e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/LookupSwitchInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MemberNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MemberNode.class new file mode 100755 index 0000000000..1eaf95eefa Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MemberNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodInsnNode.class new file mode 100755 index 0000000000..f676b98ee0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodNode$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodNode$1.class new file mode 100755 index 0000000000..c6a7563460 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodNode$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodNode.class new file mode 100755 index 0000000000..ea0e5a707b Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MethodNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MultiANewArrayInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MultiANewArrayInsnNode.class new file mode 100755 index 0000000000..54a41b2ef0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/MultiANewArrayInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TableSwitchInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TableSwitchInsnNode.class new file mode 100755 index 0000000000..009369bba2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TableSwitchInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TryCatchBlockNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TryCatchBlockNode.class new file mode 100755 index 0000000000..fd6f4bf610 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TryCatchBlockNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TypeInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TypeInsnNode.class new file mode 100755 index 0000000000..3f0909f72f Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/TypeInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/VarInsnNode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/VarInsnNode.class new file mode 100755 index 0000000000..a764910c40 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/VarInsnNode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Analyzer.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Analyzer.class new file mode 100755 index 0000000000..89e5af8154 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Analyzer.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/AnalyzerException.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/AnalyzerException.class new file mode 100755 index 0000000000..3f6701bd66 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/AnalyzerException.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicInterpreter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicInterpreter.class new file mode 100755 index 0000000000..a4e54a19ca Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicInterpreter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicValue.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicValue.class new file mode 100755 index 0000000000..70faf779fe Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicValue.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicVerifier.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicVerifier.class new file mode 100755 index 0000000000..3ec1a6169f Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/BasicVerifier.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Frame.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Frame.class new file mode 100755 index 0000000000..82cdb94ecc Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Frame.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Interpreter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Interpreter.class new file mode 100755 index 0000000000..67764534dd Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Interpreter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SimpleVerifier.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SimpleVerifier.class new file mode 100755 index 0000000000..495f4ce2a3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SimpleVerifier.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SmallSet.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SmallSet.class new file mode 100755 index 0000000000..670cfd40ca Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SmallSet.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SourceInterpreter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SourceInterpreter.class new file mode 100755 index 0000000000..357cba3f32 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SourceInterpreter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SourceValue.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SourceValue.class new file mode 100755 index 0000000000..483cc0953c Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/SourceValue.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Subroutine.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Subroutine.class new file mode 100755 index 0000000000..826c339da7 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Subroutine.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Value.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Value.class new file mode 100755 index 0000000000..e13df4bda0 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/tree/analysis/Value.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifiable.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifiable.class new file mode 100755 index 0000000000..7f08364907 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifiable.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierAbstractVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierAbstractVisitor.class new file mode 100755 index 0000000000..14f66bafb6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierAbstractVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierAnnotationVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierAnnotationVisitor.class new file mode 100755 index 0000000000..f53b98aa08 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierAnnotationVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierClassVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierClassVisitor.class new file mode 100755 index 0000000000..5a3f160c36 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierClassVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierFieldVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierFieldVisitor.class new file mode 100755 index 0000000000..a5015d33fc Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierFieldVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierMethodVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierMethodVisitor.class new file mode 100755 index 0000000000..d580ea9d4a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/ASMifierMethodVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/AbstractVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/AbstractVisitor.class new file mode 100755 index 0000000000..8528397097 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/AbstractVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckAnnotationAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckAnnotationAdapter.class new file mode 100755 index 0000000000..735aad03aa Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckAnnotationAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckClassAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckClassAdapter.class new file mode 100755 index 0000000000..00e99f554a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckClassAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckFieldAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckFieldAdapter.class new file mode 100755 index 0000000000..1eeef94ff6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckFieldAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckMethodAdapter$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckMethodAdapter$1.class new file mode 100755 index 0000000000..d7dc973fab Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckMethodAdapter$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckMethodAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckMethodAdapter.class new file mode 100755 index 0000000000..4c089fa9bf Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckMethodAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckSignatureAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckSignatureAdapter.class new file mode 100755 index 0000000000..a6ffc93fb7 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/CheckSignatureAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceAbstractVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceAbstractVisitor.class new file mode 100755 index 0000000000..03bd322af5 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceAbstractVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceAnnotationVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceAnnotationVisitor.class new file mode 100755 index 0000000000..6e2a4862c3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceAnnotationVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceClassVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceClassVisitor.class new file mode 100755 index 0000000000..3bac0d50b5 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceClassVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceFieldVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceFieldVisitor.class new file mode 100755 index 0000000000..d43c379818 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceFieldVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceMethodVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceMethodVisitor.class new file mode 100755 index 0000000000..b4a8e4d680 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceMethodVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceSignatureVisitor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceSignatureVisitor.class new file mode 100755 index 0000000000..75f6eb21d2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/TraceSignatureVisitor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/Traceable.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/Traceable.class new file mode 100755 index 0000000000..07665044d4 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/util/Traceable.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$1.class new file mode 100755 index 0000000000..190895dc41 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationDefaultRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationDefaultRule.class new file mode 100755 index 0000000000..53e29f026e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationDefaultRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationParameterRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationParameterRule.class new file mode 100755 index 0000000000..f002f69b2d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationParameterRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationRule.class new file mode 100755 index 0000000000..b9196397b8 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueAnnotationRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueAnnotationRule.class new file mode 100755 index 0000000000..c3a9343e45 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueAnnotationRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueArrayRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueArrayRule.class new file mode 100755 index 0000000000..58dc72800f Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueArrayRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueEnumRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueEnumRule.class new file mode 100755 index 0000000000..d8b73462d6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueEnumRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueRule.class new file mode 100755 index 0000000000..eb6abcf8c3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$AnnotationValueRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ClassRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ClassRule.class new file mode 100755 index 0000000000..e0a25dc0d8 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ClassRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ExceptionRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ExceptionRule.class new file mode 100755 index 0000000000..723d7bbc94 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ExceptionRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ExceptionsRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ExceptionsRule.class new file mode 100755 index 0000000000..d6d13670a8 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$ExceptionsRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FieldRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FieldRule.class new file mode 100755 index 0000000000..1f65d75871 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FieldRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FrameRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FrameRule.class new file mode 100755 index 0000000000..2c636893dd Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FrameRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FrameTypeRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FrameTypeRule.class new file mode 100755 index 0000000000..a064ed306d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$FrameTypeRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InnerClassRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InnerClassRule.class new file mode 100755 index 0000000000..dc31cc35fc Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InnerClassRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InterfaceRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InterfaceRule.class new file mode 100755 index 0000000000..609a191a66 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InterfaceRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InterfacesRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InterfacesRule.class new file mode 100755 index 0000000000..b6ea9db3ef Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$InterfacesRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LabelRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LabelRule.class new file mode 100755 index 0000000000..58d9aec9ad Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LabelRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LineNumberRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LineNumberRule.class new file mode 100755 index 0000000000..a9b1a3654d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LineNumberRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LocalVarRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LocalVarRule.class new file mode 100755 index 0000000000..0be1e3cb3c Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LocalVarRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LookupSwitchLabelRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LookupSwitchLabelRule.class new file mode 100755 index 0000000000..5c7aa735bc Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LookupSwitchLabelRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LookupSwitchRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LookupSwitchRule.class new file mode 100755 index 0000000000..5973c92d28 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$LookupSwitchRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$MaxRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$MaxRule.class new file mode 100755 index 0000000000..3c5c94f0b8 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$MaxRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$MethodRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$MethodRule.class new file mode 100755 index 0000000000..69ee5a7c4a Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$MethodRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$Opcode.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$Opcode.class new file mode 100755 index 0000000000..3aeaf7aa0d Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$Opcode.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OpcodeGroup.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OpcodeGroup.class new file mode 100755 index 0000000000..2eb98dbad4 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OpcodeGroup.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OpcodesRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OpcodesRule.class new file mode 100755 index 0000000000..945b5a6415 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OpcodesRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OuterClassRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OuterClassRule.class new file mode 100755 index 0000000000..b2793c4f90 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$OuterClassRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$Rule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$Rule.class new file mode 100755 index 0000000000..25e8eacdb6 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$Rule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$RuleSet.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$RuleSet.class new file mode 100755 index 0000000000..547993bbd3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$RuleSet.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$SourceRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$SourceRule.class new file mode 100755 index 0000000000..4350c21683 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$SourceRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TableSwitchLabelRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TableSwitchLabelRule.class new file mode 100755 index 0000000000..81eb39e7ba Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TableSwitchLabelRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TableSwitchRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TableSwitchRule.class new file mode 100755 index 0000000000..759356445c Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TableSwitchRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TryCatchRule.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TryCatchRule.class new file mode 100755 index 0000000000..c00c821194 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler$TryCatchRule.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler.class new file mode 100755 index 0000000000..6c383051f1 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/ASMContentHandler.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$1.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$1.class new file mode 100755 index 0000000000..6308b54968 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$1.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ASMContentHandlerFactory.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ASMContentHandlerFactory.class new file mode 100755 index 0000000000..dc726b6382 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ASMContentHandlerFactory.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ContentHandlerFactory.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ContentHandlerFactory.class new file mode 100755 index 0000000000..61fb9bcc09 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ContentHandlerFactory.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$EntryElement.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$EntryElement.class new file mode 100755 index 0000000000..caaba411cb Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$EntryElement.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$InputSlicingHandler.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$InputSlicingHandler.class new file mode 100755 index 0000000000..3664570748 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$InputSlicingHandler.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$OutputSlicingHandler.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$OutputSlicingHandler.class new file mode 100755 index 0000000000..beef1cb6d1 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$OutputSlicingHandler.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ProtectedInputStream.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ProtectedInputStream.class new file mode 100755 index 0000000000..6bea041e37 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ProtectedInputStream.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SAXWriter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SAXWriter.class new file mode 100755 index 0000000000..77d2244985 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SAXWriter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SAXWriterFactory.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SAXWriterFactory.class new file mode 100755 index 0000000000..70174ccaa2 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SAXWriterFactory.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SingleDocElement.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SingleDocElement.class new file mode 100755 index 0000000000..9babefd816 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SingleDocElement.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SubdocumentHandlerFactory.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SubdocumentHandlerFactory.class new file mode 100755 index 0000000000..03b91fd1d1 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$SubdocumentHandlerFactory.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$TransformerHandlerFactory.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$TransformerHandlerFactory.class new file mode 100755 index 0000000000..96257c4ebd Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$TransformerHandlerFactory.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ZipEntryElement.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ZipEntryElement.class new file mode 100755 index 0000000000..aa4f086c8e Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor$ZipEntryElement.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor.class new file mode 100755 index 0000000000..5d4150b31c Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/Processor.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXAdapter.class new file mode 100755 index 0000000000..0c557514ce Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXAnnotationAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXAnnotationAdapter.class new file mode 100755 index 0000000000..ce0d21b43b Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXAnnotationAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXClassAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXClassAdapter.class new file mode 100755 index 0000000000..71bb2f87d3 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXClassAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXCodeAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXCodeAdapter.class new file mode 100755 index 0000000000..e80ca30342 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXCodeAdapter.class differ diff --git a/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXFieldAdapter.class b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXFieldAdapter.class new file mode 100755 index 0000000000..60ca4fb164 Binary files /dev/null and b/embedded-repo/org/multiverse/multiverse/0.3/org/objectweb/asm/xml/SAXFieldAdapter.class differ diff --git a/kernel/pom.xml b/kernel/pom.xml old mode 100644 new mode 100755 index 7d2670bdaf..e5830b5dfe --- a/kernel/pom.xml +++ b/kernel/pom.xml @@ -77,6 +77,11 @@ javautils 2.7.4-0.1 + + org.multiverse + multiverse + 0.3 + @@ -104,11 +109,6 @@ scala-json 1.0 - - org.multiverse - multiverse - 0.3 - diff --git a/kernel/src/main/scala/actor/Actor.scala b/kernel/src/main/scala/actor/Actor.scala old mode 100644 new mode 100755 index 5e21048fd4..139e5d914b --- a/kernel/src/main/scala/actor/Actor.scala +++ b/kernel/src/main/scala/actor/Actor.scala @@ -19,6 +19,7 @@ import nio.{RemoteProtocolBuilder, RemoteClient, RemoteServer, RemoteRequestIdFa import management.Management import com.twitter.service.Stats +import org.multiverse.utils.TransactionThreadLocal._ sealed abstract class LifecycleMessage case class Init(config: AnyRef) extends LifecycleMessage @@ -464,7 +465,10 @@ trait Actor extends Logging with TransactionManagement { } private def dispatch[T](messageHandle: MessageInvocation) = { - if (messageHandle.tx.isDefined) TransactionManagement.threadBoundTx.set(messageHandle.tx) + if (messageHandle.tx.isDefined) { + TransactionManagement.threadBoundTx.set(messageHandle.tx) + setThreadLocalTransaction(messageHandle.tx.get.transaction) + } val message = messageHandle.message //serializeMessage(messageHandle.message) val future = messageHandle.future try { @@ -479,11 +483,15 @@ trait Actor extends Logging with TransactionManagement { else e.printStackTrace } finally { TransactionManagement.threadBoundTx.set(None) + setThreadLocalTransaction(null) } } private def transactionalDispatch[T](messageHandle: MessageInvocation) = { - if (messageHandle.tx.isDefined) TransactionManagement.threadBoundTx.set(messageHandle.tx) + if (messageHandle.tx.isDefined) { + TransactionManagement.threadBoundTx.set(messageHandle.tx) + setThreadLocalTransaction(messageHandle.tx.get.transaction) + } val message = messageHandle.message //serializeMessage(messageHandle.message) val future = messageHandle.future try { @@ -500,6 +508,7 @@ trait Actor extends Logging with TransactionManagement { case e => rollback(activeTx) TransactionManagement.threadBoundTx.set(None) // need to clear threadBoundTx before call to supervisor + setThreadLocalTransaction(null) // FIXME to fix supervisor restart of remote actor for oneway calls, inject a supervisor proxy that can send notification back to client if (supervisor.isDefined) supervisor.get ! Exit(this, e) if (future.isDefined) future.get.completeWithException(this, e) @@ -510,6 +519,7 @@ trait Actor extends Logging with TransactionManagement { else tryToPrecommitTransaction rescheduleClashedMessages TransactionManagement.threadBoundTx.set(None) + setThreadLocalTransaction(null) } } diff --git a/kernel/src/main/scala/nio/RemoteServer.scala b/kernel/src/main/scala/nio/RemoteServer.scala old mode 100644 new mode 100755 index bbc223247e..fda24718c4 --- a/kernel/src/main/scala/nio/RemoteServer.scala +++ b/kernel/src/main/scala/nio/RemoteServer.scala @@ -235,7 +235,11 @@ class RemoteServerHandler(val name: String, val applicationLoader: Option[ClassL if (tx.isDefined) { tx.get.reinit TransactionManagement.threadBoundTx.set(tx) - } else TransactionManagement.threadBoundTx.set(None) + setThreadLocalTransaction(tx.transaction) + } else { + TransactionManagement.threadBoundTx.set(None) + setThreadLocalTransaction(null) + } } */ private def unescapeArgs(args: scala.List[AnyRef], argClasses: scala.List[Class[_]], timeout: Long) = { diff --git a/kernel/src/main/scala/state/InMemoryState.scala b/kernel/src/main/scala/state/InMemoryState.scala new file mode 100755 index 0000000000..002929ab5e --- /dev/null +++ b/kernel/src/main/scala/state/InMemoryState.scala @@ -0,0 +1,61 @@ +/** + * Copyright (C) 2009 Scalable Solutions. + */ + +package se.scalablesolutions.akka.kernel.state + +import kernel.stm.{Ref, TransactionManagement} +import akka.collection._ + +import org.codehaus.aspectwerkz.proxy.Uuid + +import scala.collection.mutable.{ArrayBuffer, HashMap} + +/** + * Not thread-safe, but should only be using from within an Actor, e.g. one single thread at a time. + * + * @author Jonas Bonér + */ +class InMemoryTransactionalMap[K, V] extends TransactionalMap[K, V] { + protected[this] val ref = new TransactionalRef[HashTrie[K, V]](new HashTrie[K, V]) + + // ---- Overriding scala.collection.mutable.Map behavior ---- + override def contains(key: K): Boolean = ref.get.get.contains(key) + override def clear = ref.swap(new HashTrie[K, V]) + override def size: Int = ref.get.get.size + + // ---- For scala.collection.mutable.Map ---- + override def remove(key: K) = ref.swap(ref.get.get - key) + override def elements: Iterator[(K, V)] = ref.get.get.elements + override def get(key: K): Option[V] = ref.get.get.get(key) + override def put(key: K, value: V): Option[V] = { + val map = ref.get.get + val oldValue = map.get(key) + ref.swap(map.update(key, value)) + oldValue + } + override def -=(key: K) = remove(key) + override def update(key: K, value: V) = put(key, value) +} + +/** + * Implements an in-memory transactional vector. + * + * Not thread-safe, but should only be using from within an Actor, e.g. one single thread at a time. + * + * @author Jonas Bonér + */ +class InMemoryTransactionalVector[T] extends TransactionalVector[T] { + private[kernel] val ref = new TransactionalRef[Vector[T]](EmptyVector) + + def add(elem: T) = ref.swap(ref.get.get + elem) + def get(index: Int): T = ref.get.get.apply(index) + def getRange(start: Int, count: Int): List[T] = ref.get.get.slice(start, count).toList.asInstanceOf[List[T]] + + // ---- For Seq ---- + def length: Int = ref.get.get.length + def apply(index: Int): T = ref.get.get.apply(index) + override def elements: Iterator[T] = ref.get.get.elements + override def toList: List[T] = ref.get.get.toList +} + diff --git a/kernel/src/main/scala/state/State.scala b/kernel/src/main/scala/state/PersistentState.scala old mode 100644 new mode 100755 similarity index 53% rename from kernel/src/main/scala/state/State.scala rename to kernel/src/main/scala/state/PersistentState.scala index 45c0d7b1dc..9b75c38751 --- a/kernel/src/main/scala/state/State.scala +++ b/kernel/src/main/scala/state/PersistentState.scala @@ -4,133 +4,14 @@ package se.scalablesolutions.akka.kernel.state -import kernel.stm.TransactionManagement +import kernel.stm.{Ref, TransactionManagement} import akka.collection._ import org.codehaus.aspectwerkz.proxy.Uuid import scala.collection.mutable.{ArrayBuffer, HashMap} -import org.multiverse.standard.manuallyinstrumented.Ref - -sealed abstract class TransactionalStateConfig -abstract class PersistentStorageConfig extends TransactionalStateConfig -case class CassandraStorageConfig extends PersistentStorageConfig -case class TerracottaStorageConfig extends PersistentStorageConfig -case class TokyoCabinetStorageConfig extends PersistentStorageConfig -case class MongoStorageConfig extends PersistentStorageConfig - -/** - * Scala API. - *

- * Example Scala usage: - *

- * val myMap = TransactionalState.newPersistentMap(CassandraStorageConfig)
- * 
- */ -object TransactionalState extends TransactionalState - -/** - * Java API. - *

- * Example Java usage: - *

- * TransactionalState state = new TransactionalState();
- * TransactionalMap myMap = state.newPersistentMap(new CassandraStorageConfig());
- * 
- */ -class TransactionalState { - def newPersistentMap(config: PersistentStorageConfig): TransactionalMap[AnyRef, AnyRef] = config match { - case CassandraStorageConfig() => new CassandraPersistentTransactionalMap - case MongoStorageConfig() => new MongoPersistentTransactionalMap - case TerracottaStorageConfig() => throw new UnsupportedOperationException - case TokyoCabinetStorageConfig() => throw new UnsupportedOperationException - } - - def newPersistentVector(config: PersistentStorageConfig): TransactionalVector[AnyRef] = config match { - case CassandraStorageConfig() => new CassandraPersistentTransactionalVector - case MongoStorageConfig() => new MongoPersistentTransactionalVector - case TerracottaStorageConfig() => throw new UnsupportedOperationException - case TokyoCabinetStorageConfig() => throw new UnsupportedOperationException - } - - def newPersistentRef(config: PersistentStorageConfig): TransactionalRef[AnyRef] = config match { - case CassandraStorageConfig() => new CassandraPersistentTransactionalRef - case TerracottaStorageConfig() => throw new UnsupportedOperationException - case TokyoCabinetStorageConfig() => throw new UnsupportedOperationException - } - - def newInMemoryMap[K, V]: TransactionalMap[K, V] = new InMemoryTransactionalMap[K, V] - - def newInMemoryVector[T]: TransactionalVector[T] = new InMemoryTransactionalVector[T] - - def newInMemoryRef[T]: TransactionalRef[T] = new TransactionalRef[T] -} - -/** - * @author Jonas Bonér - */ -@serializable -trait Transactional { - // FIXME: won't work across the cluster - val uuid = Uuid.newUuid.toString - - protected def verifyTransaction = { - val cflowTx = TransactionManagement.threadBoundTx.get - if (!cflowTx.isDefined) { - throw new IllegalStateException("Can't access transactional reference outside the scope of a transaction [" + this + "]") - } else { - cflowTx.get.register(this) - } - } -} - -/** - * Base trait for all state implementations (persistent or in-memory). - * - * FIXME: Create Java versions using pcollections - * - * @author Jonas Bonér - */ -trait TransactionalMap[K, V] extends Transactional with scala.collection.mutable.Map[K, V] { - override def hashCode: Int = System.identityHashCode(this); - override def equals(other: Any): Boolean = false - def remove(key: K) -} - -/** - * Not thread-safe, but should only be using from within an Actor, e.g. one single thread at a time. - * - * @author Jonas Bonér - */ -class InMemoryTransactionalMap[K, V] extends TransactionalMap[K, V] { - protected[this] var ref = new TransactionalRef(new HashTrie[K, V]) - - // ---- Overriding scala.collection.mutable.Map behavior ---- - override def contains(key: K): Boolean = ref.get.contains(key) - - override def clear = ref.set(new HashTrie[K, V]) - - override def size: Int = ref.get.size - - // ---- For scala.collection.mutable.Map ---- - override def remove(key: K) = ref.set(ref.get - key) - - override def elements: Iterator[(K, V)] = ref.get.elements - - override def get(key: K): Option[V] = ref.get.get(key) - - override def put(key: K, value: V): Option[V] = { - val map = ref.get - val oldValue = map.get(key) - ref.set(map.update(key, value)) - oldValue - } - - override def -=(key: K) = remove(key) - - override def update(key: K, value: V) = put(key, value) -} +import org.multiverse.utils.TransactionThreadLocal._ /** * Base class for all persistent transactional map implementations should extend. @@ -147,10 +28,6 @@ abstract class PersistentTransactionalMap[K, V] extends TransactionalMap[K, V] { def getRange(start: Option[AnyRef], count: Int) - def begin - def commit - def rollback = changeSet.clear - // ---- For scala.collection.mutable.Map ---- override def put(key: K, value: V): Option[V] = { verifyTransaction @@ -178,7 +55,6 @@ abstract class TemplatePersistentTransactionalMap extends PersistentTransactiona val storage: MapStorage override def remove(key: AnyRef) = { - verifyTransaction if (changeSet.contains(key)) changeSet -= key else storage.removeMapStorageFor(uuid, key) } @@ -187,7 +63,6 @@ abstract class TemplatePersistentTransactionalMap extends PersistentTransactiona getRange(start, None, count) def getRange(start: Option[AnyRef], finish: Option[AnyRef], count: Int) = { - verifyTransaction try { storage.getMapStorageRangeFor(uuid, start, finish, count) } catch { @@ -203,7 +78,6 @@ abstract class TemplatePersistentTransactionalMap extends PersistentTransactiona // ---- Overriding scala.collection.mutable.Map behavior ---- override def clear = { - verifyTransaction try { storage.removeMapStorageFor(uuid) } catch { @@ -281,76 +155,6 @@ class MongoPersistentTransactionalMap extends TemplatePersistentTransactionalMap val storage = MongoStorage } -/** - * Base for all transactional vector implementations. - * - * @author Jonas Bonér - */ -abstract class TransactionalVector[T] extends Transactional with RandomAccessSeq[T] { - override def hashCode: Int = System.identityHashCode(this); - override def equals(other: Any): Boolean = false - - def add(elem: T) - - def get(index: Int): T - - def getRange(start: Int, count: Int): List[T] -} - -/** - * Implements an in-memory transactional vector. - * - * Not thread-safe, but should only be using from within an Actor, e.g. one single thread at a time. - * - * @author Jonas Bonér - */ -class InMemoryTransactionalVector[T] extends TransactionalVector[T] { - private[kernel] var state = new Ref[Vector[T]](EmptyVector) - - def add(elem: T) = { - state.get.set(elem) - } - - def get(index: Int): T = { - - - state(index) - } - - def getRange(start: Int, count: Int): List[T] = { - verifyTransaction - state.slice(start, count).toList.asInstanceOf[List[T]] - } - - // ---- For Transactional ---- - override def begin = snapshot = state - - override def commit = snapshot = state - - override def rollback = state = snapshot - - // ---- For Seq ---- - def length: Int = { - verifyTransaction - state.length - } - - def apply(index: Int): T = { - verifyTransaction - state(index) - } - - override def elements: Iterator[T] = { - //verifyTransaction - state.elements - } - - override def toList: List[T] = { - verifyTransaction - state.toList - } -} - /** * Base class for all persistent transactional vector implementations should extend. * Implements a Unit of Work, records changes into a change set. @@ -364,11 +168,6 @@ abstract class PersistentTransactionalVector[T] extends TransactionalVector[T] { // FIXME: need to handle remove in another changeSet protected[kernel] val changeSet = new ArrayBuffer[T] - // ---- For Transactional ---- - override def begin = {} - - override def rollback = changeSet.clear - // ---- For TransactionalVector ---- override def add(value: T) = { verifyTransaction @@ -416,7 +215,6 @@ abstract class TemplatePersistentTransactionalVector extends PersistentTransacti get(length - 1) } - // ---- For Transactional ---- override def commit = { // FIXME: should use batch function once the bug is resolved for (element <- changeSet) storage.insertVectorStorageEntryFor(uuid, element) @@ -449,41 +247,12 @@ class MongoPersistentTransactionalVector extends TemplatePersistentTransactional * * @author Jonas Bonér */ -class TransactionalRef[T](elem: T) extends Transactional { - def this() = this(null) - - private[kernel] val ref = new Ref[T](elem) - - def swap(elem: T) = ref.set(elem) - - def get: Option[T] = { - if (ref.isNull) None - else Some(ref.get) - } - - def getOrElse(default: => T): T = { - if (ref.isNull) default - else ref.get - } - - def isDefined: Boolean = !ref.isNull) -} - -/** - * Implements a transactional reference. - * - * Not thread-safe, but should only be using from within an Actor, e.g. one single thread at a time. - * - * @author Jonas Bonér - */ -class CassandraPersistentTransactionalRef extends TransactionalRef[String] { - def commit = if (isDefined) { +class CassandraPersistentTransactionalRef extends TransactionalRef[AnyRef] { + override def commit = if (isDefined) { CassandraStorage.insertRefStorageFor(uuid, ref.get) ref.clear } - def rollback = ref.clear - override def get: Option[AnyRef] = { verifyTransaction if (isDefined) super.get diff --git a/kernel/src/main/scala/state/TransactionalState.scala b/kernel/src/main/scala/state/TransactionalState.scala new file mode 100755 index 0000000000..cf1d124c26 --- /dev/null +++ b/kernel/src/main/scala/state/TransactionalState.scala @@ -0,0 +1,143 @@ +/** + * Copyright (C) 2009 Scalable Solutions. + */ + +package se.scalablesolutions.akka.kernel.state + +import kernel.stm.{Ref, TransactionManagement} +import akka.collection._ + +import org.codehaus.aspectwerkz.proxy.Uuid + +import scala.collection.mutable.{ArrayBuffer, HashMap} + +sealed abstract class TransactionalStateConfig +abstract class PersistentStorageConfig extends TransactionalStateConfig +case class CassandraStorageConfig extends PersistentStorageConfig +case class TerracottaStorageConfig extends PersistentStorageConfig +case class TokyoCabinetStorageConfig extends PersistentStorageConfig +case class MongoStorageConfig extends PersistentStorageConfig + +/** + * Scala API. + *

+ * Example Scala usage: + *

+ * val myMap = TransactionalState.newPersistentMap(CassandraStorageConfig)
+ * 
+ */ +object TransactionalState extends TransactionalState + +/** + * Java API. + *

+ * Example Java usage: + *

+ * TransactionalState state = new TransactionalState();
+ * TransactionalMap myMap = state.newPersistentMap(new CassandraStorageConfig());
+ * 
+ */ +class TransactionalState { + def newPersistentMap(config: PersistentStorageConfig): TransactionalMap[AnyRef, AnyRef] = config match { + case CassandraStorageConfig() => new CassandraPersistentTransactionalMap + case MongoStorageConfig() => new MongoPersistentTransactionalMap + case TerracottaStorageConfig() => throw new UnsupportedOperationException + case TokyoCabinetStorageConfig() => throw new UnsupportedOperationException + } + + def newPersistentVector(config: PersistentStorageConfig): TransactionalVector[AnyRef] = config match { + case CassandraStorageConfig() => new CassandraPersistentTransactionalVector + case MongoStorageConfig() => new MongoPersistentTransactionalVector + case TerracottaStorageConfig() => throw new UnsupportedOperationException + case TokyoCabinetStorageConfig() => throw new UnsupportedOperationException + } + + def newPersistentRef(config: PersistentStorageConfig): TransactionalRef[AnyRef] = config match { + case CassandraStorageConfig() => new CassandraPersistentTransactionalRef + case MongoStorageConfig() => throw new UnsupportedOperationException + case TerracottaStorageConfig() => throw new UnsupportedOperationException + case TokyoCabinetStorageConfig() => throw new UnsupportedOperationException + } + + def newMap[K, V]: TransactionalMap[K, V] = new InMemoryTransactionalMap[K, V] + + def newVector[T]: TransactionalVector[T] = new InMemoryTransactionalVector[T] + + def newRef[T]: TransactionalRef[T] = new TransactionalRef[T] + def newRef[T](init: T): TransactionalRef[T] = new TransactionalRef[T](init) +} + +/** + * Implements a transactional reference. Based on the Multiverse STM. + * + * @author Jonas Bonér + */ +class TransactionalRef[T](elem: T) extends Transactional { + def this() = this(null.asInstanceOf[T]) + + private[kernel] val ref = new Ref[T](elem) + + def swap(elem: T) = ref.set(elem) + + def get: Option[T] = { + if (ref.isNull) None + else Some(ref.get) + } + + def getOrWait: T = ref.getOrAwait + + def getOrElse(default: => T): T = { + if (ref.isNull) default + else ref.get + } + + def isDefined: Boolean = !ref.isNull +} + +/** + * @author Jonas Bonér + */ +@serializable +trait Transactional { + // FIXME: won't work across the cluster + val uuid = Uuid.newUuid.toString + + private[kernel] def commit = {} + + protected def verifyTransaction = { + val cflowTx = TransactionManagement.threadBoundTx.get + if (!cflowTx.isDefined) throw new IllegalStateException("Can't access transactional reference outside the scope of a transaction [" + this + "]") + else cflowTx.get.register(this) + } +} + +/** + * Base trait for all state implementations (persistent or in-memory). + * + * FIXME: Create Java versions using pcollections + * + * @author Jonas Bonér + */ +trait TransactionalMap[K, V] extends Transactional with scala.collection.mutable.Map[K, V] { + override def hashCode: Int = System.identityHashCode(this) + override def equals(other: Any): Boolean = false + def remove(key: K) +} + +/** + * Base for all transactional vector implementations. + * + * @author Jonas Bonér + */ +abstract class TransactionalVector[T] extends Transactional with RandomAccessSeq[T] { + override def hashCode: Int = System.identityHashCode(this) + override def equals(other: Any): Boolean = false + + def add(elem: T) + + def get(index: Int): T + + def getRange(start: Int, count: Int): List[T] +} + + diff --git a/kernel/src/main/scala/stm/Transaction.scala b/kernel/src/main/scala/stm/Transaction.scala old mode 100644 new mode 100755 index 32aefa8a13..bb47a397bb --- a/kernel/src/main/scala/stm/Transaction.scala +++ b/kernel/src/main/scala/stm/Transaction.scala @@ -7,31 +7,30 @@ package se.scalablesolutions.akka.kernel.stm import kernel.state.Transactional import kernel.util.Logging -import org.multiverse.api.Transaction -import org.multiverse.standard.DefaultStm +import org.multiverse.api.{Transaction => MultiverseTransaction} +import org.multiverse.stms.alpha.AlphaStm import org.multiverse.utils.GlobalStmInstance import org.multiverse.utils.TransactionThreadLocal._ +import java.util.concurrent.atomic.AtomicInteger /** * @author Jonas Bonér */ -object STM { - val stm = new DefaultStm - GlobalStmInstance.set(stm) +object Multiverse { + val STM = new AlphaStm + GlobalStmInstance.set(STM) setThreadLocalTransaction(null) } - - /** * @author Jonas Bonér */ @serializable class Transaction extends Logging { - log.debug("Creating a new transaction with id [%s]", id) - - + private[this] var _id = 0L + def id = _id @volatile private[this] var status: TransactionStatus = TransactionStatus.New + private[kernel] var transaction: MultiverseTransaction = _ private[this] val transactionalItems = new ChangeSet @@ -51,6 +50,10 @@ object STM { def begin(participant: String) = synchronized { ensureIsActiveOrNew + transaction = Multiverse.STM.startUpdateTransaction + _id = transaction.getReadVersion + log.debug("Creating a new transaction with id [%s]", _id) + if (status == TransactionStatus.New) log.debug("TX BEGIN - Server with UUID [%s] is starting NEW transaction [%s]", participant, toString) else log.debug("Server [%s] is participating in transaction", participant) participants ::= participant @@ -74,7 +77,8 @@ object STM { else false }}.exists(_ == true) } else false - if (haveAllPreCommitted) { + if (haveAllPreCommitted && transaction != null) { + transaction.commit transactionalItems.items.foreach(_.commit) status = TransactionStatus.Completed reset @@ -89,7 +93,7 @@ object STM { def rollback(participant: String) = synchronized { ensureIsActiveOrAborted log.debug("TX ROLLBACK - Server with UUID [%s] has initiated transaction rollback for [%s]", participant, toString) - transactionalItems.items.foreach(_.rollback) + transaction.abort status = TransactionStatus.Aborted reset } @@ -97,7 +101,7 @@ object STM { def rollbackForRescheduling(participant: String) = synchronized { ensureIsActiveOrAborted log.debug("TX ROLLBACK for recheduling - Server with UUID [%s] has initiated transaction rollback for [%s]", participant, toString) - transactionalItems.items.foreach(_.rollback) + transaction.abort reset } diff --git a/kernel/src/main/scala/stm/TransactionManagement.scala b/kernel/src/main/scala/stm/TransactionManagement.scala old mode 100644 new mode 100755 index e67f4ce861..2f0c4015fb --- a/kernel/src/main/scala/stm/TransactionManagement.scala +++ b/kernel/src/main/scala/stm/TransactionManagement.scala @@ -10,6 +10,8 @@ import kernel.reactor.MessageInvocation import kernel.util.Logging import org.codehaus.aspectwerkz.proxy.Uuid // FIXME is java.util.UUID better? +import org.multiverse.utils.TransactionThreadLocal._ + class TransactionRollbackException(msg: String) extends RuntimeException(msg) class TransactionAwareWrapperException(val cause: Throwable, val tx: Option[Transaction]) extends RuntimeException(cause) { @@ -46,6 +48,7 @@ trait TransactionManagement extends Logging { val tx = Some(newTx) activeTx = tx threadBoundTx.set(tx) + setThreadLocalTransaction(tx.get.transaction) tx } @@ -110,6 +113,7 @@ trait TransactionManagement extends Logging { protected def removeTransactionIfTopLevel = if (isTransactionTopLevel) { activeTx = None threadBoundTx.set(None) + setThreadLocalTransaction(null) } protected def reenteringExistingTransaction= if (activeTx.isDefined) { diff --git a/kernel/src/test/scala/InMemoryActorSpec.scala b/kernel/src/test/scala/InMemoryActorSpec.scala index 5ce06a10b3..95dc081f13 100644 --- a/kernel/src/test/scala/InMemoryActorSpec.scala +++ b/kernel/src/test/scala/InMemoryActorSpec.scala @@ -26,9 +26,9 @@ case class FailureOneWay(key: String, value: String, failer: Actor) class InMemStatefulActor extends Actor { timeout = 100000 makeTransactionRequired - private val mapState = TransactionalState.newInMemoryMap[String, String] - private val vectorState = TransactionalState.newInMemoryVector[String] - private val refState = TransactionalState.newInMemoryRef[String] + private val mapState = TransactionalState.newMap[String, String] + private val vectorState = TransactionalState.newVector[String] + private val refState = TransactionalState.newRef[String]("") def receive: PartialFunction[Any, Unit] = { case GetMapState(key) => @@ -217,14 +217,26 @@ class InMemoryActorSpec extends TestCase { def testRefShouldRollbackStateForStatefulServerInCaseOfFailure = { val stateful = new InMemStatefulActor stateful.start + println("------------ 1") + try { stateful !! SetRefState("init") // set init state + } catch { + case e: RuntimeException => + println("------------ 1.1") + stateful !! SetRefState("init") // set init state + println("------------ 1.2") + } + println("------------ 2") val failer = new InMemFailerActor failer.start try { + println("------------ 3") stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method + println("------------ 4") fail("should have thrown an exception") - } catch {case e: RuntimeException => {}} + } catch {case e: RuntimeException => { + println("------------ 5") + }} assertEquals("init", (stateful !! GetRefState).get) // check that state is == init state } - -} \ No newline at end of file +} diff --git a/kernel/src/test/scala/TransactionClasherSpec.scala b/kernel/src/test/scala/TransactionClasherSpec.scala index b04f14d120..d955331225 100644 --- a/kernel/src/test/scala/TransactionClasherSpec.scala +++ b/kernel/src/test/scala/TransactionClasherSpec.scala @@ -24,7 +24,7 @@ class TxActor(clasher: Actor) extends Actor { } class TxClasherActor extends Actor { - val vector = TransactionalState.newInMemoryVector[String] + val vector = TransactionalState.newVector[String] timeout = 1000000 makeTransactionRequired var count = 0 @@ -59,7 +59,7 @@ class TxActorOneWay(clasher: Actor) extends Actor { } class TxClasherActorOneWay extends Actor { - val vector = TransactionalState.newInMemoryVector[String] + val vector = TransactionalState.newVector[String] timeout = 1000000 makeTransactionRequired var count = 0 @@ -146,4 +146,4 @@ class TransactionClasherSpec extends TestCase { assertEquals("First", (clasher !! "Index1").get) } */ -} \ No newline at end of file +} diff --git a/pom.xml b/pom.xml old mode 100644 new mode 100755 diff --git a/util-java/pom.xml b/util-java/pom.xml old mode 100644 new mode 100755 index 77565af204..a682897c3a --- a/util-java/pom.xml +++ b/util-java/pom.xml @@ -24,6 +24,11 @@ protobuf-java 2.1.0
+ + org.multiverse + multiverse + 0.3 + diff --git a/util-java/src/main/java/se/scalablesolutions/akka/kernel/stm/Ref.java b/util-java/src/main/java/se/scalablesolutions/akka/kernel/stm/Ref.java new file mode 100755 index 0000000000..f41016a840 --- /dev/null +++ b/util-java/src/main/java/se/scalablesolutions/akka/kernel/stm/Ref.java @@ -0,0 +1,248 @@ +package se.scalablesolutions.akka.kernel.stm; + +import static org.multiverse.api.StmUtils.retry; +import org.multiverse.api.Transaction; +import org.multiverse.api.exceptions.LoadUncommittedAtomicObjectException; +import org.multiverse.api.exceptions.ReadonlyException; +import org.multiverse.datastructures.refs.ManagedRef; +import org.multiverse.stms.alpha.*; +import org.multiverse.stms.alpha.mixins.FastAtomicObjectMixin; +import org.multiverse.templates.AtomicTemplate; +import org.multiverse.datastructures.refs.manual.*; + +/** + * A manual instrumented {@link org.multiverse.datastructures.refs.ManagedRef} implementation. + * If this class is used, you don't need to worry about instrumentation/javaagents and + * stuff like this. + * + * It is added to get the Akka project up and running, but probably will removed when the instrumentation + * is 100% up and running and this can be done compiletime instead of messing with javaagents. + * + * @author Peter Veentjer + */ +public final class Ref extends FastAtomicObjectMixin implements ManagedRef { + + public Ref() { + new AtomicTemplate() { + @Override + public Object execute(Transaction t) throws Exception { + + ((Transaction) t).attachNew(new RefTranlocal(Ref.this)); + return null; + } + }.execute(); + } + + public Ref(Transaction t) { + ((Transaction) t).attachNew(new RefTranlocal(Ref.this)); + } + + public Ref(final E value) { + new AtomicTemplate() { + @Override + public Object execute(Transaction t) throws Exception { + ((Transaction) t).attachNew(new RefTranlocal(Ref.this, value)); + return null; + } + }.execute(); + } + + public Ref(Transaction t, final E value) { + ((Transaction) t).attachNew(new RefTranlocal(Ref.this, value)); + } + + public E get() { + return new AtomicTemplate() { + @Override + public E execute(Transaction t) throws Exception { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.get(); + } + }.execute(); + } + + public E get(Transaction t) { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.get(); + } + + @Override + public E getOrAwait() { + return new AtomicTemplate() { + @Override + public E execute(Transaction t) throws Exception { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.getOrAwait(); + } + }.execute(); + } + + public E getOrAwait(Transaction t) { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.getOrAwait(); + } + + + @Override + public E set(final E newRef) { + return new AtomicTemplate() { + @Override + public E execute(Transaction t) throws Exception { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.set(newRef); + } + }.execute(); + } + + public E set(Transaction t, final E newRef) { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.set(newRef); + } + + @Override + public boolean isNull() { + return new AtomicTemplate() { + @Override + public Boolean execute(Transaction t) throws Exception { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.isNull(); + } + }.execute(); + } + + public boolean isNull(Transaction t) { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.isNull(); + } + + @Override + public E clear() { + return new AtomicTemplate() { + @Override + public E execute(Transaction t) throws Exception { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.clear(); + } + }.execute(); + } + + public E clear(Transaction t) { + RefTranlocal tranlocalRef = (RefTranlocal) ((Transaction) t).privatize(Ref.this); + return tranlocalRef.clear(); + } + + @Override + public RefTranlocal privatize(long readVersion) { + RefTranlocal origin = (RefTranlocal) load(readVersion); + if (origin == null) { + throw new LoadUncommittedAtomicObjectException(); + } + return new RefTranlocal(origin); + } +} + +class RefTranlocal extends Tranlocal { + //field belonging to the stm. + Ref atomicObject; + RefTranlocal origin; + + E ref; + + RefTranlocal(RefTranlocal origin) { + this.version = origin.version; + this.atomicObject = origin.atomicObject; + this.ref = origin.ref; + this.origin = origin; + } + + RefTranlocal(Ref owner) { + this(owner, null); + } + + RefTranlocal(Ref owner, E ref) { + this.version = Long.MIN_VALUE; + this.atomicObject = owner; + this.ref = ref; + } + + @Override + public AlphaAtomicObject getAtomicObject() { + return atomicObject; + } + + public E clear() { + E oldValue = ref; + ref = null; + return oldValue; + } + + public boolean isNull() { + return ref == null; + } + + public E get() { + return ref; + } + + public E set(E newValue) { + if (committed) { + throw new ReadonlyException(); + } + E oldValue = ref; + this.ref = newValue; + return oldValue; + } + + public E getOrAwait() { + if (isNull()) { + retry(); + } + + return ref; + } + + @Override + public void prepareForCommit(long writeVersion) { + this.version = writeVersion; + this.committed = true; + this.origin = null; + } + + @Override + public TranlocalSnapshot takeSnapshot() { + return new RefTranlocalSnapshot(this); + } + + @Override + public DirtinessStatus getDirtinessStatus() { + if (committed) { + return DirtinessStatus.committed; + } else if (origin == null) { + return DirtinessStatus.fresh; + } else if (origin.ref != this.ref) { + return DirtinessStatus.dirty; + } else { + return DirtinessStatus.clean; + } + } +} + +class RefTranlocalSnapshot extends TranlocalSnapshot { + final RefTranlocal tranlocal; + final E value; + + RefTranlocalSnapshot(RefTranlocal tranlocal) { + this.tranlocal = tranlocal; + this.value = tranlocal.ref; + } + + @Override + public Tranlocal getTranlocal() { + return tranlocal; + } + + @Override + public void restore() { + tranlocal.ref = value; + } +}