From: <jik...@li...> - 2012-11-02 11:22:15
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/fd9ac61a2fad changeset: 10560:fd9ac61a2fad user: Erik Brangs <eri...@gm...> date: Fri Nov 02 11:40:09 2012 +0100 description: RVM-926: Introduce a constant for the prefetch size in alloc(...) in BumpPointer (see http://sourceforge.net/mailarchive/message.php?msg_id=29736232 for original discussion). details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/6d781eeba185 changeset: 10561:6d781eeba185 user: Erik Brangs <eri...@gm...> date: Fri Nov 02 11:41:01 2012 +0100 description: Remove unused classes from org.mmtk.utility. diffstat: MMTk/src/org/mmtk/utility/CallSite.java | 18 ------------------ MMTk/src/org/mmtk/utility/Synchronize.java | 22 ---------------------- MMTk/src/org/mmtk/utility/alloc/BumpPointer.java | 4 +++- 3 files changed, 3 insertions(+), 41 deletions(-) diffs (71 lines): diff --git a/MMTk/src/org/mmtk/utility/CallSite.java b/MMTk/src/org/mmtk/utility/CallSite.java deleted file mode 100644 --- a/MMTk/src/org/mmtk/utility/CallSite.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * This file is part of the Jikes RVM project (http://jikesrvm.org). - * - * This file is licensed to You under the Eclipse Public License (EPL); - * You may not use this file except in compliance with the License. You - * may obtain a copy of the License at - * - * http://www.opensource.org/licenses/eclipse-1.0.php - * - * See the COPYRIGHT.txt file distributed with this work for information - * regarding copyright ownership. - */ -package org.mmtk.utility; - -/* - */ -public class CallSite { -} diff --git a/MMTk/src/org/mmtk/utility/Synchronize.java b/MMTk/src/org/mmtk/utility/Synchronize.java deleted file mode 100644 --- a/MMTk/src/org/mmtk/utility/Synchronize.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is part of the Jikes RVM project (http://jikesrvm.org). - * - * This file is licensed to You under the Eclipse Public License (EPL); - * You may not use this file except in compliance with the License. You - * may obtain a copy of the License at - * - * http://www.opensource.org/licenses/eclipse-1.0.php - * - * See the COPYRIGHT.txt file distributed with this work for information - * regarding copyright ownership. - */ -package org.mmtk.utility; - -import org.vmmagic.pragma.*; - -/* - */ -@Uninterruptible public class Synchronize{ - - -} diff --git a/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java b/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java --- a/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java +++ b/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java @@ -97,6 +97,8 @@ public static final int MINIMUM_DATA_SIZE = (1 << LOG_BLOCK_SIZE) - MAX_DATA_START_OFFSET.toInt(); + private static final int SIZE_OF_TWO_X86_CACHE_LINES_IN_BYTES = 128; + private static final boolean VERBOSE = false; /**************************************************************************** @@ -174,7 +176,7 @@ return allocSlow(start, end, align, offset); fillAlignmentGap(cursor, start); cursor = end; - end.plus(128).prefetch(); + end.plus(SIZE_OF_TWO_X86_CACHE_LINES_IN_BYTES).prefetch(); return start; } |
From: <jik...@li...> - 2012-11-07 10:56:39
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/d354d5ca473b changeset: 10564:d354d5ca473b user: Erik Brangs <eri...@gm...> date: Wed Nov 07 11:38:50 2012 +0100 description: Add missing source and target level for javac tasks in test-runs (thanks to Da Feng for the hint). details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/4122387f6ee1 changeset: 10565:4122387f6ee1 user: Erik Brangs <eri...@gm...> date: Wed Nov 07 11:39:39 2012 +0100 description: Fix warnings in test classes. diffstat: testing/tests/CaffeineMark/build.xml | 2 +- testing/tests/basic/build.xml | 3 ++- testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestStop.java | 1 + testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestSuspend.java | 1 + testing/tests/gctest/build.xml | 2 +- testing/tests/gctracingtest/build.xml | 2 +- testing/tests/javalex/build.xml | 2 +- testing/tests/jni/build.xml | 2 +- testing/tests/jni/src/JNI12.java | 2 +- testing/tests/jsr166-tck/build.xml | 2 +- testing/tests/opttests/build.xml | 2 +- testing/tests/opttests/src/InvokeReflect.java | 2 +- 12 files changed, 13 insertions(+), 10 deletions(-) diffs (147 lines): diff --git a/testing/tests/CaffeineMark/build.xml b/testing/tests/CaffeineMark/build.xml --- a/testing/tests/CaffeineMark/build.xml +++ b/testing/tests/CaffeineMark/build.xml @@ -38,7 +38,7 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> - <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" classpath="${test.class.path}" includeantruntime="false"/> + <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" classpath="${test.class.path}" source="1.6" target="1.6" includeantruntime="false"/> </target> <!-- **************************************************************************** --> diff --git a/testing/tests/basic/build.xml b/testing/tests/basic/build.xml --- a/testing/tests/basic/build.xml +++ b/testing/tests/basic/build.xml @@ -34,11 +34,12 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> - <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" includeantruntime="false"> + <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" source="1.6" target="1.6" includeantruntime="false"> <!-- need extra classpath for vmmagic --> <classpath> <pathelement path="${test.rvm.dir}/jksvm.jar"/> </classpath> + <compilerarg value="-Xlint:deprecation"/> </javac> <jar file="${build.tests.dir}/AgentX.jar" basedir="${build.classes}" includes="**/AgentX.class"> diff --git a/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestStop.java b/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestStop.java --- a/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestStop.java +++ b/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestStop.java @@ -12,6 +12,7 @@ */ package test.org.jikesrvm.basic.core.threads; +@SuppressWarnings("deprecation") class TestStop { public static void main(String[] args) { final Worker w = new Worker(); diff --git a/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestSuspend.java b/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestSuspend.java --- a/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestSuspend.java +++ b/testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestSuspend.java @@ -12,6 +12,7 @@ */ package test.org.jikesrvm.basic.core.threads; +@SuppressWarnings("deprecation") class TestSuspend extends XThread { static Thread sleeper; diff --git a/testing/tests/gctest/build.xml b/testing/tests/gctest/build.xml --- a/testing/tests/gctest/build.xml +++ b/testing/tests/gctest/build.xml @@ -55,7 +55,7 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> - <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" includeantruntime="false"> + <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" source="1.6" target="1.6" includeantruntime="false"> <classpath> <pathelement path="${test.rvm.dir}/jksvm.jar"/> <pathelement path="${test.rvm.dir}/rvmrt.jar"/> diff --git a/testing/tests/gctracingtest/build.xml b/testing/tests/gctracingtest/build.xml --- a/testing/tests/gctracingtest/build.xml +++ b/testing/tests/gctracingtest/build.xml @@ -30,7 +30,7 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> - <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" includeantruntime="false"/> + <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" source="1.6" target="1.6" includeantruntime="false"/> </target> <!-- **************************************************************************** --> diff --git a/testing/tests/javalex/build.xml b/testing/tests/javalex/build.xml --- a/testing/tests/javalex/build.xml +++ b/testing/tests/javalex/build.xml @@ -33,7 +33,7 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> - <javac srcdir="${jlex.dir}" destdir="${build.classes}" debug="true" includeantruntime="false"/> + <javac srcdir="${jlex.dir}" destdir="${build.classes}" debug="true" source="1.4" target="1.4" includeantruntime="false"/> </target> diff --git a/testing/tests/jni/build.xml b/testing/tests/jni/build.xml --- a/testing/tests/jni/build.xml +++ b/testing/tests/jni/build.xml @@ -61,7 +61,7 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> <mkdir dir="${build.native}"/> - <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" includeantruntime="false"> + <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" source="1.6" target="1.6" includeantruntime="false"> <exclude name="StackResize.java"/> <exclude name="NativeThreadsWorker.java"/> <exclude name="tNativeThreads.java"/> diff --git a/testing/tests/jni/src/JNI12.java b/testing/tests/jni/src/JNI12.java --- a/testing/tests/jni/src/JNI12.java +++ b/testing/tests/jni/src/JNI12.java @@ -54,7 +54,7 @@ Object returnObj; // Reflected Methods - Class myClass =JNI12.class; + Class<?> myClass =JNI12.class; Method dummyM = myClass.getMethod("dummyFunc", new Class[0]); returnObj = testReflectedMethods(myClass, dummyM); diff --git a/testing/tests/jsr166-tck/build.xml b/testing/tests/jsr166-tck/build.xml --- a/testing/tests/jsr166-tck/build.xml +++ b/testing/tests/jsr166-tck/build.xml @@ -52,7 +52,7 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> - <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" includeantruntime="false"> + <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" source="1.5" target="1.5" includeantruntime="false"> <classpath> <pathelement path="${junit.jar}"/> </classpath> diff --git a/testing/tests/opttests/build.xml b/testing/tests/opttests/build.xml --- a/testing/tests/opttests/build.xml +++ b/testing/tests/opttests/build.xml @@ -34,7 +34,7 @@ <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> - <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" includeantruntime="false"> + <javac srcdir="${main.java}" destdir="${build.classes}" debug="true" source="1.6" target="1.6" includeantruntime="false"> <!-- need extra classpath for vmmagic --> <classpath> <pathelement path="${test.rvm.dir}/jksvm.jar"/> diff --git a/testing/tests/opttests/src/InvokeReflect.java b/testing/tests/opttests/src/InvokeReflect.java --- a/testing/tests/opttests/src/InvokeReflect.java +++ b/testing/tests/opttests/src/InvokeReflect.java @@ -28,7 +28,7 @@ // invoking methodToRun() in the class specified by arg System.out.println("**** START OF EXECUTION of " + arg + "." + methodToRun + " " + signatureToPrintOut + " ****."); - Class klass = Class.forName(arg); + Class<?> klass = Class.forName(arg); Method method = klass.getDeclaredMethod(methodToRun, noparams); Object result = method.invoke(null, (Object[])noparams); System.out.println("**** RESULT: " + result); |
From: <jik...@li...> - 2012-11-14 20:39:54
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/7003abbb3fb2 changeset: 10568:7003abbb3fb2 user: Erik Brangs <eri...@gm...> date: Wed Nov 14 18:14:18 2012 +0100 description: Merge with default at 1ec35a9ab5dd81f08115e94bd77d36e5fd0dee7a (no additional changes). details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/e63f87072dd9 changeset: 10569:e63f87072dd9 user: Erik Brangs <eri...@gm...> date: Wed Nov 14 19:02:28 2012 +0100 description: Remove most debug statements (based on Da Feng's patches for RVM-991). diffstat: MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java | 24 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java | 4 +- MMTk/src/org/mmtk/policy/immix/Block.java | 2 +- MMTk/src/org/mmtk/policy/immix/Defrag.java | 4 +- MMTk/src/org/mmtk/utility/CallSite.java | 18 - MMTk/src/org/mmtk/utility/Synchronize.java | 22 - MMTk/src/org/mmtk/utility/alloc/BumpPointer.java | 3 + MMTk/src/org/mmtk/utility/deque/SharedDeque.java | 2 +- MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java | 2 +- MMTk/src/org/mmtk/vm/gcspy/Util.java | 4 +- build/components/classpath.xml | 6 +- build/components/patches/classpath-git.RVM-914.patch | 17 - build/components/patches/classpath-web.RVM-1003.patch | 11 + libraryInterface/Common/src/java/lang/Class.java | 2 - libraryInterface/Common/src/java/lang/reflect/VMCommonLibrarySupport.java | 3 - libraryInterface/GNUClasspath/EPL/src/java/lang/VMFloat.java | 2 +- libraryInterface/OpenJDK/ASF/src/java/lang/ClassLoader.java | 1 - libraryInterface/OpenJDK/EPL/src/java/lang/JikesRVMSupport.java | 1 - rvm/src-generated/ia32-assembler/Assembler.in | 1 - rvm/src/org/jikesrvm/CommandLineArgs.java | 2 +- rvm/src/org/jikesrvm/Services.java | 4 +- rvm/src/org/jikesrvm/VM.java | 14 - rvm/src/org/jikesrvm/adaptive/controller/AnalyticModel.java | 6 +- rvm/src/org/jikesrvm/adaptive/database/callgraph/PartialCallGraph.java | 2 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/StringEventCounterData.java | 2 +- rvm/src/org/jikesrvm/adaptive/recompilation/CompilerDNA.java | 2 +- rvm/src/org/jikesrvm/classloader/BootstrapClassLoader.java | 1 - rvm/src/org/jikesrvm/classloader/RVMAnnotation.java | 17 +- rvm/src/org/jikesrvm/classloader/TypeDescriptorParsing.java | 3 - rvm/src/org/jikesrvm/classloader/TypeReference.java | 1 - rvm/src/org/jikesrvm/compilers/baseline/BaselineCompiledMethod.java | 10 +- rvm/src/org/jikesrvm/compilers/baseline/ConditionalBranchProfile.java | 2 +- rvm/src/org/jikesrvm/compilers/baseline/SwitchBranchProfile.java | 4 +- rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java | 2 +- rvm/src/org/jikesrvm/compilers/common/CompiledMethod.java | 2 +- rvm/src/org/jikesrvm/compilers/common/assembler/ppc/Assembler.java | 6 +- rvm/src/org/jikesrvm/compilers/opt/Simplifier.java | 12 +- rvm/src/org/jikesrvm/compilers/opt/bc2ir/BBSet.java | 1188 +++++++ rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java | 1587 +--------- rvm/src/org/jikesrvm/compilers/opt/bc2ir/BasicBlockLE.java | 200 + rvm/src/org/jikesrvm/compilers/opt/bc2ir/HandlerBlockLE.java | 92 + rvm/src/org/jikesrvm/compilers/opt/bc2ir/InliningBlockLE.java | 54 + rvm/src/org/jikesrvm/compilers/opt/bc2ir/OperandStack.java | 94 + rvm/src/org/jikesrvm/compilers/opt/bc2ir/ReturnAddressOperand.java | 38 + rvm/src/org/jikesrvm/compilers/opt/bc2ir/ppc/GenerateMachineSpecificMagic.java | 14 +- rvm/src/org/jikesrvm/compilers/opt/controlflow/LoopUnrolling.java | 2 +- rvm/src/org/jikesrvm/compilers/opt/driver/CompilerPhase.java | 2 +- rvm/src/org/jikesrvm/compilers/opt/inlining/DefaultInlineOracle.java | 2 +- rvm/src/org/jikesrvm/compilers/opt/inlining/InlineSequence.java | 59 +- rvm/src/org/jikesrvm/compilers/opt/inlining/InlineTools.java | 2 +- rvm/src/org/jikesrvm/compilers/opt/ir/operand/Operand.java | 7 +- rvm/src/org/jikesrvm/compilers/opt/lir2mir/ia32/BURS_Helpers.java | 2 +- rvm/src/org/jikesrvm/compilers/opt/lir2mir/ppc/NormalizeConstants.java | 4 +- rvm/src/org/jikesrvm/compilers/opt/mir2mc/ppc/AssemblerOpt.java | 4 +- rvm/src/org/jikesrvm/compilers/opt/util/Bits.java | 2 +- rvm/src/org/jikesrvm/compilers/opt/util/CompoundEnumerator.java | 2 - rvm/src/org/jikesrvm/compilers/opt/util/DepthFirstEnumerator.java | 25 +- rvm/src/org/jikesrvm/compilers/opt/util/ReverseEnumerator.java | 26 +- rvm/src/org/jikesrvm/compilers/opt/util/SpaceEffGraph.java | 8 +- rvm/src/org/jikesrvm/jni/ia32/JNICompiler.java | 2 +- rvm/src/org/jikesrvm/osr/TypeStack.java | 19 +- rvm/src/org/jikesrvm/osr/VariableElement.java | 4 +- rvm/src/org/jikesrvm/osr/ia32/OptExecutionStateExtractor.java | 10 +- rvm/src/org/jikesrvm/osr/ppc/BaselineExecutionStateExtractor.java | 4 +- rvm/src/org/jikesrvm/osr/ppc/OptExecutionStateExtractor.java | 7 +- rvm/src/org/jikesrvm/runtime/DynamicLibrary.java | 2 - rvm/src/org/jikesrvm/runtime/FileSystem.java | 1 - rvm/src/org/jikesrvm/runtime/MathConstants.java | 2 +- rvm/src/org/jikesrvm/runtime/Statics.java | 4 +- rvm/src/org/jikesrvm/runtime/Time.java | 4 +- rvm/src/org/jikesrvm/scheduler/RVMThread.java | 6 +- rvm/src/org/jikesrvm/scheduler/TimerThread.java | 2 +- rvm/src/org/jikesrvm/tools/oth/OptTestHarness.java | 2 +- rvm/src/org/jikesrvm/util/AddressInputStream.java | 2 +- rvm/test-src/org/jikesrvm/compilers/opt/inlining/CallSiteTreeTest.java | 44 + rvm/test-src/org/jikesrvm/compilers/opt/inlining/InlineSequenceTest.java | 148 + rvm/test-src/org/jikesrvm/compilers/opt/util/BitSetTest.java | 62 + rvm/test-src/org/jikesrvm/compilers/opt/util/CompoundEnumeratorTest.java | 36 + rvm/test-src/org/jikesrvm/compilers/opt/util/DepthFirstEnumeratorTest.java | 210 + rvm/test-src/org/jikesrvm/compilers/opt/util/QueueTest.java | 63 + rvm/test-src/org/jikesrvm/compilers/opt/util/ReverseEnumeratorTest.java | 38 + rvm/test-src/org/jikesrvm/compilers/opt/util/StackTest.java | 1 - rvm/test-src/org/jikesrvm/compilers/opt/util/TreeTest.java | 72 +- rvm/test-src/org/jikesrvm/osr/TypeStackTest.java | 139 + rvm/test-src/org/jikesrvm/tests/util/SimpleEnumeration.java | 43 + rvm/test-src/org/jikesrvm/tests/util/TestingTools.java | 33 +- testing/tests/CaffeineMark/build.xml | 2 +- testing/tests/SPECjvm98/build.xml | 2 +- testing/tests/basic/build.xml | 3 +- testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestStop.java | 1 + testing/tests/basic/src/test/org/jikesrvm/basic/core/threads/TestSuspend.java | 1 + testing/tests/gctest/build.xml | 2 +- testing/tests/gctracingtest/build.xml | 2 +- testing/tests/javalex/build.xml | 2 +- testing/tests/jni/build.xml | 2 +- testing/tests/jni/src/JNI12.java | 2 +- testing/tests/jsr166-tck/build.xml | 2 +- testing/tests/opttests/build.xml | 2 +- testing/tests/opttests/src/InvokeReflect.java | 2 +- tools/bootImageRunner/RunBootImage.C | 2 +- tools/bootImageRunner/ia32/libvm.c | 2 +- tools/bootImageRunner/org_jikesrvm_runtime_DynamicLibrary.c | 5 - tools/bootImageRunner/sys.C | 14 - tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/BootImageWriter.java | 9 +- 104 files changed, 2746 insertions(+), 1906 deletions(-) diffs (truncated from 6196 to 300 lines): diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java @@ -258,7 +258,7 @@ if (VM.VerifyAssertions) VM._assert((delta & 0x3) == 0); if (VM.VerifyAssertions) VM._assert(delta > 0); - int currentrun = ((int) code[codeIndex]) & 0xff; + int currentrun = (code[codeIndex]) & 0xff; if ((delta == BYTES_IN_ADDRESS) && (currentrun < MAX_RUN)) { currentrun++; @@ -315,14 +315,14 @@ * offset. */ private static int getOffset(byte[] code, int index, int lastOffset) { - if (((int) code[index] & RUN_MASK) == RUN_MASK) { + if ((code[index] & RUN_MASK) == RUN_MASK) { return lastOffset + BYTES_IN_WORD; } else { if (((index & (CHUNK_BYTES - 1)) == 0) || - (((int) code[index] &LONGENCODING_MASK) == LONGENCODING_MASK)) { + ((code[index] &LONGENCODING_MASK) == LONGENCODING_MASK)) { return decodeLongEncoding(code, index); } else { - return lastOffset + (((int) code[index]) & 0xff); + return lastOffset + ((code[index]) & 0xff); } } } @@ -338,10 +338,10 @@ @Uninterruptible private static Offset decodeLongEncoding(Address cursor) { int value; - value = ((int) cursor.loadByte()) & 0x000000fc; - value |= ((int) cursor.loadByte(Offset.fromIntSignExtend(1))<<BITS_IN_BYTE) & 0x0000ff00; - value |= ((int) cursor.loadByte(Offset.fromIntSignExtend(2))<<(2*BITS_IN_BYTE)) & 0x00ff0000; - value |= ((int) cursor.loadByte(Offset.fromIntSignExtend(3))<<(3*BITS_IN_BYTE)) & 0xff000000; + value = (cursor.loadByte()) & 0x000000fc; + value |= (cursor.loadByte(Offset.fromIntSignExtend(1))<<BITS_IN_BYTE) & 0x0000ff00; + value |= (cursor.loadByte(Offset.fromIntSignExtend(2))<<(2*BITS_IN_BYTE)) & 0x00ff0000; + value |= (cursor.loadByte(Offset.fromIntSignExtend(3))<<(3*BITS_IN_BYTE)) & 0xff000000; return Offset.fromIntSignExtend(value); } @@ -358,10 +358,10 @@ @Uninterruptible private static int decodeLongEncoding(byte[] code, int index) { int value; - value = ((int) code[index]) & 0x000000fc; - value |= ((int) code[index+1]<<BITS_IN_BYTE) & 0x0000ff00; - value |= ((int) code[index+2]<<(2*BITS_IN_BYTE)) & 0x00ff0000; - value |= ((int) code[index+3]<<(3*BITS_IN_BYTE)) & 0xff000000; + value = (code[index]) & 0x000000fc; + value |= (code[index+1]<<BITS_IN_BYTE) & 0x0000ff00; + value |= (code[index+2]<<(2*BITS_IN_BYTE)) & 0x00ff0000; + value |= (code[index+3]<<(3*BITS_IN_BYTE)) & 0xff000000; return value; } diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java @@ -43,12 +43,12 @@ @Override public double nanosToMillis(long c) { - return ((double)c)/1e6; + return (c)/1e6; } @Override public double nanosToSecs(long c) { - return ((double)c)/1e9; + return (c)/1e9; } @Override diff --git a/MMTk/src/org/mmtk/policy/immix/Block.java b/MMTk/src/org/mmtk/policy/immix/Block.java --- a/MMTk/src/org/mmtk/policy/immix/Block.java +++ b/MMTk/src/org/mmtk/policy/immix/Block.java @@ -127,7 +127,7 @@ } mark = markTable.loadByte(Offset.fromIntZeroExtend(offset)); if (resetMarkState) - markTable.store((byte) (mark == markState ? RESET_LINE_MARK_STATE : 0), Offset.fromIntZeroExtend(offset)); + markTable.store(mark == markState ? RESET_LINE_MARK_STATE : 0, Offset.fromIntZeroExtend(offset)); if (mark == markState) markCount++; diff --git a/MMTk/src/org/mmtk/policy/immix/Defrag.java b/MMTk/src/org/mmtk/policy/immix/Defrag.java --- a/MMTk/src/org/mmtk/policy/immix/Defrag.java +++ b/MMTk/src/org/mmtk/policy/immix/Defrag.java @@ -142,7 +142,7 @@ int availableLines = cleanLines + availableCleanPagesForDefrag<<(LOG_BYTES_IN_PAGE - LOG_BYTES_IN_LINE); int requiredLines = 0; - short threshold = (short) MAX_CONSV_SPILL_COUNT; + short threshold = MAX_CONSV_SPILL_COUNT; int limit = (int) (availableLines / Options.defragLineReuseRatio.getValue()); if (VM.VERIFY_ASSERTIONS && Options.verbose.getValue() > 2) { Log.write("[threshold: "); Log.write("cl: "); Log.write(cleanLines); @@ -151,7 +151,7 @@ } int collectors = VM.activePlan.collectorCount(); for (short index = MAX_CONSV_SPILL_COUNT; index >= TMP_MIN_SPILL_THRESHOLD && limit > requiredLines; index--) { - threshold = (short) index; + threshold = index; int thisBucketMark = 0; int thisBucketAvail = 0; for (int c = 0; c < collectors; c++) thisBucketMark += spillMarkHistograms[c][threshold]; diff --git a/MMTk/src/org/mmtk/utility/CallSite.java b/MMTk/src/org/mmtk/utility/CallSite.java deleted file mode 100644 --- a/MMTk/src/org/mmtk/utility/CallSite.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * This file is part of the Jikes RVM project (http://jikesrvm.org). - * - * This file is licensed to You under the Eclipse Public License (EPL); - * You may not use this file except in compliance with the License. You - * may obtain a copy of the License at - * - * http://www.opensource.org/licenses/eclipse-1.0.php - * - * See the COPYRIGHT.txt file distributed with this work for information - * regarding copyright ownership. - */ -package org.mmtk.utility; - -/* - */ -public class CallSite { -} diff --git a/MMTk/src/org/mmtk/utility/Synchronize.java b/MMTk/src/org/mmtk/utility/Synchronize.java deleted file mode 100644 --- a/MMTk/src/org/mmtk/utility/Synchronize.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is part of the Jikes RVM project (http://jikesrvm.org). - * - * This file is licensed to You under the Eclipse Public License (EPL); - * You may not use this file except in compliance with the License. You - * may obtain a copy of the License at - * - * http://www.opensource.org/licenses/eclipse-1.0.php - * - * See the COPYRIGHT.txt file distributed with this work for information - * regarding copyright ownership. - */ -package org.mmtk.utility; - -import org.vmmagic.pragma.*; - -/* - */ -@Uninterruptible public class Synchronize{ - - -} diff --git a/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java b/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java --- a/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java +++ b/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java @@ -97,6 +97,8 @@ public static final int MINIMUM_DATA_SIZE = (1 << LOG_BLOCK_SIZE) - MAX_DATA_START_OFFSET.toInt(); + private static final int SIZE_OF_TWO_X86_CACHE_LINES_IN_BYTES = 128; + private static final boolean VERBOSE = false; /**************************************************************************** @@ -174,6 +176,7 @@ return allocSlow(start, end, align, offset); fillAlignmentGap(cursor, start); cursor = end; + end.plus(SIZE_OF_TWO_X86_CACHE_LINES_IN_BYTES).prefetch(); return start; } diff --git a/MMTk/src/org/mmtk/utility/deque/SharedDeque.java b/MMTk/src/org/mmtk/utility/deque/SharedDeque.java --- a/MMTk/src/org/mmtk/utility/deque/SharedDeque.java +++ b/MMTk/src/org/mmtk/utility/deque/SharedDeque.java @@ -192,7 +192,7 @@ @Inline public final int enqueuedPages() { - return (int) (bufsenqueued * PAGES_PER_BUFFER); + return bufsenqueued * PAGES_PER_BUFFER; } /**************************************************************************** diff --git a/MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java b/MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java --- a/MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java +++ b/MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java @@ -163,7 +163,7 @@ Extent reserved = Plan.reservedMemory(); double liveRatio = reserved.toLong() / ((double) currentHeapSize.toLong()); double ratio = computeHeapChangeRatio(liveRatio); - Extent newSize = Word.fromIntSignExtend((int)(ratio * (double) (oldSize.toLong()>>LOG_BYTES_IN_MBYTE))).lsh(LOG_BYTES_IN_MBYTE).toExtent(); // do arith in MB to avoid overflow + Extent newSize = Word.fromIntSignExtend((int)(ratio * (oldSize.toLong()>>LOG_BYTES_IN_MBYTE))).lsh(LOG_BYTES_IN_MBYTE).toExtent(); // do arith in MB to avoid overflow if (newSize.LT(reserved)) newSize = reserved; newSize = newSize.plus(BYTES_IN_MBYTE - 1).toWord().rshl(LOG_BYTES_IN_MBYTE).lsh(LOG_BYTES_IN_MBYTE).toExtent(); // round to next megabyte if (newSize.GT(maxHeapSize)) newSize = maxHeapSize; diff --git a/MMTk/src/org/mmtk/vm/gcspy/Util.java b/MMTk/src/org/mmtk/vm/gcspy/Util.java --- a/MMTk/src/org/mmtk/vm/gcspy/Util.java +++ b/MMTk/src/org/mmtk/vm/gcspy/Util.java @@ -131,9 +131,9 @@ do { int ch = (int) -(longValue % radix); if (ch > 9) - ch -= (10 - (int) 'a'); + ch -= (10 - 'a'); else - ch += (int) '0'; + ch += '0'; buffer [--i] = (byte) ch; } while ((longValue /= radix) != 0); if (negative) buffer [0] = (byte)'-'; diff --git a/build/components/classpath.xml b/build/components/classpath.xml --- a/build/components/classpath.xml +++ b/build/components/classpath.xml @@ -19,7 +19,7 @@ <!-- in target patch-classpath-web --> <property name="classpath.version" value="97.2"/> <!-- Change this whenever you alter the patches. It will let people know classpath has changed. --> - <property name="classpath.patchlevel" value="12"/> + <property name="classpath.patchlevel" value="13"/> <property name="classpath.description" value="GNU Classpath"/> <property name="classpath.component.dir" location="${components.dir}/classpath"/> @@ -119,8 +119,6 @@ dir="${classpath.package.dir}/classpath/" strip="0"/> <patch patchfile="${components.patch.dir}/classpath-git.RVM-903.patch" dir="${classpath.package.dir}/classpath/" strip="1"/> - <patch patchfile="${components.patch.dir}/classpath-git.RVM-914.patch" - dir="${classpath.package.dir}/classpath/" strip="1"/> </target> <!-- Patches against the current stable version --> @@ -191,6 +189,8 @@ dir="${classpath.package.dir}/classpath/" strip="1"/> <patch patchfile="${components.patch.dir}/classpath-web.RVM-914.patch" dir="${classpath.package.dir}/classpath/" strip="1"/> + <patch patchfile="${components.patch.dir}/classpath-web.RVM-1003.patch" + dir="${classpath.package.dir}/classpath/" strip="0"/> </target> <target name="patch" depends="patch-classpath-web,patch-classpath-git"/> diff --git a/build/components/patches/classpath-git.RVM-914.patch b/build/components/patches/classpath-git.RVM-914.patch deleted file mode 100644 --- a/build/components/patches/classpath-git.RVM-914.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- classpath-base/java/io/ObjectInputStream.java 2008-01-30 09:30:44.000000000 +1100 -+++ classpath/java/io/ObjectInputStream.java 2011-01-13 17:23:32.000000000 +1100 -@@ -518,12 +518,13 @@ - if (dump) - dumpElementln("ENUM="); - ObjectStreamClass osc = (ObjectStreamClass) readObject(); -+ int handle = assignNewHandle(null,shared); - String constantName = (String) readObject(); - if (dump) - dumpElementln("CONSTANT NAME = " + constantName); - Class clazz = osc.forClass(); - Enum instance = Enum.valueOf(clazz, constantName); -- assignNewHandle(instance,shared); -+ rememberHandle(instance,shared,handle); - ret_val = instance; - break; - } - diff --git a/build/components/patches/classpath-web.RVM-1003.patch b/build/components/patches/classpath-web.RVM-1003.patch new file mode 100644 --- /dev/null +++ b/build/components/patches/classpath-web.RVM-1003.patch @@ -0,0 +1,12 @@ +--- gnu/xml/transform/SAXSerializer.java 2005-07-02 21:32:16.000000000 +0100 ++++ gnu/xml/transform/SAXSerializer.java 2012-10-08 16:10:18.000000000 +0100 +@@ -200,7 +200,8 @@ + + public String getValue(String qName) + { +- return attrs.getNamedItem(qName).getNodeValue(); ++ Attr attr = (Attr) attrs.getNamedItem(qName); ++ return (attr == null) ? null : attr.getNodeValue(); + } + + void serialize(Node node, ContentHandler ch, LexicalHandler lh) diff --git a/libraryInterface/Common/src/java/lang/Class.java b/libraryInterface/Common/src/java/lang/Class.java --- a/libraryInterface/Common/src/java/lang/Class.java +++ b/libraryInterface/Common/src/java/lang/Class.java @@ -698,7 +698,6 @@ * created lazily on first use. Typically it won't ever get created. */ Map<String, T> enumConstantDirectory() { - System.out.println("EnumContantDirectory is called"); if (enumConstantDirectory == null) { T[] universe = getEnumConstants(); |
From: <jik...@li...> - 2012-11-14 21:29:24
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/eae90f69acb0 changeset: 10570:eae90f69acb0 user: Erik Brangs <eri...@gm...> date: Wed Nov 14 21:51:11 2012 +0100 description: Update checkstyle target to include the EPL parts of the Harmony libraryInterface. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/cba48c591390 changeset: 10571:cba48c591390 user: Erik Brangs <eri...@gm...> date: Wed Nov 14 21:59:29 2012 +0100 description: Merge with default at eae90f69acb0f47990f79223e0428acd8ec5a578, update checkstyle target to include EPL parts of OpenJDK libraryInterface and fix the resulting checkstyle failures. diffstat: bin/buildit | 5 + build.xml | 289 +- build/components/openjdk.xml | 76 + build/eclipse/classpath.openjdk.template | 44 + build/primordials/OpenJDK.linux.txt | 277 + build/primordials/OpenJDK.osx.txt | 277 + include/jni.h | 3 + libraryInterface/Common/src/java/lang/Class.java | 40 + libraryInterface/Common/src/sun/misc/Unsafe.java | 125 +- libraryInterface/OpenJDK/ASF/src/java/lang/ClassLoader.java | 1122 +++ libraryInterface/OpenJDK/ASF/src/java/lang/Runtime.java | 602 + libraryInterface/OpenJDK/ASF/src/java/lang/System.java | 623 + libraryInterface/OpenJDK/ASF/src/java/lang/Throwable.java | 445 + libraryInterface/OpenJDK/ASF/src/java/lang/ref/ReferenceQueue.java | 88 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/AccessibleObject.java | 295 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Array.java | 682 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Constructor.java | 358 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Field.java | 761 ++ libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Method.java | 403 + libraryInterface/OpenJDK/EPL/src/java/lang/JikesRVMHelpers.java | 36 + libraryInterface/OpenJDK/EPL/src/java/lang/JikesRVMSupport.java | 134 + libraryInterface/OpenJDK/EPL/src/java/lang/VMStackWalker.java | 176 + libraryInterface/OpenJDK/EPL/src/java/lang/reflect/JikesRVMSupport.java | 65 + libraryInterface/OpenJDK/EPL/src/java/nio/JikesRVMSupport.java | 42 + libraryInterface/OpenJDK/GPL/src/java/io/BufferedInputStream.java | 479 + libraryInterface/OpenJDK/GPL/src/java/io/FileInputStream.java | 414 + libraryInterface/OpenJDK/GPL/src/java/lang/Enum.java | 238 + libraryInterface/OpenJDK/GPL/src/java/lang/String.java | 3024 ++++++++ libraryInterface/OpenJDK/GPL/src/java/lang/Thread.java | 1999 +++++ libraryInterface/OpenJDK/GPL/src/java/lang/ThreadGroup.java | 1034 ++ libraryInterface/OpenJDK/GPL/src/java/nio/DirectByteBuffer.java | 991 ++ libraryInterface/OpenJDK/GPL/src/java/security/AccessController.java | 591 + libraryInterface/OpenJDK/GPL/src/java/sql/SQLException.java | 375 + libraryInterface/OpenJDK/GPL/src/java/util/Currency.java | 733 ++ libraryInterface/OpenJDK/GPL/src/java/util/ResourceBundle.java | 2751 +++++++ libraryInterface/OpenJDK/GPL/src/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java | 309 + libraryInterface/OpenJDK/GPL/src/java/util/zip/ZipFile.java | 527 + libraryInterface/OpenJDK/GPL/src/sun/java2d/cmm/CMSManager.java | 165 + libraryInterface/OpenJDK/GPL/src/sun/misc/VM.java | 367 + libraryInterface/OpenJDK/GPL/src/sun/reflect/Reflection.java | 340 + rvm/src-generated/vm-configuration/Configuration.template | 1 + rvm/src/org/jikesrvm/VM.java | 102 +- rvm/src/org/jikesrvm/classloader/BootstrapClassLoader.java | 2 + rvm/src/org/jikesrvm/classloader/RVMClass.java | 3 + rvm/src/org/jikesrvm/classloader/TableBasedDynamicLinker.java | 1 + rvm/src/org/jikesrvm/compilers/baseline/BuildBB.java | 2 +- rvm/src/org/jikesrvm/compilers/common/CompiledMethods.java | 1 + rvm/src/org/jikesrvm/jni/JNIFunctions.java | 16 +- rvm/src/org/jikesrvm/runtime/DynamicLibrary.java | 2 +- rvm/src/org/jikesrvm/runtime/RuntimeEntrypoints.java | 9 +- rvm/src/org/jikesrvm/scheduler/RVMThread.java | 3 + tools/bootImageRunner/rvm.openjdk | 74 + tools/bootImageRunner/sys.C | 1506 ++++- tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/BootImageWriter.java | 45 +- tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/BuildJNIFunctionTable.java | 5 + tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/bootimagewrite_Copy | 3613 ++++++++++ 56 files changed, 26638 insertions(+), 52 deletions(-) diffs (truncated from 27611 to 300 lines): diff --git a/bin/buildit b/bin/buildit --- a/bin/buildit +++ b/bin/buildit @@ -95,6 +95,7 @@ --comp-cache-dir Specify a cache location for component downloads --clear-cc Clear out the component caches --harmony Build with harmony (instead of classpath) + --openjdk Build with OpenJDK libraries (instead of classpath) Testing Options: -t, --test Specify a test to run (overriden by --test-run) @@ -173,6 +174,7 @@ "h|help" => \$help, "x87" => \$x87, "harmony" => \$harmony, + "openjdk" => \$openjdk, "j|java-home=s" => \$javaHomeCmd, "ext-lib-dir=s" => \$extlibdir, "comp-cache-dir=s" => \$compcachedir, @@ -678,6 +680,9 @@ if ($harmony ne "") { $defs .= "-Dclasslib.provider=Harmony "; } + if ($openjdk ne "") { + $defs .= "-Dclasslib.provider=OpenJDK "; + } if ($with_perfevent ne "") { $defs .= "-Dconfig.include.perfevent=true "; } diff --git a/build.xml b/build.xml --- a/build.xml +++ b/build.xml @@ -93,10 +93,16 @@ <property name="dist.base" location="${dist.dir}/${build.name}"/> <!-- Set the class library to use --> - <property name="classlib.provider" value="GNU Classpath"/> + <!-- <property name="classlib.provider" value="GNU Classpath"/> --> + <property name="classlib.provider" value="OpenJDK"/> <condition property="harmony.classlib" value="true"> <equals arg1="${classlib.provider}" arg2="Harmony"/> </condition> + + <condition property="openjdk.classlib" value="true"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <condition property="classpath.classlib" value="true"> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> @@ -166,11 +172,12 @@ </target> <target name="check-classlibrary-properties"> - <fail message="Cannot have both Harmony and Classpath class libraries"> + <fail message="Cannot have both Harmony, OpenJDK, and Classpath class libraries"> <condition> <and> <isset property="harmony.classlib"/> <isset property="classpath.classlib"/> + <isset property="openjdk.classlib"/> </and> </condition> </fail> @@ -180,6 +187,7 @@ <or> <equals arg1="${classlib.provider}" arg2="Harmony"/> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> </or> </not> </condition> @@ -190,6 +198,7 @@ <or> <isset property="harmony.classlib"/> <isset property="classpath.classlib"/> + <isset property="openjdk.classlib"/> </or> </not> </condition> @@ -212,6 +221,13 @@ <property name="build.extra.rt.jars" value=":${harmony.lib.dir}/yoko-rmi-impl.jar:${harmony.lib.dir}/instrument.jar:${harmony.lib.dir}/beans.jar:${harmony.lib.dir}/xml-apis.jar:${harmony.lib.dir}/mx4j.jar:${harmony.lib.dir}/nio.jar:${harmony.lib.dir}/xalan.jar:${harmony.lib.dir}/resolver.jar:${harmony.lib.dir}/logging.jar:${harmony.lib.dir}/bcprov.jar:${harmony.lib.dir}/security.jar:${harmony.lib.dir}/sql.jar:${harmony.lib.dir}/print.jar:${harmony.lib.dir}/mx4j-remote.jar:${harmony.lib.dir}/concurrent.jar:${harmony.lib.dir}/luni-kernel-stubs.jar:${harmony.lib.dir}/misc.jar:${harmony.lib.dir}/accessibility.jar:${harmony.lib.dir}/crypto.jar:${harmony.lib.dir}/yoko.jar:${harmony.lib.dir}/rmi.jar:${harmony.lib.dir}/security-kernel-stubs.jar:${harmony.lib.dir}/x-net.jar:${harmony.lib.dir}/icu4j-charsets-4_0.jar:${harmony.lib.dir}/imageio.jar:${harmony.lib.dir}/nio_char.jar:${harmony.lib.dir}/lang-management.jar:${harmony.lib.dir}/regex.jar:${harmony.lib.dir}/applet.jar:${harmony.lib.dir}/prefs.jar:${harmony.lib.dir}/annotation.jar:${harmony.lib.dir}/math.jar:${harmony.lib.dir}/luni.jar:${harmony.lib.dir}/archive.jar:${harmony.lib.dir}/awt.jar:${harmony.lib.dir}/nio_char-src.jar:${harmony.lib.dir}/xercesImpl.jar:${harmony.lib.dir}/yoko-rmi-spec.jar:${harmony.lib.dir}/swing.jar:${harmony.lib.dir}/auth.jar:${harmony.lib.dir}/yoko-core.jar:${harmony.lib.dir}/text.jar:${harmony.lib.dir}/jndi.jar:${harmony.lib.dir}/suncompat.jar:${harmony.lib.dir}/sound.jar:${harmony.lib.dir}/icu4j-4_0.jar:${harmony.lib.dir}/bcel-5.2.jar"/> </target> + <target name="check-openjdk-properties" depends="check-components-properties,check-classlibrary-properties" if="openjdk.classlib"> + <propertycopy name="openjdk.lib.dir" from="${target.name}.openjdk.lib.dir"/> + <test-file name="openjdk.lib.dir" location="${components.file}"/> + <property name="config.portable-native-sync" value="false"/> + <property name="build.extra.rt.jars" value=""/> + </target> + <target name="check-mmtk-properties" depends="check-host-name"> <available property="mmtk_properties_present" file="${mmtk.properties}"/> <fail unless="mmtk_properties_present"> @@ -280,7 +296,15 @@ <ant antfile="build/components/harmony.xml" target="ensure"/> </sequential> </if> - <if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <ant antfile="build/components/openjdk.xml" target="ensure"/> + </sequential> + </if> + <if> <conditions> <equals arg1="${config.with-profile}" arg2="true"/> </conditions> @@ -338,7 +362,7 @@ * component properties for classpath, gcspy etc. --> <target name="check-properties" - depends="check-host-properties,check-config-properties,check-target-properties,check-classlibrary-properties,check-classpath-properties,check-harmony-properties,check-gcspy-properties,check-mmtk-properties" + depends="check-host-properties,check-config-properties,check-target-properties,check-classlibrary-properties,check-classpath-properties,check-harmony-properties,check-openjdk-properties,check-gcspy-properties,check-mmtk-properties" description="Check that all required properties are specified."> <!-- setup properties for start of build. --> @@ -393,6 +417,10 @@ <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="classlib.filter" value="-DRVM_FOR_OPENJDK=1"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <condition property="gctrace.filter" value="-DRVM_WITH_GCTRACE=1" else=""> <equals arg1="${config.mmtk.plan}" arg2="org.mmtk.plan.semispace.gctrace.GCTrace"/> </condition> @@ -1024,6 +1052,9 @@ <condition property="pp_RVM_WITH_GNU_CLASSPATH" value="true" else="false"> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="pp_RVM_WITH_OPENJDK" value="true" else="false"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> <copy file="${basedir}/rvm/src-generated/vm-configuration/Configuration.template" tofile="${generated.config.java}/org/jikesrvm/Configuration.java"> @@ -1052,6 +1083,7 @@ <filter token="_PORTABLE_NATIVE_SYNC_" value="${config.portable-native-sync}"/> <filter token="_RVM_WITH_HARMONY_" value="${pp_RVM_WITH_HARMONY}"/> <filter token="_RVM_WITH_GNU_CLASSPATH_" value="${pp_RVM_WITH_GNU_CLASSPATH}"/> + <filter token="_RVM_WITH_OPENJDK_" value="${pp_RVM_WITH_OPENJDK}"/> </filterset> </copy> @@ -1159,10 +1191,21 @@ <property name="classlib.library-interface.non-cpl.java" location="libraryInterface/Harmony/ASF/src"/> </sequential> </if> + + <!--added by Xi Yang--> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <property name="classlib.library-interface.cpl.java" location="libraryInterface/OpenJDK/EPL/src"/> + <property name="classlib.library-interface.non-cpl.java" location="libraryInterface/OpenJDK/ASF/src"/> + <property name="classlib.library-interface.non-cpl2.java" location="libraryInterface/OpenJDK/GPL/src"/> + </sequential> + </if> </target> <target name="compile" depends="compile-mmtk,compile-options,prepare-source,prepare-config-source,choose-classlib,do-checkstyle"> - <condition property="exclude-arch" value="IA" else="PPC"> <equals arg1="${target.arch}" arg2="ppc"/> </condition> @@ -1261,6 +1304,42 @@ </sequential> </if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <javac destdir="${build.classes}" + debug="true" + fork="true" + memoryMaximumSize="500M" + debugLevel="lines,source" + source="${rvm.java.version}" + target="${rvm.java.version}" + srcdir="${main.java}:${classlib.library-interface.common.java}:${classlib.library-interface.cpl.java}:${classlib.library-interface.non-cpl.java}:${classlib.library-interface.non-cpl2.java}:${mmtk-vm-rvm.java}:${tuningforklib.java}" + sourcepath="${mmtk.java}:${options.java}:${generated.java}:${generated.config.java}:${generated.arch.java}:${main.java}:${mmtk-vm-rvm.java}:${tuningforklib.java}" + includeantruntime="false"> + <bootclasspath> + <pathelement location="${openjdk.lib.dir}/rt.jar"/> + </bootclasspath> + <classpath> + <pathelement location="${build.vmmagic-stub.classes}"/> + </classpath> + <include name="Dummy.java"/> + <include name="OptDummy.java"/> + <include name="org/apache/**/*.java"/> + <include name="sun/**/*.java"/> + <include name="java/**/*.java"/> + <include name="${arch-helper-class}"/> + <include name="com/ibm/tuningfork/**/*.java"/> + <include name="org/jikesrvm/mm/mmtk/**/*.java"/> + <include name="org/jikesrvm/tools/oth/OptTestHarness.java"/> + <include name="org/jikesrvm/tools/header_gen/GenArch_${target.arch}.java"/> + <exclude name="org/jikesrvm/tools/header_gen.GenerateInterfaceDeclarations.java"/> + </javac> + </sequential> + </if> + <mkdir dir="${build.base}/syscall/java"/> <javac srcDir="${syscall.dir}" @@ -1380,7 +1459,7 @@ </javac> </target> - <target name="package" depends="bootstrap-unit-tests,compile-vmmagic,package-classpath,package-harmony"/> + <target name="package" depends="bootstrap-unit-tests,compile-vmmagic,package-classpath,package-harmony,package-openjdk"/> <target name="package-harmony" if="harmony.classlib"> <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> @@ -1401,6 +1480,30 @@ </jar> </target> + <target name="package-openjdk" if="openjdk.classlib"> + <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> + <include name="java/**"/> + <include name="sun/**"/> + <!--no gnu now <include name="gnu/**"/> --> + <!-- Xi Yang <zipfileset src="${classpath.lib.dir}/classpath.jar"/> --> + <zipfileset src="${openjdk.lib.dir}/rt.jar"/> + <zipfileset src="${openjdk.lib.dir}/jsse.jar"/> + </zip> + <jar destfile="${build.vm.jar}" update="true" compress="false"> + <fileset dir="${build.classes}"> + <exclude name="java/**"/> + <exclude name="sun/**"/> + <!-- no gnu now <exclude name="gnu/**"/> --> + </fileset> + <fileset dir="${build.vmmagic-stub.classes}"> + <include name="org/vmmagic/pragma/**"/> + <include name="org/vmmagic/*"/> + </fileset> + <fileset dir="${build.vmmagic.classes}"/> + <fileset dir="${build.options.classes}"/> + </jar> + </target> + <target name="package-classpath" if="classpath.classlib"> <!-- create a rt.jar for the RVM --> <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> @@ -1438,7 +1541,8 @@ <pathelement location="${build.vm.jar}"/> <pathelement location="${build.rt.jar}"/> </classpath> - <arg value="${classlib.provider}"/> +<!-- <arg value="${classlib.provider}"/> --> + <arg value="openjdk"/> <arg path="${generated.asm}:${build.rt.jar}:${build.vm.jar}${build.extra.rt.jars}"/> <arg path="${generated.asm}"/> </java> @@ -1499,6 +1603,11 @@ <condition property="primordials.arch" value=",RVM_PPC.txt" else=",RVM_IA32.txt"> <equals arg1="${target.arch}" arg2="ppc"/> </condition> + <condition property="primordials.openjdk" + value="OpenJDK.osx.txt" + else="OpenJDK.linux.txt"> + <os family="mac"/> + </condition> <if> <conditions> @@ -1526,6 +1635,19 @@ </sequential> </if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <concat destfile="${build.base}/Primordials.txt"> + <filelist dir="${build.base}" files="ClassesForImage.txt"/> + <filelist dir="${primordials.dir}" + files="${primordials.openjdk},RVM.txt${primordials.opt}${primordials.aos}${primordials.arch}"/> + </concat> + </sequential> + </if> + <replaceregexp file="${build.base}/Primordials.txt" match=".*#.*" replace="" byline="true"/> </target> @@ -1561,6 +1683,10 @@ <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> |
From: <jik...@li...> - 2013-02-12 15:40:02
|
ZGV0YWlsczogICBodHRwOi8vaGcuY29kZS5zb3VyY2Vmb3JnZS5uZXQvcC9qaWtlc3J2bS9jb2Rl L3Jldi82NzhkMGQyNTM3YmQKY2hhbmdlc2V0OiAxMDU4ODo2NzhkMGQyNTM3YmQKdXNlcjogICAg ICBEYXZlIEdyb3ZlIDxncm92ZWRAdXMuaWJtLmNvbT4KZGF0ZTogICAgICBUdWUgRmViIDEyIDEw OjI5OjQ0IDIwMTMgLTA1MDAKZGVzY3JpcHRpb246CkJ1bXAgdmVyc2lvbiBudW1iZXIgdG8gMy4x LjMKCgpkZXRhaWxzOiAgIGh0dHA6Ly9oZy5jb2RlLnNvdXJjZWZvcmdlLm5ldC9wL2ppa2VzcnZt L2NvZGUvcmV2LzU0ZmQxMzE4YTFlNwpjaGFuZ2VzZXQ6IDEwNTg5OjU0ZmQxMzE4YTFlNwp1c2Vy OiAgICAgIERhdmUgR3JvdmUgPGdyb3ZlZEB1cy5pYm0uY29tPgpkYXRlOiAgICAgIFR1ZSBGZWIg MTIgMTA6Mzg6MjEgMjAxMyAtMDUwMApkZXNjcmlwdGlvbjoKVXBkYXRlIHVzZXJndWlkZSBmb3Ig My4xLjMgYmFzZWQgb24gQ29uZmx1ZW5jZSBleHBvcnQgYXMgb2YgRmViIDEyLCAyMDEzLgoKCmRp ZmZzdGF0OgoKIGJ1aWxkLnhtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgMiArLQogdXNlcmd1aWRlL2h0bWwvUlZNL0FPUytDb250cm9s bGVyLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRt bC9SVk0vQWRhcHRpdmUrT3B0aW1pemF0aW9uK1N5c3RlbS5odG1sICAgICAgICAgICB8ICAgNDMg Ky0tCiB1c2VyZ3VpZGUvaHRtbC9SVk0vQWRkaW5nK2ErTmV3K0dDLmh0bWwgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDYgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9BcmNoaXRlY3R1cmUuaHRt bCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZN L0JVUlMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDY5ICstLS0K IHVzZXJndWlkZS9odG1sL1JWTS9CYXNlbGluZStDb21waWxlci5odG1sICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL0Jvb3RzdHJhcC5odG1sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYxICstLS0KIHVzZXJndWlkZS9odG1sL1JWTS9C dWlsZGluZytQYXRjaGVkK1ZlcnNpb25zLmh0bWwgICAgICAgICAgICAgIHwgICAgNCArLQogdXNl cmd1aWRlL2h0bWwvUlZNL0J1aWxkaW5nK2ErSHlicmlkK0NvbGxlY3Rvci5odG1sICAgICAgICAg ICAgfCAgICA2ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vQnVpbGRpbmcrYStNYXJrLXN3ZWVwK0Nv bGxlY3Rvci5odG1sICAgICAgICB8ICAgMTAgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9CdWlsZGlu ZytvbitXaW5kb3dzLmh0bWwgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogdXNlcmd1aWRl L2h0bWwvUlZNL0J1aWxkaW5nK3RoZStSVk0uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgfCAg IDI5ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vQ2FyZSthbmQrRmVlZGluZy5odG1sICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9DbGFzcythbmQrQ29k ZStNYW5hZ2VtZW50Lmh0bWwgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwv UlZNL0NvZGluZytDb252ZW50aW9ucy5odG1sICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICst CiB1c2VyZ3VpZGUvaHRtbC9SVk0vQ29kaW5nK1N0eWxlLmh0bWwgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDggKy0KIHVzZXJndWlkZS9odG1sL1JWTS9Db21waWxlcitETkEuaHRtbCAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL0Nv bXBpbGVyK0ludHJpbnNpY3MuaHRtbCAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiB1c2Vy Z3VpZGUvaHRtbC9SVk0vQ29tcGlsZXIrT3B0aW1pemF0aW9uK0NvbXBhcmlzb24rQ2hhcnQuaHRt bCB8ICAgOTYgKystLQogdXNlcmd1aWRlL2h0bWwvUlZNL0NvbXBpbGVycy5odG1sICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vQ29uZmln dXJpbmcrdGhlK1JWTS5odG1sICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIHVzZXJndWlk ZS9odG1sL1JWTS9Db3JlK1J1bnRpbWUrU2VydmljZXMuaHRtbCAgICAgICAgICAgICAgICAgIHwg ICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL0Nvc3QrQmVuZWZpdCtNb2RlbC5odG1sICAgICAg ICAgICAgICAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vQ3Jvc3MtUGxhdGZv cm0rQnVpbGRpbmcuaHRtbCAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHVzZXJndWlkZS9odG1s L1JWTS9EZWJ1Z2dpbmcrdGhlK1JWTS5odG1sICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCAr LQogdXNlcmd1aWRlL2h0bWwvUlZNL0VkaXRpbmcrSmlrZXNSVk0raW4rYW4rSURFLmh0bWwgICAg ICAgICAgICAgfCAgIDgwICstLS0tCiB1c2VyZ3VpZGUvaHRtbC9SVk0vRXhjZXB0aW9uK01hbmFn ZW1lbnQuaHRtbCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1sL1JW TS9FeHBlcmltZW50YWwrR3VpZGVsaW5lcy5odG1sICAgICAgICAgICAgICAgIHwgICAgNCArLQog dXNlcmd1aWRlL2h0bWwvUlZNL0V4dGVybmFsK1Rlc3QrUmVzb3VyY2VzLmh0bWwgICAgICAgICAg ICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vR0RCK1N0YWNrK1dhbGtpbmcuaHRt bCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9HZXQr VGhlK1NvdXJjZS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NyArLS0KIHVzZXJn dWlkZS9odG1sL1JWTS9JUi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL0pOSStDb21waWxlci5odG1sICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vSk5JLmh0bWwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9o dG1sL1JWTS9KaWtlcytSVk0lMjdzK2NvbXBpbGVycy5odG1sICAgICAgICAgICAgICAgIHwgICAg NCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL0xpZmUrQ3ljbGUrb2YrYStDb21waWxlZCtNZXRob2Qu aHRtbCAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vTG9nZ2luZythbmQrRGVi dWdnaW5nLmh0bWwgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1sL1JW TS9NTVRrK1R1dG9yaWFsK01hcmstU3dlZXAuaHRtbCAgICAgICAgICAgICAgIHwgICAxMCArLQog dXNlcmd1aWRlL2h0bWwvUlZNL01NVGsrVHV0b3JpYWwrUHJlbGltaW5hcmllcy5odG1sICAgICAg ICAgICAgfCAgICA2ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vTU1UaytUdXRvcmlhbC5odG1sICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9NTVRr Lmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1 aWRlL2h0bWwvUlZNL01hZ2ljLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA4ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vTWVtb3J5K0FsbG9jYXRpb24raW4rSmlrZXNS Vk0uaHRtbCAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9NZXRob2QrQ29t cGlsYXRpb24uaHRtbCAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0 bWwvUlZNL01vZGlmeWluZyt0aGUrUlZNLmh0bWwgICAgICAgICAgICAgICAgICAgICAgfCAgICA2 ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vT2JqZWN0K01vZGVsLmh0bWwgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9PcHRUZXN0SGFybmVzcy5o dG1sICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZN L09wdGltaXppbmcrQ29tcGlsZXIuaHRtbCAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiB1 c2VyZ3VpZGUvaHRtbC9SVk0vUHJlbGltaW5hcmllcy5odG1sICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDYgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9Qcmltb3JkaWFsK0NsYXNzK0xpc3Qu aHRtbCAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL1Byb2Zp bGluZytBcHBsaWNhdGlvbnMrd2l0aCtKaWtlcytSVk0uaHRtbCAgfCAgICA0ICstCiB1c2VyZ3Vp ZGUvaHRtbC9SVk0vUXVpY2srU3RhcnQrR3VpZGUuaHRtbCAgICAgICAgICAgICAgICAgICAgICB8 ICAgMTQgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9SYXcrTWVtb3J5K0FjY2Vzcy5odG1sICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL1J1bm5pbmcrdGhl K1JWTS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRt bC9SVk0vU2Nhbm5pbmcrT2JqZWN0cytpbitKaWtlc1JWTS5odG1sICAgICAgICAgICB8ICAgIDQg Ky0KIHVzZXJndWlkZS9odG1sL1JWTS9UZXN0K1J1bitEZXNjcmlwdGlvbnMuaHRtbCAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL1Rlc3RpbmcrdGhlK1JWTS5o dG1sICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0v VGhlK01NVGsrVGVzdCtIYXJuZXNzLmh0bWwgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVz ZXJndWlkZS9odG1sL1JWTS9UaHJlYWQrTWFuYWdlbWVudC5odG1sICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL1RocmVhZGluZythbmQrWWllbGRwb2lu dHMuaHRtbCAgICAgICAgICAgICAgfCAgIDE1ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vVW5ib3hl ZCtUeXBlcy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlk ZS9odG1sL1JWTS9VbmludGVycnVwdGlibGUrQ29kZS5odG1sICAgICAgICAgICAgICAgICAgIHwg ICAzNCArLQogdXNlcmd1aWRlL2h0bWwvUlZNL1VzZXIrR3VpZGUuaHRtbCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vVXNpbmcrR0NTcHku aHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1s L1JWTS9Vc2luZytidWlsZGl0Lmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAr LQogdXNlcmd1aWRlL2h0bWwvUlZNL1ZNK0NhbGxiYWNrcy5odG1sICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA0ICstCiB1c2VyZ3VpZGUvaHRtbC9SVk0vVk0rQ29udmVudGlvbnMuaHRt bCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHVzZXJndWlkZS9odG1sL1JWTS9p bWFnZXMvaWNvbnMvY29udGVudHR5cGVzL2NvbW1lbnRfMTYucG5nICAgIHwgIEJpbj0yMAogdXNl cmd1aWRlL2h0bWwvUlZNL2ltYWdlcy9pY29ucy9lbW90aWNvbnMvZm9yYmlkZGVuLmdpZiAgICAg ICAgfCAgQmluPTIwCiB1c2VyZ3VpZGUvaHRtbC9SVk0vaW1hZ2VzL2ljb25zL2Vtb3RpY29ucy9m b3JiaWRkZW4ucG5nICAgICAgICB8ICBCaW49MjAKIHVzZXJndWlkZS9odG1sL1JWTS9pbWFnZXMv aWNvbnMvZW1vdGljb25zL2luZm9ybWF0aW9uLmdpZiAgICAgIHwgIEJpbj0yMAogdXNlcmd1aWRl L2h0bWwvUlZNL2ltYWdlcy9pY29ucy9lbW90aWNvbnMvaW5mb3JtYXRpb24ucG5nICAgICAgfCAg QmluPTIwCiB1c2VyZ3VpZGUvaHRtbC9SVk0vaW1hZ2VzL2ljb25zL2Vtb3RpY29ucy93YXJuaW5n LmdpZiAgICAgICAgICB8ICBCaW49MjAKIHVzZXJndWlkZS9odG1sL1JWTS9pbWFnZXMvaWNvbnMv ZW1vdGljb25zL3dhcm5pbmcucG5nICAgICAgICAgIHwgIEJpbj0yMAogdXNlcmd1aWRlL2h0bWwv UlZNL2luZGV4Lmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICst CiB1c2VyZ3VpZGUvaHRtbC9SVk0vc3R5bGVzL3NpdGUuY3NzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNzIgKysrKz0KKysrKy0KIHVzZXJndWlkZS91c2VyZ3VpZGUucGRmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEJpbj0yMAogNzggZmlsZXMgY2hh bmdlZCwgNDI2IGluc2VydGlvbnMoKyksIDUzOCBkZWxldGlvbnMoLSkKCmRpZmZzICh0cnVuY2F0 ZWQgZnJvbSAxNDkzMyB0byAzMDAgbGluZXMpOgoKZGlmZiAtLWdpdCBhL2J1aWxkLnhtbCBiL2J1 aWxkLnhtbAotLS0gYS9idWlsZC54bWwKKysrIGIvYnVpbGQueG1sCkBAIC0xMiw3ICsxMiw3IEBA CiAgLS0+CiA8cHJvamVjdCBuYW1lPTNEIkppa2VzUlZNIiBkZWZhdWx0PTNEIm1haW4iIGJhc2Vk aXI9M0QiLiI+Cj0yMAotICA8cHJvcGVydHkgbmFtZT0zRCJydm0udmVyc2lvbiIgdmFsdWU9M0Qi My4xLjIraGciLz4KKyAgPHByb3BlcnR5IG5hbWU9M0QicnZtLnZlcnNpb24iIHZhbHVlPTNEIjMu MS4zK2hnIi8+CiAgIDwhLS0gPHByb3BlcnR5IG5hbWU9M0QiaGcucmV2aXNpb24iIHZhbHVlPTNE IlhYWCIvPiAtLT4KPTIwCiAgIDxwcm9wZXJ0eSBuYW1lPTNEImppa2VzcnZtLmRpciIgbG9jYXRp b249M0QiJHtiYXNlZGlyfSIvPgpkaWZmIC0tZ2l0IGEvdXNlcmd1aWRlL2h0bWwvUlZNL0FPUytD b250cm9sbGVyLmh0bWwgYi91c2VyZ3VpZGUvaHRtbC9SVk0vQU89ClMrQ29udHJvbGxlci5odG1s Ci0tLSBhL3VzZXJndWlkZS9odG1sL1JWTS9BT1MrQ29udHJvbGxlci5odG1sCisrKyBiL3VzZXJn dWlkZS9odG1sL1JWTS9BT1MrQ29udHJvbGxlci5odG1sCkBAIC0zMywxMCArMzMsMTAgQEAKICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+Cj0yMAogICAgICAgICAgICAgICAgICAgID0yMAotICAg ICAgICAgICAgICAgID0yMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA9MjAKICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgPC9k aXY+PTIwCiAgICAgICAgICAgICA8ZGl2IGlkPTNEImZvb3RlciIgc3R5bGU9M0QiYmFja2dyb3Vu ZDogdXJsKGh0dHA6Ly9kb2NzLmNvZGVoYT0KdXMub3JnL2ltYWdlcy9ib3JkZXIvYm9yZGVyX2Jv dHRvbS5naWYpIHJlcGVhdC14OyI+Ci0gICAgICAgICAgICAgICAgPHA+PHNtYWxsPkRvY3VtZW50 IGdlbmVyYXRlZCBieSBDb25mbHVlbmNlIG9uIEZlYiAxNywgMjAxMj0KIDEwOjI0PC9zbWFsbD48 L3A+CisgICAgICAgICAgICAgICAgPHA+PHNtYWxsPkRvY3VtZW50IGdlbmVyYXRlZCBieSBDb25m bHVlbmNlIG9uIEZlYiAxMiwgMjAxMz0KIDA5OjMyPC9zbWFsbD48L3A+CiAgICAgICAgICAgICA8 L2Rpdj4KICAgICAgICAgPC9kaXY+ICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS91 c2VyZ3VpZGUvaHRtbC9SVk0vQWRhcHRpdmUrT3B0aW1pemF0aW9uK1N5c3RlbS5odG1sIGIvdXNl cmd1aT0KZGUvaHRtbC9SVk0vQWRhcHRpdmUrT3B0aW1pemF0aW9uK1N5c3RlbS5odG1sCi0tLSBh L3VzZXJndWlkZS9odG1sL1JWTS9BZGFwdGl2ZStPcHRpbWl6YXRpb24rU3lzdGVtLmh0bWwKKysr IGIvdXNlcmd1aWRlL2h0bWwvUlZNL0FkYXB0aXZlK09wdGltaXphdGlvbitTeXN0ZW0uaHRtbApA QCAtMTcsNTUgKzE3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgIDwvaDE+Cj0yMAogICAgICAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPTNEInBhZ2UtbWV0YWRhdGEiPgotICAgICAgICAgICAg ICAgICAgICAgICAgPHA+VGhpcyBwYWdlIGxhc3QgY2hhbmdlZCBvbiBKdWwgMDcsIDIwMDggYnkg PGZvbnQ9CiBjb2xvcj0zRCIjMDA1MEIyIj5kZ3JvdmU8L2ZvbnQ+LjwvcD4KKyAgICAgICAgICAg ICAgICAgICAgICAgIDxwPlRoaXMgcGFnZSBsYXN0IGNoYW5nZWQgb24gT2N0IDE1LCAyMDEyIGJ5 IDxmb250PQogY29sb3I9M0QiIzAwNTBCMiI+ZGdyb3ZlPC9mb250Pi48L3A+CiAgICAgICAgICAg ICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgIDwvZGl2Pgo9MjAKICAgICAgICAgICAg ICAgICA8ZGl2IGlkPTNEImNvbnRlbnQiIGNsYXNzPTNEInZpZXciPgogICAgICAgICAgICAgICAg ICAgICA8ZGl2IGlkPTNEIm1haW4tY29udGVudCIgY2xhc3M9M0Qid2lraS1jb250ZW50IGdyb3Vw Ij4KLSAgICAgICAgICAgICAgICAgICAgPHA+QSBjb21wcmVoZW5zaXZlIGRpc2N1c3Npb24gb2Yg dGhlIGRlc2lnbiBhbmQgaW1wbGVtPQplbnRhdGlvbiBvZiB0aGUgb3JpZ2luYWwgSmlrZXMgUlZN IGFkYXB0aXZlIG9wdGltaXphdGlvbiBzeXN0ZW0gaXMgZ2l2ZW4gaW49CiB0aGU8YSBocmVmPTNE Imh0dHA6Ly9kb2NzLmNvZGVoYXVzLm9yZy9kaXNwbGF5L1JWTS9QdWJsaWNhdGlvbnMjUHVibGlj YXRpbz0KbnMtYW9zIiByZWw9M0Qibm9mb2xsb3ciPk9PUFNMQSAyMDAwIHBhcGVyPC9hPiBieSBB cm5vbGQsIEZpbmssIEdyb3ZlLCBIaW5kPQogYW5kIFN3ZWVuZXkuIEEgbnVtYmVyIG9mIGFzcGVj dHMgb2YgdGhlIHN5c3RlbSBoYXZlIGJlZW4gY2hhbmdlZCBzaW5jZSAyMDA9CjAsIHNvIGEgYmV0 dGVyIHJlc291cmNlIGlzIGEgdGVjaG5pY2FsIHJlcG9ydCA8YSBocmVmPTNEImh0dHA6Ly9kb21p bm8ucmVzZT0KYXJjaC5pYm0uY29tL2NvbW0vcmVzZWFyY2hfcGVvcGxlLm5zZi9wYWdlcy9kZ3Jv dmUuUkMyMzQyOS5odG1sIiBjbGFzcz0zRCJlPQp4dGVybmFsLWxpbmsiIHJlbD0zRCJub2ZvbGxv dyI+Tm92LiAyMDA0IHRlY2huaWNhbCByZXBvcnQ8L2E+IHRoYXQgZGVzY3JpYmU9CnMgdGhlIGFy Y2hpdGVjdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gaW4gc29tZSBkZXRhaWwuIFRoaXMgc2VjdGlv biBvZiB0aGUgdT0Kc2VyZ3VpZGUgaXMgYmFzZWQgb24gc2VjdGlvbiA1IG9mIHRoZSAyMDA0IHRl Y2huaWNhbCByZXBvcnQuCi08YnIgY2xhc3M9M0QiYXRsLWZvcmNlZC1uZXdsaW5lIiAvPjwvcD4K LQotPHA+VGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBKaWtlcyBSVk0gYWRhcHRpdmUgb3B0aW1p emF0aW9uIHN5c3RlbSB1c2VzIGE9CiBudW1iZXIgb2YgSmF2YSB0aHJlYWRzOiBzZXZlcmFsIG9y Z2FuaXplciB0aHJlYWRzIGluIHRoZSBydW50aW1lIG1lYXN1cmVtZT0KbnRzIGNvbXBvbmVudCwg dGhlIGNvbnRyb2xsZXIgdGhyZWFkLCBhbmQgdGhlIGNvbXBpbGF0aW9uIHRocmVhZC4gVGhlIHZh cmlvPQp1cyB0aHJlYWRzIGFyZSBsb29zZWx5IGNvdXBsZWQsIGNvbW11bmljYXRpbmcgd2l0aCBl YWNoIG90aGVyIHRocm91Z2ggc2hhcmU9CmQgcXVldWVzIGFuZC9vciB0aGUgb3RoZXIgaW4gbWVt b3J5IGRhdGEgc3RydWN0dXJlcy4gQWxsIHF1ZXVlcyBpbiB0aGUgc3lzdD0KZW0gYXJlIGJsb2Nr aW5nIHByaW9yaXR5IHF1ZXVlczsgaWYgYSBjb25zdW1lciB0aHJlYWQgcGVyZm9ybXMgYSBkZXF1 ZXVlIG9wPQplcmF0aW9uIHdoZW4gdGhlIHF1ZXVlIGlzIGVtcHR5LCBpdCBzdXNwZW5kcyB1bnRp bCBhIHByb2R1Y2VyIHRocmVhZCBwZXJmb3I9Cm1zIGFuIGVucXVldWUgb3BlcmF0aW9uLjwvcD4K LQotPHA+VGhlIGFkYXB0aXZlIG9wdGltaXphdGlvbiBzeXN0ZW0gcGVyZm9ybXMgdHdvIHByaW1h cnkgdGFza3M6IHNlbGVjdGl2ZSA9Cm9wdGltaXphdGlvbiBhbmQgcHJvZmlsZS1kaXJlY3RlZCBp bmxpbmluZy48L3A+Ci0KLQotPGgzIGlkPTNEIkFkYXB0aXZlT3B0aW1pemF0aW9uU3lzdGVtLVNl bGVjdGl2ZU9wdGltaXphdGlvbiI+U2VsZWN0aXZlIE9wdGk9Cm1pemF0aW9uPC9oMz4KLQotPHA+ VGhlIGdvYWwgb2Ygc2VsZWN0aXZlIG9wdGltaXphdGlvbiBpcyB0byBpZGVudGlmeSByZWdpb25z IG9mIGNvZGUgaW4gd2g9CmljaCB0aGUgYXBwbGljYXRpb24gc3BlbmRzIHNpZ25pZmljYW50IGV4 ZWN1dGlvbiB0aW1lIChvZnRlbiBjYWxsZWQgYGBob3Qgcz0KcG90cycnKSwgZGV0ZXJtaW5lIGlm IG92ZXJhbGwgYXBwbGljYXRpb24gcGVyZm9ybWFuY2UgaXMgbGlrZWx5IHRvIGJlIGltcHJvPQp2 ZWQgYnkgZnVydGhlciBvcHRpbWl6aW5nIG9uZSBvciBtb3JlIGhvdCBzcG90cywgYW5kIGlmIHNv IHRvIGludm9rZSB0aGUgb3A9CnRpbWl6aW5nIGNvbXBpbGVyIGFuZCBpbnN0YWxsIHRoZSByZXN1 bHRpbmcgb3B0aW1pemVkIGNvZGUgaW4gdGhlIHZpcnR1YWwgbT0KYWNoaW5lLjwvcD4KLQotPHA+ SW4gSmlrZXMgUlZNLCB0aGUgdW5pdCBvZiBvcHRpbWl6YXRpb24gaXMgYSBtZXRob2QuPUMyPUEw IFRodXMsIHRvIHBlcmY9Cm9ybSBzZWxlY3RpdmUgb3B0aW1pemF0aW9uLCBmaXJzdCB0aGUgcnVu dGltZSBtZWFzdXJlbWVudHMgY29tcG9uZW50IG11c3QgaT0KZGVudGlmeSBjYW5kaWRhdGUgbWV0 aG9kcyAoYGBob3QgbWV0aG9kcycnKSBmb3IgdGhlIGNvbnRyb2xsZXIgdG8gY29uc2lkZXIuPQog VG8gdGhpcyBlbmQsIGl0IGluc3RhbGxzIGEgbGlzdGVuZXIgdGhhdCBwZXJpb2RpY2FsbHkgc2Ft cGxlcyB0aGUgY3VycmVudGw9CnkgZXhlY3V0aW5nIG1ldGhvZCBhdCBldmVyeSB0YWtlbiB5aWVs ZHBvaW50Lj1DMj1BMCBXaGVuIGl0IGlzIHRpbWUgdG8gdGFrZT0KIGEgc2FtcGxlLCB0aGUgbGlz dGVuZXIgaW5zcGVjdHMgdGhlIHRocmVhZCdzIGNhbGwgc3RhY2sgYW5kIHJlY29yZHMgYSBzaW5n PQpsZSBjb21waWxlZCBtZXRob2QgaWQgaW50byBhIGJ1ZmZlci4gSWYgdGhlIHlpZWxkcG9pbnQg b2NjdXJzIGluIHRoZSBwcm9sb2c9CnVlIG9mIGEgbWV0aG9kLCB0aGVuIHRoZSBsaXN0ZW5lciBh ZGRpdGlvbmFsbHkgcmVjb3JkcyB0aGUgY29tcGlsZWQgbWV0aG9kID0KaWQgb2YgdGhlIGN1cnJl bnQgYWN0aXZhdGlvbidzIGNhbGxlci49QzI9QTAgSWYgdGhlIHRha2VuIHlpZWxkcG9pbnQgb2Nj dXJzPQogb24gYSBsb29wIGJhY2tlZGdlIG9yIG1ldGhvZCBlcGlsb2d1ZSwgdGhlbiB0aGUgbGlz dGVuZXIgcmVjb3JkcyB0aGUgY29tcGk9CmxlZCBtZXRob2QgaWQgb2YgdGhlIGN1cnJlbnQgbWV0 aG9kLj1DMj1BMDwvcD4KLQotPHA+V2hlbiB0aGUgYnVmZmVyIG9mIHNhbXBsZXMgaXMgZnVsbCwg dGhlIHNhbXBsaW5nIHdpbmRvdyBlbmRzLiBUaGUgbGlzdGU9Cm5lciB0aGVuIHVucmVnaXN0ZXJz IGl0c2VsZiAoc3RvcHMgdGFraW5nIHNhbXBsZXMpIGFuZCB3YWtlcyB0aGUgc2xlZXBpbmcgSD0K b3QgTWV0aG9kIE9yZ2FuaXplci49QzI9QTAgVGhlIEhvdCBNZXRob2QgT3JnYW5pemVyIHByb2Nl c3NlcyB0aGUgYnVmZmVyIG9mPQogY29tcGlsZWQgbWV0aG9kIGlkcyBieSB1cGRhdGluZyB0aGUg TWV0aG9kIFNhbXBsZSBEYXRhLj1DMj1BMCBUaGlzIGRhdGEgc3Q9CnJ1Y3R1cmUgbWFpbnRhaW5z LCBmb3IgZXZlcnkgY29tcGlsZWQgbWV0aG9kLCB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbWVzIHRo YT0KdCBpdCBoYXMgYmVlbiBzYW1wbGVkLiBDYXJlZnVsIGRlc2lnbiBvZiB0aGlzIGRhdGEgc3Ry dWN0dXJlIChNZXRob2RDb3VudERhPQp0YS5qYXZhKSB3YXMgY3JpdGljYWwgdG8gYWNoaWV2aW5n IGxvdyBwcm9maWxpbmcgb3ZlcmhlYWQuIEluIGFkZGl0aW9uIHRvIHM9CnVwcG9ydGluZyBsb29r dXBzIGFuZCB1cGRhdGVzIGJ5IGNvbXBpbGVkIG1ldGhvZCBpZCwgaXQgbXVzdCBhbHNvIGVmZmlj aWVudD0KbHkgZW51bWVyYXRlIGFsbCBtZXRob2RzIHRoYXQgaGF2ZSBiZWVuIHNhbXBsZWQgbW9y ZSB0aW1lcyB0aGFuIGEgKHZhcnlpbmcpPQogdGhyZXNob2xkIHZhbHVlLiBBZnRlciB1cGRhdGlu ZyB0aGUgTWV0aG9kIFNhbXBsZSBEYXRhLCB0aGUgSG90IE1ldGhvZCBPcmc9CmFuaXplciBjcmVh dGVzIGFuIGV2ZW50IGZvciBlYWNoIG1ldGhvZCB0aGF0IGhhcyBiZWVuIHNhbXBsZWQgaW4gdGhp cyB3aW5kbz0KdyBhbmQgYWRkcyBpdCB0byB0aGUgY29udHJvbGxlcidzIHByaW9yaXR5IHF1ZXVl LCB1c2luZyB0aGUgc2FtcGxlIHZhbHVlIGFzPQogaXRzIHByaW9yaXR5LiBUaGUgZXZlbnQgY29u dGFpbnMgdGhlIGNvbXBpbGVkIG1ldGhvZCBhbmQgdGhlIDxlbT50b3RhbDwvZW09Cj4gbnVtYmVy IG9mIHRpbWVzIGl0IGhhcyBiZWVuIHNhbXBsZWQ9QzI9QTAgc2luY2UgdGhlIGJlZ2lubmluZyBv ZiBleGVjdXRpbz0Kbi49QzI9QTAgQWZ0ZXIgZW5xdWV1aW5nIHRoZSBsYXN0IGV2ZW50LCB0aGUg SG90IE1ldGhvZCBPcmdhbml6ZXIgcmUtcmVnaXN0PQplcnMgdGhlIG1ldGhvZCBsaXN0ZW5lciBh bmQgdGhlbiBzbGVlcHMgdW50aWwgdGhlIG5leHQgYnVmZmVyIG9mIHNhbXBsZXMgaXM9CiByZWFk eSB0byBiZSBwcm9jZXNzZWQuPC9wPgotCi08cD5XaGVuIHRoZSBwcmlvcml0eSBxdWV1ZSBkZWxp dmVycyBhbiBldmVudCB0byB0aGUgY29udHJvbGxlciwgdGhlIGNvbnRybz0KbGxlciBkZXF1ZXVl cyB0aGUgZXZlbnQgYW5kIGFwcGxpZXMgdGhlIG1vZGVsLWRyaXZlbiByZWNvbXBpbGF0aW9uIHBv bGljeSB0PQpvIGRldGVybWluZSB3aGF0IGFjdGlvbiAoaWYgYW55KSB0byB0YWtlIGZvciB0aGUg aW5kaWNhdGVkIG1ldGhvZC49QzI9QTAgSWY9CiB0aGUgY29udHJvbGxlciBkZWNpZGVzIHRvIHJl Y29tcGlsZSB0aGUgbWV0aG9kLCBpdCBjcmVhdGVzIGEgcmVjb21waWxhdGlvbj0KIGV2ZW50IHRo YXQgZGVzY3JpYmVzIHRoZSBtZXRob2QgdG8gYmUgY29tcGlsZWQgYW5kIHRoZSBvcHRpbWl6YXRp b24gcGxhbiB0PQpvIHVzZSBhbmQgcGxhY2VzIGl0IG9uIHRoZSByZWNvbXBpbGF0aW9uIHF1ZXVl LiBUaGUgcmVjb21waWxhdGlvbiBxdWV1ZSBwcmk9Cm9yaXRpemVzIGV2ZW50cyBiYXNlZCBvbiB0 aGUgY29zdC1iZW5lZml0IGNvbXB1dGF0aW9uLjwvcD4KLQotPHA+V2hlbiBhbiBldmVudCBpcyBh dmFpbGFibGUgb24gdGhlIHJlY29tcGlsYXRpb24gcXVldWUsIHRoZSByZWNvbXBpbGF0aW89Cm4g dGhyZWFkIHJlbW92ZXMgaXQgYW5kIHBlcmZvcm1zIHRoZSBjb21waWxhdGlvbiBhY3Rpdml0eSBz cGVjaWZpZWQgYnkgdGhlID0KZXZlbnQuIEl0IGludm9rZXMgdGhlIG9wdGltaXppbmcgY29tcGls ZXIgYXQgdGhlIHNwZWNpZmllZCBvcHRpbWl6YXRpb24gbGV2PQplbCBhbmQgaW5zdGFsbHMgdGhl IHJlc3VsdGluZyBjb21waWxlZCBtZXRob2QgaW50byB0aGUgVk0uPUMyPUEwPC9wPgotCi08cD5B bHRob3VnaCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2Ygc2VsZWN0aXZlIG9wdGltaXphdGlvbiBp biBKaWtlcyBSVk0gaT0KcyBzaW1pbGFyIHRvIHRoYXQgb3JpZ2luYWxseSBkZXNjcmliZWQgaW4g QXJub2xkIGV0IGFsJ3MgT09QU0xBIDIwMDAgcGFwZXIsPQogd2UgaGF2ZSBtYWRlIHNldmVyYWwg Y2hhbmdlcyBhbmQgaW1wcm92ZW1lbnRzIGJhc2VkIG9uIGZ1cnRoZXIgZXhwZXJpZW5jZSA9Cndp dGggdGhlIHN5c3RlbS4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgY2hhbmdlIGlzIHRoYXQgaW4gdGhl IHByZXZpb3VzIHN5c3RlbT0KLCB0aGUgbWV0aG9kIHNhbXBsZSBvcmdhbml6ZXIgYXR0ZW1wdGVk IHRvIGZpbHRlciB0aGUgc2V0IG9mIG1ldGhvZHMgaXQgcHJlPQpzZW50ZWQgdG8gdGhlIGNvbnRy b2xsZXIuPUMyPUEwIFRoZSBvcmdhbml6ZXIgcGFzc2VkIGFsb25nIHRvIHRoZSBjb250cm9sbGU9 CnIgb25seSBtZXRob2RzIGNvbnNpZGVyZWQgJnF1b3Q7aG90JnF1b3Q7Lj1DMj1BMCBUaGUgb3Jn YW5pemVyIGRlZW1lZCBhIG1ldD0KaG9kICZxdW90O2hvdCcnIGlmIHRoZSBwZXJjZW50YWdlIG9m IHNhbXBsZXMgYXR0cmlidXRlZCB0byB0aGUgbWV0aG9kIGV4Y2VlPQpkZWQgYSBkeW5hbWljYWxs eSBhZGp1c3RlZCB0aHJlc2hvbGQgdmFsdWUuIE1ldGhvZCBzYW1wbGVzIHdlcmUgcGVyaW9kaWNh bGw9CnkgZGVjYXllZCB0byBnaXZlIG1vcmUgd2VpZ2h0IHRvIHJlY2VudCBzYW1wbGVzLiBUaGUg Y29udHJvbGxlciBkeW5hbWljYWxseT0KIGFkanVzdGVkIHRoaXMgdGhyZXNob2xkIHZhbHVlIGFu ZCB0aGUgc2l6ZSBvZiB0aGUgc2FtcGxpbmcgd2luZG93IGluIGFuIGF0PQp0ZW1wdCB0byByZWR1 Y2UgdGhlIG92ZXJoZWFkIG9mIHByb2Nlc3NpbmcgdGhlIHNhbXBsZXMuPC9wPgotCi08cD5MYXRl ciwgc2lnbmlmaWNhbnQgYWxnb3JpdGhtaWMgaW1wcm92ZW1lbnRzIGluIGtleSBkYXRhIHN0cnVj dHVyZXMgYW5kID0KYWRkaXRpb25hbCBwZXJmb3JtYW5jZSB0dW5pbmcgb2YgdGhlIGxpc3RlbmVy cywgb3JnYW5pemVycywgYW5kPGJyIC8+Ci1jb250cm9sbGVyIHJlZHVjZWQgQU9TIG92ZXJoZWFk IGJ5IHR3byBvcmRlcnMgb2YgbWFnbml0dWRlLj1DMj1BMCBUaGVzZSBvdj0KZXJoZWFkIHJlZHVj dGlvbnMgb2J2aWF0ZSB0aGUgbmVlZCB0byBmaWx0ZXIgZXZlbnRzIHBhc3NlZDxiciAvPgotdG8g dGhlIGNvbnRyb2xsZXIuPUMyPUEwIFRoaXMgcmVzdWx0ZWQgaW4gYSBtb3JlIGVmZmVjdGl2ZSBz eXN0ZW0gd2l0aCBmZXc9CmVyIHBhcmFtZXRlcnMgdG8gdHVuZSBhbmQgYSBzb3VuZGVyIHRoZW9y ZXRpY2FsIGJhc2lzLj1DMj1BMCBJbiBnZW5lcmFsLCBhcz0KIHdlIGdhaW5lZCBleHBlcmllbmNl IHdpdGggdGhlIGFkYXB0aXZlIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiwgd2Ugc3Ryb3ZlIHRvPQog cmVkdWNlIHRoZSBudW1iZXIgb2YgdHVuaW5nPUMyPUEwIHBhcmFtZXRlcnMuPUMyPUEwIFdlIGJl bGlldmUgdGhhdCB0aGUgY2w9Cm9zZXIgdGhlIGltcGxlbWVudGF0aW9uIG1hdGNoZXMgdGhlIGJh c2ljIHRoZW9yZXRpY2FsIGNvc3QtYmVuZWZpdCBtb2RlbCwgdD0KaGUgbW9yZSBsaWtlbHkgaXQg d2lsbCBwZXJmb3JtIHdlbGwgYW5kIG1ha2UgcmVhc29uYWJsZSBhbmQgdW5kZXJzdGFuZGFibGUg PQpkZWNpc2lvbnMuPC9wPgotCi08aDMgaWQ9M0QiQWRhcHRpdmVPcHRpbWl6YXRpb25TeXN0ZW0t UHJvZmlsZS1EaXJlY3RlZElubGluaW5nIj5Qcm9maWxlLURpcj0KZWN0ZWQgSW5saW5pbmc8L2gz PgotCi08cD5Qcm9maWxlLWRpcmVjdGVkIGlubGluaW5nIGF0dGVtcHRzIHRvIGlkZW50aWZ5IGZy ZXF1ZW50bHkgdHJhdmVyc2VkIGNhbD0KbCBncmFwaCBlZGdlcywgd2hpY2ggcmVwcmVzZW50IGNh bGxlci1jYWxsZWUgcmVsYXRpb25zaGlwcywgYW5kIGRldGVybWluZSB3PQpoZXRoZXIgaXQgaXMg YmVuZWZpY2lhbCB0byByZWNvbXBpbGUgdGhlIGNhbGxlciBtZXRob2RzPGJyIC8+Ci10byBhbGxv dyBpbmxpbmluZyBvZiB0aGUgY2FsbGVlIG1ldGhvZHMuIEluIEppa2VzIFJWTSwgcHJvZmlsZS1k aXJlY3RlZCBpbj0KbGluaW5nIGF1Z21lbnRzIGEgbnVtYmVyIG9mIHN0YXRpYzxiciAvPgotaW5s aW5pbmcgaGV1cmlzdGljcy4gVGhlIHJvbGUgb2YgcHJvZmlsZS1kaXJlY3RlZCBpbmxpbmluZyBp cyB0byBpZGVudGlmeSA9CmhpZ2ggY29zdC1oaWdoIGJlbmVmaXQgaW5saW5pbmcgb3Bwb3J0dW5p dGllcyB0aGF0IGV2YWRlIHRoZSBzdGF0aWMgaGV1cmlzdD0KaWNzIGFuZCB0byBwcmVkaWN0IHRo ZSBsaWtlbHkgdGFyZ2V0KHMpIG9mIGludm9rZXZpcnR1YWwgYW5kIGludm9rZWludGVyZmFjPQpl IGNhbGxzIHRoYXQgY291bGQgbm90IGJlIHN0YXRpY2FsbHkgYm91bmQgYXQgY29tcGlsZSB0aW1l LjwvcD4KLQotPHA+VG8gYWNjb21wbGlzaCB0aGlzIGdvYWwsIHRoZSBzeXN0ZW0gdGFrZXMgYSBz dGF0aXN0aWNhbCBzYW1wbGUgb2YgdGhlIG09CmV0aG9kIGNhbGxzIGluIHRoZSBydW5uaW5nIGFw cGxpY2F0aW9uIGFuZCBtYWludGFpbnMgYW4gYXBwcm94aW1hdGlvbiBvZiB0aD0KZSBkeW5hbWlj IGNhbGwgZ3JhcGggYmFzZWQgb24gdGhpcyBkYXRhLiBUaGUgc3lzdGVtIGluc3RhbGxzIGEgbGlz dGVuZXIgdGhhPQp0IHNhbXBsZXMgY2FsbCBlZGdlcyB3aGVuZXZlciBhIHlpZWxkcG9pbnQgaXMg dGFrZW4gaW4gdGhlIHByb2xvZ3VlIG9yIGVwaWw9Cm9ndWUgb2YgYSBtZXRob2QuIFRvIHNhbXBs ZSB0aGUgY2FsbCBlZGdlLCBpdCByZWNvcmRzIHRoZSBjb21waWxlZCBtZXRob2QgaT0KZCBvZiB0 aGUgY2FsbGVyIGFuZCBjYWxsZWUgbWV0aG9kcyBhbmQgdGhlIG9mZnNldCBvZiB0aGUgY2FsbCBp bnN0cnVjdGlvbiBpPQpuIHRoZSBjYWxsZXIncyBtYWNoaW5lIGNvZGUgaW50byBhIGJ1ZmZlci4g V2hlbiB0aGUgYnVmZmVyIG9mIHNhbXBsZXMgaXMgZnU9CmxsLCB0aGUgc2FtcGxpbmcgd2luZG93 IGVuZHMuPGJyIC8+Ci1UaGUgbGlzdGVuZXIgdGhlbiB1bnJlZ2lzdGVycyBpdHNlbGYgKHN0b3Bz IHRha2luZyBzYW1wbGVzKSBhbmQgd2FrZXMgYW4gbz0Kcmdhbml6ZXIgdG8gdXBkYXRlIHRoZSBk eW5hbWljIGNhbGwgZ3JhcGggd2l0aCB0aGUgbmV3IHByb2ZpbGUgZGF0YS4gIFRoZSBvPQpwdGlt aXppbmcgY29tcGlsZXIncyBJbmxpbmUgT3JhY2xlIHVzZXMgdGhlIGR5bmFtaWMgY2FsbCBncmFw aCB0byBndWlkZSBpdCc9CnMgaW5saW5lIGRlY2lzaW9ucy48L3A+Ci0KLTxwPlRoZSBzeXN0ZW0g Y3VycmVudGx5IHVzZWQgaXMgYmFzZWQgb24gQXJub2xkICZhbXA7IEdyb3ZlJ3MgQ0dPIDIwMDUg cGFwPQplci4gIE1vcmUgZGV0YWlscyBvZiB0aGUgc2FtcGxpbmcgc2NoZW1lIGFuZCB0aGUgaW5s aW5pbmcgb3JhY2xlIGNhbiBiZSBmb3U9Cm5kIHRoZXJlLCBvciBpbiB0aGUgc291cmNlIGNvZGUu PC9wPgorICAgICAgICAgICAgICAgICAgICA8cD5BIGNvbXByZWhlbnNpdmUgZGlzY3Vzc2lvbiBv ZiB0aGUgZGVzaWduIGFuZCBpbXBsZW09CmVudGF0aW9uIG9mIHRoZSBvcmlnaW5hbCBKaWtlcyBS Vk0gYWRhcHRpdmUgb3B0aW1pemF0aW9uIHN5c3RlbSBpcyBnaXZlbiBpbj0KIHRoZSA8YSBocmVm PTNEImh0dHA6Ly9kb2NzLmNvZGVoYXVzLm9yZy9kaXNwbGF5L1JWTS9QdWJsaWNhdGlvbnMjUHVi bGljYXRpPQpvbnMtYW9zIiByZWw9M0Qibm9mb2xsb3ciPk9PUFNMQSAyMDAwIHBhcGVyPC9hPiBi eSBBcm5vbGQsIEZpbmssIEdyb3ZlLCBIaW49CmQgYW5kIFN3ZWVuZXkuIEEgbnVtYmVyIG9mIGFz cGVjdHMgb2YgdGhlIHN5c3RlbSBoYXZlIGJlZW4gY2hhbmdlZCBzaW5jZSAyMD0KMDAsIHNvIGEg YmV0dGVyIHJlc291cmNlIGlzIGEgdGVjaG5pY2FsIHJlcG9ydCA8YSBocmVmPTNEImh0dHA6Ly9k b21pbm8ucmVzPQplYXJjaC5pYm0uY29tL2xpYnJhcnkvY3liZXJkaWcubnNmLzFlNDExNWFlYTc4 YjZlN2M4NTI1NmIzNjAwNjZmMGQ0LzMwYzJiNWI9CmI1MzUyNDQzODg1MjU2ZjU1MDA2NmI1YzEl MjFPcGVuRG9jdW1lbnQiIGNsYXNzPTNEImV4dGVybmFsLWxpbmsiIHJlbD0zRCJubz0KZm9sbG93 Ij5Ob3YuIDIwMDQgdGVjaG5pY2FsIHJlcG9ydDwvYT4gdGhhdCBkZXNjcmliZXMgdGhlIGFyY2hp dGVjdHVyZSBhbmQgPQppbXBsZW1lbnRhdGlvbiBpbiBzb21lIGRldGFpbC4gVGhpcyBzZWN0aW9u IG9mIHRoZSB1c2VyZ3VpZGUgaXMgYmFzZWQgb24gc2U9CmN0aW9uIDUgb2YgdGhlIDIwMDQgdGVj aG5pY2FsIHJlcG9ydC48L3A+PHA+VGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBKaWtlcz0KIFJW TSBhZGFwdGl2ZSBvcHRpbWl6YXRpb24gc3lzdGVtIHVzZXMgYSBudW1iZXIgb2YgSmF2YSB0aHJl YWRzOiBzZXZlcmFsIG9yPQpnYW5pemVyIHRocmVhZHMgaW4gdGhlIHJ1bnRpbWUgbWVhc3VyZW1l bnRzIGNvbXBvbmVudCwgdGhlIGNvbnRyb2xsZXIgdGhyZWE9CmQsIGFuZCB0aGUgY29tcGlsYXRp b24gdGhyZWFkLiBUaGUgdmFyaW91cyB0aHJlYWRzIGFyZSBsb29zZWx5IGNvdXBsZWQsIGNvbT0K bXVuaWNhdGluZyB3aXRoIGVhY2ggb3RoZXIgdGhyb3VnaCBzaGFyZWQgcXVldWVzIGFuZC9vciB0 aGUgb3RoZXIgaW4gbWVtb3J5PQogZGF0YSBzdHJ1Y3R1cmVzLiBBbGwgcXVldWVzIGluIHRoZSBz eXN0ZW0gYXJlIGJsb2NraW5nIHByaW9yaXR5IHF1ZXVlczsgaWY9CiBhIGNvbnN1bWVyIHRocmVh ZCBwZXJmb3JtcyBhIGRlcXVldWUgb3BlcmF0aW9uIHdoZW4gdGhlIHF1ZXVlIGlzIGVtcHR5LCBp dD0KIHN1c3BlbmRzIHVudGlsIGEgcHJvZHVjZXIgdGhyZWFkIHBlcmZvcm1zIGFuIGVucXVldWUg b3BlcmF0aW9uLjwvcD48cD5UaGUgPQphZGFwdGl2ZSBvcHRpbWl6YXRpb24gc3lzdGVtIHBlcmZv cm1zIHR3byBwcmltYXJ5IHRhc2tzOiBzZWxlY3RpdmUgb3B0aW1pemE9CnRpb24gYW5kIHByb2Zp bGUtZGlyZWN0ZWQgaW5saW5pbmcuPC9wPjxoMyBpZD0zRCJBZGFwdGl2ZU9wdGltaXphdGlvblN5 c3RlbT0KLVNlbGVjdGl2ZU9wdGltaXphdGlvbiI+U2VsZWN0aXZlIE9wdGltaXphdGlvbjwvaDM+ PHA+VGhlIGdvYWwgb2Ygc2VsZWN0aXZlPQogb3B0aW1pemF0aW9uIGlzIHRvIGlkZW50aWZ5IHJl Z2lvbnMgb2YgY29kZSBpbiB3aGljaCB0aGUgYXBwbGljYXRpb24gc3BlbmQ9CnMgc2lnbmlmaWNh bnQgZXhlY3V0aW9uIHRpbWUgKG9mdGVuIGNhbGxlZCBgYGhvdCBzcG90cycnKSwgZGV0ZXJtaW5l IGlmIG92ZT0KcmFsbCBhcHBsaWNhdGlvbiBwZXJmb3JtYW5jZSBpcyBsaWtlbHkgdG8gYmUgaW1w cm92ZWQgYnkgZnVydGhlciBvcHRpbWl6aW5nPQogb25lIG9yIG1vcmUgaG90IHNwb3RzLCBhbmQg aWYgc28gdG8gaW52b2tlIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGFuZCBpbnM9CnRhbGwgdGhl IHJlc3VsdGluZyBvcHRpbWl6ZWQgY29kZSBpbiB0aGUgdmlydHVhbCBtYWNoaW5lLjwvcD48cD5J biBKaWtlcyBSVj0KTSwgdGhlIHVuaXQgb2Ygb3B0aW1pemF0aW9uIGlzIGEgbWV0aG9kLj1DMj1B MCBUaHVzLCB0byBwZXJmb3JtIHNlbGVjdGl2ZSBvPQpwdGltaXphdGlvbiwgZmlyc3QgdGhlIHJ1 bnRpbWUgbWVhc3VyZW1lbnRzIGNvbXBvbmVudCBtdXN0IGlkZW50aWZ5IGNhbmRpZGE9CnRlIG1l dGhvZHMgKGBgaG90IG1ldGhvZHMnJykgZm9yIHRoZSBjb250cm9sbGVyIHRvIGNvbnNpZGVyLiBU byB0aGlzIGVuZCwgaT0KdCBpbnN0YWxscyBhIGxpc3RlbmVyIHRoYXQgcGVyaW9kaWNhbGx5IHNh bXBsZXMgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgbWV0PQpob2QgYXQgZXZlcnkgdGFrZW4geWll bGRwb2ludC49QzI9QTAgV2hlbiBpdCBpcyB0aW1lIHRvIHRha2UgYSBzYW1wbGUsIHRoZSA9Cmxp c3RlbmVyIGluc3BlY3RzIHRoZSB0aHJlYWQncyBjYWxsIHN0YWNrIGFuZCByZWNvcmRzIGEgc2lu Z2xlIGNvbXBpbGVkIG1ldD0KaG9kIGlkIGludG8gYSBidWZmZXIuIElmIHRoZSB5aWVsZHBvaW50 IG9jY3VycyBpbiB0aGUgcHJvbG9ndWUgb2YgYSBtZXRob2QsPQogdGhlbiB0aGUgbGlzdGVuZXIg YWRkaXRpb25hbGx5IHJlY29yZHMgdGhlIGNvbXBpbGVkIG1ldGhvZCBpZCBvZiB0aGUgY3VycmU9 Cm50IGFjdGl2YXRpb24ncyBjYWxsZXIuPUMyPUEwIElmIHRoZSB0YWtlbiB5aWVsZHBvaW50IG9j Y3VycyBvbiBhIGxvb3AgYmFjaz0KZWRnZSBvciBtZXRob2QgZXBpbG9ndWUsIHRoZW4gdGhlIGxp c3RlbmVyIHJlY29yZHMgdGhlIGNvbXBpbGVkIG1ldGhvZCBpZCBvPQpmIHRoZSBjdXJyZW50IG1l dGhvZC49QzI9QTA8L3A+PHA+V2hlbiB0aGUgYnVmZmVyIG9mIHNhbXBsZXMgaXMgZnVsbCwgdGhl IHM9CmFtcGxpbmcgd2luZG93IGVuZHMuIFRoZSBsaXN0ZW5lciB0aGVuIHVucmVnaXN0ZXJzIGl0 c2VsZiAoc3RvcHMgdGFraW5nIHNhbT0KcGxlcykgYW5kIHdha2VzIHRoZSBzbGVlcGluZyBIb3Qg TWV0aG9kIE9yZ2FuaXplci49QzI9QTAgVGhlIEhvdCBNZXRob2QgT3JnPQphbml6ZXIgcHJvY2Vz c2VzIHRoZSBidWZmZXIgb2YgY29tcGlsZWQgbWV0aG9kIGlkcyBieSB1cGRhdGluZyB0aGUgTWV0 aG9kIFM9CmFtcGxlIERhdGEuPUMyPUEwIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgbWFpbnRhaW5zLCBm b3IgZXZlcnkgY29tcGlsZWQgbWV0aG9kLD0KIHRoZSB0b3RhbCBudW1iZXIgb2YgdGltZXMgdGhh dCBpdCBoYXMgYmVlbiBzYW1wbGVkLiBDYXJlZnVsIGRlc2lnbiBvZiB0aGlzPQogZGF0YSBzdHJ1 Y3R1cmUgKE1ldGhvZENvdW50RGF0YS5qYXZhKSB3YXMgY3JpdGljYWwgdG8gYWNoaWV2aW5nIGxv dyBwcm9maWw9CmluZyBvdmVyaGVhZC4gSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyBsb29rdXBz IGFuZCB1cGRhdGVzIGJ5IGNvbXBpbGVkIG1ldD0KaG9kIGlkLCBpdCBtdXN0IGFsc28gZWZmaWNp ZW50bHkgZW51bWVyYXRlIGFsbCBtZXRob2RzIHRoYXQgaGF2ZSBiZWVuIHNhbXBsPQplZCBtb3Jl IHRpbWVzIHRoYW4gYSAodmFyeWluZykgdGhyZXNob2xkIHZhbHVlLiBBZnRlciB1cGRhdGluZyB0 aGUgTWV0aG9kIFM9CmFtcGxlIERhdGEsIHRoZSBIb3QgTWV0aG9kIE9yZ2FuaXplciBjcmVhdGVz IGFuIGV2ZW50IGZvciBlYWNoIG1ldGhvZCB0aGF0ID0KaGFzIGJlZW4gc2FtcGxlZCBpbiB0aGlz IHdpbmRvdyBhbmQgYWRkcyBpdCB0byB0aGUgY29udHJvbGxlcidzIHByaW9yaXR5IHF1PQpldWUs IHVzaW5nIHRoZSBzYW1wbGUgdmFsdWUgYXMgaXRzIHByaW9yaXR5LiBUaGUgZXZlbnQgY29udGFp bnMgdGhlIGNvbXBpbGU9CmQgbWV0aG9kIGFuZCB0aGUgPGVtPnRvdGFsPC9lbT4gbnVtYmVyIG9m IHRpbWVzIGl0IGhhcyBiZWVuIHNhbXBsZWQ9QzI9QTAgcz0KaW5jZSB0aGUgYmVnaW5uaW5nIG9m IGV4ZWN1dGlvbi49QzI9QTAgQWZ0ZXIgZW5xdWV1aW5nIHRoZSBsYXN0IGV2ZW50LCB0aGUgPQpI b3QgTWV0aG9kIE9yZ2FuaXplciByZS1yZWdpc3RlcnMgdGhlIG1ldGhvZCBsaXN0ZW5lciBhbmQg dGhlbiBzbGVlcHMgdW50aWw9CiB0aGUgbmV4dCBidWZmZXIgb2Ygc2FtcGxlcyBpcyByZWFkeSB0 byBiZSBwcm9jZXNzZWQuPC9wPjxwPldoZW4gdGhlIHByaW9yaT0KdHkgcXVldWUgZGVsaXZlcnMg YW4gZXZlbnQgdG8gdGhlIGNvbnRyb2xsZXIsIHRoZSBjb250cm9sbGVyIGRlcXVldWVzIHRoZSBl PQp2ZW50IGFuZCBhcHBsaWVzIHRoZSBtb2RlbC1kcml2ZW4gcmVjb21waWxhdGlvbiBwb2xpY3kg dG8gZGV0ZXJtaW5lIHdoYXQgYWM9CnRpb24gKGlmIGFueSkgdG8gdGFrZSBmb3IgdGhlIGluZGlj YXRlZCBtZXRob2QuPUMyPUEwIElmIHRoZSBjb250cm9sbGVyIGRlYz0KaWRlcyB0byByZWNvbXBp bGUgdGhlIG1ldGhvZCwgaXQgY3JlYXRlcyBhIHJlY29tcGlsYXRpb24gZXZlbnQgdGhhdCBkZXNj cmliPQplcyB0aGUgbWV0aG9kIHRvIGJlIGNvbXBpbGVkIGFuZCB0aGUgb3B0aW1pemF0aW9uIHBs YW4gdG8gdXNlIGFuZCBwbGFjZXMgaXQ9CiBvbiB0aGUgcmVjb21waWxhdGlvbiBxdWV1ZS4gVGhl IHJlY29tcGlsYXRpb24gcXVldWUgcHJpb3JpdGl6ZXMgZXZlbnRzIGJhcz0KZWQgb24gdGhlIGNv c3QtYmVuZWZpdCBjb21wdXRhdGlvbi48L3A+PHA+V2hlbiBhbiBldmVudCBpcyBhdmFpbGFibGUg b24gdGhlPQogcmVjb21waWxhdGlvbiBxdWV1ZSwgdGhlIHJlY29tcGlsYXRpb24gdGhyZWFkIHJl bW92ZXMgaXQgYW5kIHBlcmZvcm1zIHRoZSA9CmNvbXBpbGF0aW9uIGFjdGl2aXR5IHNwZWNpZmll ZCBieSB0aGUgZXZlbnQuIEl0IGludm9rZXMgdGhlIG9wdGltaXppbmcgY29tcD0KaWxlciBhdCB0 aGUgc3BlY2lmaWVkIG9wdGltaXphdGlvbiBsZXZlbCBhbmQgaW5zdGFsbHMgdGhlIHJlc3VsdGlu ZyBjb21waWxlPQpkIG1ldGhvZCBpbnRvIHRoZSBWTS49QzI9QTA8L3A+PHA+QWx0aG91Z2ggdGhl IG92ZXJhbGwgc3RydWN0dXJlIG9mIHNlbGVjdGk9CnZlIG9wdGltaXphdGlvbiBpbiBKaWtlcyBS Vk0gaXMgc2ltaWxhciB0byB0aGF0IG9yaWdpbmFsbHkgZGVzY3JpYmVkIGluIEFybj0Kb2xkIGV0 IGFsJ3MgT09QU0xBIDIwMDAgcGFwZXIsIHdlIGhhdmUgbWFkZSBzZXZlcmFsIGNoYW5nZXMgYW5k IGltcHJvdmVtZW50PQpzIGJhc2VkIG9uIGZ1cnRoZXIgZXhwZXJpZW5jZSB3aXRoIHRoZSBzeXN0 ZW0uIFRoZSBtb3N0IHNpZ25pZmljYW50IGNoYW5nZSA9CmlzIHRoYXQgaW4gdGhlIHByZXZpb3Vz IHN5c3RlbSwgdGhlIG1ldGhvZCBzYW1wbGUgb3JnYW5pemVyIGF0dGVtcHRlZCB0byBmaT0KbHRl ciB0aGUgc2V0IG9mIG1ldGhvZHMgaXQgcHJlc2VudGVkIHRvIHRoZSBjb250cm9sbGVyLj1DMj1B MCBUaGUgb3JnYW5pemVyPQogcGFzc2VkIGFsb25nIHRvIHRoZSBjb250cm9sbGVyIG9ubHkgbWV0 aG9kcyBjb25zaWRlcmVkICZxdW90O2hvdCZxdW90Oy49QzI9Cj1BMCBUaGUgb3JnYW5pemVyIGRl ZW1lZCBhIG1ldGhvZCAmcXVvdDtob3QnJyBpZiB0aGUgcGVyY2VudGFnZSBvZiBzYW1wbGVzID0K YXR0cmlidXRlZCB0byB0aGUgbWV0aG9kIGV4Y2VlZGVkIGEgZHluYW1pY2FsbHkgYWRqdXN0ZWQg dGhyZXNob2xkIHZhbHVlLiBNPQpldGhvZCBzYW1wbGVzIHdlcmUgcGVyaW9kaWNhbGx5IGRlY2F5 ZWQgdG8gZ2l2ZSBtb3JlIHdlaWdodCB0byByZWNlbnQgc2FtcGw9CmVzLiBUaGUgY29udHJvbGxl ciBkeW5hbWljYWxseSBhZGp1c3RlZCB0aGlzIHRocmVzaG9sZCB2YWx1ZSBhbmQgdGhlIHNpemUg bz0KZiB0aGUgc2FtcGxpbmcgd2luZG93IGluIGFuIGF0dGVtcHQgdG8gcmVkdWNlIHRoZSBvdmVy aGVhZCBvZiBwcm9jZXNzaW5nIHRoPQplIHNhbXBsZXMuPC9wPjxwPkxhdGVyLCBzaWduaWZpY2Fu dCBhbGdvcml0aG1pYyBpbXByb3ZlbWVudHMgaW4ga2V5IGRhdGEgc3Q9CnJ1Y3R1cmVzIGFuZCBh ZGRpdGlvbmFsIHBlcmZvcm1hbmNlIHR1bmluZyBvZiB0aGUgbGlzdGVuZXJzLCBvcmdhbml6ZXJz LCBhbj0KZDxiciAvPiBjb250cm9sbGVyIHJlZHVjZWQgQU9TIG92ZXJoZWFkIGJ5IHR3byBvcmRl cnMgb2YgbWFnbml0dWRlLj1DMj1BMCBUPQpoZXNlIG92ZXJoZWFkIHJlZHVjdGlvbnMgb2J2aWF0 ZSB0aGUgbmVlZCB0byBmaWx0ZXIgZXZlbnRzIHBhc3NlZDxiciAvPiB0byA9CnRoZSBjb250cm9s bGVyLj1DMj1BMCBUaGlzIHJlc3VsdGVkIGluIGEgbW9yZSBlZmZlY3RpdmUgc3lzdGVtIHdpdGgg ZmV3ZXIgcD0KYXJhbWV0ZXJzIHRvIHR1bmUgYW5kIGEgc291bmRlciB0aGVvcmV0aWNhbCBiYXNp cy49QzI9QTAgSW4gZ2VuZXJhbCwgYXMgd2UgPQpnYWluZWQgZXhwZXJpZW5jZSB3aXRoIHRoZSBh ZGFwdGl2ZSBzeXN0ZW0gaW1wbGVtZW50YXRpb24sIHdlIHN0cm92ZSB0byByZWQ9CnVjZSB0aGUg bnVtYmVyIG9mIHR1bmluZz1DMj1BMCBwYXJhbWV0ZXJzLj1DMj1BMCBXZSBiZWxpZXZlIHRoYXQg dGhlIGNsb3Nlcj0KIHRoZSBpbXBsZW1lbnRhdGlvbiBtYXRjaGVzIHRoZSBiYXNpYyB0aGVvcmV0 aWNhbCBjb3N0LWJlbmVmaXQgbW9kZWwsIHRoZSBtPQpvcmUgbGlrZWx5IGl0IHdpbGwgcGVyZm9y bSB3ZWxsIGFuZCBtYWtlIHJlYXNvbmFibGUgYW5kIHVuZGVyc3RhbmRhYmxlIGRlY2k9CnNpb25z LjwvcD48aDMgaWQ9M0QiQWRhcHRpdmVPcHRpbWl6YXRpb25TeXN0ZW0tUHJvZmlsZS1EaXJlY3Rl ZElubGluaW5nIj5Qcj0Kb2ZpbGUtRGlyZWN0ZWQgSW5saW5pbmc8L2gzPjxwPlByb2ZpbGUtZGly ZWN0ZWQgaW5saW5pbmcgYXR0ZW1wdHMgdG8gaWRlbnRpPQpmeSBmcmVxdWVudGx5IHRyYXZlcnNl ZCBjYWxsIGdyYXBoIGVkZ2VzLCB3aGljaCByZXByZXNlbnQgY2FsbGVyLWNhbGxlZSByZWw9CmF0 aW9uc2hpcHMsIGFuZCBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBiZW5lZmljaWFsIHRvIHJlY29t cGlsZSB0aGUgY2FsbGVyID0KbWV0aG9kczxiciAvPiB0byBhbGxvdyBpbmxpbmluZyBvZiB0aGUg Y2FsbGVlIG1ldGhvZHMuIEluIEppa2VzIFJWTSwgcHJvZmlsPQplLWRpcmVjdGVkIGlubGluaW5n IGF1Z21lbnRzIGEgbnVtYmVyIG9mIHN0YXRpYzxiciAvPiBpbmxpbmluZyBoZXVyaXN0aWNzLiA9 ClRoZSByb2xlIG9mIHByb2ZpbGUtZGlyZWN0ZWQgaW5saW5pbmcgaXMgdG8gaWRlbnRpZnkgaGln aCBjb3N0LWhpZ2ggYmVuZWZpdD0KIGlubGluaW5nIG9wcG9ydHVuaXRpZXMgdGhhdCBldmFkZSB0 aGUgc3RhdGljIGhldXJpc3RpY3MgYW5kIHRvIHByZWRpY3QgdGhlPQogbGlrZWx5IHRhcmdldChz KSBvZiBpbnZva2V2aXJ0dWFsIGFuZCBpbnZva2VpbnRlcmZhY2UgY2FsbHMgdGhhdCBjb3VsZCBu b3Q9CiBiZSBzdGF0aWNhbGx5IGJvdW5kIGF0IGNvbXBpbGUgdGltZS48L3A+PHA+VG8gYWNjb21w bGlzaCB0aGlzIGdvYWwsIHRoZSBzeT0Kc3RlbSB0YWtlcyBhIHN0YXRpc3RpY2FsIHNhbXBsZSBv ZiB0aGUgbWV0aG9kIGNhbGxzIGluIHRoZSBydW5uaW5nIGFwcGxpY2F0PQppb24gYW5kIG1haW50 YWlucyBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBkeW5hbWljIGNhbGwgZ3JhcGggYmFzZWQgb24g dGhpcyA9CmRhdGEuIFRoZSBzeXN0ZW0gaW5zdGFsbHMgYSBsaXN0ZW5lciB0aGF0IHNhbXBsZXMg Y2FsbCBlZGdlcyB3aGVuZXZlciBhIHlpZT0KbGRwb2ludCBpcyB0YWtlbiBpbiB0aGUgcHJvbG9n dWUgb3IgZXBpbG9ndWUgb2YgYSBtZXRob2QuIFRvIHNhbXBsZSB0aGUgY2FsPQpsIGVkZ2UsIGl0 IHJlY29yZHMgdGhlIGNvbXBpbGVkIG1ldGhvZCBpZCBvZiB0aGUgY2FsbGVyIGFuZCBjYWxsZWUg bWV0aG9kcyA9CmFuZCB0aGUgb2Zmc2V0IG9mIHRoZSBjYWxsIGluc3RydWN0aW9uIGluIHRoZSBj YWxsZXIncyBtYWNoaW5lIGNvZGUgaW50byBhID0KYnVmZmVyLiBXaGVuIHRoZSBidWZmZXIgb2Yg c2FtcGxlcyBpcyBmdWxsLCB0aGUgc2FtcGxpbmcgd2luZG93IGVuZHMuPGJyIC8+PQogVGhlIGxp c3RlbmVyIHRoZW4gdW5yZWdpc3RlcnMgaXRzZWxmIChzdG9wcyB0YWtpbmcgc2FtcGxlcykgYW5k IHdha2VzIGFuIG89CnJnYW5pemVyIHRvIHVwZGF0ZSB0aGUgZHluYW1pYyBjYWxsIGdyYXBoIHdp dGggdGhlIG5ldyBwcm9maWxlIGRhdGEuIFRoZSBvcD0KdGltaXppbmcgY29tcGlsZXIncyBJbmxp bmUgT3JhY2xlIHVzZXMgdGhlIGR5bmFtaWMgY2FsbCBncmFwaCB0byBndWlkZSBpdCdzPQogaW5s aW5lIGRlY2lzaW9ucy48L3A+PHA+VGhlIHN5c3RlbSBjdXJyZW50bHkgdXNlZCBpcyBiYXNlZCBv biBBcm5vbGQgJmFtcDs9CiBHcm92ZSdzIENHTyAyMDA1IHBhcGVyLiBNb3JlIGRldGFpbHMgb2Yg dGhlIHNhbXBsaW5nIHNjaGVtZSBhbmQgdGhlIGlubGluaT0Kbmcgb3JhY2xlIGNhbiBiZSBmb3Vu ZCB0aGVyZSwgb3IgaW4gdGhlIHNvdXJjZSBjb2RlLjwvcD4KICAgICAgICAgICAgICAgICAgICAg PC9kaXY+Cj0yMAogICAgICAgICAgICAgICAgICAgID0yMAotICAgICAgICAgICAgICAgID0yMAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MjAK ICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgPC9kaXY+PTIwCiAgICAgICAgICAg ICA8ZGl2IGlkPTNEImZvb3RlciIgc3R5bGU9M0QiYmFja2dyb3VuZDogdXJsKGh0dHA6Ly9kb2Nz LmNvZGVoYT0KdXMub3JnL2ltYWdlcy9ib3JkZXIvYm9yZGVyX2JvdHRvbS5naWYpIHJlcGVhdC14 OyI+Ci0gICAgICAgICAgICAgICAgPHA+PHNtYWxsPkRvY3VtZW50IGdlbmVyYXRlZCBieSBDb25m bHVlbmNlIG9uIEZlYiAxNywgMjAxMj0KIDEwOjI0PC9zbWFsbD48L3A+CisgICAgICAgICAgICAg ICAgPHA+PHNtYWxsPkRvY3VtZW50IGdlbmVyYXRlZCBieSBDb25mbHVlbmNlIG9uIEZlYiAxMiwg MjAxMz0KIDA5OjMyPC9zbWFsbD48L3A+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9k aXY+ICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS91c2VyZ3VpZGUvaHRtbC9SVk0v QWRkaW5nK2ErTmV3K0dDLmh0bWwgYi91c2VyZ3VpZGUvaHRtbC9SVk0vQT0KZGRpbmcrYStOZXcr R0MuaHRtbAotLS0gYS91c2VyZ3VpZGUvaHRtbC9SVk0vQWRkaW5nK2ErTmV3K0dDLmh0bWwKKysr IGIvdXNlcmd1aWRlL2h0bWwvUlZNL0FkZGluZythK05ldytHQy5odG1sCkBAIC0zOSwxNCArMzks MTQgQEAKIDwvcHJlPgogPC9kaXY+PC9kaXY+PHA+SWYgdGhpcyBpcyBub3Qgd29ya2luZywgeW91 IHNob3VsZCBwcm9iYWJseSBnbyBhbmQgKHJlKSByZWE9CmQgdGhlIDxhIGhyZWY9M0QiQ2FyZSUy QmFuZCUyQkZlZWRpbmcuaHRtbCI+c2VjdGlvbiBpbiB0aGUgdXNlciBndWlkZTwvYT4gbz0KbiBo b3cgdG8gYnVpbGQgYW5kIHJ1biB0aGUgVk0uPC9wPjxoMSBpZD0zRCJBZGRpbmdhTmV3R0MtQ2xv bmluZ3RoZU1hcmtTd2VlPQpwR0MiPkNsb25pbmcgdGhlIE1hcmtTd2VlcCBHQzwvaDE+PHA+PUMy PUEwVGhlIGJlc3Qgd2F5IHRvIGRvIHRoaXMgaXMgaW4gZWM9CmxpcHNlIG9yIGEgc2ltaWxhciB0 b29sIChzZWUgPGEgaHJlZj0zRCJFZGl0aW5nJTJCSmlrZXNSVk0lMkJpbiUyQmFuJTJCSURFLj0K aHRtbCI+aGVyZTwvYT4gZm9yIGhvdyB0byB3b3JrIHdpdGggZWNsaXBzZSk6PC9wPjxvbD48bGk+ Q2xvbmUgdGhlIDxlbT5vcmcuPQptbXRrLnBsYW4ubWFya3N3ZWVwPC9lbT4gYXMgPGVtPm9yZy5t bXRrLnBsYW4uPC9lbT48c3Ryb25nPjxlbT5teWdjPC9lbT48L3M9CnRyb25nPjx1bD48bGk+WW91 IGNhbiBkbyB0aGlzIHdpdGggPHN0cm9uZz5FY2xpcHNlPC9zdHJvbmc+OjxvbD48bGk+TmF2aWdh Zz0KdGUgdG8gPGVtPm9yZy5tbXRrLnBsYW4ubWFya3N3ZWVwPC9lbT4gKHdpdGhpbiA8ZW0+TU1U ay9zcmM8L2VtPik8L2xpPjxsaT5SPQppZ2h0IGNsaWNrIG92ZXIgPGVtPm9yZy5tbXRrLnBsYW4u bWFya3N3ZWVwPC9lbT4gYW5kIHNlbGVjdCAmcXVvdDtDb3B5JnF1b3Q9Cjs8L2xpPjxsaT5SaWdo dCBjbGljayBhZ2FpbiwgYW5kIHNlbGVjdCAmcXVvdDtQYXN0ZSZxdW90OywgYW5kIG5hbWUgdGhl IHRhcj0KZ2V0IDxlbT5vcmcubW10ay5wbGFuLjwvZW0+PHN0cm9uZz48ZW0+bXlnYzwvZW0+PC9z dHJvbmc+IChvciB3aGF0ZXZlciB5b3UgPQpsaWtlKTwvbGk+PGxpPlRoaXMgd2lsbCBoYXZlIGNs b25lZCB0aGUgbWFya3N3ZWVwIEdDIGluIGEgbmV3IHBhY2thZ2UgY2FsbGU9CmQgPGVtPm9yZy5t bXRrLnBsYW4ubXlnYzwvZW0+PC9saT48L29sPjwvbGk+PGxpPm9yIDxzdHJvbmc+YnkgaGFuZDwv c3Ryb25nPj0KOjxvbD48bGk+Q29weSB0aGUgZGlyZWN0b3J5IDxlbT5NTVRrL29yZy9tbXRrL3Bs YW4vbWFya3N3ZWVwPC9lbT4gdG8gPGVtPk1NPQpUay9vcmcvbW10ay9wbGFuLzwvZW0+PHN0cm9u Zz48ZW0+bXlnYzwvZW0+PC9zdHJvbmc+PC9saT48bGk+RWRpdCBlYWNoIGZpbGU9CiB3aXRoaW4g PGVtPk1NVGsvb3JnL21tdGsvcGxhbi88L2VtPjxzdHJvbmc+PGVtPm15Z2M8L2VtPjwvc3Ryb25n PiBhbmQgY2hhbj0KZ2UgaXRzIHBhY2thZ2UgZGVjbGFyYXRpb24gdG8gPGVtPm9yZy5tbXRrLnBs YW4uPC9lbT48c3Ryb25nPjxlbT5teWdjPC9lbT48PQovc3Ryb25nPjwvbGk+PC9vbD48L2xpPjxs aT5XZSBjYW4gbGVhdmUgdGhlIEdDIGNhbGxlZCAmcXVvdDtNUyZxdW90OyBmb3Igbm89CncgKHRo ZSBmaWxlIG5hbWVzIHdpbGwgYWxsIGJlIDxlbT5NTVRrL29yZy9tbXRrL3BsYW4vPC9lbT48c3Ry b25nPjxlbT5teWdjPD0KL2VtPjwvc3Ryb25nPjxlbT4vTVMqLmphdmEpPC9lbT48L2xpPjwvdWw+ PC9saT48bGk+Q2xvbmUgdGhlIEJhc2VCYXNlTWFya1N3PQplZXAucHJvcGVydGllcyBmaWxlIGFz IDxlbT5CYXNlQmFzZTwvZW0+PHN0cm9uZz48ZW0+TXlHQzwvZW0+PC9zdHJvbmc+PGVtPi49CnBy b3BlcnRpZXM8L2VtPjo8b2w+PGxpPkdvIHRvIDxlbT5idWlsZC9jb25maWdzPC9lbT4sIGFuZCBy aWdodCBjbGljayBvdmVyID0KPGVtPkJhc2VCYXNlTWFya1N3ZWVwLnByb3BlcnRpZXM8L2VtPiwg YW5kIHNlbGVjdCAmcXVvdDtDb3B5JnF1b3Q7PC9saT48bGk+PQpSaWdodCBjbGljayBhbmQgc2Vs ZWN0ICZxdW90O1Bhc3RlJnF1b3Q7LCBhbmQgcGFzdGUgYXMgPGVtPkJhc2VCYXNlTXlHQy5wcm89 CnBlcnRpZXM8L2VtPjwvbGk+PGxpPkVkaXQgQmFzZUJhc2VNeUdDLnByb3BlcnRpZXMsIGNoYW5n aW5nIHRoZSB0ZXh0OiAmcXVvdD0KOzxlbT5jb25maWcubW10ay5wbGFuPTNEb3JnLm1tdGsucGxh bi48L2VtPjxlbT5tYXJrc3dlZXA8L2VtPjxlbT4uTVM8L2VtPiZxPQp1b3Q7IHRvICZxdW90Ozxl bT5jb25maWcubW10ay5wbGFuPTNEb3JnLm1tdGsucGxhbi48L2VtPjxzdHJvbmc+PGVtPm15Z2M8 L2U9Cm0+PC9zdHJvbmc+PGVtPi5NUzwvZW0+JnF1b3Q7PC9saT48L29sPjwvbGk+PGxpPk5vdyB0 ZXN0IHlvdXIgbmV3IEdDOjwvbGk+PD0KL29sPjxkaXYgY2xhc3M9M0QicGFuZWwiIHN0eWxlPTNE ImJvcmRlci13aWR0aDogMXB4OyI+PGRpdiBjbGFzcz0zRCJwYW5lbENvPQpudGVudCI+CiA8cD4k IGJpbi9idWlsZGl0ICZsdDt0YXJnZXRtYWNoaW5lJmd0OyAtdCBnY3Rlc3QgQmFzZUJhc2UgPHN0 cm9uZz5NeUdDPC9zdD0Kcm9uZz48L3A+Ci08L2Rpdj48L2Rpdj48cD5Zb3Ugc2hvdWxkIGhhdmUg Z290IHNpbWlsYXIgb3V0cHV0IHRvIHlvdXIgdGVzdCBvZiBNYXJrU3dlZT0KcCBhYm92ZS48L3A+ PHA+VGhhdCdzIGl0Lj1DMj1BMCBZb3UncmUgZG9uZS4gPGltZyBjbGFzcz0zRCJlbW90aWNvbiBl bW90aWNvPQpuLXNtaWxlIiBzcmM9M0Qicy9lbl9HQi8zMTI2LzE1L18vaW1hZ2VzL2ljb25zL2Vt b3RpY29ucy9zbWlsZS5wbmciIGRhdGEtZW09Cm90aWNvbi1uYW1lPTNEInNtaWxlIiBhbHQ9M0Qi KHNtaWxlKSIvPjwvcD48aDEgaWQ9M0QiQWRkaW5nYU5ld0dDLU1ha2luZ2l0UD0KcmV0dGllciI+ PHN0cm9uZz5NYWtpbmcgaXQgUHJldHRpZXI8L3N0cm9uZz48L2gxPjxwPllvdSBtYXkgaGF2ZSBu b3RpY2VkIHRoPQphdCB3aGVuIHlvdSBjbG9uZWQgdGhlIHBhY2thZ2UgPGVtPm9yZy5tbXRrLnBs YW4ubWFya3N3ZWVwPC9lbT4sIGFsbCB0aGUgY2w9CmFzc2VzIHJldGFpbmVkIHRoZWlyIG9sZCBu YW1lcyAoYWx0aG91Z2ggaW4geW91ciBuZXcgbmFtZXNwYWNlOyA8ZW0+b3JnLm1tdD0Kay5wbGFu LjwvZW0+PHN0cm9uZz48ZW0+bXlnYzwvZW0+PC9zdHJvbmc+KS49QzI9QTAgWW91IGNhbiB0cml2 aWFsbHkgY2hhbmdlPQogdGhlIGNsYXNzIG5hbWVzIGluIGFuIElERSBsaWtlIGVjbGlwc2UuPUMy PUEwIFlvdSBjYW4gZG8gdGhlIHNhbWUgd2l0aCB5b3U9CnIgZmF2b3JpdGUgdGV4dCBlZGl0b3Is IGJ1dCB5b3UnbGwgbmVlZCB0byBiZSBzdXJlIHRoYXQgeW91IGNoYW5nZSB0aGUgcmVmZT0KcmVu Y2VzIGNhcmVmdWxseS49QzI9QTAgVG8gY2hhbmdlIHRoZSBjbGFzcyBuYW1lcyBpbiBlY2xpcHNl LCBqdXN0IGZvbGxvdyB0PQpoZSBwcm9jZWR1cmUgYmVsb3cgZm9yIGVhY2ggY2xhc3MgaW4gPGVt Pm9yZy5tbXRrLnBsYW4uPC9lbT48c3Ryb25nPjxlbT5teWc9CmM8L2VtPjwvc3Ryb25nPjo8L3A+ PG9sPjxsaT5OYXZpZ2F0ZSB0byB0aGUgY2xhc3MgeW91IHdhbnQgY2hhbmdlZCAoZWc9QzI9Cj1B MCA8ZW0+b3JnLm1tdGsucGxhbi48L2VtPjxzdHJvbmc+PGVtPm15Z2M8L2VtPjwvc3Ryb25nPjxl bT4uTVMpPC9lbT48L2xpPj0KPGxpPlJpZ2h0IGNsaWNrIG9uIHRoZSBjbGFzcyAoTVMpIGFuZCBz ZWxlY3QgPGVtPiZxdW90O1JlZmFjdG9yLSZndDtSZW5hbWUuPQouLiZxdW90OzwvZW0+IGFuZCB0 aGVuIHR5cGUgaW4geW91ciBuZXcgbmFtZSwgKGVnIDxlbT5NeUdDPC9lbT4pPC9saT48bGk+PGU9 Cm0+RG8gdGhlIHNhbWUgZm9yIGVhY2ggb2YgdGhlIG90aGVyIGNsYXNzZXM6PC9lbT4jKiA8ZW0+ TVMgLSZndDsgTXlHQzwvZW0+Iz0KKiA8ZW0+TVNDb2xsZWN0b3IgLSZndDsgTXlHQ0NvbGxlY3Rv cjwvZW0+PHVsPjxsaT48ZW0+TVNDb25zdHJhaW50cyAtJmd0OyBNPQp5R0NDb25zdHJhaW50czwv ZW0+PC9saT48bGk+PGVtPk1TTXV0YXRvciAtJmd0OyBNeUdDTXV0YXRvcjwvZW0+PC9saT48bGk+ PGU9Cm0+TVNUcmFjZUxvY2FsIC0mZ3Q7IE15R0NUcmFjZUxvY2FsPC9lbT48L2xpPjwvdWw+PC9s aT48bGk+RWRpdCB5b3VyIGNvbmZpZz0KdXJhdGlvbi9zIHRvIGVuc3VyZSB0aGV5IHJlZmVyIHRv IHRoZSByZW5hbWVkIGNsYXNzZXMgKHNpbmNlIHlvdXIgSURFIGlzIHVuPQpsaWtlbHkgdG8gaGF2 ZSBkb25lIHRoaXMgYXV0b21hdGljYWxseSBmb3IgeW91KTx1bD48bGk+R28gdG8gPGVtPmJ1aWxk L2NvbmY9CmlnczwvZW0+LCBhbmQgZWRpdCBlYWNoIGZpbGUgPGVtPipNeUdDLnByb3BlcnRpZXM8 L2VtPiB0byByZWZlciB0byB5b3VyIHJlbj0KYW1lZCBjbGFzc2VzPC9saT48L3VsPjwvbGk+PC9v bD48aDEgaWQ9M0QiQWRkaW5nYU5ld0dDLUJleW9uZEJhc2VCYXNlTXlHQyI+PQpCZXlvbmQgQmFz ZUJhc2VNeUdDPC9oMT48cD5Zb3UgcHJvYmFibHkgd2FudCB0byBidWlsZCB3aXRoIGNvbmZpZ3Vy YXRpb25zIG89CnRoZXIgdGhhbiBqdXN0IEJhc2VCYXNlLj1DMj1BMCBJZiBzbywgY2xvbmUgY29u ZmlndXJhdGlvbnMgZnJvbSBNYXJrU3dlZXAsID0KanVzdCBhcyB5b3UgZGlkIGFib3ZlIChmb3Ig ZXhhbXBsZSwgY2xvbmUgPGVtPkZhc3RBZGFwdGl2ZU1hcmtTd2VlcDwvZW0+IGFzPQogPGVtPkZh c3RBZGFwdGl2ZTwvZW0+PHN0cm9uZz48ZW0+TXlHQzwvZW0+PC9zdHJvbmc+KS48L3A+PGgxIGlk PTNEIkFkZGluZ2E9Ck5ld0dDLVdoYXROZXh0Ij5XaGF0IE5leHQ/PC9oMT48cD5PbmNlIHlvdSBo YXZlIHRoaXMgd29ya2luZywgeW91IGhhdmUgc3VjYz0KZXNzZnVsbHkgY3JlYXRlZCBhbmQgdGVz dGVkIHlvdXIgb3duIEdDIHdpdGhvdXQgd3JpdGluZyBhIGxpbmUgb2YgY29kZSEhIFlvPQp1IGFy ZSByZWFkeSB0byBzdGFydCB0aGUgc2xpZ2h0bHkgbW9yZSB0cmlja3kgcHJvY2VzcyBvZiB3cml0 aW5nIHlvdXIgb3duIGc9CmFyYmFnZSBjb2xsZWN0b3IgY29kZS48L3A+PHA+SWYgeW91IGFyZSB3 cml0aW5nIGEgbmV3IEdDLCB5b3Ugc2hvdWxkIGRlZmluaT0KdGVseSBiZSBhd2FyZSBvZiB0aGUg TU1UayA8YSBocmVmPTNEIlRoZSUyQk1NVGslMkJUZXN0JTJCSGFybmVzcy5odG1sIj50ZXN0PQog aGFybmVzczwvYT4sIHdoaWNoIGFsbG93cyB5b3UgdG8gdGVzdCBhbmQgZGVidWcgTU1UayBpbiBh IHZlcnkgd2VsbCBjb250YWk9Cm5lZCBwdXJlIEphdmEgZW52aXJvbm1lbnQsIHdpdGhvdXQgdGhl IHJlc3Qgb2YgSmlrZXMgUlZNLj1DMj1BMCBUaGlzIGFsbG93cz0KIHlvdSB0byB3cml0ZSB1bml0 IHRlc3RzIGFuZCBjb3JuZXIgY2FzZXMsIGFuZCBtb3Jlb3ZlciwgYWxsb3dzIHlvdSB0byBlZGl0 PQogYW5kIGRlYnVnIE1NVGsgZW50aXJlbHkgZnJvbSB3aXRoaW4geW91ciBJREU8L3A+Cis8L2Rp dj48L2Rpdj48cD5Zb3Ugc2hvdWxkIGhhdmUgZ290IHNpbWlsYXIgb3V0cHV0IHRvIHlvdXIgdGVz dCBvZiBNYXJrU3dlZT0KcCBhYm92ZS48L3A+PHA+VGhhdCdzIGl0Lj1DMj1BMCBZb3UncmUgZG9u ZS4gPGltZyBjbGFzcz0zRCJlbW90aWNvbiBlbW90aWNvPQpuLXNtaWxlIiBzcmM9M0Qicy9lbl9H Qi8zMjc4LzE1L18vaW1hZ2VzL2ljb25zL2Vtb3RpY29ucy9zbWlsZS5wbmciIGRhdGEtZW09Cm90 aWNvbi1uYW1lPTNEInNtaWxlIiBhbHQ9M0QiKHNtaWxlKSIvPjwvcD48aDEgaWQ9M0QiQWRkaW5n YU5ld0dDLU1ha2luZ2l0UD0KcmV0dGllciI+PHN0cm9uZz5NYWtpbmcgaXQgUHJldHRpZXI8L3N0 cm9uZz48L2gxPjxwPllvdSBtYXkgaGF2ZSBub3RpY2VkIHRoPQphdCB3aGVuIHlvdSBjbG9uZWQg dGhlIHBhY2thZ2UgPGVtPm9yZy5tbXRrLnBsYW4ubWFya3N3ZWVwPC9lbT4sIGFsbCB0aGUgY2w9 CmFzc2VzIHJldGFpbmVkIHRoZWlyIG9sZCBuYW1lcyAoYWx0aG91Z2ggaW4geW91ciBuZXcgbmFt ZXNwYWNlOyA8ZW0+b3JnLm1tdD0Kay5wbGFuLjwvZW0+PHN0cm9uZz48ZW0+bXlnYzwvZW0+PC9z dHJvbmc+KS49QzI9QTAgWW91IGNhbiB0cml2aWFsbHkgY2hhbmdlPQogdGhlIGNsYXNzIG5hbWVz IGluIGFuIElERSBsaWtlIGVjbGlwc2UuPUMyPUEwIFlvdSBjYW4gZG8gdGhlIHNhbWUgd2l0aCB5 b3U9CnIgZmF2b3JpdGUgdGV4dCBlZGl0b3IsIGJ1dCB5b3UnbGwgbmVlZCB0byBiZSBzdXJlIHRo YXQgeW91IGNoYW5nZSB0aGUgcmVmZT0KcmVuY2VzIGNhcmVmdWxseS49QzI9QTAgVG8gY2hhbmdl IHRoZSBjbGFzcyBuYW1lcyBpbiBlY2xpcHNlLCBqdXN0IGZvbGxvdyB0PQpoZSBwcm9jZWR1cmUg YmVsb3cgZm9yIGVhY2ggY2xhc3MgaW4gPGVtPm9yZy5tbXRrLnBsYW4uPC9lbT48c3Ryb25nPjxl bT5teWc9CmM8L2VtPjwvc3Ryb25nPjo8L3A+PG9sPjxsaT5OYXZpZ2F0ZSB0byB0aGUgY2xhc3Mg eW91IHdhbnQgY2hhbmdlZCAoZWc9QzI9Cj1BMCA8ZW0+b3JnLm1tdGsucGxhbi48L2VtPjxzdHJv bmc+PGVtPm15Z2M8L2VtPjwvc3Ryb25nPjxlbT4uTVMpPC9lbT48L2xpPj0KPGxpPlJpZ2h0IGNs aWNrIG9uIHRoZSBjbGFzcyAoTVMpIGFuZCBzZWxlY3QgPGVtPiZxdW90O1JlZmFjdG9yLSZndDtS ZW5hbWUuPQouLiZxdW90OzwvZW0+IGFuZCB0aGVuIHR5cGUgaW4geW91ciBuZXcgbmFtZSwgKGVn IDxlbT5NeUdDPC9lbT4pPC9saT48bGk+PGU9Cm0+RG8gdGhlIHNhbWUgZm9yIGVhY2ggb2YgdGhl IG90aGVyIGNsYXNzZXM6PC9lbT4jKiA8ZW0+TVMgLSZndDsgTXlHQzwvZW0+Iz0KKiA8ZW0+TVND b2xsZWN0b3IgLSZndDsgTXlHQ0NvbGxlY3RvcjwvZW0+PHVsPjxsaT48ZW0+TVNDb25zdHJhaW50 cyAtJmd0OyBNPQp5R0NDb25zdHJhaW50czwvZW0+PC9saT48bGk+PGVtPk1TTXV0YXRvciAtJmd0 OyBNeUdDTXV0YXRvcjwvZW0+PC9saT48bGk+PGU9Cm0+TVNUcmFjZUxvY2FsIC0mZ3Q7IE15R0NU cmFjZUxvY2FsPC9lbT48L2xpPjwvdWw+PC9saT48bGk+RWRpdCB5b3VyIGNvbmZpZz0KdXJhdGlv bi9zIHRvIGVuc3VyZSB0aGV5IHJlZmVyIHRvIHRoZSByZW5hbWVkIGNsYXNzZXMgKHNpbmNlIHlv dXIgSURFIGlzIHVuPQpsaWtlbHkgdG8gaGF2ZSBkb25lIHRoaXMgYXV0b21hdGljYWxseSBmb3Ig eW91KTx1bD48bGk+R28gdG8gPGVtPmJ1aWxkL2NvbmY9CmlnczwvZW0+LCBhbmQgZWRpdCBlYWNo IGZpbGUgPGVtPipNeUdDLnByb3BlcnRpZXM8L2VtPiB0byByZWZlciB0byB5b3VyIHJlbj0KYW1l ZCBjbGFzc2VzPC9saT48L3VsPjwvbGk+PC9vbD48aDEgaWQ9M0QiQWRkaW5nYU5ld0dDLUJleW9u ZEJhc2VCYXNlTXlHQyI+PQpCZXlvbmQgQmFzZUJhc2VNeUdDPC9oMT48cD5Zb3UgcHJvYmFibHkg d2FudCB0byBidWlsZCB3aXRoIGNvbmZpZ3VyYXRpb25zIG89CnRoZXIgdGhhbiBqdXN0IEJhc2VC YXNlLj1DMj1BMCBJZiBzbywgY2xvbmUgY29uZmlndXJhdGlvbnMgZnJvbSBNYXJrU3dlZXAsID0K anVzdCBhcyB5b3UgZGlkIGFib3ZlIChmb3IgZXhhbXBsZSwgY2xvbmUgPGVtPkZhc3RBZGFwdGl2 ZU1hcmtTd2VlcDwvZW0+IGFzPQogPGVtPkZhc3RBZGFwdGl2ZTwvZW0+PHN0cm9uZz48ZW0+TXlH QzwvZW0+PC9zdHJvbmc+KS48L3A+PGgxIGlkPTNEIkFkZGluZ2E9Ck5ld0dDLVdoYXROZXh0Ij5X aGF0IE5leHQ/PC9oMT48cD5PbmNlIHlvdSBoYXZlIHRoaXMgd29ya2luZywgeW91IGhhdmUgc3Vj Yz0KZXNzZnVsbHkgY3JlYXRlZCBhbmQgdGVzdGVkIHlvdXIgb3duIEdDIHdpdGhvdXQgd3JpdGlu ZyBhIGxpbmUgb2YgY29kZSEhIFlvPQp1IGFyZSByZWFkeSB0byBzdGFydCB0aGUgc2xpZ2h0bHkg bW9yZSB0cmlja3kgcHJvY2VzcyBvZiB3cml0aW5nIHlvdXIgb3duIGc9CmFyYmFnZSBjb2xsZWN0 b3IgY29kZS48L3A+PHA+SWYgeW91IGFyZSB3cml0aW5nIGEgbmV3IEdDLCB5b3Ugc2hvdWxkIGRl ZmluaT0KdGVseSBiZSBhd2FyZSBvZiB0aGUgTU1UayA8YSBocmVmPTNEIlRoZSUyQk1NVGslMkJU ZXN0JTJCSGFybmVzcy5odG1sIj50ZXN0PQogaGFybmVzczwvYT4sIHdoaWNoIGFsbG93cyB5b3Ug dG8gdGVzdCBhbmQgZGVidWcgTU1UayBpbiBhIHZlcnkgd2VsbCBjb250YWk9Cm5lZCBwdXJlIEph dmEgZW52aXJvbm1lbnQsIHdpdGhvdXQgdGhlIHJlc3Qgb2YgSmlrZXMgUlZNLj1DMj1BMCBUaGlz IGFsbG93cz0KIHlvdSB0byB3cml0ZSB1bml0IHRlc3RzIGFuZCBjb3JuZXIgY2FzZXMsIGFuZCBt b3Jlb3ZlciwgYWxsb3dzIHlvdSB0byBlZGl0PQogYW5kIGRlYnVnIE1NVGsgZW50aXJlbHkgZnJv bSB3aXRoaW4geW91ciBJREU8L3A+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo9MjAKICAg ICAgICAgICAgICAgICAgICA9MjAKLSAgICAgICAgICAgICAgICA9MjAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAg ICAgPC9kaXY+ICAgICAgICAgICAgIDwvZGl2Pj0yMAogICAgICAgICAgICAgPGRpdiBpZD0zRCJm b290ZXIiIHN0eWxlPTNEImJhY2tncm91bmQ6IHVybChodHRwOi8vZG9jcy5jb2RlaGE9CnVzLm9y Zy9pbWFnZXMvYm9yZGVyL2JvcmRlcl9ib3R0b20uZ2lmKSByZXBlYXQteDsiPgotICAgICAgICAg ICAgICAgIDxwPjxzbWFsbD5Eb2N1bWVudCBnZW5lcmF0ZWQgYnkgQ29uZmx1ZW5jZSBvbiBGZWIg MTcsIDIwMTI9CiAxMDoyNDwvc21hbGw+PC9wPgorICAgICAgICAgICAgICAgIDxwPjxzbWFsbD5E b2N1bWVudCBnZW5lcmF0ZWQgYnkgQ29uZmx1ZW5jZSBvbiBGZWIgMTIsIDIwMTM9CiAwOTozMjwv c21hbGw+PC9wPgogICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PiAgICAgPC9ib2R5 PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvdXNlcmd1aWRlL2h0bWwvUlZNL0FyY2hpdGVjdHVyZS5o dG1sIGIvdXNlcmd1aWRlL2h0bWwvUlZNL0FyY2g9Cml0ZWN0dXJlLmh0bWwKLS0tIGEvdXNlcmd1 aWRlL2h0bWwvUlZNL0FyY2hpdGVjdHVyZS5odG1sCisrKyBiL3VzZXJndWlkZS9odG1sL1JWTS9B cmNoaXRlY3R1cmUuaHRtbApAQCAtMzQsMTAgKzM0LDEwIEBACiAgICAgICAgICAgICAgICAgICAg IDwvZGl2Pgo9MjAKICAgICAgICAgICAgICAgICAgICA9MjAKLSAgICAgICAgICAgICAgICA9MjAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTIw CiAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgIDwvZGl2Pj0yMAogICAgICAgICAg ICAgPGRpdiBpZD0zRCJmb290ZXIiIHN0eWxlPTNEImJhY2tncm91bmQ6IHVybChodHRwOi8vZG9j cy5jb2RlaGE9CnVzLm9yZy9pbWFnZXMvYm9yZGVyL2JvcmRlcl9ib3R0b20uZ2lmKSByZXBlYXQt eDsiPgotICAgICAgICAgICAgICAgIDxwPjxzbWFsbD5Eb2N1bWVudCBnZW5lcmF0ZWQgYnkgQ29u Zmx1ZW5jZSBvbiBGZWIgMTcsIDIwMTI9CiAxMDoyNDwvc21hbGw+PC9wPgorICAgICAgICAgICAg ICAgIDxwPjxzbWFsbD5Eb2N1bWVudCBnZW5lcmF0ZWQgYnkgQ29uZmx1ZW5jZSBvbiBGZWIgMTIs IDIwMTM9CiAwOTozMjwvc21hbGw+PC9wPgogICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwv ZGl2PiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvdXNlcmd1aWRlL2h0bWwvUlZN L0JVUlMuaHRtbCBiL3VzZXJndWlkZS9odG1sL1JWTS9CVVJTLmh0bWwKLS0tIGEvdXNlcmd1aWRl L2h0bWwvUlZNL0JVUlMuaHRtbAorKysgYi91c2VyZ3VpZGUvaHRtbC9SVk0vQlVSUy5odG1sCkBA IC0xNyw0MCArMTcsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgPC9oMT4KPTIwCiAgICAgICAg ICAgICAgICAgICAgIDxkaXYgY2xhc3M9M0QicGFnZS1tZXRhZGF0YSI+Ci0gICAgICAgICAgICAg ICAgICAgICAgICA8cD5UaGlzIHBhZ2UgbGFzdCBjaGFuZ2VkIG9uIE9jdCAzMSwgMjAxMSBieSA8 Zm9udD0KIGNvbG9yPTNEIiMwMDUwQjIiPmVicmFuZ3M8L2ZvbnQ+LjwvcD4KKyAgICAgICAgICAg ICAgICAgICAgICAgIDxwPlRoaXMgcGFnZSBsYXN0IGNoYW5nZWQgb24gQXVnIDE0LCAyMDEyIGJ5 IDxmb250PQogY29sb3I9M0QiIzAwNTBCMiI+anNpbmdlcjwvZm9udD4uPC9wPgogICAgICAgICAg ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICA8L2Rpdj4KPTIwCiAgICAgICAgICAg ICAgICAgPGRpdiBpZD0zRCJjb250ZW50IiBjbGFzcz0zRCJ2aWV3Ij4KICAgICAgICAgICAgICAg ICAgICAgPGRpdiBpZD0zRCJtYWluLWNvbnRlbnQiIGNsYXNzPTNEIndpa2ktY29udGVudCBncm91 cCI+Ci0gICAgICAgICAgICAgICAgICAgIDxwPlRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHVzZXMg dGhlIEJvdHRvbS1VcCBSZXdyaXRlID0KU3lzdGVtIChCVVJTKSBmb3IgaW5zdHJ1Y3Rpb24gc2Vs ZWN0aW9uLiAgQlVSUyBpcyBlc3NlbnRpYWxseSBhIHRyZWUgcGF0dGVyPQpuIG1hdGNoaW5nIHN5 c3RlbSBkZXJpdmVkIGZyb20gPGEgaHJlZj0zRCJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaWJ1 cmcvIiA9CmNsYXNzPTNEImV4dGVybmFsLWxpbmsiIHJlbD0zRCJub2ZvbGxvdyI+SWJ1cmc8L2E+ IGJ5IERhdmlkIFIuIEhhbnNvbi4gKFNlZT0KICZxdW90O0VuZ2luZWVyaW5nIGEgU2ltcGxlLCBF ZmZpY2llbnQgQ29kZS1HZW5lcmF0b3IgR2VuZXJhdG9yJnF1b3Q7IGJ5IEZyPQphc2VyLCBIYW5z b24sIGFuZCBQcm9lYnN0aW5nLCBMT1BMQVMgMSgzKSwgU2VwdC4gMTk5Mi4pIFRoZSBpbnN0cnVj dGlvbiBzZWw9CmVjdGlvbiBydWxlcyBmb3IgZWFjaCBhcmNoaXRlY3R1cmUgYXJlIHNwZWNpZmll ZCBpbiBhbiBhcmNoaXRlY3R1cmUtc3BlY2lmaT0KYyBmaWxlc2xvY2F0ZWQgaW4gPGNvZGU+JFJW TV9ST09UL3J2bS9zcmMtZ2VuZXJhdGVkL29wdC1idXJzLyR7YXJjaDwvY29kZT59PQosIHdoZXJl ICR7YXJjaH0gaXMgdGhlIHNwZWNpZmljIGluc3RydWN0aW9uIGFyY2hpdGVjdHVyZSBvZiBpbnRl cmVzdC4gVGhlIHI9CnVsZXMgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyBhIHBhcnNlciwgd2hpY2gg dHJhbnNmb3JtcyB0aGUgSVIuPC9wPgotCi08cD5FYWNoIHJ1bGUgaXMgZGVmaW5lZCBieSBhIGZv dXItbGluZSByZWNvcmQsIGNvbnNpc3Rpbmcgb2Y6PC9wPgotPHVsPgotCTxsaT48Y29kZT5QUk9E VUNUSU9OPC9jb2RlPjogdGhlIHRyZWUgcGF0dGVybiB0byBiZSBtYXRjaGVkLiAgVGhlIGZvcm1h dCA9Cm9mIGVhY2ggcGF0dGVybiBpcyBleHBsYWluZWQgYmVsb3cuPC9saT4KLQk8bGk+PGNvZGU+ Q09TVDwvY29kZT46IHRoZSBjb3N0IG9mIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIGFzIG9wcG9zZWQg dG8gc2tpPQpwcGluZyBpdC4gIEl0IGlzIGEgSmF2YTxhIGhyZWY9M0QiaHR0cDovL2RvY3MuY29k ZWhhdXMub3JnL2Rpc3BsYXkvUlZNL1RyYWQ9CmVtYXJrcyI+PUUyPTg0PUEyPC9hPiBleHByZXNz aW9uIHRoYXQgZXZhbHVhdGVzIHRvIGFuIGludGVnZXIuPC9saT4KLQk8bGk+PGNvZGU+RkxBR1M8 L2NvZGU+OiBUaGUgZmxhZ3MgZm9yIHRoZSBvcGVyYXRpb246Ci0JPHVsPgotCQk8bGk+Tk9GTEFH UzogdGhpcyBwcm9kdWN0aW9uIHBlcmZvcm1zIG5vIG9wZXJhdGlvbjwvbGk+Ci0JCTxsaT5FTUlU X0lOU1RSVUNUSU9OOiB0aGlzIHByb2R1Y3Rpb24gd2lsbCBlbWl0IGluc3RydWN0aW9uczwvbGk+ Ci0JCTxsaT5MRUZUX0NISUxEX0ZJUlNUOiB2aXNpdCBjaGlsZCBvbiBsZWZ0LWFuZCBzaWRlIG9m IHByb2R1Y3Rpb24gZmlyc3Q8Lz0KbGk+Ci0JCTxsaT5SSUdIVF9DSElMRF9GSVJTVDogdmlzaXQg Y2hpbGQgb24gcmlnaHQtaGFuZCBzaWRlIG9mIHByb2R1Y3Rpb24gZmlycz0KdDwvbGk+Ci0JPC91 bD4KLQk8L2xpPgotCTxsaT48Y29kZT5URU1QTEFURTwvY29kZT46IEphdmEgY29kZSB0byBlbWl0 PC9saT4KLTwvdWw+Ci0KLQotPHA+RWFjaCBwcm9kdWN0aW9uIGhhcyBhIDxlbT5ub24tdGVybWlu YWw8L2VtPiwgd2hpY2ggZGVub3RlcyBhIHZhbHVlLCBmb2w9Cmxvd2VkIGJ5IGEgY29sb24gKCZx dW90OzomcXVvdDspLCBmb2xsb3dlZCBieSBhIGRlcGVuZGVuY2UgdHJlZSB0aGF0IHByb2R1Yz0K ZXMgdGhhdCB2YWx1ZS4gRm9yIGV4YW1wbGUsIHRoZSBydWxlIHJlc3VsdGluZyBpbiBtZW1vcnkg YWRkIG9uIHRoZSBJTlRFTCBhPQpyY2hpdGVjdHVyZSBpcyBleHByZXNzZWQgaW4gdGhlIGZvbGxv d2luZyB3YXk6PC9wPgotPGRpdiBjbGFzcz0zRCJwcmVmb3JtYXR0ZWQgcGFuZWwiIHN0eWxlPTNE ImJvcmRlci13aWR0aDogMXB4OyI+PGRpdiBjbGFzcz0KPTNEInByZWZvcm1hdHRlZENvbnRlbnQg cGFuZWxDb250ZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+VGhlIG9wdGltaXppbmcgY29t cGlsZXIgdXNlcyB0aGUgQm90dG9tLVVwIFJld3JpdGUgPQpTeXN0ZW0gKEJVUlMpIGZvciBpbnN0 cnVjdGlvbiBzZWxlY3Rpb24uIEJVUlMgaXMgZXNzZW50aWFsbHkgYSB0cmVlIHBhdHRlcm49CiBt YXRjaGluZyBzeXN0ZW0gZGVyaXZlZCBmcm9tIDxhIGhyZWY9M0QiaHR0cDovL2NvZGUuZ29vZ2xl LmNvbS9wL2lidXJnLyIgYz0KbGFzcz0zRCJleHRlcm5hbC1saW5rIiByZWw9M0Qibm9mb2xsb3ci PklidXJnPC9hPiBieSBEYXZpZCBSLiBIYW5zb24uIChTZWUgPQomcXVvdDtFbmdpbmVlcmluZyBh IFNpbXBsZSwgRWZmaWNpZW50IENvZGUtR2VuZXJhdG9yIEdlbmVyYXRvciZxdW90OyBieSBGcmE9 CnNlciwgSGFuc29uLCBhbmQgUHJvZWJzdGluZywgTE9QTEFTIDEoMyksIFNlcHQuIDE5OTIsIGRv aTo9QzI9QTA8YSBocmVmPTNEIj0KaHR0cDovL2R4LmRvaS5vcmcvMTAuMTE0NS8xNTE2NDAuMTUx NjQyIiBjbGFzcz0zRCJleHRlcm5hbC1saW5rIiByZWw9M0Qibm9mPQpvbGxvdyI+MTAuMTE0NS8x NTE2NDAuMTUxNjQyPC9hPikuIFRoZSBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcnVsZXMgZm9yIGVh Y2g9CiBhcmNoaXRlY3R1cmUgYXJlIHNwZWNpZmllZCBpbiBhbiBhcmNoaXRlY3R1cmUtc3BlY2lm aWMgZmlsZSBsb2NhdGVkIGluIDxjbz0KZGU+JFJWTV9ST09UL3J2bS9zcmMtZ2VuZXJhdGVkL29w dC1idXJzLyR7YXJjaDwvY29kZT59LCB3aGVyZSAke2FyY2h9IGlzIHRoPQplIHNwZWNpZmljIGlu c3RydWN0aW9uIGFyY2hpdGVjdHVyZSBvZiBpbnRlcmVzdC4gVGhlIHJ1bGVzIGFyZSB1c2VkIGlu IGdlbmU9CnJhdGluZyBhIHBhcnNlciwgd2hpY2ggdHJhbnNmb3JtcyB0aGUgSVIuPC9wPjxwPkVh Y2ggcnVsZSBpcyBkZWZpbmVkIGJ5IGEgZj0Kb3VyLWxpbmUgcmVjb3JkLCBjb25zaXN0aW5nIG9m OjwvcD48dWw+PGxpPjxjb2RlPlBST0RVQ1RJT048L2NvZGU+OiB0aGUgdHJlPQplIHBhdHRlcm4g dG8gYmUgbWF0Y2hlZC4gVGhlIGZvcm1hdCBvZiBlYWNoIHBhdHRlcm4gaXMgZXhwbGFpbmVkIGJl bG93LjwvbGk9Cj48bGk+PGNvZGU+Q09TVDwvY29kZT46IHRoZSBjb3N0IG9mIG1hdGNoaW5nIHRo ZSBwYXR0ZXJuIGFzIG9wcG9zZWQgdG8gc2tpcD0KcGluZyBpdC4gSXQgaXMgYSBKYXZhPGEgaHJl Zj0zRCJodHRwOi8vZG9jcy5jb2RlaGF1cy5vcmcvZGlzcGxheS9SVk0vVHJhZGVtPQphcmtzIj4m dHJhZGU7PC9hPiBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGFuIGludGVnZXIuPC9saT48 bGk+PGNvZGU+Rkw9CkFHUzwvY29kZT46IFRoZSBmbGFncyBmb3IgdGhlIG9wZXJhdGlvbjo8YnIg Lz48dWw+PGxpPk5PRkxBR1M6IHRoaXMgcHJvZHVjdD0KaW9uIHBlcmZvcm1zIG5vIG9wZXJhdGlv bjwvbGk+PGxpPkVNSVRfSU5TVFJVQ1RJT046IHRoaXMgcHJvZHVjdGlvbiB3aWxsIGVtPQppdCBp bnN0cnVjdGlvbnM8L2xpPjxsaT5MRUZUX0NISUxEX0ZJUlNUOiB2aXNpdCBjaGlsZCBvbiBsZWZ0 LWFuZCBzaWRlIG9mIHA9CnJvZHVjdGlvbiBmaXJzdDwvbGk+PGxpPlJJR0hUX0NISUxEX0ZJUlNU OiB2aXNpdCBjaGlsZCBvbiByaWdodC1oYW5kIHNpZGUgbz0KZiBwcm9kdWN0aW9uIGZpcnN0PC9s aT48L3VsPjwvbGk+PGxpPjxjb2RlPlRFTVBMQVRFPC9jb2RlPjogSmF2YSBjb2RlIHRvIGVtPQpp dDwvbGk+PC91bD48cD5FYWNoIHByb2R1Y3Rpb24gaGFzIGEgPGVtPm5vbi10ZXJtaW5hbDwvZW0+ LCB3aGljaCBkZW5vdGVzIGE9CiB2YWx1ZSwgZm9sbG93ZWQgYnkgYSBjb2xvbiAoJnF1b3Q7OiZx dW90OyksIGZvbGxvd2VkIGJ5IGEgZGVwZW5kZW5jZSB0cmVlID0KdGhhdCBwcm9kdWNlcyB0aGF0 IHZhbHVlLiBGb3IgZXhhbXBsZSwgdGhlIHJ1bGUgcmVzdWx0aW5nIGluIG1lbW9yeSBhZGQgb24g PQp0aGUgSW50ZWwgSUEzMiBhcmNoaXRlY3R1cmUgaXMgZXhwcmVzc2VkIGluIHRoZSBmb2xsb3dp bmcgd2F5OjwvcD48ZGl2IGNsYXM9CnM9M0QicHJlZm9ybWF0dGVkIHBhbmVsIiBzdHlsZT0zRCJi b3JkZXItd2lkdGg6IDFweDsiPjxkaXYgY2xhc3M9M0QicHJlZm9ybT0KYXR0ZWRDb250ZW50IHBh bmVsQ29udGVudCI+CiA8cHJlPnN0bTogICAgSU5UX1NUT1JFKElOVF9BRERfQUNDKElOVF9MT0FE KHIscml2KSxyaXYpLE9USEVSX09QRVJBTkQociwgcj0KaXYpKQogQUREUkVTU19FUVVBTChQKHAp LCBQTEwocCksIDE3KQogRU1JVF9JTlNUUlVDVElPTgogRU1JVChNSVJfQmluYXJ5QWNjLm11dGF0 ZShQKHApLCBJQTMyX0FERCwgTU9fUyhQKHApLCBEVyksIEJpbmFyeUFjYy5nZXRWYWw9CnVlKFBM KHApKSkpOwogPC9wcmU+Ci08L2Rpdj48L2Rpdj4KLTxwPlRoZSBwcm9kdWN0aW9uIGluIHRoaXMg cnVsZSByZXByZXNlbnRzIHRoZSBmb2xsb3dpbmcgdHJlZTo8L3A+Ci08ZGl2IGNsYXNzPTNEInBy ZWZvcm1hdHRlZCBwYW5lbCIgc3R5bGU9M0QiYm9yZGVyLXdpZHRoOiAxcHg7Ij48ZGl2IGNsYXNz PQo9M0QicHJlZm9ybWF0dGVkQ29udGVudCBwYW5lbENvbnRlbnQiPgorPC9kaXY+PC9kaXY+PHA+ VGhlIHByb2R1Y3Rpb24gaW4gdGhpcyBydWxlIHJlcHJlc2VudHMgdGhlIGZvbGxvd2luZyB0cmVl Ojw9Ci9wPjxkaXYgY2xhc3M9M0QicHJlZm9ybWF0dGVkIHBhbmVsIiBzdHlsZT0zRCJib3JkZXIt d2lkdGg6IDFweDsiPjxkaXYgY2xhcz0Kcz0zRCJwcmVmb3JtYXR0ZWRDb250ZW50IHBhbmVsQ29u dGVudCI+CiA8cHJlPiAgICAgICAgIHIgICAgIHJpdgogICAgICAgICAgIFwgICAgLwogICAgICAg ICAgSU5UX0xPQUQgIHJpdgpAQCAtNTksNTMgKzM4LDIxIEBACiAgICAgICAgICAgICAgICAgICAg IFwgICB8ICAvCiAgICAgICAgICAgICAgICAgICAgSU5UX1NUT1JFCiA8L3ByZT4KLTwvZGl2Pjwv ZGl2PgotPHA+d2hlcmUgPGNvZGU+cjwvY29kZT4gaXMgYSBub24tdGVybWluYWwgdGhhdCByZXBy ZXNlbnRzIGEgcmVnaXN0ZXIgb3IgYSA9CnRyZWUgcHJvZHVjaW5nIGEgcmVnaXN0ZXIsIDxjb2Rl PnJpdjwvY29kZT4gaXMgYSBub24tdGVybWluYWwgdGhhdCByZXByZXNlbj0KdHMgYSByZWdpc3Rl ciAob3IgYSB0cmVlIHByb2R1Y2luZyBvbmUpIG9yIGFuIGltbWVkaWF0ZSB2YWx1ZSwgYW5kIDxj b2RlPklOPQpUX0xPQUQ8L2NvZGU+LCA8Y29kZT5JTlRfQUREX0FDQzwvY29kZT4gYW5kIDxjb2Rl PklOVF9TVE9SRTwvY29kZT4gYXJlIG9wZXI9CmF0b3JzICg8ZW0+dGVybWluYWxzPC9lbT4pLiA8 Y29kZT5PVEhFUl9PUEVSQU5EPC9jb2RlPiBpcyBqdXN0IGFuIGFic3RyYWN0aT0Kb24gdG8gbWFr ZSB0aGUgdHJlZSBiaW5hcnkuPC9wPgotCi08cD5UaGVyZSBhcmUgbXVsdGlwbGUgaGVscGVyIGZ1 bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGluIEphdmEgY29kZSAoYm90aD0KIGNvc3QgZXhwcmVz c2lvbnMgYW5kIGdlbmVyYXRpb24gdGVtcGxhdGVzKS4gIEluIGFsbCBjb2RlIHNlcXVlbmNlcyB0 aGUgbmFtPQplIDxjb2RlPnA8L2NvZGU+IGlzIHJlc2VydmVkIGZvciB0aGUgY3VycmVudCB0cmVl IG5vZGUuIFNvbWUgb2YgdGhlIGhlbHBlciA9Cm1ldGhvZHMgYXJlIHNob3J0Y3V0cyBmb3IgYWNj ZXNzaW5nIHByb3BlcnRpZXMgb2YgdHJlZSBub2Rlczo8L3A+Ci08dWw+Ci0JPGxpPjxjb2RlPlAo cCk8L2NvZGU+IGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBpbnN0cnVjdGlvbiBhc3NvY2lhdGVkIHdp dGggdD0KaGUgY3VycmVudCAocm9vdCkgbm9kZSw8L2xpPgotCTxsaT48Y29kZT5QTChwKTwvY29k ZT4gaXMgdXNlZCB0byBhY2Nlc3MgdGhlIGluc3RydWN0aW9uIGFzc29jaWF0ZWQgd2l0aCA9CnRo ZSBsZWZ0IGNoaWxkIG9mIHRoZSBjdXJyZW50IChyb290KSBub2RlIChwcm92aWRlZCBpdCBleGlz dHMpLDwvbGk+Ci0JPGxpPjxjb2RlPlBSKHApPC9jb2RlPiBpcyB1c2VkIHRvIGFjY2VzcyB0aGUg aW5zdHJ1Y3Rpb24gYXNzb2NpYXRlZCB3aXRoID0KdGhlIHJpZ2h0IGNoaWxkIG9mIHRoZSBjdXJy ZW50IChyb290KSBub2RlIChwcm92aWRlZCBpdCBleGlzdHMpLDwvbGk+Ci0JPGxpPnNpbWlsYXJs eSwgPGNvZGU+UExMKHApPC9jb2RlPiwgPGNvZGU+UExSKHApPC9jb2RlPiwgPGNvZGU+UFJMKHAp PC9jbz0KZGU+IGFuZCA8Y29kZT5QUlIocCk8L2NvZGU+IGFyZSB1c2VkIHRvIGFjY2VzcyB0aGUg aW5zdHJ1Y3Rpb24gYXNzb2NpYXRlZCB3PQppdGggdGhlIGxlZnQgY2hpbGQgb2YgdGhlIGxlZnQg Y2hpbGQsIHJpZ2h0IGNoaWxkIG9mIHRoZSBsZWZ0IGNoaWxkLCBsZWZ0IGM9CmhpbGQgb2YgdGhl IHJpZ2h0IGNoaWxkIGFuZCByaWdodCBjaGlsZCBvZiB0aGUgcmlnaHQgY2hpbGQsIHJlc3BlY3Rp dmVseSwgbz0KZiB0aGUgY3VycmVudCAocm9vdCkgbm9kZSAocHJvdmlkZWQgdGhleSBleGlzdCku PC9saT4KLTwvdWw+Ci0KLQotPHA+V2hhdCB0aGUgYWJvdmUgcnVsZSBiYXNpY2FsbHkgcmVhZHMg aXMgdGhlIGZvbGxvd2luZzo8YnIgLz4KLUlmIGEgdHJlZSBzaG93biBhYm92ZSBpcyBzZWVuLCBl dmFsdWF0ZSB0aGUgY29zdCBleHByZXNzaW9uICh3aGljaCwgaW4gdGhpPQpzIGNhc2UsIGNhbGxz IGEgaGVscGVyIGZ1bmN0aW9uIHRvIHRlc3Qgd2hldGhlciB0aGUgYWRkcmVzc2VzIGluIHRoZSA8 Y29kZT49ClNUT1JFPC9jb2RlPiAoPGNvZGU+UChwKTwvY29kZT4pIGFuZCB0aGUgPGNvZGU+TE9B RDwvY29kZT4gKDxjb2RlPlBMTChwKTwvYz0Kb2RlPikgaW5zdHJ1Y3Rpb25zIGFyZSBlcXVhbC4g IFRoZSBmdW5jdGlvbiByZXR1cm5zIDE3IGlmIHRoZXkgYXJlLCBhbmQgYSBzPQpwZWNpYWwgdmFs dWUgPGNvZGU+SU5GSU5JVEU8L2NvZGU+IGlmIG5vdCksIGFuZCBpZiB0aGUgY29zdCBpcyBhY2Nl cHRhYmxlLCA9CmVtaXQgdGhlIDxjb2RlPlNUT1JFPC9jb2RlPiBpbnN0cnVjdGlvbiAoPGNvZGU+ UChwKTwvY29kZT4pIG11dGF0ZWQgaW4gcGxhYz0KZSBpbnRvIGEgbWFjaGluZS1kZXBlbmRlbnQg YWRkLWFjY3VtdWxhdGUgaW5zdHJ1Y3Rpb24gKDxjb2RlPklBMzJfQUREPC9jb2RlPQo+KSB0aGF0 IGFkZHMgYSBnaXZlbiB2YWx1ZSB0byB0aGUgY29udGVudHMgb2YgYSBnaXZlbiBtZW1vcnkgbG9j YXRpb24uPC9wPgotCi08cD5UaGUgcnVsZXMgZmlsZSBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgZmls ZSBjYWxsZWQgPGNvZGU+aXIuYnJnPC9jb2RlPiwgdz0KaGljaCwgaW4gdHVybiwgaXMgdXNlZCB0 byBwcm9kdWNlIGEgZmlsZSBjYWxsZWQgPGNvZGU+QlVSU19TVEFURS5qYXZhPC9jb2RlPQo+Ljwv cD4KLQotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaGVscGVyIGZ1bmN0aW9ucyBsb29rIGF0 IDxjb2RlPkJVUlNfSGVscGVycy5qYXY9CmE8L2NvZGU+LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBv biB0aGUgQlVSUyBhbGdvcml0aG0gc2VlIDxjb2RlPkJVUlMuamF2YTwvYz0Kb2RlPi48L3A+Ci0K LTxoMiBpZD0zRCJCVVJTLUZ1dHVyZWRpcmVjdGlvbnMiPkZ1dHVyZSBkaXJlY3Rpb25zPC9oMj4K LQotPHA+V2hpbHN0IGpidXJnIGFsbG93cyB1cyB0byBkbyBnb29kIGluc3RydWN0aW9uIHNlbGVj dGlvbiB0aGVyZSBhcmUgYSBudW09CmJlciBvZiBhcmVhcyB3aGVyZSBpdCBpcyBsYWNraW5nOjwv cD4KLQotPGgzIGlkPTNEIkJVUlMtVmVjdG9yb3BlcmF0aW9ucyI+VmVjdG9yIG9wZXJhdGlvbnM8 L2gzPgotCi08cD5XZSBjYW4ndCB3cml0ZSBwcm9kdWN0aW9ucyBmb3IgdmVjdG9yIG9wZXJhdGlv bnMgdW5sZXNzIHdlIG1hdGNoIGFuIGVudD0KaXJlIHRyZWUgb2Ygb3BlcmF0aW9ucy4gRm9yIGV4 YW1wbGUsIGl0IHdvdWxkIGJlIG5pY2UgdG8gd3JpdGUgYSBydWxlIG9mIHRoPQplIGZvcm06PC9w PgotPGRpdiBjbGFzcz0zRCJwcmVmb3JtYXR0ZWQgcGFuZWwiIHN0eWxlPTNEImJvcmRlci13aWR0 aDogMXB4OyI+PGRpdiBjbGFzcz0KPTNEInByZWZvcm1hdHRlZENvbnRlbnQgcGFuZWxDb250ZW50 Ij4KKzwvZGl2PjwvZGl2PjxwPndoZXJlIDxjb2RlPnI8L2NvZGU+IGlzIGEgbm9uLXRlcm1pbmFs IHRoYXQgcmVwcmVzZW50cyBhIHJlPQpnaXN0ZXIgb3IgYSB0cmVlIHByb2R1Y2luZyBhIHJlZ2lz dGVyLCA8Y29kZT5yaXY8L2NvZGU+IGlzIGEgbm9uLXRlcm1pbmFsIHQ9CmhhdCByZXByZXNlbnRz IGEgcmVnaXN0ZXIgKG9yIGEgdHJlZSBwcm9kdWNpbmcgb25lKSBvciBhbiBpbW1lZGlhdGUgdmFs dWUsID0KYW5kIDxjb2RlPklOVF9MT0FEPC9jb2RlPiwgPGNvZGU+SU5UX0FERF9BQ0M8L2NvZGU+ IGFuZCA8Y29kZT5JTlRfU1RPUkU8L2NvPQpkZT4gYXJlIG9wZXJhdG9ycyAoPGVtPnRlcm1pbmFs czwvZW0+KS4gPGNvZGU+T1RIRVJfT1BFUkFORDwvY29kZT4gaXMganVzdCA9CmFuIGFic3RyYWN0 aW9uIHRvIG1ha2UgdGhlIHRyZWUgYmluYXJ5LjwvcD48cD5UaGVyZSBhcmUgbXVsdGlwbGUgaGVs cGVyIGZ1bj0KY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gSmF2YSBjb2RlIChib3RoIGNvc3Qg ZXhwcmVzc2lvbnMgYW5kIGdlbmVyYXRpb24gPQp0ZW1wbGF0ZXMpLiBJbiBhbGwgY29kZSBzZXF1 ZW5jZXMgdGhlIG5hbWUgPGNvZGU+cDwvY29kZT4gaXMgcmVzZXJ2ZWQgZm9yIHQ9CmhlIGN1cnJl bnQgdHJlZSBub2RlLiBTb21lIG9mIHRoZSBoZWxwZXIgbWV0aG9kcyBhcmUgc2hvcnRjdXRzIGZv ciBhY2Nlc3Npbj0KZyBwcm9wZXJ0aWVzIG9mIHRyZWUgbm9kZXM6PC9wPjx1bD48bGk+PGNvZGU+ UChwKTwvY29kZT4gaXMgdXNlZCB0byBhY2Nlc3MgPQp0aGUgaW5zdHJ1Y3Rpb24gYXNzb2NpYXRl ZCB3aXRoIHRoZSBjdXJyZW50IChyb290KSBub2RlLDwvbGk+PGxpPjxjb2RlPlBMKHA9Cik8L2Nv ZGU+IGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBpbnN0cnVjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhl IGxlZnQgY2hpbGQgbz0KZiB0aGUgY3VycmVudCAocm9vdCkgbm9kZSAocHJvdmlkZWQgaXQgZXhp c3RzKSw8L2xpPjxsaT48Y29kZT5QUihwKTwvY29kZT4gPQppcyB1c2VkIHRvIGFjY2VzcyB0aGUg aW5zdHJ1Y3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByaWdodCBjaGlsZCBvZiB0aGUgY3U9CnJy ZW50IChyb290KSBub2RlIChwcm92aWRlZCBpdCBleGlzdHMpLDwvbGk+PGxpPnNpbWlsYXJseSwg PGNvZGU+UExMKHApPC9jbz0KZGU+LCA8Y29kZT5QTFIocCk8L2NvZGU+LCA8Y29kZT5QUkwocCk8 L2NvZGU+IGFuZCA8Y29kZT5QUlIocCk8L2NvZGU+IGFyZSB1PQpzZWQgdG8gYWNjZXNzIHRoZSBp bnN0cnVjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGxl... [truncated message content] |
From: <jik...@li...> - 2013-02-12 18:24:33
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/4cb2f9536054 changeset: 10592:4cb2f9536054 user: Dave Grove <gr...@us...> date: Tue Feb 12 13:22:18 2013 -0500 description: Merge tip to release branch details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/c951b3ea1d7e changeset: 10593:c951b3ea1d7e user: Dave Grove <gr...@us...> date: Tue Feb 12 13:23:49 2013 -0500 description: nail hg revision number for release diffstat: .hgignore | 15 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/ActivePlan.java | 14 - MMTk/ext/vm/harness/org/mmtk/harness/vm/Assert.java | 25 - MMTk/ext/vm/harness/org/mmtk/harness/vm/Barriers.java | 82 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/BuildTimeConfig.java | 43 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/Collection.java | 38 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/Debug.java | 15 - MMTk/ext/vm/harness/org/mmtk/harness/vm/Factory.java | 223 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/FinalizableProcessor.java | 16 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/Memory.java | 104 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/ObjectModel.java | 177 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/ReferenceProcessor.java | 29 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java | 89 - MMTk/ext/vm/harness/org/mmtk/harness/vm/Statistics.java | 24 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/Strings.java | 29 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/SynchronizedCounter.java | 18 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ActivePlan.java | 25 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Assert.java | 28 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/BuildTimeConfig.java | 2 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Collection.java | 45 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Factory.java | 250 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/FinalizableProcessor.java | 20 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Lock.java | 4 + MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/MMTk_Events.java | 3 + MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Memory.java | 77 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Monitor.java | 16 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ObjectModel.java | 183 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ReferenceProcessor.java | 29 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java | 28 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanThread.java | 13 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Scanning.java | 42 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java | 28 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Strings.java | 29 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/SynchronizedCounter.java | 5 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/TraceInterface.java | 52 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/ServerInterpreter.java | 54 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/ServerSpace.java | 88 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/Util.java | 57 +- MMTk/harness/src/org/mmtk/harness/Mutator.java | 12 +- MMTk/harness/src/org/mmtk/harness/Mutators.java | 3 +- MMTk/harness/src/org/mmtk/harness/TimeoutThread.java | 8 +- MMTk/harness/src/org/mmtk/harness/exception/OutOfMemory.java | 2 +- MMTk/harness/src/org/mmtk/harness/lang/Checker.java | 25 +- MMTk/harness/src/org/mmtk/harness/lang/Compiler.java | 6 +- MMTk/harness/src/org/mmtk/harness/lang/Env.java | 16 - MMTk/harness/src/org/mmtk/harness/lang/Intrinsics.java | 2 +- MMTk/harness/src/org/mmtk/harness/lang/PrettyPrinter.java | 8 +- MMTk/harness/src/org/mmtk/harness/lang/Trace.java | 4 +- MMTk/harness/src/org/mmtk/harness/lang/Visitor.java | 2 +- MMTk/harness/src/org/mmtk/harness/lang/ast/AbstractAST.java | 4 +- MMTk/harness/src/org/mmtk/harness/lang/ast/Alloc.java | 9 +- MMTk/harness/src/org/mmtk/harness/lang/ast/Assert.java | 1 - MMTk/harness/src/org/mmtk/harness/lang/ast/Assignment.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/ast/BinaryExpression.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/ast/Call.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/ast/Constant.java | 2 +- MMTk/harness/src/org/mmtk/harness/lang/ast/Expect.java | 3 - MMTk/harness/src/org/mmtk/harness/lang/ast/IntrinsicMethod.java | 5 +- MMTk/harness/src/org/mmtk/harness/lang/ast/Operator.java | 10 +- MMTk/harness/src/org/mmtk/harness/lang/ast/PrintStatement.java | 3 +- MMTk/harness/src/org/mmtk/harness/lang/ast/Sequence.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/ast/TypeLiteral.java | 2 +- MMTk/harness/src/org/mmtk/harness/lang/ast/Variable.java | 3 +- MMTk/harness/src/org/mmtk/harness/lang/compiler/CompiledMethod.java | 2 + MMTk/harness/src/org/mmtk/harness/lang/compiler/CompiledMethodProxy.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/compiler/Register.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/parser/GlobalDefs.java | 4 +- MMTk/harness/src/org/mmtk/harness/lang/parser/SymbolTable.java | 4 +- MMTk/harness/src/org/mmtk/harness/lang/pcode/AllocOp.java | 11 +- MMTk/harness/src/org/mmtk/harness/lang/pcode/AllocUserOp.java | 16 +- MMTk/harness/src/org/mmtk/harness/lang/pcode/BinaryOp.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/pcode/BinaryOperation.java | 12 +- MMTk/harness/src/org/mmtk/harness/lang/pcode/Branch.java | 10 +- MMTk/harness/src/org/mmtk/harness/lang/pcode/CallOp.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/pcode/Goto.java | 2 + MMTk/harness/src/org/mmtk/harness/lang/pcode/LoadFieldOp.java | 3 + MMTk/harness/src/org/mmtk/harness/lang/pcode/LoadFixedFieldOp.java | 3 + MMTk/harness/src/org/mmtk/harness/lang/pcode/PseudoOp.java | 3 + MMTk/harness/src/org/mmtk/harness/lang/pcode/ReturnOp.java | 5 +- MMTk/harness/src/org/mmtk/harness/lang/pcode/SpawnOp.java | 2 +- MMTk/harness/src/org/mmtk/harness/lang/pcode/StoreFieldOp.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/pcode/StoreFixedFieldOp.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/pcode/TernaryOp.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/pcode/UnaryOp.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/runtime/IntValue.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/runtime/NullValue.java | 13 +- MMTk/harness/src/org/mmtk/harness/lang/runtime/ObjectValue.java | 6 +- MMTk/harness/src/org/mmtk/harness/lang/runtime/PcodeInterpreter.java | 4 +- MMTk/harness/src/org/mmtk/harness/lang/runtime/PhantomReferenceValue.java | 3 - MMTk/harness/src/org/mmtk/harness/lang/runtime/ReferenceValue.java | 14 +- MMTk/harness/src/org/mmtk/harness/lang/runtime/SoftReferenceValue.java | 3 - MMTk/harness/src/org/mmtk/harness/lang/runtime/StringValue.java | 1 + MMTk/harness/src/org/mmtk/harness/lang/runtime/WeakReferenceValue.java | 3 - MMTk/harness/src/org/mmtk/harness/lang/type/AbstractType.java | 16 +- MMTk/harness/src/org/mmtk/harness/lang/type/BooleanType.java | 6 - MMTk/harness/src/org/mmtk/harness/lang/type/IntType.java | 3 - MMTk/harness/src/org/mmtk/harness/lang/type/ObjectType.java | 9 - MMTk/harness/src/org/mmtk/harness/lang/type/ReferenceType.java | 9 - MMTk/harness/src/org/mmtk/harness/lang/type/StringType.java | 3 - MMTk/harness/src/org/mmtk/harness/lang/type/TypeReference.java | 3 +- MMTk/harness/src/org/mmtk/harness/lang/type/UserTypeImpl.java | 3 + MMTk/harness/src/org/mmtk/harness/lang/type/VoidType.java | 6 - MMTk/harness/src/org/mmtk/harness/options/Bits.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/Collectors.java | 1 + MMTk/harness/src/org/mmtk/harness/options/EnumSetOption.java | 5 +- MMTk/harness/src/org/mmtk/harness/options/GcEvery.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/HarnessOptionSet.java | 46 +- MMTk/harness/src/org/mmtk/harness/options/InitHeap.java | 1 + MMTk/harness/src/org/mmtk/harness/options/IntSetOption.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/MaxHeap.java | 1 + MMTk/harness/src/org/mmtk/harness/options/RandomPolicyLength.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/RandomPolicyMax.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/RandomPolicyMin.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/RandomPolicySeed.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/Scheduler.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/SchedulerPolicy.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/Timeout.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/Trace.java | 4 +- MMTk/harness/src/org/mmtk/harness/options/WordSetOption.java | 1 + MMTk/harness/src/org/mmtk/harness/options/YieldInterval.java | 4 +- MMTk/harness/src/org/mmtk/harness/sanity/FromSpaceInvariant.java | 4 +- MMTk/harness/src/org/mmtk/harness/sanity/GcSanity.java | 7 +- MMTk/harness/src/org/mmtk/harness/sanity/HeapEntry.java | 3 - MMTk/harness/src/org/mmtk/harness/sanity/HeapSnapshot.java | 6 - MMTk/harness/src/org/mmtk/harness/sanity/ObjectTable.java | 10 +- MMTk/harness/src/org/mmtk/harness/sanity/Traversal.java | 2 +- MMTk/harness/src/org/mmtk/harness/scheduler/AbstractPolicy.java | 1 + MMTk/harness/src/org/mmtk/harness/scheduler/Lock.java | 9 +- MMTk/harness/src/org/mmtk/harness/scheduler/Policy.java | 14 +- MMTk/harness/src/org/mmtk/harness/scheduler/ThreadModel.java | 6 + MMTk/harness/src/org/mmtk/harness/scheduler/YieldEvery.java | 5 - MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/CollectorThread.java | 1 + MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/JavaLock.java | 5 - MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/JavaThreadModel.java | 17 +- MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/MutatorThread.java | 1 + MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/Rendezvous.java | 14 +- MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/MutatorThread.java | 4 +- MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/RawLock.java | 5 - MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/RawThreadModel.java | 21 +- MMTk/harness/vmmagic/org/vmmagic/unboxed/Address.java | 6 +- MMTk/harness/vmmagic/org/vmmagic/unboxed/Extent.java | 1 + MMTk/harness/vmmagic/org/vmmagic/unboxed/ObjectReference.java | 4 +- MMTk/harness/vmmagic/org/vmmagic/unboxed/Offset.java | 3 +- MMTk/harness/vmmagic/org/vmmagic/unboxed/Word.java | 5 +- MMTk/harness/vmmagic/org/vmmagic/unboxed/harness/Architecture.java | 6 + MMTk/harness/vmmagic/org/vmmagic/unboxed/harness/Clock.java | 8 +- MMTk/harness/vmmagic/org/vmmagic/unboxed/harness/PageTable.java | 2 +- MMTk/harness/vmmagic/org/vmmagic/unboxed/harness/SimulatedMemory.java | 4 - MMTk/harness/vmmagic/org/vmmagic/unboxed/harness/WordComparator.java | 3 - MMTk/src/org/mmtk/plan/CollectorContext.java | 19 +- MMTk/src/org/mmtk/plan/ComplexPhase.java | 6 +- MMTk/src/org/mmtk/plan/ConcurrentPhase.java | 6 +- MMTk/src/org/mmtk/plan/ControllerCollectorContext.java | 1 + MMTk/src/org/mmtk/plan/MutatorContext.java | 6 +- MMTk/src/org/mmtk/plan/ParallelCollector.java | 28 +- MMTk/src/org/mmtk/plan/ParallelCollectorGroup.java | 2 +- MMTk/src/org/mmtk/plan/Phase.java | 14 +- MMTk/src/org/mmtk/plan/Plan.java | 55 +- MMTk/src/org/mmtk/plan/PlanConstraints.java | 98 +- MMTk/src/org/mmtk/plan/Simple.java | 17 +- MMTk/src/org/mmtk/plan/SimpleCollector.java | 9 +- MMTk/src/org/mmtk/plan/SimpleMutator.java | 7 +- MMTk/src/org/mmtk/plan/SimplePhase.java | 5 +- MMTk/src/org/mmtk/plan/StopTheWorld.java | 8 +- MMTk/src/org/mmtk/plan/StopTheWorldCollector.java | 3 +- MMTk/src/org/mmtk/plan/TraceLocal.java | 45 +- MMTk/src/org/mmtk/plan/TraceWriteBuffer.java | 7 +- MMTk/src/org/mmtk/plan/concurrent/Concurrent.java | 36 +- MMTk/src/org/mmtk/plan/concurrent/ConcurrentCollector.java | 12 +- MMTk/src/org/mmtk/plan/concurrent/ConcurrentMutator.java | 49 +- MMTk/src/org/mmtk/plan/concurrent/marksweep/CMS.java | 25 +- MMTk/src/org/mmtk/plan/concurrent/marksweep/CMSCollector.java | 11 +- MMTk/src/org/mmtk/plan/concurrent/marksweep/CMSConstraints.java | 2 + MMTk/src/org/mmtk/plan/concurrent/marksweep/CMSMutator.java | 50 +- MMTk/src/org/mmtk/plan/concurrent/marksweep/CMSTraceLocal.java | 23 +- MMTk/src/org/mmtk/plan/copyms/CopyMS.java | 49 +- MMTk/src/org/mmtk/plan/copyms/CopyMSCollector.java | 28 +- MMTk/src/org/mmtk/plan/copyms/CopyMSMutator.java | 46 +- MMTk/src/org/mmtk/plan/copyms/CopyMSTraceLocal.java | 14 +- MMTk/src/org/mmtk/plan/generational/Gen.java | 97 +- MMTk/src/org/mmtk/plan/generational/GenCollector.java | 12 +- MMTk/src/org/mmtk/plan/generational/GenConstraints.java | 9 - MMTk/src/org/mmtk/plan/generational/GenMatureTraceLocal.java | 32 +- MMTk/src/org/mmtk/plan/generational/GenMutator.java | 101 +- MMTk/src/org/mmtk/plan/generational/GenNurseryTraceLocal.java | 29 +- MMTk/src/org/mmtk/plan/generational/copying/GenCopy.java | 39 +- MMTk/src/org/mmtk/plan/generational/copying/GenCopyCollector.java | 27 +- MMTk/src/org/mmtk/plan/generational/copying/GenCopyMatureTraceLocal.java | 19 +- MMTk/src/org/mmtk/plan/generational/copying/GenCopyMutator.java | 37 +- MMTk/src/org/mmtk/plan/generational/immix/GenImmix.java | 41 +- MMTk/src/org/mmtk/plan/generational/immix/GenImmixCollector.java | 30 +- MMTk/src/org/mmtk/plan/generational/immix/GenImmixConstraints.java | 1 - MMTk/src/org/mmtk/plan/generational/immix/GenImmixMatureDefragTraceLocal.java | 41 +- MMTk/src/org/mmtk/plan/generational/immix/GenImmixMatureTraceLocal.java | 39 +- MMTk/src/org/mmtk/plan/generational/immix/GenImmixMutator.java | 36 +- MMTk/src/org/mmtk/plan/generational/marksweep/GenMS.java | 31 +- MMTk/src/org/mmtk/plan/generational/marksweep/GenMSCollector.java | 24 +- MMTk/src/org/mmtk/plan/generational/marksweep/GenMSMatureTraceLocal.java | 31 +- MMTk/src/org/mmtk/plan/generational/marksweep/GenMSMutator.java | 40 +- MMTk/src/org/mmtk/plan/immix/Immix.java | 38 +- MMTk/src/org/mmtk/plan/immix/ImmixCollector.java | 33 +- MMTk/src/org/mmtk/plan/immix/ImmixConstraints.java | 6 - MMTk/src/org/mmtk/plan/immix/ImmixDefragTraceLocal.java | 31 +- MMTk/src/org/mmtk/plan/immix/ImmixMutator.java | 39 +- MMTk/src/org/mmtk/plan/immix/ImmixTraceLocal.java | 29 +- MMTk/src/org/mmtk/plan/markcompact/MC.java | 34 +- MMTk/src/org/mmtk/plan/markcompact/MCCollector.java | 13 +- MMTk/src/org/mmtk/plan/markcompact/MCForwardTraceLocal.java | 19 +- MMTk/src/org/mmtk/plan/markcompact/MCMarkTraceLocal.java | 19 +- MMTk/src/org/mmtk/plan/markcompact/MCMutator.java | 40 +- MMTk/src/org/mmtk/plan/marksweep/MS.java | 31 +- MMTk/src/org/mmtk/plan/marksweep/MSCollector.java | 10 +- MMTk/src/org/mmtk/plan/marksweep/MSMutator.java | 43 +- MMTk/src/org/mmtk/plan/marksweep/MSTraceLocal.java | 17 +- MMTk/src/org/mmtk/plan/nogc/NoGC.java | 21 +- MMTk/src/org/mmtk/plan/nogc/NoGCCollector.java | 11 +- MMTk/src/org/mmtk/plan/nogc/NoGCMutator.java | 36 +- MMTk/src/org/mmtk/plan/nogc/NoGCTraceLocal.java | 16 +- MMTk/src/org/mmtk/plan/poisoned/Poisoned.java | 22 +- MMTk/src/org/mmtk/plan/poisoned/PoisonedMutator.java | 42 +- MMTk/src/org/mmtk/plan/refcount/RCBase.java | 114 +- MMTk/src/org/mmtk/plan/refcount/RCBaseCollector.java | 132 +- MMTk/src/org/mmtk/plan/refcount/RCBaseConstraints.java | 5 + MMTk/src/org/mmtk/plan/refcount/RCBaseMutator.java | 124 +- MMTk/src/org/mmtk/plan/refcount/RCDecBuffer.java | 6 +- MMTk/src/org/mmtk/plan/refcount/RCHeader.java | 217 +- MMTk/src/org/mmtk/plan/refcount/RCZero.java | 7 +- MMTk/src/org/mmtk/plan/refcount/backuptrace/BTDecMarked.java | 51 - MMTk/src/org/mmtk/plan/refcount/backuptrace/BTDecMarkedAndZero.java | 52 - MMTk/src/org/mmtk/plan/refcount/backuptrace/BTFreeLargeObjectSweeper.java | 1 + MMTk/src/org/mmtk/plan/refcount/backuptrace/BTScanLargeObjectSweeper.java | 37 - MMTk/src/org/mmtk/plan/refcount/backuptrace/BTSweepImmortalScanner.java | 6 +- MMTk/src/org/mmtk/plan/refcount/backuptrace/BTSweeper.java | 5 +- MMTk/src/org/mmtk/plan/refcount/backuptrace/BTTraceLocal.java | 5 + MMTk/src/org/mmtk/plan/refcount/fullheap/RC.java | 6 +- MMTk/src/org/mmtk/plan/refcount/fullheap/RCCollector.java | 21 +- MMTk/src/org/mmtk/plan/refcount/fullheap/RCFindRootSetTraceLocal.java | 3 + MMTk/src/org/mmtk/plan/refcount/fullheap/RCModifiedProcessor.java | 23 +- MMTk/src/org/mmtk/plan/refcount/fullheap/RCMutator.java | 6 +- MMTk/src/org/mmtk/plan/refcount/generational/GenRC.java | 24 +- MMTk/src/org/mmtk/plan/refcount/generational/GenRCCollector.java | 37 +- MMTk/src/org/mmtk/plan/refcount/generational/GenRCConstraints.java | 2 + MMTk/src/org/mmtk/plan/refcount/generational/GenRCFindRootSetTraceLocal.java | 22 +- MMTk/src/org/mmtk/plan/refcount/generational/GenRCModifiedProcessor.java | 7 +- MMTk/src/org/mmtk/plan/refcount/generational/GenRCMutator.java | 40 +- MMTk/src/org/mmtk/plan/semispace/SS.java | 34 +- MMTk/src/org/mmtk/plan/semispace/SSCollector.java | 33 +- MMTk/src/org/mmtk/plan/semispace/SSMutator.java | 37 +- MMTk/src/org/mmtk/plan/semispace/SSTraceLocal.java | 21 +- MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspy.java | 22 +- MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspyCollector.java | 4 + MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspyMutator.java | 33 +- MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspyTraceLocal.java | 14 +- MMTk/src/org/mmtk/plan/semispace/gctrace/GCTrace.java | 29 +- MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceCollector.java | 8 +- MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceMutator.java | 52 +- MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceTraceLocal.java | 25 +- MMTk/src/org/mmtk/plan/semispace/usePrimitiveWriteBarriers/UsePrimitiveWriteBarriersConstraints.java | 40 +- MMTk/src/org/mmtk/plan/semispace/usePrimitiveWriteBarriers/UsePrimitiveWriteBarriersMutator.java | 284 +- MMTk/src/org/mmtk/plan/stickyimmix/StickyImmix.java | 51 +- MMTk/src/org/mmtk/plan/stickyimmix/StickyImmixCollector.java | 12 +- MMTk/src/org/mmtk/plan/stickyimmix/StickyImmixConstraints.java | 4 - MMTk/src/org/mmtk/plan/stickyimmix/StickyImmixMutator.java | 56 +- MMTk/src/org/mmtk/plan/stickyimmix/StickyImmixNurseryTraceLocal.java | 47 +- MMTk/src/org/mmtk/plan/stickyms/StickyMS.java | 46 +- MMTk/src/org/mmtk/plan/stickyms/StickyMSCollector.java | 10 +- MMTk/src/org/mmtk/plan/stickyms/StickyMSConstraints.java | 2 - MMTk/src/org/mmtk/plan/stickyms/StickyMSMutator.java | 65 +- MMTk/src/org/mmtk/plan/stickyms/StickyMSNurseryTraceLocal.java | 19 +- MMTk/src/org/mmtk/policy/BaseLargeObjectSpace.java | 24 +- MMTk/src/org/mmtk/policy/CopySpace.java | 31 +- MMTk/src/org/mmtk/policy/ExplicitFreeListLocal.java | 2 +- MMTk/src/org/mmtk/policy/ExplicitFreeListSpace.java | 30 +- MMTk/src/org/mmtk/policy/ExplicitLargeObjectSpace.java | 30 +- MMTk/src/org/mmtk/policy/ImmortalSpace.java | 18 +- MMTk/src/org/mmtk/policy/LargeObjectLocal.java | 4 +- MMTk/src/org/mmtk/policy/LargeObjectSpace.java | 54 +- MMTk/src/org/mmtk/policy/MarkCompactCollector.java | 18 +- MMTk/src/org/mmtk/policy/MarkCompactLocal.java | 5 - MMTk/src/org/mmtk/policy/MarkCompactSpace.java | 25 +- MMTk/src/org/mmtk/policy/MarkSweepSpace.java | 29 +- MMTk/src/org/mmtk/policy/RawPageSpace.java | 7 +- MMTk/src/org/mmtk/policy/SegregatedFreeListSpace.java | 31 +- MMTk/src/org/mmtk/policy/Space.java | 69 +- MMTk/src/org/mmtk/policy/immix/Block.java | 14 +- MMTk/src/org/mmtk/policy/immix/ChunkList.java | 12 +- MMTk/src/org/mmtk/policy/immix/CollectorLocal.java | 4 + MMTk/src/org/mmtk/policy/immix/Defrag.java | 4 +- MMTk/src/org/mmtk/policy/immix/ImmixConstants.java | 2 +- MMTk/src/org/mmtk/policy/immix/ImmixSpace.java | 66 +- MMTk/src/org/mmtk/policy/immix/Line.java | 9 + MMTk/src/org/mmtk/policy/immix/ObjectHeader.java | 34 +- MMTk/src/org/mmtk/utility/CallSite.java | 18 - MMTk/src/org/mmtk/utility/Constants.java | 20 + MMTk/src/org/mmtk/utility/DoublyLinkedList.java | 13 +- MMTk/src/org/mmtk/utility/ForwardingWord.java | 9 +- MMTk/src/org/mmtk/utility/GenericFreeList.java | 20 +- MMTk/src/org/mmtk/utility/HeaderByte.java | 4 +- MMTk/src/org/mmtk/utility/Log.java | 34 +- MMTk/src/org/mmtk/utility/Memory.java | 22 +- MMTk/src/org/mmtk/utility/SimpleHashtable.java | 8 +- MMTk/src/org/mmtk/utility/Synchronize.java | 22 - MMTk/src/org/mmtk/utility/TraceGenerator.java | 4 +- MMTk/src/org/mmtk/utility/Treadmill.java | 17 +- MMTk/src/org/mmtk/utility/alloc/Allocator.java | 4 +- MMTk/src/org/mmtk/utility/alloc/BlockAllocator.java | 6 +- MMTk/src/org/mmtk/utility/alloc/BumpPointer.java | 44 +- MMTk/src/org/mmtk/utility/alloc/DumpLinearScan.java | 6 +- MMTk/src/org/mmtk/utility/alloc/EmbeddedMetaData.java | 10 +- MMTk/src/org/mmtk/utility/alloc/ImmixAllocator.java | 31 +- MMTk/src/org/mmtk/utility/alloc/LargeObjectAllocator.java | 13 +- MMTk/src/org/mmtk/utility/alloc/SegregatedFreeList.java | 10 +- MMTk/src/org/mmtk/utility/alloc/SegregatedFreeListLocal.java | 7 +- MMTk/src/org/mmtk/utility/deque/AddressDeque.java | 8 +- MMTk/src/org/mmtk/utility/deque/AddressPairDeque.java | 2 +- MMTk/src/org/mmtk/utility/deque/AddressTripleDeque.java | 2 +- MMTk/src/org/mmtk/utility/deque/Deque.java | 7 + MMTk/src/org/mmtk/utility/deque/LocalDeque.java | 9 +- MMTk/src/org/mmtk/utility/deque/LocalQueue.java | 8 +- MMTk/src/org/mmtk/utility/deque/LocalSSB.java | 10 +- MMTk/src/org/mmtk/utility/deque/ObjectReferenceBuffer.java | 15 +- MMTk/src/org/mmtk/utility/deque/ObjectReferenceDeque.java | 6 +- MMTk/src/org/mmtk/utility/deque/SharedDeque.java | 2 +- MMTk/src/org/mmtk/utility/deque/SortSharedDeque.java | 6 +- MMTk/src/org/mmtk/utility/deque/SortTODAddressStack.java | 2 +- MMTk/src/org/mmtk/utility/deque/SortTODObjectReferenceStack.java | 2 +- MMTk/src/org/mmtk/utility/deque/SortTODSharedDeque.java | 7 +- MMTk/src/org/mmtk/utility/deque/TraceBuffer.java | 4 + MMTk/src/org/mmtk/utility/gcspy/Color.java | 6 +- MMTk/src/org/mmtk/utility/gcspy/GCspy.java | 6 + MMTk/src/org/mmtk/utility/gcspy/LinearScan.java | 1 + MMTk/src/org/mmtk/utility/gcspy/Subspace.java | 19 +- MMTk/src/org/mmtk/utility/gcspy/drivers/AbstractDriver.java | 13 +- MMTk/src/org/mmtk/utility/gcspy/drivers/GenImmortalSpaceDriver.java | 14 +- MMTk/src/org/mmtk/utility/gcspy/drivers/GenLOSDriver.java | 8 +- MMTk/src/org/mmtk/utility/gcspy/drivers/ImmortalSpaceDriver.java | 3 + MMTk/src/org/mmtk/utility/gcspy/drivers/LinearSpaceDriver.java | 31 +- MMTk/src/org/mmtk/utility/gcspy/drivers/TreadmillDriver.java | 13 +- MMTk/src/org/mmtk/utility/heap/ConcurrentZeroingContext.java | 1 + MMTk/src/org/mmtk/utility/heap/FreeListPageResource.java | 10 +- MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java | 4 +- MMTk/src/org/mmtk/utility/heap/Map.java | 30 +- MMTk/src/org/mmtk/utility/heap/Mmapper.java | 16 +- MMTk/src/org/mmtk/utility/heap/MonotonePageResource.java | 91 +- MMTk/src/org/mmtk/utility/heap/PageResource.java | 15 +- MMTk/src/org/mmtk/utility/heap/SpaceDescriptor.java | 7 +- MMTk/src/org/mmtk/utility/heap/VMRequest.java | 2 +- MMTk/src/org/mmtk/utility/options/BoundedNursery.java | 1 + MMTk/src/org/mmtk/utility/options/ConcurrentTrigger.java | 1 + MMTk/src/org/mmtk/utility/options/CycleTriggerThreshold.java | 2 +- MMTk/src/org/mmtk/utility/options/DefragFreeHeadroomFraction.java | 1 + MMTk/src/org/mmtk/utility/options/DefragHeadroomFraction.java | 1 + MMTk/src/org/mmtk/utility/options/DefragLineReuseRatio.java | 1 + MMTk/src/org/mmtk/utility/options/DefragSimpleSpillThreshold.java | 1 + MMTk/src/org/mmtk/utility/options/FixedNursery.java | 3 +- MMTk/src/org/mmtk/utility/options/GCspyPort.java | 1 + MMTk/src/org/mmtk/utility/options/GCspyTileSize.java | 1 + MMTk/src/org/mmtk/utility/options/LineReuseRatio.java | 1 + MMTk/src/org/mmtk/utility/options/MarkSweepMarkBits.java | 1 + MMTk/src/org/mmtk/utility/options/NurseryZeroing.java | 6 +- MMTk/src/org/mmtk/utility/options/Options.java | 1 + MMTk/src/org/mmtk/utility/options/PretenureThresholdFraction.java | 1 + MMTk/src/org/mmtk/utility/options/Threads.java | 2 + MMTk/src/org/mmtk/utility/options/TraceRate.java | 2 + MMTk/src/org/mmtk/utility/options/UseReturnBarrier.java | 24 + MMTk/src/org/mmtk/utility/options/Verbose.java | 1 + MMTk/src/org/mmtk/utility/options/XmlStats.java | 2 +- MMTk/src/org/mmtk/utility/sanitychecker/SanityChecker.java | 8 +- MMTk/src/org/mmtk/utility/sanitychecker/SanityCheckerLocal.java | 4 +- MMTk/src/org/mmtk/utility/sanitychecker/SanityLinearScan.java | 1 + MMTk/src/org/mmtk/utility/sanitychecker/SanityRootTraceLocal.java | 13 +- MMTk/src/org/mmtk/utility/sanitychecker/SanityTraceLocal.java | 13 +- MMTk/src/org/mmtk/utility/statistics/BooleanCounter.java | 51 +- MMTk/src/org/mmtk/utility/statistics/Counter.java | 13 +- MMTk/src/org/mmtk/utility/statistics/EventCounter.java | 53 +- MMTk/src/org/mmtk/utility/statistics/LongCounter.java | 49 +- MMTk/src/org/mmtk/utility/statistics/PerfEvent.java | 13 +- MMTk/src/org/mmtk/utility/statistics/SizeCounter.java | 6 +- MMTk/src/org/mmtk/utility/statistics/Stats.java | 6 +- MMTk/src/org/mmtk/utility/statistics/Timer.java | 2 + MMTk/src/org/mmtk/vm/Assert.java | 2 +- MMTk/src/org/mmtk/vm/Collection.java | 4 +- MMTk/src/org/mmtk/vm/Config.java | 2 +- MMTk/src/org/mmtk/vm/Debug.java | 2 +- MMTk/src/org/mmtk/vm/Factory.java | 4 +- MMTk/src/org/mmtk/vm/FinalizableProcessor.java | 2 +- MMTk/src/org/mmtk/vm/ObjectModel.java | 2 +- MMTk/src/org/mmtk/vm/ReferenceProcessor.java | 5 +- MMTk/src/org/mmtk/vm/Strings.java | 2 +- MMTk/src/org/mmtk/vm/TraceInterface.java | 13 +- MMTk/src/org/mmtk/vm/VM.java | 1 + MMTk/src/org/mmtk/vm/gcspy/ByteStream.java | 7 +- MMTk/src/org/mmtk/vm/gcspy/IntStream.java | 13 +- MMTk/src/org/mmtk/vm/gcspy/ServerInterpreter.java | 6 +- MMTk/src/org/mmtk/vm/gcspy/ServerSpace.java | 17 +- MMTk/src/org/mmtk/vm/gcspy/ShortStream.java | 10 +- MMTk/src/org/mmtk/vm/gcspy/Stream.java | 9 +- MMTk/src/org/mmtk/vm/gcspy/Util.java | 8 +- NEWS.txt | 36 + bin/buildit | 20 +- build.xml | 119 +- build/components/classpath.xml | 50 +- build/components/hamcrest.xml | 51 + build/components/junit.xml | 2 +- build/components/mockito.xml | 51 + build/components/patches/classpath-cvs.RVM-443.patch | 547 - build/components/patches/classpath-cvs.RVM-644.patch | 68 - build/components/patches/classpath-cvs.RVM-732.patch | 13 - build/components/patches/classpath-cvs.RVM-881.patch | 11 - build/components/patches/classpath-cvs.RVM-889-01.patch | 61 - build/components/patches/classpath-cvs.RVM-889-02.patch | 20 - build/components/patches/classpath-git.RVM-443.patch | 525 + build/components/patches/classpath-git.RVM-644.patch | 69 + build/components/patches/classpath-git.RVM-732.patch | 14 + build/components/patches/classpath-git.RVM-878.patch | 16 + build/components/patches/classpath-git.RVM-881.patch | 11 + build/components/patches/classpath-git.RVM-889-01.patch | 51 + build/components/patches/classpath-git.RVM-903.patch | 23623 ++++++++++ build/components/patches/classpath-web.RVM-1003.patch | 12 + build/eclipse/classpath.harmony.template | 5 + build/eclipse/classpath.template | 4 + build/hosts/ia32-cygwin.properties | 2 +- build/hosts/ia32-linux.properties | 2 +- build/hosts/ia32-osx.properties | 2 +- build/hosts/ia32-solaris.properties | 2 +- build/hosts/ppc32-aix.properties | 2 +- build/hosts/ppc32-linux.properties | 2 +- build/hosts/ppc32-osx.properties | 2 +- build/hosts/ppc64-aix.properties | 2 +- build/hosts/ppc64-linux.properties | 2 +- build/hosts/x86_64-linux.properties | 2 +- build/hosts/x86_64-osx.properties | 2 +- build/hosts/x86_64_m64-linux.properties | 2 +- build/targets/x86_64_m64-linux.properties | 2 +- build/test-runs/pre-commit.properties | 1 + common/options/src/org/vmutil/options/EnumOption.java | 2 +- common/options/src/org/vmutil/options/Option.java | 8 +- common/options/src/org/vmutil/options/OptionSet.java | 20 +- common/vmmagic/src/org/vmmagic/Pragma.java | 2 +- common/vmmagic/src/org/vmmagic/pragma/Interruptible.java | 4 +- common/vmmagic/src/org/vmmagic/pragma/LogicallyUninterruptible.java | 4 +- common/vmmagic/src/org/vmmagic/pragma/NativeBridge.java | 10 +- common/vmmagic/src/org/vmmagic/pragma/Preemptible.java | 4 +- common/vmmagic/src/org/vmmagic/pragma/RawStorage.java | 4 +- common/vmmagic/src/org/vmmagic/pragma/ReferenceFieldsVary.java | 2 +- common/vmmagic/src/org/vmmagic/pragma/SpecializedMethodInvoke.java | 2 +- common/vmmagic/src/org/vmmagic/pragma/Uninterruptible.java | 28 +- common/vmmagic/src/org/vmmagic/pragma/Unpreemptible.java | 21 +- common/vmmagic/src/org/vmmagic/pragma/Untraced.java | 2 +- common/vmmagic/src/org/vmmagic/unboxed/Address.java | 46 +- common/vmmagic/src/org/vmmagic/unboxed/ObjectReference.java | 2 +- external/tuningforklib/src/com/ibm/tuningfork/tracegen/chunk/Chunk.java | 2 + external/tuningforklib/src/com/ibm/tuningfork/tracegen/chunk/EventTypeChunk.java | 1 + external/tuningforklib/src/com/ibm/tuningfork/tracegen/chunk/FeedletChunk.java | 1 + external/tuningforklib/src/com/ibm/tuningfork/tracegen/chunk/PropertyTableChunk.java | 1 + external/tuningforklib/src/com/ibm/tuningfork/tracegen/chunk/StringTableChunk.java | 1 + external/tuningforklib/src/com/ibm/tuningfork/tracegen/types/EventTypeSpaceVersion.java | 1 + external/tuningforklib/src/com/ibm/tuningfork/tracegen/types/ScalarType.java | 1 + libraryInterface/Common/src/java/lang/Class.java | 6 + libraryInterface/Common/src/java/lang/ref/PhantomReference.java | 1 + libraryInterface/Common/src/java/lang/ref/Reference.java | 7 +- libraryInterface/Common/src/java/lang/reflect/VMCommonLibrarySupport.java | 11 +- libraryInterface/Common/src/sun/misc/Unsafe.java | 9 +- libraryInterface/GNUClasspath/EPL/src/gnu/classpath/VMStackWalker.java | 11 +- libraryInterface/GNUClasspath/EPL/src/gnu/classpath/VMSystemProperties.java | 12 +- libraryInterface/GNUClasspath/EPL/src/java/lang/VMFloat.java | 2 +- libraryInterface/GNUClasspath/EPL/src/java/lang/VMRuntime.java | 2 +- libraryInterface/GNUClasspath/EPL/src/java/lang/reflect/JikesRVMSupport.java | 3 +- libraryInterface/GNUClasspath/EPL/src/java/lang/reflect/VMConstructor.java | 3 +- libraryInterface/GNUClasspath/EPL/src/java/lang/reflect/VMField.java | 3 +- libraryInterface/GNUClasspath/EPL/src/java/lang/reflect/VMMethod.java | 3 +- libraryInterface/GNUClasspath/EPL/src/java/util/VMTimeZone.java | 15 +- libraryInterface/GNUClasspath/LGPL/src/gnu/java/nio/VMChannel.java | 3 + rvm/src-generated/ia32-assembler-opt/GenerateAssembler.java | 4 +- rvm/src-generated/ia32-assembler/Assembler.in | 4 +- rvm/src-generated/opt-burs/BURS_TreeNode.template | 1 + rvm/src-generated/opt-burs/ia32/IA32.rules | 5 + rvm/src-generated/opt-ir/Operator.template | 1 + rvm/src-generated/opt-scheduler/OperatorClass.template | 1 + rvm/src-generated/options/MasterOptions.template | 5 +- rvm/src-generated/vm-configuration/Configuration.template | 12 +- rvm/src/Dummy.java | 4 +- rvm/src/OptDummy.java | 6 +- rvm/src/org/jikesrvm/Callbacks.java | 5 + rvm/src/org/jikesrvm/CommandLineArgs.java | 45 +- rvm/src/org/jikesrvm/Constants.java | 7 +- rvm/src/org/jikesrvm/MachineSpecific.java | 3 +- rvm/src/org/jikesrvm/PrintContainer.java | 19 + rvm/src/org/jikesrvm/Properties.java | 14 +- rvm/src/org/jikesrvm/Services.java | 30 +- rvm/src/org/jikesrvm/VM.java | 119 +- rvm/src/org/jikesrvm/adaptive/OSROrganizerThread.java | 1 - rvm/src/org/jikesrvm/adaptive/OnStackReplacementEvent.java | 2 +- rvm/src/org/jikesrvm/adaptive/OnStackReplacementPlan.java | 7 +- rvm/src/org/jikesrvm/adaptive/controller/AINewHotEdgeEvent.java | 2 + rvm/src/org/jikesrvm/adaptive/controller/AnalyticModel.java | 13 +- rvm/src/org/jikesrvm/adaptive/controller/Controller.java | 10 +- rvm/src/org/jikesrvm/adaptive/controller/ControllerInputEvent.java | 2 +- rvm/src/org/jikesrvm/adaptive/controller/ControllerMemory.java | 19 +- rvm/src/org/jikesrvm/adaptive/controller/ControllerPlan.java | 44 +- rvm/src/org/jikesrvm/adaptive/controller/ControllerThread.java | 11 +- rvm/src/org/jikesrvm/adaptive/controller/HotMethodEvent.java | 1 + rvm/src/org/jikesrvm/adaptive/controller/HotMethodRecompilationEvent.java | 7 +- rvm/src/org/jikesrvm/adaptive/controller/MultiLevelAdaptiveModel.java | 10 +- rvm/src/org/jikesrvm/adaptive/controller/RecompilationChoice.java | 6 +- rvm/src/org/jikesrvm/adaptive/controller/RecompilationStrategy.java | 12 +- rvm/src/org/jikesrvm/adaptive/controller/RecompileOptChoice.java | 37 +- rvm/src/org/jikesrvm/adaptive/database/AOSDatabase.java | 4 +- rvm/src/org/jikesrvm/adaptive/database/callgraph/CallSite.java | 8 +- rvm/src/org/jikesrvm/adaptive/database/callgraph/PartialCallGraph.java | 14 +- rvm/src/org/jikesrvm/adaptive/database/callgraph/WeightedCallTargets.java | 18 +- rvm/src/org/jikesrvm/adaptive/database/methodsamples/MethodCountData.java | 2 + rvm/src/org/jikesrvm/adaptive/database/methodsamples/MethodCountSet.java | 9 +- rvm/src/org/jikesrvm/adaptive/measurements/Decayable.java | 1 - rvm/src/org/jikesrvm/adaptive/measurements/RuntimeMeasurements.java | 12 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/CounterArrayManager.java | 32 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/CounterNameFunction.java | 4 - rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/Instrumentation.java | 7 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/ManagedCounterData.java | 5 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/MethodInvocationCounterData.java | 13 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/MethodNameFunction.java | 6 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/StringEventCounterData.java | 12 +- rvm/src/org/jikesrvm/adaptive/measurements/instrumentation/YieldpointCounterData.java | 4 +- rvm/src/org/jikesrvm/adaptive/measurements/listeners/CallDensityListener.java | 11 +- rvm/src/org/jikesrvm/adaptive/measurements/listeners/ContextListener.java | 2 +- rvm/src/org/jikesrvm/adaptive/measurements/listeners/EdgeListener.java | 13 +- rvm/src/org/jikesrvm/adaptive/measurements/listeners/Listener.java | 14 +- rvm/src/org/jikesrvm/adaptive/measurements/listeners/MethodListener.java | 17 +- rvm/src/org/jikesrvm/adaptive/measurements/listeners/NullListener.java | 6 +- rvm/src/org/jikesrvm/adaptive/measurements/listeners/YieldCounter... [truncated message content] |
From: <jik...@li...> - 2013-02-20 19:08:03
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/63efa1528aeb changeset: 10598:63efa1528aeb user: Erik Brangs <eri...@gm...> date: Wed Feb 20 16:48:18 2013 +0100 description: Correct whitespace for PPC_SRWI and PPC_SRWIr operators in the common operator list for PowerPC. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/e6fab50149e5 changeset: 10599:e6fab50149e5 user: Erik Brangs <eri...@gm...> date: Wed Feb 20 17:19:03 2013 +0100 description: RVM-1016 : Correct the templates for the PPC_ORC and PPC_ORCr operators. The templates were missing required shift operations. They used 412 (instead of the correct 412<<1) which caused the optimizing compiler to generate invalid machine instructions for the PPC_ORC and PPC_ORCr operators. diffstat: rvm/src-generated/opt-ir/ppc/OperatorList_Common.dat | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diffs (39 lines): diff --git a/rvm/src-generated/opt-ir/ppc/OperatorList_Common.dat b/rvm/src-generated/opt-ir/ppc/OperatorList_Common.dat --- a/rvm/src-generated/opt-ir/ppc/OperatorList_Common.dat +++ b/rvm/src-generated/opt-ir/ppc/OperatorList_Common.dat @@ -436,7 +436,7 @@ none -(31<<26 | 412) +(31<<26 | 412<<1) #################### PPC_ORCr @@ -444,7 +444,7 @@ compare C0 -(31<<26 | 412 | 1) +(31<<26 | 412<<1 | 1) #################### PPC_XOR @@ -604,7 +604,7 @@ none XER -(21<<26 | 31<<1) +(21<<26 | 31<<1) #################### PPC_SRWIr @@ -612,7 +612,7 @@ compare C0_XER -(21<<26 | 31<<1 | 1) +(21<<26 | 31<<1 | 1) #################### PPC_SRAW |
From: <jik...@li...> - 2013-03-22 18:17:30
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/8fd8bffed9d4 changeset: 10605:8fd8bffed9d4 user: Erik Brangs <eri...@gm...> date: Fri Mar 22 18:56:09 2013 +0100 description: Fix Checkstyle failures in MMTk and JNI tests. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/952cf72a5ff0 changeset: 10606:952cf72a5ff0 user: Erik Brangs <eri...@gm...> date: Fri Mar 22 18:57:58 2013 +0100 description: Add the testing/ directory to the set of directories checked by the checkstyle target. diffstat: build.xml | 1 + testing/tests/jni/src/TestNestedGC.java | 4 ---- testing/tests/mmtk/src/org/mmtk/utility/deque/ObjectReferenceDequeTest.java | 2 -- 3 files changed, 1 insertions(+), 6 deletions(-) diffs (37 lines): diff --git a/build.xml b/build.xml --- a/build.xml +++ b/build.xml @@ -2196,6 +2196,7 @@ <fileset dir="rvm/src" includes="**/*.java"/> <fileset dir="rvm/src-generated" includes="**/*.java"/> <fileset dir="${test.java}" includes="**/*.java"/> + <fileset dir="testing" includes="**/*.java"/> <fileset dir="MMTk" includes="**/*.java" excludes="harness/src-generated/**/*.java"/> <fileset dir="common/vmmagic" includes="**/*.java"/> <fileset dir="common/options" includes="**/*.java"/> diff --git a/testing/tests/jni/src/TestNestedGC.java b/testing/tests/jni/src/TestNestedGC.java --- a/testing/tests/jni/src/TestNestedGC.java +++ b/testing/tests/jni/src/TestNestedGC.java @@ -11,10 +11,6 @@ * regarding copyright ownership. */ -import org.jikesrvm.VM; -import org.jikesrvm.runtime.Magic; -import org.vmmagic.unboxed.Address; - /** * Test GC with nested Native and Java frames on stack */ diff --git a/testing/tests/mmtk/src/org/mmtk/utility/deque/ObjectReferenceDequeTest.java b/testing/tests/mmtk/src/org/mmtk/utility/deque/ObjectReferenceDequeTest.java --- a/testing/tests/mmtk/src/org/mmtk/utility/deque/ObjectReferenceDequeTest.java +++ b/testing/tests/mmtk/src/org/mmtk/utility/deque/ObjectReferenceDequeTest.java @@ -16,8 +16,6 @@ import org.junit.Test; import org.junit.Assert; import org.mmtk.harness.Harness; -import org.mmtk.harness.lang.Env; -import org.mmtk.harness.scheduler.Schedulable; import org.mmtk.harness.scheduler.Scheduler; import org.mmtk.plan.CollectorContext; import org.mmtk.plan.Plan; |
From: <jik...@li...> - 2013-03-23 11:46:07
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/ede7361935cc changeset: 10607:ede7361935cc user: Erik Brangs <eri...@gm...> date: Sat Mar 23 12:29:45 2013 +0100 description: RVM-1023 : Add a package-level comment for the org.jikesrvm.annotations package. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/fa5c501ad116 changeset: 10608:fa5c501ad116 user: Erik Brangs <eri...@gm...> date: Sat Mar 23 12:30:05 2013 +0100 description: RVM-1023 : Add a package-level comment for the org.jikesrvm.classloader package. diffstat: rvm/src/org/jikesrvm/annotations/package-info.java | 20 +++++++++++++++++++ rvm/src/org/jikesrvm/classloader/package-info.java | 23 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 0 deletions(-) diffs (53 lines): diff --git a/rvm/src/org/jikesrvm/annotations/package-info.java b/rvm/src/org/jikesrvm/annotations/package-info.java new file mode 100644 --- /dev/null +++ b/rvm/src/org/jikesrvm/annotations/package-info.java @@ -0,0 +1,20 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Eclipse Public License (EPL); + * You may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.opensource.org/licenses/eclipse-1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ + +/** + * Provides classes that are used during the build process to generate + * implementations for methods in {@link org.jikesrvm.runtime.SysCall}.<p> + * + * This code is not needed at runtime and will not be contained in the bootimage. + */ +package org.jikesrvm.annotations; diff --git a/rvm/src/org/jikesrvm/classloader/package-info.java b/rvm/src/org/jikesrvm/classloader/package-info.java new file mode 100644 --- /dev/null +++ b/rvm/src/org/jikesrvm/classloader/package-info.java @@ -0,0 +1,23 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Eclipse Public License (EPL); + * You may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.opensource.org/licenses/eclipse-1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ + +/** + * Provides classes that implement the classloading system as well as + * data types that represent Java entities like classes, fields, methods + * and primitives.<p> + * + * Code in the classloading subsystem must be carefully written not to cause + * dynamic classloading during the boot of the VM. This means that all necessary + * classes must be contained in the bootimage. + */ +package org.jikesrvm.classloader; |
From: <jik...@li...> - 2013-03-23 14:33:50
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/07fa6bcc3aa2 changeset: 10609:07fa6bcc3aa2 user: Erik Brangs <eri...@gm...> date: Sat Mar 23 14:30:01 2013 +0100 description: Add a test for RVMClass.addSubClass. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/eedbd95b29c9 changeset: 10610:eedbd95b29c9 user: Erik Brangs <eri...@gm...> date: Sat Mar 23 14:35:47 2013 +0100 description: Change addSubClass(..) in RVMClass to use System.arraycopy(...). diffstat: rvm/src/org/jikesrvm/classloader/RVMClass.java | 6 +- rvm/test-src/org/jikesrvm/classloader/RVMClassTest.java | 74 +++++++++++++++++ 2 files changed, 75 insertions(+), 5 deletions(-) diffs (96 lines): diff --git a/rvm/src/org/jikesrvm/classloader/RVMClass.java b/rvm/src/org/jikesrvm/classloader/RVMClass.java --- a/rvm/src/org/jikesrvm/classloader/RVMClass.java +++ b/rvm/src/org/jikesrvm/classloader/RVMClass.java @@ -1641,12 +1641,8 @@ private synchronized void addSubClass(RVMClass sub) { int n = subClasses.length; RVMClass[] tmp = new RVMClass[n + 1]; - - for (int i = 0; i < n; ++i) { - tmp[i] = subClasses[i]; - } + System.arraycopy(subClasses, 0, tmp, 0, n); tmp[n] = sub; - subClasses = tmp; } diff --git a/rvm/test-src/org/jikesrvm/classloader/RVMClassTest.java b/rvm/test-src/org/jikesrvm/classloader/RVMClassTest.java new file mode 100644 --- /dev/null +++ b/rvm/test-src/org/jikesrvm/classloader/RVMClassTest.java @@ -0,0 +1,74 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Eclipse Public License (EPL); + * You may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.opensource.org/licenses/eclipse-1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ +package org.jikesrvm.classloader; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.*; +import static org.jikesrvm.classloader.ClassLoaderConstants.*; + +import java.util.Arrays; +import java.util.List; + +import org.jikesrvm.junit.runners.RequiresJikesRVM; +import org.jikesrvm.junit.runners.VMRequirements; +import org.jikesrvm.runtime.RuntimeEntrypoints; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; + +@RunWith(VMRequirements.class) +@Category(RequiresJikesRVM.class) +public class RVMClassTest { + + @Test + public void testAdditionOfSubclasses() throws ClassNotFoundException { + String topClassName = "ClassForRVMClassTest"; + RVMClass javaLangObject = JikesRVMSupport.getTypeForClass(Class.forName("java.lang.Object")).asClass(); + RVMClass topClass = createRVMClass(topClassName, javaLangObject); + assertThat(topClass.getSubClasses().length, is(0)); + + String firstSubClassName = topClassName + "SubclassOne"; + RVMClass firstSubClass = createRVMClass(firstSubClassName, topClass); + assertThat(firstSubClass.getSuperClass(), is(topClass)); + + String secondSubClassName = topClassName + "SubclassTwo"; + RVMClass secondSubClass = createRVMClass(secondSubClassName, topClass); + assertThat(secondSubClass.getSuperClass(), is(topClass)); + + RVMClass[] subClasses = topClass.getSubClasses(); + List<RVMClass> subClassesList = Arrays.asList(subClasses); + assertTrue(subClassesList.contains(firstSubClass)); + assertTrue(subClassesList.contains(secondSubClass)); + assertThat(subClassesList.size(), is(2)); + } + + private RVMClass createRVMClass(String className, RVMClass superClass) + throws ClassNotFoundException { + TypeReference tRef = TypeReference.findOrCreate(className); + int[] constantPool = new int[0]; + short modifiers = ACC_SYNTHETIC | ACC_PUBLIC; + RVMClass[] declaredInterfaces = new RVMClass[0]; + RVMField[] declaredFields = new RVMField[0]; + RVMMethod[] declaredMethods = new RVMMethod[0]; + RVMClass klass = + new RVMClass(tRef, constantPool, modifiers, + superClass, + declaredInterfaces, + declaredFields, declaredMethods, + null, null, null, null, null, null, null, null); + tRef.setType(klass); + RuntimeEntrypoints.initializeClassForDynamicLink(klass); + return klass; + } + +} |
From: <jik...@li...> - 2013-03-24 15:29:31
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/8006a1187f5f changeset: 10615:8006a1187f5f user: Erik Brangs <eri...@gm...> date: Sun Mar 24 15:50:58 2013 +0100 description: Add a unit test for org.jikesrvm.classloader.FieldVector. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/0e0d1551ec7f changeset: 10616:0e0d1551ec7f user: Erik Brangs <eri...@gm...> date: Sun Mar 24 16:19:14 2013 +0100 description: Merge with default at 8006a1187f5f6362f87de059c88172aa097d73d8 (no additional changes). diffstat: bin/buildit | 5 + build.xml | 285 +- build/components/openjdk.xml | 76 + build/eclipse/classpath.openjdk.template | 44 + build/primordials/OpenJDK.linux.txt | 277 + build/primordials/OpenJDK.osx.txt | 277 + include/jni.h | 3 + libraryInterface/Common/src/java/lang/Class.java | 40 + libraryInterface/Common/src/sun/misc/Unsafe.java | 125 +- libraryInterface/OpenJDK/ASF/src/java/lang/ClassLoader.java | 1122 +++ libraryInterface/OpenJDK/ASF/src/java/lang/Runtime.java | 602 + libraryInterface/OpenJDK/ASF/src/java/lang/System.java | 623 + libraryInterface/OpenJDK/ASF/src/java/lang/Throwable.java | 445 + libraryInterface/OpenJDK/ASF/src/java/lang/ref/ReferenceQueue.java | 88 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/AccessibleObject.java | 295 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Array.java | 682 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Constructor.java | 358 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Field.java | 761 ++ libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Method.java | 403 + libraryInterface/OpenJDK/EPL/src/java/lang/JikesRVMHelpers.java | 36 + libraryInterface/OpenJDK/EPL/src/java/lang/JikesRVMSupport.java | 134 + libraryInterface/OpenJDK/EPL/src/java/lang/VMStackWalker.java | 176 + libraryInterface/OpenJDK/EPL/src/java/lang/reflect/JikesRVMSupport.java | 65 + libraryInterface/OpenJDK/EPL/src/java/nio/JikesRVMSupport.java | 42 + libraryInterface/OpenJDK/GPL/src/java/io/BufferedInputStream.java | 479 + libraryInterface/OpenJDK/GPL/src/java/io/FileInputStream.java | 414 + libraryInterface/OpenJDK/GPL/src/java/lang/Enum.java | 238 + libraryInterface/OpenJDK/GPL/src/java/lang/String.java | 3024 ++++++++ libraryInterface/OpenJDK/GPL/src/java/lang/Thread.java | 1999 +++++ libraryInterface/OpenJDK/GPL/src/java/lang/ThreadGroup.java | 1034 ++ libraryInterface/OpenJDK/GPL/src/java/nio/DirectByteBuffer.java | 991 ++ libraryInterface/OpenJDK/GPL/src/java/security/AccessController.java | 591 + libraryInterface/OpenJDK/GPL/src/java/sql/SQLException.java | 375 + libraryInterface/OpenJDK/GPL/src/java/util/Currency.java | 733 ++ libraryInterface/OpenJDK/GPL/src/java/util/ResourceBundle.java | 2751 +++++++ libraryInterface/OpenJDK/GPL/src/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java | 309 + libraryInterface/OpenJDK/GPL/src/java/util/zip/ZipFile.java | 527 + libraryInterface/OpenJDK/GPL/src/sun/java2d/cmm/CMSManager.java | 165 + libraryInterface/OpenJDK/GPL/src/sun/misc/VM.java | 367 + libraryInterface/OpenJDK/GPL/src/sun/reflect/Reflection.java | 340 + rvm/src-generated/vm-configuration/Configuration.template | 1 + rvm/src/org/jikesrvm/VM.java | 112 +- rvm/src/org/jikesrvm/classloader/RVMClass.java | 3 + rvm/src/org/jikesrvm/compilers/baseline/BuildBB.java | 2 +- rvm/src/org/jikesrvm/jni/JNIFunctions.java | 16 +- rvm/src/org/jikesrvm/runtime/DynamicLibrary.java | 2 +- rvm/src/org/jikesrvm/runtime/RuntimeEntrypoints.java | 9 +- rvm/src/org/jikesrvm/scheduler/RVMThread.java | 3 + rvm/test-src/org/jikesrvm/classloader/FieldVectorTest.java | 92 + rvm/test-src/org/jikesrvm/tests/util/TestingTools.java | 6 + tools/asm-tasks/src/org/jikesrvm/tools/asm/AnnotationAdder.java | 2 + tools/bootImageRunner/rvm.openjdk | 74 + tools/bootImageRunner/sys.C | 1506 ++++- tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/BootImageWriter.java | 45 +- tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/BuildJNIFunctionTable.java | 5 + tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/bootimagewrite_Copy | 3613 ++++++++++ 56 files changed, 26737 insertions(+), 55 deletions(-) diffs (truncated from 27700 to 300 lines): diff --git a/bin/buildit b/bin/buildit --- a/bin/buildit +++ b/bin/buildit @@ -95,6 +95,7 @@ --comp-cache-dir Specify a cache location for component downloads --clear-cc Clear out the component caches --harmony Build with harmony (instead of classpath) + --openjdk Build with OpenJDK libraries (instead of classpath) Testing Options: -t, --test Specify a test to run (overriden by --test-run) @@ -173,6 +174,7 @@ "h|help" => \$help, "x87" => \$x87, "harmony" => \$harmony, + "openjdk" => \$openjdk, "j|java-home=s" => \$javaHomeCmd, "ext-lib-dir=s" => \$extlibdir, "comp-cache-dir=s" => \$compcachedir, @@ -678,6 +680,9 @@ if ($harmony ne "") { $defs .= "-Dclasslib.provider=Harmony "; } + if ($openjdk ne "") { + $defs .= "-Dclasslib.provider=OpenJDK "; + } if ($with_perfevent ne "") { $defs .= "-Dconfig.include.perfevent=true "; } diff --git a/build.xml b/build.xml --- a/build.xml +++ b/build.xml @@ -93,10 +93,16 @@ <property name="dist.base" location="${dist.dir}/${build.name}"/> <!-- Set the class library to use --> - <property name="classlib.provider" value="GNU Classpath"/> + <!-- <property name="classlib.provider" value="GNU Classpath"/> --> + <property name="classlib.provider" value="OpenJDK"/> <condition property="harmony.classlib" value="true"> <equals arg1="${classlib.provider}" arg2="Harmony"/> </condition> + + <condition property="openjdk.classlib" value="true"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <condition property="classpath.classlib" value="true"> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> @@ -166,11 +172,12 @@ </target> <target name="check-classlibrary-properties"> - <fail message="Cannot have both Harmony and Classpath class libraries"> + <fail message="Cannot have both Harmony, OpenJDK, and Classpath class libraries"> <condition> <and> <isset property="harmony.classlib"/> <isset property="classpath.classlib"/> + <isset property="openjdk.classlib"/> </and> </condition> </fail> @@ -180,6 +187,7 @@ <or> <equals arg1="${classlib.provider}" arg2="Harmony"/> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> </or> </not> </condition> @@ -190,6 +198,7 @@ <or> <isset property="harmony.classlib"/> <isset property="classpath.classlib"/> + <isset property="openjdk.classlib"/> </or> </not> </condition> @@ -212,6 +221,13 @@ <property name="build.extra.rt.jars" value=":${harmony.lib.dir}/yoko-rmi-impl.jar:${harmony.lib.dir}/instrument.jar:${harmony.lib.dir}/beans.jar:${harmony.lib.dir}/xml-apis.jar:${harmony.lib.dir}/mx4j.jar:${harmony.lib.dir}/nio.jar:${harmony.lib.dir}/xalan.jar:${harmony.lib.dir}/resolver.jar:${harmony.lib.dir}/logging.jar:${harmony.lib.dir}/bcprov.jar:${harmony.lib.dir}/security.jar:${harmony.lib.dir}/sql.jar:${harmony.lib.dir}/print.jar:${harmony.lib.dir}/mx4j-remote.jar:${harmony.lib.dir}/concurrent.jar:${harmony.lib.dir}/luni-kernel-stubs.jar:${harmony.lib.dir}/misc.jar:${harmony.lib.dir}/accessibility.jar:${harmony.lib.dir}/crypto.jar:${harmony.lib.dir}/yoko.jar:${harmony.lib.dir}/rmi.jar:${harmony.lib.dir}/security-kernel-stubs.jar:${harmony.lib.dir}/x-net.jar:${harmony.lib.dir}/icu4j-charsets-4_0.jar:${harmony.lib.dir}/imageio.jar:${harmony.lib.dir}/nio_char.jar:${harmony.lib.dir}/lang-management.jar:${harmony.lib.dir}/regex.jar:${harmony.lib.dir}/applet.jar:${harmony.lib.dir}/prefs.jar:${harmony.lib.dir}/annotation.jar:${harmony.lib.dir}/math.jar:${harmony.lib.dir}/luni.jar:${harmony.lib.dir}/archive.jar:${harmony.lib.dir}/awt.jar:${harmony.lib.dir}/nio_char-src.jar:${harmony.lib.dir}/xercesImpl.jar:${harmony.lib.dir}/yoko-rmi-spec.jar:${harmony.lib.dir}/swing.jar:${harmony.lib.dir}/auth.jar:${harmony.lib.dir}/yoko-core.jar:${harmony.lib.dir}/text.jar:${harmony.lib.dir}/jndi.jar:${harmony.lib.dir}/suncompat.jar:${harmony.lib.dir}/sound.jar:${harmony.lib.dir}/icu4j-4_0.jar:${harmony.lib.dir}/bcel-5.2.jar"/> </target> + <target name="check-openjdk-properties" depends="check-components-properties,check-classlibrary-properties" if="openjdk.classlib"> + <propertycopy name="openjdk.lib.dir" from="${target.name}.openjdk.lib.dir"/> + <test-file name="openjdk.lib.dir" location="${components.file}"/> + <property name="config.portable-native-sync" value="false"/> + <property name="build.extra.rt.jars" value=""/> + </target> + <target name="check-mmtk-properties" depends="check-host-name"> <available property="mmtk_properties_present" file="${mmtk.properties}"/> <fail unless="mmtk_properties_present"> @@ -280,7 +296,15 @@ <ant antfile="build/components/harmony.xml" target="ensure"/> </sequential> </if> - <if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <ant antfile="build/components/openjdk.xml" target="ensure"/> + </sequential> + </if> + <if> <conditions> <equals arg1="${config.with-profile}" arg2="true"/> </conditions> @@ -338,7 +362,7 @@ * component properties for classpath, gcspy etc. --> <target name="check-properties" - depends="check-host-properties,check-config-properties,check-target-properties,check-classlibrary-properties,check-classpath-properties,check-harmony-properties,check-gcspy-properties,check-mmtk-properties" + depends="check-host-properties,check-config-properties,check-target-properties,check-classlibrary-properties,check-classpath-properties,check-harmony-properties,check-openjdk-properties,check-gcspy-properties,check-mmtk-properties" description="Check that all required properties are specified."> <!-- setup properties for start of build. --> @@ -393,6 +417,10 @@ <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="classlib.filter" value="-DRVM_FOR_OPENJDK=1"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <condition property="gctrace.filter" value="-DRVM_WITH_GCTRACE=1" else=""> <equals arg1="${config.mmtk.plan}" arg2="org.mmtk.plan.semispace.gctrace.GCTrace"/> </condition> @@ -1024,6 +1052,9 @@ <condition property="pp_RVM_WITH_GNU_CLASSPATH" value="true" else="false"> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="pp_RVM_WITH_OPENJDK" value="true" else="false"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> <copy file="${basedir}/rvm/src-generated/vm-configuration/Configuration.template" tofile="${generated.config.java}/org/jikesrvm/Configuration.java"> @@ -1052,6 +1083,7 @@ <filter token="_PORTABLE_NATIVE_SYNC_" value="${config.portable-native-sync}"/> <filter token="_RVM_WITH_HARMONY_" value="${pp_RVM_WITH_HARMONY}"/> <filter token="_RVM_WITH_GNU_CLASSPATH_" value="${pp_RVM_WITH_GNU_CLASSPATH}"/> + <filter token="_RVM_WITH_OPENJDK_" value="${pp_RVM_WITH_OPENJDK}"/> </filterset> </copy> @@ -1159,10 +1191,21 @@ <property name="classlib.library-interface.non-cpl.java" location="libraryInterface/Harmony/ASF/src"/> </sequential> </if> + + <!--added by Xi Yang--> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <property name="classlib.library-interface.cpl.java" location="libraryInterface/OpenJDK/EPL/src"/> + <property name="classlib.library-interface.non-cpl.java" location="libraryInterface/OpenJDK/ASF/src"/> + <property name="classlib.library-interface.non-cpl2.java" location="libraryInterface/OpenJDK/GPL/src"/> + </sequential> + </if> </target> <target name="compile" depends="compile-mmtk,compile-options,prepare-source,prepare-config-source,choose-classlib,do-checkstyle"> - <condition property="exclude-arch" value="IA" else="PPC"> <equals arg1="${target.arch}" arg2="ppc"/> </condition> @@ -1261,6 +1304,42 @@ </sequential> </if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <javac destdir="${build.classes}" + debug="true" + fork="true" + memoryMaximumSize="500M" + debugLevel="lines,source" + source="${rvm.java.version}" + target="${rvm.java.version}" + srcdir="${main.java}:${classlib.library-interface.common.java}:${classlib.library-interface.cpl.java}:${classlib.library-interface.non-cpl.java}:${classlib.library-interface.non-cpl2.java}:${mmtk-vm-rvm.java}:${tuningforklib.java}" + sourcepath="${mmtk.java}:${options.java}:${generated.java}:${generated.config.java}:${generated.arch.java}:${main.java}:${mmtk-vm-rvm.java}:${tuningforklib.java}" + includeantruntime="false"> + <bootclasspath> + <pathelement location="${openjdk.lib.dir}/rt.jar"/> + </bootclasspath> + <classpath> + <pathelement location="${build.vmmagic-stub.classes}"/> + </classpath> + <include name="Dummy.java"/> + <include name="OptDummy.java"/> + <include name="org/apache/**/*.java"/> + <include name="sun/**/*.java"/> + <include name="java/**/*.java"/> + <include name="${arch-helper-class}"/> + <include name="com/ibm/tuningfork/**/*.java"/> + <include name="org/jikesrvm/mm/mmtk/**/*.java"/> + <include name="org/jikesrvm/tools/oth/OptTestHarness.java"/> + <include name="org/jikesrvm/tools/header_gen/GenArch_${target.arch}.java"/> + <exclude name="org/jikesrvm/tools/header_gen.GenerateInterfaceDeclarations.java"/> + </javac> + </sequential> + </if> + <mkdir dir="${build.base}/syscall/java"/> <javac srcDir="${syscall.dir}" @@ -1380,7 +1459,7 @@ </javac> </target> - <target name="package" depends="bootstrap-unit-tests,compile-vmmagic,package-classpath,package-harmony"/> + <target name="package" depends="bootstrap-unit-tests,compile-vmmagic,package-classpath,package-harmony,package-openjdk"/> <target name="package-harmony" if="harmony.classlib"> <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> @@ -1401,6 +1480,30 @@ </jar> </target> + <target name="package-openjdk" if="openjdk.classlib"> + <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> + <include name="java/**"/> + <include name="sun/**"/> + <!--no gnu now <include name="gnu/**"/> --> + <!-- Xi Yang <zipfileset src="${classpath.lib.dir}/classpath.jar"/> --> + <zipfileset src="${openjdk.lib.dir}/rt.jar"/> + <zipfileset src="${openjdk.lib.dir}/jsse.jar"/> + </zip> + <jar destfile="${build.vm.jar}" update="true" compress="false"> + <fileset dir="${build.classes}"> + <exclude name="java/**"/> + <exclude name="sun/**"/> + <!-- no gnu now <exclude name="gnu/**"/> --> + </fileset> + <fileset dir="${build.vmmagic-stub.classes}"> + <include name="org/vmmagic/pragma/**"/> + <include name="org/vmmagic/*"/> + </fileset> + <fileset dir="${build.vmmagic.classes}"/> + <fileset dir="${build.options.classes}"/> + </jar> + </target> + <target name="package-classpath" if="classpath.classlib"> <!-- create a rt.jar for the RVM --> <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> @@ -1499,6 +1602,11 @@ <condition property="primordials.arch" value=",RVM_PPC.txt" else=",RVM_IA32.txt"> <equals arg1="${target.arch}" arg2="ppc"/> </condition> + <condition property="primordials.openjdk" + value="OpenJDK.osx.txt" + else="OpenJDK.linux.txt"> + <os family="mac"/> + </condition> <if> <conditions> @@ -1526,6 +1634,19 @@ </sequential> </if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <concat destfile="${build.base}/Primordials.txt"> + <filelist dir="${build.base}" files="ClassesForImage.txt"/> + <filelist dir="${primordials.dir}" + files="${primordials.openjdk},RVM.txt${primordials.opt}${primordials.aos}${primordials.arch}"/> + </concat> + </sequential> + </if> + <replaceregexp file="${build.base}/Primordials.txt" match=".*#.*" replace="" byline="true"/> </target> @@ -1561,6 +1682,10 @@ <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="bootimage.classlib" value="OpenJDK"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <echo message="Building bootimage. Output redirected to : ${build.base}/BootImageWriterOutput.txt"/> <echo message="MMTk properties = ${mmtk.properties}"/> <java classname="org.jikesrvm.tools.bootImageWriter.BootImageWriter" @@ -1578,6 +1703,7 @@ <sysproperty key="mmtk.properties" value="${mmtk.properties}"/> |
From: <jik...@li...> - 2013-04-19 04:28:03
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/ea90b048731d changeset: 10622:ea90b048731d user: Robin Garner <rob...@sc...> date: Tue Apr 16 17:50:46 2013 +1000 description: RVM-1026, Ugawa Tomoharu's patch to prevent additional spaces being created after the map is finalized details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/1f351f504852 changeset: 10623:1f351f504852 user: Robin Garner <rob...@sc...> date: Fri Apr 19 14:25:22 2013 +1000 description: RVM-1022, start each allocate-collect loop with a clean slate, to allow each OutOfMemory exception to free up some memory. diffstat: MMTk/src/org/mmtk/policy/Space.java | 1 + MMTk/src/org/mmtk/utility/alloc/Allocator.java | 2 +- MMTk/src/org/mmtk/utility/heap/Map.java | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletions(-) diffs (48 lines): diff --git a/MMTk/src/org/mmtk/policy/Space.java b/MMTk/src/org/mmtk/policy/Space.java --- a/MMTk/src/org/mmtk/policy/Space.java +++ b/MMTk/src/org/mmtk/policy/Space.java @@ -165,6 +165,7 @@ VM.assertions.fail(name + " starting on non-aligned boundary: " + start.toLong() + " bytes"); } } else if (vmRequest.top) { + if (Map.isFinalized()) VM.assertions.fail("heap is narrowed after regionMap is finalized: "+ name); heapLimit = heapLimit.minus(extent); start = heapLimit; } else { diff --git a/MMTk/src/org/mmtk/utility/alloc/Allocator.java b/MMTk/src/org/mmtk/utility/alloc/Allocator.java --- a/MMTk/src/org/mmtk/utility/alloc/Allocator.java +++ b/MMTk/src/org/mmtk/utility/alloc/Allocator.java @@ -255,7 +255,7 @@ Space space = current.getSpace(); // Information about the previous collection. - boolean emergencyCollection = Plan.isEmergencyCollection(); + boolean emergencyCollection = false; while (true) { // Try to allocate using the slow path Address result = current.allocSlowOnce(bytes, alignment, offset); diff --git a/MMTk/src/org/mmtk/utility/heap/Map.java b/MMTk/src/org/mmtk/utility/heap/Map.java --- a/MMTk/src/org/mmtk/utility/heap/Map.java +++ b/MMTk/src/org/mmtk/utility/heap/Map.java @@ -53,6 +53,8 @@ private static final FreeListPageResource[] sharedFLMap; private static int totalAvailableDiscontiguousChunks = 0; + private static boolean finalized = false; + private static final Lock lock = VM.newLock("Map lock"); /**************************************************************************** @@ -276,6 +278,12 @@ if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(allocedPages == firstPage); firstPage += Space.PAGES_IN_CHUNK; } + + finalized = true; + } + + public static boolean isFinalized() { + return finalized; } /** |
From: <jik...@li...> - 2013-05-22 20:06:37
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/aece7c8436dc changeset: 10634:aece7c8436dc user: Erik Brangs <eri...@gm...> date: Wed May 22 20:27:35 2013 +0200 description: Unify style of comments between methods in org.jikesrvm.runtime.Magic and add a comment for magic methods that are evaluated at compile time. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/0a5910e585d1 changeset: 10635:0a5910e585d1 user: Erik Brangs <eri...@gm...> date: Wed May 22 20:38:55 2013 +0200 description: RVM-1019 : Rename barrier methods in org.jikesrvm.Magic to use the terms from the JSR-133 cookbook and update the documentation accordingly. The JSR-133 cookbook is an unofficial guide for compiler writers that provides information on implementing the Java Memory Model. The cookbook can currently be found at http://g.oswego.edu/dl/jmm/cookbook.html . diffstat: libraryInterface/Common/src/sun/misc/Unsafe.java | 18 +- rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineMagic.java | 4 +- rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java | 4 +- rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerateMagic.java | 4 +- rvm/src/org/jikesrvm/runtime/Magic.java | 56 ++++++--- rvm/src/org/jikesrvm/runtime/MagicNames.java | 4 +- 6 files changed, 55 insertions(+), 35 deletions(-) diffs (237 lines): diff --git a/libraryInterface/Common/src/sun/misc/Unsafe.java b/libraryInterface/Common/src/sun/misc/Unsafe.java --- a/libraryInterface/Common/src/sun/misc/Unsafe.java +++ b/libraryInterface/Common/src/sun/misc/Unsafe.java @@ -66,7 +66,7 @@ public void putOrderedInt(Object obj,long offset,int value) { Offset off = longToOffset(offset); - Magic.writeFloor(); + Magic.storeStoreBarrier(); if (NEEDS_INT_PUTFIELD_BARRIER) { intFieldWrite(obj, value, off, 0); } else { @@ -76,7 +76,7 @@ public void putOrderedLong(Object obj,long offset,long value) { Offset off = longToOffset(offset); - Magic.writeFloor(); + Magic.storeStoreBarrier(); if (NEEDS_LONG_PUTFIELD_BARRIER) { longFieldWrite(obj, value, off, 0); } else { @@ -86,7 +86,7 @@ public void putOrderedObject(Object obj,long offset,Object value) { Offset off = longToOffset(offset); - Magic.writeFloor(); + Magic.storeStoreBarrier(); if (NEEDS_OBJECT_PUTFIELD_BARRIER) { objectFieldWrite(obj, value, off, 0); } else { @@ -95,7 +95,7 @@ } public void putIntVolatile(Object obj,long offset,int value) { - Magic.writeFloor(); + Magic.storeStoreBarrier(); Offset off = longToOffset(offset); if (NEEDS_INT_PUTFIELD_BARRIER) { intFieldWrite(obj, value, off, 0); @@ -117,7 +117,7 @@ public int getIntVolatile(Object obj,long offset) { Offset off = longToOffset(offset); int result = Magic.getIntAtOffset(obj,off); - Magic.readCeiling(); + Magic.combinedLoadBarrier(); return result; } @@ -127,7 +127,7 @@ } public void putLongVolatile(Object obj,long offset,long value) { - Magic.writeFloor(); + Magic.storeStoreBarrier(); Offset off = longToOffset(offset); if (NEEDS_LONG_PUTFIELD_BARRIER) { longFieldWrite(obj, value, off, 0); @@ -149,7 +149,7 @@ public long getLongVolatile(Object obj,long offset) { Offset off = longToOffset(offset); long result = Magic.getLongAtOffset(obj,off); - Magic.readCeiling(); + Magic.combinedLoadBarrier(); return result; } @@ -160,7 +160,7 @@ public void putObjectVolatile(Object obj,long offset,Object value) { Offset off = longToOffset(offset); - Magic.writeFloor(); + Magic.storeStoreBarrier(); if (NEEDS_OBJECT_PUTFIELD_BARRIER) { objectFieldWrite(obj, value, off, 0); } else { @@ -181,7 +181,7 @@ public Object getObjectVolatile(Object obj,long offset) { Offset off = longToOffset(offset); Object result = Magic.getObjectAtOffset(obj,off); - Magic.readCeiling(); + Magic.combinedLoadBarrier(); return result; } diff --git a/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineMagic.java b/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineMagic.java --- a/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineMagic.java +++ b/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineMagic.java @@ -1090,8 +1090,8 @@ generators.put(getMethodReference(Magic.class, MagicNames.longBitsAsDouble, long.class, double.class), g); generators.put(getMethodReference(Magic.class, MagicNames.sync, void.class), g); generators.put(getMethodReference(Magic.class, MagicNames.isync, void.class), g); - generators.put(getMethodReference(Magic.class, MagicNames.readCeiling, void.class), g); - generators.put(getMethodReference(Magic.class, MagicNames.writeFloor, void.class), g); + generators.put(getMethodReference(Magic.class, MagicNames.combinedLoadBarrier, void.class), g); + generators.put(getMethodReference(Magic.class, MagicNames.storeStoreBarrier, void.class), g); if (VALIDATE_OBJECT_REFERENCES) { g = new EarlyReferenceCheckDecorator(NO_SLOT, g); } diff --git a/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java b/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java --- a/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java +++ b/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java @@ -4499,9 +4499,9 @@ asm.emitISYNC(); } else if (methodName == MagicNames.pause) { // NO-OP - } else if (methodName == MagicNames.readCeiling) { + } else if (methodName == MagicNames.combinedLoadBarrier) { asm.emitISYNC(); - } else if (methodName == MagicNames.writeFloor || + } else if (methodName == MagicNames.storeStoreBarrier || methodName == MagicNames.fence) { asm.emitSYNC(); } else if (methodName == MagicNames.dcbst) { diff --git a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerateMagic.java b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerateMagic.java --- a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerateMagic.java +++ b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerateMagic.java @@ -798,9 +798,9 @@ bc2ir.push(test.copyD2U()); } else if (methodName == MagicNames.fence) { bc2ir.appendInstruction(Empty.create(FENCE)); - } else if (methodName == MagicNames.readCeiling) { + } else if (methodName == MagicNames.combinedLoadBarrier) { bc2ir.appendInstruction(Empty.create(READ_CEILING)); - } else if (methodName == MagicNames.writeFloor) { + } else if (methodName == MagicNames.storeStoreBarrier) { bc2ir.appendInstruction(Empty.create(WRITE_FLOOR)); } else if (generatePolymorphicMagic(bc2ir, gc, meth, methodName)) { return true; diff --git a/rvm/src/org/jikesrvm/runtime/Magic.java b/rvm/src/org/jikesrvm/runtime/Magic.java --- a/rvm/src/org/jikesrvm/runtime/Magic.java +++ b/rvm/src/org/jikesrvm/runtime/Magic.java @@ -1063,18 +1063,43 @@ //---------------------------------------// /** - * Disallow any reads to float above this point. + * Emits a strong memory fence, used to enforce StoreLoad in the JMM. A StoreLoad + * barrier ensures that the data that was stored by the instruction before the + * barrier is visible to all load instructions after the barrier. + * <p> + * Note: A StoreLoad barrier includes all other barriers on all platforms + * that we currently support (IA32 and PPC). */ - public static void readCeiling() { + public static void fence() { if (VM.runningVM && VM.VerifyAssertions) { VM._assert(VM.NOT_REACHED); // call site should have been hijacked by magic in compiler } } /** - * Disallow any writes to sink below this point. + * Emits an instruction that provides both a LoadLoad and a LoadStore barrier. + * A LoadLoad barrier ensures that the data accessed by all load instructions + * before the barrier is loaded before any data from load instructions after + * the barrier. + * A LoadStore barrier ensures that the data accessed by all load instructions + * before the barrier is loaded before any data store instructions after the barrier + * are completed. + * <p> + * We don't provide separate methods for LoadStore and LoadLoad barriers because + * the appropriate instructions for IA32 and PPC provide both barriers. */ - public static void writeFloor() { + public static void combinedLoadBarrier() { + if (VM.runningVM && VM.VerifyAssertions) { + VM._assert(VM.NOT_REACHED); // call site should have been hijacked by magic in compiler + } + } + + /** + * Emits a StoreStore barrier. A StoreStore barrier ensures that the data + * that was stored by the instruction before the barrier is visible to all + * subsequent store instructions. + */ + public static void storeStoreBarrier() { if (VM.runningVM && VM.VerifyAssertions) { VM._assert(VM.NOT_REACHED); // call site should have been hijacked by magic in compiler } @@ -1087,15 +1112,6 @@ /**** NOTE: all per-address operations now live in vmmagic.Address *****/ /** - * A strong memory fence, used to enforce StoreLoad in the JMM. - */ - public static void fence() { - if (VM.runningVM && VM.VerifyAssertions) { - VM._assert(VM.NOT_REACHED); // call site should have been hijacked by magic in compiler - } - } - - /** * Wait for preceeding cache flush/invalidate instructions to * complete on all processors. */ @@ -1115,11 +1131,9 @@ } } - /**************************************************************** - * - * Misc - * - */ + //---------------------------------------// + // Misc. // + //---------------------------------------// /** * On IA32, emit a PAUSE instruction, to optimize spin-wait loops. @@ -1150,6 +1164,12 @@ return -1.0d; // which should upset them even if assertions aren't enabled ... } + //---------------------------------------// + // Methods which are evaluated at // + // compile-time when instructions // + // for magic methods are generated. // + //---------------------------------------// + /** * How deeply inlined is this method (0 means no inlining). */ diff --git a/rvm/src/org/jikesrvm/runtime/MagicNames.java b/rvm/src/org/jikesrvm/runtime/MagicNames.java --- a/rvm/src/org/jikesrvm/runtime/MagicNames.java +++ b/rvm/src/org/jikesrvm/runtime/MagicNames.java @@ -144,8 +144,8 @@ public static final Atom getArrayLength = Atom.findOrCreateAsciiAtom("getArrayLength"); public static final Atom fence = Atom.findOrCreateAsciiAtom("fence"); - public static final Atom readCeiling = Atom.findOrCreateAsciiAtom("readCeiling"); - public static final Atom writeFloor = Atom.findOrCreateAsciiAtom("writeFloor"); + public static final Atom combinedLoadBarrier = Atom.findOrCreateAsciiAtom("combinedLoadBarrier"); + public static final Atom storeStoreBarrier = Atom.findOrCreateAsciiAtom("storeStoreBarrier"); public static final Atom sync = Atom.findOrCreateAsciiAtom("sync"); public static final Atom isync = Atom.findOrCreateAsciiAtom("isync"); public static final Atom prefetch = Atom.findOrCreateAsciiAtom("prefetch"); |
From: <jik...@li...> - 2013-06-17 19:55:16
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/a50fc340a7bd changeset: 10643:a50fc340a7bd user: Erik Brangs <eri...@gm...> date: Mon Jun 17 20:39:05 2013 +0200 description: RVM-1036 : Treat checkstore checks similarly to array bound checks and null checks when creating the initial IR from bytecode. The old treatment of checkstore checks was incorrect: checkstore checks were never inserted in inlined code because the respective variable was not set in createChildContext(..). It would have been possible to fix the bug in createChildContext(..) but I don't see a reason to treat checkstore checks differently than the other kinds of checks. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/682e77613f2e changeset: 10644:682e77613f2e user: Erik Brangs <eri...@gm...> date: Mon Jun 17 20:41:25 2013 +0200 description: RVM-1036 : Remove the workaround for RVM-1036 because it is no longer necessary. The workaround was previously introduced in commit 5326b398e71b0c0e1cb147a1d5da06f152222ceb. diffstat: rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java | 2 +- rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java | 12 +++++--- testing/tests/opttests/src/CheckStore.java | 13 ---------- 3 files changed, 8 insertions(+), 19 deletions(-) diffs (78 lines): diff --git a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java --- a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java +++ b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java @@ -3830,7 +3830,7 @@ * @return {@code true} if an unconditional throw is generated, {@code false} otherwise */ private boolean do_CheckStore(Operand ref, Operand elem, TypeReference elemType) { - if (!gc.doesCheckStore) return false; + if (gc.noCheckStoreChecks()) return false; if (CF_CHECKSTORE) { // NOTE: BE WARY OF ADDITIONAL OPTIMZATIONS. diff --git a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java --- a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java +++ b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java @@ -200,10 +200,6 @@ * to exploit knowledge the callee BC2IR object had about the result. */ public Operand result; - /** - * Do we do check stores? - */ - boolean doesCheckStore; ////////// // Main public methods @@ -229,7 +225,6 @@ options = opts; inlinePlan = ip; inlineSequence = new InlineSequence(meth); - doesCheckStore = !meth.hasNoCheckStoreAnnotation(); // Create the CFG. Initially contains prologue, epilogue, and exit. cfg = new ControlFlowGraph(0); @@ -545,6 +540,13 @@ } /** + * Should checkstore checks be generated? + */ + boolean noCheckStoreChecks() { + return method.hasNoCheckStoreAnnotation(); + } + + /** * Make a register operand that refers to the given local variable number * and has the given type. * diff --git a/testing/tests/opttests/src/CheckStore.java b/testing/tests/opttests/src/CheckStore.java --- a/testing/tests/opttests/src/CheckStore.java +++ b/testing/tests/opttests/src/CheckStore.java @@ -36,10 +36,6 @@ Object[] n = new Integer[1]; n[0] = new Integer(0); n[0] = input; - - // Unreachable but needed to prevent the opt compiler from removing - // the access that causes the ArrayStoreException - System.out.println(n[0]); } static Object[] global = new Object[2]; @@ -58,15 +54,6 @@ else array = new String[2]; array[0] = elem; - - // Unreachable but needed to prevent the opt compiler from removing - // the access that causes the ArrayStoreException. - // A simple System.out.println(..) is currently not possible here - // because it triggers a bug - see RVM-1036 - if (array[0].hashCode() % 3 == new Object().hashCode()) { - System.out.println("Unreachable."); - } - } } |
From: <jik...@li...> - 2013-06-30 21:22:08
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/31b5d75299ea changeset: 10645:31b5d75299ea user: Dave Grove <gr...@us...> date: Sun Jun 30 23:19:01 2013 +0200 description: typo in comment details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/8c564f8fa07a changeset: 10646:8c564f8fa07a user: Dave Grove <gr...@us...> date: Sun Jun 30 23:21:17 2013 +0200 description: WIP on RVM-1018 (PPC dcache/icache synchronization protocol causes deadlocks). Exempt collector threads from the handshake; by design they don't execute speculatively optimized code and therefore are not required to take any action when a code patch happens (since they can't be executing code that has been patched). diffstat: rvm/src/org/jikesrvm/compilers/opt/runtimesupport/OptCompiledMethod.java | 8 ++++++++ rvm/src/org/jikesrvm/scheduler/RVMThread.java | 2 +- 2 files changed, 9 insertions(+), 1 deletions(-) diffs (29 lines): diff --git a/rvm/src/org/jikesrvm/compilers/opt/runtimesupport/OptCompiledMethod.java b/rvm/src/org/jikesrvm/compilers/opt/runtimesupport/OptCompiledMethod.java --- a/rvm/src/org/jikesrvm/compilers/opt/runtimesupport/OptCompiledMethod.java +++ b/rvm/src/org/jikesrvm/compilers/opt/runtimesupport/OptCompiledMethod.java @@ -547,5 +547,13 @@ t.codePatchSyncRequested = true; return true; // handshake with everyone but ourselves. } + @Override + @Uninterruptible + public boolean includeThread(RVMThread t) { + // CollectorThreads will never be executing code that is subject to code patching. + // (We don't allow speculative optimization of Uninterruptible code). Therefore + // it is safe to exempt collectors from the need to respond to the handshake. + return !t.isCollectorThread(); + } }; } diff --git a/rvm/src/org/jikesrvm/scheduler/RVMThread.java b/rvm/src/org/jikesrvm/scheduler/RVMThread.java --- a/rvm/src/org/jikesrvm/scheduler/RVMThread.java +++ b/rvm/src/org/jikesrvm/scheduler/RVMThread.java @@ -1888,7 +1888,7 @@ * Threads enter native code never need to block, since they will not be executing * any Java code. However, such threads must ensure that any system services (like * GC) that are waiting for this thread to stop are notified that the thread has - * instead chosen to exit Java. As well, any requests to perform a sot handshake + * instead chosen to exit Java. As well, any requests to perform a soft handshake * must be serviced and acknowledged. */ private void enterNativeBlockedImpl(boolean jni) { |
From: <jik...@li...> - 2013-08-14 07:35:51
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/43376a0d8d2e changeset: 10659:43376a0d8d2e user: Erik Brangs <eri...@gm...> date: Wed Aug 14 09:25:08 2013 +0200 description: Use a separate property for the URL when downloading ECJ. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/5bd6040af261 changeset: 10660:5bd6040af261 user: Erik Brangs <eri...@gm...> date: Wed Aug 14 09:31:15 2013 +0200 description: Move back to ECJ 3.2. The current ECJ 4.2.2 crashes the JVM on jalapeno when trying to compile GNU Classpath. The JVM on jalapeno needs to be updated before we can move to a newer ECJ version. diffstat: build/components/ecj.xml | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) diffs (30 lines): diff --git a/build/components/ecj.xml b/build/components/ecj.xml --- a/build/components/ecj.xml +++ b/build/components/ecj.xml @@ -14,7 +14,17 @@ <import file="base.xml"/> +<!-- A newer version of ECJ that can be used to compile GNU Classpath from git. + Unfortunately, using it currently causes the JVM on the jalapeno regression machine + to crash. We'll have to use another version until we can upgrade the JVM on jalapeno. + For the time being, we're using the old 3.2 which we used before moving to 4.2.2. + <property name="ecj.version" value="4.2.2"/> + <property name="ecj.url" value="http://archive.eclipse.org/eclipse/downloads/drops4/R-4.2.2-201302041200/ecj-4.2.2.jar"/> +--> + + <property name="ecj.version" value="3.2"/> + <property name="ecj.url" value="http://archive.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905/ecj.jar"/> <property name="ecj.description" value="Eclipse Compiler"/> <property name="ecj.dir" location="${components.dir}/ecj/${ecj.version}/ecj-${ecj.version}"/> @@ -39,7 +49,7 @@ <target name="fetch" depends="init-ecj-properties" if="ecj.from-web"> <mkdir dir="${ecj.dir}"/> <cachedGet key="ecj-${ecj.version}.jar" - src="http://archive.eclipse.org/eclipse/downloads/drops4/R-4.2.2-201302041200/ecj-4.2.2.jar" + src="${ecj.url}" dest="${ecj.dir}/ecj.jar"/> <echo file="${ecj.dir}/ecj">#!/bin/bash java -Xmx256m -jar "`dirname "$0"`/ecj.jar" -warn:-unusedPrivate "$@" |
From: <jik...@li...> - 2013-08-22 14:35:08
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/5467895f770d changeset: 10665:5467895f770d user: Erik Brangs <eri...@gm...> date: Thu Aug 22 16:02:33 2013 +0200 description: Correct linking order for builds with perfevent. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/80e9383f4fc9 changeset: 10666:80e9383f4fc9 user: Erik Brangs <eri...@gm...> date: Thu Aug 22 16:24:46 2013 +0200 description: Merge with default at 5467895f770d8f1a84ec90477d8f35a24872c843 and correct linking order for Jikes RVM builds with OpenJDK and perfevent. diffstat: bin/buildit | 5 + build.xml | 289 +- build/components/openjdk.xml | 76 + build/eclipse/classpath.openjdk.template | 44 + build/primordials/OpenJDK.linux.txt | 277 + build/primordials/OpenJDK.osx.txt | 277 + include/jni.h | 3 + libraryInterface/Common/src/java/lang/Class.java | 40 + libraryInterface/Common/src/sun/misc/Unsafe.java | 123 +- libraryInterface/OpenJDK/ASF/src/java/lang/ClassLoader.java | 1122 +++ libraryInterface/OpenJDK/ASF/src/java/lang/Runtime.java | 602 + libraryInterface/OpenJDK/ASF/src/java/lang/System.java | 623 + libraryInterface/OpenJDK/ASF/src/java/lang/Throwable.java | 445 + libraryInterface/OpenJDK/ASF/src/java/lang/ref/ReferenceQueue.java | 88 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/AccessibleObject.java | 295 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Array.java | 682 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Constructor.java | 358 + libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Field.java | 761 ++ libraryInterface/OpenJDK/ASF/src/java/lang/reflect/Method.java | 403 + libraryInterface/OpenJDK/EPL/src/java/lang/JikesRVMHelpers.java | 36 + libraryInterface/OpenJDK/EPL/src/java/lang/JikesRVMSupport.java | 134 + libraryInterface/OpenJDK/EPL/src/java/lang/VMStackWalker.java | 176 + libraryInterface/OpenJDK/EPL/src/java/lang/reflect/JikesRVMSupport.java | 65 + libraryInterface/OpenJDK/EPL/src/java/nio/JikesRVMSupport.java | 42 + libraryInterface/OpenJDK/GPL/src/java/io/BufferedInputStream.java | 479 + libraryInterface/OpenJDK/GPL/src/java/io/FileInputStream.java | 414 + libraryInterface/OpenJDK/GPL/src/java/lang/Enum.java | 238 + libraryInterface/OpenJDK/GPL/src/java/lang/String.java | 3024 ++++++++ libraryInterface/OpenJDK/GPL/src/java/lang/Thread.java | 1999 +++++ libraryInterface/OpenJDK/GPL/src/java/lang/ThreadGroup.java | 1034 ++ libraryInterface/OpenJDK/GPL/src/java/nio/DirectByteBuffer.java | 991 ++ libraryInterface/OpenJDK/GPL/src/java/security/AccessController.java | 591 + libraryInterface/OpenJDK/GPL/src/java/sql/SQLException.java | 375 + libraryInterface/OpenJDK/GPL/src/java/util/Currency.java | 733 ++ libraryInterface/OpenJDK/GPL/src/java/util/ResourceBundle.java | 2751 +++++++ libraryInterface/OpenJDK/GPL/src/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java | 309 + libraryInterface/OpenJDK/GPL/src/java/util/zip/ZipFile.java | 527 + libraryInterface/OpenJDK/GPL/src/sun/java2d/cmm/CMSManager.java | 165 + libraryInterface/OpenJDK/GPL/src/sun/misc/VM.java | 367 + libraryInterface/OpenJDK/GPL/src/sun/reflect/Reflection.java | 340 + rvm/src-generated/vm-configuration/Configuration.template | 1 + rvm/src/org/jikesrvm/VM.java | 112 +- rvm/src/org/jikesrvm/classloader/RVMClass.java | 3 + rvm/src/org/jikesrvm/compilers/baseline/BuildBB.java | 2 +- rvm/src/org/jikesrvm/jni/JNIFunctions.java | 16 +- rvm/src/org/jikesrvm/runtime/DynamicLibrary.java | 2 +- rvm/src/org/jikesrvm/runtime/RuntimeEntrypoints.java | 9 +- rvm/src/org/jikesrvm/scheduler/RVMThread.java | 3 + tools/asm-tasks/src/org/jikesrvm/tools/asm/AnnotationAdder.java | 2 + tools/bootImageRunner/rvm.openjdk | 74 + tools/bootImageRunner/sys.C | 1506 ++++- tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/BootImageWriter.java | 45 +- tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/BuildJNIFunctionTable.java | 5 + tools/bootImageWriter/src/org/jikesrvm/tools/bootImageWriter/bootimagewrite_Copy | 3613 ++++++++++ 54 files changed, 26639 insertions(+), 57 deletions(-) diffs (truncated from 27590 to 300 lines): diff --git a/bin/buildit b/bin/buildit --- a/bin/buildit +++ b/bin/buildit @@ -95,6 +95,7 @@ --comp-cache-dir Specify a cache location for component downloads --clear-cc Clear out the component caches --harmony Build with harmony (instead of classpath) + --openjdk Build with OpenJDK libraries (instead of classpath) Testing Options: -t, --test Specify a test to run (overriden by --test-run) @@ -173,6 +174,7 @@ "h|help" => \$help, "x87" => \$x87, "harmony" => \$harmony, + "openjdk" => \$openjdk, "j|java-home=s" => \$javaHomeCmd, "ext-lib-dir=s" => \$extlibdir, "comp-cache-dir=s" => \$compcachedir, @@ -678,6 +680,9 @@ if ($harmony ne "") { $defs .= "-Dclasslib.provider=Harmony "; } + if ($openjdk ne "") { + $defs .= "-Dclasslib.provider=OpenJDK "; + } if ($with_perfevent ne "") { $defs .= "-Dconfig.include.perfevent=true "; } diff --git a/build.xml b/build.xml --- a/build.xml +++ b/build.xml @@ -93,10 +93,16 @@ <property name="dist.base" location="${dist.dir}/${build.name}"/> <!-- Set the class library to use --> - <property name="classlib.provider" value="GNU Classpath"/> + <!-- <property name="classlib.provider" value="GNU Classpath"/> --> + <property name="classlib.provider" value="OpenJDK"/> <condition property="harmony.classlib" value="true"> <equals arg1="${classlib.provider}" arg2="Harmony"/> </condition> + + <condition property="openjdk.classlib" value="true"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <condition property="classpath.classlib" value="true"> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> @@ -166,11 +172,12 @@ </target> <target name="check-classlibrary-properties"> - <fail message="Cannot have both Harmony and Classpath class libraries"> + <fail message="Cannot have both Harmony, OpenJDK, and Classpath class libraries"> <condition> <and> <isset property="harmony.classlib"/> <isset property="classpath.classlib"/> + <isset property="openjdk.classlib"/> </and> </condition> </fail> @@ -180,6 +187,7 @@ <or> <equals arg1="${classlib.provider}" arg2="Harmony"/> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> </or> </not> </condition> @@ -190,6 +198,7 @@ <or> <isset property="harmony.classlib"/> <isset property="classpath.classlib"/> + <isset property="openjdk.classlib"/> </or> </not> </condition> @@ -212,6 +221,13 @@ <property name="build.extra.rt.jars" value=":${harmony.lib.dir}/yoko-rmi-impl.jar:${harmony.lib.dir}/instrument.jar:${harmony.lib.dir}/beans.jar:${harmony.lib.dir}/xml-apis.jar:${harmony.lib.dir}/mx4j.jar:${harmony.lib.dir}/nio.jar:${harmony.lib.dir}/xalan.jar:${harmony.lib.dir}/resolver.jar:${harmony.lib.dir}/logging.jar:${harmony.lib.dir}/bcprov.jar:${harmony.lib.dir}/security.jar:${harmony.lib.dir}/sql.jar:${harmony.lib.dir}/print.jar:${harmony.lib.dir}/mx4j-remote.jar:${harmony.lib.dir}/concurrent.jar:${harmony.lib.dir}/luni-kernel-stubs.jar:${harmony.lib.dir}/misc.jar:${harmony.lib.dir}/accessibility.jar:${harmony.lib.dir}/crypto.jar:${harmony.lib.dir}/yoko.jar:${harmony.lib.dir}/rmi.jar:${harmony.lib.dir}/security-kernel-stubs.jar:${harmony.lib.dir}/x-net.jar:${harmony.lib.dir}/icu4j-charsets-4_0.jar:${harmony.lib.dir}/imageio.jar:${harmony.lib.dir}/nio_char.jar:${harmony.lib.dir}/lang-management.jar:${harmony.lib.dir}/regex.jar:${harmony.lib.dir}/applet.jar:${harmony.lib.dir}/prefs.jar:${harmony.lib.dir}/annotation.jar:${harmony.lib.dir}/math.jar:${harmony.lib.dir}/luni.jar:${harmony.lib.dir}/archive.jar:${harmony.lib.dir}/awt.jar:${harmony.lib.dir}/nio_char-src.jar:${harmony.lib.dir}/xercesImpl.jar:${harmony.lib.dir}/yoko-rmi-spec.jar:${harmony.lib.dir}/swing.jar:${harmony.lib.dir}/auth.jar:${harmony.lib.dir}/yoko-core.jar:${harmony.lib.dir}/text.jar:${harmony.lib.dir}/jndi.jar:${harmony.lib.dir}/suncompat.jar:${harmony.lib.dir}/sound.jar:${harmony.lib.dir}/icu4j-4_0.jar:${harmony.lib.dir}/bcel-5.2.jar"/> </target> + <target name="check-openjdk-properties" depends="check-components-properties,check-classlibrary-properties" if="openjdk.classlib"> + <propertycopy name="openjdk.lib.dir" from="${target.name}.openjdk.lib.dir"/> + <test-file name="openjdk.lib.dir" location="${components.file}"/> + <property name="config.portable-native-sync" value="false"/> + <property name="build.extra.rt.jars" value=""/> + </target> + <target name="check-mmtk-properties" depends="check-host-name"> <available property="mmtk_properties_present" file="${mmtk.properties}"/> <fail unless="mmtk_properties_present"> @@ -280,7 +296,15 @@ <ant antfile="build/components/harmony.xml" target="ensure"/> </sequential> </if> - <if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <ant antfile="build/components/openjdk.xml" target="ensure"/> + </sequential> + </if> + <if> <conditions> <equals arg1="${config.with-profile}" arg2="true"/> </conditions> @@ -338,7 +362,7 @@ * component properties for classpath, gcspy etc. --> <target name="check-properties" - depends="check-host-properties,check-config-properties,check-target-properties,check-classlibrary-properties,check-classpath-properties,check-harmony-properties,check-gcspy-properties,check-mmtk-properties" + depends="check-host-properties,check-config-properties,check-target-properties,check-classlibrary-properties,check-classpath-properties,check-harmony-properties,check-openjdk-properties,check-gcspy-properties,check-mmtk-properties" description="Check that all required properties are specified."> <!-- setup properties for start of build. --> @@ -393,6 +417,10 @@ <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="classlib.filter" value="-DRVM_FOR_OPENJDK=1"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <condition property="gctrace.filter" value="-DRVM_WITH_GCTRACE=1" else=""> <equals arg1="${config.mmtk.plan}" arg2="org.mmtk.plan.semispace.gctrace.GCTrace"/> </condition> @@ -1025,6 +1053,9 @@ <condition property="pp_RVM_WITH_GNU_CLASSPATH" value="true" else="false"> <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="pp_RVM_WITH_OPENJDK" value="true" else="false"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> <copy file="${basedir}/rvm/src-generated/vm-configuration/Configuration.template" tofile="${generated.config.java}/org/jikesrvm/Configuration.java"> @@ -1053,6 +1084,7 @@ <filter token="_PORTABLE_NATIVE_SYNC_" value="${config.portable-native-sync}"/> <filter token="_RVM_WITH_HARMONY_" value="${pp_RVM_WITH_HARMONY}"/> <filter token="_RVM_WITH_GNU_CLASSPATH_" value="${pp_RVM_WITH_GNU_CLASSPATH}"/> + <filter token="_RVM_WITH_OPENJDK_" value="${pp_RVM_WITH_OPENJDK}"/> </filterset> </copy> @@ -1160,10 +1192,21 @@ <property name="classlib.library-interface.non-cpl.java" location="libraryInterface/Harmony/ASF/src"/> </sequential> </if> + + <!--added by Xi Yang--> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <property name="classlib.library-interface.cpl.java" location="libraryInterface/OpenJDK/EPL/src"/> + <property name="classlib.library-interface.non-cpl.java" location="libraryInterface/OpenJDK/ASF/src"/> + <property name="classlib.library-interface.non-cpl2.java" location="libraryInterface/OpenJDK/GPL/src"/> + </sequential> + </if> </target> <target name="compile" depends="compile-mmtk,compile-options,prepare-source,prepare-config-source,choose-classlib,do-checkstyle"> - <condition property="exclude-arch" value="IA" else="PPC"> <equals arg1="${target.arch}" arg2="ppc"/> </condition> @@ -1262,6 +1305,42 @@ </sequential> </if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <javac destdir="${build.classes}" + debug="true" + fork="true" + memoryMaximumSize="500M" + debugLevel="lines,source" + source="${rvm.java.version}" + target="${rvm.java.version}" + srcdir="${main.java}:${classlib.library-interface.common.java}:${classlib.library-interface.cpl.java}:${classlib.library-interface.non-cpl.java}:${classlib.library-interface.non-cpl2.java}:${mmtk-vm-rvm.java}:${tuningforklib.java}" + sourcepath="${mmtk.java}:${options.java}:${generated.java}:${generated.config.java}:${generated.arch.java}:${main.java}:${mmtk-vm-rvm.java}:${tuningforklib.java}" + includeantruntime="false"> + <bootclasspath> + <pathelement location="${openjdk.lib.dir}/rt.jar"/> + </bootclasspath> + <classpath> + <pathelement location="${build.vmmagic-stub.classes}"/> + </classpath> + <include name="Dummy.java"/> + <include name="OptDummy.java"/> + <include name="org/apache/**/*.java"/> + <include name="sun/**/*.java"/> + <include name="java/**/*.java"/> + <include name="${arch-helper-class}"/> + <include name="com/ibm/tuningfork/**/*.java"/> + <include name="org/jikesrvm/mm/mmtk/**/*.java"/> + <include name="org/jikesrvm/tools/oth/OptTestHarness.java"/> + <include name="org/jikesrvm/tools/header_gen/GenArch_${target.arch}.java"/> + <exclude name="org/jikesrvm/tools/header_gen.GenerateInterfaceDeclarations.java"/> + </javac> + </sequential> + </if> + <mkdir dir="${build.base}/syscall/java"/> <javac srcDir="${syscall.dir}" @@ -1392,7 +1471,7 @@ </javac> </target> - <target name="package" depends="bootstrap-unit-tests,compile-vmmagic,package-classpath,package-harmony"/> + <target name="package" depends="bootstrap-unit-tests,compile-vmmagic,package-classpath,package-harmony,package-openjdk"/> <target name="package-harmony" if="harmony.classlib"> <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> @@ -1413,6 +1492,30 @@ </jar> </target> + <target name="package-openjdk" if="openjdk.classlib"> + <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> + <include name="java/**"/> + <include name="sun/**"/> + <!--no gnu now <include name="gnu/**"/> --> + <!-- Xi Yang <zipfileset src="${classpath.lib.dir}/classpath.jar"/> --> + <zipfileset src="${openjdk.lib.dir}/rt.jar"/> + <zipfileset src="${openjdk.lib.dir}/jsse.jar"/> + </zip> + <jar destfile="${build.vm.jar}" update="true" compress="false"> + <fileset dir="${build.classes}"> + <exclude name="java/**"/> + <exclude name="sun/**"/> + <!-- no gnu now <exclude name="gnu/**"/> --> + </fileset> + <fileset dir="${build.vmmagic-stub.classes}"> + <include name="org/vmmagic/pragma/**"/> + <include name="org/vmmagic/*"/> + </fileset> + <fileset dir="${build.vmmagic.classes}"/> + <fileset dir="${build.options.classes}"/> + </jar> + </target> + <target name="package-classpath" if="classpath.classlib"> <!-- create a rt.jar for the RVM --> <zip destfile="${build.rt.jar}" duplicate="preserve" basedir="${build.classes}" compress="false"> @@ -1511,6 +1614,11 @@ <condition property="primordials.arch" value=",RVM_PPC.txt" else=",RVM_IA32.txt"> <equals arg1="${target.arch}" arg2="ppc"/> </condition> + <condition property="primordials.openjdk" + value="OpenJDK.osx.txt" + else="OpenJDK.linux.txt"> + <os family="mac"/> + </condition> <if> <conditions> @@ -1538,6 +1646,19 @@ </sequential> </if> + <if> + <conditions> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </conditions> + <sequential> + <concat destfile="${build.base}/Primordials.txt"> + <filelist dir="${build.base}" files="ClassesForImage.txt"/> + <filelist dir="${primordials.dir}" + files="${primordials.openjdk},RVM.txt${primordials.opt}${primordials.aos}${primordials.arch}"/> + </concat> + </sequential> + </if> + <replaceregexp file="${build.base}/Primordials.txt" match=".*#.*" replace="" byline="true"/> </target> @@ -1573,6 +1694,10 @@ <equals arg1="${classlib.provider}" arg2="GNU Classpath"/> </condition> + <condition property="bootimage.classlib" value="OpenJDK"> + <equals arg1="${classlib.provider}" arg2="OpenJDK"/> + </condition> + <echo message="Building bootimage. Output redirected to : ${build.base}/BootImageWriterOutput.txt"/> <echo message="MMTk properties = ${mmtk.properties}"/> <java classname="org.jikesrvm.tools.bootImageWriter.BootImageWriter" @@ -1590,6 +1715,7 @@ <sysproperty key="mmtk.properties" value="${mmtk.properties}"/> |
From: <jik...@li...> - 2013-08-28 01:41:01
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/e1bd946c441b changeset: 10671:e1bd946c441b user: Robin Garner <rob...@sc...> date: Wed Aug 28 11:04:36 2013 +1000 description: Finally get {code} macros displaying in the User Guide details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/db3b29b3fa6c changeset: 10672:db3b29b3fa6c user: Robin Garner <rob...@sc...> date: Wed Aug 28 11:36:12 2013 +1000 description: Add one missing code formatting stylesheet diffstat: docs/unity/unity-html-screen.tmpl | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diffs (22 lines): diff --git a/docs/unity/unity-html-screen.tmpl b/docs/unity/unity-html-screen.tmpl --- a/docs/unity/unity-html-screen.tmpl +++ b/docs/unity/unity-html-screen.tmpl @@ -22,7 +22,18 @@ href="http://media.codehaus.org/styles/unity-code.css"/> <link rel="stylesheet" type="text/css" media="print" href="/stylesheets/print.css"/> <link type="text/css" rel="stylesheet" href="http://docs.codehaus.org/s/en_GB/3278/15/2.0.11/_/download/batch/com.atlassian.confluence.ext.newcode-macro-plugin:syntaxhighlighter/com.atlassian.confluence.ext.newcode-macro-plugin:syntaxhighlighter.css" media="all"> +<link type="text/css" rel="stylesheet" href="http://docs.codehaus.org/s/en_GB/3278/15/2.0.11/_/download/batch/com.atlassian.confluence.ext.newcode-macro-plugin:sh-theme-confluence/com.atlassian.confluence.ext.newcode-macro-plugin:sh-theme-confluence.css" media="all"> +<meta id="confluence-context-path" name="confluence-context-path" content=""> +<meta id="confluence-base-url" name="confluence-base-url" content="http://docs.codehaus.org"> + + + <!-- The confluence jQuery library --> + <script type="text/javascript" src="http://docs.codehaus.org/s/en_GB/3278/15/68/_/download/superbatch/js/batch.js" ></script> + + <!-- The syntax highlighter macro --> <script type="text/javascript" src="http://docs.codehaus.org/s/en_GB/3278/15/2.0.11/_/download/batch/com.atlassian.confluence.ext.newcode-macro-plugin:syntaxhighlighter/com.atlassian.confluence.ext.newcode-macro-plugin:syntaxhighlighter.js"> </script> + <!-- The 'brushes' for the syntax highlighter macro --> + <script type="text/javascript" src="http://docs.codehaus.org/s/en_GB/3278/15/2.0.11/_/download/batch/com.atlassian.confluence.ext.newcode-macro-plugin:syntaxhighlighter-brushes/com.atlassian.confluence.ext.newcode-macro-plugin:syntaxhighlighter-brushes.js" ></script> <title>Jikes RVM - ${page.pageKey}</title> </head> |
From: <jik...@li...> - 2013-09-10 19:40:13
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/659c74ed89b3 changeset: 10675:659c74ed89b3 user: Erik Brangs <eri...@gm...> date: Tue Sep 10 20:42:44 2013 +0200 description: RVM-1043 : Use BYTES_IN_WORD in org.jikesrvm.ia32.MultianewarrayHelper instead of treating address sizes manually (original change by Ian Rogers for MRP). This commit is part of the compatibility changes for x64. See http://git.codehaus.org/gitweb.cgi?p=mrp.git;a=commitdiff;h=8ce02705d334b17db45040b65a53de1d800fc9b6 for the original commit. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/ecc7562406fd changeset: 10676:ecc7562406fd user: Erik Brangs <eri...@gm...> date: Tue Sep 10 20:54:09 2013 +0200 description: RVM-1043 : Make incomingParameterBytes() in org.jikesrvm.compilers.opt.ir.IR compatible with non-32 bit platforms (patch by Da Feng). This commit is part of the compatibility changes for x64. MRP has a slightly different fix for this problem. The respective commit in MRP can be viewed at http://git.codehaus.org/gitweb.cgi?p=mrp.git;a=commitdiff;h=dce47314b403ce7c095ec1625b8a5b2492c207b4#patch4 . diffstat: rvm/src/org/jikesrvm/compilers/opt/ir/IR.java | 3 ++- rvm/src/org/jikesrvm/ia32/MultianewarrayHelper.java | 12 +++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diffs (57 lines): diff --git a/rvm/src/org/jikesrvm/compilers/opt/ir/IR.java b/rvm/src/org/jikesrvm/compilers/opt/ir/IR.java --- a/rvm/src/org/jikesrvm/compilers/opt/ir/IR.java +++ b/rvm/src/org/jikesrvm/compilers/opt/ir/IR.java @@ -12,6 +12,7 @@ */ package org.jikesrvm.compilers.opt.ir; +import static org.jikesrvm.SizeConstants.LOG_BYTES_IN_ADDRESS; import static org.jikesrvm.compilers.opt.ir.Operators.ATHROW_opcode; import static org.jikesrvm.compilers.opt.ir.Operators.BBEND_opcode; import static org.jikesrvm.compilers.opt.ir.Operators.DOUBLE_IFCMP_opcode; @@ -458,7 +459,7 @@ int nWords = method.getParameterWords(); // getParameterWords() does not include the implicit 'this' parameter. if (!method.isStatic()) nWords++; - return nWords << 2; + return nWords << LOG_BYTES_IN_ADDRESS; } /** diff --git a/rvm/src/org/jikesrvm/ia32/MultianewarrayHelper.java b/rvm/src/org/jikesrvm/ia32/MultianewarrayHelper.java --- a/rvm/src/org/jikesrvm/ia32/MultianewarrayHelper.java +++ b/rvm/src/org/jikesrvm/ia32/MultianewarrayHelper.java @@ -19,6 +19,8 @@ import org.jikesrvm.runtime.RuntimeEntrypoints; import org.vmmagic.unboxed.Address; +import static org.jikesrvm.SizeConstants.BYTES_IN_WORD; + /** * Helper routine to pull the parameters to multianewarray off the * Java expression stack maintained by the baseline compiler and @@ -47,9 +49,9 @@ // fetch number of elements to be allocated for each array dimension VM.disableGC(); Address argp = Magic.getFramePointer().plus(argOffset); - argp = argp.minus(4); + argp = argp.minus(BYTES_IN_WORD); dim0 = argp.loadInt(); - argp = argp.minus(4); + argp = argp.minus(BYTES_IN_WORD); dim1 = argp.loadInt(); VM.enableGC(); // validate arguments @@ -64,11 +66,7 @@ VM.disableGC(); Address argp = Magic.getFramePointer().plus(argOffset); for (int i = 0; i < numDimensions; ++i) { - if (VM.BuildFor32Addr) { - argp = argp.minus(4); - } else { - argp = argp.minus(8); - } + argp = argp.minus(BYTES_IN_WORD); numElements[i] = argp.loadInt(); } VM.enableGC(); |
From: <jik...@li...> - 2013-09-12 03:07:06
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/9fa679618657 changeset: 10678:9fa679618657 user: Robin Garner <rob...@sc...> date: Thu Sep 12 12:52:47 2013 +1000 description: Update to compile with latest tip details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/0078de20f9e9 changeset: 10679:0078de20f9e9 user: Robin Garner <rob...@sc...> date: Thu Sep 12 13:06:31 2013 +1000 description: Javadoc fixes and general cleanups of MMTk Harness diffstat: MMTk/ext/vm/harness/org/mmtk/harness/vm/Collection.java | 1 - MMTk/ext/vm/harness/org/mmtk/harness/vm/Memory.java | 2 +- MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java | 118 +++---- MMTk/harness/src/org/mmtk/harness/Harness.java | 3 - MMTk/harness/src/org/mmtk/harness/Mutator.java | 9 - MMTk/harness/src/org/mmtk/harness/PlanSpecificConfig.java | 142 +++++---- MMTk/harness/src/org/mmtk/harness/lang/Intrinsics.java | 13 +- MMTk/harness/src/org/mmtk/harness/lang/runtime/ObjectValue.java | 42 +-- MMTk/harness/src/org/mmtk/harness/lang/runtime/PcodeInterpreter.java | 13 +- MMTk/harness/src/org/mmtk/harness/lang/runtime/RuntimeStack.java | 12 +- MMTk/harness/src/org/mmtk/harness/options/AllocDuringCollection.java | 26 - MMTk/harness/src/org/mmtk/harness/options/BaseHeap.java | 5 +- MMTk/harness/src/org/mmtk/harness/sanity/Traversal.java | 5 - MMTk/harness/src/org/mmtk/harness/scheduler/Scheduler.java | 6 +- MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/ThreadQueue.java | 2 +- MMTk/src/org/mmtk/vm/Scanning.java | 2 +- testing/tests/mmtk/src/org/mmtk/harness/lang/runtime/StackAllocatorTest.java | 15 +- 17 files changed, 161 insertions(+), 255 deletions(-) diffs (truncated from 788 to 300 lines): diff --git a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Collection.java b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Collection.java --- a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Collection.java +++ b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Collection.java @@ -40,7 +40,6 @@ @Override public void requestMutatorFlush() { Mutator.current().getContext().flush(); - Assert.notImplemented(); } /** diff --git a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Memory.java b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Memory.java --- a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Memory.java +++ b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Memory.java @@ -64,7 +64,7 @@ @Interruptible public ImmortalSpace getVMSpace() { if (vmSpace == null) { - vmSpace = new ImmortalSpace("vm", VMRequest.create(getVmspacesize(), false)); + vmSpace = new ImmortalSpace("vm", VMRequest.fixedSize((int)(getVmspacesize().toLong()/(1<<20)))); } return vmSpace; } diff --git a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java --- a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java +++ b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java @@ -12,64 +12,25 @@ */ package org.mmtk.harness.vm; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; import java.util.concurrent.BlockingQueue; -import org.mmtk.harness.Harness; import org.mmtk.harness.Mutator; import org.mmtk.harness.Mutators; import org.mmtk.harness.lang.Trace; import org.mmtk.harness.lang.Trace.Item; -import org.mmtk.harness.lang.runtime.AllocationSite; -import org.mmtk.harness.lang.runtime.ObjectValue; -import org.mmtk.harness.lang.runtime.StackFrame; import org.mmtk.plan.TraceLocal; import org.mmtk.plan.TransitiveClosure; - import org.vmmagic.pragma.Uninterruptible; -import org.vmmagic.unboxed.*; +import org.vmmagic.unboxed.Address; +import org.vmmagic.unboxed.ObjectReference; import org.vmmagic.unboxed.harness.Clock; @Uninterruptible public class Scanning extends org.mmtk.vm.Scanning { - public static final int THREAD_ITERATOR_TABLE_ENTRIES = 2048; /** - * Table of thread iterator objects (to simulate JikesRVM thread iterator objects) + * {@inheritDoc} */ - private static volatile ObjectValue threadIteratorTable = null; - - /** - * Initialize the thread iterator table - * @param m Calling mutator - */ - public static void initThreadIteratorTable(Mutator m) { - if (Harness.allocDuringCollection.getValue() && threadIteratorTable == null) { - threadIteratorTable = new ObjectValue(m.allocThreadIteratorTable()); - } - } - - /** - * @param m Mutator - * @param obj The iterator object - */ - public static void setThreadIteratorObject(Mutator m, ObjectReference obj) { - m.storeReferenceField(threadIteratorTable.getObjectValue(), m.getContext().getId() % THREAD_ITERATOR_TABLE_ENTRIES, obj); - } - - /** - * Internal harness method to get all non-stack roots - * @return The set of roots - */ - public static Set<ObjectValue> getRoots() { - if (threadIteratorTable == null) - return Collections.emptySet(); - return new HashSet<ObjectValue>(Arrays.asList(threadIteratorTable)); - } - @Override public void scanObject(TransitiveClosure trace, ObjectReference object) { if (Trace.isEnabled(Item.SCAN)) { @@ -90,46 +51,56 @@ } } + /** + * {@inheritDoc} + */ @Override public void specializedScanObject(int id, TransitiveClosure trace, ObjectReference object) { scanObject(trace, object); } + /** + * {@inheritDoc} + */ @Override public synchronized void resetThreadCounter() { assert mutatorsToScan.size() == 0; mutatorsToScan = null; - ObjectValue.startRootDiscoveryPhase(); } + /** + * {@inheritDoc} + */ @Override - public void notifyInitialThreadScanComplete() { + public void notifyInitialThreadScanComplete(boolean partialScan) { } + /** + * {@inheritDoc} + */ @Override public void computeStaticRoots(TraceLocal trace) { - if (threadIteratorTable != null) { - if (Trace.isEnabled(Item.ROOTS)) { - Trace.trace(Item.ROOTS, "Tracing root %s", ObjectModel.getString(threadIteratorTable.getObjectValue())); - } - threadIteratorTable.traceObject(trace); - if (StackFrame.ASSERT_WILL_NOT_MOVE) { - assert trace.willNotMoveInCurrentCollection(threadIteratorTable.getObjectValue()) : - threadIteratorTable.getObjectValue()+" has been traced but willNotMoveInCurrentCollection is still false"; - } - if (Trace.isEnabled(Item.ROOTS)) { - Trace.trace(Item.ROOTS, "new value of %s", ObjectModel.getString(threadIteratorTable.getObjectValue())); - } - } } + /** + * {@inheritDoc} + */ @Override public void computeGlobalRoots(TraceLocal trace) { // none } + /** + * Queue of mutators to scan. At the start of the parallel scan of thread roots + * this is (atomically) initialized to the set of all mutator threads. As each + * collector thread proceeds, it removes a thread from the queue and scans it, + * exiting when the queue is empty. + */ private BlockingQueue<Mutator> mutatorsToScan = null; + /** + * {@inheritDoc} + */ @Override public void computeThreadRoots(TraceLocal trace) { Clock.stop(); @@ -146,21 +117,10 @@ break; } Trace.trace(Item.COLLECT,"Computing roots for mutator"); - if (Harness.allocDuringCollection.getValue()) { - Trace.trace(Item.COLLECT,"Allocating thread iterator object"); - Clock.start(); - setThreadIteratorObject(m, m.alloc(0, 0, false, AllocationSite.INTERNAL_SITE_ID)); - Clock.stop(); - } Clock.start(); m.prepare(); m.computeThreadRoots(trace); Clock.stop(); - if (Harness.allocDuringCollection.getValue()) { - Clock.start(); - setThreadIteratorObject(m, ObjectReference.nullReference()); - Clock.stop(); - } } Clock.start(); } @@ -171,8 +131,30 @@ } } + /** + * {@inheritDoc} + */ @Override public void computeBootImageRoots(TraceLocal trace) { /* None */ } + + /** + * {@inheritDoc} + */ + @Override + public void computeNewThreadRoots(TraceLocal trace) { + /* + * For now the harness doesn't support partial stack scanning, so do a complete scan + */ + computeThreadRoots(trace); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean supportsReturnBarrier() { + return false; + } } diff --git a/MMTk/harness/src/org/mmtk/harness/Harness.java b/MMTk/harness/src/org/mmtk/harness/Harness.java --- a/MMTk/harness/src/org/mmtk/harness/Harness.java +++ b/MMTk/harness/src/org/mmtk/harness/Harness.java @@ -108,9 +108,6 @@ /** Whether the Harness sanity checker uses the read barrier */ public static final BooleanOption sanityUsesReadBarrier = new SanityUsesReadBarrier(); - /** Allocate during collection, to simulate JikesRVM thread iterator objects */ - public static final BooleanOption allocDuringCollection = new AllocDuringCollection(); - /** Set watch points on variables */ public static final StringOption watchVar = new WatchVar(); diff --git a/MMTk/harness/src/org/mmtk/harness/Mutator.java b/MMTk/harness/src/org/mmtk/harness/Mutator.java --- a/MMTk/harness/src/org/mmtk/harness/Mutator.java +++ b/MMTk/harness/src/org/mmtk/harness/Mutator.java @@ -26,7 +26,6 @@ import org.mmtk.harness.scheduler.Scheduler; import org.mmtk.harness.vm.ActivePlan; import org.mmtk.harness.vm.ObjectModel; -import org.mmtk.harness.vm.Scanning; import org.mmtk.plan.MutatorContext; import org.mmtk.plan.Plan; import org.mmtk.plan.TraceLocal; @@ -153,7 +152,6 @@ */ public void begin() { Mutators.set(this); - Scanning.initThreadIteratorTable(this); } /** @@ -455,13 +453,6 @@ return AllocationSite.getSite(site).toString(); } - /** - * @return The thread iterator table - */ - public ObjectReference allocThreadIteratorTable() { - return alloc(Scanning.THREAD_ITERATOR_TABLE_ENTRIES,0,false,AllocationSite.INTERNAL_SITE_ID); - } - /* ************************************************************** */ diff --git a/MMTk/harness/src/org/mmtk/harness/PlanSpecificConfig.java b/MMTk/harness/src/org/mmtk/harness/PlanSpecificConfig.java --- a/MMTk/harness/src/org/mmtk/harness/PlanSpecificConfig.java +++ b/MMTk/harness/src/org/mmtk/harness/PlanSpecificConfig.java @@ -20,10 +20,13 @@ /** * Per-plan configuration for the various MMTk plans. Here we specify: - * - * - Short name(s) for each plan (eg "MS" for org.mmtk.plan.marksweep.MS) - * - A "Heap Factor", ie the expected minimum heap (compared to MarkCompact) in which + * <ul> + * <li>Short name(s) for each plan (eg "MS" for org.mmtk.plan.marksweep.MS) + * <li>A "Heap Factor", i.e. the expected minimum heap (compared to MarkCompact) in which * a given benchmark should complete. + * </ul> + * If you create a new plan, add a call to the <code>register</code> method to the static + * initializer (around line 60). */ public class PlanSpecificConfig { @@ -47,72 +50,11 @@ } } + private static final PlanSpecific DEFAULTS = new PlanSpecific("DEFAULT"); + /** - * The per-plan configuration. + * This is where you define a new plan. */ - public static final class PlanSpecific { - - /** The full class name of this plan's Plan class */ - private final String name; - |
From: <jik...@li...> - 2013-09-14 16:45:41
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/b9c5290a39d9 changeset: 10680:b9c5290a39d9 user: Erik Brangs <eri...@gm...> date: Sat Sep 14 17:46:50 2013 +0200 description: Rename variable for exception in MainThread. The JDK 8 Developer Preview says that the identifier "_" might not be supported in future JDK versions. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/79b9dcea24c2 changeset: 10681:79b9dcea24c2 user: Erik Brangs <eri...@gm...> date: Sat Sep 14 18:19:57 2013 +0200 description: Use NormalMethod in MethodVectorTest instead of using a custom class. diffstat: rvm/src/org/jikesrvm/scheduler/MainThread.java | 2 +- rvm/test-src/org/jikesrvm/classloader/MethodVectorTest.java | 27 ++++-------- 2 files changed, 10 insertions(+), 19 deletions(-) diffs (63 lines): diff --git a/rvm/src/org/jikesrvm/scheduler/MainThread.java b/rvm/src/org/jikesrvm/scheduler/MainThread.java --- a/rvm/src/org/jikesrvm/scheduler/MainThread.java +++ b/rvm/src/org/jikesrvm/scheduler/MainThread.java @@ -63,7 +63,7 @@ instrumenter = (Instrumentation)Class.forName("gnu.java.lang.JikesRVMSupport") .getMethod("createInstrumentation").invoke(null); java.lang.JikesRVMSupport.initializeInstrumentation(instrumenter); - } catch (Exception _) { + } catch (Exception e) { } } for (String agent : agents) { diff --git a/rvm/test-src/org/jikesrvm/classloader/MethodVectorTest.java b/rvm/test-src/org/jikesrvm/classloader/MethodVectorTest.java --- a/rvm/test-src/org/jikesrvm/classloader/MethodVectorTest.java +++ b/rvm/test-src/org/jikesrvm/classloader/MethodVectorTest.java @@ -22,7 +22,6 @@ import java.util.List; import org.jikesrvm.VM; -import org.jikesrvm.compilers.common.CompiledMethod; import org.jikesrvm.junit.runners.RequiresJikesRVM; import org.jikesrvm.junit.runners.VMRequirements; import org.junit.Before; @@ -35,21 +34,6 @@ @Category(RequiresJikesRVM.class) public class MethodVectorTest { - private static class MockMethod extends RVMMethod { - - private static final Atom memberDescriptor = Atom.findOrCreateAsciiAtom("()V"); - - public MockMethod(TypeReference tRef, Atom memberName) { - super(null, MemberReference.findOrCreate(tRef, memberName, memberDescriptor), (short) 0, null, null, null, null, null); - } - - @Override - protected CompiledMethod genCode() { - return null; - } - - } - private static TypeReference tRef; private MethodVector mv; @@ -78,8 +62,15 @@ RVMMethod createMockMethod(String methodName) { Atom memberName = Atom.findOrCreateAsciiAtom(methodName); - RVMMethod oneMethod = new MockMethod(tRef, memberName); - return oneMethod; + Atom memberDescriptor = Atom.findOrCreateAsciiAtom("()V"); + MemberReference mr = MemberReference.findOrCreate(tRef, memberName, memberDescriptor); + short mo = 0; + short lw = 0; + short ow = 0; + byte[] bc = new byte[0]; + int[] constantPool = new int[0]; + NormalMethod mockMethod = new NormalMethod(tRef, mr, mo, null, lw, ow, bc, null, null, null, constantPool, null, null, null, null); + return mockMethod; } @Test |
From: <jik...@li...> - 2013-10-26 15:16:14
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/3a28d7aede76 changeset: 10712:3a28d7aede76 user: Erik Brangs <eri...@gm...> date: Sat Oct 26 16:28:01 2013 +0200 description: Replace the field original_method from GenerationContext with a field that points to the parent context. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/69526e3f2f1d changeset: 10713:69526e3f2f1d user: Erik Brangs <eri...@gm...> date: Sat Oct 26 16:57:32 2013 +0200 description: Convert transferState in GenerationContext to an instance method. diffstat: rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java | 37 ++++++--- rvm/src/org/jikesrvm/compilers/opt/inlining/Inliner.java | 4 +- rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java | 40 +++++---- 3 files changed, 50 insertions(+), 31 deletions(-) diffs (166 lines): diff --git a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java --- a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java +++ b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/GenerationContext.java @@ -75,9 +75,12 @@ ////////// /** - * The original method (root of the calling context tree) + * The parent of this context is the context that called + * {@link #createChildContext(GenerationContext, ExceptionHandlerBasicBlockBag, NormalMethod, Instruction)} + * to create this context. This field is {@code null} if this context is the outermost + * one. */ - private NormalMethod original_method; + private GenerationContext parent; /** * The compiled method assigned for this compilation of original_method @@ -217,7 +220,6 @@ * @param ip The InlineOracle to be used for the generation */ GenerationContext(NormalMethod meth, TypeReference[] params, CompiledMethod cm, OptOptions opts, InlineOracle ip) { - original_method = meth; original_cm = cm; method = meth; if (opts.frequencyCounters() || opts.inverseFrequencyCounters()) { @@ -313,7 +315,7 @@ if (parent.options.frequencyCounters() || parent.options.inverseFrequencyCounters()) { child.branchProfiles = EdgeCounts.getBranchProfiles(callee); } - child.original_method = parent.original_method; + child.parent = parent; child.original_cm = parent.original_cm; // Some state gets directly copied to the child @@ -464,17 +466,21 @@ } /** - * Use this to transfer state back from a child context back to its parent. + * Transfers the state from this context back to its direct + * parent. * - * @param parent the parent context that will receive the state - * @param child the child context from which the state will be taken + * @throws IllegalStateException when this context does not have a parent */ - public static void transferState(GenerationContext parent, GenerationContext child) { - parent.cfg.setNumberOfNodes(child.cfg.numberOfNodes()); - if (child.generatedExceptionHandlers) { + public void transferStateToParent() { + if (parent == null) { + throw new IllegalStateException("This method may only be called on contexts that have a parent."); + } + + parent.cfg.setNumberOfNodes(this.cfg.numberOfNodes()); + if (this.generatedExceptionHandlers) { parent.generatedExceptionHandlers = true; } - if (child.allocFrame) { + if (this.allocFrame) { parent.allocFrame = true; } } @@ -905,8 +911,15 @@ // Getters and setters that are only used by the initial transformation to IR /////////// + /** + * @return the original method (root of the calling context tree) + */ NormalMethod getOriginalMethod() { - return original_method; + GenerationContext outermostContext = this; + while (outermostContext.parent != null) { + outermostContext = outermostContext.parent; + } + return outermostContext.method; } CompiledMethod getOriginalCompiledMethod() { diff --git a/rvm/src/org/jikesrvm/compilers/opt/inlining/Inliner.java b/rvm/src/org/jikesrvm/compilers/opt/inlining/Inliner.java --- a/rvm/src/org/jikesrvm/compilers/opt/inlining/Inliner.java +++ b/rvm/src/org/jikesrvm/compilers/opt/inlining/Inliner.java @@ -165,7 +165,7 @@ // (b) children[i] = GenerationContext.createChildContext(parent, ebag, callee, callSite); BC2IR.generateHIR(children[i]); - GenerationContext.transferState(parent, children[i]); + children[i].transferStateToParent(); } // Step 3: Merge together result from children into container. // Note: if the child ended with only exception control flow, then @@ -444,7 +444,7 @@ GenerationContext child = GenerationContext. createChildContext(parent, ebag, callee, callSite); BC2IR.generateHIR(child); - GenerationContext.transferState(parent, child); + child.transferStateToParent(); return child; } } diff --git a/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java b/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java --- a/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java +++ b/rvm/test-src/org/jikesrvm/compilers/opt/bc2ir/GenerationContextTest.java @@ -914,6 +914,24 @@ } @Test + public void getOriginalMethodReturnsTheOutermostMethod() throws Exception { + GenerationContext outermostContext = createMostlyEmptyContext("emptyStaticMethodWithNoBoundCheckAnnotation"); + NormalMethod outermostCaller = getNormalMethodForTest("emptyStaticMethodWithNoBoundCheckAnnotation"); + + ExceptionHandlerBasicBlockBag ebag = getMockEbag(); + + NormalMethod callee = getNormalMethodForTest("emptyStaticMethodWithNoCheckStoreAnnotation"); + Instruction noCheckStoreInstr = buildCallInstructionForStaticMethodWithoutReturn(callee, outermostCaller); + GenerationContext nextInnerContext = GenerationContext.createChildContext(outermostContext, ebag, callee, noCheckStoreInstr); + assertThat(nextInnerContext.getOriginalMethod(), is(outermostCaller)); + + NormalMethod nextInnerCallee = getNormalMethodForTest("emptyStaticMethodWithNoNullCheckAnnotation"); + Instruction noNullCheckInstr = buildCallInstructionForStaticMethodWithoutReturn(callee, nextInnerCallee); + GenerationContext innermostContext = GenerationContext.createChildContext(nextInnerContext, ebag, nextInnerCallee, noNullCheckInstr); + assertThat(innermostContext.getOriginalMethod(), is(outermostCaller)); + } + + @Test public void inliningInstanceMethodWithRegisterReceiver() throws Exception { NormalMethod nm = getNormalMethodForTest("methodForInliningTests"); CompiledMethod cm = new OptCompiledMethod(-1, nm); @@ -1648,7 +1666,7 @@ GenerationContext child = GenerationContext.createChildContext(parent, ebag, interruptibleCallee, callInstr); setTransferableProperties(targetNumberOfNodes, child); - GenerationContext.transferState(parent, child); + child.transferStateToParent(); assertThatStateWasTransferedToOtherContext(parent, targetNumberOfNodes); } @@ -1674,22 +1692,10 @@ assertFalse("Assumption in test case wrong, need to change test case", parent.getCfg().numberOfNodes() == targetNumberOfNodes); } - @Test - public void transferStateDoesNotCheckThatChildIsReallyAChildOfParent() throws Exception { - NormalMethod nm = getNormalMethodForTest("emptyStaticMethodWithoutAnnotations"); - CompiledMethod cm = new OptCompiledMethod(-1, nm); - OptOptions opts = new OptOptions(); - InlineOracle io = new DefaultInlineOracle(); - GenerationContext parent = new GenerationContext(nm, null, cm, opts, io); - int targetNumberOfNodes = 23456789; - assertThatContextIsInExpectedState(parent, targetNumberOfNodes); - - GenerationContext nonChild = createMostlyEmptyContext("emptyStaticMethodWithoutAnnotations"); - setTransferableProperties(targetNumberOfNodes, nonChild); - - GenerationContext.transferState(parent, nonChild); - - assertThatStateWasTransferedToOtherContext(parent, targetNumberOfNodes); + @Test(expected = IllegalStateException.class) + public void transferStateThrowsExceptionForContextsWithoutParents() throws Exception { + GenerationContext gc = createMostlyEmptyContext("emptyStaticMethodWithNoBoundCheckAnnotation"); + gc.transferStateToParent(); } @Test(expected = NullPointerException.class) |
From: <jik...@li...> - 2014-02-19 13:16:30
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/34ba4b341587 changeset: 10725:34ba4b341587 user: Erik Brangs <eri...@gm...> date: Wed Feb 19 13:47:58 2014 +0100 description: Improve class JavaDoc of OperandStack. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/188ad99ff2b4 changeset: 10726:188ad99ff2b4 user: Erik Brangs <eri...@gm...> date: Wed Feb 19 13:51:08 2014 +0100 description: Rename copy() in OperandStack to deepCopy() to improve readability and rename peekAt(..) to getFromBottom(..) to be consistent with getFromTop(..). diffstat: rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java | 4 ++-- rvm/src/org/jikesrvm/compilers/opt/bc2ir/OperandStack.java | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diffs (54 lines): diff --git a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java --- a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java +++ b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/BC2IR.java @@ -355,7 +355,7 @@ if (currentBBLE.stackState == null) { stack.clear(); } else { - stack = currentBBLE.stackState.copy(); + stack = currentBBLE.stackState.deepCopy(); } _localState = currentBBLE.copyLocalState(); if (DBG_BB || DBG_SELECTED) db("bbl: " + printBlocks()); @@ -4780,7 +4780,7 @@ /* the variable on stack can be used directly ? */ int num_lstacks = 0; for (int i = 0, n = stack.getSize(); i < n; i++) { - Operand op = stack.peekAt(i); + Operand op = stack.getFromBottom(i); if ((op != null) && (op != DUMMY)) { diff --git a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/OperandStack.java b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/OperandStack.java --- a/rvm/src/org/jikesrvm/compilers/opt/bc2ir/OperandStack.java +++ b/rvm/src/org/jikesrvm/compilers/opt/bc2ir/OperandStack.java @@ -16,7 +16,10 @@ import org.jikesrvm.compilers.opt.ir.operand.Operand; /** - * Simulated Operand Stack + * Simulates the Java stack for abstract interpretation in {@link BC2IR}.<p> + * + * This class is intended to be used by a single thread. Methods from this + * class do not provide any error handling. */ final class OperandStack { @@ -46,7 +49,7 @@ return stack[top - depth - 1]; } - Operand peekAt(int pos) { + Operand getFromBottom(int pos) { return stack[pos]; } @@ -70,7 +73,7 @@ top = 0; } - OperandStack copy() { + OperandStack deepCopy() { OperandStack newss = new OperandStack(stack.length); newss.top = top; for (int i = 0; i < top; i++) { |
From: <jik...@li...> - 2014-02-28 18:23:19
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/5c53b82e820a changeset: 10728:5c53b82e820a user: Erik Brangs <eri...@gm...> date: Fri Feb 28 18:50:43 2014 +0100 description: Fix JavaDoc errors in the IA32 Assembler. Most of the errors were caused by the lack of escaping for characters like &, < and >. The rest of the errors were caused by incorrect usage of HTML tags. Note that the function for escaping in genAssembler.sh is only used for the emitBinary* methods. The emitFloat* methods do not use any operators that need escaping. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/0215cfd0c2d8 changeset: 10729:0215cfd0c2d8 user: Erik Brangs <eri...@gm...> date: Fri Feb 28 19:18:57 2014 +0100 description: Fix typos in the IA32 Assembler. diffstat: rvm/src-generated/ia32-assembler/Assembler.in | 115 +++++++++++----------- rvm/src-generated/ia32-assembler/genAssembler.sh | 100 ++++++++++++-------- 2 files changed, 117 insertions(+), 98 deletions(-) diffs (truncated from 677 to 300 lines): diff --git a/rvm/src-generated/ia32-assembler/Assembler.in b/rvm/src-generated/ia32-assembler/Assembler.in --- a/rvm/src-generated/ia32-assembler/Assembler.in +++ b/rvm/src-generated/ia32-assembler/Assembler.in @@ -53,7 +53,7 @@ * refers. The assembler, when informed to what the label refers, * will go back and generate the appropriate offsets for all branches * that refer to the given label. The mechanism is implemented by the - * following methods and helper classes: + * following methods and helper classes: </P> * <UL> * <LI> {@link #forwardRefs} * <LI> {@link #resolveForwardReferences} @@ -64,7 +64,6 @@ * <LI> {@link #emitCALL_Label} * <LI> {@link ForwardReference} * </UL> - * </P> * * <P> There is also support for generating tableswitches. This * consists providing support for storing tables of relative addresses @@ -78,9 +77,9 @@ * several instructions (ADD, ADC, SUB, AND, OR, XOR) can be * classified as binary accumulators that share a common set of * permitted addressing modes and binary encoding all the way down a - * special case for enconding operands EAX and an immediate. A shell - * script (genAssembler.sh in the intel assembler source directory) - * explots this by specifying a generic way of emtting a binary + * special case for encoding operands EAX and an immediate. A shell + * script (genAssembler.sh in the Intel assembler source directory) + * exploits this by specifying a generic way of emitting a binary * accumulation and then calling it for each specific opcode that fits * that format. These generated methods are combined with the * hand-coded ones (from Assembler.in, also in the assembler @@ -95,8 +94,8 @@ * this assembler provides. The {@link org.jikesrvm.ArchitectureSpecificOpt.AssemblerOpt} * is entirely machine-generated, and this * requires that the methods for encoding instructions use a stylized - * naming and signiture convention that is designed to make the method - * signiture computable from the opcode and the operand types. The + * naming and signature convention that is designed to make the method + * signature computable from the opcode and the operand types. The * naming convention is as follows: * * <PRE> @@ -105,70 +104,70 @@ * * where the following substitutions are made: * <DL> - * <DT> <EM>opcode</EM> - * <DI> is the opcode of the instruction (e.g. ADC, MOV, etc) + * <DT><EM>opcode</EM></DT> + * <DD>is the opcode of the instruction (e.g. ADC, MOV, etc)</DD> * - * <DT> <EM>operand code</EM> - * <DI> represents the type of the nth operand: + * <DT><EM>operand code</EM></DT> + * <DI> represents the type of the nth operand: * <DL> - * <DT> "Imm" <DI> immediate operands - * <DT> "Reg" <DI> register operands - * <DT> "RegInd" <DI> register indirect operands - * <DT> "RegDisp" <DI> register displacement - * <DT> "RegOff" <DI> shifted index + displacement - * <DT> "RegIdx" <DI> register base + shifted index + displacement - * <DT> "Cond" <DI> condition codes + * <DT> "Imm" <DI> immediate operands + * <DT> "Reg" <DI> register operands + * <DT> "RegInd" <DI> register indirect operands + * <DT> "RegDisp" <DI> register displacement + * <DT> "RegOff" <DI> shifted index + displacement + * <DT> "RegIdx" <DI> register base + shifted index + displacement + * <DT> "Cond" <DI> condition codes * </DL> * - * <DT> <EM>size</EM> - * <DI> indicates non-word-sized operations + * <DT> <EM>size</EM> + * <DI> indicates non-word-sized operations * <DL> - * <DT> "Byte" <DI> bytes - * <DT> "Word" <DI> Intel "words" (i.e. 16 bites) - * <DT> "Quad" <DI> quad words (i.e. double-precision floating point) + * <DT> "Byte" <DI> bytes + * <DT> "Word" <DI> Intel "words" (i.e. 16 bites) + * <DT> "Quad" <DI> quad words (i.e. double-precision floating point) * </DL> * - * <DT> <EM>operand arguments</EM> - * <DI> are the needed components of the operands, in order + * <DT> <EM>operand arguments</EM> + * <DI> are the needed components of the operands, in order * <DL> - * <DT> "Imm" - * <DI> + * <DT> "Imm" + * <DI> * <UL> * <LI> immediate value (int) * </UL> - * <DT> "Reg" - * <DI> + * <DT> "Reg" + * <DI> * <UL> * <LI> register number (byte) * </UL> - * <DT> "RegInd" - * <DI> + * <DT> "RegInd" + * <DI> * <UL> * <LI> register number (byte) * </UL> - * <DT> "RegDisp" - * <DI> + * <DT> "RegDisp" + * <DI> * <UL> * <LI> register number (byte) * <LI> displacement (int) * </UL> - * <DT> "RegOff" - * <DI> + * <DT> "RegOff" + * <DI> * <UL> * <LI> index register (byte) * <LI> scale (short) * <LI> displacement (int) * </UL> - * <DT> "RegIdx" - * <DI> + * <DT> "RegIdx" + * <DI> * <UL> * <LI> base register (byte) * <LI> index register (byte) * <LI> scale (short) * <LI> displacement (int) * </UL> - * <DT> "Cond" - * <DI> + * <DT> "Cond" + * <DI> * <UL> * <LI> condition code mask (byte) * </UL> @@ -538,7 +537,7 @@ /** * The more complex IA32 addressing modes require a * scale-index-base (SIB) byte. This is used to encode addressing - * modes such as [ indexReg \<\< scale + baseReg ]. This method + * modes such as [ indexReg << scale + baseReg ]. This method * encodes the SIB byte for a given base, index and scale. * * @param scale the shift amount for the index register value. @@ -1023,7 +1022,7 @@ } /** - * The set of outstanding forward references. This list is used by + * <p> The set of outstanding forward references. This list is used by * the assembler to keep track of all outstanding forward * references. References are put on this list by the emit methods * for JMP and Jcc when they find a branch that is going forward. @@ -1031,30 +1030,30 @@ * and how to patch its source instruction. Then, when the client * calls resolveForwardBranches, the assembler searches this list to * find branches that match the instruction currently being - * generated, and calls the resolve method on each one that does. + * generated, and calls the resolve method on each one that does. </p> * - * All forward branches have a label as the branch target; clients + * <p> All forward branches have a label as the branch target; clients * can arbirarily associate labels and instructions, but must be * consistent in giving the chosen label as the target of branches * to an instruction and calling resolveForwardBranches with the * given label immediately before emitting the target instruction. - * See the header comments of ForwardReference for more details. + * See the header comments of ForwardReference for more details. </p> */ protected ForwardReference forwardRefs; /** - * Resolve all forward branches that have the given target, and + * <p> Resolve all forward branches that have the given target, and * make them branch to the instruction currently being generated. * Clients of the assembler call this method immediately before they * emit the instruction intended to be the target of the given - * label. + * label. </p> * - * All forward branches have a label as the branch target; clients + * <p> All forward branches have a label as the branch target; clients * can arbirarily associate labels and instructions, but must be * consistent in giving the chosen label as the target of branches * to an instruction and calling resolveForwardBranches with the * given label immediately before emitting the target instruction. - * See the header comments of ForwardReference for more details. + * See the header comments of ForwardReference for more details. </p> * * @param label the forward branch label to resolve */ @@ -1196,23 +1195,23 @@ ///////////////////////////////////// /** - * An OFFSET instruction is not really an instruction; it is rather + * <p> An OFFSET instruction is not really an instruction; it is rather * an address (of an instruction) that is written into the binary * code. These are used to build a table of addresses for table * switches. The code for tableswitches first calculates the address of the * start of the method. Using this address a branch relative to the start * of the method is computed by loading the offset from the start of the * method for a particular switch case. The OFFSET instruction is encoding - * one value in the table. + * one value in the table. </p> * - * This mechanism assumes code for emitting tableswitch looks as + * <p> This mechanism assumes code for emitting tableswitch looks as * follows; it is not very nice, but is improved on X86 64 with the addition * of RIP displacement addressing. The GNU tools generate something. - * Note that default cases must be handled separately. </P> + * Note that default cases must be handled separately. </p> * * <PRE> * T0 = getPCThunk() or RIP less offset from start of method - * T0 += [T0 + m<<2 + tableDisplacement] + * T0 += [T0 + m<<2 + tableDisplacement] * JMP T0 * tableDisplacement: * OFFSET 0 (case 0 target) @@ -1384,7 +1383,7 @@ /** * Conditionally move the source to the destination, i.e. * <PRE> - * if (cond) dst = [index2<<scale2 + disp2] + * if (cond) dst = [index2<<scale2 + disp2] * </PRE> */ @Inline(value=Inline.When.ArgumentsAreConstant, arguments={2,3}) @@ -1416,7 +1415,7 @@ /** * Conditionally move the source to the destination, i.e. * <PRE> - * if (cond) dst = [base2 + index2<<scale2 + disp2] + * if (cond) dst = [base2 + index2<<scale2 + disp2] * </PRE> */ @Inline(value=Inline.When.ArgumentsAreConstant, arguments={2,3,4}) @@ -1917,7 +1916,7 @@ /** * Read time stamp into edx:eax, on Linux this appears to be unprivileged. * <pre> - * edx:eax <- time stamp counter + * edx:eax <- time stamp counter * </pre> */ public final void emitRDTSC() { @@ -1980,7 +1979,7 @@ /** * Compare and exchange 8 bytes * <PRE> - * cmpxchg8b [index2<<scale2 + disp2] + * cmpxchg8b [index2<<scale2 + disp2] * </PRE> */ @Inline(value=Inline.When.ArgumentsAreConstant, arguments={1}) @@ -1996,7 +1995,7 @@ /** * Compare and exchange 8 bytes * <PRE> - * cmpxchg8b [base + index2<<scale2 + disp2] + * cmpxchg8b [base + index2<<scale2 + disp2] * </PRE> */ @Inline(value=Inline.When.ArgumentsAreConstant, arguments={1,2}) diff --git a/rvm/src-generated/ia32-assembler/genAssembler.sh b/rvm/src-generated/ia32-assembler/genAssembler.sh --- a/rvm/src-generated/ia32-assembler/genAssembler.sh +++ b/rvm/src-generated/ia32-assembler/genAssembler.sh @@ -16,10 +16,25 @@ cat $2 > $FILENAME +# Function to correctly escape strings for JavaDoc +function escapeStringForJavaDoc() { + toBeEscaped=$1 + if [ $toBeEscaped == "&" ]; then + escapedString="&" + elif [ $toBeEscaped == "<->" ]; then + escapedString="<->" + elif [ $toBeEscaped == "<<" ]; then + escapedString="<<" + else + escapedString=$toBeEscaped + fi +} + # Function to emit _Reg assembler routines function emitBinaryReg() { |
From: <jik...@li...> - 2014-03-01 21:07:17
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/a73fdf010b2d changeset: 10731:a73fdf010b2d user: Erik Brangs <eri...@gm...> date: Sat Mar 01 20:07:47 2014 +0100 description: Fix JavaDoc errors in BulkCompile by removing a @see entry that cannot be processed because the class is package-private and cannot be imported. Note that the removed link was partly redundant because there is a @see entry for it in class JavaDoc of CompilerAdviceAttribute. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/f5b08183edb0 changeset: 10732:f5b08183edb0 user: Erik Brangs <eri...@gm...> date: Sat Mar 01 21:25:45 2014 +0100 description: Use correct tags in class JavaDoc for IA32 assembler instead of escaping wrong tags. diffstat: rvm/src-generated/ia32-assembler/Assembler.in | 58 ++++++------ rvm/src/org/jikesrvm/adaptive/recompilation/BulkCompile.java | 1 - 2 files changed, 29 insertions(+), 30 deletions(-) diffs (110 lines): diff --git a/rvm/src-generated/ia32-assembler/Assembler.in b/rvm/src-generated/ia32-assembler/Assembler.in --- a/rvm/src-generated/ia32-assembler/Assembler.in +++ b/rvm/src-generated/ia32-assembler/Assembler.in @@ -108,66 +108,66 @@ * <DD>is the opcode of the instruction (e.g. ADC, MOV, etc)</DD> * * <DT><EM>operand code</EM></DT> - * <DI> represents the type of the nth operand: + * <DD> represents the type of the nth operand: * <DL> - * <DT> "Imm" <DI> immediate operands - * <DT> "Reg" <DI> register operands - * <DT> "RegInd" <DI> register indirect operands - * <DT> "RegDisp" <DI> register displacement - * <DT> "RegOff" <DI> shifted index + displacement - * <DT> "RegIdx" <DI> register base + shifted index + displacement - * <DT> "Cond" <DI> condition codes + * <DT> "Imm" <DD> immediate operands + * <DT> "Reg" <DD> register operands + * <DT> "RegInd" <DD> register indirect operands + * <DT> "RegDisp" <DD> register displacement + * <DT> "RegOff" <DD> shifted index + displacement + * <DT> "RegIdx" <DD> register base + shifted index + displacement + * <DT> "Cond" <DD> condition codes * </DL> * - * <DT> <EM>size</EM> - * <DI> indicates non-word-sized operations + * <DT> <EM>size</EM> + * <DD> indicates non-word-sized operations * <DL> - * <DT> "Byte" <DI> bytes - * <DT> "Word" <DI> Intel "words" (i.e. 16 bites) - * <DT> "Quad" <DI> quad words (i.e. double-precision floating point) + * <DT> "Byte" <DD> bytes + * <DT> "Word" <DD> Intel "words" (i.e. 16 bites) + * <DT> "Quad" <DD> quad words (i.e. double-precision floating point) * </DL> * - * <DT> <EM>operand arguments</EM> - * <DI> are the needed components of the operands, in order + * <DT> <EM>operand arguments</EM> + * <DD> are the needed components of the operands, in order * <DL> - * <DT> "Imm" - * <DI> + * <DT> "Imm" + * <DD> * <UL> * <LI> immediate value (int) * </UL> - * <DT> "Reg" - * <DI> + * <DT> "Reg" + * <DD> * <UL> * <LI> register number (byte) * </UL> - * <DT> "RegInd" - * <DI> + * <DT> "RegInd" + * <DD> * <UL> * <LI> register number (byte) * </UL> - * <DT> "RegDisp" - * <DI> + * <DT> "RegDisp" + * <DD> * <UL> * <LI> register number (byte) * <LI> displacement (int) * </UL> - * <DT> "RegOff" - * <DI> + * <DT> "RegOff" + * <DD> * <UL> * <LI> index register (byte) * <LI> scale (short) * <LI> displacement (int) * </UL> - * <DT> "RegIdx" - * <DI> + * <DT> "RegIdx" + * <DD> * <UL> * <LI> base register (byte) * <LI> index register (byte) * <LI> scale (short) * <LI> displacement (int) * </UL> - * <DT> "Cond" - * <DI> + * <DT> "Cond" + * <DD> * <UL> * <LI> condition code mask (byte) * </UL> diff --git a/rvm/src/org/jikesrvm/adaptive/recompilation/BulkCompile.java b/rvm/src/org/jikesrvm/adaptive/recompilation/BulkCompile.java --- a/rvm/src/org/jikesrvm/adaptive/recompilation/BulkCompile.java +++ b/rvm/src/org/jikesrvm/adaptive/recompilation/BulkCompile.java @@ -46,7 +46,6 @@ * strictly an optimization, so they are options. * * @see org.jikesrvm.adaptive.util.CompilerAdviceAttribute - * @see org.jikesrvm.adaptive.util.CompilerAdviceInfoReader * @see org.jikesrvm.compilers.common.RuntimeCompiler */ public class BulkCompile implements Callbacks.StartupMonitor { |