[vmkit-commits] [vmkit] r180292 - Revert "Working on stale references and isolate termination."

Peter Senna Tschudin peter.senna at gmail.com
Thu Apr 25 09:59:54 PDT 2013


Author: peter.senna
Date: Thu Apr 25 11:49:31 2013
New Revision: 180292

URL: http://llvm.org/viewvc/llvm-project?rev=180292&view=rev
Log:
Revert "Working on stale references and isolate termination."

This reverts commit 8b33b069777ced12f4883ae362d296ebb122c84c.
(cherry picked from commit 759d3e1ef3241b0d4d5dd6387f75f0f8f4f78fb0)

Removed:
    vmkit/trunk/.autotools
    vmkit/trunk/.cproject
    vmkit/trunk/.project
    vmkit/trunk/README.TXT
    vmkit/trunk/lib/j3/LLVMRuntime/runtime-isolate.ll
    vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.cpp
    vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.h
    vmkit/trunk/lib/j3/VMCore/JnjvmIsolateRef.cpp
    vmkit/trunk/lib/j3/VMCore/JnjvmIsolateTerm.cpp
    vmkit/trunk/tests/debug.txt
    vmkit/trunk/tests/i-jvm-log.txt
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/.classpath
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/.project
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/META-INF/MANIFEST.MF
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/build.properties
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerActivator.java
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerImpl.java
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/isolatemanager/IsolateManager.java
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/util/IsolateLogger.java
    vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/vm/IJVM.java
    vmkit/trunk/tests/ijvm.tests.StaticClient/.classpath
    vmkit/trunk/tests/ijvm.tests.StaticClient/.project
    vmkit/trunk/tests/ijvm.tests.StaticClient/META-INF/MANIFEST.MF
    vmkit/trunk/tests/ijvm.tests.StaticClient/build.properties
    vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/logging/InlineFormatter.java
    vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/staticclient/Activator.java
    vmkit/trunk/tests/ijvm.tests.StaticExposer/.classpath
    vmkit/trunk/tests/ijvm.tests.StaticExposer/.project
    vmkit/trunk/tests/ijvm.tests.StaticExposer/META-INF/MANIFEST.MF
    vmkit/trunk/tests/ijvm.tests.StaticExposer/build.properties
    vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/Activator.java
    vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposer.java
    vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposerImpl.java
    vmkit/trunk/tests/ijvm.tests.loopClient/.classpath
    vmkit/trunk/tests/ijvm.tests.loopClient/.project
    vmkit/trunk/tests/ijvm.tests.loopClient/META-INF/MANIFEST.MF
    vmkit/trunk/tests/ijvm.tests.loopClient/build.properties
    vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/logging/InlineFormatter.java
    vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/loopclient/Activator.java
    vmkit/trunk/tests/ijvm.tests.looper/.classpath
    vmkit/trunk/tests/ijvm.tests.looper/.project
    vmkit/trunk/tests/ijvm.tests.looper/META-INF/MANIFEST.MF
    vmkit/trunk/tests/ijvm.tests.looper/build.properties
    vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/logging/InlineFormatter.java
    vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/Activator.java
    vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/CallBack.java
    vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopController.java
    vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopControllerImpl.java
    vmkit/trunk/tests/ijvm.tests.tier/.classpath
    vmkit/trunk/tests/ijvm.tests.tier/.project
    vmkit/trunk/tests/ijvm.tests.tier/META-INF/MANIFEST.MF
    vmkit/trunk/tests/ijvm.tests.tier/build.properties
    vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/logging/InlineFormatter.java
    vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Activator.java
    vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/TierService.java
    vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Utility.java
    vmkit/trunk/tests/ijvm.tests.tierImpl/.classpath
    vmkit/trunk/tests/ijvm.tests.tierImpl/.project
    vmkit/trunk/tests/ijvm.tests.tierImpl/META-INF/MANIFEST.MF
    vmkit/trunk/tests/ijvm.tests.tierImpl/build.properties
    vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/logging/InlineFormatter.java
    vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/Activator.java
    vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/TierServiceImpl.java
    vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/UtilityImpl.java
    vmkit/trunk/tests/minimal.xargs
    vmkit/trunk/tests/sun-jvm-log.txt
Modified:
    vmkit/trunk/CREDITS.TXT
    vmkit/trunk/Makefile.common.in
    vmkit/trunk/Makefile.rules
    vmkit/trunk/include/j3/J3Intrinsics.h
    vmkit/trunk/include/j3/JavaAOTCompiler.h
    vmkit/trunk/include/j3/JavaCompiler.h
    vmkit/trunk/include/j3/JavaJITCompiler.h
    vmkit/trunk/include/j3/JavaLLVMCompiler.h
    vmkit/trunk/include/j3/LLVMInfo.h
    vmkit/trunk/include/vmkit/CollectionRV.h
    vmkit/trunk/include/vmkit/JIT.h
    vmkit/trunk/include/vmkit/Locks.h
    vmkit/trunk/include/vmkit/MethodInfo.h
    vmkit/trunk/include/vmkit/ObjectLocks.h
    vmkit/trunk/include/vmkit/System.h
    vmkit/trunk/include/vmkit/Thread.h
    vmkit/trunk/include/vmkit/UTF8.h
    vmkit/trunk/include/vmkit/VirtualMachine.h
    vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.cpp
    vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h
    vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMObject.inc
    vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThread.inc
    vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThrowable.inc
    vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.cpp
    vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc
    vmkit/trunk/lib/j3/ClassLib/VMStaticInstance.h
    vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp
    vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp
    vmkit/trunk/lib/j3/Compiler/JavaJIT.h
    vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp
    vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp
    vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp
    vmkit/trunk/lib/j3/LLVMRuntime/Makefile
    vmkit/trunk/lib/j3/LLVMRuntime/runtime-default.ll
    vmkit/trunk/lib/j3/LLVMRuntime/runtime-single.ll
    vmkit/trunk/lib/j3/VMCore/JavaArray.h
    vmkit/trunk/lib/j3/VMCore/JavaClass.cpp
    vmkit/trunk/lib/j3/VMCore/JavaClass.h
    vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp
    vmkit/trunk/lib/j3/VMCore/JavaConstantPool.h
    vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp
    vmkit/trunk/lib/j3/VMCore/JavaObject.cpp
    vmkit/trunk/lib/j3/VMCore/JavaObject.h
    vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp
    vmkit/trunk/lib/j3/VMCore/JavaThread.cpp
    vmkit/trunk/lib/j3/VMCore/JavaThread.h
    vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/j3/VMCore/Jnjvm.h
    vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
    vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
    vmkit/trunk/lib/j3/VMCore/JnjvmConfig.h
    vmkit/trunk/lib/j3/VMCore/LinkJavaRuntime.h
    vmkit/trunk/lib/j3/VMCore/Reader.h
    vmkit/trunk/lib/j3/VMCore/VirtualTables.cpp
    vmkit/trunk/lib/vmkit/CommonThread/CollectionRV.cpp
    vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp
    vmkit/trunk/lib/vmkit/CommonThread/Sigsegv-linux-x86.inc
    vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp
    vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp
    vmkit/trunk/lib/vmkit/Compiler/JIT.cpp
    vmkit/trunk/lib/vmkit/Compiler/LLVMRuntime.ll
    vmkit/trunk/lib/vmkit/Runtime/MethodInfo.cpp
    vmkit/trunk/lib/vmkit/Runtime/Object.cpp
    vmkit/trunk/lib/vmkit/Runtime/UTF8.cpp
    vmkit/trunk/mmtk/java/build.xml.in
    vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp
    vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
    vmkit/trunk/tools/precompiler/trainer/Makefile
    vmkit/trunk/tools/vmjc/vmjc.cpp

Removed: vmkit/trunk/.autotools
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/.autotools?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/.autotools (original)
+++ vmkit/trunk/.autotools (removed)
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configurations>
-<configuration id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986">
-<option id="configure" value="configure"/>
-<option id="configdir" value=""/>
-<option id="cache-file" value=""/>
-<option id="help" value="false"/>
-<option id="no-create" value="false"/>
-<option id="quiet" value="false"/>
-<option id="version" value="false"/>
-<option id="host" value=""/>
-<option id="build" value=""/>
-<option id="target" value=""/>
-<option id="prefix" value=""/>
-<option id="exec-prefix" value=""/>
-<option id="libdir" value=""/>
-<option id="bindir" value=""/>
-<option id="sbindir" value=""/>
-<option id="includedir" value=""/>
-<option id="datadir" value=""/>
-<option id="sysconfdir" value=""/>
-<option id="infodir" value=""/>
-<option id="mandir" value=""/>
-<option id="srcdir" value=""/>
-<option id="localstatedir" value=""/>
-<option id="sharedstatedir" value=""/>
-<option id="libexecdir" value=""/>
-<option id="oldincludedir" value=""/>
-<option id="program-prefix" value=""/>
-<option id="program-suffix" value=""/>
-<option id="program-transform-name" value=""/>
-<option id="enable-maintainer-mode" value="false"/>
-<flag id="CFLAGS">
-<flagvalue id="cflags-debug" value="false"/>
-<flagvalue id="cflags-gprof" value="false"/>
-<flagvalue id="cflags-gcov" value="false"/>
-</flag>
-<option id="user" value="--with-llvmsrc=/home/koutheir/PhD/VMKit/llvm --with-llvmobj=/home/koutheir/PhD/VMKit/llvm --with-gnu-classpath-libs=/home/koutheir/PhD/VMKit/classpath/lib --with-gnu-classpath-glibj=/usr/local/classpath/share/classpath/glibj.zip"/>
-<option id="autogen" value="autogen.sh"/>
-<option id="autogenOpts" value=""/>
-</configuration>
-</configurations>

Removed: vmkit/trunk/.cproject
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/.cproject?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/.cproject (original)
+++ vmkit/trunk/.cproject (removed)
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?>
-
-<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
-	<storageModule moduleId="org.eclipse.cdt.core.settings">
-		<cconfiguration id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986">
-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986" moduleId="org.eclipse.cdt.core.settings" name="Build (GNU)">
-				<externalSettings/>
-				<extensions>
-					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-					<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-				</extensions>
-			</storageModule>
-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.linuxtools.cdt.autotools.core.buildArtefactType.autotools" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.linuxtools.cdt.autotools.core.buildArtefactType.autotools" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986" name="Build (GNU)" parent="org.eclipse.linuxtools.cdt.autotools.core.configuration.build">
-					<folderInfo id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986." name="/" resourcePath="">
-						<toolChain id="org.eclipse.linuxtools.cdt.autotools.core.toolChain.584677636" name="GNU Autotools Toolchain" superClass="org.eclipse.linuxtools.cdt.autotools.core.toolChain">
-							<targetPlatform id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.targetPlatform.1925251472" isAbstract="false" name="GNU Autotools Target Platform" superClass="org.eclipse.linuxtools.cdt.autotools.core.toolchain.targetPlatform"/>
-							<builder arguments="-j12 ENABLE_OPTIMIZED=0 REQUIRES_FRAME_POINTER=1 KEEP_SYMBOLS=1 DEBUG_RUNTIME=1 DEBUG_SYMBOLS=1" command="make" id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.builder.801093873" keepEnvironmentInBuildfile="false" managedBuildOn="true" superClass="org.eclipse.linuxtools.cdt.autotools.core.toolchain.builder"/>
-							<tool id="org.eclipse.linuxtools.cdt.autotools.core.gnu.toolchain.tool.configure.618411967" name="configure" superClass="org.eclipse.linuxtools.cdt.autotools.core.gnu.toolchain.tool.configure">
-								<option id="org.eclipse.linuxtools.cdt.autotools.core.option.configure.name.182416725" name="Name" superClass="org.eclipse.linuxtools.cdt.autotools.core.option.configure.name" value="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986" valueType="string"/>
-							</tool>
-							<tool id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.autogen.783487933" name="autogen.sh" superClass="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.autogen"/>
-							<tool id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gcc.1530203096" name="GCC C Compiler" superClass="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gcc">
-								<option id="gnu.c.compiler.option.include.paths.1985077212" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
-									<listOptionValue builtIn="false" value="/home/koutheir/PhD/VMKit/llvm/include"/>
-								</option>
-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1841932293" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
-							</tool>
-							<tool id="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gpp.1306149644" name="GCC C++ Compiler" superClass="org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gpp">
-								<option id="gnu.cpp.compiler.option.include.paths.195411303" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
-									<listOptionValue builtIn="false" value="/home/koutheir/PhD/VMKit/llvm/include"/>
-								</option>
-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.773493973" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
-							</tool>
-						</toolChain>
-					</folderInfo>
-				</configuration>
-			</storageModule>
-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-		</cconfiguration>
-	</storageModule>
-	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-		<project id="ijvm.org.eclipse.linuxtools.cdt.autotools.core.projectType.1537789838" name="GNU Autotools" projectType="org.eclipse.linuxtools.cdt.autotools.core.projectType"/>
-	</storageModule>
-	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
-	<storageModule moduleId="scannerConfiguration">
-		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		<scannerConfigBuildInfo instanceId="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986;org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986.;org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gcc.1530203096;cdt.managedbuild.tool.gnu.c.compiler.input.1841932293">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-		</scannerConfigBuildInfo>
-		<scannerConfigBuildInfo instanceId="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986;org.eclipse.linuxtools.cdt.autotools.core.configuration.build.1218053986.;org.eclipse.linuxtools.cdt.autotools.core.toolchain.tool.gpp.1306149644;cdt.managedbuild.tool.gnu.cpp.compiler.input.773493973">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-		</scannerConfigBuildInfo>
-	</storageModule>
-	<storageModule moduleId="refreshScope" versionNumber="1">
-		<resource resourceType="PROJECT" workspacePath="/ijvm"/>
-	</storageModule>
-	<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings">
-		<doc-comment-owner id="org.eclipse.cdt.ui.doxygen">
-			<path value=""/>
-		</doc-comment-owner>
-	</storageModule>
-	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
-		<buildTargets/>
-	</storageModule>
-</cproject>

Removed: vmkit/trunk/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/.project (original)
+++ vmkit/trunk/.project (removed)
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.cdt.autotools.core.genmakebuilderV2</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-			<triggers>clean,full,incremental,</triggers>
-			<arguments>
-				<dictionary>
-					<key>?name?</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.append_environment</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildArguments</key>
-					<value>-j12 ENABLE_OPTIMIZED=0 REQUIRES_FRAME_POINTER=1 KEEP_SYMBOLS=1 DEBUG_RUNTIME=1 DEBUG_SYMBOLS=1</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildCommand</key>
-					<value>make</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.contents</key>
-					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
-					<value>false</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.stopOnError</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
-					<value>false</value>
-				</dictionary>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-			<triggers>full,incremental,</triggers>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.cdt.core.cnature</nature>
-		<nature>org.eclipse.cdt.core.ccnature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-		<nature>org.eclipse.cdt.autotools.core.autotoolsNatureV2</nature>
-	</natures>
-</projectDescription>

Modified: vmkit/trunk/CREDITS.TXT
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/CREDITS.TXT?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/CREDITS.TXT (original)
+++ vmkit/trunk/CREDITS.TXT Thu Apr 25 11:49:31 2013
@@ -35,6 +35,3 @@ N: Gael Thomas
 E: gael.thomas at lip6.fr
 W: http://lip6.fr/Gael.Thomas/
 D: Primary architect of JnJVM
-
-N: Koutheir Attouchi
-E: koutheir at gmail.com

Modified: vmkit/trunk/Makefile.common.in
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.common.in?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/Makefile.common.in (original)
+++ vmkit/trunk/Makefile.common.in Thu Apr 25 11:49:31 2013
@@ -16,47 +16,6 @@ ifeq ($(BUILD_FRAMETABLE), 1)
   BUILT_SOURCES = FrametablesSymbols.inc FrametablesExterns.inc
 endif
   
-ENABLE_OPTIMIZED	:= 0
-REQUIRES_FRAME_POINTER	:= 1
-
-ifeq ($(ENABLE_OPTIMIZED), 0)
-	CFLAGS			+= -O0
-	CXXFLAGS		+= -O0
-
-	LLC_CPP_FLAGS		:= -O=0
-	LLC_ASM_FLAGS		:= -O=0 -asm-verbose
-	LLC_GLIBJ_FLAGS		:=
-	
-	OPT_BC_WITH_GC_FLAGS	:= -inline
-	OPT_MMTK_FLAGS		:=
-	OPT_VMJC_FLAGS		:= -std-compile-opts
-	
-	VMJC_MMTK_FLAGS		:=
-	VMJC_GLIBJ_FLAGS	:= -jit-emit-debug -std-compile-opts
-	
-	PRECOMPILER_FLAGS	:=
-	
-	KEEP_SYMBOLS		:= 1
-	DEBUG_RUNTIME		:= 1
-	DEBUG_SYMBOLS		:= 1
-else
-	CFLAGS			+= -O2 -g0
-	CXXFLAGS		+= -O2 -g0
-	
-	LLC_CPP_FLAGS		:=
-	LLC_ASM_FLAGS		:= -O=2 -disable-debug-info-print
-	LLC_GLIBJ_FLAGS		:= -disable-debug-info-print
-	
-	OPT_BC_WITH_GC_FLAGS	:= -std-compile-opts -strip-debug
-	OPT_MMTK_FLAGS		:= -std-compile-opts -strip-debug
-	OPT_VMJC_FLAGS		:= -std-compile-opts -strip-debug
-	
-	PRECOMPILER_FLAGS	:= -O3
-	
-	VMJC_MMTK_FLAGS		:= -std-compile-opts
-	VMJC_GLIBJ_FLAGS	:= -std-compile-opts
-endif
-
 # Include LLVM's Master Makefile.
 include $(LLVM_OBJ_ROOT)/Makefile.common
 

Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Thu Apr 25 11:49:31 2013
@@ -15,7 +15,7 @@ ifdef VMKIT_RUNTIME
 
 LLVMRuntime.inc : $(LLVMAS) $(LLC) $(VMKIT_RUNTIME)
 	$(Echo) "Building LLVM runtime with $(VMKIT_RUNTIME)"
-	$(Verb) cat $(VMKIT_RUNTIME) | $(LLVMAS) -o - | $(LLC) $(LLC_CPP_FLAGS) -march=cpp -cppgen=contents -o $@
+	$(Verb) cat $(VMKIT_RUNTIME) | $(LLVMAS) -o - | $(LLC) -march=cpp -cppgen=contents -o $@
 
 all-local:: LLVMRuntime.inc
 
@@ -37,18 +37,18 @@ glibj.zip.s : $(LOPT) $(LLC) $(VMJC)
 glibj.zip.bc :
 	$(Echo) "Compiling glibj.zip to llvm"
 	$(Verb) if test -d $(GLIBJ); then \
-	  $(VMJC) -f $(VMJC_GLIBJ_FLAGS) $(GLIBJ)/glibj.zip -o glibj.zip.bc; \
+	  $(VMJC) -f -std-compile-opts $(GLIBJ)/glibj.zip -o glibj.zip.bc; \
 	else \
-	  $(VMJC) -f $(VMJC_GLIBJ_FLAGS) $(GLIBJ) -o glibj.zip.bc; \
+	  $(VMJC) -f -std-compile-opts $(GLIBJ) -o glibj.zip.bc; \
 	fi
 	
 glibj-optimized.zip.bc : glibj.zip.bc
 	$(Echo) "Optimizing glibj.zip"
-	$(Verb) $(LOPT) $(OPT_VMJC_FLAGS) -f glibj.zip.bc -o glibj-optimized.zip.bc
+	$(Verb) $(LOPT) -std-compile-opts -f glibj.zip.bc -o glibj-optimized.zip.bc
 
 glibj.zip.s : glibj-optimized.zip.bc
 	$(Echo) "Compiling glibj.zip.bc to native"
-	$(Verb) $(LLC) $(LLC_GLIBJ_FLAGS) -disable-cfi -relocation-model=pic -disable-fp-elim glibj-optimized.zip.bc -o glibj.zip.s
+	$(Verb) $(LLC) -disable-cfi -relocation-model=pic -disable-fp-elim glibj-optimized.zip.bc -o glibj.zip.s
 
 $(ObjDir)/%.o: %.s $(ObjDir)/.dir $(BUILT_SOURCES)
 	$(Echo) "Compiling $*.s for $(BuildMode) build" $(PIC_FLAG)
@@ -74,22 +74,20 @@ ifeq ($(COMPILE_MMTK), 1)
   all::
 	$(Verb) $(ANT) -buildfile $(PROJ_OBJ_ROOT)/mmtk/java/build.xml
 	$(Echo) Building $(BuildMode) $(JARNAME).jar $(notdir $@)
-	$(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) $(OPT_MMTK_FLAGS) -JITGCPass -f $(LibDir)/MMTKAlloc.bc -o $(LibDir)/MMTKAlloc.bc
-	$(Verb) $(VMJC) $(VMJC_MMTK_FLAGS) -load=$(LibDir)/MMTKRuntime$(SHLIBEXT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic $(PROJ_OBJ_ROOT)/mmtk/java/$(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=$(PROJ_SRC_ROOT)/mmtk/java/vmkit.properties -disable-stubs -assume-compiled
-	$(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) $(OPT_MMTK_FLAGS) -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.bc
+	$(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) -std-compile-opts -JITGCPass -f $(LibDir)/MMTKAlloc.bc -o $(LibDir)/MMTKAlloc.bc
+	$(Verb) $(VMJC) -std-compile-opts -load=$(LibDir)/MMTKRuntime$(SHLIBEXT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic $(PROJ_OBJ_ROOT)/mmtk/java/$(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=$(PROJ_SRC_ROOT)/mmtk/java/vmkit.properties -disable-stubs -assume-compiled
+	$(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -std-compile-opts -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.bc
 	$(Verb) $(LLVMLINK) -o $(LibDir)/FinalMMTk.bc $(LibDir)/MMTKAlloc.bc $(JARNAME)-optimized.bc $(LibDir)/MMTKRuntime.bc
-	$(Verb) $(LOPT) $(LibDir)/FinalMMTk.bc -load=$(LibDir)/StaticGCPass$(SHLIBEXT) $(OPT_MMTK_FLAGS) -StaticGCPass -o $(LibDir)/FinalMMTk.bc
+	$(Verb) $(LOPT) $(LibDir)/FinalMMTk.bc -load=$(LibDir)/StaticGCPass$(SHLIBEXT) -std-compile-opts -StaticGCPass -o $(LibDir)/FinalMMTk.bc
 	$(Verb) $(MKDIR) $(ObjDir)
-	$(Verb) $(LLC) $(LLC_ASM_FLAGS) -disable-fp-elim -disable-cfi -load=$(LibDir)/StaticGCPrinter$(SHLIBEXT) $(LibDir)/FinalMMTk.bc -o $(ObjDir)/FinalMMTk.s
-	$(Verb) $(GREP) -v '\.loc[^0-9]\+[0-9]\+ 0' $(ObjDir)/FinalMMTk.s > $(ObjDir)/FinalMMTk.s.remove_invalid_dot_loc
-	$(Verb) $(MV) -f $(ObjDir)/FinalMMTk.s.remove_invalid_dot_loc $(ObjDir)/FinalMMTk.s
+	$(Verb) $(LLC) -disable-fp-elim -disable-cfi -disable-debug-info-print -load=$(LibDir)/StaticGCPrinter$(SHLIBEXT) $(LibDir)/FinalMMTk.bc -o $(ObjDir)/FinalMMTk.s
 	$(Verb) $(LLVMCC) -c $(ObjDir)/FinalMMTk.s -o $(ObjDir)/FinalMMTk.o
 	$(Verb) $(Archive) $(LibDir)/libFinalMMTk.a $(ObjDir)/FinalMMTk.o
 	$(Verb) $(Ranlib) $(LibDir)/libFinalMMTk.a
-	$(Verb) $(LLC) $(LLC_CPP_FLAGS) -march=cpp -cppgen=function -cppfor=gcmalloc $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkMallocInline.inc
-	$(Verb) $(LLC) $(LLC_CPP_FLAGS) -march=cpp -cppgen=function -cppfor=fieldWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkFieldWriteInline.inc
-	$(Verb) $(LLC) $(LLC_CPP_FLAGS) -march=cpp -cppgen=function -cppfor=arrayWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkArrayWriteInline.inc
-	$(Verb) $(LLC) $(LLC_CPP_FLAGS) -march=cpp -cppgen=function -cppfor=nonHeapWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkNonHeapWriteInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=gcmalloc $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkMallocInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=fieldWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkFieldWriteInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=arrayWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkArrayWriteInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=nonHeapWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkNonHeapWriteInline.inc
 endif
 
 clean-local::
@@ -110,11 +108,11 @@ AModule           := $(LibDir)/lib$(MODU
 
 $(ObjectsBCWithGC): $(ObjDir)/%_gc.bc: $(ObjDir)/%.ll $(LOPT)
 	$(Echo) "Compiling $*.ll to $*.bc for $(BuildMode) build (bytecode)"
-	$(Verb) $(LOPT) $< -load=$(VMKIT_OBJ_ROOT)/$(BuildMode)/lib/StaticGCPass$(SHLIBEXT) $(OPT_BC_WITH_GC_FLAGS) -StaticGCPass -o $@
+	$(Verb) $(LOPT) $< -load=$(VMKIT_OBJ_ROOT)/$(BuildMode)/lib/StaticGCPass$(SHLIBEXT) -std-compile-opts -StaticGCPass -o $@
 
 $(ObjectsSWithGC): $(ObjDir)/%_gc.s: $(ObjDir)/%_gc.bc $(LLC)
 	$(Echo) "Compiling $*.bc to $*.s for $(BuildMode) build"
-	$(Verb) $(LLC) $(LLC_ASM_FLAGS) -disable-cfi -disable-fp-elim -load=$(VMKIT_OBJ_ROOT)/$(BuildMode)/lib/StaticGCPrinter$(SHLIBEXT) $< -o $@
+	$(Verb) $(LLC) -disable-cfi -disable-fp-elim -load=$(VMKIT_OBJ_ROOT)/$(BuildMode)/lib/StaticGCPrinter$(SHLIBEXT) $< -o $@
 
 $(ObjectsWithGC): $(ObjDir)/%_gc.o: $(ObjDir)/%_gc.s $(ObjDir)/.dir
 	$(Echo) "Compiling $*.s for $(BuildMode) build" $(PIC_FLAG)

Removed: vmkit/trunk/README.TXT
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/README.TXT?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/README.TXT (original)
+++ vmkit/trunk/README.TXT (removed)
@@ -1,102 +0,0 @@
-http://llvm.org/docs/GettingStarted.html#checkout
-
-===================
-Prepare the system:
-===================
-apt-get install libgconf2-dev libgtk2.0-dev
-
-# To use OpenJDK:
-# apt-get install default-jre default-jdk
-
-==============
-GNU Classpath:
-==============
-wget http://ftp.gnu.org/gnu/classpath/classpath-0.97.2.tar.gz
-tar zxvf classpath-0.97.2.tar.gz
-ln -s classpath-0.97.2 classpath
-cd classpath
-./configure --disable-plugin --disable-examples --disable-Werror
-make -j12
-cd lib
-ln -sf ../native/jni/gtk-peer/.libs/libgtkpeer.so
-ln -sf ../native/jni/gconf-peer/.libs/libgconfpeer.so
-ln -sf ../native/jni/java-io/.libs/libjavaio.so
-ln -sf ../native/jni/java-lang/.libs/libjavalangreflect.so
-ln -sf ../native/jni/java-lang/.libs/libjavalang.so
-ln -sf ../native/jni/java-net/.libs/libjavanet.so
-ln -sf ../native/jni/java-nio/.libs/libjavanio.so
-ln -sf ../native/jni/java-util/.libs/libjavautil.so
-
-# Go root
-# make install
-
-=====
-LLVM:
-=====
-
-Notice:
-
-LLVM revision 158308 is known to work.
-
-Get it (git):
-
-git clone http://llvm.org/git/llvm.git
-cd llvm/tools
-git clone http://llvm.org/git/clang.git
-cd clang
-git config branch.master.rebase true
-cd ../..
-git config branch.master.rebase true
-
-Get it (svn):
-
-svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
-cd llvm/tools
-svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
-cd ../projects
-svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
-cd ..
-
-Patch it:
-
-cd llvm
-patch -p0 < ../llvm.patch
-
-Make it (release mode):
-
-./configure --enable-optimized --enable-assertions --enable-jit --enable-threads --enable-pthreads --enable-pic --enable-targets=x86,cpp --disable-docs --disable-doxygen
-make -j12 ENABLE_OPTIMIZED=1 BUILD_EXAMPLES=0 ENABLE_DOCS=0
-ln -s Release+Asserts Debug+Asserts
-
-Enable debug compilation:
-
-nano Makefile.config
-# Comment out:
-# ENABLE_OPTIMIZED=1
-# Uncomment:
-# DEBUG_RUNTIME = 1
-# DEBUG_SYMBOLS = 1
-# Insert:
-# KEEP_SYMBOLS=1
-
-Make it (debug mode):
-
-./configure --disable-optimized --enable-assertions --enable-debug-runtime --enable-debug-symbols --enable-keep-symbols --enable-jit --enable-threads --enable-pthreads --enable-pic --enable-targets=x86,cpp --disable-docs --disable-doxygen
-make -j12 ENABLE_OPTIMIZED=0 BUILD_EXAMPLES=0 ENABLE_DOCS=0
-
-======
-VMKit:
-======
-
-Get it (svn):
-
-svn co http://llvm.org/svn/llvm-project/vmkit/trunk vmkit
-
-Get it (git):
-
-git clone git+ssh://koutheir@scm.gforge.inria.fr//gitroot/vmkit2/vmkit2.git
-
-Make it (debug mode):
-
-./configure --with-llvmsrc=/home/koutheir/PhD/VMKit/llvm --with-llvmobj=/home/koutheir/PhD/VMKit/llvm --with-gnu-classpath-libs=/home/koutheir/PhD/VMKit/classpath/lib --with-gnu-classpath-glibj=/usr/local/classpath/share/classpath/glibj.zip
-make -j12 ENABLE_OPTIMIZED=0 REQUIRES_FRAME_POINTER=1 KEEP_SYMBOLS=1 DEBUG_RUNTIME=1 DEBUG_SYMBOLS=1

Modified: vmkit/trunk/include/j3/J3Intrinsics.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/J3Intrinsics.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/j3/J3Intrinsics.h (original)
+++ vmkit/trunk/include/j3/J3Intrinsics.h Thu Apr 25 11:49:31 2013
@@ -31,7 +31,6 @@ public:
   llvm::Type* JavaArrayObjectType;
   
   llvm::Type* VTType;
-  llvm::Type* ObjectHeaderType;
   llvm::Type* JavaObjectType;
   llvm::Type* JavaArrayType;
   llvm::Type* JavaCommonClassType;
@@ -105,7 +104,7 @@ public:
   
   llvm::Constant* JavaArraySizeOffsetConstant;
   llvm::Constant* JavaArrayElementsOffsetConstant;
-  llvm::Constant* HeaderObjectLockOffsetConstant;
+  llvm::Constant* JavaObjectLockOffsetConstant;
   llvm::Constant* JavaObjectVTOffsetConstant;
 
   llvm::Constant* OffsetAccessInCommonClassConstant;

Modified: vmkit/trunk/include/j3/JavaAOTCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaAOTCompiler.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaAOTCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaAOTCompiler.h Thu Apr 25 11:49:31 2013
@@ -17,7 +17,7 @@
 namespace j3 {
 
 class ArrayObject;
-class JavaAttribute;
+class Attribut;
 class ClassBytes;
 class JnjvmBootstrapLoader;
 
@@ -26,7 +26,7 @@ using vmkit::UTF8;
 class JavaAOTCompiler : public JavaLLVMCompiler {
 
 public:
-  JavaAOTCompiler(const std::string &ModuleID, bool compilingMMTk=false);
+  JavaAOTCompiler(const std::string &ModuleID);
   
   virtual bool isStaticCompiling() {
     return true;
@@ -36,8 +36,8 @@ public:
     return true;
   }
   
-  virtual JavaCompiler* Create(const std::string& ModuleID, bool compilingMMTk=false) {
-    return new JavaAOTCompiler(ModuleID, compilingMMTk);
+  virtual JavaCompiler* Create(const std::string& ModuleID) {
+    return new JavaAOTCompiler(ModuleID);
   }
   
   virtual void* materializeFunction(JavaMethod* meth, Class* customizeFor) {
@@ -64,7 +64,7 @@ public:
   virtual llvm::Constant* getClassBytes(const UTF8* name, ClassBytes* bytes);
   virtual llvm::Constant* getJavaClass(CommonClass* cl);
   virtual llvm::Constant* getJavaClassPtr(CommonClass* cl);
-  virtual llvm::Constant* getStaticInstance(Class* cl, isolate_id_t isolateID = CURRENT_ISOLATE);
+  virtual llvm::Constant* getStaticInstance(Class* cl);
   virtual llvm::Constant* getVirtualTable(JavaVirtualTable*);
   virtual llvm::Constant* getMethodInClass(JavaMethod* meth);
   
@@ -83,17 +83,16 @@ public:
 private:
 
   //--------------- Static compiler specific functions -----------------------//
-  llvm::Constant* CreateConstantFromTaskClassMirrorArray(Class* cl);
   llvm::Constant* CreateConstantFromVT(JavaVirtualTable* VT);
   llvm::Constant* CreateConstantFromUTF8(const UTF8* val);
   llvm::Constant* CreateConstantFromCommonClass(CommonClass* cl);
   llvm::Constant* CreateConstantFromClass(Class* cl);
   llvm::Constant* CreateConstantFromClassPrimitive(ClassPrimitive* cl);
   llvm::Constant* CreateConstantFromClassArray(ClassArray* cl);
-  llvm::Constant* CreateConstantFromAttribute(JavaAttribute& attribute);
+  llvm::Constant* CreateConstantFromAttribut(Attribut& attribut);
   llvm::Constant* CreateConstantFromJavaField(JavaField& field);
   llvm::Constant* CreateConstantFromJavaMethod(JavaMethod& method);
-  llvm::Constant* CreateConstantFromStaticInstance(Class* cl, isolate_id_t isolateID = CURRENT_ISOLATE);
+  llvm::Constant* CreateConstantFromStaticInstance(Class* cl);
   llvm::Constant* CreateConstantFromJavaString(JavaString* str);
   llvm::Constant* CreateConstantForBaseObject(CommonClass* cl);
   llvm::Constant* CreateConstantFromJavaObject(JavaObject* obj);
@@ -117,7 +116,7 @@ private:
   std::map<const ClassArray*, llvm::GlobalVariable*> arrayClasses;
   std::map<const CommonClass*, llvm::Constant*> javaClasses;
   std::map<const JavaVirtualTable*, llvm::Constant*> virtualTables;
-  std::map<const Class*, llvm::Constant*> taskClassMirrors;
+  std::map<const Class*, llvm::Constant*> staticInstances;
   std::map<const JavaConstantPool*, llvm::Constant*> resolvedConstantPools;
   std::map<const JavaString*, llvm::Constant*> strings;
   std::map<const JavaMethod*, llvm::Constant*> nativeFunctions;
@@ -152,7 +151,7 @@ private:
     virtual_table_iterator;
   
   typedef std::map<const Class*, llvm::Constant*>::iterator
-    task_class_mirror_iterator;
+    static_instance_iterator;
   
   typedef std::map<const JavaConstantPool*, llvm::Constant*>::iterator
     resolved_constant_pool_iterator;

Modified: vmkit/trunk/include/j3/JavaCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaCompiler.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaCompiler.h Thu Apr 25 11:49:31 2013
@@ -36,7 +36,7 @@ public:
   
   vmkit::BumpPtrAllocator allocator;
 
-  virtual JavaCompiler* Create(const std::string&, bool compilingMMTk=false) {
+  virtual JavaCompiler* Create(const std::string&) {
     return this;
   }
   

Modified: vmkit/trunk/include/j3/JavaJITCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaJITCompiler.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaJITCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaJITCompiler.h Thu Apr 25 11:49:31 2013
@@ -41,7 +41,7 @@ public:
   llvm::ExecutionEngine* executionEngine;
   llvm::GCModuleInfo* GCInfo;
 
-  JavaJITCompiler(const std::string &ModuleID, bool compilingMMTk=false);
+  JavaJITCompiler(const std::string &ModuleID);
   ~JavaJITCompiler();
   
   virtual bool isStaticCompiling() {
@@ -64,7 +64,7 @@ public:
   virtual llvm::Constant* getNativeClass(CommonClass* cl);
   virtual llvm::Constant* getJavaClass(CommonClass* cl);
   virtual llvm::Constant* getJavaClassPtr(CommonClass* cl);
-  virtual llvm::Constant* getStaticInstance(Class* cl, isolate_id_t isolateID = CURRENT_ISOLATE);
+  virtual llvm::Constant* getStaticInstance(Class* cl);
   virtual llvm::Constant* getVirtualTable(JavaVirtualTable*);
   virtual llvm::Constant* getMethodInClass(JavaMethod* meth);
   
@@ -79,7 +79,7 @@ public:
                                    bool stat, llvm::BasicBlock* insert) = 0;
   virtual word_t getPointerOrStub(JavaMethod& meth, int type) = 0;
 
-  static JavaJITCompiler* CreateCompiler(const std::string& ModuleID, bool compilingMMTk=false);
+  static JavaJITCompiler* CreateCompiler(const std::string& ModuleID);
 };
 
 class JavaJ3LazyJITCompiler : public JavaJITCompiler {
@@ -89,11 +89,11 @@ public:
                                    bool stat, llvm::BasicBlock* insert);
   virtual word_t getPointerOrStub(JavaMethod& meth, int side);
   
-  virtual JavaCompiler* Create(const std::string& ModuleID, bool compilingMMTk=false) {
-    return new JavaJ3LazyJITCompiler(ModuleID, compilingMMTk);
+  virtual JavaCompiler* Create(const std::string& ModuleID) {
+    return new JavaJ3LazyJITCompiler(ModuleID);
   }
 
-  JavaJ3LazyJITCompiler(const std::string& ModuleID, bool compilingMMTk=false);
+  JavaJ3LazyJITCompiler(const std::string& ModuleID);
 };
 
 } // end namespace j3

Modified: vmkit/trunk/include/j3/JavaLLVMCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaLLVMCompiler.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaLLVMCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaLLVMCompiler.h Thu Apr 25 11:49:31 2013
@@ -51,7 +51,7 @@ protected:
   llvm::Module* TheModule;
   llvm::DIBuilder* DebugFactory;  
   J3Intrinsics JavaIntrinsics;
-  const llvm::DataLayout* TheDataLayout;
+  const llvm::TargetData* TheTargetData;
 
 private:  
   bool enabledException;

Modified: vmkit/trunk/include/j3/LLVMInfo.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/LLVMInfo.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/j3/LLVMInfo.h (original)
+++ vmkit/trunk/include/j3/LLVMInfo.h Thu Apr 25 11:49:31 2013
@@ -86,7 +86,7 @@ private:
   llvm::Constant* offsetConstant;
   llvm::FunctionType* functionType;
   std::map<Class*, llvm::Function*> customizedVersions;
-
+  
 public:
   llvm::Function* getMethod(Class* customizeFor);
   llvm::Constant* getOffset();
@@ -107,10 +107,6 @@ public:
 
   void setCustomizedVersion(Class* customizeFor, llvm::Function* F);
 
-  typedef std::map<Class*, llvm::Function*>	customizedVersionsType;
-  typedef customizedVersionsType::iterator	customizedVersionsIterator;
-  customizedVersionsType* getCustomizedVersions() {return &customizedVersions;}
-
   friend class JavaAOTCompiler;
 };
 

Modified: vmkit/trunk/include/vmkit/CollectionRV.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/CollectionRV.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/CollectionRV.h (original)
+++ vmkit/trunk/include/vmkit/CollectionRV.h Thu Apr 25 11:49:31 2013
@@ -62,7 +62,7 @@ public:
   virtual void synchronize() = 0;
 
   virtual void join() = 0;
-  virtual void joinAfterUncooperative(void* SP) = 0;
+  virtual void joinAfterUncooperative(word_t SP) = 0;
   virtual void joinBeforeUncooperative() = 0;
 
   virtual void addThread(Thread* th) = 0;
@@ -74,7 +74,7 @@ public:
   void synchronize();
 
   void join();
-  void joinAfterUncooperative(void* SP);
+  void joinAfterUncooperative(word_t SP);
   void joinBeforeUncooperative();
   void addThread(Thread* th);
 

Modified: vmkit/trunk/include/vmkit/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/JIT.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/JIT.h (original)
+++ vmkit/trunk/include/vmkit/JIT.h Thu Apr 25 11:49:31 2013
@@ -154,7 +154,6 @@ public:
   llvm::Constant* constantFloatMinusZero;
   llvm::Constant* constantDoubleMinusZero;
   llvm::Constant* constantPtrNull;
-  llvm::Constant* constantPtr32Null;
   llvm::Constant* constantPtrLogSize;
   llvm::Constant* constantThreadIDMask;
   llvm::Constant* constantStackOverflowMask;

Modified: vmkit/trunk/include/vmkit/Locks.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/Locks.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/Locks.h (original)
+++ vmkit/trunk/include/vmkit/Locks.h Thu Apr 25 11:49:31 2013
@@ -175,19 +175,6 @@ public:
   void unlock() { release(); }
 };
 
-class LockGuard
-{
-protected:
-	Lock& lock;
-
-private:	//Disable these consructors
-	LockGuard();
-	LockGuard(const LockGuard&);
-
-public:
-	inline LockGuard(Lock& l) : lock(l) {lock.lock();}
-	virtual ~LockGuard() {lock.unlock();}
-};
 
 } // end namespace vmkit
 

Modified: vmkit/trunk/include/vmkit/MethodInfo.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/MethodInfo.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/MethodInfo.h (original)
+++ vmkit/trunk/include/vmkit/MethodInfo.h Thu Apr 25 11:49:31 2013
@@ -19,7 +19,7 @@ namespace vmkit {
 class FrameInfo {
 public:
   void* Metadata;
-  void* ReturnAddress;
+  word_t ReturnAddress;
   uint16_t SourceIndex;
   uint16_t FrameSize;
   uint16_t NumLiveOffsets;
@@ -28,9 +28,9 @@ public:
  
 class MethodInfoHelper {
 public:
-  static void print(void* ip, void* callFrame);
+  static void print(word_t ip, word_t addr);
 
-  static void scan(word_t closure, FrameInfo* FI, void* ip, void* callFrame);
+  static void scan(word_t closure, FrameInfo* FI, word_t ip, word_t addr);
   
   static uint32_t FrameInfoSize(uint32_t NumOffsets) {
     uint32_t FrameInfoSize = sizeof(FrameInfo) + (NumOffsets - 1) * sizeof(int16_t);

Modified: vmkit/trunk/include/vmkit/ObjectLocks.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/ObjectLocks.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/ObjectLocks.h (original)
+++ vmkit/trunk/include/vmkit/ObjectLocks.h Thu Apr 25 11:49:31 2013
@@ -59,7 +59,7 @@ public:
     state = StateRunning;
   }
 
-  bool wait(gc* object, LockSystem& table, struct timeval* info, bool& timed);
+  bool wait(gc* object, LockSystem& table, struct timeval* info, bool timed);
   void notify(gc* object, LockSystem& table);
   void notifyAll(gc* object, LockSystem& table);
 };

Modified: vmkit/trunk/include/vmkit/System.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/System.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/System.h (original)
+++ vmkit/trunk/include/vmkit/System.h Thu Apr 25 11:49:31 2013
@@ -95,7 +95,7 @@ const word_t kVmkitThreadMask = 0xF00000
 
 const word_t kGCMemorySize = 0x30000000;  
 
-#define TRY { vmkit::ExceptionBuffer __buffer__; if (!SETJMP(__buffer__.getSetJmpBuffer()))
+#define TRY { vmkit::ExceptionBuffer __buffer__; if (!SETJMP(__buffer__.buffer))
 #define CATCH else
 #define IGNORE else { vmkit::Thread::get()->clearException(); }}
 #define END_CATCH }
@@ -124,8 +124,8 @@ public:
     return ptr;
   }
 
-  static size_t GetAlternativeStackSize() {
-    static size_t size = PageAlignUp(SIGSTKSZ);
+  static word_t GetAlternativeStackSize() {
+    static word_t size = PageAlignUp(SIGSTKSZ);
     return size;
   }
 
@@ -144,11 +144,31 @@ public:
     return kThreadStart;
   }
 
-  static size_t GetPageSize() {
-    static size_t pagesize = getpagesize();
+  static uint32_t GetPageSize() {
+    static uint32_t pagesize = getpagesize();
     return pagesize;
   }
 
+  static word_t GetCallerAddress() {
+#if defined(ARCH_X86) || defined(ARCH_X64)
+    return (word_t)__builtin_frame_address(0);
+#else
+    return ((word_t*)__builtin_frame_address(0))[0];
+#endif
+  }
+
+  static word_t GetCallerOfAddress(word_t addr) {
+    return ((word_t*)addr)[0];
+  }
+
+  static word_t GetIPFromCallerAddress(word_t addr) {
+#if defined(MACOS_OS) && defined(ARCH_PPC)
+    return ((word_t*)addr)[2];
+#else
+    return ((word_t*)addr)[1];
+#endif
+  }
+
   static int SetJmp(jmp_buf buffer) {
 #if defined(MACOS_OS)
     return _setjmp(buffer);

Modified: vmkit/trunk/include/vmkit/Thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/Thread.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/Thread.h (original)
+++ vmkit/trunk/include/vmkit/Thread.h Thu Apr 25 11:49:31 2013
@@ -19,114 +19,11 @@
 
 #include "vmkit/System.h"
 
-typedef uint32_t				isolate_id_t;
-#define CURRENT_ISOLATE			((isolate_id_t)(-1))
-#define IsValidIsolateID(iid)	((iid) != CURRENT_ISOLATE)
 
 namespace vmkit {
 
 class FrameInfo;
 class VirtualMachine;
-class Thread;
-
-
-class KnownFrame {
-public:
-  void* currentFP;
-  void* currentIP;
-  KnownFrame* previousFrame;
-};
-
-
-enum StackWalkerState {
-	StackWalkerInvalid = 0,
-	StackWalkerValid,
-	StackWalkerValidMetadata
-};
-
-/// StackWalker - This class walks the stack of threads, returning a FrameInfo
-/// object at each iteration.
-///
-class StackWalker
-{
-protected:
-  void* callFrame;
-  KnownFrame* frame;
-  vmkit::Thread* thread;
-  bool onlyReportMetadataEnabledFrames;
-
-public:
-  StackWalker(vmkit::Thread* th, bool only_report_metadata_enabled_frames = false);
-  StackWalker(const StackWalker& obj, bool reset = false);
-
-  StackWalker& operator = (const StackWalker& obj);
-  bool operator == (const StackWalker& obj) const {return (thread == obj.thread) && (callFrame == obj.callFrame);}
-  bool operator != (const StackWalker& obj) const {return !((*this) == obj);}
-  void operator++();
-  void operator--();
-  void* operator*();
-  FrameInfo* get();
-  const FrameInfo* get() const {return const_cast<StackWalker*>(this)->get();}
-  void reset() __attribute__ ((noinline));
-
-  void* getCallFrame() const				{return callFrame;}
-  void* getCallerCallFrame() const;
-  void* getReturnAddress() const			{return getReturnAddressFromCallFrame(callFrame);}
-  KnownFrame* getKnownFrame()				{return frame;}
-  vmkit::Thread* getScannedThread() const	{return thread;}
-  StackWalkerState getState() const;
-  bool isValid() const						{return getState() >= StackWalkerValid;}
-  bool hasMetaData() const					{return getState() == StackWalkerValidMetadata;}
-
-  void* updateReturnAddress(void* newAddr);
-  void* updateCallerFrameAddress(void* newAddr);
-
-  bool isReportingOnlyMetadataEnabledFrames() const {return onlyReportMetadataEnabledFrames;}
-  void reportOnlyMetadataEnabledFrames(bool only_report_metadata_enabled_frames) {onlyReportMetadataEnabledFrames = only_report_metadata_enabled_frames;}
-
-  void dump() const;
-
-  static void* getCallerCallFrameAddress(void* callFrame);
-  static void** getReturnAddressPtrFromCallFrame(void* callFrame);
-  static void* getReturnAddressFromCallFrame(void* callFrame);
-
-#if defined(ARCH_X86) || defined(ARCH_X64)
-#define StackWalker_getCallFrameAddress()	((void*)(__builtin_frame_address(0)))
-#else
-#define StackWalker_getCallFrameAddress()	(*(void**)__builtin_frame_address(0))
-#endif
-
-};
-
-
-class ExceptionBuffer {
-protected:
-	/*
-		WARNING:
-		- Do not change the fields order or type, unless you update LLVM data types.
-		- Do not declare anything as virtual (to avoid generating a Virtual Table).
-	*/
-	void* handlerMethod;
-	uint32_t handlerIsolateID;
-	ExceptionBuffer* previousBuffer;
-	jmp_buf buffer;
-
-public:
-  ExceptionBuffer();
-  ~ExceptionBuffer() {removeFromThreadExceptionList();}
-
-  void addToThreadExceptionList(void* returnAddr);
-  void removeFromThreadExceptionList();
-
-  void* getHandlerMethod() const {return handlerMethod;}
-  isolate_id_t getHandlerIsolateID() const {return handlerIsolateID;}
-
-  ExceptionBuffer* getPrevious() {return previousBuffer;}
-  void setPrevious(ExceptionBuffer* newValue) {previousBuffer = newValue;}
-
-  jmp_buf& getSetJmpBuffer() {return buffer;}
-};
-
 
 /// CircularBase - This class represents a circular list. Classes that extend
 /// this class automatically place their instances in a circular list.
@@ -202,6 +99,14 @@ public:
 };
 
 
+class KnownFrame {
+public:
+  word_t currentFP;
+  word_t currentIP;
+  KnownFrame* previousFrame;
+};
+
+
 class ExceptionBuffer;
 
 /// Thread - This class is the base of custom virtual machines' Thread classes.
@@ -212,7 +117,6 @@ public:
   Thread() {
     lastExceptionBuffer = 0;
     lastKnownFrame = 0;
-    runningDeadIsolate = false;
   }
 
   /// yield - Yield the processor to another thread.
@@ -239,18 +143,17 @@ public:
     return (uint64_t)this;
   }
  
-protected:
+public:
 
   /// IsolateID - The Isolate ID of the thread's VM.
-  isolate_id_t isolateID;
+  size_t IsolateID;
 
-public:
   /// MyVM - The VM attached to this Thread.
   VirtualMachine* MyVM;
 
   /// baseSP - The base stack pointer.
   ///
-  void* baseSP;
+  word_t baseSP;
  
   /// doYield - Flag to tell the thread to yield for GC reasons.
   ///
@@ -267,7 +170,7 @@ public:
   /// get - Get the thread specific data of the current thread.
   ///
   static Thread* get() {
-    return (Thread*)((word_t)StackWalker_getCallFrameAddress() & System::GetThreadIDMask());
+    return (Thread*)(System::GetCallerAddress() & System::GetThreadIDMask());
   }
   
 private:
@@ -276,13 +179,13 @@ private:
   /// interrupted, lastSP is not null and contains the value of the
   /// stack pointer before entering native.
   ///
-  void* lastSP;
+  word_t lastSP;
  
   /// internalThreadID - The implementation specific thread id.
   ///
   void* internalThreadID;
   
-  /// internalThreadStart - The implementation specific thread starter
+  /// internalThreadStart - The implementation sepcific thread starter
   /// function.
   ///
   static void internalThreadStart(vmkit::Thread* th);
@@ -293,32 +196,22 @@ private:
 
 public:
  
-  isolate_id_t getIsolateID() const;
-  void setIsolateID(isolate_id_t newIsolateID);
-  static isolate_id_t getValidIsolateID(isolate_id_t isolateID);
-
-  bool runsDeadIsolate() const;
-  void markRunningDeadIsolate();
-  void setDeadIsolateID();
-
-  bool isCurrentThread();
-
   /// tracer - Does nothing. Used for child classes which may defined
   /// a tracer.
   ///
   virtual void tracer(word_t closure) {}
   void scanStack(word_t closure);
   
-  void* getLastSP() { return lastSP; }
-  void  setLastSP(void* V) { lastSP = V; }
+  word_t getLastSP() { return lastSP; }
+  void  setLastSP(word_t V) { lastSP = V; }
   
   void joinRVBeforeEnter();
-  void joinRVAfterLeave(void* savedSP);
+  void joinRVAfterLeave(word_t savedSP);
 
   void enterUncooperativeCode(uint16_t level = 0) __attribute__ ((noinline));
-  void enterUncooperativeCode(void* SP);
+  void enterUncooperativeCode(word_t SP);
   void leaveUncooperativeCode();
-  void* waitOnSP();
+  word_t waitOnSP();
 
 
   /// clearException - Clear any pending exception of the current thread.
@@ -326,7 +219,7 @@ public:
     internalClearException();
   }
 
-  bool isVmkitThread() const {
+  bool isVmkitThread() {
     if (!baseAddr) return false;
     else return (((word_t)this) & System::GetVmkitThreadMask()) == baseAddr;
   }
@@ -343,7 +236,7 @@ public:
   /// stackOverflow - Returns if there is a stack overflow in Java land.
   ///
   bool stackOverflow() {
-    return ((word_t)StackWalker_getCallFrameAddress() & StackOverflowMask) == 0;
+    return (System::GetCallerAddress() & StackOverflowMask) == 0;
   }
 
   /// operator new - Allocate the Thread object as well as the stack for this
@@ -366,7 +259,7 @@ public:
  
   /// getFrameContext - Fill the buffer with frames currently on the stack.
   ///
-  void getFrameContext(void** buffer);
+  void getFrameContext(word_t* buffer);
   
   /// getFrameContextLength - Get the length of the frame context.
   ///
@@ -387,27 +280,62 @@ public:
   void startUnknownFrame(KnownFrame& F) __attribute__ ((noinline));
   void endUnknownFrame();
 
-  void* GetAlternativeStackEnd() {
-    return (void*)((intptr_t)this + System::GetPageSize());
+  word_t GetAlternativeStackEnd() {
+    return (word_t)this + System::GetPageSize();
+  }
+
+  word_t GetAlternativeStackStart() {
+    return GetAlternativeStackEnd() + System::GetAlternativeStackSize();
+  }
+
+  bool IsStackOverflowAddr(word_t addr) {
+    word_t stackOverflowCheck = GetAlternativeStackStart();
+    return addr > stackOverflowCheck &&
+      addr <= stackOverflowCheck + System::GetPageSize();
+  }
+};
+
+class ExceptionBuffer {
+public:
+  ExceptionBuffer() {
+    init();
+  }
+
+  void init() {
+    Thread* th = Thread::get();
+    previousBuffer = th->lastExceptionBuffer;
+    th->lastExceptionBuffer = this;
   }
 
-  void* GetAlternativeStackStart() {
-    return (void*)((intptr_t)GetAlternativeStackEnd() + System::GetAlternativeStackSize());
+  ~ExceptionBuffer() {
+    remove();
   }
 
-  bool IsStackOverflowAddr(void* addr) {
-    void* stackOverflowCheck = GetAlternativeStackStart();
-    return (addr > stackOverflowCheck) &&
-      addr <= (void*)((intptr_t)stackOverflowCheck + System::GetPageSize());
+  void remove() {
+    Thread* th = Thread::get();
+    assert(th->lastExceptionBuffer == this && "Wrong exception buffer");
+    th->lastExceptionBuffer = previousBuffer;
   }
 
-  virtual void throwNullPointerException(void* methodIP) const;
-  virtual void throwDeadIsolateException() const {}
+  jmp_buf buffer;
+  ExceptionBuffer* previousBuffer;
+};
+
+/// StackWalker - This class walks the stack of threads, returning a FrameInfo
+/// object at each iteration.
+///
+class StackWalker {
+public:
+  word_t addr;
+  word_t ip;
+  KnownFrame* frame;
+  vmkit::Thread* thread;
 
-  virtual void runAfterLeavingGarbageCollectorRendezVous() {}
+  StackWalker(vmkit::Thread* th) __attribute__ ((noinline));
+  void operator++();
+  word_t operator*();
+  FrameInfo* get();
 
-protected:
-  bool runningDeadIsolate;
 };
 
 

Modified: vmkit/trunk/include/vmkit/UTF8.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/UTF8.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/UTF8.h (original)
+++ vmkit/trunk/include/vmkit/UTF8.h Thu Apr 25 11:49:31 2013
@@ -2,8 +2,6 @@
 #define _UTF8_INTERNAL_H_
 
 #include <map>
-#include <iostream>
-#include <string>
 #include "vmkit/Allocator.h"
 #include "vmkit/VmkitDenseMap.h"
 #include "vmkit/VmkitDenseSet.h"
@@ -24,7 +22,7 @@ private:
   
 public:
   /// size - The (constant) size of the UTF8.
-  int32_t size;
+  ssize_t size;
 
   /// elements - Elements of this UTF8.
   /// The size should be set to zero, but this is invalid C99.
@@ -63,11 +61,6 @@ public:
   UTF8(sint32 n) {
     size = n;
   }
-
-  std::string toString() const;
-  friend std::ostream& operator << (std::ostream& out, const UTF8& utf8) {return out << utf8.toString();}
-  void dump() const __attribute__((noinline));
-  int compare(const char *) const;
 };
 
 extern "C" const UTF8 TombstoneKey;

Modified: vmkit/trunk/include/vmkit/VirtualMachine.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/VirtualMachine.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/VirtualMachine.h (original)
+++ vmkit/trunk/include/vmkit/VirtualMachine.h Thu Apr 25 11:49:31 2013
@@ -32,7 +32,7 @@ public:
   /// used when walking the stack so that VMKit knows which applicative method
   /// is executing on the stack.
   ///
-  llvm::DenseMap<void*, FrameInfo*> Functions;
+  llvm::DenseMap<word_t, FrameInfo*> Functions;
 
   /// FunctionMapLock - Spin lock to protect the Functions map.
   ///
@@ -40,12 +40,12 @@ public:
 
   /// IPToFrameInfo - Map a code start instruction instruction to the FrameInfo.
   ///
-  FrameInfo* IPToFrameInfo(void* ip);
+  FrameInfo* IPToFrameInfo(word_t ip);
 
   /// addFrameInfo - A new instruction pointer in the function map.
   ///
-  void addFrameInfo(void* ip, FrameInfo* meth);
-  void addFrameInfoNoLock(void* ip, FrameInfo* meth) {
+  void addFrameInfo(word_t ip, FrameInfo* meth);
+  void addFrameInfoNoLock(word_t ip, FrameInfo* meth) {
     Functions[ip] = meth;
   }
   /// removeFrameInfos - Remove all FrameInfo owned by the given owner.
@@ -160,7 +160,6 @@ public:
   /// endCollection - Code after running a GC.
   ///
   virtual void endCollection() {}
-  virtual void endCollectionBeforeUnblockingThreads() {}
   
   /// scanWeakReferencesQueue - Scan all weak references. Called by the GC
   /// before scanning the finalization queue.
@@ -200,8 +199,6 @@ public:
   ///
   virtual const char* getObjectTypeName(gc* object) { return "An object"; }
 
-  virtual bool resetDeadIsolateReference(void* source, void** objectRef) {return false;}
-
   /// rendezvous - The rendezvous implementation for garbage collection.
   ///
   CooperativeCollectionRV rendezvous;
@@ -211,15 +208,14 @@ public:
 //===----------------------------------------------------------------------===//
 
   FunctionMap FunctionsCache;
-  FrameInfo* IPToFrameInfo(void* ip) {
+  FrameInfo* IPToFrameInfo(word_t ip) {
     return FunctionsCache.IPToFrameInfo(ip);
   }
   void removeFrameInfos(void* owner) {
     FunctionsCache.removeFrameInfos(owner);
   }
 
-  virtual void printMethod(FrameInfo* FI, void* ip, void* callFrame) = 0;
-  virtual void printCallStack(const StackWalker& walker) = 0;
+  virtual void printMethod(FrameInfo* FI, word_t ip, word_t addr) = 0;
   
 //===----------------------------------------------------------------------===//
 // (4) Launch-related methods.
@@ -235,7 +231,6 @@ public:
 
   virtual void nullPointerException() = 0;
   virtual void stackOverflowError() = 0;
-  virtual void deadIsolateException(void* methodIP, bool immediate = true) = 0;
 };
 
 } // end namespace vmkit

Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.cpp (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.cpp Thu Apr 25 11:49:31 2013
@@ -76,12 +76,4 @@ JavaObjectField* JavaObjectField::create
 
   return ret;
 }
-
-UserClass* JavaObjectConstructor::getClass(JavaObjectConstructor* self)
-{
-  llvm_gcroot(self, 0);
-  UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
-  return cls->asClass();
-}
-
 }

Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathReflect.h Thu Apr 25 11:49:31 2013
@@ -138,7 +138,11 @@ public:
   
   static JavaMethod* getInternalMethod(JavaObjectConstructor* self);
   
-  static UserClass* getClass(JavaObjectConstructor* self);
+  static UserClass* getClass(JavaObjectConstructor* self) {
+    llvm_gcroot(self, 0);
+    UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass); 
+    return cls->asClass();
+  }
 
   static JavaObjectConstructor* createFromInternalConstructor(JavaMethod* cons, int i);
 };
@@ -157,18 +161,9 @@ public:
   static void setVmdata(JavaObjectVMThread* vmthread,
                         JavaThread* internal_thread) {
     llvm_gcroot(vmthread, 0);
-    assert(internal_thread && "Invalid internal thread");
     vmthread->vmdata = internal_thread;
   }
 
-  friend std::ostream& operator << (std::ostream& os, JavaObjectVMThread& threadObj)
-  {
-	  for (int retries = 10; (!threadObj.vmdata) && (retries >= 0); --retries)
-		  usleep(100);
-	  if (!threadObj.vmdata)
-		  return os;
-	  return os << *threadObj.vmdata;
-  }
 };
 
 

Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMObject.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMObject.inc?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMObject.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMObject.inc Thu Apr 25 11:49:31 2013
@@ -12,8 +12,6 @@
 #include "Classpath.h"
 #include "Jnjvm.h"
 
-#include <sstream>
-
 using namespace j3;
 
 extern "C" {
@@ -59,31 +57,6 @@ JavaObject* obj) {
   return res;
 }
 
-void printStackTrace(JavaObject *obj, const char *methName, int skip = 3, int level_deep = 1)
-{
-	j3::JavaThread *thread = j3::JavaThread::get();
-
-	std::ostringstream log;
-	log << '[' << *thread << "] " << methName << " obj=" << obj << " class=" << *JavaObject::getClass(obj)->name;
-
-	const UTF8* clName = JavaObject::getClass(obj)->name;
-	if (!clName->compare("java/lang/VMThread") || !clName->compare("java/lang/Thread"))
-		log << '(' << *static_cast<JavaObjectVMThread*>(obj) << ')';
-
-	log << std::endl;
-	std::cerr << log.str();
-
-	j3::Jnjvm *vm = thread->getJVM();
-	vmkit::StackWalker Walker(thread);
-	for (vmkit::FrameInfo* FI = NULL; (level_deep > 0) && ((FI = Walker.get()) != NULL); ++Walker) {
-		if (!FI->Metadata) continue;
-		if (skip > 0) {--skip; continue;}
-
-		vm->printMethod(FI, Walker.getReturnAddress(), Walker.getCallFrame());
-		--level_deep;
-	}
-}
-
 JNIEXPORT void JNICALL Java_java_lang_VMObject_notifyAll(
 #ifdef NATIVE_JNI
 JNIEnv *env,
@@ -95,7 +68,6 @@ JavaObject* obj) {
 
   BEGIN_NATIVE_EXCEPTION(0)
 
-//  printStackTrace(obj, "notifyAll", 3, 0);
   JavaObject::notifyAll(obj);
 
   END_NATIVE_EXCEPTION
@@ -112,13 +84,9 @@ JavaObject* obj, jlong ms, jint ns) {
   llvm_gcroot(obj, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-/*
-  printStackTrace(obj, "wait", 3, 1);
-  bool notified = JavaObject::wait(obj, ms, ns);
-  if (notified)
-    printStackTrace(obj, "wait_notified", 3, 1);
-*/
+
   JavaObject::wait(obj, ms, ns);
+
   END_NATIVE_EXCEPTION
 }
 
@@ -133,7 +101,6 @@ JavaObject* obj) {
 
   BEGIN_NATIVE_EXCEPTION(0)
 
-//  printStackTrace(obj, "notify", 3, 0);
   JavaObject::notify(obj);
 
   END_NATIVE_EXCEPTION

Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThread.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThread.inc?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThread.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThread.inc Thu Apr 25 11:49:31 2013
@@ -95,9 +95,9 @@ JavaObject* vmThread, sint64 stackSize)
  
   JavaThread* th = new JavaThread(vm);
   if (!th) vm->outOfMemoryError();
+  th->start((void (*)(vmkit::Thread*))start);
   // Now that the thread has been created, initialise its object fields.
   th->initialise(javaThread, vmThread);
-  th->start((void (*)(vmkit::Thread*))start);
 
   END_NATIVE_EXCEPTION
 }

Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThrowable.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThrowable.inc?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThrowable.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/ClasspathVMThrowable.inc Thu Apr 25 11:49:31 2013
@@ -50,7 +50,7 @@ JavaObject* internalFillInStackTrace(Jav
   vmkit::StackWalker Walker(th);
   uint32_t i = 0;
 
-  while (void* ip = *Walker) {
+  while (intptr_t ip = *Walker) {
     ArrayPtr::setElement(result, ip, i);
     ++i;
     ++Walker;
@@ -83,7 +83,7 @@ JavaObject* throwable) {
 }
 
 
-JavaObject* consStackElement(vmkit::FrameInfo* FI, void* ip) {
+JavaObject* consStackElement(vmkit::FrameInfo* FI, intptr_t ip) {
 
   JavaString* methodName = 0;
   JavaString* className = 0;
@@ -100,7 +100,7 @@ JavaObject* consStackElement(vmkit::Fram
   Class* cl = meth->classDef;
   className = JavaString::internalToJava(cl->name, vm);
   
-  JavaAttribute* sourceAtt = cl->lookupAttribute(JavaAttribute::sourceFileAttribute);
+  Attribut* sourceAtt = cl->lookupAttribut(Attribut::sourceFileAttribut);
   
   // We don't have the bytes if the class was vmjc'ed.
   if (sourceAtt && cl->getBytes()) {

Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.cpp (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.cpp Thu Apr 25 11:49:31 2013
@@ -219,7 +219,7 @@ JavaObjectField* JavaObjectField::create
   return ret;
 }
 
-static inline JavaString** getSignatureString(JavaAttribute* sigAtt, Class* cl) {
+static inline JavaString** getSignatureString(Attribut* sigAtt, Class* cl) {
   if (!sigAtt) return 0;
 
   Reader reader(sigAtt, cl->bytes);
@@ -230,26 +230,26 @@ static inline JavaString** getSignatureS
 }
 
 JavaString** JavaObjectClass::getSignature(Class *cl) {
-  JavaAttribute* sigAtt = cl->lookupAttribute(JavaAttribute::signatureAttribute);
+  Attribut* sigAtt = cl->lookupAttribut(Attribut::signatureAttribut);
   return getSignatureString(sigAtt, cl);
 }
 
 JavaString** JavaObjectField::getSignature(JavaField* field) {
-  JavaAttribute* sigAtt = field->lookupAttribute(JavaAttribute::signatureAttribute);
+  Attribut* sigAtt = field->lookupAttribut(Attribut::signatureAttribut);
   return getSignatureString(sigAtt, field->classDef);
 }
 
 JavaString** JavaObjectMethod::getSignature(JavaMethod* meth) {
-  JavaAttribute* sigAtt = meth->lookupAttribute(JavaAttribute::signatureAttribute);
+  Attribut* sigAtt = meth->lookupAttribut(Attribut::signatureAttribut);
   return getSignatureString(sigAtt, meth->classDef);
 }
 
 JavaString** JavaObjectConstructor::getSignature(JavaMethod* cons) {
-  JavaAttribute* sigAtt = cons->lookupAttribute(JavaAttribute::signatureAttribute);
+  Attribut* sigAtt = cons->lookupAttribut(Attribut::signatureAttribut);
   return getSignatureString(sigAtt, cons->classDef);
 }
 
-static inline ArraySInt8* getAttrBytes(JavaAttribute* annotationsAtt, Class* cl) {
+static inline ArraySInt8* getAttrBytes(Attribut* annotationsAtt, Class* cl) {
   ArraySInt8* ret = 0;
   llvm_gcroot(ret, 0);
 
@@ -270,47 +270,47 @@ static inline ArraySInt8* getAttrBytes(J
 }
 
 ArraySInt8* JavaObjectClass::getAnnotations(Class *cl) {
-  JavaAttribute* attr =
-    cl->lookupAttribute(JavaAttribute::annotationsAttribute);
+  Attribut* attr =
+    cl->lookupAttribut(Attribut::annotationsAttribut);
 
   return getAttrBytes(attr, cl);
 }
 
 ArraySInt8* JavaObjectField::getAnnotations(JavaField *field) {
-  JavaAttribute* attr =
-    field->lookupAttribute(JavaAttribute::annotationsAttribute);
+  Attribut* attr =
+    field->lookupAttribut(Attribut::annotationsAttribut);
 
   return getAttrBytes(attr, field->classDef);
 }
 
 ArraySInt8* JavaObjectMethod::getAnnotations(JavaMethod *meth) {
-  JavaAttribute* attr =
-    meth->lookupAttribute(JavaAttribute::annotationsAttribute);
+  Attribut* attr =
+    meth->lookupAttribut(Attribut::annotationsAttribut);
 
   return getAttrBytes(attr, meth->classDef);
 }
 ArraySInt8* JavaObjectMethod::getParamAnnotations(JavaMethod *meth) {
-  JavaAttribute* attr =
-    meth->lookupAttribute(JavaAttribute::paramAnnotationsAttribute);
+  Attribut* attr =
+    meth->lookupAttribut(Attribut::paramAnnotationsAttribut);
 
   return getAttrBytes(attr, meth->classDef);
 }
 ArraySInt8* JavaObjectMethod::getAnnotationDefault(JavaMethod *meth) {
-  JavaAttribute* attr =
-    meth->lookupAttribute(JavaAttribute::annotationDefaultAttribute);
+  Attribut* attr =
+    meth->lookupAttribut(Attribut::annotationDefaultAttribut);
 
   return getAttrBytes(attr, meth->classDef);
 }
 
 ArraySInt8* JavaObjectConstructor::getAnnotations(JavaMethod *cons) {
-  JavaAttribute* attr =
-    cons->lookupAttribute(JavaAttribute::annotationsAttribute);
+  Attribut* attr =
+    cons->lookupAttribut(Attribut::annotationsAttribut);
 
   return getAttrBytes(attr, cons->classDef);
 }
 ArraySInt8* JavaObjectConstructor::getParamAnnotations(JavaMethod *cons) {
-  JavaAttribute* attr =
-    cons->lookupAttribute(JavaAttribute::paramAnnotationsAttribute);
+  Attribut* attr =
+    cons->lookupAttribut(Attribut::paramAnnotationsAttribut);
 
   return getAttrBytes(attr, cons->classDef);
 }

Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc Thu Apr 25 11:49:31 2013
@@ -86,7 +86,7 @@ JavaObject* consStackElement(vmkit::Fram
   Class* cl = meth->classDef;
   className = JavaString::internalToJava(cl->name, vm);
 
-  Attribute* sourceAtt = cl->lookupAttribut(Attribute::sourceFileAttribut);
+  Attribut* sourceAtt = cl->lookupAttribut(Attribut::sourceFileAttribut);
 
   if (sourceAtt) {
     Reader reader(sourceAtt, cl->bytes);
@@ -2910,7 +2910,7 @@ JVM_GetEnclosingMethodInfo(JNIEnv* env,
   // Primitives arrays, interfaces...
   if (!cl) RETURN_FROM_JNI(0);
 
-  Attribute* emAtt = cl->lookupAttribut(Attribute::enclosingMethodAttribut);
+  Attribut* emAtt = cl->lookupAttribut(Attribut::enclosingMethodAttribut);
 
   if (emAtt) {
     Reader reader(emAtt, cl->bytes);

Modified: vmkit/trunk/lib/j3/ClassLib/VMStaticInstance.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/VMStaticInstance.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/VMStaticInstance.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/VMStaticInstance.h Thu Apr 25 11:49:31 2013
@@ -75,7 +75,6 @@ public:
     return OwningClass->getStaticInstance();
   }
 
-  Class* getOwningClass() {return OwningClass;}
 };
 
 }

Modified: vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp Thu Apr 25 11:49:31 2013
@@ -40,10 +40,6 @@ void J3Intrinsics::init(llvm::Module* mo
   VTType = PointerType::getUnqual(ArrayType::get(
         PointerType::getUnqual(FunctionType::get(Type::getInt32Ty(Context), true)), 0));
 
-  JavaVTType = PointerType::getUnqual(module->getTypeByName("JavaVT"));
-
-  ExceptionBufferType = PointerType::getUnqual(module->getTypeByName("ExceptionBuffer"));
-
   ResolvedConstantPoolType = ptrPtrType;
  
 
@@ -96,8 +92,8 @@ void J3Intrinsics::init(llvm::Module* mo
     PointerType::getUnqual(module->getTypeByName("JavaMethod"));
   UTF8Type =
     PointerType::getUnqual(module->getTypeByName("UTF8"));
-  AttributeType =
-    PointerType::getUnqual(module->getTypeByName("Attribute"));
+  AttributType =
+    PointerType::getUnqual(module->getTypeByName("Attribut"));
   JavaThreadType =
     PointerType::getUnqual(module->getTypeByName("JavaThread"));
   MutatorThreadType =
@@ -154,11 +150,9 @@ void J3Intrinsics::init(llvm::Module* mo
   OffsetObjectSizeInClassConstant = constantOne;
   OffsetVTInClassConstant = ConstantInt::get(Type::getInt32Ty(Context), 7);
   OffsetTaskClassMirrorInClassConstant = constantThree;
-  OffsetStaticInstanceInTaskClassMirrorConstant = constantTwo;
+  OffsetStaticInstanceInTaskClassMirrorConstant = constantThree;
   OffsetStatusInTaskClassMirrorConstant = constantZero;
   OffsetInitializedInTaskClassMirrorConstant = constantOne;
-  OffsetCommonClassInClassConstant = constantZero;
-  OffsetCommonClassInJavaVirtualTableConstant = constantFour;
   
   OffsetIsolateIDInThreadConstant =         ConstantInt::get(Type::getInt32Ty(Context), 1);
   OffsetVMInThreadConstant =                ConstantInt::get(Type::getInt32Ty(Context), 2);
@@ -172,8 +166,7 @@ void J3Intrinsics::init(llvm::Module* mo
   InterfaceLookupFunction = module->getFunction("j3InterfaceLookup");
   MultiCallNewFunction = module->getFunction("j3MultiCallNew");
   ForceLoadedCheckFunction = module->getFunction("forceLoadedCheck");
-  InitialisationCheckFunction = module->getFunction("j3InitialisationCheck");
-  InitialisationCheckForJavaObjectFunction = module->getFunction("j3InitialisationCheckForJavaObject");
+  InitialisationCheckFunction = module->getFunction("initialisationCheck");
   ForceInitialisationCheckFunction = 
     module->getFunction("forceInitialisationCheck");
   InitialiseClassFunction = module->getFunction("j3RuntimeInitialiseClass");
@@ -191,15 +184,12 @@ void J3Intrinsics::init(llvm::Module* mo
   GetObjectSizeFromClassFunction = 
     module->getFunction("getObjectSizeFromClass");
  
-  SetIsolateFunction = module->getFunction("j3SetIsolate");
-  GetCachedValueFunction = module->getFunction("j3GetCachedValue");
-  GetClassDelegateePtrFunction = module->getFunction("j3GetClassDelegateePtr");
-  GetClassDelegateeFunction = module->getFunction("j3GetClassDelegatee");
+  GetClassDelegateeFunction = module->getFunction("getClassDelegatee");
   RuntimeDelegateeFunction = module->getFunction("j3RuntimeDelegatee");
   IsSubclassOfFunction = module->getFunction("isSubclassOf");
   IsSecondaryClassFunction = module->getFunction("isSecondaryClass");
   GetDepthFunction = module->getFunction("getDepth");
-  GetStaticInstanceFunction = module->getFunction("j3GetStaticInstance");
+  GetStaticInstanceFunction = module->getFunction("getStaticInstance");
   GetDisplayFunction = module->getFunction("getDisplay");
   GetVTInDisplayFunction = module->getFunction("getVTInDisplay");
   AquireObjectFunction = module->getFunction("j3JavaObjectAquire");
@@ -248,11 +238,5 @@ void J3Intrinsics::init(llvm::Module* mo
   GetLockFunction = module->getFunction("getLock");
   ThrowExceptionFromJITFunction =
     module->getFunction("j3ThrowExceptionFromJIT"); 
-
-  CurrentIsolateID = ConstantInt::get(Type::getInt32Ty(Context), CURRENT_ISOLATE);
-
-  OffsetHandlerMethodInExceptionBufferConstant = constantZero;
-  OffsetHandlerIsolateIDInExceptionBufferConstant = constantOne;
-  OffsetSetJmpBufferInExceptionBufferConstant = constantThree;
 }
 

Modified: vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp Thu Apr 25 11:49:31 2013
@@ -36,8 +36,6 @@
 #include "Zip.h"
 
 #include <cstdio>
-#include <string>
-#include <sstream>
 
 using namespace j3;
 using namespace llvm;
@@ -183,41 +181,24 @@ Constant* JavaAOTCompiler::getResolvedCo
   if (I == End) {
     Module& Mod = *getLLVMModule();
 
-    std::string pool_name(UTF8Buffer(ctp->classDef->name).toCompileName("_ResolvedConstantPool_")->cString());
-
     ArrayType* ATy = ArrayType::get(JavaIntrinsics.ptrType, ctp->ctpSize);
-    ArrayType* AStringTy = ArrayType::get(JavaIntrinsics.ptrType, NR_ISOLATES);
-    std::vector<Constant*> Vals(ctp->ctpSize, JavaIntrinsics.constantPtrNull);
+    std::vector<Constant*> Vals;
     for (uint32 i = 0; i < ctp->ctpSize; ++i) {
       if (ctp->typeAt(i) == JavaConstantPool::ConstantUTF8) {
-        Vals[i] = ConstantExpr::getBitCast(getUTF8(ctp->UTF8At(i)), JavaIntrinsics.ptrType);
+        Vals.push_back(ConstantExpr::getBitCast(getUTF8(ctp->UTF8At(i)), JavaIntrinsics.ptrType));
       } else if (ctp->typeAt(i) == JavaConstantPool::ConstantClass
                   && (ctp->isClassLoaded(i) != NULL)) {
-        Vals[i] = ConstantExpr::getBitCast(
-            getNativeClass(ctp->isClassLoaded(i)), JavaIntrinsics.ptrType);
-      } else if (ctp->typeAt(i) == JavaConstantPool::ConstantString) {
-        std::stringstream array_name;
-        array_name << pool_name << "String_" << i << '_';
-
-        std::vector<Constant*> Strings(NR_ISOLATES, JavaIntrinsics.constantPtrNull);
-        /*
-        for (isolate_id_t isolateID = 0; isolateID < NR_ISOLATES; ++isolateID)
-          if (void *p = ctp->getCachedValue(i, isolateID))
-            Strings[isolateID] = CreateConstantFromJavaString(*reinterpret_cast<JavaString **>(p));
-        */
-
-        GlobalVariable* stringArray = new GlobalVariable(
-          Mod, AStringTy, false, GlobalValue::InternalLinkage,
-          ConstantArray::get(AStringTy, Strings), array_name.str());
-
-        Vals[i] = ConstantExpr::getBitCast(stringArray, JavaIntrinsics.ptrType);
+        Vals.push_back(ConstantExpr::getBitCast(
+            getNativeClass(ctp->isClassLoaded(i)), JavaIntrinsics.ptrType));
+      } else {
+        Vals.push_back(Constant::getNullValue(JavaIntrinsics.ptrType));
       }
     }
 
     Constant* Array = ConstantArray::get(ATy, Vals);
     GlobalVariable* varGV = new GlobalVariable(Mod, Array->getType(), false,
                                                GlobalValue::InternalLinkage,
-                                               Array, pool_name);
+                                               Array, "");
  
     Array = ConstantExpr::getBitCast(varGV, JavaIntrinsics.ResolvedConstantPoolType);
     
@@ -464,7 +445,7 @@ Constant* JavaAOTCompiler::getFinalObjec
   }
 }
 
-Constant* JavaAOTCompiler::CreateConstantFromStaticInstance(Class* cl, isolate_id_t isolateID) {
+Constant* JavaAOTCompiler::CreateConstantFromStaticInstance(Class* cl) {
   LLVMClassInfo* LCI = getClassInfo(cl);
   Type* Ty = LCI->getStaticType();
   StructType* STy = dyn_cast<StructType>(Ty->getContainedType(0));
@@ -477,47 +458,47 @@ Constant* JavaAOTCompiler::CreateConstan
     LLVMAssessorInfo& LAI = getTypedefInfo(type);
     Type* Ty = LAI.llvmType;
 
-    JavaAttribute* attribute = field.lookupAttribute(JavaAttribute::constantAttribute);
+    Attribut* attribut = field.lookupAttribut(Attribut::constantAttribut);
 
-    if (attribute == NULL) {
-      if ((cl->getStaticInstance(isolateID) != NULL) && !useCooperativeGC()) {
+    if (attribut == NULL) {
+      if ((cl->getStaticInstance() != NULL) && !useCooperativeGC()) {
         if (type->isPrimitive()) {
           const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
           if (prim->isBool() || prim->isByte()) {
             ConstantInt* CI = ConstantInt::get(
                 Type::getInt8Ty(getLLVMContext()),
-                field.getStaticInt8Field(isolateID));
+                field.getStaticInt8Field());
             Elts.push_back(CI);
           } else if (prim->isShort() || prim->isChar()) {
             ConstantInt* CI = ConstantInt::get(
                 Type::getInt16Ty(getLLVMContext()),
-                field.getStaticInt16Field(isolateID));
+                field.getStaticInt16Field());
             Elts.push_back(CI);
           } else if (prim->isInt()) {
             ConstantInt* CI = ConstantInt::get(
                 Type::getInt32Ty(getLLVMContext()),
-                field.getStaticInt32Field(isolateID));
+                field.getStaticInt32Field());
             Elts.push_back(CI);
           } else if (prim->isLong()) {
             ConstantInt* CI = ConstantInt::get(
                 Type::getInt64Ty(getLLVMContext()),
-                field.getStaticLongField(isolateID));
+                field.getStaticLongField());
             Elts.push_back(CI);
           } else if (prim->isFloat()) {
             Constant* CF = ConstantFP::get(
                 Type::getFloatTy(getLLVMContext()),
-                field.getStaticFloatField(isolateID));
+                field.getStaticFloatField());
             Elts.push_back(CF);
           } else if (prim->isDouble()) {
             Constant* CF = ConstantFP::get(
                 Type::getDoubleTy(getLLVMContext()),
-                field.getStaticDoubleField(isolateID));
+                field.getStaticDoubleField());
             Elts.push_back(CF);
           } else {
             abort();
           }
         } else {
-          JavaObject* val = field.getStaticObjectField(isolateID);
+          JavaObject* val = field.getStaticObjectField();
           if (val) {
             JnjvmClassLoader* JCL = cl->classLoader;
             CommonClass* FieldCl = field.getSignature()->assocClass(JCL);
@@ -531,7 +512,7 @@ Constant* JavaAOTCompiler::CreateConstan
         Elts.push_back(Constant::getNullValue(Ty));
       }
     } else {
-      Reader reader(attribute, cl->bytes);
+      Reader reader(attribut, cl->bytes);
       JavaConstantPool * ctpInfo = cl->ctpInfo;
       uint16 idx = reader.readU2();
       if (type->isPrimitive()) {
@@ -564,20 +545,34 @@ Constant* JavaAOTCompiler::CreateConstan
   return ConstantStruct::get(STy, Elts);
 }
 
-Constant* JavaAOTCompiler::getStaticInstance(Class* classDef, isolate_id_t isolateID) {
-	ConstantArray *TCMArray = dyn_cast<ConstantArray>(CreateConstantFromTaskClassMirrorArray(classDef));
-	if (!compilingMMTk) {
-		// Thanks for calling me, but you should call j3GetStaticInstance() to get the static instance
-		// pointer at runtime.
-		return NULL;
-	}
-
-	isolateID = JavaThread::getValidIsolateID(isolateID);
-	ConstantStruct *TCM = dyn_cast<ConstantStruct>(TCMArray->getAggregateElement(isolateID));
-
-	Constant *isolateStaticInstance = TCM->getAggregateElement(
-		JavaIntrinsics.OffsetStaticInstanceInTaskClassMirrorConstant);
-	return isolateStaticInstance;
+Constant* JavaAOTCompiler::getStaticInstance(Class* classDef) {
+  static_instance_iterator End = staticInstances.end();
+  static_instance_iterator I = staticInstances.find(classDef);
+  if (I == End) {
+    
+    LLVMClassInfo* LCI = getClassInfo(classDef);
+    Type* Ty = LCI->getStaticType();
+    Ty = Ty->getContainedType(0);
+    std::string name(UTF8Buffer(classDef->name).toCompileName()->cString());
+    name += "_static";
+    Module& Mod = *getLLVMModule();
+    GlobalVariable* varGV = 
+      new GlobalVariable(Mod, Ty, false, GlobalValue::ExternalLinkage,
+                         0, name);
+
+    Constant* res = ConstantExpr::getCast(Instruction::BitCast, varGV,
+                                          JavaIntrinsics.ptrType);
+    staticInstances.insert(std::make_pair(classDef, res));
+    
+    if (isCompiling(classDef)) { 
+      Constant* C = CreateConstantFromStaticInstance(classDef);
+      varGV->setInitializer(C);
+    }
+
+    return res;
+  } else {
+    return I->second;
+  }
 }
 
 Constant* JavaAOTCompiler::getVirtualTable(JavaVirtualTable* VT) {
@@ -814,21 +809,21 @@ Constant* JavaAOTCompiler::CreateConstan
 }
 
 
-Constant* JavaAOTCompiler::CreateConstantFromAttribute(JavaAttribute& attribute) {
+Constant* JavaAOTCompiler::CreateConstantFromAttribut(Attribut& attribut) {
   StructType* STy = 
-    dyn_cast<StructType>(JavaIntrinsics.AttributeType->getContainedType(0));
+    dyn_cast<StructType>(JavaIntrinsics.AttributType->getContainedType(0));
 
 
   std::vector<Constant*> Elmts;
 
   // name
-  Elmts.push_back(getUTF8(attribute.name));
+  Elmts.push_back(getUTF8(attribut.name));
 
   // start
-  Elmts.push_back(ConstantInt::get(Type::getInt32Ty(getLLVMContext()), attribute.start));
+  Elmts.push_back(ConstantInt::get(Type::getInt32Ty(getLLVMContext()), attribut.start));
 
   // nbb
-  Elmts.push_back(ConstantInt::get(Type::getInt32Ty(getLLVMContext()), attribute.nbb));
+  Elmts.push_back(ConstantInt::get(Type::getInt32Ty(getLLVMContext()), attribut.nbb));
   
   return ConstantStruct::get(STy, Elmts);
 }
@@ -918,29 +913,29 @@ Constant* JavaAOTCompiler::CreateConstan
   // type
   FieldElts.push_back(getUTF8(field.type));
   
-  // attributes
-  if (field.nbAttributes) {
-    llvm::Type* AttrTy = JavaIntrinsics.AttributeType->getContainedType(0);
-    ArrayType* ATy = ArrayType::get(AttrTy, field.nbAttributes);
-    for (uint32 i = 0; i < field.nbAttributes; ++i) {
-      TempElts.push_back(CreateConstantFromAttribute(field.attributes[i]));
+  // attributs 
+  if (field.nbAttributs) {
+    llvm::Type* AttrTy = JavaIntrinsics.AttributType->getContainedType(0);
+    ArrayType* ATy = ArrayType::get(AttrTy, field.nbAttributs);
+    for (uint32 i = 0; i < field.nbAttributs; ++i) {
+      TempElts.push_back(CreateConstantFromAttribut(field.attributs[i]));
     }
 
-    Constant* attributes = ConstantArray::get(ATy, TempElts);
+    Constant* attributs = ConstantArray::get(ATy, TempElts);
     TempElts.clear();
-    attributes = new GlobalVariable(*getLLVMModule(), ATy, true,
+    attributs = new GlobalVariable(*getLLVMModule(), ATy, true,
                                    GlobalValue::InternalLinkage,
-                                   attributes, "");
-    attributes = ConstantExpr::getCast(Instruction::BitCast, attributes,
-                                      JavaIntrinsics.AttributeType);
+                                   attributs, "");
+    attributs = ConstantExpr::getCast(Instruction::BitCast, attributs,
+                                      JavaIntrinsics.AttributType);
   
-    FieldElts.push_back(attributes);
+    FieldElts.push_back(attributs);
   } else {
-    FieldElts.push_back(Constant::getNullValue(JavaIntrinsics.AttributeType));
+    FieldElts.push_back(Constant::getNullValue(JavaIntrinsics.AttributType));
   }
   
-  // nbAttributes
-  FieldElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), field.nbAttributes));
+  // nbAttributs
+  FieldElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), field.nbAttributs));
 
   // classDef
   FieldElts.push_back(getNativeClass(field.classDef));
@@ -968,29 +963,29 @@ Constant* JavaAOTCompiler::CreateConstan
   // access
   MethodElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), method.access));
  
-  // attributes
-  if (method.nbAttributes) {
-    llvm::Type* AttrTy = JavaIntrinsics.AttributeType->getContainedType(0);
-    ArrayType* ATy = ArrayType::get(AttrTy, method.nbAttributes);
-    for (uint32 i = 0; i < method.nbAttributes; ++i) {
-      TempElts.push_back(CreateConstantFromAttribute(method.attributes[i]));
+  // attributs
+  if (method.nbAttributs) {
+    llvm::Type* AttrTy = JavaIntrinsics.AttributType->getContainedType(0);
+    ArrayType* ATy = ArrayType::get(AttrTy, method.nbAttributs);
+    for (uint32 i = 0; i < method.nbAttributs; ++i) {
+      TempElts.push_back(CreateConstantFromAttribut(method.attributs[i]));
     }
 
-    Constant* attributes = ConstantArray::get(ATy, TempElts);
+    Constant* attributs = ConstantArray::get(ATy, TempElts);
     TempElts.clear();
-    attributes = new GlobalVariable(Mod, ATy, true,
+    attributs = new GlobalVariable(Mod, ATy, true,
                                    GlobalValue::InternalLinkage,
-                                   attributes, "");
-    attributes = ConstantExpr::getCast(Instruction::BitCast, attributes,
-                                      JavaIntrinsics.AttributeType);
+                                   attributs, "");
+    attributs = ConstantExpr::getCast(Instruction::BitCast, attributs,
+                                      JavaIntrinsics.AttributType);
 
-    MethodElts.push_back(attributes);
+    MethodElts.push_back(attributs);
   } else {
-    MethodElts.push_back(Constant::getNullValue(JavaIntrinsics.AttributeType));
+    MethodElts.push_back(Constant::getNullValue(JavaIntrinsics.AttributType));
   }
   
-  // nbAttributes
-  MethodElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), method.nbAttributes));
+  // nbAttributs
+  MethodElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), method.nbAttributs));
   
   // classDef
   MethodElts.push_back(getNativeClass(method.classDef));
@@ -1144,61 +1139,13 @@ Constant* JavaAOTCompiler::CreateConstan
                             ConstantStruct::get(STy, elements), "UTF8Map");
 }
 
-Constant* JavaAOTCompiler::CreateConstantFromTaskClassMirrorArray(Class* cl)
-{
-	task_class_mirror_iterator I = taskClassMirrors.find(cl);
-	if (I != taskClassMirrors.end())
-		return I->second;	// TCM Constant already created
-
-	StructType* STy = dyn_cast<StructType>(JavaIntrinsics.JavaClassType->getContainedType(0));
-	ArrayType* ATy = dyn_cast<ArrayType>(STy->getContainedType(3));
-	StructType* TCMTy = dyn_cast<StructType>(ATy->getContainedType(0));
-	assert(TCMTy && "Malformed type");
-
-	Module& Mod = *getLLVMModule();
-	LLVMClassInfo* LCI = getClassInfo(cl);
-	StructType* StaticInstanceTy = dyn_cast<StructType>(LCI->getStaticType()->getContainedType(0));
-	assert(StaticInstanceTy && "Malformed type");
-
-	std::string var_name(UTF8Buffer(cl->name).toCompileName("_StaticInstance_")->cString());
-	size_t var_name_len = var_name.size();
-	char var_name_ext[32];
-
-	Constant** TCMEntries = new Constant*[NR_ISOLATES];
-	memset(TCMEntries, 0, NR_ISOLATES * sizeof(Constant*));
-
-	for (isolate_id_t isolateID = 0; isolateID < NR_ISOLATES; ++isolateID) {
-		var_name.resize(var_name_len);
-		snprintf(var_name_ext, sizeof(var_name_ext)/sizeof(*var_name_ext), "%d", isolateID);
-		var_name += var_name_ext;
-
-		GlobalVariable* staticInstance = new GlobalVariable(Mod, StaticInstanceTy, false, GlobalValue::ExternalLinkage, 0, var_name);
-		if (isCompiling(cl)) {
-			Constant* staticInstanceInit = CreateConstantFromStaticInstance(cl, isolateID);
-			staticInstance->setInitializer(staticInstanceInit);
-		}
-
-		Constant *TCMEntry[] = {
-			ConstantInt::get(Type::getInt8Ty(getLLVMContext()), cl->getInitializationState(isolateID)),
-			ConstantInt::get(Type::getInt1Ty(getLLVMContext()), cl->isReady(isolateID) ? 1 : 0),
-			ConstantExpr::getBitCast(staticInstance, JavaIntrinsics.ptrType)
-		};
-		TCMEntries[isolateID] = ConstantStruct::get(TCMTy, TCMEntry);
-	}
-
-	Constant* tcm = ConstantArray::get(ATy, ArrayRef<Constant*>(TCMEntries, NR_ISOLATES));
-	taskClassMirrors.insert(std::make_pair(cl, tcm));
-
-	delete [] TCMEntries;
-	return tcm;
-}
-
 Constant* JavaAOTCompiler::CreateConstantFromClass(Class* cl) {
   StructType* STy = 
     dyn_cast<StructType>(JavaIntrinsics.JavaClassType->getContainedType(0));
   Module& Mod = *getLLVMModule();
   
-  std::vector<Constant*> ClassElts, TempElts;
+  std::vector<Constant*> ClassElts;
+  std::vector<Constant*> TempElts;
 
   // common class
   ClassElts.push_back(CreateConstantFromCommonClass(cl));
@@ -1212,11 +1159,21 @@ Constant* JavaAOTCompiler::CreateConstan
                                        cl->alignment));
 
   // IsolateInfo
-  ClassElts.push_back(CreateConstantFromTaskClassMirrorArray(cl));
-
   ArrayType* ATy = dyn_cast<ArrayType>(STy->getContainedType(3));
   assert(ATy && "Malformed type");
   
+  StructType* TCMTy = dyn_cast<StructType>(ATy->getContainedType(0));
+  assert(TCMTy && "Malformed type");
+
+  TempElts.push_back(ConstantInt::get(Type::getInt8Ty(getLLVMContext()),
+                                      cl->getInitializationState()));
+  TempElts.push_back(ConstantInt::get(Type::getInt1Ty(getLLVMContext()),
+                                      cl->isReady() ? 1 : 0));
+  TempElts.push_back(getStaticInstance(cl));
+  Constant* CStr[1] = { ConstantStruct::get(TCMTy, TempElts) };
+  TempElts.clear();
+  ClassElts.push_back(ConstantArray::get(ATy, CStr));
+
   if (cl->nbVirtualFields + cl->nbStaticFields) {
     ATy = ArrayType::get(JavaIntrinsics.JavaFieldType->getContainedType(0),
                          cl->nbVirtualFields + cl->nbStaticFields);
@@ -1336,29 +1293,29 @@ Constant* JavaAOTCompiler::CreateConstan
                                        ctpInfo, "");
   ClassElts.push_back(varGV);
 
-  // attributes
-  if (cl->nbAttributes) {
-    ATy = ArrayType::get(JavaIntrinsics.AttributeType->getContainedType(0),
-                         cl->nbAttributes);
+  // attributs
+  if (cl->nbAttributs) {
+    ATy = ArrayType::get(JavaIntrinsics.AttributType->getContainedType(0),
+                         cl->nbAttributs);
 
-    for (uint32 i = 0; i < cl->nbAttributes; ++i) {
-      TempElts.push_back(CreateConstantFromAttribute(cl->attributes[i]));
+    for (uint32 i = 0; i < cl->nbAttributs; ++i) {
+      TempElts.push_back(CreateConstantFromAttribut(cl->attributs[i]));
     }
 
-    Constant* attributes = ConstantArray::get(ATy, TempElts);
+    Constant* attributs = ConstantArray::get(ATy, TempElts);
     TempElts.clear();
-    attributes = new GlobalVariable(*getLLVMModule(), ATy, true,
+    attributs = new GlobalVariable(*getLLVMModule(), ATy, true,
                                    GlobalValue::InternalLinkage,
-                                   attributes, "");
-    attributes = ConstantExpr::getCast(Instruction::BitCast, attributes,
-                                      JavaIntrinsics.AttributeType);
-    ClassElts.push_back(attributes);
+                                   attributs, "");
+    attributs = ConstantExpr::getCast(Instruction::BitCast, attributs,
+                                      JavaIntrinsics.AttributType);
+    ClassElts.push_back(attributs);
   } else {
-    ClassElts.push_back(Constant::getNullValue(JavaIntrinsics.AttributeType));
+    ClassElts.push_back(Constant::getNullValue(JavaIntrinsics.AttributType));
   }
   
-  // nbAttributes
-  ClassElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), cl->nbAttributes));
+  // nbAttributs
+  ClassElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), cl->nbAttributs));
   
   // innerClasses
   if (cl->nbInnerClasses) {
@@ -1841,8 +1798,8 @@ Constant* JavaAOTCompiler::CreateConstan
   return Array;
 }
 
-JavaAOTCompiler::JavaAOTCompiler(const std::string& ModuleID, bool compilingMMTk) :
-  JavaLLVMCompiler(ModuleID, compilingMMTk) {
+JavaAOTCompiler::JavaAOTCompiler(const std::string& ModuleID) :
+  JavaLLVMCompiler(ModuleID) {
 
   std::string Error;
   const Target* TheTarget(TargetRegistry::lookupTarget(
@@ -1926,8 +1883,8 @@ void JavaAOTCompiler::printStats() {
           (unsigned long long int) arrayClasses.size());
   fprintf(stdout, "Number of virtual tables            : %llu\n", 
           (unsigned long long int) virtualTables.size());
-  fprintf(stdout, "Number of Task Class Mirrors        : %llu\n",
-          (unsigned long long int) taskClassMirrors.size());
+  fprintf(stdout, "Number of static instances          : %llu\n", 
+          (unsigned long long int) staticInstances.size());
   fprintf(stdout, "Number of constant pools            : %llu\n", 
           (unsigned long long int) resolvedConstantPools.size());
   fprintf(stdout, "Number of strings                   : %llu\n", 
@@ -2151,7 +2108,7 @@ void mainCompilerStart(JavaThread* th) {
 
   JavaJITCompiler* Comp = NULL;
   if (!M->clinits->empty()) {
-    Comp = JavaJITCompiler::CreateCompiler("JIT", M->isCompilingMMTk());
+    Comp = JavaJITCompiler::CreateCompiler("JIT");
     Comp->EmitFunctionName = true;
     if (!M->useCooperativeGC()) {
       Comp->disableCooperativeGC();

Modified: vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp Thu Apr 25 11:49:31 2013
@@ -23,7 +23,6 @@
 #include <llvm/Support/CFG.h>
 
 #include "vmkit/JIT.h"
-#include "vmkit/GC.h"
 
 #include "debug.h"
 #include "JavaArray.h"
@@ -644,23 +643,22 @@ llvm::Function* JavaJIT::nativeCompile(w
   return llvmFunction;
 }
 
-llvm::Value* JavaJIT::objectToHeader(Value* obj) {
-  obj = new PtrToIntInst(obj, intrinsics->pointerSizeType, "", currentBlock);
-  Value* d = ConstantInt::get(intrinsics->pointerSizeType, gcHeader::hiddenHeaderSize());
-	obj = BinaryOperator::CreateSub(obj, d, "", currentBlock);
-	return new IntToPtrInst(obj, intrinsics->ObjectHeaderType, "", currentBlock);
-}
-
 void JavaJIT::monitorEnter(Value* obj) {
-  Value* lockPtr = objectToHeader(obj);
-
+  std::vector<Value*> gep;
+  gep.push_back(intrinsics->constantZero);
+  gep.push_back(intrinsics->JavaObjectLockOffsetConstant);
+  Value* lockPtr = GetElementPtrInst::Create(obj, gep, "", currentBlock);
+  
   Value* lock = new LoadInst(lockPtr, "", currentBlock);
-
+  lock = new PtrToIntInst(lock, intrinsics->pointerSizeType, "", currentBlock);
   Value* NonLockBitsMask = ConstantInt::get(intrinsics->pointerSizeType,
                                             vmkit::ThinLock::NonLockBitsMask);
 
   lock = BinaryOperator::CreateAnd(lock, NonLockBitsMask, "", currentBlock);
 
+  lockPtr = new BitCastInst(lockPtr, 
+                            PointerType::getUnqual(intrinsics->pointerSizeType),
+                            "", currentBlock);
   Value* threadId = getMutatorThreadPtr();
   threadId = new PtrToIntInst(threadId, intrinsics->pointerSizeType, "",
                               currentBlock);
@@ -689,10 +687,14 @@ void JavaJIT::monitorEnter(Value* obj) {
 }
 
 void JavaJIT::monitorExit(Value* obj) {
-	Value* lockPtr = objectToHeader(obj);
-
+  std::vector<Value*> gep;
+  gep.push_back(intrinsics->constantZero);
+  gep.push_back(intrinsics->JavaObjectLockOffsetConstant);
+  Value* lockPtr = GetElementPtrInst::Create(obj, gep, "", currentBlock);
+  lockPtr = new BitCastInst(lockPtr, 
+                            PointerType::getUnqual(intrinsics->pointerSizeType),
+                            "", currentBlock);
   Value* lock = new LoadInst(lockPtr, "", currentBlock);
-
   Value* NonLockBitsMask = ConstantInt::get(
       intrinsics->pointerSizeType, vmkit::ThinLock::NonLockBitsMask);
 
@@ -1257,11 +1259,10 @@ llvm::Function* JavaJIT::javaCompile() {
       const UTF8* name =
         compilingClass->ctpInfo->UTF8At(AR.AnnotationNameIndex);
       if (name->equals(TheCompiler->InlinePragma)) {
-        llvmFunction->removeFnAttr(
-            Attributes::get(*llvmContext, Attributes::NoInline));
-        llvmFunction->addFnAttr(Attributes::AlwaysInline);
+        llvmFunction->removeFnAttr(Attribute::NoInline);
+        llvmFunction->addFnAttr(Attribute::AlwaysInline);
       } else if (name->equals(TheCompiler->NoInlinePragma)) {
-        llvmFunction->addFnAttr(Attributes::NoInline);
+        llvmFunction->addFnAttr(Attribute::NoInline);
       }
     }
   }
@@ -1341,7 +1342,7 @@ void JavaJIT::loadConstant(uint16 index)
 void JavaJIT::JITVerifyNull(Value* obj) {
   if (TheCompiler->hasExceptionsEnabled()) {
     if (nbHandlers == 0 && vmkit::System::SupportsHardwareNullCheck()) {
-      Value* indexes[2] = { intrinsics->constantZero, intrinsics->JavaObjectVTOffsetConstant };
+      Value* indexes[2] = { intrinsics->constantZero, intrinsics->constantZero };
       Value* VTPtr = GetElementPtrInst::Create(obj, indexes, "", currentBlock);
       Instruction* VT = new LoadInst(VTPtr, "", true, currentBlock);
       VT->setDebugLoc(DebugLoc::get(currentBytecodeIndex, 1, DbgSubprogram));
@@ -1827,7 +1828,7 @@ void JavaJIT::invokeNew(uint16 index) {
   
   Class* cl = 0;
   Value* Cl = getResolvedClass(index, true, true, &cl);
-
+          
   Value* VT = 0;
   Value* Size = 0;
   

Modified: vmkit/trunk/lib/j3/Compiler/JavaJIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJIT.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJIT.h (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJIT.h Thu Apr 25 11:49:31 2013
@@ -20,8 +20,9 @@
 #include "llvm/Metadata.h"
 #include "llvm/Type.h"
 #include "llvm/Value.h"
+#include "llvm/DIBuilder.h"
+#include "llvm/DebugInfo.h"
 #include "llvm/Support/DebugLoc.h"
-#include "llvm/Analysis/DebugInfo.h"
 
 #include "types.h"
 
@@ -79,8 +80,7 @@ public:
   JavaJIT(JavaLLVMCompiler* C,
           JavaMethod* meth,
           llvm::Function* func,
-          Class* customized,
-          bool CompilingMMTk = false) {
+          Class* customized) {
     compilingMethod = meth;
     compilingClass = meth->classDef;
     upcalls = compilingClass->classLoader->bootstrapLoader->upcalls;
@@ -100,7 +100,6 @@ public:
     overridesThis = false;
     nbHandlers = 0;
     jmpBuffer = NULL;
-    compilingMMTk = CompilingMMTk;
   }
 
   /// javaCompile - Compile the Java method.
@@ -116,8 +115,6 @@ public:
   uint32_t nbHandlers;
 
 private:
-  bool compilingMMTk;
-
   /// Whether the method overrides 'this'.
   bool overridesThis;
   
@@ -180,6 +177,9 @@ private:
   /// getMutatorThreadPtr - Emit code to get a pointer to the current MutatorThread.
 	llvm::Value* getMutatorThreadPtr();
 
+  /// getIsolateIDPtr - Emit code to get a pointer to IsolateID.
+	llvm::Value* getIsolateIDPtr(llvm::Value* mutatorThreadPtr);
+
   /// getVMPtr - Emit code to get a pointer to MyVM.
 	llvm::Value* getVMPtr(llvm::Value* mutatorThreadPtr);
 
@@ -551,11 +551,6 @@ private:
   llvm::Instruction* invoke(llvm::Value *F, const char* Name,
                             llvm::BasicBlock *InsertAtEnd);
   
-  llvm::Value* getClassDelegateePtr(CommonClass* cl);
-  llvm::Value* setCurrentIsolateForCompilingMethod(llvm::Value* currentIsolateID, bool alwaysSet);
-  void restoreCurrentIsolateForCompilingMethod(llvm::Value* oldIsolateID, bool alwaysRestore);
-  bool shouldMethodChangeCurrentIsolate();
-
 //===--------------------- Yield point support  ---------------------------===//
 
   void checkYieldPoint();

Modified: vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp Thu Apr 25 11:49:31 2013
@@ -13,7 +13,7 @@
 #include "llvm/Instructions.h"
 #include "llvm/LLVMContext.h"
 #include "llvm/Module.h"
-#include "llvm/Analysis/DebugInfo.h"
+#include "llvm/DebugInfo.h"
 #include "llvm/CodeGen/GCStrategy.h"
 #include <llvm/CodeGen/JITCodeEmitter.h>
 #include "llvm/CodeGen/MachineFunction.h"
@@ -24,7 +24,6 @@
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/DataLayout.h"
 #include <../lib/ExecutionEngine/JIT/JIT.h>
-#include <../lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h>
 
 #include "VmkitGC.h"
 #include "vmkit/VirtualMachine.h"
@@ -63,9 +62,7 @@ Constant* JavaJITCompiler::getNativeClas
 }
 
 Constant* JavaJITCompiler::getResolvedConstantPool(JavaConstantPool* ctp) {
-  assert(false && "Must not be here.");
-
-  void* ptr = NULL;	// = ctp->ctpRes;
+  void* ptr = ctp->ctpRes;
   assert(ptr && "No constant pool found");
   ConstantInt* CI = ConstantInt::get(Type::getInt64Ty(getLLVMContext()),
                                      uint64_t(ptr));
@@ -117,17 +114,11 @@ Constant* JavaJITCompiler::getFinalObjec
   return NULL;
 }
 
-Constant* JavaJITCompiler::getStaticInstance(Class* classDef, isolate_id_t isolateID) {
-  if (!compilingMMTk) {
-    // Thanks for calling me, but you should call j3GetStaticInstance() to get the static instance
-    // pointer at runtime.
-    return NULL;
-  }
-
-  void* obj = classDef->getStaticInstance(isolateID);
+Constant* JavaJITCompiler::getStaticInstance(Class* classDef) {
+  void* obj = classDef->getStaticInstance();
   if (!obj) {
     classDef->acquire();
-    obj = classDef->getStaticInstance(isolateID);
+    obj = classDef->getStaticInstance();
     if (!obj) {
       // Allocate now so that compiled code can reference it.
       obj = classDef->allocateStaticInstance(JavaThread::get()->getJVM());
@@ -161,8 +152,8 @@ Constant* JavaJITCompiler::getNativeFunc
   return ConstantExpr::getIntToPtr(CI, valPtrType);
 }
 
-JavaJITCompiler::JavaJITCompiler(const std::string &ModuleID, bool compilingMMTk) :
-  JavaLLVMCompiler(ModuleID, compilingMMTk), listener(this) {
+JavaJITCompiler::JavaJITCompiler(const std::string &ModuleID) :
+  JavaLLVMCompiler(ModuleID), listener(this) {
 
   EmitFunctionName = false;
   GCInfo = NULL;
@@ -170,8 +161,6 @@ JavaJITCompiler::JavaJITCompiler(const s
   EngineBuilder engine(TheModule);
   TargetOptions options;
   options.NoFramePointerElim = true;
-  options.JITEmitDebugInfo = true;
-//  engine.setUseMCJIT(true);
   engine.setTargetOptions(options);
   engine.setEngineKind(EngineKind::JIT);
   executionEngine = engine.create();
@@ -411,11 +400,11 @@ Value* JavaJ3LazyJITCompiler::addCallbac
   // Set the stub in the constant pool.
   JavaConstantPool* ctpInfo = cl->ctpInfo;
   word_t stub = stat ? sign->getStaticCallStub() : sign->getSpecialCallStub();
-  if (!ctpInfo->getCachedValue(index)) {
-    // Do a compare and swap, so that we do not overwrite what a stub might
+  if (!ctpInfo->ctpRes[index]) {
+    // Do a compare and swap, so that we do not overwrtie what a stub might
     // have just updated.
     word_t val = (word_t)
-      ctpInfo->updateCachedValueSynchronized(index, (void*)stub, NULL);
+      __sync_val_compare_and_swap(&(ctpInfo->ctpRes[index]), NULL, (void*)stub);
     // If there is something in the the constant pool that is not NULL nor
     // the stub, then it's the method.
     if (val != 0 && val != stub) {
@@ -425,12 +414,11 @@ Value* JavaJ3LazyJITCompiler::addCallbac
     }
   }
   // Load the constant pool.
-  Value* Args[] = {
-    getNativeClass(cl),
-    ConstantInt::get(Type::getInt32Ty(insert->getContext()), index),
-    compilingMMTk ? JavaIntrinsics.constantZero : JavaIntrinsics.CurrentIsolateID
-  };
-  Value* func = CallInst::Create(JavaIntrinsics.GetCachedValueFunction, Args, "", insert);
+  Value* CTP = getResolvedConstantPool(ctpInfo);
+  Value* Index = ConstantInt::get(Type::getInt32Ty(insert->getContext()),
+                                  index);
+  Value* func = GetElementPtrInst::Create(CTP, Index, "", insert);
+  func = new LoadInst(func, "", false, insert);
   // Bitcast it to the LLVM function.
   func = new BitCastInst(func, stat ? LSI->getStaticPtrType() :
                                       LSI->getVirtualPtrType(),
@@ -446,10 +434,10 @@ bool JavaJ3LazyJITCompiler::needsCallbac
           getMethod(meth, customizeFor)->hasExternalWeakLinkage());
 }
 
-JavaJ3LazyJITCompiler::JavaJ3LazyJITCompiler(const std::string& ModuleID, bool compilingMMTk)
-    : JavaJITCompiler(ModuleID, compilingMMTk) {}
+JavaJ3LazyJITCompiler::JavaJ3LazyJITCompiler(const std::string& ModuleID)
+    : JavaJITCompiler(ModuleID) {}
 
 
-JavaJITCompiler* JavaJITCompiler::CreateCompiler(const std::string& ModuleID, bool compilingMMTk) {
-  return new JavaJ3LazyJITCompiler(ModuleID, compilingMMTk);
+JavaJITCompiler* JavaJITCompiler::CreateCompiler(const std::string& ModuleID) {
+  return new JavaJ3LazyJITCompiler(ModuleID);
 }

Modified: vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp Thu Apr 25 11:49:31 2013
@@ -10,7 +10,7 @@
 #include "llvm/LLVMContext.h"
 #include "llvm/Module.h"
 #include "llvm/PassManager.h"
-#include "llvm/Analysis/DIBuilder.h"
+#include "llvm/DIBuilder.h"
 #include "llvm/Analysis/LoopPass.h"
 #include "llvm/DataLayout.h"
 
@@ -25,9 +25,9 @@ using namespace llvm;
 
 namespace j3 {
 
-JavaLLVMCompiler::JavaLLVMCompiler(const std::string& str, bool CompilingMMTk) :
+JavaLLVMCompiler::JavaLLVMCompiler(const std::string& str) :
   TheModule(new llvm::Module(str, *(new LLVMContext()))),
-  DebugFactory(new DIBuilder(*TheModule)), compilingMMTk(CompilingMMTk) {
+  DebugFactory(new DIBuilder(*TheModule)) {
 
   enabledException = true;
   cooperativeGC = true;
@@ -61,7 +61,7 @@ Function* JavaLLVMCompiler::parseFunctio
   // We are jitting. Take the lock.
   vmkit::VmkitModule::protectIR();
   if (func->getLinkage() == GlobalValue::ExternalWeakLinkage) {
-    JavaJIT jit(this, meth, func, customizeFor, compilingMMTk);
+    JavaJIT jit(this, meth, func, customizeFor);
     if (isNative(meth->access)) {
       jit.nativeCompile();
       vmkit::VmkitModule::runPasses(func, JavaNativeFunctionPasses);

Modified: vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp Thu Apr 25 11:49:31 2013
@@ -38,6 +38,30 @@ private:
 };
 char LowerConstantCalls::ID = 0;
 
+static Value* getTCM(J3Intrinsics* intrinsics, Value* Arg, Instruction* CI) {
+  Value* GEP[2] = { intrinsics->constantZero,
+                    intrinsics->OffsetTaskClassMirrorInClassConstant };
+  Value* TCMArray = GetElementPtrInst::Create(Arg, GEP, "", CI);
+  
+  Value* GEP2[2] = { intrinsics->constantZero, intrinsics->constantZero };
+
+  Value* TCM = GetElementPtrInst::Create(TCMArray, GEP2, "", CI);
+  return TCM;
+
+}
+
+static Value* getDelegatee(J3Intrinsics* intrinsics, Value* Arg, Instruction* CI) {
+  Value* GEP[2] = { intrinsics->constantZero,
+                    intrinsics->constantZero };
+  Value* TCMArray = GetElementPtrInst::Create(Arg, GEP, "", CI);
+  
+  Value* GEP2[2] = { intrinsics->constantZero, intrinsics->constantZero };
+
+  Value* TCM = GetElementPtrInst::Create(TCMArray, GEP2, "", CI);
+  return new LoadInst(TCM, "", CI);
+
+}
+
 bool LowerConstantCalls::runOnFunction(Function& F) {
   LLVMContext* Context = &F.getContext();
   bool Changed = false;
@@ -255,12 +279,107 @@ bool LowerConstantCalls::runOnFunction(F
           Value* Class = new LoadInst(ClassPtr, "", CI);
           CI->replaceAllUsesWith(Class);
           CI->eraseFromParent();
+        } else if (V == intrinsics->GetClassDelegateeFunction) {
+          Changed = true;
+          BasicBlock* NBB = II->getParent()->splitBasicBlock(II);
+          I->getParent()->getTerminator()->eraseFromParent();
+          Value* Del = getDelegatee(intrinsics, Call.getArgument(0), CI);
+          Value* cmp = new ICmpInst(CI, ICmpInst::ICMP_EQ, Del, 
+                                    intrinsics->JavaObjectNullConstant, "");
+          
+          BasicBlock* NoDelegatee = BasicBlock::Create(*Context, "No delegatee", &F);
+          BasicBlock* DelegateeOK = BasicBlock::Create(*Context, "Delegatee OK", &F);
+          BranchInst::Create(NoDelegatee, DelegateeOK, cmp, CI);
+          PHINode* phi = PHINode::Create(intrinsics->JavaObjectType, 2, "", DelegateeOK);
+          phi->addIncoming(Del, CI->getParent());
+          
+          Instruction* Res = CallInst::Create(intrinsics->RuntimeDelegateeFunction,
+                                              Call.getArgument(0), "", NoDelegatee);
+          Res->setDebugLoc(CI->getDebugLoc());
+          BranchInst::Create(DelegateeOK, NoDelegatee);
+          phi->addIncoming(Res, NoDelegatee);
+
+          CI->replaceAllUsesWith(phi);
+          CI->eraseFromParent();
+          BranchInst::Create(NBB, DelegateeOK);
+          break;
+         
+        } else if (V == intrinsics->InitialisationCheckFunction) {
+          Changed = true;
+          
+          BasicBlock* NBB = 0;
+          if (CI->getParent()->getTerminator() != CI) {
+            NBB = II->getParent()->splitBasicBlock(II);
+            CI->getParent()->getTerminator()->eraseFromParent();
+          } else {
+            InvokeInst* Invoke = dyn_cast<InvokeInst>(CI);
+            assert(Invoke && "Last instruction is not an invoke");
+            NBB = Invoke->getNormalDest();
+          }
+         
+          Value* Cl = Call.getArgument(0); 
+          Value* TCM = getTCM(intrinsics, Call.getArgument(0), CI);
+          Value* GEP[2] = 
+            { intrinsics->constantZero,
+              intrinsics->OffsetInitializedInTaskClassMirrorConstant };
+          Value* StatusPtr = GetElementPtrInst::Create(TCM, GEP, "", CI);
+          
+          Value* test = new LoadInst(StatusPtr, "", CI);
+          
+          BasicBlock* trueCl = BasicBlock::Create(*Context, "Initialized", &F);
+          BasicBlock* falseCl = BasicBlock::Create(*Context, "Uninitialized", &F);
+          PHINode* node = llvm::PHINode::Create(intrinsics->JavaClassType, 2, "", trueCl);
+          node->addIncoming(Cl, CI->getParent());
+          BranchInst::Create(trueCl, falseCl, test, CI);
+  
+          
+          Instruction* res = 0;
+          if (InvokeInst* Invoke = dyn_cast<InvokeInst>(CI)) {
+            Value* Args[1] = { Cl };
+            BasicBlock* UI = Invoke->getUnwindDest();
+
+            res = InvokeInst::Create(intrinsics->InitialiseClassFunction,
+                                     trueCl, UI, Args, "", falseCl);
+
+            // For some reason, an LLVM pass may add PHI nodes to the
+            // exception destination.
+            BasicBlock::iterator Temp = UI->getInstList().begin();
+            while (PHINode* PHI = dyn_cast<PHINode>(Temp)) {
+              Value* Val = PHI->getIncomingValueForBlock(CI->getParent());
+              PHI->removeIncomingValue(CI->getParent(), false);
+              PHI->addIncoming(Val, falseCl);
+              Temp++;
+            }
+            
+            // And here we set the phi nodes of the normal dest of the Invoke
+            // instruction. The phi nodes have now the trueCl as basic block.
+            Temp = NBB->getInstList().begin();
+            while (PHINode* PHI = dyn_cast<PHINode>(Temp)) {
+              Value* Val = PHI->getIncomingValueForBlock(CI->getParent());
+              PHI->removeIncomingValue(CI->getParent(), false);
+              PHI->addIncoming(Val, trueCl);
+              Temp++;
+            }
+
+          } else {
+            res = CallInst::Create(intrinsics->InitialiseClassFunction,
+                                   Cl, "", falseCl);
+            BranchInst::Create(trueCl, falseCl);
+          }
+          res->setDebugLoc(CI->getDebugLoc());
+          
+          node->addIncoming(res, falseCl);
+
+
+          CI->replaceAllUsesWith(node);
+          CI->eraseFromParent();
+          BranchInst::Create(NBB, trueCl);
+          break;
         } else if (V == intrinsics->GetConstantPoolAtFunction) {
           Function* resolver = dyn_cast<Function>(Call.getArgument(0));
           assert(resolver && "Wrong use of GetConstantPoolAt");
           Type* returnType = resolver->getReturnType();
-          Value* isolateID = Call.getArgument(1);
-          Value* cl = Call.getArgument(2);
+          Value* CTP = Call.getArgument(1);
           Value* Index = Call.getArgument(3);
           Changed = true;
           BasicBlock* NBB = 0;
@@ -273,8 +392,9 @@ bool LowerConstantCalls::runOnFunction(F
             NBB = Invoke->getNormalDest();
           }
           
-          Value* GCVArgs[] = {cl, Index, isolateID};
-          Value* arg1 = CallInst::Create(intrinsics->GetCachedValueFunction, GCVArgs, "", CI);
+          Value* indexes = Index;
+          Value* arg1 = GetElementPtrInst::Create(CTP, indexes, "", CI);
+          arg1 = new LoadInst(arg1, "", false, CI);
           Value* test = new ICmpInst(CI, ICmpInst::ICMP_EQ, arg1,
                                      intrinsics->constantPtrNull, "");
  

Modified: vmkit/trunk/lib/j3/LLVMRuntime/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/LLVMRuntime/Makefile?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/LLVMRuntime/Makefile (original)
+++ vmkit/trunk/lib/j3/LLVMRuntime/Makefile Thu Apr 25 11:49:31 2013
@@ -12,8 +12,7 @@ include $(LEVEL)/Makefile.config
 
 VMKIT_RUNTIME = $(PROJ_SRC_DIR)/runtime-default.ll
 VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-mmtk-thread.ll
-#VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-single.ll
-VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-isolate.ll
+VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-single.ll
 
 BUILT_SOURCES = LLVMRuntime.inc
 

Modified: vmkit/trunk/lib/j3/LLVMRuntime/runtime-default.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/LLVMRuntime/runtime-default.ll?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/LLVMRuntime/runtime-default.ll (original)
+++ vmkit/trunk/lib/j3/LLVMRuntime/runtime-default.ll Thu Apr 25 11:49:31 2013
@@ -5,8 +5,8 @@
 ;;; A virtual table is an array of function pointers.
 %VT = type [0 x i32 (...)*]
 
-;;; The root of all Java Objects: a VT (and a lock moved into GC header).
-%JavaObject = type { %VT* }
+;;; The root of all Java Objects: a VT and a lock.
+%JavaObject = type { %VT*, i8* }
 
 ;;; Types for Java arrays. A size of 0 means an undefined size.
 %JavaArray = type { %JavaObject, i8* }
@@ -113,7 +113,7 @@ declare %VT* @getIMT(%VT*) readnone
 declare %JavaCommonClass* @getClass(%JavaObject*) readnone 
 
 ;;; getLock - Get the lock of an object.
-;;;declare i8* @getLock(%JavaObject*)
+declare i8* @getLock(%JavaObject*)
 
 ;;; getVTFromCommonClass - Get the VT of a class from its runtime
 ;;; representation.

Removed: vmkit/trunk/lib/j3/LLVMRuntime/runtime-isolate.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/LLVMRuntime/runtime-isolate.ll?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/lib/j3/LLVMRuntime/runtime-isolate.ll (original)
+++ vmkit/trunk/lib/j3/LLVMRuntime/runtime-isolate.ll (removed)
@@ -1,15 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;; Isolate specific types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-%JavaCommonClass = type { [256 x %JavaObject*], i32,
-                          %JavaClass**, i16, %UTF8*, %JavaClass*, i8*, %VT* }
-
-%ClassBytes = type { i32, i8* }
-
-%JavaClass = type { %JavaCommonClass, i32, i32, [256 x %TaskClassMirror],
-                    %JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16,
-                    %JavaMethod*, i16, i8*, %ClassBytes*, %JavaConstantPool*, %Attribute*,
-                    i16, %JavaClass**, i16, %JavaClass*, i16, i8, i8, i32, i32 }
-
-declare i32 @j3SetIsolate(i32, i32*)

Modified: vmkit/trunk/lib/j3/LLVMRuntime/runtime-single.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/LLVMRuntime/runtime-single.ll?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/LLVMRuntime/runtime-single.ll (original)
+++ vmkit/trunk/lib/j3/LLVMRuntime/runtime-single.ll Thu Apr 25 11:49:31 2013
@@ -9,5 +9,5 @@
 
 %JavaClass = type { %JavaCommonClass, i32, i32, [1 x %TaskClassMirror],
                     %JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16,
-                    %JavaMethod*, i16, i8*, %ClassBytes*, %JavaConstantPool*, %Attribute*,
+                    %JavaMethod*, i16, i8*, %ClassBytes*, %JavaConstantPool*, %Attribut*,
                     i16, %JavaClass**, i16, %JavaClass*, i16, i8, i8, i32, i32 }

Modified: vmkit/trunk/lib/j3/VMCore/JavaArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaArray.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaArray.h Thu Apr 25 11:49:31 2013
@@ -120,7 +120,7 @@ ARRAYCLASS(ArraySInt32, sint32);
 ARRAYCLASS(ArrayLong,   sint64);
 ARRAYCLASS(ArrayFloat,  float);
 ARRAYCLASS(ArrayDouble, double);
-ARRAYCLASS(ArrayPtr, void*);
+ARRAYCLASS(ArrayPtr, word_t);
 
 #undef ARRAYCLASS
 

Modified: vmkit/trunk/lib/j3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaClass.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaClass.cpp Thu Apr 25 11:49:31 2013
@@ -31,17 +31,17 @@
 
 using namespace j3;
 
-const UTF8* JavaAttribute::annotationsAttribute = 0;
-const UTF8* JavaAttribute::codeAttribute = 0;
-const UTF8* JavaAttribute::exceptionsAttribute = 0;
-const UTF8* JavaAttribute::constantAttribute = 0;
-const UTF8* JavaAttribute::lineNumberTableAttribute = 0;
-const UTF8* JavaAttribute::innerClassesAttribute = 0;
-const UTF8* JavaAttribute::sourceFileAttribute = 0;
-const UTF8* JavaAttribute::signatureAttribute = 0;
-const UTF8* JavaAttribute::enclosingMethodAttribute = 0;
-const UTF8* JavaAttribute::paramAnnotationsAttribute = 0;
-const UTF8* JavaAttribute::annotationDefaultAttribute = 0;
+const UTF8* Attribut::annotationsAttribut = 0;
+const UTF8* Attribut::codeAttribut = 0;
+const UTF8* Attribut::exceptionsAttribut = 0;
+const UTF8* Attribut::constantAttribut = 0;
+const UTF8* Attribut::lineNumberTableAttribut = 0;
+const UTF8* Attribut::innerClassesAttribut = 0;
+const UTF8* Attribut::sourceFileAttribut = 0;
+const UTF8* Attribut::signatureAttribut = 0;
+const UTF8* Attribut::enclosingMethodAttribut = 0;
+const UTF8* Attribut::paramAnnotationsAttribut = 0;
+const UTF8* Attribut::annotationDefaultAttribut = 0;
 
 Class* ClassArray::SuperArray;
 Class** ClassArray::InterfacesArray;
@@ -51,7 +51,7 @@ extern "C" void ArrayObjectTracer(JavaOb
 extern "C" void RegularObjectTracer(JavaObject*);
 extern "C" void ReferenceObjectTracer(JavaObject*);
 
-JavaAttribute::JavaAttribute(const UTF8* name, uint32 length,
+Attribut::Attribut(const UTF8* name, uint32 length,
                    uint32 offset) {
   
   this->start    = offset;
@@ -59,27 +59,27 @@ JavaAttribute::JavaAttribute(const UTF8*
   this->name     = name;
 }
 
-JavaAttribute* Class::lookupAttribute(const UTF8* key) {
-  for (uint32 i = 0; i < nbAttributes; ++i) {
-    JavaAttribute* cur = &(attributes[i]);
+Attribut* Class::lookupAttribut(const UTF8* key) {
+  for (uint32 i = 0; i < nbAttributs; ++i) {
+    Attribut* cur = &(attributs[i]);
     if (cur->name->equals(key)) return cur;
   }
 
   return 0;
 }
 
-JavaAttribute* JavaField::lookupAttribute(const UTF8* key) {
-  for (uint32 i = 0; i < nbAttributes; ++i) {
-    JavaAttribute* cur = &(attributes[i]);
+Attribut* JavaField::lookupAttribut(const UTF8* key) {
+  for (uint32 i = 0; i < nbAttributs; ++i) {
+    Attribut* cur = &(attributs[i]);
     if (cur->name->equals(key)) return cur;
   }
 
   return 0;
 }
 
-JavaAttribute* JavaMethod::lookupAttribute(const UTF8* key) {
-  for (uint32 i = 0; i < nbAttributes; ++i) {
-    JavaAttribute* cur = &(attributes[i]);
+Attribut* JavaMethod::lookupAttribut(const UTF8* key) {
+  for (uint32 i = 0; i < nbAttributs; ++i) {
+    Attribut* cur = &(attributs[i]);
     if (cur->name->equals(key)) return cur;
   }
 
@@ -90,9 +90,9 @@ CommonClass::~CommonClass() {
 }
 
 Class::~Class() {
-  for (uint32 i = 0; i < nbAttributes; ++i) {
-    JavaAttribute* cur = &(attributes[i]);
-    cur->~JavaAttribute();
+  for (uint32 i = 0; i < nbAttributs; ++i) {
+    Attribut* cur = &(attributs[i]);
+    cur->~Attribut();
     classLoader->allocator.Deallocate(cur);
   }
   
@@ -134,17 +134,17 @@ Class::~Class() {
 }
 
 JavaField::~JavaField() {
-  for (uint32 i = 0; i < nbAttributes; ++i) {
-    JavaAttribute* cur = &(attributes[i]);
-    cur->~JavaAttribute();
+  for (uint32 i = 0; i < nbAttributs; ++i) {
+    Attribut* cur = &(attributs[i]);
+    cur->~Attribut();
     classDef->classLoader->allocator.Deallocate(cur);
   }
 }
 
 JavaMethod::~JavaMethod() { 
-  for (uint32 i = 0; i < nbAttributes; ++i) {
-    JavaAttribute* cur = &(attributes[i]);
-    cur->~JavaAttribute();
+  for (uint32 i = 0; i < nbAttributs; ++i) {
+    Attribut* cur = &(attributs[i]);
+    cur->~Attribut();
     classDef->classLoader->allocator.Deallocate(cur);
   }
 }
@@ -443,11 +443,11 @@ JavaField* Class::lookupField(const UTF8
   return res;
 }
 
-JavaObject* UserClass::doNew(Jnjvm* vm, isolate_id_t isolateID) {
+JavaObject* UserClass::doNew(Jnjvm* vm) {
   JavaObject* res = NULL;
   llvm_gcroot(res, 0);
   assert(this && "No class when allocating.");
-  assert((this->isInitializing(isolateID) ||
+  assert((this->isInitializing() || 
           classLoader->getCompiler()->isStaticCompiling() ||
           this == classLoader->bootstrapLoader->upcalls->newClass)
          && "Uninitialized class when allocating.");
@@ -518,10 +518,10 @@ bool JavaVirtualTable::isSubtypeOf(JavaV
   return false;
 }
 
-void JavaField::InitNullStaticField(isolate_id_t isolateID) {
+void JavaField::InitNullStaticField() {
   
   Typedef* type = getSignature();
-  void* obj = classDef->getStaticInstance(isolateID);
+  void* obj = classDef->getStaticInstance();
   if (!type->isPrimitive()) {
     ((JavaObject**)((uint64)obj + ptrOffset))[0] = NULL;
     return;
@@ -549,9 +549,9 @@ void JavaField::InitNullStaticField(isol
   }
 }
 
-void JavaField::InitStaticField(uint64 val, isolate_id_t isolateID) {
+void JavaField::InitStaticField(uint64 val) { 
   Typedef* type = getSignature();
-  void* obj = classDef->getStaticInstance(isolateID);
+  void* obj = classDef->getStaticInstance();
   assert(type->isPrimitive() && "Non primitive field");
   PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
   if (prim->isLong()) {
@@ -572,31 +572,30 @@ void JavaField::InitStaticField(uint64 v
   }
 }
 
-void JavaField::InitStaticField(JavaObject* val, isolate_id_t isolateID) {
+void JavaField::InitStaticField(JavaObject* val) {
   llvm_gcroot(val, 0);
-  void* obj = classDef->getStaticInstance(isolateID);
+  void* obj = classDef->getStaticInstance();
   assert(isReference());
   JavaObject** ptr = (JavaObject**)((uint64)obj + ptrOffset);
   vmkit::Collector::objectReferenceNonHeapWriteBarrier((gc**)ptr, (gc*)val);
 }
 
-void JavaField::InitStaticField(double val, isolate_id_t isolateID) {
-  void* obj = classDef->getStaticInstance(isolateID);
+void JavaField::InitStaticField(double val) {
+  void* obj = classDef->getStaticInstance();
   ((double*)((uint64)obj + ptrOffset))[0] = val;
 }
 
-void JavaField::InitStaticField(float val, isolate_id_t isolateID) {
-  void* obj = classDef->getStaticInstance(isolateID);
+void JavaField::InitStaticField(float val) {
+  void* obj = classDef->getStaticInstance();
   ((float*)((uint64)obj + ptrOffset))[0] = val;
 }
 
 void JavaField::InitStaticField(Jnjvm* vm) {
   const Typedef* type = getSignature();
-  JavaAttribute* attribut = lookupAttribute(JavaAttribute::constantAttribute);
-  isolate_id_t isolateID = JavaThread::getValidIsolateID(CURRENT_ISOLATE);
+  Attribut* attribut = lookupAttribut(Attribut::constantAttribut);
 
   if (!attribut) {
-    InitNullStaticField(isolateID);
+    InitNullStaticField();
   } else {
     Reader reader(attribut, classDef->bytes);
     JavaConstantPool * ctpInfo = classDef->ctpInfo;
@@ -604,17 +603,17 @@ void JavaField::InitStaticField(Jnjvm* v
     if (type->isPrimitive()) {
       UserCommonClass* cl = type->assocClass(vm->bootstrapLoader);
       if (cl == vm->upcalls->OfLong) {
-        InitStaticField((uint64)ctpInfo->LongAt(idx), isolateID);
+        InitStaticField((uint64)ctpInfo->LongAt(idx));
       } else if (cl == vm->upcalls->OfDouble) {
-        InitStaticField(ctpInfo->DoubleAt(idx), isolateID);
+        InitStaticField(ctpInfo->DoubleAt(idx));
       } else if (cl == vm->upcalls->OfFloat) {
-        InitStaticField(ctpInfo->FloatAt(idx), isolateID);
+        InitStaticField(ctpInfo->FloatAt(idx));
       } else {
-        InitStaticField((uint64)ctpInfo->IntegerAt(idx), isolateID);
+        InitStaticField((uint64)ctpInfo->IntegerAt(idx));
       }
     } else if (type->isReference()) {
       const UTF8* utf8 = ctpInfo->UTF8At(ctpInfo->ctpDef[idx]);
-      InitStaticField((JavaObject*)ctpInfo->resolveString(utf8, idx), isolateID);
+      InitStaticField((JavaObject*)ctpInfo->resolveString(utf8, idx));
     } else {
       fprintf(stderr, "I haven't verified your class file and it's malformed:"
                       " unknown constant %s!\n",
@@ -676,7 +675,7 @@ void Class::readParents(Reader& reader)
 
 void internalLoadExceptions(JavaMethod& meth) {
   
-  JavaAttribute* codeAtt = meth.lookupAttribute(JavaAttribute::codeAttribute);
+  Attribut* codeAtt = meth.lookupAttribut(Attribut::codeAttribut);
    
   if (codeAtt) {
     Reader reader(codeAtt, meth.classDef->bytes);
@@ -711,15 +710,15 @@ void UserClass::loadExceptions() {
     internalLoadExceptions(staticMethods[i]);
 }
 
-JavaAttribute* Class::readAttributes(Reader& reader, uint16& size) {
+Attribut* Class::readAttributs(Reader& reader, uint16& size) {
   uint16 nba = reader.readU2();
  
-  JavaAttribute* attributs = new(classLoader->allocator, "Attributs") JavaAttribute[nba];
+  Attribut* attributs = new(classLoader->allocator, "Attributs") Attribut[nba];
 
   for (int i = 0; i < nba; i++) {
     const UTF8* attName = ctpInfo->UTF8At(reader.readU2());
     uint32 attLen = reader.readU4();
-    JavaAttribute& att = attributs[i];
+    Attribut& att = attributs[i];
     att.start = reader.cursor;
     att.nbb = attLen;
     att.name = attName;
@@ -749,7 +748,7 @@ void Class::readFields(Reader& reader) {
       field->initialise(this, name, type, access);
       ++nbVirtualFields;
     }
-    field->attributes = readAttributes(reader, field->nbAttributes);
+    field->attributs = readAttributs(reader, field->nbAttributs);
   }
 }
 
@@ -848,7 +847,7 @@ void Class::readMethods(Reader& reader)
       meth->initialise(this, name, type, access);
       ++nbVirtualMethods;
     }
-    meth->attributes = readAttributes(reader, meth->nbAttributes);
+    meth->attributs = readAttributs(reader, meth->nbAttributs);
   }
 
   if (isAbstract(access)) {
@@ -906,7 +905,7 @@ void Class::readClass() {
   readParents(reader);
   readFields(reader);
   readMethods(reader);
-  attributes = readAttributes(reader, nbAttributes);
+  attributs = readAttributs(reader, nbAttributs);
 }
 
 void UserClass::resolveParents() {
@@ -923,13 +922,14 @@ void Class::resolveClass() {
   resolveParents();
   loadExceptions();
   // Do a compare and swap in case another thread initialized the class.
-  setResolvedSynchronized(loaded);
+  __sync_val_compare_and_swap(
+      &(getCurrentTaskClassMirror().status), loaded, resolved);
   assert(isResolved() || isErroneous());
 }
 
 void UserClass::resolveInnerOuterClasses() {
   if (!innerOuterResolved) {
-    JavaAttribute* attribut = lookupAttribute(JavaAttribute::innerClassesAttribute);
+    Attribut* attribut = lookupAttribut(Attribut::innerClassesAttribut);
     if (attribut != 0) {
       Reader reader(attribut, bytes);
       uint16 nbi = reader.readU2();
@@ -1002,7 +1002,7 @@ ArrayObject* JavaMethod::getExceptionTyp
   llvm_gcroot(res, 0);
   llvm_gcroot(delegatee, 0);
   
-  JavaAttribute* exceptionAtt = lookupAttribute(JavaAttribute::exceptionsAttribute);
+  Attribut* exceptionAtt = lookupAttribut(Attribut::exceptionsAttribut);
   Jnjvm* vm = JavaThread::get()->getJVM();
   if (exceptionAtt == 0) {
     return (ArrayObject*)vm->upcalls->classArrayClass->doNew(0, vm);
@@ -1025,15 +1025,15 @@ ArrayObject* JavaMethod::getExceptionTyp
 }
 
 
-JavaObject* CommonClass::setDelegatee(JavaObject* val, isolate_id_t isolateID) {
+JavaObject* CommonClass::setDelegatee(JavaObject* val) {
   llvm_gcroot(val, 0);
-  JavaObject** obj = getDelegateePtr(isolateID);
+  JavaObject** obj = &(delegatee[0]);
   classLoader->lock.lock();
   if (*obj == NULL) {
     vmkit::Collector::objectReferenceNonHeapWriteBarrier((gc**)obj, (gc*)val);
   }
   classLoader->lock.unlock();
-  return getDelegatee(isolateID);
+  return getDelegatee();
 }
 
 
@@ -1288,14 +1288,14 @@ ArrayUInt16* JavaMethod::toString() cons
 }
 
 
-bool UserClass::needsInitialisationCheck(isolate_id_t isolateID) {
+bool UserClass::needsInitialisationCheck() {
   
-//  if (isReady(isolateID)) return false;
+  if (isReady()) return false;
 
-  if (super && super->needsInitialisationCheck(isolateID))
+  if (super && super->needsInitialisationCheck())
     return true;
 
-  if (nbStaticFields > 0) return true;
+  if (nbStaticFields) return true;
 
   JavaMethod* meth = 
     lookupMethodDontThrow(classLoader->bootstrapLoader->clinitName,
@@ -1304,8 +1304,7 @@ bool UserClass::needsInitialisationCheck
   
   if (meth) return true;
 
-  setResolved();
-  setInitializationState(ready, isolateID);
+  setInitializationState(ready);
   return false;
 }
 
@@ -1700,7 +1699,7 @@ void AnnotationReader::readElementValue(
 }
 
 uint16 JavaMethod::lookupLineNumber(vmkit::FrameInfo* info) {
-  JavaAttribute* codeAtt = lookupAttribute(JavaAttribute::codeAttribute);      
+  Attribut* codeAtt = lookupAttribut(Attribut::codeAttribut);      
   if (codeAtt == NULL) return 0;
   Reader reader(codeAtt, classDef->bytes);
   reader.readU2(); // max_stack
@@ -1713,7 +1712,7 @@ uint16 JavaMethod::lookupLineNumber(vmki
   for (uint16 att = 0; att < nba; ++att) {
     const UTF8* attName = classDef->ctpInfo->UTF8At(reader.readU2());
     uint32 attLen = reader.readU4();
-    if (attName->equals(JavaAttribute::lineNumberTableAttribute)) {
+    if (attName->equals(Attribut::lineNumberTableAttribut)) {
       uint16_t lineLength = reader.readU2();
       uint16_t currentLine = 0;
       for (uint16 j = 0; j < lineLength; ++j) {
@@ -1730,7 +1729,7 @@ uint16 JavaMethod::lookupLineNumber(vmki
 }
 
 uint16 JavaMethod::lookupCtpIndex(vmkit::FrameInfo* FI) {
-  JavaAttribute* codeAtt = lookupAttribute(JavaAttribute::codeAttribute);
+  Attribut* codeAtt = lookupAttribut(Attribut::codeAttribut);
   Reader reader(codeAtt, classDef->bytes);
   reader.cursor = reader.cursor + 2 + 2 + 4 + FI->SourceIndex + 1;
   return reader.readU2();
@@ -1765,20 +1764,19 @@ void Class::broadcastClass() {
   JavaObject::notifyAll(delegatee);
 }
 
-bool Class::isInitializing(isolate_id_t isolateID)
-{
-  TaskClassMirror& TCM = getTaskClassMirror(isolateID);
-  if (TCM.status >= inClinit) return true;
-  if (!isResolved(isolateID)) return false;
-
-  needsInitialisationCheck(isolateID);
-  return (TCM.status >= inClinit);
-}
-
-JavaField_IMPL_ASSESSORS(float, Float)
-JavaField_IMPL_ASSESSORS(double, Double)
-JavaField_IMPL_ASSESSORS(uint8, Int8)
-JavaField_IMPL_ASSESSORS(uint16, Int16)
-JavaField_IMPL_ASSESSORS(uint32, Int32)
-JavaField_IMPL_ASSESSORS(sint64, Long)
-JavaField_IMPL_ASSESSORS(JavaObject*, Object)
+void JavaField::setInstanceObjectField(JavaObject* obj, JavaObject* val) {
+  llvm_gcroot(obj, 0);
+  llvm_gcroot(val, 0);
+  if (val != NULL) assert(val->getVirtualTable());
+  assert(classDef->isResolved());
+  JavaObject** ptr = (JavaObject**)((uint64)obj + ptrOffset);
+  vmkit::Collector::objectReferenceWriteBarrier((gc*)obj, (gc**)ptr, (gc*)val);
+}
+
+void JavaField::setStaticObjectField(JavaObject* val) {
+  llvm_gcroot(val, 0);
+  if (val != NULL) assert(val->getVirtualTable());
+  assert(classDef->isResolved());
+  JavaObject** ptr = (JavaObject**)((uint64)classDef->getStaticInstance() + ptrOffset);
+  vmkit::Collector::objectReferenceNonHeapWriteBarrier((gc**)ptr, (gc*)val);
+}

Modified: vmkit/trunk/lib/j3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaClass.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaClass.h Thu Apr 25 11:49:31 2013
@@ -22,9 +22,6 @@
 #include "JavaObject.h"
 #include "JnjvmClassLoader.h"
 #include "JnjvmConfig.h"
-#include "Jnjvm.h"
-#include "JavaTypes.h"
-#include "JavaThread.h"
 
 #include <cassert>
 #include <set>
@@ -73,84 +70,84 @@ public:
   void readElementValue();
 };
 
-/// Attribute - This class represents JVM attributes to Java class, methods and
+/// Attribut - This class represents JVM attributes to Java class, methods and
 /// fields located in the .class file.
 ///
-class JavaAttribute : public vmkit::PermanentObject {
+class Attribut : public vmkit::PermanentObject {
 public:
   
-  /// name - The name of the attribute. These are specified in the JVM book.
+  /// name - The name of the attribut. These are specified in the JVM book.
   /// Experimental attributes exist, but the JnJVM does nor parse them.
   ///
   const UTF8* name;
 
-  /// start - The offset in the class of this attribute.
+  /// start - The offset in the class of this attribut.
   ///
   uint32 start;
 
-  /// nbb - The size of the attribute.
+  /// nbb - The size of the attribut.
   ///
   uint32 nbb;
 
-  /// Attribute - Create an attribute at the given length and offset.
+  /// Attribut - Create an attribut at the given length and offset.
   ///
-  JavaAttribute(const UTF8* name, uint32 length, uint32 offset);
-  JavaAttribute() {}
+  Attribut(const UTF8* name, uint32 length, uint32 offset);
+  Attribut() {}
 
-  /// codeAttribute - The "Code" JVM attribute. This is a method attribute for
+  /// codeAttribut - The "Code" JVM attribut. This is a method attribut for
   /// finding the bytecode of a method in the .class file.
   //
-  static const UTF8* codeAttribute;
+  static const UTF8* codeAttribut;
   
-  /// annotationsAttribute - The "RuntimeVisibleAnnotations" JVM attribute.
-  /// This is a method attribute for getting the runtime annotations.
+  /// annotationsAttribut - The "RuntimeVisibleAnnotations" JVM attribut.
+  /// This is a method attribut for getting the runtime annotations.
   //
-  static const UTF8* annotationsAttribute;
+  static const UTF8* annotationsAttribut;
 
-  /// exceptionsAttribute - The "Exceptions" attribute. This is a method
-  /// attribute for finding the exception table of a method in the .class
+  /// exceptionsAttribut - The "Exceptions" attribut. This is a method
+  /// attribut for finding the exception table of a method in the .class
   /// file.
   ///
-  static const UTF8* exceptionsAttribute;
+  static const UTF8* exceptionsAttribut;
 
-  /// constantAttribute - The "ConstantValue" attribute. This is a field attribute
+  /// constantAttribut - The "ConstantValue" attribut. This is a field attribut
   /// when the field has a static constant value.
   ///
-  static const UTF8* constantAttribute;
+  static const UTF8* constantAttribut;
 
-  /// lineNumberTableAttribute - The "LineNumberTable" attribute. This is used
+  /// lineNumberTableAttribut - The "LineNumberTable" attribut. This is used
   /// for corresponding JVM bytecode to source line in the .java file.
   ///
-  static const UTF8* lineNumberTableAttribute;
+  static const UTF8* lineNumberTableAttribut;
 
-  /// innerClassAttribute - The "InnerClasses" attribute. This is a class attribute
+  /// innerClassAttribut - The "InnerClasses" attribut. This is a class attribut
   /// for knowing the inner/outer informations of a Java class.
   ///
-  static const UTF8* innerClassesAttribute;
+  static const UTF8* innerClassesAttribut;
 
-  /// sourceFileAttribute - The "SourceFile" attribute. This is a class attribute
-  /// and gives the correspondence between a class and the name of its Java
+  /// sourceFileAttribut - The "SourceFile" attribut. This is a class attribut
+  /// and gives the correspondance between a class and the name of its Java
   /// file.
   ///
-  static const UTF8* sourceFileAttribute;
+  static const UTF8* sourceFileAttribut;
 
-  /// signatureAttribute - The "Signature" attribute.  This is used to record
+  /// signatureAttribut - The "Signature" attribut.  This is used to record
   /// generics information about a class or method.
   ///
-  static const UTF8* signatureAttribute;
+  static const UTF8* signatureAttribut;
 
-  /// enclosingMEthodAttribute - The "EnclosingMethod" attribute.  This is a class
-  /// attribute that identifies the method defining a local or anonymous class
+  /// enclosingMEthodAttribut - The "EnclosingMethod" attribut.  This is a class
+  /// attribut that identifies the method definining a local or anonymous class
   ///
-  static const UTF8* enclosingMethodAttribute;
+  static const UTF8* enclosingMethodAttribut;
 
-  /// paramAnnotationsAttribute - Annotations for parameters attribute
+  /// paramAnnotationsAttribut - Annotations for parameters attribut
   ///
-  static const UTF8* paramAnnotationsAttribute;
+  static const UTF8* paramAnnotationsAttribut;
 
-  /// annotationDefaultAttribute - The "AnnotationDefault" attribute
+  /// annotationDefaultAttribut - The "AnnotationDefault" attribut
   ///
-  static const UTF8* annotationDefaultAttribute;
+  static const UTF8* annotationDefaultAttribut;
 };
 
 /// TaskClassMirror - The isolate specific class information: the initialization
@@ -178,7 +175,7 @@ public:
 ///
 class CommonClass : public vmkit::PermanentObject {
 
-private:
+public:
   
 //===----------------------------------------------------------------------===//
 //
@@ -192,7 +189,6 @@ private:
   ///
   JavaObject* delegatee[NR_ISOLATES];
 
-public:
   /// access - {public, private, protected}.
   ///
   uint32 access;
@@ -322,7 +318,7 @@ public:
   /// getClassDelegatee - Return the java/lang/Class representation of this
   /// class.
   ///
-  JavaObject* getClassDelegatee(Jnjvm* vm, JavaObject* pd = NULL, isolate_id_t isolateID = CURRENT_ISOLATE);
+  JavaObject* getClassDelegatee(Jnjvm* vm, JavaObject* pd = NULL);
   
   /// getClassDelegateePtr - Return a pointer on the java/lang/Class
   /// representation of this class. Used for JNI.
@@ -357,22 +353,19 @@ public:
  
   /// setDelegatee - Set the java/lang/Class object of this class.
   ///
-  JavaObject* setDelegatee(JavaObject* val, isolate_id_t isolateID = CURRENT_ISOLATE);
+  JavaObject* setDelegatee(JavaObject* val);
 
   /// getDelegatee - Get the java/lang/Class object representing this class.
   ///
-  JavaObject* getDelegatee(isolate_id_t isolateID = CURRENT_ISOLATE) const {
-    return *getDelegateePtr(isolateID);
+  JavaObject* getDelegatee() const {
+    return delegatee[0];
   }
   
   /// getDelegatee - Get a pointer on the java/lang/Class object
   /// representing this class.
   ///
-  JavaObject* const* getDelegateePtr(isolate_id_t isolateID = CURRENT_ISOLATE) const {
-    return const_cast<CommonClass *>(this)->getDelegateePtr(isolateID);
-  }
-  JavaObject** getDelegateePtr(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return delegatee + JavaThread::getValidIsolateID(isolateID);
+  JavaObject* const* getDelegateePtr() const {
+    return delegatee;
   }
 
   /// resolvedImplClass - Return the internal representation of the
@@ -470,13 +463,13 @@ public:
   ///
   JavaConstantPool* ctpInfo;
 
-  /// attributes - JVM attributes of this class.
+  /// attributs - JVM attributes of this class.
   ///
-  JavaAttribute* attributes;
+  Attribut* attributs;
 
-  /// nbAttributes - The number of attributes.
+  /// nbAttributs - The number of attributes.
   ///
-  uint16 nbAttributes;
+  uint16 nbAttributs;
   
   /// innerClasses - The inner classes of this class.
   ///
@@ -607,7 +600,7 @@ public:
   
   /// doNew - Allocates a Java object whose class is this class.
   ///
-  JavaObject* doNew(Jnjvm* vm, isolate_id_t isolateID = CURRENT_ISOLATE);
+  JavaObject* doNew(Jnjvm* vm);
   
   /// tracer - Tracer function of instances of Class.
   ///
@@ -616,9 +609,9 @@ public:
   ~Class();
   Class();
   
-  /// lookupAttribute - Look up a JVM attribute of this class.
+  /// lookupAttribut - Look up a JVM attribut of this class.
   ///
-  JavaAttribute* lookupAttribute(const UTF8* key);
+  Attribut* lookupAttribut(const UTF8* key);
   
   /// allocateStaticInstance - Allocate the static instance of this class.
   ///
@@ -637,9 +630,9 @@ public:
   ///
   void loadExceptions();
 
-  /// readAttributes - Reads the attributes of the class.
+  /// readAttributs - Reads the attributs of the class.
   ///
-  JavaAttribute* readAttributes(Reader& reader, uint16& size);
+  Attribut* readAttributs(Reader& reader, uint16& size);
 
   /// readFields - Reads the fields of the class.
   ///
@@ -700,85 +693,89 @@ public:
   /// isolate.
   ///
   TaskClassMirror& getCurrentTaskClassMirror() {
-    return getTaskClassMirror();
-  }
-
-  TaskClassMirror& getTaskClassMirror(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return IsolateInfo[JavaThread::getValidIsolateID(isolateID)];
+    return IsolateInfo[0];
   }
-
+  
   /// isReadyForCompilation - Can this class be inlined when JITing?
   ///
-  bool isReadyForCompilation(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return isReady(isolateID);
+  bool isReadyForCompilation() {
+    return isReady();
   }
   
   /// setResolved - Set the status of the class as resolved.
-  /// Resolved state is common to all isolates
+  ///
   void setResolved() {
-    getTaskClassMirror(0).status = resolved;
+    getCurrentTaskClassMirror().status = resolved;
   }
   
-  void setResolvedSynchronized(uint8 oldStatus, isolate_id_t isolateID = CURRENT_ISOLATE) {
-    TaskClassMirror& TCM = getTaskClassMirror(0);
-    __sync_val_compare_and_swap(&TCM.status, oldStatus, resolved);
-  }
-
   /// setErroneous - Set the class as erroneous.
   ///
   void setErroneous() {
     getCurrentTaskClassMirror().status = erroneous;
   }
   
+  /// setIsResolving - The class file is being resolved.
+  ///
+  void setIsResolving() {
+    getCurrentTaskClassMirror().status = resolving;
+  }
+  
   /// getStaticInstance - Get the memory that holds static variables.
   ///
-  void* getStaticInstance(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return getTaskClassMirror(isolateID).staticInstance;
+  void* getStaticInstance() {
+    return getCurrentTaskClassMirror().staticInstance;
   }
   
   /// setStaticInstance - Set the memory that holds static variables.
   ///
-  void setStaticInstance(void* val, isolate_id_t isolateID = CURRENT_ISOLATE) {
-    TaskClassMirror& TCM = getTaskClassMirror(isolateID);
-    assert((val != NULL) && (TCM.staticInstance == NULL));
-    TCM.staticInstance = val;
+  void setStaticInstance(void* val) {
+    assert(getCurrentTaskClassMirror().staticInstance == NULL);
+    getCurrentTaskClassMirror().staticInstance = val;
   }
   
   /// getInitializationState - Get the state of the class.
   ///
-  uint8 getInitializationState(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return getTaskClassMirror(isolateID).status;
+  uint8 getInitializationState() {
+    return getCurrentTaskClassMirror().status;
   }
 
   /// setInitializationState - Set the state of the class.
   ///
-  void setInitializationState(uint8 st, isolate_id_t isolateID = CURRENT_ISOLATE) {
-    TaskClassMirror& TCM = getTaskClassMirror(isolateID);
+  void setInitializationState(uint8 st) {
+    TaskClassMirror& TCM = getCurrentTaskClassMirror();
     TCM.status = st;
     if (st == ready) TCM.initialized = true;
   }
   
   /// isReady - Has this class been initialized?
   ///
-  bool isReady(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return getTaskClassMirror(isolateID).status == ready;
+  bool isReady() {
+    return getCurrentTaskClassMirror().status == ready;
   }
   
   /// isInitializing - Is the class currently being initialized?
   ///
-  bool isInitializing(isolate_id_t isolateID = CURRENT_ISOLATE);
+  bool isInitializing() {
+    return getCurrentTaskClassMirror().status >= inClinit;
+  }
   
   /// isResolved - Has this class been resolved?
   ///
-  bool isResolved(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return (getTaskClassMirror(0).status >= resolved &&
-    		getTaskClassMirror(isolateID).status != erroneous);
+  bool isResolved() {
+    uint8 stat = getCurrentTaskClassMirror().status;
+    return (stat >= resolved && stat != erroneous);
   }
   
   /// isErroneous - Is the class in an erroneous state.
   ///
-  bool isErroneous(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    return getTaskClassMirror(isolateID).status == erroneous;
+  bool isErroneous() {
+    return getCurrentTaskClassMirror().status == erroneous;
+  }
+
+  /// isResolving - Is the class currently being resolved?
+  ///
+  bool isResolving() {
+    return getCurrentTaskClassMirror().status == resolving;
   }
 
   /// isNativeOverloaded - Is the method overloaded with a native function?
@@ -787,7 +784,7 @@ public:
 
   /// needsInitialisationCheck - Does the method need an initialisation check?
   ///
-  bool needsInitialisationCheck(isolate_id_t isolateID = CURRENT_ISOLATE);
+  bool needsInitialisationCheck();
 
   /// fillIMT - Fill the vector with vectors of methods with the same IMT
   /// index.
@@ -880,13 +877,13 @@ public:
   ///
   uint16 access;
 
-  /// attributes - List of Java attributes of this method.
+  /// attributs - List of Java attributs of this method.
   ///
-  JavaAttribute* attributes;
+  Attribut* attributs;
   
-  /// nbAttributes - The number of attributes.
+  /// nbAttributs - The number of attributes.
   ///
-  uint16 nbAttributes;
+  uint16 nbAttributs;
 
   /// classDef - The Java class where the method is defined.
   ///
@@ -912,10 +909,10 @@ public:
   ///
   uint32 offset;
 
-  /// lookupAttribute - Look up an attribute in the method's attributes. Returns
-  /// null if the attribute is not found.
+  /// lookupAttribut - Look up an attribut in the method's attributs. Returns
+  /// null if the attribut is not found.
   ///
-  JavaAttribute* lookupAttribute(const UTF8* key);
+  Attribut* lookupAttribut(const UTF8* key);
 
   /// lookupLineNumber - Find the line number based on the given frame info.
   ///
@@ -926,7 +923,7 @@ public:
   ///
   uint16 lookupCtpIndex(vmkit::FrameInfo* FI);
   
-  /// getSignature - Get the signature of the method, resolving it if
+  /// getSignature - Get the signature of thes method, resolving it if
   /// necessary.
   ///
   Signdef* getSignature() {
@@ -989,123 +986,108 @@ public:
 //
 //===----------------------------------------------------------------------===//
   
-#define DO_TRY
-#define DO_CATCH if (th->pendingException) { th->throwFromJava(); }
-
-private:
-	jvalue* marshalArguments(vmkit::ThreadAllocator& allocator, va_list& ap);
-
-	template<class TYPE, class FUNC_TYPE_VIRTUAL_BUF>
-	TYPE invokeSpecialBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {
-		llvm_gcroot(obj, 0);
-		verifyNull(obj);
-
-		void* func = this->compiledPtr();
-		FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)getSignature()->getVirtualCallBuf();
-
-		JavaThread* th = JavaThread::get();
-		th->startJava();
-		TYPE res;
-
-		DO_TRY
-			res = call(cl->getConstantPool(), func, obj, buf);
-		DO_CATCH
-
-		th->endJava();
-		return res;
-	}
-
-	template<class TYPE, class FUNC_TYPE_VIRTUAL_BUF>
-	TYPE invokeVirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {
-		UserCommonClass* theClass = JavaObject::getClass(obj);
-		UserClass* objCl = theClass->isArray() ? theClass->super : theClass->asClass();
-
-		JavaMethod* meth = this;
-		if ((objCl != classDef) && !isFinal(access)) {
-			meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl);
-			assert(meth && "No method found");
-		}
-
-		assert(objCl->isSubclassOf(meth->classDef) && "Wrong type");
-
-		return meth->invokeSpecialBuf<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, buf);
-	}
-
-	template<class TYPE, class FUNC_TYPE_STATIC_BUF>
-	TYPE invokeStaticBuf(Jnjvm* vm, UserClass* cl, void* buf) {
-		if (!cl->isReady()) {
-			cl->resolveClass();
-			cl->initialiseClass(vm);
-		}
-
-		void* func = this->compiledPtr();
-		FUNC_TYPE_STATIC_BUF call = (FUNC_TYPE_STATIC_BUF)getSignature()->getStaticCallBuf();
-
-		JavaThread* th = JavaThread::get();
-		th->startJava();
-		TYPE res;
-
-		DO_TRY
-			res = call(cl->getConstantPool(), func, buf);
-		DO_CATCH
-
-		th->endJava();
-		return res;
-	}
-
-	template<class TYPE, class FUNC_TYPE_VIRTUAL_BUF>
-	TYPE invokeVirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list& ap) {
-		llvm_gcroot(obj, 0);
-		verifyNull(obj);
-
-		vmkit::ThreadAllocator allocator;
-		jvalue* buffer = marshalArguments(allocator, ap);
-		return invokeVirtualBuf<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, buffer);
-	}
-
-	template<class TYPE, class FUNC_TYPE_VIRTUAL_BUF>
-	TYPE invokeSpecialAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list& ap) {
-		llvm_gcroot(obj, 0);
-		verifyNull(obj);
-
-		vmkit::ThreadAllocator allocator;
-		jvalue* buffer = marshalArguments(allocator, ap);
-		return invokeSpecialBuf<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, buffer);
-	}
-
-	template<class TYPE, class FUNC_TYPE_STATIC_BUF>
-	TYPE invokeStaticAP(Jnjvm* vm, UserClass* cl, va_list& ap) {
-		vmkit::ThreadAllocator allocator;
-		jvalue* buffer = marshalArguments(allocator, ap);
-		return invokeStaticBuf<TYPE, FUNC_TYPE_STATIC_BUF>(vm, cl, buffer);
-	}
-
-#define JavaMethod_DECL_INVOKE_VA(TYPE, TYPE_NAME) \
-	TYPE invoke##TYPE_NAME##Virtual(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) __attribute__ ((noinline));	\
-	TYPE invoke##TYPE_NAME##Special(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) __attribute__ ((noinline));	\
-	TYPE invoke##TYPE_NAME##Static(Jnjvm* vm, UserClass* cl, ...) __attribute__ ((noinline));
-
-#define JavaMethod_DECL_INVOKE_AP(TYPE, TYPE_NAME)	\
-	TYPE invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list& ap) __attribute__ ((noinline));	\
-	TYPE invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list& ap) __attribute__ ((noinline));	\
-	TYPE invoke##TYPE_NAME##StaticAP(Jnjvm* vm, UserClass* cl, va_list& ap) __attribute__ ((noinline));
-
-#define JavaMethod_DECL_INVOKE_BUF(TYPE, TYPE_NAME)	\
-	TYPE invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) __attribute__ ((noinline));	\
-	TYPE invoke##TYPE_NAME##SpecialBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) __attribute__ ((noinline));	\
- 	TYPE invoke##TYPE_NAME##StaticBuf(Jnjvm* vm, UserClass* cl, void* buf) __attribute__ ((noinline));
-
-#define JavaMethod_DECL_INVOKE(TYPE, TYPE_NAME) \
-	JavaMethod_DECL_INVOKE_BUF(TYPE, TYPE_NAME)	\
-	JavaMethod_DECL_INVOKE_AP(TYPE, TYPE_NAME)	\
-	JavaMethod_DECL_INVOKE_VA(TYPE, TYPE_NAME)
-
-public:
-	JavaMethod_DECL_INVOKE(uint32_t, Int)
-	JavaMethod_DECL_INVOKE(int64_t, Long)
-	JavaMethod_DECL_INVOKE(float,  Float)
-	JavaMethod_DECL_INVOKE(double, Double)
-	JavaMethod_DECL_INVOKE(JavaObject*, JavaObject)
+  /// This class of methods takes a variable argument list.
+  uint32 invokeIntSpecialAP(Jnjvm* vm, UserClass*, JavaObject* obj, va_list ap)
+    __attribute__ ((noinline));
+  float invokeFloatSpecialAP(Jnjvm* vm, UserClass*, JavaObject* obj, va_list ap)
+    __attribute__ ((noinline));
+  double invokeDoubleSpecialAP(Jnjvm* vm, UserClass*, JavaObject* obj,
+                               va_list ap) __attribute__ ((noinline));
+  sint64 invokeLongSpecialAP(Jnjvm* vm, UserClass*, JavaObject* obj, va_list ap)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectSpecialAP(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                        va_list ap) __attribute__ ((noinline));
+  
+  uint32 invokeIntVirtualAP(Jnjvm* vm, UserClass*, JavaObject* obj, va_list ap)
+    __attribute__ ((noinline));
+  float invokeFloatVirtualAP(Jnjvm* vm, UserClass*, JavaObject* obj, va_list ap)
+    __attribute__ ((noinline));
+  double invokeDoubleVirtualAP(Jnjvm* vm, UserClass*, JavaObject* obj,
+                               va_list ap) __attribute__ ((noinline));
+  sint64 invokeLongVirtualAP(Jnjvm* vm, UserClass*, JavaObject* obj, va_list ap)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectVirtualAP(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                        va_list ap) __attribute__ ((noinline));
+  
+  uint32 invokeIntStaticAP(Jnjvm* vm, UserClass*, va_list ap)
+    __attribute__ ((noinline));
+  float invokeFloatStaticAP(Jnjvm* vm, UserClass*, va_list ap)
+    __attribute__ ((noinline));
+  double invokeDoubleStaticAP(Jnjvm* vm, UserClass*, va_list ap)
+    __attribute__ ((noinline));
+  sint64 invokeLongStaticAP(Jnjvm* vm, UserClass*, va_list ap)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectStaticAP(Jnjvm* vm, UserClass*, va_list ap)
+    __attribute__ ((noinline));
+
+  /// This class of methods takes a buffer which contain the arguments of the
+  /// call.
+  uint32 invokeIntSpecialBuf(Jnjvm* vm, UserClass*, JavaObject* obj, void* buf)
+    __attribute__ ((noinline));
+  float invokeFloatSpecialBuf(Jnjvm* vm, UserClass*, JavaObject* obj, void* buf)
+    __attribute__ ((noinline));
+  double invokeDoubleSpecialBuf(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                void* buf) __attribute__ ((noinline));
+  sint64 invokeLongSpecialBuf(Jnjvm* vm, UserClass*, JavaObject* obj, void* buf)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectSpecialBuf(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                         void* buf) __attribute__ ((noinline));
+  
+  uint32 invokeIntVirtualBuf(Jnjvm* vm, UserClass*, JavaObject* obj, void* buf)
+    __attribute__ ((noinline));
+  float invokeFloatVirtualBuf(Jnjvm* vm, UserClass*, JavaObject* obj, void* buf)
+    __attribute__ ((noinline));
+  double invokeDoubleVirtualBuf(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                void* buf) __attribute__ ((noinline));
+  sint64 invokeLongVirtualBuf(Jnjvm* vm, UserClass*, JavaObject* obj, void* buf)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectVirtualBuf(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                         void* buf) __attribute__ ((noinline));
+  
+  uint32 invokeIntStaticBuf(Jnjvm* vm, UserClass*, void* buf)
+    __attribute__ ((noinline));
+  float invokeFloatStaticBuf(Jnjvm* vm, UserClass*, void* buf)
+    __attribute__ ((noinline));
+  double invokeDoubleStaticBuf(Jnjvm* vm, UserClass*, void* buf)
+    __attribute__ ((noinline));
+  sint64 invokeLongStaticBuf(Jnjvm* vm, UserClass*, void* buf)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectStaticBuf(Jnjvm* vm, UserClass*, void* buf)
+    __attribute__ ((noinline));
+
+  /// This class of methods is variadic.
+  uint32 invokeIntSpecial(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  float invokeFloatSpecial(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  double invokeDoubleSpecial(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  sint64 invokeLongSpecial(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectSpecial(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                      ...) __attribute__ ((noinline));
+  
+  uint32 invokeIntVirtual(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  float invokeFloatVirtual(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  double invokeDoubleVirtual(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  sint64 invokeLongVirtual(Jnjvm* vm, UserClass*, JavaObject* obj, ...)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectVirtual(Jnjvm* vm, UserClass*, JavaObject* obj,
+                                      ...) __attribute__ ((noinline));
+  
+  uint32 invokeIntStatic(Jnjvm* vm, UserClass*, ...)
+    __attribute__ ((noinline));
+  float invokeFloatStatic(Jnjvm* vm, UserClass*, ...)
+    __attribute__ ((noinline));
+  double invokeDoubleStatic(Jnjvm* vm, UserClass*, ...)
+    __attribute__ ((noinline));
+  sint64 invokeLongStatic(Jnjvm* vm, UserClass*, ...)
+    __attribute__ ((noinline));
+  JavaObject* invokeJavaObjectStatic(Jnjvm* vm, UserClass*, ...)
+    __attribute__ ((noinline));
   
   #define JNI_NAME_PRE "Java_"
   #define JNI_NAME_PRE_LEN 5
@@ -1122,11 +1104,11 @@ private:
   
   /// InitField - Set an initial value to the field.
   ///
-  void InitStaticField(uint64 val, isolate_id_t isolateID = CURRENT_ISOLATE);
-  void InitStaticField(JavaObject* val, isolate_id_t isolateID = CURRENT_ISOLATE);
-  void InitStaticField(double val, isolate_id_t isolateID = CURRENT_ISOLATE);
-  void InitStaticField(float val, isolate_id_t isolateID = CURRENT_ISOLATE);
-  void InitNullStaticField(isolate_id_t isolateID = CURRENT_ISOLATE);
+  void InitStaticField(uint64 val);
+  void InitStaticField(JavaObject* val);
+  void InitStaticField(double val);
+  void InitStaticField(float val);
+  void InitNullStaticField();
 
 public:
   
@@ -1150,13 +1132,13 @@ public:
   ///
   const UTF8* type;
 
-  /// attributes - List of Java attributes for this field.
+  /// attributs - List of Java attributs for this field.
   ///
-  JavaAttribute* attributes;
+  Attribut* attributs;
   
-  /// nbAttributes - The number of attributes.
+  /// nbAttributs - The number of attributes.
   ///
-  uint16 nbAttributes;
+  uint16 nbAttributs;
 
   /// classDef - The class where the field is defined.
   ///
@@ -1185,13 +1167,13 @@ public:
   ///
   void InitStaticField(Jnjvm* vm);
 
-  /// lookupAttribute - Look up the attribute in the field's list of attributes.
+  /// lookupAttribut - Look up the attribut in the field's list of attributs.
   ///
-  JavaAttribute* lookupAttribute(const UTF8* key);
+  Attribut* lookupAttribut(const UTF8* key);
 
-  JavaObject** getStaticObjectFieldPtr(isolate_id_t isolateID = CURRENT_ISOLATE) {
-    assert(classDef->getStaticInstance(isolateID));
-    return (JavaObject**)((uint64)classDef->getStaticInstance(isolateID) + ptrOffset);
+  JavaObject** getStaticObjectFieldPtr() {
+    assert(classDef->getStaticInstance());
+    return (JavaObject**)((uint64)classDef->getStaticInstance() + ptrOffset);
   }
 
   JavaObject** getInstanceObjectFieldPtr(JavaObject* obj) {
@@ -1199,89 +1181,74 @@ public:
     return (JavaObject**)((uint64)obj + ptrOffset);
   }
 
-private:
   /// getStatic*Field - Get a static field.
   ///
-  template <class TYPE>
-  TYPE getStaticField(isolate_id_t isolateID) {
-    assert(classDef->isResolved(isolateID));
-    void* ptr = (void*)((uint64)classDef->getStaticInstance(isolateID) + ptrOffset);
-    return *static_cast<TYPE *>(ptr);
-  }
-
-  /*
-    The struct FieldSetter is a workaround in C++ to enable
-    template-based method specialization in a non-template
-    class. See specialization below the class declaration.
-  */
-  template<class TYPE>
-  struct FieldSetter {
-	  /// setStatic*Field - Set a field of an object.
-	  ///
-	  static void setStaticField(const JavaField* field, TYPE val, isolate_id_t isolateID) {
-	    assert(field->classDef->isResolved(isolateID));
-	    void* ptr = (void*)((uint64)field->classDef->getStaticInstance(isolateID) + field->ptrOffset);
-	    *static_cast<TYPE *>(ptr) = val;
-	  }
-      
-	  /// setInstance*Field - Set an instance field.
-	  ///
-	  static void setInstanceField(const JavaField* field, JavaObject* obj, TYPE val) {
-	    llvm_gcroot(obj, 0);
-	    assert(field->classDef->isResolved());
-	    void* ptr = (void*)((uint64)obj + field->ptrOffset);
-	    *static_cast<TYPE *>(ptr) = val;
-	  }
-  };
+  #define GETSTATICFIELD(TYPE, TYPE_NAME)                                   \
+  TYPE getStatic##TYPE_NAME##Field() {                                      \
+    assert(classDef->isResolved());                                         \
+    void* ptr = (void*)((uint64)classDef->getStaticInstance() + ptrOffset); \
+    return ((TYPE*)ptr)[0];                                                 \
+  }
 
   /// setStatic*Field - Set a field of an object.
   ///
-  template <class TYPE>
-  void setStaticField(TYPE val, isolate_id_t isolateID) {
-    FieldSetter<TYPE>::setStaticField(this, val, isolateID);
+  #define SETSTATICFIELD(TYPE, TYPE_NAME)                                   \
+  void setStatic##TYPE_NAME##Field(TYPE val) {                              \
+    assert(classDef->isResolved());                                         \
+    void* ptr = (void*)((uint64)classDef->getStaticInstance() + ptrOffset); \
+    ((TYPE*)ptr)[0] = val;                                                  \
   }
 
   /// getInstance*Field - Get an instance field.
   ///
-  template<class TYPE>
-  TYPE getInstanceField(JavaObject* obj) {
+  #define GETINSTANCEFIELD(TYPE, TYPE_NAME)                                 \
+  TYPE getInstance##TYPE_NAME##Field(JavaObject* obj) {                     \
+    llvm_gcroot(obj, 0);                                                    \
+    assert(classDef->isResolved());                                         \
+    void* ptr = (void*)((uint64)obj + ptrOffset);                           \
+    return ((TYPE*)ptr)[0];                                                 \
+  }                                                                         \
+
+  /// setInstance*Field - Set an instance field.
+  ///
+  #define SETINSTANCEFIELD(TYPE, TYPE_NAME)                                 \
+  void setInstance##TYPE_NAME##Field(JavaObject* obj, TYPE val) {           \
+    llvm_gcroot(obj, 0);                                                    \
+    assert(classDef->isResolved());                                         \
+    void* ptr = (void*)((uint64)obj + ptrOffset);                           \
+    ((TYPE*)ptr)[0] = val;                                                  \
+  }
+
+  #define MK_ASSESSORS(TYPE, TYPE_NAME)                                     \
+    GETSTATICFIELD(TYPE, TYPE_NAME)                                         \
+    SETSTATICFIELD(TYPE, TYPE_NAME)                                         \
+    GETINSTANCEFIELD(TYPE, TYPE_NAME)                                       \
+    SETINSTANCEFIELD(TYPE, TYPE_NAME)                                       \
+
+  MK_ASSESSORS(float, Float)
+  MK_ASSESSORS(double, Double)
+  MK_ASSESSORS(uint8, Int8)
+  MK_ASSESSORS(uint16, Int16)
+  MK_ASSESSORS(uint32, Int32)
+  MK_ASSESSORS(sint64, Long)
+
+  JavaObject* getStaticObjectField() {
+    assert(classDef->isResolved());
+    void* ptr = (void*)((uint64)classDef->getStaticInstance() + ptrOffset);
+    return ((JavaObject**)ptr)[0];
+  }
+
+  void setStaticObjectField(JavaObject* val);
+
+  JavaObject* getInstanceObjectField(JavaObject* obj) {
     llvm_gcroot(obj, 0);
     assert(classDef->isResolved());
     void* ptr = (void*)((uint64)obj + ptrOffset);
-    return *static_cast<TYPE *>(ptr);
+    return ((JavaObject**)ptr)[0];
   }
 
-  /// setInstance*Field - Set an instance field.
-  ///
-  template<class TYPE>
-  void setInstanceField(JavaObject* obj, TYPE val) {
-    FieldSetter<TYPE>::setInstanceField(this, obj, val);
-  }
-
-#define JavaField_DECL_ASSESSORS(TYPE, TYPE_NAME)			\
-	TYPE getStatic##TYPE_NAME##Field(isolate_id_t isolateID = CURRENT_ISOLATE);						\
-	void setStatic##TYPE_NAME##Field(TYPE val, isolate_id_t isolateID = CURRENT_ISOLATE);				\
-	TYPE getInstance##TYPE_NAME##Field(JavaObject* obj);	\
-	void setInstance##TYPE_NAME##Field(JavaObject* obj, TYPE val);
-
-#define JavaField_IMPL_ASSESSORS(TYPE, TYPE_NAME)																			\
-	TYPE JavaField::getStatic##TYPE_NAME##Field(isolate_id_t isolateID) {			\
-  		return getStaticField<TYPE>(isolateID);}									\
-	void JavaField::setStatic##TYPE_NAME##Field(TYPE val, isolate_id_t isolateID) {	\
-		return setStaticField<TYPE>(val, isolateID);}								\
-	TYPE JavaField::getInstance##TYPE_NAME##Field(JavaObject* obj) {				\
-		return this->getInstanceField<TYPE>(obj);}									\
-	void JavaField::setInstance##TYPE_NAME##Field(JavaObject* obj, TYPE val) {		\
-		return this->setInstanceField<TYPE>(obj, val);}
-
-public:
-  JavaField_DECL_ASSESSORS(float, Float)
-  JavaField_DECL_ASSESSORS(double, Double)
-  JavaField_DECL_ASSESSORS(uint8, Int8)
-  JavaField_DECL_ASSESSORS(uint16, Int16)
-  JavaField_DECL_ASSESSORS(uint32, Int32)
-  JavaField_DECL_ASSESSORS(sint64, Long)
-  JavaField_DECL_ASSESSORS(JavaObject*, Object)
+  // This can't be inlined because of a linker bug.
+  void setInstanceObjectField(JavaObject* obj, JavaObject* val);
   
   bool isReference() {
     uint16 val = type->elements[0];
@@ -1322,28 +1289,6 @@ public:
 
 };
 
-// Specialization for TYPE=JavaObject*
-template<>
-struct JavaField::FieldSetter<JavaObject*> {
-
-  static void setStaticField(const JavaField* field, JavaObject* val, isolate_id_t isolateID = CURRENT_ISOLATE) {
-	llvm_gcroot(val, 0);
-	if (val != NULL) assert(val->getVirtualTable());
-	assert(field->classDef->isResolved(isolateID));
-	JavaObject** ptr = (JavaObject**)((uint64)field->classDef->getStaticInstance(isolateID) + field->ptrOffset);
-	vmkit::Collector::objectReferenceNonHeapWriteBarrier((gc**)ptr, (gc*)val);
-  }
-
-  static void setInstanceField(const JavaField* field, JavaObject* obj, JavaObject* val) {
-	llvm_gcroot(obj, 0);
-	llvm_gcroot(val, 0);
-	if (val != NULL) assert(val->getVirtualTable());
-	assert(field->classDef->isResolved());
-	JavaObject** ptr = (JavaObject**)((uint64)obj + field->ptrOffset);
-	vmkit::Collector::objectReferenceWriteBarrier((gc*)obj, (gc**)ptr, (gc*)val);
-  }
-};
-
 
 } // end namespace j3
 

Modified: vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp Thu Apr 25 11:49:31 2013
@@ -157,7 +157,6 @@ uint32 JavaConstantPool::CtpReaderDouble
 void*
 JavaConstantPool::operator new(size_t sz, vmkit::BumpPtrAllocator& allocator,
                                uint32 ctpSize) {
-  // NOTICE: 'size' is not the final size of the object, as it does more allocations in the constructor
   uint32 size = sz + ctpSize * (sizeof(void*) + sizeof(sint32) + sizeof(uint8));
   void* res = allocator.Allocate(size, "Constant pool");
   return res;
@@ -178,14 +177,6 @@ JavaConstantPool::JavaConstantPool(Class
   while (cur < ctpSize) {
     uint8 curType = reader.readU1();
     ctpType[cur] = curType;
-
-    // 'ctpRes' entries corresponding to 'ConstantString' types are pointers to arrays of values
-    // corresponding to different isolates.
-    if (ctpType[cur] == ConstantString) {
-    	ctpRes[cur] = classDef->classLoader->allocator.Allocate(sizeof(void *) * NR_ISOLATES, NULL);
-    	memset(ctpRes[cur], 0, sizeof(void *) * NR_ISOLATES);
-    }
-
     cur += ((funcsReader[curType])(this, reader, cur));
   }
 }
@@ -197,7 +188,7 @@ const UTF8* JavaConstantPool::UTF8At(uin
     abort();
   }
   
-  if (!getCachedValue(entry)) {
+  if (!ctpRes[entry]) {
     vmkit::ThreadAllocator allocator;
     Reader reader(classDef->bytes, ctpDef[entry]);
     uint32 len = reader.readU2();
@@ -229,13 +220,13 @@ const UTF8* JavaConstantPool::UTF8At(uin
   
     JnjvmClassLoader* loader = classDef->classLoader;
     const UTF8* utf8 = loader->hashUTF8->lookupOrCreateReader(buf, n);
-    updateCachedValue(entry, const_cast<UTF8*>(utf8));
+    ctpRes[entry] = const_cast<UTF8*>(utf8);
   
     PRINT_DEBUG(JNJVM_LOAD, 3, COLOR_NORMAL, "; [%5d] <utf8>\t\t\"%s\"\n",
                 entry, UTF8Buffer(utf8)->cString());
 
   }
-  return (const UTF8*)getCachedValue(entry);
+  return (const UTF8*)ctpRes[entry];
 }
 
 float JavaConstantPool::FloatAt(uint32 entry) {
@@ -281,12 +272,12 @@ CommonClass* JavaConstantPool::isClassLo
     abort();
   }
 
-  CommonClass* res = (CommonClass*)getCachedValue(entry);
+  CommonClass* res = (CommonClass*)ctpRes[entry];
   if (res == NULL) {
     JnjvmClassLoader* loader = classDef->classLoader;
     const UTF8* name = UTF8At(ctpDef[entry]);
     res = loader->lookupClassOrArray(name);
-    updateCachedValue(entry, res);
+    ctpRes[entry] = res;
   }
   return res;
 }
@@ -307,7 +298,7 @@ CommonClass* JavaConstantPool::loadClass
     } else {
       temp = loader->loadName(name, resolve, false, NULL);
     }
-    updateCachedValue(index, temp);
+    ctpRes[index] = temp;
   } else if (resolve && temp->isClass()) {
     temp->asClass()->resolveClass();
   }
@@ -329,7 +320,7 @@ CommonClass* JavaConstantPool::getMethod
 }
 
 Typedef* JavaConstantPool::resolveNameAndType(uint32 index) {
-  void* res = getCachedValue(index);
+  void* res = ctpRes[index];
   if (!res) {
     if (typeAt(index) != ConstantNameAndType) {
       fprintf(stderr, "Malformed class %s\n",
@@ -339,14 +330,14 @@ Typedef* JavaConstantPool::resolveNameAn
     sint32 entry = ctpDef[index];
     const UTF8* type = UTF8At(entry & 0xFFFF);
     Typedef* sign = classDef->classLoader->constructType(type);
-    updateCachedValue(index, sign);
+    ctpRes[index] = sign;
     return sign;
   }
   return (Typedef*)res;
 }
 
 Signdef* JavaConstantPool::resolveNameAndSign(uint32 index) {
-  void* res = getCachedValue(index);
+  void* res = ctpRes[index];
   if (!res) {
     if (typeAt(index) != ConstantNameAndType) {
       fprintf(stderr, "Malformed class %s\n",
@@ -356,7 +347,7 @@ Signdef* JavaConstantPool::resolveNameAn
     sint32 entry = ctpDef[index];
     const UTF8* type = UTF8At(entry & 0xFFFF);
     Signdef* sign = classDef->classLoader->constructSign(type);
-    updateCachedValue(index, sign);
+    ctpRes[index] = sign;
     return sign;
   }
   return (Signdef*)res;
@@ -481,7 +472,7 @@ void JavaConstantPool::resolveMethod(uin
                                      const UTF8*& utf8, Signdef*& sign) {
   sint32 entry = ctpDef[index];
   sint32 ntIndex = entry & 0xFFFF;
-  sign = (Signdef*)getCachedValue(ntIndex);
+  sign = (Signdef*)ctpRes[ntIndex];
   assert(sign && "No cached signature after JITting");
   utf8 = UTF8At(ctpDef[ntIndex] >> 16);
   cl = loadClass(entry >> 16);
@@ -494,7 +485,7 @@ void JavaConstantPool::resolveField(uint
                                     const UTF8*& utf8, Typedef*& sign) {
   sint32 entry = ctpDef[index];
   sint32 ntIndex = entry & 0xFFFF;
-  sign = (Typedef*)getCachedValue(ntIndex);
+  sign = (Typedef*)ctpRes[ntIndex];
   assert(sign && "No cached Typedef after JITting");
   utf8 = UTF8At(ctpDef[ntIndex] >> 16);
   cl = loadClass(entry >> 16);
@@ -506,7 +497,7 @@ void JavaConstantPool::resolveField(uint
 JavaField* JavaConstantPool::lookupField(uint32 index, bool stat) {
   sint32 entry = ctpDef[index];
   sint32 ntIndex = entry & 0xFFFF;
-  Typedef* sign = (Typedef*)getCachedValue(ntIndex);
+  Typedef* sign = (Typedef*)ctpRes[ntIndex];
   const UTF8* utf8 = UTF8At(ctpDef[ntIndex] >> 16);
   CommonClass* cl = getMethodClassIfLoaded(entry >> 16);
   if (cl) {
@@ -517,10 +508,10 @@ JavaField* JavaConstantPool::lookupField
       // don't throw if no field, the exception will be thrown just in time  
       if (field) {
         if (!stat) {
-          updateCachedValue(index, (void*)field->ptrOffset);
+          ctpRes[index] = (void*)field->ptrOffset;
         } else if (lookup->isReady()) {
           void* S = field->classDef->getStaticInstance();
-          updateCachedValue(index, (void*)((uint64)S + field->ptrOffset));
+          ctpRes[index] = (void*)((uint64)S + field->ptrOffset);
         }
       }
       return field;
@@ -537,24 +528,6 @@ JavaString* JavaConstantPool::resolveStr
   return str;
 }
 
-void** JavaConstantPool::getCachedValuePtr(uint32_t index, isolate_id_t isolateID)
-{
-    assert(index < ctpSize && "Invalid constant index");
-	void **entry = ctpRes + index;
-	if (ctpType[index] != ConstantString) return entry;
-
-	isolateID = JavaThread::getValidIsolateID(isolateID);
-	void ** stringArray = reinterpret_cast<void **>(*entry);
-	return stringArray + isolateID;
-}
-
-void* JavaConstantPool::updateCachedValue(uint32_t index, void* newValue, isolate_id_t isolateID) {
-	void** valuePtr = getCachedValuePtr(index, isolateID);
-	void* oldValue = *valuePtr;
-	*valuePtr = newValue;
-	return oldValue;
-}
-
 JavaConstantPool::ctpReader JavaConstantPool::funcsReader[16] = {
   unimplemented,
   CtpReaderUTF8,

Modified: vmkit/trunk/lib/j3/VMCore/JavaConstantPool.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaConstantPool.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaConstantPool.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaConstantPool.h Thu Apr 25 11:49:31 2013
@@ -49,13 +49,11 @@ public:
   ///
   sint32* ctpDef;
   
-private:
   /// ctpRes - Objects resolved dynamically, e.g. UTF8s, classes, methods,
   /// fields, string pointers.
   ///
   void**  ctpRes;
   
-public:
   /// operator new - Redefine the operator to allocate the arrays of a
   /// constant pool inline.
   void* operator new(size_t sz, vmkit::BumpPtrAllocator& allocator,
@@ -259,23 +257,6 @@ public:
   /// ~JavaConstantPool - Delete the constant pool.
   ///
   ~JavaConstantPool() {}
-
-protected:
-  void** getCachedValuePtr(uint32_t index, isolate_id_t isolateID = CURRENT_ISOLATE);
-
-public:
-  void* getCachedValue(uint32_t index, isolate_id_t isolateID = CURRENT_ISOLATE) {
-	  return *getCachedValuePtr(index, isolateID);
-  }
-
-  /// This returns the old contents before updating
-  void* updateCachedValueSynchronized(uint32_t index, void* newValue, void* oldValue, isolate_id_t isolateID = CURRENT_ISOLATE) {
-	  void** valuePtr = getCachedValuePtr(index, isolateID);
-	  return __sync_val_compare_and_swap(valuePtr, oldValue, newValue);
-  }
-
-  /// This returns the old contents before updating
-  void* updateCachedValue(uint32_t index, void* newValue, isolate_id_t isolateID = CURRENT_ISOLATE);
 };
 
 } // end namespace j3

Modified: vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp Thu Apr 25 11:49:31 2013
@@ -23,88 +23,260 @@
 using namespace j3;
 
 
+#define readArgs(buf, signature, ap, jni) { \
+  jvalue* buffer = (jvalue*)buf; \
+  Typedef* const* arguments = signature->getArgumentsType(); \
+  for (uint32 i = 0; i < signature->nbArguments; ++i) { \
+    const Typedef* type = arguments[i];\
+    if (type->isPrimitive()) {\
+      const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;\
+      if (prim->isLong()) {\
+        buffer[i].j = va_arg(ap, sint64);\
+      } else if (prim->isInt()){ \
+        buffer[i].i = va_arg(ap, sint32);\
+      } else if (prim->isChar()) { \
+        buffer[i].c = va_arg(ap, uint32);\
+      } else if (prim->isShort()) { \
+        buffer[i].s = va_arg(ap, sint32);\
+      } else if (prim->isByte()) { \
+        buffer[i].b = va_arg(ap, sint32);\
+      } else if (prim->isBool()) { \
+        buffer[i].z = va_arg(ap, uint32);\
+      } else if (prim->isFloat()) {\
+        buffer[i].f = (float)va_arg(ap, double);\
+      } else if (prim->isDouble()) {\
+        buffer[i].d = va_arg(ap, double);\
+      } else {\
+        fprintf(stderr, "Can't happen");\
+        abort();\
+      }\
+    } else{\
+      buffer[i].l = reinterpret_cast<jobject>(va_arg(ap, JavaObject**));\
+    }\
+  }\
+}
+  
+#define DO_TRY
+#define DO_CATCH if (th->pendingException) { th->throwFromJava(); }
+
 //===----------------------------------------------------------------------===//
 // We do not need to have special care on the GC-pointers in the buffer
 // manipulated in these functions because the objects in the buffer are
 // addressed and never stored directly.
 //===----------------------------------------------------------------------===//
 
-jvalue* JavaMethod::marshalArguments(vmkit::ThreadAllocator& allocator, va_list& ap)
-{
-	Signdef* signature = getSignature();
-	if (signature->nbArguments == 0) return NULL;	//Zero arguments
-
-	Typedef* const* arguments = signature->getArgumentsType();
-
-	jvalue* buffer = (jvalue*)allocator.Allocate(signature->nbArguments * sizeof(jvalue));
-
-	for (uint32 i = 0; i < signature->nbArguments; ++i) {
-		const Typedef* type = arguments[i];
-
-		if (type->isPrimitive()) {
-			const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-
-			     if (prim->isLong())	buffer[i].j = va_arg(ap, sint64);
-			else if (prim->isInt())		buffer[i].i = va_arg(ap, sint32);
-			else if (prim->isChar())	buffer[i].c = va_arg(ap, uint32);
-			else if (prim->isShort())	buffer[i].s = va_arg(ap, sint32);
-			else if (prim->isByte())	buffer[i].b = va_arg(ap, sint32);
-			else if (prim->isBool())	buffer[i].z = va_arg(ap, uint32);
-			else if (prim->isFloat())	buffer[i].f = (float)va_arg(ap, double);
-			else if (prim->isDouble())	buffer[i].d = va_arg(ap, double);
-			else assert(0 && "Unknown primitive type.");
-		} else
-			buffer[i].l = reinterpret_cast<jobject>(va_arg(ap, JavaObject**));
-	}
-	return buffer;
+#if 1 // VA_ARGS do not work on all platforms for LLVM.
+#define INVOKE_AP(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
+\
+TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) { \
+  llvm_gcroot(obj, 0); \
+  verifyNull(obj); \
+  Signdef* sign = getSignature(); \
+  vmkit::ThreadAllocator allocator; \
+  jvalue* buf = (jvalue*)allocator.Allocate(sign->nbArguments * sizeof(jvalue)); \
+  readArgs(buf, sign, ap, jni); \
+  return invoke##TYPE_NAME##VirtualBuf(vm, cl, obj, buf); \
+}\
+\
+TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) {\
+  llvm_gcroot(obj, 0); \
+  verifyNull(obj); \
+  Signdef* sign = getSignature(); \
+  vmkit::ThreadAllocator allocator; \
+  jvalue* buf = (jvalue*)allocator.Allocate(sign->nbArguments * sizeof(jvalue)); \
+  readArgs(buf, sign, ap, jni); \
+  return invoke##TYPE_NAME##SpecialBuf(vm, cl, obj, buf); \
+}\
+\
+TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(Jnjvm* vm, UserClass* cl, va_list ap) {\
+  Signdef* sign = getSignature(); \
+  vmkit::ThreadAllocator allocator; \
+  jvalue* buf = (jvalue*)allocator.Allocate(sign->nbArguments * sizeof(jvalue)); \
+  readArgs(buf, sign, ap, jni); \
+  return invoke##TYPE_NAME##StaticBuf(vm, cl, buf); \
+}
+
+#else
+
+#define INVOKE_AP(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
+TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) { \
+  llvm_gcroot(obj, 0); \
+  verifyNull(obj); \
+  UserClass* objCl = JavaObject::getClass(obj)->isArray() ? JavaObject::getClass(obj)->super : JavaObject::getClass(obj)->asClass(); \
+  if (objCl == classDef || isFinal(access)) { \
+    meth = this; \
+  } else { \
+    meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
+  } \
+  assert(meth && "No method found"); \
+  void* func = meth->compiledPtr(); \
+  Signdef* sign = getSignature(); \
+  FUNC_TYPE_VIRTUAL_AP call = (FUNC_TYPE_VIRTUAL_AP)sign->getVirtualCallAP(); \
+  JavaThread* th = JavaThread::get(); \
+  th->startJava(); \
+  TYPE res = 0; \
+  DO_TRY \
+  res = call(cl->getConstantPool(), func, obj, ap);\
+  DO_CATCH \
+  th->endJava(); \
+  return res; \
+}\
+\
+TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) {\
+  llvm_gcroot(obj, 0); \
+  verifyNull(obj);\
+  void* func = this->compiledPtr();\
+  Signdef* sign = getSignature(); \
+  FUNC_TYPE_VIRTUAL_AP call = (FUNC_TYPE_VIRTUAL_AP)sign->getVirtualCallAP(); \
+  JavaThread* th = JavaThread::get(); \
+  th->startJava(); \
+  TYPE res = 0; \
+  DO_TRY \
+  res = call(cl->getConstantPool(), func, obj, ap);\
+  DO_CATCH \
+  th->endJava(); \
+  return res; \
+}\
+\
+TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(Jnjvm* vm, UserClass* cl, va_list ap) {\
+  if (!cl->isReady()) { \
+    cl->resolveClass(); \
+    cl->initialiseClass(vm); \
+  } \
+  \
+  void* func = this->compiledPtr();\
+  Signdef* sign = getSignature(); \
+  FUNC_TYPE_STATIC_AP call = (FUNC_TYPE_STATIC_AP)sign->getStaticCallAP(); \
+  JavaThread* th = JavaThread::get(); \
+  th->startJava(); \
+  TYPE res = 0; \
+  DO_TRY \
+  res = call(cl->getConstantPool(), func, ap);\
+  DO_CATCH \
+  th->endJava(); \
+  return res; \
 }
 
-#define JavaMethod_INVOKE_VA(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
-	TYPE JavaMethod::invoke##TYPE_NAME##Virtual(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) {	\
-		llvm_gcroot(obj, 0);	\
-		va_list ap;	\
-		va_start(ap, obj);	\
-		TYPE res = invokeVirtualAP<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, ap);	\
-		va_end(ap);	\
-		return res;	\
-	}	\
-	TYPE JavaMethod::invoke##TYPE_NAME##Special(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) {	\
-	  llvm_gcroot(obj, 0);	\
-	  va_list ap;	\
-	  va_start(ap, obj);	\
-	  TYPE res = invokeSpecialAP<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, ap);	\
-	  va_end(ap);	\
-	  return res;	\
-	}	\
-	TYPE JavaMethod::invoke##TYPE_NAME##Static(Jnjvm* vm, UserClass* cl, ...) {	\
-	  va_list ap;	\
-	  va_start(ap, cl);	\
-	  TYPE res = invokeStaticAP<TYPE, FUNC_TYPE_STATIC_BUF>(vm, cl, ap);	\
-	  va_end(ap);	\
-	  return res;	\
-	}
-
-#define JavaMethod_INVOKE_AP(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF)	\
-	TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list& ap)	{return invokeVirtualAP<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, ap);}	\
-	TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list& ap)	{return invokeSpecialAP<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, ap);}	\
-	TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(Jnjvm* vm, UserClass* cl, va_list& ap)						{return invokeStaticAP<TYPE, FUNC_TYPE_STATIC_BUF>(vm, cl, ap);}
-
-#define JavaMethod_INVOKE_BUF(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF)	\
-	TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf)	{return invokeVirtualBuf<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, buf);} \
-	TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf)	{return invokeSpecialBuf<TYPE, FUNC_TYPE_VIRTUAL_BUF>(vm, cl, obj, buf);} \
-	TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(Jnjvm* vm, UserClass* cl, void* buf)						{return invokeStaticBuf<TYPE, FUNC_TYPE_STATIC_BUF>(vm, cl, buf);}
-
-#define JavaMethod_INVOKE(TYPE, TYPE_NAME) \
-	typedef TYPE (* func_virtual_ap_##TYPE_NAME)(UserConstantPool*, void*, JavaObject*, va_list);	\
-	typedef TYPE (* func_static_ap_##TYPE_NAME)(UserConstantPool*, void*, va_list);					\
-	typedef TYPE (* func_virtual_buf_##TYPE_NAME)(UserConstantPool*, void*, JavaObject*, void*);	\
-	typedef TYPE (* func_static_buf_##TYPE_NAME)(UserConstantPool*, void*, void*);					\
-	JavaMethod_INVOKE_AP(TYPE, TYPE_NAME, func_virtual_ap_##TYPE_NAME, func_static_ap_##TYPE_NAME, func_virtual_buf_##TYPE_NAME, func_static_buf_##TYPE_NAME) \
-	JavaMethod_INVOKE_BUF(TYPE, TYPE_NAME, func_virtual_ap_##TYPE_NAME, func_static_ap_##TYPE_NAME, func_virtual_buf_##TYPE_NAME, func_static_buf_##TYPE_NAME) \
-	JavaMethod_INVOKE_VA(TYPE, TYPE_NAME, func_virtual_ap_##TYPE_NAME, func_static_ap_##TYPE_NAME, func_virtual_buf_##TYPE_NAME, func_static_buf_##TYPE_NAME)
-
-JavaMethod_INVOKE(uint32, Int)
-JavaMethod_INVOKE(sint64, Long)
-JavaMethod_INVOKE(float,  Float)
-JavaMethod_INVOKE(double, Double)
-JavaMethod_INVOKE(JavaObject*, JavaObject)
+#endif
+
+#define INVOKE_BUF(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
+TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {\
+  llvm_gcroot(obj, 0); \
+  verifyNull(obj);\
+  Signdef* sign = getSignature(); \
+  UserClass* objCl = JavaObject::getClass(obj)->isArray() ? JavaObject::getClass(obj)->super : JavaObject::getClass(obj)->asClass(); \
+  JavaMethod* meth = NULL; \
+  if (objCl == classDef || isFinal(access)) { \
+    meth = this; \
+  } else { \
+    meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
+  } \
+  assert(meth && "No method found"); \
+  assert(objCl->isSubclassOf(meth->classDef) && "Wrong type"); \
+  void* func = meth->compiledPtr(); \
+  FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
+  JavaThread* th = JavaThread::get(); \
+  th->startJava(); \
+  TYPE res = 0; \
+  DO_TRY \
+  res = call(cl->getConstantPool(), func, obj, buf);\
+  DO_CATCH \
+  th->endJava(); \
+  return res; \
+}\
+TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {\
+  llvm_gcroot(obj, 0); \
+  verifyNull(obj);\
+  void* func = this->compiledPtr();\
+  Signdef* sign = getSignature(); \
+  FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
+  JavaThread* th = JavaThread::get(); \
+  th->startJava(); \
+  TYPE res = 0; \
+  DO_TRY \
+  res = call(cl->getConstantPool(), func, obj, buf);\
+  DO_CATCH \
+  th->endJava(); \
+  return res; \
+}\
+\
+TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(Jnjvm* vm, UserClass* cl, void* buf) {\
+  if (!cl->isReady()) { \
+    cl->resolveClass(); \
+    cl->initialiseClass(vm); \
+  } \
+  \
+  void* func = this->compiledPtr();\
+  Signdef* sign = getSignature(); \
+  FUNC_TYPE_STATIC_BUF call = (FUNC_TYPE_STATIC_BUF)sign->getStaticCallBuf(); \
+  JavaThread* th = JavaThread::get(); \
+  th->startJava(); \
+  TYPE res = 0; \
+  DO_TRY \
+  res = call(cl->getConstantPool(), func, buf);\
+  DO_CATCH \
+  th->endJava(); \
+  return res; \
+}\
+
+#define INVOKE_VA(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
+TYPE JavaMethod::invoke##TYPE_NAME##Virtual(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) { \
+  llvm_gcroot(obj, 0); \
+  va_list ap;\
+  va_start(ap, obj);\
+  TYPE res = invoke##TYPE_NAME##VirtualAP(vm, cl, obj, ap);\
+  va_end(ap); \
+  return res; \
+}\
+\
+TYPE JavaMethod::invoke##TYPE_NAME##Special(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) {\
+  llvm_gcroot(obj, 0); \
+  va_list ap;\
+  va_start(ap, obj);\
+  TYPE res = invoke##TYPE_NAME##SpecialAP(vm, cl, obj, ap);\
+  va_end(ap); \
+  return res; \
+}\
+\
+TYPE JavaMethod::invoke##TYPE_NAME##Static(Jnjvm* vm, UserClass* cl, ...) {\
+  va_list ap;\
+  va_start(ap, cl);\
+  TYPE res = invoke##TYPE_NAME##StaticAP(vm, cl, ap);\
+  va_end(ap); \
+  return res; \
+}\
+
+#define INVOKE(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
+  INVOKE_AP(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
+  INVOKE_BUF(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
+  INVOKE_VA(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF)
+
+typedef uint32 (*uint32_virtual_ap)(UserConstantPool*, void*, JavaObject*, va_list);
+typedef sint64 (*sint64_virtual_ap)(UserConstantPool*, void*, JavaObject*, va_list);
+typedef float  (*float_virtual_ap)(UserConstantPool*, void*, JavaObject*, va_list);
+typedef double (*double_virtual_ap)(UserConstantPool*, void*, JavaObject*, va_list);
+typedef JavaObject* (*object_virtual_ap)(UserConstantPool*, void*, JavaObject*, va_list);
+
+typedef uint32 (*uint32_static_ap)(UserConstantPool*, void*, va_list);
+typedef sint64 (*sint64_static_ap)(UserConstantPool*, void*, va_list);
+typedef float  (*float_static_ap)(UserConstantPool*, void*, va_list);
+typedef double (*double_static_ap)(UserConstantPool*, void*, va_list);
+typedef JavaObject* (*object_static_ap)(UserConstantPool*, void*, va_list);
+
+typedef uint32 (*uint32_virtual_buf)(UserConstantPool*, void*, JavaObject*, void*);
+typedef sint64 (*sint64_virtual_buf)(UserConstantPool*, void*, JavaObject*, void*);
+typedef float  (*float_virtual_buf)(UserConstantPool*, void*, JavaObject*, void*);
+typedef double (*double_virtual_buf)(UserConstantPool*, void*, JavaObject*, void*);
+typedef JavaObject* (*object_virtual_buf)(UserConstantPool*, void*, JavaObject*, void*);
+
+typedef uint32 (*uint32_static_buf)(UserConstantPool*, void*, void*);
+typedef sint64 (*sint64_static_buf)(UserConstantPool*, void*, void*);
+typedef float  (*float_static_buf)(UserConstantPool*, void*, void*);
+typedef double (*double_static_buf)(UserConstantPool*, void*, void*);
+typedef JavaObject* (*object_static_buf)(UserConstantPool*, void*, void*);
+
+INVOKE(uint32, Int, uint32_virtual_ap, uint32_static_ap, uint32_virtual_buf, uint32_static_buf)
+INVOKE(sint64, Long, sint64_virtual_ap, sint64_static_ap, sint64_virtual_buf, sint64_static_buf)
+INVOKE(float,  Float, float_virtual_ap,  float_static_ap,  float_virtual_buf,  float_static_buf)
+INVOKE(double, Double, double_virtual_ap, double_static_ap, double_virtual_buf, double_static_buf)
+INVOKE(JavaObject*, JavaObject, object_virtual_ap, object_static_ap, object_virtual_buf, object_static_buf)

Modified: vmkit/trunk/lib/j3/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaObject.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaObject.cpp Thu Apr 25 11:49:31 2013
@@ -68,7 +68,7 @@ uint32_t JavaObject::hashCode(JavaObject
 
 
 void JavaObject::waitIntern(
-    JavaObject* self, struct timeval* info, bool& timed) {
+    JavaObject* self, struct timeval* info, bool timed) {
   llvm_gcroot(self, 0);
   JavaThread* thread = JavaThread::get();
   vmkit::LockSystem& table = thread->getJVM()->lockSystem;
@@ -91,18 +91,15 @@ void JavaObject::waitIntern(
 
 void JavaObject::wait(JavaObject* self) {
   llvm_gcroot(self, 0);
-  bool timeout = false;
-  waitIntern(self, NULL, timeout);
+  waitIntern(self, NULL, false);
 }
 
-bool JavaObject::timedWait(JavaObject* self, struct timeval& info) {
+void JavaObject::timedWait(JavaObject* self, struct timeval& info) {
   llvm_gcroot(self, 0);
-  bool timeout = true;
-  waitIntern(self, &info, timeout);
-  return !timeout;	//Return false if timed out
+  waitIntern(self, &info, true);
 }
 
-bool JavaObject::wait(JavaObject* self, int64_t ms, int32_t ns) {
+void JavaObject::wait(JavaObject* self, int64_t ms, int32_t ns) {
   llvm_gcroot(self, 0);
 
   Jnjvm* vm = JavaThread::get()->getJVM();
@@ -118,10 +115,9 @@ bool JavaObject::wait(JavaObject* self,
     struct timeval t;
     t.tv_sec = sec;
     t.tv_usec = usec;
-    return JavaObject::timedWait(self, t);
+    JavaObject::timedWait(self, t);
   } else {
     JavaObject::wait(self);
-    return true;
   }
 }
 

Modified: vmkit/trunk/lib/j3/VMCore/JavaObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaObject.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaObject.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaObject.h Thu Apr 25 11:49:31 2013
@@ -233,7 +233,7 @@ private:
   
   /// waitIntern - internal wait on a monitor
   ///
-  static void waitIntern(JavaObject* self, struct timeval *info, bool& timed);
+  static void waitIntern(JavaObject* self, struct timeval *info, bool timed);
   
 public:
 
@@ -255,11 +255,11 @@ public:
   /// timedWait - Java timed wait. Makes the current thread waiting on a
   /// monitor for the given amount of time.
   ///
-  static bool timedWait(JavaObject* self, struct timeval &info);
+  static void timedWait(JavaObject* self, struct timeval &info);
   
   /// wait - Wait for specified ms and ns.  Wrapper for either wait() or
   /// timedWait, depending on duration specified.
-  static bool wait(JavaObject* self, int64_t ms, int32_t ns);
+  static void wait(JavaObject* self, int64_t ms, int32_t ns);
 
   /// notify - Java notify. Notifies a thread from the availability of the
   /// monitor.

Modified: vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp Thu Apr 25 11:49:31 2013
@@ -8,9 +8,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include <sstream>
 
-#include "Classpath.h"
 #include "ClasspathReflect.h"
 #include "JavaArray.h"
 #include "JavaClass.h"
@@ -27,30 +25,13 @@
 
 using namespace j3;
 
-extern "C" UserCommonClass* j3RuntimeInitialiseClass(UserClass*);
-
-extern "C" UserClass* j3InitialisationCheck(UserClass* cl)
-{
-	if (!cl->isClass()) return cl;
-	if (!cl->isInitializing())
-		cl = j3RuntimeInitialiseClass(cl)->asClass();
-	return cl;
-}
-
-extern "C" UserClass* j3InitialisationCheckForJavaObject(JavaObject* obj)
-{
-	CommonClass* ccl = JavaObject::getClass(obj);
-	if (!ccl->isClass()) return NULL;
-	return j3InitialisationCheck(ccl->asClass());
-}
-
 extern "C" void* j3InterfaceLookup(UserClass* caller, uint32 index) {
 
   void* res = 0;
 
   UserConstantPool* ctpInfo = caller->getConstantPool();
-  if (ctpInfo->getCachedValue(index)) {
-    res = ctpInfo->getCachedValue(index);
+  if (ctpInfo->ctpRes[index]) {
+    res = ctpInfo->ctpRes[index];
   } else {
     UserCommonClass* cl = 0;
     const UTF8* utf8 = 0;
@@ -60,7 +41,7 @@ extern "C" void* j3InterfaceLookup(UserC
     assert(cl->isClass() && isInterface(cl->access) && "Wrong type of method");
     res = cl->asClass()->lookupInterfaceMethod(utf8, sign->keyName);
     
-    ctpInfo->updateCachedValue(index, res);
+    ctpInfo->ctpRes[index] = (void*)res;
   }
   return res;
 }
@@ -71,8 +52,8 @@ extern "C" void* j3VirtualFieldLookup(Us
   void* res = 0;
 
   UserConstantPool* ctpInfo = caller->getConstantPool();
-  if (ctpInfo->getCachedValue(index)) {
-    res = ctpInfo->getCachedValue(index);
+  if (ctpInfo->ctpRes[index]) {
+    res = ctpInfo->ctpRes[index];
   } else {
   
     UserCommonClass* cl = 0;
@@ -84,7 +65,7 @@ extern "C" void* j3VirtualFieldLookup(Us
     UserClass* lookup = cl->isArray() ? cl->super : cl->asClass();
     JavaField* field = lookup->lookupField(utf8, sign->keyName, false, true, 0);
   
-    ctpInfo->updateCachedValue(index, (void*)field->ptrOffset);
+    ctpInfo->ctpRes[index] = (void*)field->ptrOffset;
   
     res = (void*)field->ptrOffset;
   }
@@ -99,8 +80,8 @@ extern "C" void* j3StaticFieldLookup(Use
   
   UserConstantPool* ctpInfo = caller->getConstantPool();
   
-  if (ctpInfo->getCachedValue(index)) {
-    res = ctpInfo->getCachedValue(index);
+  if (ctpInfo->ctpRes[index]) {
+    res = ctpInfo->ctpRes[index];
   } else {
   
     UserCommonClass* cl = 0;
@@ -120,7 +101,7 @@ extern "C" void* j3StaticFieldLookup(Use
     assert(obj && "No static instance in static field lookup");
   
     void* ptr = (void*)((uint64)obj + field->ptrOffset);
-    ctpInfo->updateCachedValue(index, ptr);
+    ctpInfo->ctpRes[index] = ptr;
    
     res = ptr;
   }
@@ -192,9 +173,8 @@ extern "C" void* j3ClassLookup(UserClass
 // Calls Java code.
 // Throws if initializing the class throws an exception.
 extern "C" UserCommonClass* j3RuntimeInitialiseClass(UserClass* cl) {
-  Jnjvm* vm = JavaThread::get()->getJVM();
   cl->resolveClass();
-  cl->initialiseClass(vm);
+  cl->initialiseClass(JavaThread::get()->getJVM());
   return cl;
 }
 
@@ -203,10 +183,6 @@ extern "C" JavaObject* j3RuntimeDelegate
   return cl->getClassDelegatee(JavaThread::get()->getJVM());
 }
 
-extern "C" JavaObject** j3RuntimeDelegateePtr(UserCommonClass* cl) {
-  return const_cast<JavaObject**>(cl->getClassDelegateePtr(JavaThread::get()->getJVM()));
-}
-
 // Throws if one of the dimension is negative.
 JavaObject* multiCallNewIntern(UserClassArray* cl, uint32 len,
                                sint32* dims, Jnjvm* vm) {
@@ -290,13 +266,13 @@ extern "C" void j3EndJNI(uint32** oldLRN
   th->currentAddedReferences = *oldLRN;
 }
 
-extern "C" void* j3StartJNI(uint32* localReferencesNumber,
+extern "C" word_t j3StartJNI(uint32* localReferencesNumber,
                                uint32** oldLocalReferencesNumber,
                                vmkit::KnownFrame* Frame) 
   __attribute__((noinline));
 
 // Never throws. Does not call Java code. Can not yield a GC. May join a GC.
-extern "C" void* j3StartJNI(uint32* localReferencesNumber,
+extern "C" word_t j3StartJNI(uint32* localReferencesNumber,
                                uint32** oldLocalReferencesNumber,
                                vmkit::KnownFrame* Frame) {
   
@@ -383,7 +359,7 @@ extern "C" void* j3StringLookup(UserClas
   UserConstantPool* ctpInfo = cl->getConstantPool();
   const UTF8* utf8 = ctpInfo->UTF8At(ctpInfo->ctpDef[index]);
   str = cl->classLoader->UTF8ToStr(utf8);
-  ctpInfo->updateCachedValue(index, str);
+  ctpInfo->ctpRes[index] = str;
   return (void*)str;
 }
 
@@ -477,7 +453,7 @@ extern "C" void* j3ResolveStaticStub() {
   result = callee->compiledPtr();
     
   // Update the entry in the constant pool.
-  ctpInfo->updateCachedValue(ctpIndex, result);
+  ctpInfo->ctpRes[ctpIndex] = result;
 
   return result;
 }
@@ -518,7 +494,7 @@ extern "C" void* j3ResolveSpecialStub()
   result = callee->compiledPtr();
     
   // Update the entry in the constant pool.
-  ctpInfo->updateCachedValue(ctpIndex, result);
+  ctpInfo->ctpRes[ctpIndex] = result;
 
   return result;
 }
@@ -526,10 +502,7 @@ extern "C" void* j3ResolveSpecialStub()
 // Does not throw an exception.
 extern "C" void* j3ResolveInterface(JavaObject* obj, JavaMethod* meth, uint32_t index) {
   word_t result = 0;
-  UserClass* cl = j3InitialisationCheckForJavaObject(obj);
-  assert(cl && "Invalid class of JavaObject");
-
-  InterfaceMethodTable* IMT = cl->virtualVT->IMT;
+  InterfaceMethodTable* IMT = JavaObject::getClass(obj)->virtualVT->IMT;
   if ((IMT->contents[index] & 1) == 0) {
     result = IMT->contents[index];
   } else {
@@ -552,42 +525,15 @@ extern "C" void* j3ResolveInterface(Java
 }
 
 extern "C" void j3PrintMethodStart(JavaMethod* meth) {
-#if JNJVM_EXECUTE > 0
-	JavaThread *thread = JavaThread::get();
-	char tab_level[10240];
-
-	assert((thread->call_level < sizeof(tab_level)/sizeof(tab_level[0])) && "Too deep call level to be logged!");
-
-	memset(tab_level, ' ', thread->call_level);
-	tab_level[thread->call_level++] = '\0';
-
-//	uint16_t c = meth->classDef->name->elements[0];
-//	if (c != 'i') return;
-
-	std::ostringstream log;
-	log << '[' << *thread << ']' << tab_level << " call " <<
-		*meth->classDef->name << '.' << *meth->name << std::endl;
-	std::cerr << log.str();
-#endif
+  fprintf(stderr, "[%p] executing %s.%s\n", (void*)vmkit::Thread::get(),
+          UTF8Buffer(meth->classDef->name).cString(),
+          UTF8Buffer(meth->name).cString());
 }
 
 extern "C" void j3PrintMethodEnd(JavaMethod* meth) {
-#if JNJVM_EXECUTE > 0
-	JavaThread *thread = JavaThread::get();
-	char tab_level[10240];
-
-	thread->call_level--;
-	memset(tab_level, ' ', thread->call_level);
-	tab_level[thread->call_level] = '\0';
-
-//	uint16_t c = meth->classDef->name->elements[0];
-//	if (c != 'i') return;
-
-	std::ostringstream log;
-	log << '[' << *thread << ']' << tab_level << " ret " <<
-		*meth->classDef->name << '.' << *meth->name << std::endl;
-	std::cerr << log.str();
-#endif
+  fprintf(stderr, "[%p] return from %s.%s\n", (void*)vmkit::Thread::get(),
+          UTF8Buffer(meth->classDef->name).cString(),
+          UTF8Buffer(meth->name).cString());
 }
 
 extern "C" void j3PrintExecution(uint32 opcode, uint32 index,
@@ -597,50 +543,3 @@ extern "C" void j3PrintExecution(uint32
          UTF8Buffer(meth->name).cString(),
          OpcodeNames[opcode], index);
 }
-
-extern "C" void* j3GetCachedValue(UserClass* cl, uint32 index, isolate_id_t isolateID)
-{
-	return cl->ctpInfo->getCachedValue(index, isolateID);
-}
-
-extern "C" uint32_t j3SetIsolate(uint32_t isolateID, uint32_t* currentIsolateID)
-{
-	vmkit::Thread* thread = vmkit::Thread::get();
-	isolate_id_t oldIsolateID = thread->getIsolateID();
-	isolate_id_t curIsolateID = oldIsolateID;
-
-	if ((isolateID != CURRENT_ISOLATE) && (isolateID != oldIsolateID)) {
-		thread->setIsolateID(isolateID);
-		curIsolateID = isolateID;
-	}
-
-	if (currentIsolateID != NULL) *currentIsolateID = curIsolateID;
-	return oldIsolateID;
-}
-
-extern "C" JavaObject** j3GetClassDelegateePtr(UserCommonClass* commonCl)
-{
-	JavaObject **obj = commonCl->getDelegateePtr();
-	if (!obj || !(*obj)) {
-		Jnjvm* vm = JavaThread::get()->getJVM();
-		commonCl->getClassDelegatee(vm, NULL);
-		obj = commonCl->getDelegateePtr();
-
-		assert(obj && (*obj) && "Invalid class delegatee");
-	}
-	return obj;
-}
-
-extern "C" JavaObject* j3GetClassDelegatee(UserCommonClass* commonClass)
-{
-	JavaObject *obj = commonClass->getDelegatee();
-	if (!obj) obj = j3RuntimeDelegatee(commonClass);
-	return obj;
-}
-
-extern "C" void* j3GetStaticInstance(UserClass* caller)
-{
-	TaskClassMirror& tcm = caller->getCurrentTaskClassMirror();
-	assert(caller->isInitializing() && (tcm.staticInstance != NULL) && "Isolate static instance not initialized.");
-	return tcm.staticInstance;
-}

Modified: vmkit/trunk/lib/j3/VMCore/JavaThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaThread.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaThread.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaThread.cpp Thu Apr 25 11:49:31 2013
@@ -7,15 +7,12 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include <sstream>
-
 #include "vmkit/Locks.h"
 #include "vmkit/Thread.h"
 
 #include "JavaClass.h"
 #include "JavaObject.h"
 #include "JavaThread.h"
-#include "JavaString.h"
 #include "JavaUpcalls.h"
 #include "Jnjvm.h"
 
@@ -24,9 +21,6 @@ using namespace j3;
 
 JavaThread::JavaThread(Jnjvm* isolate) : MutatorThread() { 
   MyVM = isolate;
-  JavaThread* th = JavaThread::get();
-  if (th->isVmkitThread())
-	  isolateID = th->getIsolateID();
   pendingException = NULL;
   jniEnv = isolate->jniEnv;
   localJNIRefs = new JNILocalReferences();
@@ -46,13 +40,12 @@ JavaThread::~JavaThread() {
   delete localJNIRefs;
 }
 
-void JavaThread::throwException(JavaObject* obj, bool immediate) {
+void JavaThread::throwException(JavaObject* obj) {
   llvm_gcroot(obj, 0);
   JavaThread* th = JavaThread::get();
   assert(th->pendingException == 0 && "pending exception already there?");
   vmkit::Collector::objectReferenceNonHeapWriteBarrier((gc**)&(th->pendingException), (gc*)obj);
-  if (immediate)
-    th->internalThrowException();
+  th->internalThrowException();
 }
 
 void JavaThread::throwPendingException() {
@@ -134,7 +127,7 @@ void JavaThread::printJavaBacktrace() {
 
   while (vmkit::FrameInfo* FI = Walker.get()) {
     if (FI->Metadata != NULL) {
-      MyVM->printMethod(FI, Walker.getReturnAddress(), Walker.getCallFrame());
+      MyVM->printMethod(FI, Walker.ip, Walker.addr);
     }
     ++Walker;
   }
@@ -170,92 +163,3 @@ void JNILocalReferences::removeJNIRefere
     length -= num;
   }
 }
-
-std::ostream& j3::operator << (std::ostream& os, JavaThread& thread)
-{
-	os << (void*)(&thread);
-
-	Jnjvm* vm = thread.getJVM();
-	JavaObject* jThread = thread.currentThread();
-	if (vm && jThread) {
-		JavaString* threadNameObj = static_cast<JavaString*>(
-			vm->upcalls->threadName->getInstanceObjectField(jThread));
-		char *threadName = JavaString::strToAsciiz(threadNameObj);
-		os << '(' << threadName << ')';
-		delete [] threadName;
-	}
-
-	return os << ',' << thread.getIsolateID();
-}
-
-void JavaThread::printStackTrace(int skip, int level_deep)
-{
-	JavaThread *thread = JavaThread::get();
-	std::cerr << '[' << *thread << "] Call stack trace:" << std::endl;
-
-	j3::Jnjvm *vm = thread->getJVM();
-	vmkit::StackWalker Walker(thread);
-	for (vmkit::FrameInfo* FI = NULL; (level_deep > 0) && ((FI = Walker.get()) != NULL); ++Walker) {
-		if (!FI->Metadata) continue;
-		if (skip > 0) {--skip; continue;}
-
-		vm->printMethod(FI, Walker.getReturnAddress(), Walker.getCallFrame());
-		--level_deep;
-	}
-}
-
-void JavaThread::throwNullPointerException(void* methodIP) const
-{
-	if (!this->isVmkitThread())
-		return vmkit::Thread::throwNullPointerException(methodIP);
-
-	this->cleanUpOnDeadIsolateBeforeException(&methodIP);
-
-	MyVM->nullPointerException();
-	UNREACHABLE();
-}
-
-void JavaThread::throwDeadIsolateException() const
-{
-	if (this->runsDeadIsolate())
-		const_cast<JavaThread*>(this)->setIsolateID(0);
-
-	if (!this->isVmkitThread())
-		return vmkit::Thread::throwDeadIsolateException();
-
-	void *methodIP = StackWalker_getCallFrameAddress();
-	methodIP = vmkit::StackWalker::getReturnAddressFromCallFrame(methodIP);
-
-	MyVM->deadIsolateException(methodIP, true);
-	UNREACHABLE();
-}
-
-extern "C" uint32_t j3SetIsolate(uint32_t isolateID, uint32_t* currentIsolateID);
-
-void JavaThread::cleanUpOnDeadIsolateBeforeException(void** methodIP, JavaMethod** method) const
-{
-	vmkit::StackWalker walker(const_cast<JavaThread*>(this), true);
-	vmkit::FrameInfo *FI = walker.get();
-
-	if (!FI) {
-		if (methodIP != NULL) *methodIP = NULL;
-		if (method != NULL) *method = NULL;
-		return;
-	}
-
-	JavaMethod* meth = (JavaMethod*)FI->Metadata;
-
-	// Restore the current isolate ID to that of the caller
-	isolate_id_t callerIsolateID = meth->classDef->classLoader->getIsolateID();
-	j3SetIsolate(callerIsolateID, NULL);
-
-	if (methodIP != NULL) *methodIP = FI->ReturnAddress;
-	if (method != NULL) *method = meth;
-}
-
-void JavaThread::runAfterLeavingGarbageCollectorRendezVous()
-{
-	// Be sure to throw an exception if I am running in a dead isolate
-	if (this->runsDeadIsolate())
-		throwDeadIsolateException();
-}

Modified: vmkit/trunk/lib/j3/VMCore/JavaThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaThread.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaThread.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaThread.h Thu Apr 25 11:49:31 2013
@@ -10,8 +10,6 @@
 #ifndef JNJVM_JAVA_THREAD_H
 #define JNJVM_JAVA_THREAD_H
 
-#include <ostream>
-
 #include "vmkit/Cond.h"
 #include "vmkit/Locks.h"
 #include "vmkit/ObjectLocks.h"
@@ -35,7 +33,7 @@ class Jnjvm;
 
 #define BEGIN_JNI_EXCEPTION \
   JavaThread* th = JavaThread::get(); \
-  void* SP = th->getLastSP(); \
+  word_t SP = th->getLastSP(); \
   th->leaveUncooperativeCode(); \
   vmkit::KnownFrame Frame; \
   th->startKnownFrame(Frame); \
@@ -94,9 +92,6 @@ public:
   ///
   JNILocalReferences* localJNIRefs;
 
-#if JNJVM_EXECUTE > 0
-  unsigned int call_level;
-#endif
 
   JavaObject** pushJNIRef(JavaObject* obj) {
     llvm_gcroot(obj, 0);
@@ -114,9 +109,6 @@ public:
   /// JavaThread - Empty constructor, used to get the VT.
   ///
   JavaThread() {
-#if JNJVM_EXECUTE > 0
-	  call_level = 0;
-#endif
   }
 
   /// ~JavaThread - Delete any potential malloc'ed objects used by this thread.
@@ -149,7 +141,7 @@ public:
  
   /// throwException - Throw the given exception in the current thread.
   ///
-  void throwException(JavaObject* obj, bool immediate = true);
+  void throwException(JavaObject* obj);
 
   /// throwPendingException - Throw a pending exception.
   ///
@@ -163,7 +155,7 @@ public:
 
   /// throwFromJNI - Throw an exception after executing JNI code.
   ///
-  void throwFromJNI(void* SP) {
+  void throwFromJNI(word_t SP) {
     endKnownFrame();
     enterUncooperativeCode(SP);
   }
@@ -211,17 +203,6 @@ public:
   ///
   void printJavaBacktrace();
 
-  static void printStackTrace(int skip = 3, int level_deep = 1) __attribute__((noinline));
-
-  friend std::ostream& operator << (std::ostream&, JavaThread&);
-
-  void cleanUpOnDeadIsolateBeforeException(void** methodIP = NULL, JavaMethod** method = NULL) const;
-
-  virtual void throwNullPointerException(void* methodIP) const;
-  virtual void throwDeadIsolateException() const;
-
-  virtual void runAfterLeavingGarbageCollectorRendezVous();
-
   /// getJavaFrameContext - Fill the buffer with Java methods currently on
   /// the stack.
   ///

Modified: vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp Thu Apr 25 11:49:31 2013
@@ -8,7 +8,6 @@
 //===----------------------------------------------------------------------===//
 
 #define JNJVM_LOAD 0
-#define JNJVM_CLINIT 0
 
 #include <cfloat>
 #include <climits>
@@ -16,7 +15,6 @@
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
-#include <cerrno>
 #include <string>
 #include "debug.h"
 
@@ -121,6 +119,9 @@ void UserClass::initialiseClass(Jnjvm* v
     setInitializationState(inClinit);
     UserClass* cl = (UserClass*)this;
     
+    // Single environment allocates the static instance during resolution, so
+    // that compiled code can access it directly (with an initialization
+    // check just before the access)
     if (!cl->getStaticInstance()) cl->allocateStaticInstance(vm);
 
     release();
@@ -169,25 +170,8 @@ void UserClass::initialiseClass(Jnjvm* v
     JavaMethod* meth = lookupMethodDontThrow(vm->bootstrapLoader->clinitName,
                                              vm->bootstrapLoader->clinitType,
                                              true, false, 0);
-#if JNJVM_CLINIT
-	uint16_t c = this->name->elements[0];
-	bool logInit = !(c == 'j' || c == 'g');
-
-	static char init_buffer[10240];
-    static int init_level;
-    if (logInit) std::cout << '[' << *self << ']' << init_buffer;
-#endif
 
     if (meth) {
-
-#if JNJVM_CLINIT
-      if (logInit) {
-    	  std::cout << " clinit " << *name << " ..." << std::endl;
-          init_buffer[init_level] = ' ';
-          init_buffer[++init_level] = '\0';
-      }
-#endif
-
       TRY {
         meth->invokeIntStatic(vm, cl);
       } CATCH {
@@ -195,31 +179,12 @@ void UserClass::initialiseClass(Jnjvm* v
         assert(exc && "no exception?");
         self->clearException();
       } END_CATCH;
-
-#if JNJVM_CLINIT
-      if (logInit) {
-    	  init_buffer[--init_level] = '\0';
-    	  std::cout << '[' << *self << ']' << init_buffer;
-      }
-#endif
-
     }
 
-#if JNJVM_CLINIT
-    else {
-      if (logInit) std::cout << " init " << *name << " ... ";
-    }
-#endif
-
     // 9. If the execution of the initializers completes normally, then lock
     //    this Class object, label it fully initialized, notify all waiting 
     //    threads, release the lock, and complete this procedure normally.
     if (!exc) {
-
-#if JNJVM_CLINIT
-      if (logInit) std::cout << " done" << std::endl;
-#endif
-
       acquire();
       setInitializationState(ready);
       setOwnerClass(0);
@@ -228,10 +193,6 @@ void UserClass::initialiseClass(Jnjvm* v
       return;
     }
     
-#if JNJVM_CLINIT
-    if (logInit) std::cout << " failed" << std::endl;
-#endif
-    
     // 10. Otherwise, the initializers must have completed abruptly by
     //     throwing some exception E. If the class of E is not Error or one
     //     of its subclasses, then create a new instance of the class 
@@ -302,19 +263,12 @@ JavaObject* Jnjvm::CreateError(UserClass
   return obj;
 }
 
-void Jnjvm::error(UserClass* cl, JavaMethod* init, JavaString* str, bool immediate) {
+void Jnjvm::error(UserClass* cl, JavaMethod* init, JavaString* str) {
   JavaObject* obj = 0;
   llvm_gcroot(obj, 0);
   llvm_gcroot(str, 0);
   obj = CreateError(cl, init, str);
-  JavaThread::get()->throwException(obj, immediate);
-}
-
-void Jnjvm::error(UserClass* cl, JavaMethod* init, const char* str, bool immediate) {
-  JavaObject* obj = 0;
-  llvm_gcroot(obj, 0);
-  obj = CreateError(cl, init, str);
-  JavaThread::get()->throwException(obj, immediate);
+  JavaThread::get()->throwException(obj);
 }
 
 void Jnjvm::arrayStoreException() {
@@ -809,28 +763,28 @@ void Jnjvm::addProperty(char* key, char*
 }
 
 // Mimic what's happening in Classpath when creating a java.lang.Class object.
-JavaObject* UserCommonClass::getClassDelegatee(Jnjvm* vm, JavaObject* pd, isolate_id_t isolateID) {
+JavaObject* UserCommonClass::getClassDelegatee(Jnjvm* vm, JavaObject* pd) {
   JavaObjectClass* delegatee = 0;
   JavaObjectClass* base = 0;
   llvm_gcroot(pd, 0);
   llvm_gcroot(delegatee, 0);
   llvm_gcroot(base, 0);
 
-  if (getDelegatee(isolateID) == NULL) {
+  if (getDelegatee() == NULL) {
     UserClass* cl = vm->upcalls->newClass;
-    delegatee = (JavaObjectClass*)cl->doNew(vm, isolateID);
+    delegatee = (JavaObjectClass*)cl->doNew(vm);
     JavaObjectClass::setClass(delegatee, this);
     if (pd == NULL && isArray()) {
       base = (JavaObjectClass*)
-        asArrayClass()->baseClass()->getClassDelegatee(vm, pd, isolateID);
+        asArrayClass()->baseClass()->getClassDelegatee(vm, pd);
       JavaObjectClass::setProtectionDomain(
         delegatee, JavaObjectClass::getProtectionDomain(base));
     } else {
       JavaObjectClass::setProtectionDomain(delegatee, pd);
     }
-    setDelegatee(delegatee, isolateID);
+    setDelegatee(delegatee);
   }
-  return getDelegatee(isolateID);
+  return getDelegatee();
 }
 
 JavaObject* const* UserCommonClass::getClassDelegateePtr(Jnjvm* vm, JavaObject* pd) {
@@ -1371,9 +1325,6 @@ Jnjvm::Jnjvm(vmkit::BumpPtrAllocator& Al
   bootstrapLoader = loader;
   upcalls = bootstrapLoader->upcalls;
   throwable = upcalls->newThrowable;
-
-  RunningIsolates[0].state = IsolateRunning;
-  RunningIsolates[0].loader = loader;
 }
 
 Jnjvm::~Jnjvm() {
@@ -1399,12 +1350,7 @@ void Jnjvm::startCollection() {
   referenceThread->WeakReferencesQueue.acquire();
   referenceThread->PhantomReferencesQueue.acquire();
 }
-
-void Jnjvm::endCollectionBeforeUnblockingThreads()
-{
-	collectIsolates();
-}
-
+  
 void Jnjvm::endCollection() {
   finalizerThread->FinalizationQueueLock.release();
   referenceThread->ToEnqueueLock.release();
@@ -1500,16 +1446,16 @@ extern "C" int StartJnjvmWithoutJIT(int
   return 0; 
 }
 
-void Jnjvm::printMethod(vmkit::FrameInfo* FI, void* ip, void* callFrame) {
+void Jnjvm::printMethod(vmkit::FrameInfo* FI, word_t ip, word_t addr) {
   if (FI->Metadata == NULL) {
-    vmkit::MethodInfoHelper::print(ip, callFrame);
+    vmkit::MethodInfoHelper::print(ip, addr);
     return;
   }
   JavaMethod* meth = (JavaMethod*)FI->Metadata;
 
   fprintf(stderr, "; %p (%p) in %s.%s (line %d, bytecode %d, code start %p)",
-          ip,
-          callFrame,
+          (void*)ip,
+          (void*)addr,
           UTF8Buffer(meth->classDef->name).cString(),
           UTF8Buffer(meth->name).cString(),
           meth->lookupLineNumber(FI),

Modified: vmkit/trunk/lib/j3/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Jnjvm.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/j3/VMCore/Jnjvm.h Thu Apr 25 11:49:31 2013
@@ -24,7 +24,6 @@
 #include "JnjvmConfig.h"
 #include "JNIReferences.h"
 #include "LockedMap.h"
-#include "JavaArray.h"
 
 namespace j3 {
 
@@ -47,21 +46,6 @@ class UserClassArray;
 class UserClassPrimitive;
 class UserCommonClass;
 
-enum IsolateState {	// These are bits that can be set independently
-	IsolateFree				= 0x0,
-	IsolateRunning			= 0x1,
-
-	IsolateDenyExecution	= 0x2,
-	IsolateResetReferences	= 0x4
-};
-typedef uint8_t		isolate_state_t;
-
-struct IsolateDescriptor {
-	isolate_state_t		state;
-	JnjvmClassLoader	*loader;
-};
-
-
 /// ThreadSystem - Thread management of a JVM. Each JVM has one thread
 /// management system to count the number of non-daemon threads it owns.
 /// The initial thread of the JVM is a non-daemon thread. When there are
@@ -110,7 +94,7 @@ public:
   char* jarFile;
   std::vector< std::pair<char*, char*> > agents;
 
-  void readArgs(class Jnjvm *vm);
+  void readArgs(Jnjvm *vm);
   void extractClassFromJar(Jnjvm* vm, int argc, char** argv, int i);
   void javaAgent(char* cur);
 
@@ -139,7 +123,6 @@ private:
   ReferenceThread* referenceThread;
 
   virtual void startCollection();
-  virtual void endCollectionBeforeUnblockingThreads();
   virtual void endCollection();
   virtual void scanWeakReferencesQueue(word_t closure);
   virtual void scanSoftReferencesQueue(word_t closure);
@@ -148,11 +131,9 @@ private:
   virtual void addFinalizationCandidate(gc* obj);
   virtual size_t getObjectSize(gc* obj);
   virtual const char* getObjectTypeName(gc* obj);
+  virtual void printMethod(vmkit::FrameInfo* FI, word_t ip, word_t addr);
 
-public:
-  virtual void printMethod(vmkit::FrameInfo* FI, void* ip, void* callFrame);
 
-private:
   /// CreateError - Creates a Java object of the specified exception class
   /// and calling its <init> function.
   ///
@@ -163,8 +144,7 @@ private:
   /// that calls this functions. This is used internally by Jnjvm to control
   /// which pair class/method are used.
   ///
-  void error(UserClass* cl, JavaMethod* meth, JavaString*, bool immediate = true);
-  void error(UserClass* cl, JavaMethod* meth, const char*, bool immediate = true);
+  void error(UserClass* cl, JavaMethod* meth, JavaString*);
   
   /// errorWithExcp - Throws an exception whose cause is the Java object excp.
   ///
@@ -370,34 +350,6 @@ public:
   /// mapping the initial thread.
   ///
   void loadBootstrap();
-  void loadIsolate(JnjvmClassLoader *loader);
-
-  IsolateDescriptor RunningIsolates[NR_ISOLATES];
-  vmkit::LockNormal IsolateLock;
-
-  int allocateNextFreeIsolateID(JnjvmClassLoader* loader, isolate_id_t *isolateID);
-  void freeIsolateID(isolate_id_t isolateID);
-
-  void disableIsolates(isolate_id_t* isolateID, size_t isolateCount, bool denyIsolateExecution, bool resetIsolateReferences);
-
-  void collectIsolates();
-  void collectIsolate(isolate_id_t isolateID);
-  void denyIsolateExecutionInThread(isolate_id_t isolateID, JavaThread& thread);
-  void denyIsolateExecutionInMethodFrame(const vmkit::StackWalker& CallerWalker, vmkit::StackWalker& CalledWalker);
-  void removeExceptionHandlersInThread(isolate_id_t isolateID, JavaThread& thread);
-  void denyMethodExecution(const vmkit::StackWalker& CallerWalker, vmkit::StackWalker& CalledWalker);
-  void denyMethodExecution(JavaMethod& method);
-  bool isActivatorStopMethod(JavaMethod& method) const;
-  isolate_id_t getFrameIsolateID(const vmkit::FrameInfo& frame) const;
-  isolate_id_t getFrameIsolateID(const JavaMethod& method) const;
-  void redirectMethodProlog(void* methodAddress, void* redirectCode, size_t codeSize);
-  void denyClassExecution(isolate_id_t isolateID, CommonClass& cl);
-  void invalidateAllClassesInIsolate(isolate_id_t isolateID);
-
-  virtual bool resetDeadIsolateReference(void* source, void** objectRef);
-  virtual void deadIsolateException(void* methodIP, bool immediate = true);
-
-  virtual void printCallStack(const vmkit::StackWalker& walker);
 };
 
 } // end namespace j3

Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp Thu Apr 25 11:49:31 2013
@@ -49,7 +49,6 @@ typedef void (*static_init_t)(JnjvmClass
 const UTF8* JavaCompiler::InlinePragma = 0;
 const UTF8* JavaCompiler::NoInlinePragma = 0;
 
-extern "C" uint32_t j3SetIsolate(uint32_t isolateID, uint32_t* currentIsolateID);
 
 JnjvmBootstrapLoader::JnjvmBootstrapLoader(vmkit::BumpPtrAllocator& Alloc,
                                            JavaCompiler* Comp, 
@@ -143,18 +142,18 @@ JnjvmBootstrapLoader::JnjvmBootstrapLoad
   arrayTable[JavaArray::T_LONG - 4] = upcalls->ArrayOfLong;
   arrayTable[JavaArray::T_DOUBLE - 4] = upcalls->ArrayOfDouble;
   
-  JavaAttribute::annotationsAttribute =
+  Attribut::annotationsAttribut =
     asciizConstructUTF8("RuntimeVisibleAnnotations");
-  JavaAttribute::codeAttribute = asciizConstructUTF8("Code");
-  JavaAttribute::exceptionsAttribute = asciizConstructUTF8("Exceptions");
-  JavaAttribute::constantAttribute = asciizConstructUTF8("ConstantValue");
-  JavaAttribute::lineNumberTableAttribute = asciizConstructUTF8("LineNumberTable");
-  JavaAttribute::innerClassesAttribute = asciizConstructUTF8("InnerClasses");
-  JavaAttribute::sourceFileAttribute = asciizConstructUTF8("SourceFile");
-  JavaAttribute::signatureAttribute = asciizConstructUTF8("Signature");
-  JavaAttribute::enclosingMethodAttribute = asciizConstructUTF8("EnclosingMethod");
-  JavaAttribute::paramAnnotationsAttribute = asciizConstructUTF8("RuntimeVisibleParameterAnnotations");
-  JavaAttribute::annotationDefaultAttribute = asciizConstructUTF8("AnnotationDefault");
+  Attribut::codeAttribut = asciizConstructUTF8("Code");
+  Attribut::exceptionsAttribut = asciizConstructUTF8("Exceptions");
+  Attribut::constantAttribut = asciizConstructUTF8("ConstantValue");
+  Attribut::lineNumberTableAttribut = asciizConstructUTF8("LineNumberTable");
+  Attribut::innerClassesAttribut = asciizConstructUTF8("InnerClasses");
+  Attribut::sourceFileAttribut = asciizConstructUTF8("SourceFile");
+  Attribut::signatureAttribut = asciizConstructUTF8("Signature");
+  Attribut::enclosingMethodAttribut = asciizConstructUTF8("EnclosingMethod");
+  Attribut::paramAnnotationsAttribut = asciizConstructUTF8("RuntimeVisibleParameterAnnotations");
+  Attribut::annotationDefaultAttribut = asciizConstructUTF8("AnnotationDefault");
  
   JavaCompiler::InlinePragma =
     asciizConstructUTF8("Lorg/vmmagic/pragma/Inline;");
@@ -173,7 +172,6 @@ JnjvmBootstrapLoader::JnjvmBootstrapLoad
   VMDoubleName = asciizConstructUTF8("java/lang/VMDouble");
   stackWalkerName = asciizConstructUTF8("gnu/classpath/VMStackWalker");
   NoClassDefFoundError = asciizConstructUTF8("java/lang/NoClassDefFoundError");
-  org_osgi_framework_BundleContext = asciizConstructUTF8("Lorg/osgi/framework/BundleContext;");
 
 #define DEF_UTF8(var) \
   var = asciizConstructUTF8(#var)
@@ -206,20 +204,14 @@ JnjvmBootstrapLoader::JnjvmBootstrapLoad
   DEF_UTF8(doubleToRawLongBits);
   DEF_UTF8(intBitsToFloat);
   DEF_UTF8(longBitsToDouble);
-  DEF_UTF8(stop);
 
 #undef DEF_UTF8 
 }
 
-JnjvmClassLoader::JnjvmClassLoader(vmkit::BumpPtrAllocator& Alloc) :
-	isolateID(0), allocator(Alloc)
-{
-}
-
 JnjvmClassLoader::JnjvmClassLoader(vmkit::BumpPtrAllocator& Alloc,
                                    JnjvmClassLoader& JCL, JavaObject* loader,
                                    VMClassLoader* vmdata,
-                                   Jnjvm* VM) : isolateID(0), allocator(Alloc) {
+                                   Jnjvm* I) : allocator(Alloc) {
   llvm_gcroot(loader, 0);
   llvm_gcroot(vmdata, 0);
   bootstrapLoader = JCL.bootstrapLoader;
@@ -234,22 +226,13 @@ JnjvmClassLoader::JnjvmClassLoader(vmkit
   vmdata->JCL = this;
   vmkit::Collector::objectReferenceNonHeapWriteBarrier(
       (gc**)&javaLoader, (gc*)loader);
-  vm = VM;
+  isolate = I;
 
   JavaMethod* meth = bootstrapLoader->upcalls->loadInClassLoader;
   loadClassMethod = 
     JavaObject::getClass(loader)->asClass()->lookupMethodDontThrow(
         meth->name, meth->type, false, true, &loadClass);
   assert(loadClass && "Loader does not have a loadClass function");
-
-  if (VM->appClassLoader != NULL) {	// Is the system class loader already set up?
-    isolate_id_t oldIsolateID = 0;
-    VM->allocateNextFreeIsolateID(this, &isolateID);
-
-    oldIsolateID = j3SetIsolate(isolateID, NULL);
-    VM->loadIsolate(this);
-    j3SetIsolate(oldIsolateID, NULL);
-  }
 }
 
 void JnjvmClassLoader::setCompiler(JavaCompiler* Comp) {
@@ -347,9 +330,9 @@ UserClass* JnjvmClassLoader::internalLoa
   if (!cl) {
     UserClass* forCtp = loadClass;
     if (strName == NULL) {
-      strName = JavaString::internalToJava(name, vm);
+      strName = JavaString::internalToJava(name, isolate);
     }
-    obj = loadClassMethod->invokeJavaObjectVirtual(vm, forCtp, javaLoader,
+    obj = loadClassMethod->invokeJavaObjectVirtual(isolate, forCtp, javaLoader,
                                                    &strName);
     cl = JavaObjectClass::getClass(((JavaObjectClass*)obj));
   }
@@ -854,9 +837,8 @@ const UTF8* JnjvmClassLoader::readerCons
 
 JnjvmClassLoader::~JnjvmClassLoader() {
 
-  if (vm) {
-    vm->removeFrameInfos(TheCompiler);
-    vm->freeIsolateID(isolateID);
+  if (isolate) {
+    isolate->removeFrameInfos(TheCompiler);
   }
 
   if (classes) {
@@ -897,7 +879,7 @@ JnjvmBootstrapLoader::~JnjvmBootstrapLoa
 JavaString** JnjvmClassLoader::UTF8ToStr(const UTF8* val) {
   JavaString* res = NULL;
   llvm_gcroot(res, 0);
-  res = vm->internalUTF8ToStr(val);
+  res = isolate->internalUTF8ToStr(val);
   return strings->addString(this, res);
 }
 

Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h Thu Apr 25 11:49:31 2013
@@ -57,14 +57,12 @@ private:
 
   /// isolate - Which isolate defined me? Null for the bootstrap class loader.
   ///
-  Jnjvm* vm;
-  isolate_id_t isolateID;
+  Jnjvm* isolate;
 
   /// javaLoder - The Java representation of the class loader. Null for the
   /// bootstrap class loader.
   ///
   JavaObject* javaLoader;
-//  JavaObject* javaLoader[NR_ISOLATES];
 
   /// internalLoad - Load the class with the given name.
   ///
@@ -80,7 +78,7 @@ private:
   /// first use of a Java class loader.
   ///
   JnjvmClassLoader(vmkit::BumpPtrAllocator& Alloc, JnjvmClassLoader& JCL,
-                   JavaObject* loader, VMClassLoader* vmdata, Jnjvm* VM);
+                   JavaObject* loader, VMClassLoader* vmdata, Jnjvm* isolate);
 
   /// lookupComponentName - Try to find the component name of the given array
   /// name. If the component name is not in the table of UTF8s and holder
@@ -94,7 +92,7 @@ private:
   void ensureCached(UserCommonClass* cl);
 protected:
   
-  JnjvmClassLoader(vmkit::BumpPtrAllocator& Alloc);
+  JnjvmClassLoader(vmkit::BumpPtrAllocator& Alloc) : allocator(Alloc) {}
   
   /// TheCompiler - The Java compiler for this class loader.
   ///
@@ -132,7 +130,9 @@ public:
   ///
   vmkit::BumpPtrAllocator& allocator;
  
-  isolate_id_t getIsolateID() const {return isolateID;}
+  /// getIsolate - Returns the isolate that created this class loader.
+  ///
+  Jnjvm* getIsolate() const { return isolate; }
 
   /// getClasses - Returns the classes this class loader has loaded.
   ///
@@ -387,7 +387,6 @@ public:
   Classpath* upcalls;
   
   /// Lists of UTF8s used internaly in VMKit.
-  const UTF8* org_osgi_framework_BundleContext;
   const UTF8* NoClassDefFoundError;
   const UTF8* initName;
   const UTF8* clinitName;
@@ -428,7 +427,6 @@ public:
   const UTF8* doubleToRawLongBits;
   const UTF8* intBitsToFloat;
   const UTF8* longBitsToDouble;
-  const UTF8* stop;
 
   /// primitiveMap - Map of primitive classes, hashed by id.
   std::map<const char, UserClassPrimitive*> primitiveMap;

Modified: vmkit/trunk/lib/j3/VMCore/JnjvmConfig.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmConfig.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmConfig.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmConfig.h Thu Apr 25 11:49:31 2013
@@ -28,6 +28,6 @@ class JavaConstantPool;
 }
 #define ISOLATE_STATIC static
 
-#define NR_ISOLATES 256
+#define NR_ISOLATES 1
 
 #endif // JNJVM_CONFIG_H

Removed: vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.cpp?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.cpp (removed)
@@ -1,196 +0,0 @@
-
-#include "JnjvmIsolate.h"
-
-using namespace j3;
-
-
-extern "C" jint Java_ijvm_isolate_vm_IJVM_getObjectIsolateID(JavaObject* object)
-{
-	llvm_gcroot(object, 0);
-	const UserCommonClass* ccl = JavaObject::getClass(object);
-	isolate_id_t isolateID = ccl->classLoader->getIsolateID();
-	return isolateID;
-}
-
-extern "C" void Java_ijvm_isolate_vm_IJVM_disableIsolates(ArrayLong *isolateID, jboolean denyIsolateExecution, jboolean resetIsolateReferences)
-{
-	size_t isolateCount = ArrayLong::getSize(isolateID);
-	isolate_id_t* list = new isolate_id_t[isolateCount];
-
-	for (size_t i=0; i < isolateCount; ++i)
-		list[i] = (isolate_id_t)ArrayLong::getElement(isolateID, i);
-
-	((Jnjvm*)vmkit::Thread::get()->MyVM)->disableIsolates(list, isolateCount, denyIsolateExecution, resetIsolateReferences);
-
-	delete [] list;
-}
-
-void Jnjvm::disableIsolates(isolate_id_t* isolateID, size_t isolateCount, bool denyIsolateExecution, bool resetIsolateReferences)
-{
-	if (!isolateID || !isolateCount || (!denyIsolateExecution && !resetIsolateReferences)) return;	// Nothing to do
-
-	for (size_t i=0; i < isolateCount; ++i) {
-		if (isolateID[i] == 0)
-			illegalArgumentException("isolateID must not be zero");
-	}
-
-	{
-		vmkit::LockGuard lg(IsolateLock);
-		for (size_t i=0; i < isolateCount; ++i) {
-			RunningIsolates[isolateID[i]].state |=
-				(resetIsolateReferences ? IsolateResetReferences : 0) |
-				(denyIsolateExecution ? IsolateDenyExecution : 0);
-		}
-	}
-
-	vmkit::Collector::collect();
-}
-
-void Jnjvm::collectIsolates()
-{
-//	vmkit::LockGuard lg(IsolateLock);
-	for (isolate_id_t isolateID = 0; isolateID < NR_ISOLATES; ++isolateID)
-		collectIsolate(isolateID);
-}
-
-void Jnjvm::collectIsolate(isolate_id_t isolateID)
-{
-	if (!(RunningIsolates[isolateID].state & IsolateDenyExecution)) return;
-
-	// Deny current isolate execution in running threads
-	vmkit::Thread *thisThread = vmkit::Thread::get();
-	for (vmkit::Thread* th = (vmkit::Thread*)thisThread->next(); th != thisThread; th = (vmkit::Thread*)th->next())
-		denyIsolateExecutionInThread(isolateID, *(JavaThread*)th);
-
-	// Deny future isolate execution
-	ClassMap* classes = RunningIsolates[isolateID].loader->getClasses();
-//	classes->lock.lock();
-	for (ClassMap::iterator cl = classes->map.begin(), clEnd = classes->map.end(); cl != clEnd; ++cl)
-		denyClassExecution(isolateID, *cl->second);
-//	classes->lock.unlock();
-
-	invalidateAllClassesInIsolate(isolateID);
-}
-
-void Jnjvm::printCallStack(const vmkit::StackWalker& walker)
-{
-	vmkit::FrameInfo* FI = NULL;
-	JavaThread* thread = (JavaThread*)walker.getScannedThread();
-
-	std::cerr << '[' << *thread << "] Call stack trace from call frame=" << walker.getCallFrame() << std::endl;
-	for (vmkit::StackWalker w(walker); (FI = w.get()) != NULL; ++w)
-		this->printMethod(FI, w.getReturnAddress(), w.getCallFrame());
-	std::cerr << std::endl;
-}
-
-void Jnjvm::loadIsolate(JnjvmClassLoader *loader)
-{
-  JavaObject* obj = NULL;
-  JavaObject* javaLoader = NULL;
-  llvm_gcroot(obj, 0);
-  llvm_gcroot(javaLoader, 0);
-
-  assert((bootstrapLoader->upcalls->newString != NULL) && "bootstrap class loader not initialized");
-
-#define LOAD_CLASS(cl) \
-  cl->resolveClass(); \
-  cl->initialiseClass(this);
-
-  LOAD_CLASS(upcalls->newString);
-
-  // The initialization code of the classes initialized below may require
-  // to get the Java thread, so we create the Java thread object first.
-  LOAD_CLASS(upcalls->newThread);
-  LOAD_CLASS(upcalls->newVMThread);
-  LOAD_CLASS(upcalls->threadGroup);
-
-  LOAD_CLASS(upcalls->newClass);
-  LOAD_CLASS(upcalls->newConstructor);
-  LOAD_CLASS(upcalls->newField);
-  LOAD_CLASS(upcalls->newMethod);
-  LOAD_CLASS(upcalls->newStackTraceElement);
-  LOAD_CLASS(upcalls->boolClass);
-  LOAD_CLASS(upcalls->byteClass);
-  LOAD_CLASS(upcalls->charClass);
-  LOAD_CLASS(upcalls->shortClass);
-  LOAD_CLASS(upcalls->intClass);
-  LOAD_CLASS(upcalls->longClass);
-  LOAD_CLASS(upcalls->floatClass);
-  LOAD_CLASS(upcalls->doubleClass);
-  LOAD_CLASS(upcalls->InvocationTargetException);
-  LOAD_CLASS(upcalls->ArrayStoreException);
-  LOAD_CLASS(upcalls->ClassCastException);
-  LOAD_CLASS(upcalls->IllegalMonitorStateException);
-  LOAD_CLASS(upcalls->IllegalArgumentException);
-  LOAD_CLASS(upcalls->InterruptedException);
-  LOAD_CLASS(upcalls->IndexOutOfBoundsException);
-  LOAD_CLASS(upcalls->ArrayIndexOutOfBoundsException);
-  LOAD_CLASS(upcalls->NegativeArraySizeException);
-  LOAD_CLASS(upcalls->NullPointerException);
-  LOAD_CLASS(upcalls->SecurityException);
-  LOAD_CLASS(upcalls->ClassFormatError);
-  LOAD_CLASS(upcalls->ClassCircularityError);
-  LOAD_CLASS(upcalls->NoClassDefFoundError);
-  LOAD_CLASS(upcalls->UnsupportedClassVersionError);
-  LOAD_CLASS(upcalls->NoSuchFieldError);
-  LOAD_CLASS(upcalls->NoSuchMethodError);
-  LOAD_CLASS(upcalls->InstantiationError);
-  LOAD_CLASS(upcalls->IllegalAccessError);
-  LOAD_CLASS(upcalls->IllegalAccessException);
-  LOAD_CLASS(upcalls->VerifyError);
-  LOAD_CLASS(upcalls->ExceptionInInitializerError);
-  LOAD_CLASS(upcalls->LinkageError);
-  LOAD_CLASS(upcalls->AbstractMethodError);
-  LOAD_CLASS(upcalls->UnsatisfiedLinkError);
-  LOAD_CLASS(upcalls->InternalError);
-  LOAD_CLASS(upcalls->OutOfMemoryError);
-  LOAD_CLASS(upcalls->StackOverflowError);
-  LOAD_CLASS(upcalls->UnknownError);
-  LOAD_CLASS(upcalls->ClassNotFoundException);
-  LOAD_CLASS(upcalls->ArithmeticException);
-  LOAD_CLASS(upcalls->InstantiationException);
-  LOAD_CLASS(upcalls->SystemClass);
-  LOAD_CLASS(upcalls->cloneableClass);
-  LOAD_CLASS(upcalls->CloneNotSupportedException);
-#undef LOAD_CLASS
-
-  // Implementation-specific end-of-bootstrap initialization
-  upcalls->InitializeSystem(this);
-
-  obj = JavaThread::get()->currentThread();
-  javaLoader = loader->getJavaClassLoader();
-  upcalls->setContextClassLoader->invokeIntSpecial(this, upcalls->newThread, obj, &javaLoader);
-
-  // load and initialize math since it is responsible for dlopen'ing
-  // libjavalang.so and we are optimizing some math operations
-  UserCommonClass* math = bootstrapLoader->loadName(bootstrapLoader->mathName, true, true, NULL);
-  math->asClass()->initialiseClass(this);
-}
-
-int Jnjvm::allocateNextFreeIsolateID(JnjvmClassLoader* loader, isolate_id_t *isolateID)
-{
-	isolate_id_t i = 0;
-	{
-		vmkit::LockGuard lg(IsolateLock);
-		for (; (i < NR_ISOLATES) && (RunningIsolates[i].state != IsolateFree); ++i);
-
-		if (i < NR_ISOLATES) {
-			RunningIsolates[i].state = IsolateRunning;
-			RunningIsolates[i].loader = loader;
-
-			if (isolateID != NULL) *isolateID = i;
-		}
-	}
-
-	assert((i < NR_ISOLATES) && "Not enough isolate slots");
-	return (i < NR_ISOLATES) ? 0 : ENOENT;
-}
-
-void Jnjvm::freeIsolateID(isolate_id_t isolateID)
-{
-	vmkit::LockGuard lg(IsolateLock);
-	RunningIsolates[isolateID].state = IsolateFree;
-	RunningIsolates[isolateID].loader = NULL;
-
-	std::cout << "Isolate " << isolateID << " unloaded from memory." << std::endl;
-}

Removed: vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.h?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmIsolate.h (removed)
@@ -1,32 +0,0 @@
-
-#include <sys/mman.h>
-#include <llvm/Support/Memory.h>
-#include <cerrno>
-
-#include "VmkitGC.h"
-#include "Jnjvm.h"
-#include "JavaClass.h"
-#include "JavaUpcalls.h"
-#include "VMStaticInstance.h"
-#include "j3/JavaJITCompiler.h"
-#include "j3/jni.h"
-
-
-extern "C" uint32_t j3SetIsolate(uint32_t isolateID, uint32_t* currentIsolateID);
-
-extern "C" void CalledStoppedIsolateMethod(void* methodIP) __attribute__((noinline));
-extern "C" void ReturnedToStoppedIsolateMethod(void* methodIP) __attribute__((noinline));
-
-extern "C" void StoppedIsolate_Redirect_ReturnToDeadMethod() __attribute__((naked, noreturn, noinline));
-
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod() __attribute__((naked, noreturn, noinline));
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod_End() __attribute__((naked, noreturn, noinline));
-
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop() __attribute__((naked, noreturn, noinline));
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop_End() __attribute__((naked, noreturn, noinline));
-
-#define StoppedIsolate_Redirect_CallToDeadMethod_CodeSize	\
-	((size_t)((intptr_t)StoppedIsolate_Redirect_CallToDeadMethod_End - (intptr_t)StoppedIsolate_Redirect_CallToDeadMethod))
-
-#define StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop_CodeSize	\
-	((size_t)((intptr_t)StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop_End - (intptr_t)StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop))

Removed: vmkit/trunk/lib/j3/VMCore/JnjvmIsolateRef.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmIsolateRef.cpp?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmIsolateRef.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmIsolateRef.cpp (removed)
@@ -1,37 +0,0 @@
-
-#include "JnjvmIsolate.h"
-
-using namespace j3;
-
-
-bool Jnjvm::resetDeadIsolateReference(void* source, void** ptr)
-{
-	// Don't touch fake Java objects that exist only as bridges between the
-	// Java object model and the C++ object model.
-	if (!ptr || !(*ptr)	// NULL reference or NULL object
-		|| VMClassLoader::isVMClassLoader(*(JavaObject**)ptr)
-		|| VMStaticInstance::isVMStaticInstance(*(JavaObject**)ptr))
-		return false;
-
-	CommonClass* ccl = JavaObject::getClass(*((JavaObject**)ptr));
-	isolate_id_t isolateID = ccl->classLoader->getIsolateID();
-
-	// vmkit::LockGuard lg(IsolateLock);
-	if (!(RunningIsolates[isolateID].state & IsolateResetReferences))
-		return false;	// Isolate not marked for resetting references
-
-	std::cout << "Resetting @reference=" << ptr << " @oldObject=" << *ptr <<
-		" class=" << *ccl->name << " isolateID=" << isolateID;
-
-	if (source) {
-		CommonClass* sccl = JavaObject::getClass(((JavaObject*)source));
-		isolate_id_t sourceIsolateID = sccl->classLoader->getIsolateID();
-
-		std::cout << " fromClass=" << *sccl->name << " fromIsolateID=" << sourceIsolateID;
-	}
-
-	std::cout << std::endl;
-
-	*ptr = NULL;	// Reset the reference
-	return true;
-}

Removed: vmkit/trunk/lib/j3/VMCore/JnjvmIsolateTerm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmIsolateTerm.cpp?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmIsolateTerm.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmIsolateTerm.cpp (removed)
@@ -1,505 +0,0 @@
-
-#include "JnjvmIsolate.h"
-
-using namespace j3;
-
-
-void Jnjvm::invalidateAllClassesInIsolate(isolate_id_t isolateID)
-{
-	// Mark all classes as invalid in the given isolate
-	ClassMap* classes = RunningIsolates[isolateID].loader->getClasses();
-//	classes->lock.lock();
-
-	for (isolate_id_t runningIsolateID = 0; runningIsolateID < NR_ISOLATES; ++runningIsolateID) {
-		if (RunningIsolates[runningIsolateID].state == IsolateFree) continue;
-
-		classes = RunningIsolates[runningIsolateID].loader->getClasses();
-		for (ClassMap::iterator cli = classes->map.begin(), cliEnd = classes->map.end(); cli != cliEnd; ++cli) {
-			if (!cli->second->isClass()) continue;
-
-			Class *cl = cli->second->asClass();
-			for (isolate_id_t deniedIsolateID = 0; deniedIsolateID < NR_ISOLATES; ++deniedIsolateID) {
-				if (!(RunningIsolates[deniedIsolateID].state & IsolateDenyExecution)) continue;
-
-				TaskClassMirror& tcm = cl->getTaskClassMirror(deniedIsolateID);
-				tcm.initialized = false;
-				tcm.status = loaded;
-			}
-		}
-	}
-//	classes->lock.unlock();
-}
-
-void Jnjvm::denyIsolateExecutionInThread(isolate_id_t isolateID, JavaThread& thread)
-{
-	if (!thread.isVmkitThread()) return;	// This is not a Java thread
-
-	removeExceptionHandlersInThread(isolateID, thread);
-
-	// We look at every pair of methods (native and Java methods).
-	vmkit::StackWalker CallerWalker(&thread);
-
-	if (!CallerWalker.isValid())
-		return;	// No methods (native/Java) to inspect in this stack
-
-	vmkit::StackWalker CalledWalker(CallerWalker);
-	++CallerWalker;
-
-	if (!CallerWalker.isValid()) return;	// One frame in the stack (is this normal? possible?)
-
-	// Loop over pairs of method frames (caller/called) in the stack
-	for (vmkit::StackWalkerState state = vmkit::StackWalkerInvalid;
-		(state = CallerWalker.getState()) >= vmkit::StackWalkerValid;
-		CalledWalker = CallerWalker, ++CallerWalker)
-	{
-		if (state != vmkit::StackWalkerValidMetadata)
-			continue;	// The caller method is not a Java method
-
-		const vmkit::FrameInfo* CallerFrame = CallerWalker.get();
-		if (isolateID != getFrameIsolateID(*CallerFrame))
-			continue;	// The caller method does not belong to the terminating isolate
-
-		// The caller method is a Java method belonging to the terminating isolate.
-		vmkit::StackWalker LastJavaCallerWalker(CallerWalker);
-
-		// Look for the next Java methods.
-		CallerWalker.reportOnlyMetadataEnabledFrames(true);
-		for (++CallerWalker; ; LastJavaCallerWalker = CallerWalker, ++CallerWalker) {
-			if ((state = CallerWalker.getState()) == vmkit::StackWalkerInvalid) {
-				// No Java methods calling this method, only native methods.
-				CallerWalker = LastJavaCallerWalker;
-				break;
-			}
-
-			// We found a Java caller method
-			CallerFrame = CallerWalker.get();
-			if (isolateID != getFrameIsolateID(*CallerFrame)) {
-				// The Java caller method does not belong to the terminating isolate.
-				// Make CallerWalker point at the last frame before that foreign Java method frame.
-				vmkit::StackWalker ForeignCaller(CallerWalker);
-				CallerWalker = LastJavaCallerWalker;
-				CallerWalker.reportOnlyMetadataEnabledFrames(false);
-
-				for (++CallerWalker;
-					CallerWalker != ForeignCaller;
-					LastJavaCallerWalker = CallerWalker, ++CallerWalker);
-
-				CallerWalker = LastJavaCallerWalker;
-				break;
-			}
-
-			// We found another Java caller method belonging to the terminating isolate.
-			// Continue scanning...
-		}
-		CallerWalker.reportOnlyMetadataEnabledFrames(false);
-
-		// CalledWalker                     : called frame, native or NOT belonging to the terminating isolate.
-		// (CalledWalker + 1)...CallerWalker: caller frames, native or belonging to the terminating isolate.
-		denyIsolateExecutionInMethodFrame(CallerWalker, CalledWalker);
-
-		// We are sure that the next method frame is either native or a Java method frame
-		// not belonging to the terminating isolate.
-		++CallerWalker;
-	}
-
-	// If the thread was running code in the isolate to kill, set its current isolate ID
-	// to the dead isolate ID, it should throw an exception as soon as it accesses isolate ID
-	if (thread.getIsolateID() == isolateID)
-		thread.markRunningDeadIsolate();
-}
-
-isolate_id_t Jnjvm::getFrameIsolateID(const vmkit::FrameInfo& frame) const
-{
-	assert(frame.Metadata && "Method frame has no metadata.");
-	return getFrameIsolateID(*(const JavaMethod*)frame.Metadata);
-}
-
-isolate_id_t Jnjvm::getFrameIsolateID(const JavaMethod& method) const
-{
-	const JnjvmClassLoader* loader = method.classDef->classLoader;
-	return (loader == loader->bootstrapLoader) ? 0 : loader->getIsolateID();
-}
-
-void Jnjvm::denyIsolateExecutionInMethodFrame(const vmkit::StackWalker& CallerWalker, vmkit::StackWalker& CalledWalker)
-{
-	denyMethodExecution(CallerWalker, CalledWalker);
-
-	// Patch the return address of the given method frame in order to return to the address of
-	// StoppedIsolate_RedirectMethodCodeToException when it executes the ret instruction.
-	vmkit::StackWalker walker(CalledWalker);
-	++walker;
-	walker.updateReturnAddress((void*)(intptr_t)(&StoppedIsolate_Redirect_ReturnToDeadMethod));
-
-	// Patch the thread stack frames to exclude the given method frames, so that further scanning of the stack does
-	// not reveal those method frames.
-	walker.updateCallerFrameAddress(CallerWalker.getCallerCallFrame());
-}
-
-void Jnjvm::redirectMethodProlog(void* methodAddress, void* redirectCode, size_t codeSize)
-{
-	llvm::sys::MemoryBlock methodProlog(methodAddress, codeSize);
-	llvm::sys::Memory::setWritable(methodProlog);
-
-	memcpy(methodAddress, redirectCode, codeSize);
-
-	llvm::sys::Memory::InvalidateInstructionCache(methodAddress, codeSize);
-}
-
-void Jnjvm::removeExceptionHandlersInThread(isolate_id_t isolateID, JavaThread& thread)
-{
-	// Remove all exception handlers which run in the given isolate.
-	// These exception handlers might exist in a method that was loaded by the isolate class loader itself,
-	// and might be a method that does not modify the current isolate ID (e.g. a Java runtime method) and
-	// which consequently run in the isolate of its caller.
-
-	vmkit::ExceptionBuffer *CurExceptBuffer, *CalledExceptBuffer = NULL;
-	for (CurExceptBuffer = thread.lastExceptionBuffer;
-		CurExceptBuffer != NULL;
-		CurExceptBuffer = CurExceptBuffer->getPrevious())
-	{
-		if (isolateID != CurExceptBuffer->getHandlerIsolateID()) {
-			CalledExceptBuffer = CurExceptBuffer;
-			continue;
-		}
-
-		if (JavaMethod* method = (JavaMethod*)thread.MyVM->IPToFrameInfo(CurExceptBuffer->getHandlerMethod())->Metadata) {
-			std::cout << '[' << thread << "] Disabling exception handler inside method=" <<
-				*method->classDef->name << '.' << *method->name <<
-				" in isolateID=" << getFrameIsolateID(*method) << std::endl;
-		}
-
-		// Skip the exception buffer
-		if (!CalledExceptBuffer)
-			thread.lastExceptionBuffer = CurExceptBuffer->getPrevious();
-		else
-			CalledExceptBuffer->setPrevious(CurExceptBuffer->getPrevious());
-	}
-}
-/*
-void Jnjvm::removeExceptionHandlersInMethodFrames(JavaThread& thread, const vmkit::StackWalker& CallerWalker, vmkit::StackWalker& CalledWalker)
-{
-	// Remove all exception handlers in the given methods
-	vmkit::ExceptionBuffer *CurExceptBuffer, *CalledExceptBuffer = NULL;
-	bool MoreFramesToCheck = true, skippedExceptHandler = false;
-	vmkit::StackWalker CalledMarkerWalker(CalledWalker);
-	++CalledMarkerWalker;	// Skip the called method
-
-	for (CurExceptBuffer = thread.lastExceptionBuffer;
-		CurExceptBuffer != NULL;
-		CalledExceptBuffer = skippedExceptHandler ? CalledExceptBuffer : CurExceptBuffer,
-		CurExceptBuffer = CurExceptBuffer->getPrevious())
-	{
-		vmkit::FrameInfo* ExceptHandlerMethodFrame;
-		JavaMethod* ExceptHandlerMethodInfo;
-		vmkit::StackWalker walker(CalledMarkerWalker);
-		skippedExceptHandler = false;
-
-		void* ExceptHandlerMethodAddr = CurExceptBuffer->getHandlerMethod();
-		if (!ExceptHandlerMethodAddr) continue;
-
-		ExceptHandlerMethodFrame = thread.MyVM->IPToFrameInfo(ExceptHandlerMethodAddr);
-		if (!ExceptHandlerMethodFrame) continue;
-
-		ExceptHandlerMethodInfo = (JavaMethod*)ExceptHandlerMethodFrame->Metadata;
-		if (!ExceptHandlerMethodInfo) continue;
-
-		walker.reportOnlyMetadataEnabledFrames(false);
-
-		for (bool inLastCaller = false; !inLastCaller; ++walker) {
-			inLastCaller = (walker == CallerWalker);
-
-			vmkit::FrameInfo* DeadMethodFrame = walker.get();
-			if (!DeadMethodFrame) continue;
-
-			JavaMethod* DeadMethodInfo = (JavaMethod*)DeadMethodFrame->Metadata;
-			if (!DeadMethodInfo) continue;
-			if (DeadMethodInfo != ExceptHandlerMethodInfo) continue;
-
-			std::cout << '[' << thread << "] Disabling exception handler inside method=" <<
-				*DeadMethodInfo->classDef->name << '.' << *DeadMethodInfo->name <<
-				" in isolateID=" << getFrameIsolateID(*DeadMethodInfo) << std::endl;
-
-			// Skip the exception buffer
-			if (!CalledExceptBuffer)
-				thread.lastExceptionBuffer = CurExceptBuffer->getPrevious();
-			else
-				CalledExceptBuffer->setPrevious(CurExceptBuffer->getPrevious());
-
-			// This called method frame exception buffer is now skipped, don't check it again.
-			CalledMarkerWalker = walker;
-			++CalledMarkerWalker;
-
-			skippedExceptHandler = true;
-			MoreFramesToCheck = !inLastCaller;	// Still have method frames to check?
-			break;
-		}
-
-		if (!MoreFramesToCheck)
-			break;
-	}
-}
-*/
-void Jnjvm::denyMethodExecution(const vmkit::StackWalker& CallerWalker, vmkit::StackWalker& CalledWalker)
-{
-	vmkit::StackWalker walker(CalledWalker);
-	do {
-		++walker;
-		if (walker.getState() < vmkit::StackWalkerValidMetadata) continue;
-
-		denyMethodExecution(*((JavaMethod*)walker.get()->Metadata));
-	} while (walker != CallerWalker);
-}
-
-void Jnjvm::denyMethodExecution(JavaMethod& method)
-{
-	void *redirectCode;
-	size_t redirectCodeSize;
-	if (isActivatorStopMethod(method)) {
-		redirectCode = (void*)(intptr_t)StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop;
-		redirectCodeSize = StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop_CodeSize;
-	} else {
-		redirectCode = (void*)(intptr_t)StoppedIsolate_Redirect_CallToDeadMethod;
-		redirectCodeSize = StoppedIsolate_Redirect_CallToDeadMethod_CodeSize;
-	}
-
-	if (method.code == redirectCode)
-		return;	// Already denied, nothing to do
-
-	if (method.code != NULL) {	// Method was generated, overwrite its prolog code in memory
-		std::cout << "Patching prolog of method[generated,non-custom]=" <<
-			*method.classDef->name << '.' << *method.name <<
-			" in isolateID=" << getFrameIsolateID(method) << std::endl;
-
-		redirectMethodProlog(method.code, redirectCode, redirectCodeSize);
-
-		method.code = redirectCode;		// Make the function point to the redirection code.
-		return;
-	}
-
-	if (!method.isCustomizable) {
-		std::cout << "Patching prolog of method[not-generated,non-custom]=" <<
-			*method.classDef->name << '.' << *method.name <<
-			" in isolateID=" << getFrameIsolateID(method) << std::endl;
-
-		method.code = redirectCode;		// Make the function point to the redirection code.
-		return;
-	}
-
-	// NOTE:
-	// We must NOT generate code here, because we might cause a dead lock while trying to obtain
-	// the LLVM-IR lock via protectIR().
-
-	// Avoid any further customizations to this method
-	JavaJITCompiler* compiler = static_cast<JavaJITCompiler*>(method.classDef->classLoader->getCompiler());
-	LLVMMethodInfo* methodInfo = compiler->getMethodInfo(&method);
-
-	method.isCustomizable = false;
-	methodInfo->isCustomizable = false;
-
-	// Patch all the customized versions of the method.
-	LLVMMethodInfo::customizedVersionsType* methodVersions = methodInfo->getCustomizedVersions();
-	for (LLVMMethodInfo::customizedVersionsIterator methodCode = methodVersions->begin(),
-		methodCodeEnd = methodVersions->end();
-		methodCode != methodCodeEnd;
-		++methodCode)
-	{
-		std::cout << "Patching prolog of method[generated,custom]=" <<
-			*method.classDef->name << '.' << *method.name <<
-			" customizedFor=" << *methodCode->first->name <<
-			" in isolateID=" << getFrameIsolateID(method) << std::endl;
-
-		void *code = compiler->executionEngine->getPointerToGlobal(methodCode->second);
-		redirectMethodProlog(code, redirectCode, redirectCodeSize);
-	}
-
-	method.code = redirectCode;		// Make the function point to the redirection code.
-}
-
-bool Jnjvm::isActivatorStopMethod(JavaMethod& method) const
-{
-	/*
-		WARNING: We have made enough checks to be sure this method is:
-		public void stop(BundleContext bundleContext) throws Exception
-
-		However, we must also check that the class of this method is the Activator of the bundle.
-		This would require calling org.osgi.framework.Bundle.getHeaders() and finding the
-		"Bundle-Activator" meta-data to compare it with method.classDef.
-	*/
-	if (!isPublic(method.access) || isStatic(method.access)) return false;
-
-	const Signdef* sign = method.getSignature();
-	if ((sign->nbArguments != 1) || !sign->getReturnType()->isVoid()) return false;
-
-	JnjvmBootstrapLoader* bootstrapLoader = method.classDef->classLoader->bootstrapLoader;
-	return	method.name->equals(bootstrapLoader->stop)
-			&& (**sign->getArgumentsType()).keyName->equals(bootstrapLoader->org_osgi_framework_BundleContext);
-}
-
-void Jnjvm::denyClassExecution(isolate_id_t isolateID, CommonClass& ccl)
-{
-	if ((ccl.classLoader->getIsolateID() != isolateID)
-		|| ccl.isPrimitive() || ccl.isArray() || ccl.isInterface())
-		return;
-
-	if (ccl.super)
-		denyClassExecution(isolateID, *ccl.super);	// Deny the super class, if any
-
-	Class& cl = *ccl.asClass();
-	for (size_t i=0; i < cl.nbInnerClasses; ++i)
-		denyClassExecution(isolateID, *cl.innerClasses[i]);	// Deny inner classes, if any
-
-	std::cout << "Denying class execution: " << *cl.name << std::endl;
-
-	for (size_t i=0; i < cl.nbStaticMethods; ++i)
-		denyMethodExecution(cl.staticMethods[i]);	// Deny static class methods
-
-	for (size_t i=0; i < cl.nbVirtualMethods; ++i)
-		denyMethodExecution(cl.virtualMethods[i]);	// Deny virtual object methods
-}
-
-extern "C" void CalledStoppedIsolateMethod(void* methodIP)
-{
-	JavaThread *thread = JavaThread::get();
-	JavaMethod* method = NULL;
-	thread->cleanUpOnDeadIsolateBeforeException(&methodIP, &method);
-
-	if (method) {
-		std::cout << '[' << *thread << "] DeadIsolateException(ReturnedToStoppedIsolateMethod) in method=" <<
-			*method->classDef->name << '.' << *method->name << std::endl;
-	}
-
-	thread->MyVM->deadIsolateException(methodIP);
-	UNREACHABLE();
-}
-
-extern "C" void ReturnedToStoppedIsolateMethod(void* methodIP)
-{
-	JavaThread *thread = JavaThread::get();
-	JavaMethod* method = NULL;
-	thread->cleanUpOnDeadIsolateBeforeException(&methodIP, &method);
-
-	if (method) {
-		std::cout << '[' << *thread << "] DeadIsolateException(ReturnedToStoppedIsolateMethod) in method=" <<
-			*method->classDef->name << '.' << *method->name << std::endl;
-	}
-
-	thread->MyVM->deadIsolateException(methodIP);
-	UNREACHABLE();
-}
-
-void Jnjvm::deadIsolateException(void* methodIP, bool immediate)
-{
-	//error(upcalls->DeadIsolateException, upcalls->InitDeadIsolateException, str, immediate);
-	error(
-		upcalls->InterruptedException, upcalls->InitInterruptedException,
-		"Called method is implemented by a bundle that was stopped.",
-		immediate);
-}
-
-#if defined(ARCH_X86) && defined(LINUX_OS)
-
-/*
-This code treats the case where M0 calls M1 which calls M2 (Mi are Java methods) where:
-- M1 belongs to the terminating isolate, and
-- M0 and M2 do not.
-
-M2 will continue running as expected. But when it returns, instead of jumping to M1, it comes here.
-In fact, M2 should have its on-stack return address patched to jump here.
-So, this code will run in the stack frame of M1. This code will adjust the stack frame of M1 then
-simulate a call to throw an exception. The adjustment made will make it seem as if M0 thrown the
-exception directly.
-
-In short, this code transforms: M0 > M1 > M2
-						  into: M0 > throw exception
-
-NOTICE:
-* The exception thrower function should never return to its caller, except to exception handlers.
-* This code supposes that the calling convention of LLVM-generated code is cdecl. The stdcall calling
-  convention requires the called method to know the number of parameters it receives and to pop them
-  out on return (instruction: ret N), this would prohibit us from writing a generic code to patch the
-  stack, and would require dynamic code generation, or another way of doing things...
-* This code must be position-independent because it might be copied elsewhere, so no relative
-  offsets should be generated. Careful choosing instructions.
-*/
-
-extern "C" void StoppedIsolate_Redirect_ReturnToDeadMethod()
-{
-	asm volatile (
-		"mov %ebp, %esp								\n"	// Free all locals
-		"pop %ebp									\n"	// caller EBP ==> EBP
-		"push (%esp)								\n"	// Arg0 = ReturnAddress
-		// Copy the full function address into the register to avoid generating an offset-based call instruction.
-		"mov $ReturnedToStoppedIsolateMethod, %eax	\n"
-		"jmp %eax									\n"	// simulate a call from caller
-	);
-}
-
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod()
-{
-	asm volatile (
-		"push (%esp)											\n"	// Arg0 = ReturnAddress
-		// Copy the full function address into the register to avoid generating an offset-based call instruction.
-		"mov $CalledStoppedIsolateMethod, %eax					\n"
-		"jmp %eax												\n"	// simulate a call from caller
-		"StoppedIsolate_Redirect_CallToDeadMethod_End:			\n"	// Mark the end of code
-
-		".globl StoppedIsolate_Redirect_CallToDeadMethod_End	\n"	// Reserve space for the label address
-	);
-}
-
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop()
-{
-	asm volatile (
-		"ret																\n"	// Return directly to the caller
-		"StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop_End:		\n"// Mark the end of code
-
-		".globl StoppedIsolate_Redirect_CallToDeadMethod_ActivatorStop_End	\n"// Reserve space for the label address
-	);
-}
-
-/*
-// NOTE: This works more correctly than __builtin_frame_address because this does NOT require stack frame to be setup.
-extern "C" void* StoppedIsolate_GetEIP()
-{
-	asm volatile (
-		"mov (%esp), %eax	\n"
-		"ret				\n"
-	);
-}
-
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod_Redirect()
-{
-	asm volatile (
-		"sub $StoppedIsolate_Redirect_CallToDeadMethod_Code, %eax	\n"
-		"add $StoppedIsolate_Redirect_CallToDeadMethod_Data, %eax	\n"
-		"mov (%eax), %eax											\n"
-
-		"push %ebp													\n"
-		"push %eax													\n"
-		"mov $CalledStoppedIsolateMethod, %eax						\n"
-		"call %eax													\n"
-		);
-}
-
-extern "C" void StoppedIsolate_Redirect_CallToDeadMethod()
-{
-	asm volatile (
-		"mov $StoppedIsolate_GetEIP, %eax						\n"
-		"call %eax												\n"
-
-		"StoppedIsolate_Redirect_CallToDeadMethod_Code:			\n"
-		"mov $StoppedIsolate_Redirect_CallToDeadMethod_Redirect, %ebx	\n"
-		"jmp %ebx												\n"
-
-		"StoppedIsolate_Redirect_CallToDeadMethod_Data:			\n"
-		".fill 4												\n"// Enough to store a (void*)
-		"StoppedIsolate_Redirect_CallToDeadMethod_End:			\n"
-
-		".globl StoppedIsolate_Redirect_CallToDeadMethod_End	\n"
-	);
-}
-*/
-
-#else
-#error "Sorry. Only Linux x86 is currently supported."
-#endif

Modified: vmkit/trunk/lib/j3/VMCore/LinkJavaRuntime.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/LinkJavaRuntime.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/LinkJavaRuntime.h (original)
+++ vmkit/trunk/lib/j3/VMCore/LinkJavaRuntime.h Thu Apr 25 11:49:31 2013
@@ -29,14 +29,6 @@ namespace vmkit {
 
 using namespace j3;
 
-extern "C" uint32_t j3SetIsolate(uint32_t isolateID, uint32_t* currentIsolateID);
-extern "C" void* j3GetStaticInstance(UserClass* cl);
-extern "C" void* j3GetCachedValue(UserClass* cl, uint32 index, isolate_id_t isolateID);
-extern "C" JavaObject** j3GetClassDelegateePtr(UserCommonClass* commonCl);
-extern "C" JavaObject* j3GetClassDelegatee(UserCommonClass* commonCl);
-extern "C" UserClass* j3InitialisationCheck(UserClass* cl);
-extern "C" UserClass* j3InitialisationCheckForJavaObject(JavaObject* obj);
-
 extern "C" void* j3InterfaceLookup(UserClass* caller, uint32 index);
 extern "C" void* j3VirtualFieldLookup(UserClass* caller, uint32 index);
 extern "C" void* j3StaticFieldLookup(UserClass* caller, uint32 index);
@@ -44,7 +36,6 @@ extern "C" void* j3VirtualTableLookup(Us
 extern "C" void* j3StringLookup(UserClass* cl, uint32 index);
 extern "C" void* j3ClassLookup(UserClass* caller, uint32 index);
 extern "C" UserCommonClass* j3RuntimeInitialiseClass(UserClass* cl);
-extern "C" JavaObject** j3RuntimeDelegateePtr(UserCommonClass* cl);
 extern "C" JavaObject* j3RuntimeDelegatee(UserCommonClass* cl);
 extern "C" JavaArray* j3MultiCallNew(UserClassArray* cl, uint32 len, ...);
 extern "C" UserClassArray* j3GetArrayClass(UserCommonClass*,

Modified: vmkit/trunk/lib/j3/VMCore/Reader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Reader.h?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Reader.h (original)
+++ vmkit/trunk/lib/j3/VMCore/Reader.h Thu Apr 25 11:49:31 2013
@@ -44,7 +44,7 @@ public:
   uint32 cursor;
   uint32 max;
 
-  Reader(JavaAttribute* attr, ClassBytes* bytes) {
+  Reader(Attribut* attr, ClassBytes* bytes) {
     this->bytes = bytes;
     this->cursor = attr->start;
     this->min = attr->start;

Modified: vmkit/trunk/lib/j3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/VirtualTables.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/VirtualTables.cpp Thu Apr 25 11:49:31 2013
@@ -175,8 +175,8 @@ void CommonClass::tracer(word_t closure)
   }
 
   for (uint32 i = 0; i < NR_ISOLATES; ++i) {
-    if (getDelegatee(i) != NULL) {
-      vmkit::Collector::markAndTraceRoot(getDelegateePtr(i), closure);
+    if (delegatee[i] != NULL) {
+      vmkit::Collector::markAndTraceRoot(delegatee + i, closure);
     }
   }
 }
@@ -184,12 +184,13 @@ void CommonClass::tracer(word_t closure)
 void Class::tracer(word_t closure) {
   CommonClass::tracer(closure);
   
-  for (uint32 isolateID = 0; isolateID < NR_ISOLATES; ++isolateID) {
-    if (getStaticInstance(isolateID) != NULL) {
+  for (uint32 i = 0; i < NR_ISOLATES; ++i) {
+    TaskClassMirror &M = IsolateInfo[i];
+    if (M.staticInstance != NULL) {
       for (uint32 i = 0; i < nbStaticFields; ++i) {
         JavaField& field = staticFields[i];
         if (field.isReference()) {
-          JavaObject** ptr = field.getStaticObjectFieldPtr(isolateID);
+          JavaObject** ptr = field.getStaticObjectFieldPtr();
           vmkit::Collector::markAndTraceRoot(ptr, closure);
         }
       }

Modified: vmkit/trunk/lib/vmkit/CommonThread/CollectionRV.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/CollectionRV.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/CollectionRV.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/CollectionRV.cpp Thu Apr 25 11:49:31 2013
@@ -90,7 +90,7 @@ void CooperativeCollectionRV::join() {
   th->inRV = true;
   
   lockRV();
-  th->setLastSP(StackWalker_getCallFrameAddress());
+  th->setLastSP(System::GetCallerAddress());
   th->joinedRV = true;
   another_mark();
   waitEndOfRV();
@@ -98,8 +98,6 @@ void CooperativeCollectionRV::join() {
   unlockRV();
   
   th->inRV = false;
-
-  th->runAfterLeavingGarbageCollectorRendezVous();
 }
 
 void CooperativeCollectionRV::joinBeforeUncooperative() {
@@ -110,7 +108,6 @@ void CooperativeCollectionRV::joinBefore
   th->inRV = true;
   
   lockRV();
-  bool wasInRV = th->doYield;
   if (th->doYield) {
     if (!th->joinedRV) {
       th->joinedRV = true;
@@ -121,11 +118,9 @@ void CooperativeCollectionRV::joinBefore
   unlockRV();
 
   th->inRV = false;
-
-  if (wasInRV) th->runAfterLeavingGarbageCollectorRendezVous();
 }
 
-void CooperativeCollectionRV::joinAfterUncooperative(void* SP) {
+void CooperativeCollectionRV::joinAfterUncooperative(word_t SP) {
   vmkit::Thread* th = vmkit::Thread::get();
   assert((th->getLastSP() == 0) &&
          "SP set after entering uncooperative code");
@@ -133,7 +128,6 @@ void CooperativeCollectionRV::joinAfterU
   th->inRV = true;
 
   lockRV();
-  bool wasInRV = th->doYield;
   if (th->doYield) {
     th->setLastSP(SP);
     if (!th->joinedRV) {
@@ -146,8 +140,6 @@ void CooperativeCollectionRV::joinAfterU
   unlockRV();
 
   th->inRV = false;
-
-  if (wasInRV) th->runAfterLeavingGarbageCollectorRendezVous();
 }
 
 extern "C" void conditionalSafePoint() {

Modified: vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp Thu Apr 25 11:49:31 2013
@@ -394,7 +394,7 @@ FatLock* LockSystem::getFatLockFromID(wo
 
 
 bool LockingThread::wait(
-    gc* self, LockSystem& table, struct timeval* info, bool& timed) {
+    gc* self, LockSystem& table, struct timeval* info, bool timed) {
   llvm_gcroot(self, 0);
   assert(vmkit::ThinLock::owner(self, table));
 
@@ -450,7 +450,6 @@ bool LockingThread::wait(
          l->firstThread->nextWaiting)) && "Inconsistent list");
  
   bool interrupted = (this->interruptFlag != 0);
-  timed = timeout;
 
   if (interrupted || timeout) {
     if (this->nextWaiting) {

Modified: vmkit/trunk/lib/vmkit/CommonThread/Sigsegv-linux-x86.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/Sigsegv-linux-x86.inc?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/Sigsegv-linux-x86.inc (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/Sigsegv-linux-x86.inc Thu Apr 25 11:49:31 2013
@@ -39,8 +39,8 @@ void Handler::UpdateRegistersForNPE() {
 }
 
 void Handler::UpdateRegistersForStackOverflow() {
-  greg_t alt_stack = (greg_t)vmkit::Thread::get()->GetAlternativeStackStart();
-  ((ucontext_t*)context)->uc_mcontext.gregs[REG_EBX] = (greg_t)StackWalker::getReturnAddressFromCallFrame((void*)((ucontext_t*)context)->uc_mcontext.gregs[REG_EBP]);
+  word_t alt_stack = vmkit::Thread::get()->GetAlternativeStackStart();
+  ((ucontext_t*)context)->uc_mcontext.gregs[REG_EBX] = System::GetIPFromCallerAddress(((ucontext_t*)context)->uc_mcontext.gregs[REG_EBP]);
   ((ucontext_t*)context)->uc_mcontext.gregs[REG_EAX] = ((ucontext_t*)context)->uc_mcontext.gregs[REG_EBP];
   ((ucontext_t*)context)->uc_mcontext.gregs[REG_ESP] = alt_stack;
   ((ucontext_t*)context)->uc_mcontext.gregs[REG_EIP] = (word_t)HandleStackOverflow;

Modified: vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp Thu Apr 25 11:49:31 2013
@@ -52,7 +52,7 @@ bool System::SupportsHardwareStackOverfl
 }
 #endif
 
-extern "C" void ThrowStackOverflowError(void* ip) {
+extern "C" void ThrowStackOverflowError(word_t ip) {
   vmkit::Thread* th = vmkit::Thread::get();
   vmkit::FrameInfo* FI = th->MyVM->IPToFrameInfo(ip);
   if (FI->Metadata == NULL) {
@@ -65,15 +65,23 @@ extern "C" void ThrowStackOverflowError(
   UNREACHABLE();
 }
 
-extern "C" void ThrowNullPointerException(void* methodIP)
-{
-	vmkit::Thread::get()->throwNullPointerException(methodIP);
+extern "C" void ThrowNullPointerException(word_t ip) {
+  vmkit::Thread* th = vmkit::Thread::get();
+  vmkit::FrameInfo* FI = th->MyVM->IPToFrameInfo(ip);
+  if (FI->Metadata == NULL) {
+    fprintf(stderr, "Thread %p received a SIGSEGV: either the VM code or an external\n"
+                    "native method is bogus. Aborting...\n", (void*)th);
+    abort();
+  } else {
+    vmkit::Thread::get()->MyVM->nullPointerException();
+  }
+  UNREACHABLE();
 }
 
 void sigsegvHandler(int n, siginfo_t *info, void *context) {
   Handler handler(context);
   vmkit::Thread* th = vmkit::Thread::get();
-  void* addr = (void*)info->si_addr;
+  word_t addr = (word_t)info->si_addr;
   if (th->IsStackOverflowAddr(addr)) {
     if (vmkit::System::SupportsHardwareStackOverflow()) {
       handler.UpdateRegistersForStackOverflow();

Modified: vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp Thu Apr 25 11:49:31 2013
@@ -16,7 +16,6 @@
 #include "vmkit/Locks.h"
 #include "vmkit/Thread.h"
 
-#include <iostream>
 #include <cassert>
 #include <cstdio>
 #include <errno.h>
@@ -28,27 +27,6 @@
 
 using namespace vmkit;
 
-ExceptionBuffer::ExceptionBuffer()
-{
-	addToThreadExceptionList(0);
-	handlerIsolateID = Thread::get()->getIsolateID();
-}
-
-void ExceptionBuffer::addToThreadExceptionList(void* returnAddr)
-{
-  Thread* th = Thread::get();
-  handlerMethod = returnAddr;
-  previousBuffer = th->lastExceptionBuffer;
-  th->lastExceptionBuffer = this;
-}
-
-void ExceptionBuffer::removeFromThreadExceptionList()
-{
-  Thread* th = Thread::get();
-  assert(th->lastExceptionBuffer == this && "Wrong exception buffer");
-  th->lastExceptionBuffer = previousBuffer;
-}
-
 int Thread::kill(void* tid, int signo) {
   return pthread_kill((pthread_t)tid, signo);
 }
@@ -75,13 +53,13 @@ void Thread::joinRVBeforeEnter() {
   MyVM->rendezvous.joinBeforeUncooperative(); 
 }
 
-void Thread::joinRVAfterLeave(void* savedSP) {
+void Thread::joinRVAfterLeave(word_t savedSP) {
   MyVM->rendezvous.joinAfterUncooperative(savedSP); 
 }
 
 void Thread::startKnownFrame(KnownFrame& F) {
   // Get the caller of this function
-  void* cur = StackWalker_getCallFrameAddress();
+  word_t cur = System::GetCallerAddress();
   F.previousFrame = lastKnownFrame;
   F.currentFP = cur;
   // This is used as a marker.
@@ -96,12 +74,12 @@ void Thread::endKnownFrame() {
 
 void Thread::startUnknownFrame(KnownFrame& F) {
   // Get the caller of this function
-  void* cur = StackWalker_getCallFrameAddress();
+  word_t cur = System::GetCallerAddress();
   // Get the caller of the caller.
-  cur = StackWalker::getCallerCallFrameAddress(cur);
+  cur = System::GetCallerOfAddress(cur);
   F.previousFrame = lastKnownFrame;
   F.currentFP = cur;
-  F.currentIP = StackWalker::getReturnAddressFromCallFrame(cur);
+  F.currentIP = System::GetIPFromCallerAddress(cur);
   lastKnownFrame = &F;
 }
 
@@ -111,23 +89,23 @@ void Thread::endUnknownFrame() {
 }
 
 void Thread::internalThrowException() {
-  LONGJMP(lastExceptionBuffer->getSetJmpBuffer(), 1);
+  LONGJMP(lastExceptionBuffer->buffer, 1);
 }
 
 void Thread::printBacktrace() {
   StackWalker Walker(this);
 
   while (FrameInfo* FI = Walker.get()) {
-    MyVM->printMethod(FI, Walker.getReturnAddress(), Walker.getCallFrame());
+    MyVM->printMethod(FI, Walker.ip, Walker.addr);
     ++Walker;
   }
 }
 
-void Thread::getFrameContext(void** buffer) {
+void Thread::getFrameContext(word_t* buffer) {
   vmkit::StackWalker Walker(this);
   uint32_t i = 0;
 
-  while (void* ip = *Walker) {
+  while (word_t ip = *Walker) {
     buffer[i++] = ip;
     ++Walker;
   }
@@ -144,185 +122,63 @@ uint32_t Thread::getFrameContextLength()
   return i;
 }
 
-void* StackWalker::getCallerCallFrameAddress(void* callFrame)
-{
-	void **oldBasePtr = (void**)callFrame;
-	return *oldBasePtr;
-}
-
-void** StackWalker::getReturnAddressPtrFromCallFrame(void* callFrame)
-{
-	void **oldBasePtr = (void**)callFrame;
-
-#if defined(MACOS_OS) && defined(ARCH_PPC)
-    return oldBasePtr + 2;
-#else
-    return oldBasePtr + 1;
-#endif
-}
-
-void* StackWalker::getReturnAddressFromCallFrame(void* callFrame)
-{
-	return *getReturnAddressPtrFromCallFrame(callFrame);
-}
-
 FrameInfo* StackWalker::get() {
-  if (callFrame == thread->baseSP) return 0;
-  return thread->MyVM->IPToFrameInfo(getReturnAddress());
+  if (addr == thread->baseSP) return 0;
+  ip = System::GetIPFromCallerAddress(addr);
+  return thread->MyVM->IPToFrameInfo(ip);
 }
 
-StackWalkerState StackWalker::getState() const
-{
-    const FrameInfo *fi = this->get();
-    if (!fi) return				StackWalkerInvalid;
-    if (!fi->Metadata) return	StackWalkerValid;
-    return						StackWalkerValidMetadata;
+word_t StackWalker::operator*() {
+  if (addr == thread->baseSP) return 0;
+  ip = System::GetIPFromCallerAddress(addr);
+  return ip;
 }
 
-void* StackWalker::operator*() {
-  if (callFrame == thread->baseSP) return 0;
-  return getReturnAddress();
-}
-
-void* StackWalker::getCallerCallFrame() const
-{
-	StackWalker walker(*this);
-	++walker;
-	return walker.getCallFrame();
+void StackWalker::operator++() {
+  if (addr != thread->baseSP) {
+    assert((addr < thread->baseSP) && "Corrupted stack");
+    assert((addr < System::GetCallerOfAddress(addr)) && "Corrupted stack");
+    if ((frame != NULL) && (addr == frame->currentFP)) {
+      assert(frame->currentIP == 0);
+      frame = frame->previousFrame;
+      assert(frame != NULL);
+      assert(frame->currentIP != 0);
+      addr = frame->currentFP;
+      frame = frame->previousFrame;
+    } else {
+      addr = System::GetCallerOfAddress(addr);
+    }
+  }
 }
 
-void StackWalker::operator++() {
-  for (;;) {
-    if (callFrame != thread->baseSP) {
-      assert((callFrame < thread->baseSP) && "Corrupted stack");
-      assert((callFrame < StackWalker::getCallerCallFrameAddress(callFrame)) && "Corrupted stack");
-      if ((frame != NULL) && (callFrame == frame->currentFP)) {
-        assert(frame->currentIP == 0);
-        frame = frame->previousFrame;
-        assert(frame != NULL);
-        assert(frame->currentIP != 0);
-        callFrame = frame->currentFP;
+StackWalker::StackWalker(vmkit::Thread* th) {
+  thread = th;
+  frame = th->lastKnownFrame;
+  if (vmkit::Thread::get() == th) {
+    addr = System::GetCallerAddress();
+    addr = System::GetCallerOfAddress(addr);
+  } else {
+    addr = th->waitOnSP();
+    if (frame) {
+      assert(frame->currentFP >= addr);
+    }
+    if (frame && (addr == frame->currentFP)) {
+      frame = frame->previousFrame;
+      // Let this be called from JNI, as in
+      // OpenJDK's JVM_FillInStackTrace:
+      if (frame && frame->currentIP != 0)
         frame = frame->previousFrame;
-      } else {
-        callFrame = StackWalker::getCallerCallFrameAddress(callFrame);
-      }
+      assert((frame == NULL) || (frame->currentIP == 0));
     }
-
-    if (!onlyReportMetadataEnabledFrames) break;
-    StackWalkerState state = getState();
-    if (state == StackWalkerInvalid || state == StackWalkerValidMetadata) break;
-  }
-}
-
-void StackWalker::operator--()
-{
-	// The call stack is a singly-linked list of call frames whose head is the last
-	// called method frame. This means that implementing this feature (getting the
-	// called frame of the current frame) requires rescanning the whole stack from the
-	// beginning (the last called frame), which can be slow in some cases.
-
-	StackWalker caller(*this, true);
-	StackWalker called(caller);
-	++caller;
-
-	for (void* currentAddr = this->getCallFrame();
-		(caller.get() != NULL) && (caller.getCallFrame() != currentAddr);
-		called = caller, ++caller);
-
-	assert((caller.get() != NULL) && "Caller of the current frame not found!");
-	*this = called;
-}
-
-// This code must be a macro because it must be directly called
-//from its caller, with not additional function frames in between.
-#define StackWalker_reset()										\
-{																\
-	if (vmkit::Thread::get() == thread) {						\
-		callFrame = StackWalker_getCallFrameAddress();			\
-		callFrame = StackWalker::getCallerCallFrameAddress(callFrame);	\
-	} else {													\
-		callFrame = thread->waitOnSP();							\
-		if (frame) assert(frame->currentFP >= callFrame);		\
-		if (frame && (callFrame == frame->currentFP)) {			\
-			frame = frame->previousFrame;						\
-			if (frame && frame->currentIP != 0)					\
-				frame = frame->previousFrame;					\
-			assert((frame == NULL) || (frame->currentIP == 0));	\
-		}														\
-	}															\
-	assert(callFrame && "No address to start with");			\
-	if (onlyReportMetadataEnabledFrames) {						\
-		FrameInfo *fi = this->get();							\
-		if ((fi != NULL) && !fi->Metadata) ++(*(this));			\
-	}															\
-}
-
-StackWalker::StackWalker(vmkit::Thread* th, bool only_report_metadata_enabled_frames) :
-	callFrame(0), frame(th->lastKnownFrame), thread(th),
-	onlyReportMetadataEnabledFrames(only_report_metadata_enabled_frames)
-{
-	StackWalker_reset();
-}
-
-StackWalker::StackWalker(const StackWalker& obj, bool reset) :
-	callFrame(obj.callFrame), frame(obj.frame), thread(obj.thread),
-	onlyReportMetadataEnabledFrames(obj.onlyReportMetadataEnabledFrames)
-{
-	if (!reset) return;
-	StackWalker_reset();
-}
-
-void StackWalker::reset()
-{
-	StackWalker_reset();
-}
-
-StackWalker& StackWalker::operator = (const StackWalker& obj)
-{
-	callFrame = obj.callFrame;
-	frame = obj.frame;
-	thread = obj.thread;
-	onlyReportMetadataEnabledFrames = obj.onlyReportMetadataEnabledFrames;
-	return *this;
-}
-
-void* StackWalker::updateReturnAddress(void* newAddr)
-{
-	void** retAddrPtr = StackWalker::getReturnAddressPtrFromCallFrame(callFrame);
-	void* oldRetAddr = *retAddrPtr;
-	*retAddrPtr = newAddr;
-	return oldRetAddr;
-}
-
-void* StackWalker::updateCallerFrameAddress(void* newAddr)
-{
-	void **oldBasePtr = (void**)callFrame;
-	void* oldOldBasePtr = *oldBasePtr;
-
-	for (void* framePtr = callFrame; framePtr != newAddr; framePtr = StackWalker::getCallerCallFrameAddress(framePtr)) {
-		for (KnownFrame *kf = thread->lastKnownFrame, *pkf = NULL; kf != NULL; pkf = kf, kf = kf->previousFrame) {
-			if (kf->currentFP != framePtr) continue;
-
-			if (!pkf)
-				thread->lastKnownFrame = kf->previousFrame;
-			else
-				pkf->previousFrame = kf->previousFrame;
-		}
-	}
-
-	*oldBasePtr = newAddr;
-	return oldOldBasePtr;
-}
-
-void StackWalker::dump() const
-{
-	thread->MyVM->printCallStack(*this);
+  }
+  assert(addr && "No address to start with");
 }
 
+
 void Thread::scanStack(word_t closure) {
   StackWalker Walker(this);
   while (FrameInfo* MI = Walker.get()) {
-    MethodInfoHelper::scan(closure, MI, Walker.getReturnAddress(), Walker.getCallFrame());
+    MethodInfoHelper::scan(closure, MI, Walker.ip, Walker.addr);
     ++Walker;
   }
 }
@@ -332,10 +188,10 @@ void Thread::enterUncooperativeCode(uint
     if (!inRV) {
       assert(!lastSP && "SP already set when entering uncooperative code");
       // Get the caller.
-      void* temp = StackWalker_getCallFrameAddress();
+      word_t temp = System::GetCallerAddress();
       // Make sure to at least get the caller of the caller.
       ++level;
-      while (level--) temp = StackWalker::getCallerCallFrameAddress(temp);
+      while (level--) temp = System::GetCallerOfAddress(temp);
       // The cas is not necessary, but it does a memory barrier.
       __sync_bool_compare_and_swap(&lastSP, 0, temp);
       if (doYield) joinRVBeforeEnter();
@@ -344,7 +200,7 @@ void Thread::enterUncooperativeCode(uint
   }
 }
 
-void Thread::enterUncooperativeCode(void* SP) {
+void Thread::enterUncooperativeCode(word_t SP) {
   if (isVmkitThread()) {
     if (!inRV) {
       assert(!lastSP && "SP already set when entering uncooperative code");
@@ -360,7 +216,7 @@ void Thread::leaveUncooperativeCode() {
   if (isVmkitThread()) {
     if (!inRV) {
       assert(lastSP && "No last SP when leaving uncooperative code");
-      void* savedSP = lastSP;
+      word_t savedSP = lastSP;
       // The cas is not necessary, but it does a memory barrier.
       __sync_bool_compare_and_swap(&lastSP, lastSP, 0);
       // A rendezvous has just been initiated, join it.
@@ -370,9 +226,9 @@ void Thread::leaveUncooperativeCode() {
   }
 }
 
-void* Thread::waitOnSP() {
+word_t Thread::waitOnSP() {
   // First see if we can get lastSP directly.
-  void* sp = lastSP;
+  word_t sp = lastSP;
   if (sp) return sp;
   
   // Then loop a fixed number of iterations to get lastSP.
@@ -466,14 +322,13 @@ public:
 StackThreadManager TheStackManager;
 
 extern void sigsegvHandler(int, siginfo_t*, void*);
-//extern void interruptSignalHandler(int signal_number, siginfo_t *info, void *context);
 
 /// internalThreadStart - The initial function called by a thread. Sets some
 /// thread specific data, registers the thread to the GC and calls the
 /// given routine of th.
 ///
 void Thread::internalThreadStart(vmkit::Thread* th) {
-  th->baseSP  = StackWalker_getCallFrameAddress();
+  th->baseSP  = System::GetCallerAddress();
 
   // Set the alternate stack as the second page of the thread's
   // stack.
@@ -484,11 +339,11 @@ void Thread::internalThreadStart(vmkit::
   sigaltstack(&st, NULL);
 
   // Set the SIGSEGV handler to diagnose errors.
-  struct sigaction sa = {};
-//  sigset_t mask;
-//  sigfillset(&mask);
+  struct sigaction sa;
+  sigset_t mask;
+  sigfillset(&mask);
   sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
-//  sa.sa_mask = mask;
+  sa.sa_mask = mask;
   sa.sa_sigaction = sigsegvHandler;
   sigaction(SIGSEGV, &sa, NULL);
   sigaction(SIGBUS, &sa, NULL);
@@ -543,47 +398,3 @@ void Thread::releaseThread(vmkit::Thread
   index = (index & ~TheStackManager.baseAddr) >> 20;
   TheStackManager.used[index] = 0;
 }
-
-isolate_id_t Thread::getValidIsolateID(isolate_id_t isolateID)
-{
-	if (isolateID != CURRENT_ISOLATE) return isolateID;
-	return Thread::get()->getIsolateID();
-}
-
-bool Thread::runsDeadIsolate() const
-{
-	return runningDeadIsolate;
-}
-
-void Thread::markRunningDeadIsolate()
-{
-	runningDeadIsolate = true;
-}
-
-void Thread::setIsolateID(isolate_id_t newIsolateID)
-{
-	isolateID = newIsolateID;
-}
-
-isolate_id_t Thread::getIsolateID() const
-{
-	return isolateID;
-}
-
-bool Thread::isCurrentThread()
-{
-	return (pthread_t)internalThreadID == pthread_self();
-}
-
-void Thread::throwNullPointerException(void* methodIP) const
-{
-	vmkit::FrameInfo* FI = MyVM->IPToFrameInfo(methodIP);
-	if (FI->Metadata == NULL) {
-		fprintf(stderr, "Thread %p received a SIGSEGV: either the VM code or an external\n"
-					"native method is bogus. Aborting...\n", (void*)this);
-		abort();
-	}
-
-	MyVM->nullPointerException();
-	UNREACHABLE();
-}

Modified: vmkit/trunk/lib/vmkit/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/Compiler/JIT.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/vmkit/Compiler/JIT.cpp Thu Apr 25 11:49:31 2013
@@ -17,7 +17,6 @@
 #include <llvm/Module.h>
 #include <llvm/PassManager.h>
 #include <llvm/Type.h>
-#include <llvm/Analysis/DebugInfo.h>
 #include <llvm/Analysis/LoopPass.h>
 #include <llvm/Analysis/Verifier.h>
 #include <llvm/Assembly/Parser.h>
@@ -316,7 +315,6 @@ void BaseIntrinsics::init(llvm::Module*
   constantPtrZero = ConstantInt::get(pointerSizeType, 0);
 
   constantPtrNull = Constant::getNullValue(ptrType); 
-  constantPtr32Null = Constant::getNullValue(ptr32Type);
   constantPtrLogSize = 
     ConstantInt::get(Type::getInt32Ty(Context), kWordSizeLog2);
   arrayPtrType = PointerType::getUnqual(ArrayType::get(Type::getInt8Ty(Context), 0));
@@ -407,10 +405,10 @@ Frames* VmkitModule::addToVM(VirtualMach
     frame->FrameSize = FI->getFrameSize();
     frame->Metadata = meta;
     frame->SourceIndex = I->Loc.getLine();
-    frame->ReturnAddress = (void*)JCE->getLabelAddress(I->Label);
-    // If the safe point is from an NPE, increment the return address to
+    frame->ReturnAddress = JCE->getLabelAddress(I->Label);
+    // If the safe point is fro an NPE, increment the return address to
     // not clash with post calls.
-    if (I->Loc.getCol() == 1) frame->ReturnAddress = (void*)((uintptr_t)frame->ReturnAddress + 1);
+    if (I->Loc.getCol() == 1) frame->ReturnAddress += 1;
     int i = 0;
     for (llvm::GCFunctionInfo::live_iterator KI = FI->live_begin(I),
          KE = FI->live_end(I); KI != KE; ++KI) {

Modified: vmkit/trunk/lib/vmkit/Compiler/LLVMRuntime.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/Compiler/LLVMRuntime.ll?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/Compiler/LLVMRuntime.ll (original)
+++ vmkit/trunk/lib/vmkit/Compiler/LLVMRuntime.ll Thu Apr 25 11:49:31 2013
@@ -70,9 +70,7 @@ declare void @fieldWriteBarrier(i8*, i8*
 declare void @nonHeapWriteBarrier(i8**, i8*)
 
 
-; ExceptionBuffer. A size of 0 means an undefined size.
-%ExceptionBuffer = type {i8*, i32, %ExceptionBuffer*, [0 x i8]}
 
 declare i32 @_setjmp(i8*) nounwind
-declare void @registerSetjmp(%ExceptionBuffer*) nounwind
-declare void @unregisterSetjmp(%ExceptionBuffer*) nounwind
+declare void @registerSetjmp(i8*) nounwind
+declare void @unregisterSetjmp(i8*) nounwind

Modified: vmkit/trunk/lib/vmkit/Runtime/MethodInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/Runtime/MethodInfo.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/Runtime/MethodInfo.cpp (original)
+++ vmkit/trunk/lib/vmkit/Runtime/MethodInfo.cpp Thu Apr 25 11:49:31 2013
@@ -19,25 +19,25 @@
 
 namespace vmkit {
 
-void MethodInfoHelper::scan(word_t closure, FrameInfo* FI, void* ip, void* callFrame) {
-  //void* spaddr = (void*)((intptr_t)callFrame + FI->FrameSize + sizeof(void*));
-  void* spaddr = StackWalker::getCallerCallFrameAddress(callFrame);
+void MethodInfoHelper::scan(word_t closure, FrameInfo* FI, word_t ip, word_t addr) {
+  //word_t spaddr = (word_t)addr + FI->FrameSize + sizeof(void*);
+  word_t spaddr = System::GetCallerOfAddress(addr);
   for (uint16 i = 0; i < FI->NumLiveOffsets; ++i) {
-	  void* obj = *(void**)((intptr_t)spaddr + FI->LiveOffsets[i]);
+    word_t obj = *(word_t*)(spaddr + FI->LiveOffsets[i]);    
     // Verify that obj does not come from a JSR bytecode.
-    if (!((uintptr_t)obj & 1)) {
-      Collector::scanObject((void**)((intptr_t)spaddr + FI->LiveOffsets[i]), closure);
+    if (!(obj & 1)) {
+      Collector::scanObject((void**)(spaddr + FI->LiveOffsets[i]), closure);
     }
   }
 }
 
-void MethodInfoHelper::print(void* ip, void* callFrame) {
+void MethodInfoHelper::print(word_t ip, word_t addr) {
   Dl_info info;
-  int res = dladdr(ip, &info);
+  int res = dladdr((void*)ip, &info);
   if (res != 0 && info.dli_sname != NULL) {
-    fprintf(stderr, "; %p (%p) in %s\n",  ip, callFrame, info.dli_sname);
+    fprintf(stderr, "; %p (%p) in %s\n",  (void*)ip, (void*)addr, info.dli_sname);
   } else {
-    fprintf(stderr, "; %p in Unknown method\n", ip);
+    fprintf(stderr, "; %p in Unknown method\n", (void*)ip);
   }
 }
 
@@ -71,9 +71,9 @@ FunctionMap::FunctionMap(BumpPtrAllocato
 // Create a dummy FrameInfo, so that methods don't have to null check.
 static FrameInfo emptyInfo;
 
-FrameInfo* FunctionMap::IPToFrameInfo(void* ip) {
+FrameInfo* FunctionMap::IPToFrameInfo(word_t ip) {
   FunctionMapLock.acquire();
-  llvm::DenseMap<void*, FrameInfo*>::iterator I = Functions.find(ip);
+  llvm::DenseMap<word_t, FrameInfo*>::iterator I = Functions.find(ip);
   FrameInfo* res = NULL;
   if (I != Functions.end()) {
     res = I->second;
@@ -87,7 +87,7 @@ FrameInfo* FunctionMap::IPToFrameInfo(vo
 }
 
 
-void FunctionMap::addFrameInfo(void* ip, FrameInfo* meth) {
+void FunctionMap::addFrameInfo(word_t ip, FrameInfo* meth) {
   FunctionMapLock.acquire();
   addFrameInfoNoLock(ip, meth);
   FunctionMapLock.release();

Modified: vmkit/trunk/lib/vmkit/Runtime/Object.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/Runtime/Object.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/Runtime/Object.cpp (original)
+++ vmkit/trunk/lib/vmkit/Runtime/Object.cpp Thu Apr 25 11:49:31 2013
@@ -39,13 +39,11 @@ extern "C" void EmptyDestructor() {
 }
 
 extern "C" void registerSetjmp(ExceptionBuffer* buffer) {
-	void* callFrame = StackWalker_getCallFrameAddress();
-	void* retAddr = StackWalker::getReturnAddressFromCallFrame(callFrame);
-	buffer->addToThreadExceptionList(retAddr);
+  buffer->init();
 }
 
 extern "C" void unregisterSetjmp(ExceptionBuffer* buffer) {
-  buffer->removeFromThreadExceptionList();
+  buffer->remove();
 }
 
 void VirtualMachine::waitForExit() {   

Modified: vmkit/trunk/lib/vmkit/Runtime/UTF8.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/Runtime/UTF8.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/Runtime/UTF8.cpp (original)
+++ vmkit/trunk/lib/vmkit/Runtime/UTF8.cpp Thu Apr 25 11:49:31 2013
@@ -39,32 +39,6 @@ uint32 UTF8::readerHasher(const uint16*
   return (r1 & 255) + ((r0 & 255) << 8);
 }
 
-std::string UTF8::toString() const
-{
-	std::string contents;
-	contents.resize(size);
-
-	for (ssize_t i = 0; i < size; ++i)
-		contents[i] = (std::string::value_type)(elements[i]);
-
-	return contents;
-}
-
-int UTF8::compare(const char *s) const
-{
-	int len = strlen(s);
-	int diff = size - len;
-	if (diff != 0) return diff;
-
-	for (int i = 0; (i < size) && (diff == 0); ++i)
-		diff = (char)(elements[i]) - s[i];
-	return diff;
-}
-
-void UTF8::dump() const
-{
-	std::cout << (const void *)this << ": " << toString() << std::endl;
-}
 
 const UTF8* UTF8Map::lookupOrCreateAsciiz(const char* asciiz) {
   sint32 size = strlen(asciiz);

Modified: vmkit/trunk/mmtk/java/build.xml.in
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/java/build.xml.in?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/mmtk/java/build.xml.in (original)
+++ vmkit/trunk/mmtk/java/build.xml.in Thu Apr 25 11:49:31 2013
@@ -1,7 +1,7 @@
 <project name="MMTK-VMKit" default="main" basedir=".">
   <target name="main">
     <mkdir dir="classes"/>
-    <javac srcdir="@abs_top_srcdir@/mmtk/java/src" destdir="classes" source="1.5" includeantruntime="false"/>
+    <javac srcdir="@abs_top_srcdir@/mmtk/java/src:./src" destdir="classes" source="1.5"/>
     <jar jarfile="mmtk-vmkit.jar">
       <fileset dir="classes"/>
     </jar>

Modified: vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp Thu Apr 25 11:49:31 2013
@@ -114,8 +114,6 @@ void Collector::scanObject(void** ptr, w
   if ((*ptr) != NULL) {
     assert(((gc*)(*ptr))->getVirtualTable());
   }
-  if (vmkit::Thread::get()->MyVM->resetDeadIsolateReference(NULL, ptr))
-	  return;
   JnJVM_org_j3_bindings_Bindings_reportDelayedRootEdge__Lorg_mmtk_plan_TraceLocal_2Lorg_vmmagic_unboxed_Address_2(closure, ptr);
 }
  
@@ -125,8 +123,6 @@ void Collector::markAndTrace(void* sourc
     assert(((gc*)(*ptr_))->getVirtualTable());
   }
   if ((*(void**)ptr) != NULL) assert(((gc*)(*(void**)ptr))->getVirtualTable());
-  if (vmkit::Thread::get()->MyVM->resetDeadIsolateReference(source, ptr_))
-	  return;
   JnJVM_org_j3_bindings_Bindings_processEdge__Lorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2(closure, source, ptr);
 }
   
@@ -135,8 +131,6 @@ void Collector::markAndTraceRoot(void* p
   if ((*ptr_) != NULL) {
     assert(((gc*)(*ptr_))->getVirtualTable());
   }
-  if (vmkit::Thread::get()->MyVM->resetDeadIsolateReference(NULL, ptr_))
-	  return;
   JnJVM_org_j3_bindings_Bindings_processRootEdge__Lorg_mmtk_plan_TraceLocal_2Lorg_vmmagic_unboxed_Address_2Z(closure, ptr, true);
 }
 

Modified: vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Collection.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Collection.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Collection.cpp Thu Apr 25 11:49:31 2013
@@ -41,7 +41,6 @@ extern "C" void Java_org_j3_mmtk_Collect
 
     JnJVM_org_j3_bindings_Bindings_collect__I(why);
 
-    th->MyVM->endCollectionBeforeUnblockingThreads();
     th->MyVM->rendezvous.finishRV();
     th->MyVM->endCollection();
   }

Removed: vmkit/trunk/tests/debug.txt
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/debug.txt?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/debug.txt (original)
+++ vmkit/trunk/tests/debug.txt (removed)
@@ -1,30 +0,0 @@
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.StaticExposer_1.0.0.jar
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.StaticClient_1.0.0.jar
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.StaticClient_1.0.1.jar
-start 10 11 12
-
-
-stop 10 11 12
-
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.StaticExposer_1.0.0.jar
-start 10
-stop 10
-framework uninstall 10
-framework meminfo -gc
-framework meminfo -gc
-
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.looper_1.0.0.jar
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.tier_1.0.0.jar
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.loopClient_1.0.0.jar
-install file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.isolateKiller_1.0.0.jar
-start 10 11 12
-
-framework call ijvm.isolate.isolatemanager.IsolateManager killBundles ijvm.tests.tier ijvm.tests.looper
-
-framework call ijvm.isolate.isolatemanager.IsolateManager killBundle ijvm.tests.looper
-
-framework call ijvm.isolate.isolatemanager.IsolateManager killBundle ijvm.tests.tierImpl
-
-framework call ijvm.tests.looper.LoopController cancelLoop
-
-framework meminfo -gc

Removed: vmkit/trunk/tests/i-jvm-log.txt
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/i-jvm-log.txt?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/i-jvm-log.txt (original)
+++ vmkit/trunk/tests/i-jvm-log.txt (removed)
@@ -1,129 +0,0 @@
-I-JVM
-
-==============================================================================
-Direct access to static string:
-==============================================================================
-
-INFO[2:21:22.804 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:21:22.805 @ 9bef100 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:21:22.805 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:21:23.432 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:21:23.432 @ 9befe00 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:21:23.433 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:21:23.806 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:21:23.806 @ 9bef100 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:21:23.807 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:21:24.433 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:21:24.434 @ 9befe00 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:21:24.434 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |*|
-
-==============================================================================
-Access to static string through a getter function:
-==============================================================================
-
-INFO[2:42:21.715 @ 9befe00 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:21.987 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:21.988 @ 9bef100 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:21.988 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:22.989 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:22.990 @ 9befe00 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:22.990 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:23.990 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:23.991 @ 9bef100 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:23.991 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:24.991 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:24.992 @ 9befe00 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:24.992 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:25.992 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:25.993 @ 9bef100 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:25.993 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:26.993 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:26.993 @ 9befe00 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:26.994 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:27.994 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:27.995 @ 9bef100 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:27.995 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:28.996 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:28.996 @ 9befe00 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:28.996 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:42:29.996 @ 9bef100 vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:42:29.997 @ 9bef100 vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:42:29.997 @ 9befe00 vmkit.tests.staticstringclient.Activator.sync] |*|
-
-==============================================================================
-Direct and getter-based access to static object (Integer):
-==============================================================================
-
-INFO[17:57:28.139 @ 9bb8240 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:28.744 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:28.744 @ 9bb8c40 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:28.776 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 362
-INFO[17:57:29.776 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:29.776 @ 9bb8240 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:29.777 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 116
-INFO[17:57:30.777 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:30.777 @ 9bb8c40 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:30.777 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 362
-INFO[17:57:31.778 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:31.778 @ 9bb8240 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:31.778 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 116
-INFO[17:57:32.778 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:32.779 @ 9bb8c40 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:32.779 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 362
-INFO[17:57:33.779 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:33.779 @ 9bb8240 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:33.779 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 116
-INFO[17:57:34.780 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:34.780 @ 9bb8c40 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:34.780 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 362
-INFO[17:57:35.780 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:35.781 @ 9bb8240 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:35.781 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 116
-INFO[17:57:36.781 @ 9bb8c40 vmkit.tests.staticclient.Activator.sync2] |>>
-INFO[17:57:36.781 @ 9bb8c40 vmkit.tests.staticclient.Activator.run] >>|
-INFO[17:57:36.781 @ 9bb8240 vmkit.tests.staticclient.Activator.sync2] |*| r = 59, m = 362
-
-==============================================================================
-Forced isolate termination:
-==============================================================================
-
-INFO[17:59:55.807 @ b5bab9e4 ijvm.tests.isolatekiller.Activator.killTheIsolate] Killed TierService bundle.
-INFO[17:59:55.808 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Still looping...
-
-Exception in thread "Tier worker" java.lang.InterruptedException
-   at ijvm.tests.tier.Activator.run(Activator.java:68)
-   at java.lang.Thread.run(Thread.java:743)
-   at java.lang.VMThread.run(VMThread.java:120)
-
-INFO[17:59:58.809 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Still looping...
-INFO[18:0:1.810 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Still looping...
-INFO[18:0:4.810 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Still looping...
-INFO[18:0:7.811 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Still looping...
-INFO[18:0:10.811 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Still looping...
-INFO[18:0:13.812 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Still looping...
-INFO[18:0:15.809 @ b5bab9e4 ijvm.tests.isolatekiller.Activator.killTheIsolate] Cancelling LoopController loop...
-INFO[18:0:15.830 @ b5bab9e4 ijvm.tests.looper.LoopControllerImpl.cancelLoop] Cancel looping
-INFO[18:0:15.830 @ b5bab9e4 ijvm.tests.isolatekiller.Activator.killTheIsolate] Cancelled LoopController loop.
-INFO[18:0:16.813 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.loop] Done looping
-
-INFO[18:0:19.454 @ 9bd7e20 ijvm.tests.looper.LoopControllerImpl.callMeBack] ijvm.tests.looper.LoopControllerImpl.callMeBack
-java.lang.InterruptedException
-   at ijvm.tests.tier.TierServiceImpl.callBack(TierServiceImpl.java:57)
-   at ijvm.tests.looper.LoopControllerImpl.callMeBack(LoopControllerImpl.java:38)
-   at ijvm.tests.tier.TierServiceImpl.beforeLeaving(TierServiceImpl.java:47)
-   at ijvm.tests.tier.TierServiceImpl.thenAnotherThing(TierServiceImpl.java:35)
-   at ijvm.tests.tier.TierServiceImpl.doSomething(TierServiceImpl.java:23)
-   at ijvm.tests.loopclient.Activator.run(Activator.java:54)
-   at java.lang.Thread.run(Thread.java:743)
-   at java.lang.VMThread.run(VMThread.java:120)
-
-INFO[18:0:21.548 @ 9bd7e20 ijvm.tests.loopclient.Activator.run] ijvm.tests.loopclient.Activator.run
-java.lang.InterruptedException
-   at ijvm.tests.tier.TierServiceImpl.beforeLeaving(TierServiceImpl.java:47)
-   at ijvm.tests.tier.TierServiceImpl.thenAnotherThing(TierServiceImpl.java:35)
-   at ijvm.tests.tier.TierServiceImpl.doSomething(TierServiceImpl.java:23)
-   at ijvm.tests.loopclient.Activator.run(Activator.java:54)
-   at java.lang.Thread.run(Thread.java:743)
-   at java.lang.VMThread.run(VMThread.java:120)
-
-INFO[18:0:21.549 @ 9bd7e20 ijvm.tests.loopclient.Activator.run] Loop client done.

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/.classpath
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/.classpath?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/.classpath (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/.classpath (removed)
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/.project (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/.project (removed)
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm.isolate.IsolateManager</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/META-INF/MANIFEST.MF
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/META-INF/MANIFEST.MF?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/META-INF/MANIFEST.MF (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/META-INF/MANIFEST.MF (removed)
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: IsolateManager
-Bundle-SymbolicName: ijvm.isolate.IsolateManager;singleton:=true
-Bundle-Version: 1.0.0
-Bundle-Activator: ijvm.isolate.IsolateManagerActivator
-Import-Package: org.osgi.framework;version="1.3.0",
- org.osgi.service.packageadmin;version="1.0.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Bundle-Vendor: Koutheir Attouchi
-Export-Package: ijvm.isolate.isolatemanager

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/build.properties
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/build.properties?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/build.properties (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/build.properties (removed)
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerActivator.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerActivator.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerActivator.java (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerActivator.java (removed)
@@ -1,40 +0,0 @@
-package ijvm.isolate;
-
-
-import ijvm.isolate.isolatemanager.IsolateManager;
-import ijvm.isolate.util.IsolateLogger;
-
-import java.util.Hashtable;
-import java.util.logging.Logger;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class IsolateManagerActivator
-	implements BundleActivator
-{
-	private Logger log;
-	private IsolateManagerImpl serviceImpl;
-	
-	public void start(BundleContext context) throws Exception
-	{
-		log = IsolateLogger.createLogger(IsolateManagerActivator.class.getName());
-		log.info("STARTING");
-		
-		// Create the service implementation
-		serviceImpl = new IsolateManagerImpl(log);
-		serviceImpl.open(context);
-		
-		// Register the service
-		context.registerService(IsolateManager.class.getName(), serviceImpl, new Hashtable());
-	}
-	
-	public void stop(BundleContext context) throws Exception
-	{
-		serviceImpl.close();
-		serviceImpl = null;
-		
-		log.info("DONE");
-		log = null;
-	}
-}

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerImpl.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerImpl.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerImpl.java (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/IsolateManagerImpl.java (removed)
@@ -1,167 +0,0 @@
-package ijvm.isolate;
-
-import ijvm.isolate.isolatemanager.IsolateManager;
-import ijvm.isolate.vm.IJVM;
-
-import java.security.InvalidParameterException;
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.List;
-import java.util.logging.Logger;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.framework.FrameworkListener;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.Version;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-
-class IsolateManagerImpl
-	implements IsolateManager, FrameworkListener
-{
-	private Logger log;
-	private BundleContext context;
-	private List isolatesToKill;
-
-	public IsolateManagerImpl(Logger log)
-	{
-		this.log = log;
-		isolatesToKill = new ArrayList();
-	}
-
-	public void open(BundleContext context)
-	{
-		this.context = context;
-		// We need to know when packages are refreshed
-		context.addFrameworkListener(this);
-	}
-
-	public void close()
-	{
-		context.removeFrameworkListener(this);
-	}
-	
-	Bundle getBundle(String symbolicName)
-	{
-		Bundle[] bundles = context.getBundles();
-		for (int i=0; i < bundles.length; ++i) {
-			if (symbolicName.equals(bundles[i].getSymbolicName()))
-				return bundles[i];
-		}
-		return null;
-	}
-	
-	public void killBundle(String bundleName) throws Exception
-	{
-		log.info("Killing bundle: " + bundleName);
-		killBundles(new Bundle[] {getBundle(bundleName)});
-		log.info("Killed bundle.");
-	}
-	
-	public void killBundles(String bundleName1, String bundleName2) throws Exception
-	{
-		log.info("Killing bundles: " + bundleName1 + ", " + bundleName2);
-		killBundles(new Bundle[] {getBundle(bundleName1), getBundle(bundleName2)});
-		log.info("Killed bundles.");
-	}
-
-	public void killBundles(Bundle[] bundles) throws Exception
-	{
-		// We kill bundles asynchronously
-		final Object intializedLock = new Object();
-		final Bundle[] theBundles = bundles;
-		
-		Thread worker = new Thread(new Runnable() {
-			public void run()
-			{
-				try {
-					killBundlesThread(intializedLock, theBundles);
-				} catch (Exception e) {
-					log.info(IsolateManagerImpl.class.getName() + ".killBundles");
-					e.printStackTrace();
-				}
-			}
-		}, "Bundles killer");
-		worker.start();
-		
-		synchronized (intializedLock) {
-			intializedLock.wait();
-		}
-		// At this point, we are sure the bundle execution is denied
-	}
-
-	void killBundlesThread(final Object intializedLock, final Bundle[] bundles) throws Exception
-	{
-		synchronized (isolatesToKill) {
-			while (!isolatesToKill.isEmpty()) {
-				log.info("Previous killBundles operation pending...");
-				isolatesToKill.wait(4000);
-			}
-		}
-
-		long[] isolateID = new long[bundles.length];
-		for (int i = 0; i < bundles.length; ++i) {
-			String activatorClassName = (String)bundles[i].getHeaders().get("Bundle-Activator");
-			Object activatorObject = bundles[i].loadClass(activatorClassName).newInstance();
-			isolateID[i] = IJVM.getObjectIsolateID(activatorObject);
-			activatorObject = null;
-		}
-		
-		// Disable bundle execution
-		log.info("Denying bundles execution...");
-		IJVM.disableIsolates(isolateID, true, false);
-		
-		synchronized (intializedLock) {	// Enable caller to continue
-			intializedLock.notify();
-		}
-		
-		// Stop and uninstall the bundles
-		// NOTE: As the bundle Activator.stop() method is specially patched to return directly
-		// without doing anything, we can call it.
-		log.info("Stopping and uninstalling bundles...");
-		for (int i = 0; i < bundles.length; ++i) {
-			bundles[i].stop();
-			bundles[i].uninstall();
-		}
-
-		synchronized (isolatesToKill) {
-			for (int i = 0; i < bundles.length; ++i)
-				isolatesToKill.add(i, new Long(isolateID[i]));
-			
-			isolatesToKill.notifyAll();
-		}
-		
-		log.info("Refreshing framework...");
-		ServiceReference pkgAdminRef = context.getServiceReference("org.osgi.service.packageadmin.PackageAdmin");
-		PackageAdmin pkgAdmin = (PackageAdmin)context.getService(pkgAdminRef);
-		pkgAdmin.refreshPackages(bundles);
-	}
-	
-	public void frameworkEvent(FrameworkEvent event)
-	{
-		if (event.getType() != FrameworkEvent.PACKAGES_REFRESHED) return;
-
-		log.info("Framework refreshed.");
-		
-		long[] isolateID = null;
-		
-		synchronized (isolatesToKill) {
-			int isolateCount = isolatesToKill.size();
-			if (isolateCount > 0) {
-				isolateID = new long[isolateCount];
-				for (int i = 0; i < isolateCount; ++i)
-					isolateID[i] = ((Long)isolatesToKill.get(i)).longValue();
-				
-				isolatesToKill.clear();
-				isolatesToKill.notifyAll();
-			}
-		}
-		
-		if (isolateID == null) return;
-
-		log.info("Resetting isolate references...");
-		IJVM.disableIsolates(isolateID, true, true);
-	}
-}

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/isolatemanager/IsolateManager.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/isolatemanager/IsolateManager.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/isolatemanager/IsolateManager.java (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/isolatemanager/IsolateManager.java (removed)
@@ -1,11 +0,0 @@
-package ijvm.isolate.isolatemanager;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-
-public interface IsolateManager
-{
-	public void killBundles(Bundle[] bundles) throws Exception;
-	public void killBundles(String bundleName1, String bundleName2) throws Exception;
-	public void killBundle(String bundleName) throws Exception;
-}

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/util/IsolateLogger.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/util/IsolateLogger.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/util/IsolateLogger.java (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/util/IsolateLogger.java (removed)
@@ -1,47 +0,0 @@
-package ijvm.isolate.util;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Handler;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
-
-public class IsolateLogger
-	extends java.util.logging.Formatter
-{
-	public static Logger createLogger(String className)
-	{
-		Logger log = Logger.getAnonymousLogger();
-		
-		Handler logConsoleHandler = new ConsoleHandler();
-		logConsoleHandler.setFormatter(new IsolateLogger());
-		log.addHandler(logConsoleHandler);
-		
-		log.setUseParentHandlers(false);
-		log.setLevel(Level.INFO);
-		return log;
-	}
-	
-	public String format(LogRecord record)
-	{
-		Calendar cal = GregorianCalendar.getInstance();
-		cal.setTime(new Date(record.getMillis()));
-		String logTime = cal.get(Calendar.HOUR_OF_DAY) + ":" +
-			cal.get(Calendar.MINUTE) + ":" +
-			cal.get(Calendar.SECOND) + "." +
-			cal.get(Calendar.MILLISECOND);
-		
-		StringBuffer str = new StringBuffer(256);
-		str.append(record.getLevel().getName() +
-			"[" + logTime +
-			" @ " + Integer.toHexString(record.getThreadID()) + " " +
-			record.getSourceClassName() + "." + record.getSourceMethodName() + "] " +
-			record.getMessage() + "\n"
-			);
-		
-		return str.toString();
-	}
-}

Removed: vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/vm/IJVM.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/vm/IJVM.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/vm/IJVM.java (original)
+++ vmkit/trunk/tests/ijvm.isolate.IsolateManager/src/ijvm/isolate/vm/IJVM.java (removed)
@@ -1,9 +0,0 @@
-package ijvm.isolate.vm;
-
-import java.util.ArrayList;
-
-public class IJVM
-{
-	public static native int getObjectIsolateID(Object object);
-	public static native void disableIsolates(long[] isolateID, boolean denyIsolateExecution, boolean resetIsolateReferences);
-}

Removed: vmkit/trunk/tests/ijvm.tests.StaticClient/.classpath
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticClient/.classpath?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticClient/.classpath (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticClient/.classpath (removed)
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Removed: vmkit/trunk/tests/ijvm.tests.StaticClient/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticClient/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticClient/.project (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticClient/.project (removed)
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm.tests.StaticClient</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>

Removed: vmkit/trunk/tests/ijvm.tests.StaticClient/META-INF/MANIFEST.MF
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticClient/META-INF/MANIFEST.MF?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticClient/META-INF/MANIFEST.MF (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticClient/META-INF/MANIFEST.MF (removed)
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: StaticClient
-Bundle-SymbolicName: ijvm.tests.StaticClient
-Bundle-Version: 1.0.0
-Bundle-Activator: ijvm.tests.staticclient.Activator
-Import-Package: ijvm.tests.staticexposer,
- org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker;version="1.0.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4

Removed: vmkit/trunk/tests/ijvm.tests.StaticClient/build.properties
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticClient/build.properties?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticClient/build.properties (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticClient/build.properties (removed)
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .

Removed: vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/logging/InlineFormatter.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/logging/InlineFormatter.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/logging/InlineFormatter.java (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/logging/InlineFormatter.java (removed)
@@ -1,41 +0,0 @@
-package ijvm.tests.logging;
-
-import java.util.*;
-import java.util.logging.*;
-
-public class InlineFormatter
-	extends java.util.logging.Formatter
-{
-	public static Logger createLogger(String className)
-	{
-		Logger log = Logger.getAnonymousLogger();
-		
-		Handler logConsoleHandler = new ConsoleHandler();
-		logConsoleHandler.setFormatter(new InlineFormatter());
-		log.addHandler(logConsoleHandler);
-		
-		log.setUseParentHandlers(false);
-		log.setLevel(Level.INFO);
-		return log;
-	}
-	
-	public String format(LogRecord record)
-	{
-		Calendar cal = GregorianCalendar.getInstance();
-		cal.setTime(new Date(record.getMillis()));
-		String logTime = cal.get(Calendar.HOUR_OF_DAY) + ":" +
-			cal.get(Calendar.MINUTE) + ":" +
-			cal.get(Calendar.SECOND) + "." +
-			cal.get(Calendar.MILLISECOND);
-		
-		StringBuffer str = new StringBuffer(256);
-		str.append(record.getLevel().getName() +
-			"[" + logTime +
-			" @ " + Integer.toHexString(record.getThreadID()) + " " +
-			record.getSourceClassName() + "." + record.getSourceMethodName() + "] " +
-			record.getMessage() + "\n"
-			);
-		
-		return str.toString();
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/staticclient/Activator.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/staticclient/Activator.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/staticclient/Activator.java (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticClient/src/ijvm/tests/staticclient/Activator.java (removed)
@@ -1,93 +0,0 @@
-package ijvm.tests.staticclient;
-
-import java.util.logging.Logger;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-import ijvm.tests.logging.InlineFormatter;
-import ijvm.tests.staticexposer.StaticExposer;
-
-
-public class Activator
-	implements BundleActivator, Runnable
-{
-	private StaticExposer service;
-	private ServiceTracker serviceTracker;
-	private Thread thread;
-	boolean stopThread;
-	Logger log;
-	
-	public void start(BundleContext context) throws Exception
-	{
-		log = InlineFormatter.createLogger(Activator.class.getName());
-		log.info("STARTING");
-		
-		serviceTracker = new ServiceTracker(context, StaticExposer.class.getName(), null);
-		serviceTracker.open();
-		service = (StaticExposer)serviceTracker.getService();
-
-		stopThread = false;
-		thread = new Thread(this, "Sync Client");
-		thread.start();
-	}
-	
-	public void stop(BundleContext context) throws Exception
-	{
-		stopThread = true;
-		thread.join();
-		thread = null;
-		
-		serviceTracker.close();
-		serviceTracker = null;
-		
-		log.info("DONE");
-		log = null;
-	}
-	
-	public void run()
-	{
-		try {
-			while (!stopThread) {
-				log.info(">>|");
-//				sync1();
-				sync2();
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void sync1() throws InterruptedException
-	{
-//		synchronized(service.theStaticString) {
-		synchronized(service.getStaticString()) {
-			log.info("|*|");
-			Thread.sleep(1000);
-			log.info("|>>");
-		}				
-	}
-
-	private void sync2() throws InterruptedException
-	{
-		synchronized(service.getStaticInteger()) {
-			int r = xync3();
-			int m = xync4();
-			
-			log.info("|*| r = " + r + ", m = " + m);
-			Thread.sleep(1000);
-			log.info("|>>");
-		}				
-	}
-	
-	private int xync3()
-	{
-		return service.getStaticInteger().intValue();
-	}
-	
-	private int xync4()
-	{
-		return service.theStaticInteger.intValue();
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.StaticExposer/.classpath
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticExposer/.classpath?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticExposer/.classpath (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticExposer/.classpath (removed)
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Removed: vmkit/trunk/tests/ijvm.tests.StaticExposer/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticExposer/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticExposer/.project (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticExposer/.project (removed)
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm.tests.StaticExposer</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>

Removed: vmkit/trunk/tests/ijvm.tests.StaticExposer/META-INF/MANIFEST.MF
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticExposer/META-INF/MANIFEST.MF?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticExposer/META-INF/MANIFEST.MF (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticExposer/META-INF/MANIFEST.MF (removed)
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: StaticExposer
-Bundle-SymbolicName: ijvm.tests.StaticExposer
-Bundle-Version: 1.0.0
-Bundle-Activator: ijvm.tests.staticexposer.Activator
-Import-Package: org.osgi.framework;version="1.3.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Export-Package: ijvm.tests.staticexposer;uses:="org.osgi.framework"

Removed: vmkit/trunk/tests/ijvm.tests.StaticExposer/build.properties
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticExposer/build.properties?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticExposer/build.properties (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticExposer/build.properties (removed)
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .

Removed: vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/Activator.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/Activator.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/Activator.java (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/Activator.java (removed)
@@ -1,25 +0,0 @@
-package ijvm.tests.staticexposer;
-
-import java.util.Hashtable;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator
-	implements BundleActivator
-{
-	private StaticExposer service;
-	
-	public void start(BundleContext context) throws Exception
-	{
-		service = new StaticExposerImpl();
-		
-		Hashtable properties = new Hashtable();
-		context.registerService(StaticExposer.class.getName(), service, properties);
-	}
-
-	public void stop(BundleContext context) throws Exception
-	{
-		service = null;
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposer.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposer.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposer.java (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposer.java (removed)
@@ -1,10 +0,0 @@
-package ijvm.tests.staticexposer;
-
-public interface StaticExposer
-{
-	public String theStaticString = "Hello World Two";
-	public Integer theStaticInteger = new Integer((int)(Math.random() * 1000.0));
-	
-	public String getStaticString();
-	public Integer getStaticInteger();
-}

Removed: vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposerImpl.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposerImpl.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposerImpl.java (original)
+++ vmkit/trunk/tests/ijvm.tests.StaticExposer/src/ijvm/tests/staticexposer/StaticExposerImpl.java (removed)
@@ -1,15 +0,0 @@
-package ijvm.tests.staticexposer;
-
-public class StaticExposerImpl
-	implements StaticExposer
-{
-	public String getStaticString()
-	{
-		return theStaticString;
-	}
-
-	public Integer getStaticInteger()
-	{
-		return theStaticInteger;
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.loopClient/.classpath
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.loopClient/.classpath?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.loopClient/.classpath (original)
+++ vmkit/trunk/tests/ijvm.tests.loopClient/.classpath (removed)
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Removed: vmkit/trunk/tests/ijvm.tests.loopClient/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.loopClient/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.loopClient/.project (original)
+++ vmkit/trunk/tests/ijvm.tests.loopClient/.project (removed)
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm.tests.loopClient</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>

Removed: vmkit/trunk/tests/ijvm.tests.loopClient/META-INF/MANIFEST.MF
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.loopClient/META-INF/MANIFEST.MF?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.loopClient/META-INF/MANIFEST.MF (original)
+++ vmkit/trunk/tests/ijvm.tests.loopClient/META-INF/MANIFEST.MF (removed)
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: LoopClient
-Bundle-SymbolicName: ijvm.tests.loopClient
-Bundle-Version: 1.0.0
-Bundle-Activator: ijvm.tests.loopclient.Activator
-Import-Package: ijvm.tests.tier,
- org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker;version="1.0.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4

Removed: vmkit/trunk/tests/ijvm.tests.loopClient/build.properties
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.loopClient/build.properties?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.loopClient/build.properties (original)
+++ vmkit/trunk/tests/ijvm.tests.loopClient/build.properties (removed)
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .

Removed: vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/logging/InlineFormatter.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/logging/InlineFormatter.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/logging/InlineFormatter.java (original)
+++ vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/logging/InlineFormatter.java (removed)
@@ -1,41 +0,0 @@
-package ijvm.tests.logging;
-
-import java.util.*;
-import java.util.logging.*;
-
-public class InlineFormatter
-	extends java.util.logging.Formatter
-{
-	public static Logger createLogger(String className)
-	{
-		Logger log = Logger.getAnonymousLogger();
-		
-		Handler logConsoleHandler = new ConsoleHandler();
-		logConsoleHandler.setFormatter(new InlineFormatter());
-		log.addHandler(logConsoleHandler);
-		
-		log.setUseParentHandlers(false);
-		log.setLevel(Level.INFO);
-		return log;
-	}
-	
-	public String format(LogRecord record)
-	{
-		Calendar cal = GregorianCalendar.getInstance();
-		cal.setTime(new Date(record.getMillis()));
-		String logTime = cal.get(Calendar.HOUR_OF_DAY) + ":" +
-			cal.get(Calendar.MINUTE) + ":" +
-			cal.get(Calendar.SECOND) + "." +
-			cal.get(Calendar.MILLISECOND);
-		
-		StringBuffer str = new StringBuffer(256);
-		str.append(record.getLevel().getName() +
-			"[" + logTime +
-			" @ " + Integer.toHexString(record.getThreadID()) + " " +
-			record.getSourceClassName() + "." + record.getSourceMethodName() + "] " +
-			record.getMessage() + "\n"
-			);
-		
-		return str.toString();
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/loopclient/Activator.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/loopclient/Activator.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/loopclient/Activator.java (original)
+++ vmkit/trunk/tests/ijvm.tests.loopClient/src/ijvm/tests/loopclient/Activator.java (removed)
@@ -1,101 +0,0 @@
-package ijvm.tests.loopclient;
-
-import java.util.ArrayList;
-import java.util.logging.Logger;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceListener;
-import org.osgi.util.tracker.ServiceTracker;
-
-import ijvm.tests.logging.InlineFormatter;
-import ijvm.tests.tier.TierService;
-import ijvm.tests.tier.Utility;
-
-public class Activator
-	implements BundleActivator, ServiceListener, Runnable
-{
-	private BundleContext context;
-	private Logger log;
-	
-	private ServiceTracker serviceTracker;
-	private TierService service;
-	
-	private Thread thread;
-	private ArrayList utilArray;
-
-	public void start(BundleContext context) throws Exception
-	{
-		this.context = context;
-		log = InlineFormatter.createLogger(Activator.class.getName());
-		log.info("STARTING");
-		
-		serviceTracker = new ServiceTracker(context, TierService.class.getName(), null);
-		serviceTracker.open();
-		service = (TierService)serviceTracker.getService();
-		context.addServiceListener(this, "(objectclass=" + TierService.class.getName() + ")");
-		
-		thread = new Thread(this, "Loop Client");
-		thread.start();
-	}
-
-	public void stop(BundleContext bundleContext) throws Exception
-	{
-		log.info("Stopping...");
-
-		this.context = null;
-		
-		thread.join();
-		thread = null;
-
-		serviceTracker.close();
-		serviceTracker = null;
-		service = null;
-
-		log.info("DONE");
-		log = null;
-	}
-
-	public void serviceChanged(ServiceEvent event)
-	{
-		Object serviceObj = context.getService(event.getServiceReference());
-		
-		switch(event.getType()) {
-		case ServiceEvent.REGISTERED:
-			if (TierService.class.isInstance(serviceObj))
-				service = (TierService)serviceObj;
-			break;
-			
-		case ServiceEvent.UNREGISTERING:
-			if (TierService.class.isInstance(serviceObj))
-				service = null;
-			break;
-		}
-	}
-
-	public void run()
-	{
-		log.info("Loop client running...");
-		
-		utilArray = new ArrayList(1);
-		utilArray.add(
-			service.getSomething());
-		
-		try {			
-			service.doSomething();
-		} catch (Exception e) {
-			log.info(Activator.class.getName() + ".run");
-			e.printStackTrace();
-		}
-
-		try {
-			((Utility)utilArray.get(0)).getSomething();
-		} catch (Exception e) {
-			log.info(Activator.class.getName() + ".run");
-			e.printStackTrace();
-		}
-
-		log.info("Loop client done.");
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.looper/.classpath
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/.classpath?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/.classpath (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/.classpath (removed)
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Removed: vmkit/trunk/tests/ijvm.tests.looper/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/.project (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/.project (removed)
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm.tests.looper</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>

Removed: vmkit/trunk/tests/ijvm.tests.looper/META-INF/MANIFEST.MF
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/META-INF/MANIFEST.MF?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/META-INF/MANIFEST.MF (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/META-INF/MANIFEST.MF (removed)
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Looper
-Bundle-SymbolicName: ijvm.tests.looper
-Bundle-Version: 1.0.0
-Bundle-Activator: ijvm.tests.looper.Activator
-Import-Package: org.osgi.framework;version="1.3.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Export-Package: ijvm.tests.looper

Removed: vmkit/trunk/tests/ijvm.tests.looper/build.properties
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/build.properties?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/build.properties (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/build.properties (removed)
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .

Removed: vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/logging/InlineFormatter.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/logging/InlineFormatter.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/logging/InlineFormatter.java (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/logging/InlineFormatter.java (removed)
@@ -1,41 +0,0 @@
-package ijvm.tests.logging;
-
-import java.util.*;
-import java.util.logging.*;
-
-public class InlineFormatter
-	extends java.util.logging.Formatter
-{
-	public static Logger createLogger(String className)
-	{
-		Logger log = Logger.getAnonymousLogger();
-		
-		Handler logConsoleHandler = new ConsoleHandler();
-		logConsoleHandler.setFormatter(new InlineFormatter());
-		log.addHandler(logConsoleHandler);
-		
-		log.setUseParentHandlers(false);
-		log.setLevel(Level.INFO);
-		return log;
-	}
-	
-	public String format(LogRecord record)
-	{
-		Calendar cal = GregorianCalendar.getInstance();
-		cal.setTime(new Date(record.getMillis()));
-		String logTime = cal.get(Calendar.HOUR_OF_DAY) + ":" +
-			cal.get(Calendar.MINUTE) + ":" +
-			cal.get(Calendar.SECOND) + "." +
-			cal.get(Calendar.MILLISECOND);
-		
-		StringBuffer str = new StringBuffer(256);
-		str.append(record.getLevel().getName() +
-			"[" + logTime +
-			" @ " + Integer.toHexString(record.getThreadID()) + " " +
-			record.getSourceClassName() + "." + record.getSourceMethodName() + "] " +
-			record.getMessage() + "\n"
-			);
-		
-		return str.toString();
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/Activator.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/Activator.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/Activator.java (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/Activator.java (removed)
@@ -1,39 +0,0 @@
-package ijvm.tests.looper;
-
-import ijvm.tests.logging.InlineFormatter;
-
-import java.util.Hashtable;
-import java.util.logging.Logger;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-
-
-public class Activator
-	implements BundleActivator
-{
-	private Logger log;
-	private LoopController service;
-	
-	public void start(BundleContext context) throws Exception
-	{
-		log = InlineFormatter.createLogger(Activator.class.getName());
-		log.info("STARTING");
-
-		service = new LoopControllerImpl(log);
-		
-		context.registerService(LoopController.class.getName(), service, new Hashtable());
-	}
-	
-	public void stop(BundleContext context) throws Exception
-	{
-		log.info("Stopping...");
-
-		service.cancelLoop();
-		service = null;
-		
-		log.info("DONE");
-		log = null;
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/CallBack.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/CallBack.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/CallBack.java (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/CallBack.java (removed)
@@ -1,6 +0,0 @@
-package ijvm.tests.looper;
-
-public interface CallBack
-{
-	public void callBack() throws Exception;
-}

Removed: vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopController.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopController.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopController.java (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopController.java (removed)
@@ -1,9 +0,0 @@
-package ijvm.tests.looper;
-
-public interface LoopController
-{
-	public void loop() throws Exception;
-	public void callMeBack(CallBack cb) throws Exception;
-	public void cancelLoop();
-	public void keepThis(Object o);
-}

Removed: vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopControllerImpl.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopControllerImpl.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopControllerImpl.java (original)
+++ vmkit/trunk/tests/ijvm.tests.looper/src/ijvm/tests/looper/LoopControllerImpl.java (removed)
@@ -1,50 +0,0 @@
-package ijvm.tests.looper;
-
-import java.util.logging.Logger;
-
-public class LoopControllerImpl
-	implements LoopController
-{
-	protected boolean cancelLoop;
-	private Logger log;
-	private Object keptObj;
-	
-	public LoopControllerImpl(Logger log)
-	{
-		this.log = log;
-	}
-
-	public void loop() throws Exception
-	{
-		log.info("Start looping");
-		
-		cancelLoop = false;
-		while (!cancelLoop) {
-			log.info("Still looping...");
-			Thread.sleep(10000);
-		}
-		
-		log.info("Done looping");
-	}
-
-	public void cancelLoop()
-	{
-		log.info("Cancel looping");
-		cancelLoop = true;
-	}
-
-	public void callMeBack(CallBack cb) throws Exception
-	{
-		try {
-			cb.callBack();
-		} catch (Exception e) {
-			log.info(LoopControllerImpl.class.getName() + ".callMeBack");
-			e.printStackTrace();
-		}
-	}
-
-	public void keepThis(Object o)
-	{
-		keptObj = o;
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.tier/.classpath
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/.classpath?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/.classpath (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/.classpath (removed)
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Removed: vmkit/trunk/tests/ijvm.tests.tier/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/.project (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/.project (removed)
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm.tests.tier</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>

Removed: vmkit/trunk/tests/ijvm.tests.tier/META-INF/MANIFEST.MF
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/META-INF/MANIFEST.MF?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/META-INF/MANIFEST.MF (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/META-INF/MANIFEST.MF (removed)
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Tier
-Bundle-SymbolicName: ijvm.tests.tier
-Bundle-Version: 1.0.0
-Bundle-Activator: ijvm.tests.tier.Activator
-Import-Package: org.osgi.framework;version="1.3.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Export-Package: ijvm.tests.tier

Removed: vmkit/trunk/tests/ijvm.tests.tier/build.properties
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/build.properties?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/build.properties (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/build.properties (removed)
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .

Removed: vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/logging/InlineFormatter.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/logging/InlineFormatter.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/logging/InlineFormatter.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/logging/InlineFormatter.java (removed)
@@ -1,41 +0,0 @@
-package ijvm.tests.logging;
-
-import java.util.*;
-import java.util.logging.*;
-
-public class InlineFormatter
-	extends java.util.logging.Formatter
-{
-	public static Logger createLogger(String className)
-	{
-		Logger log = Logger.getAnonymousLogger();
-		
-		Handler logConsoleHandler = new ConsoleHandler();
-		logConsoleHandler.setFormatter(new InlineFormatter());
-		log.addHandler(logConsoleHandler);
-		
-		log.setUseParentHandlers(false);
-		log.setLevel(Level.INFO);
-		return log;
-	}
-	
-	public String format(LogRecord record)
-	{
-		Calendar cal = GregorianCalendar.getInstance();
-		cal.setTime(new Date(record.getMillis()));
-		String logTime = cal.get(Calendar.HOUR_OF_DAY) + ":" +
-			cal.get(Calendar.MINUTE) + ":" +
-			cal.get(Calendar.SECOND) + "." +
-			cal.get(Calendar.MILLISECOND);
-		
-		StringBuffer str = new StringBuffer(256);
-		str.append(record.getLevel().getName() +
-			"[" + logTime +
-			" @ " + Integer.toHexString(record.getThreadID()) + " " +
-			record.getSourceClassName() + "." + record.getSourceMethodName() + "] " +
-			record.getMessage() + "\n"
-			);
-		
-		return str.toString();
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Activator.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Activator.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Activator.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Activator.java (removed)
@@ -1,26 +0,0 @@
-package ijvm.tests.tier;
-
-import ijvm.tests.logging.InlineFormatter;
-
-import java.util.logging.Logger;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator
-	implements BundleActivator
-{
-	private Logger log;
-
-	public void start(BundleContext bundleContext) throws Exception
-	{
-		log = InlineFormatter.createLogger(Activator.class.getName());
-		log.info("STARTING");
-	}
-
-	public void stop(BundleContext bundleContext) throws Exception
-	{
-		log.info("DONE");
-		log = null;
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/TierService.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/TierService.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/TierService.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/TierService.java (removed)
@@ -1,7 +0,0 @@
-package ijvm.tests.tier;
-
-public interface TierService
-{
-	public void doSomething() throws Exception;
-	public Utility getSomething();
-}

Removed: vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Utility.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Utility.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Utility.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tier/src/ijvm/tests/tier/Utility.java (removed)
@@ -1,7 +0,0 @@
-package ijvm.tests.tier;
-
-public interface Utility
-{
-	public int getSomething();
-	public void setSomething(int x);
-}

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/.classpath
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/.classpath?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/.classpath (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/.classpath (removed)
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/.project
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/.project?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/.project (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/.project (removed)
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ijvm.tests.tierImpl</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/META-INF/MANIFEST.MF
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/META-INF/MANIFEST.MF?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/META-INF/MANIFEST.MF (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/META-INF/MANIFEST.MF (removed)
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: TierImpl
-Bundle-SymbolicName: ijvm.tests.tierImpl
-Bundle-Version: 1.0.0
-Bundle-Activator: ijvm.tests.tierImpl.Activator
-Import-Package: ijvm.tests.looper,
- ijvm.tests.tier,
- org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker;version="1.0.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/build.properties
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/build.properties?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/build.properties (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/build.properties (removed)
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/logging/InlineFormatter.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/logging/InlineFormatter.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/logging/InlineFormatter.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/logging/InlineFormatter.java (removed)
@@ -1,41 +0,0 @@
-package ijvm.tests.logging;
-
-import java.util.*;
-import java.util.logging.*;
-
-public class InlineFormatter
-	extends java.util.logging.Formatter
-{
-	public static Logger createLogger(String className)
-	{
-		Logger log = Logger.getAnonymousLogger();
-		
-		Handler logConsoleHandler = new ConsoleHandler();
-		logConsoleHandler.setFormatter(new InlineFormatter());
-		log.addHandler(logConsoleHandler);
-		
-		log.setUseParentHandlers(false);
-		log.setLevel(Level.INFO);
-		return log;
-	}
-	
-	public String format(LogRecord record)
-	{
-		Calendar cal = GregorianCalendar.getInstance();
-		cal.setTime(new Date(record.getMillis()));
-		String logTime = cal.get(Calendar.HOUR_OF_DAY) + ":" +
-			cal.get(Calendar.MINUTE) + ":" +
-			cal.get(Calendar.SECOND) + "." +
-			cal.get(Calendar.MILLISECOND);
-		
-		StringBuffer str = new StringBuffer(256);
-		str.append(record.getLevel().getName() +
-			"[" + logTime +
-			" @ " + Integer.toHexString(record.getThreadID()) + " " +
-			record.getSourceClassName() + "." + record.getSourceMethodName() + "] " +
-			record.getMessage() + "\n"
-			);
-		
-		return str.toString();
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/Activator.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/Activator.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/Activator.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/Activator.java (removed)
@@ -1,117 +0,0 @@
-package ijvm.tests.tierImpl;
-
-import ijvm.tests.logging.InlineFormatter;
-import ijvm.tests.looper.LoopController;
-import ijvm.tests.tier.TierService;
-
-import java.util.Hashtable;
-import java.util.logging.Logger;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceListener;
-import org.osgi.util.tracker.ServiceTracker;
-
-
-public class Activator
-	implements BundleActivator, ServiceListener, Runnable
-{
-	private BundleContext context;
-	private Logger log;
-	
-	private ServiceTracker loopControllerTracker;
-	private LoopController loopControllerService;
-	
-	private TierServiceImpl serviceImpl;
-	
-	private Thread thread;
-	private boolean stopThread;
-
-	
-	public void start(BundleContext context) throws Exception
-	{
-		this.context = context;
-		log = InlineFormatter.createLogger(Activator.class.getName());
-		log.info("STARTING");
-
-		loopControllerTracker = new ServiceTracker(context, LoopController.class.getName(), null);
-		loopControllerTracker.open();
-		loopControllerService = (LoopController)loopControllerTracker.getService();
-		context.addServiceListener(this, "(objectclass=" + LoopController.class.getName() + ")");
-
-		serviceImpl = new TierServiceImpl(log);
-		serviceImpl.setLoopControllerService(loopControllerService);
-		
-		context.registerService(TierService.class.getName(), serviceImpl, new Hashtable());
-
-//		thread = new Thread(this, "Tier worker");
-//		stopThread = false;
-//		thread.start();
-	}
-
-	public void stop(BundleContext bundleContext) throws Exception
-	{
-		log.info("Stopping...");
-
-		this.context = null;
-		
-		if (thread != null) {
-			stopThread = true;
-			thread.join();
-			thread = null;
-		}
-		
-		serviceImpl = null;
-
-		loopControllerTracker.close();
-		loopControllerTracker = null;
-		loopControllerService = null;
-
-		log.info("DONE");
-		log = null;
-	}
-
-	public void serviceChanged(ServiceEvent event)
-	{
-		Object serviceObj = context.getService(event.getServiceReference());
-		
-		switch(event.getType()) {
-		case ServiceEvent.REGISTERED:
-			if (LoopController.class.isInstance(serviceObj))
-				serviceImpl.setLoopControllerService((LoopController)serviceObj);
-			break;
-			
-		case ServiceEvent.UNREGISTERING:
-			if (LoopController.class.isInstance(serviceObj))
-				serviceImpl.setLoopControllerService(null);
-			break;
-		}
-	}
-
-	public void run()
-	{
-		log.info("Tier thread running...");
-		
-//		for (;;) {}
-		
-		try {
-/*
-			boolean done;
-			for (done = false; !done; ) {
-				done = false;
-			}
-			
-			Thread.sleep(1000);
-*/
-			while (!stopThread) {
-				Thread.sleep(1000);
-			}
-		} catch (InterruptedException e) {
-			log.info(Activator.class.getName() + ".run");
-			e.printStackTrace();
-		}
-
-		log.info("Tier thread done.");
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/TierServiceImpl.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/TierServiceImpl.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/TierServiceImpl.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/TierServiceImpl.java (removed)
@@ -1,77 +0,0 @@
-package ijvm.tests.tierImpl;
-
-import ijvm.tests.looper.CallBack;
-import ijvm.tests.looper.LoopController;
-import ijvm.tests.tier.TierService;
-import ijvm.tests.tier.Utility;
-
-import java.util.ArrayList;
-import java.util.logging.Logger;
-
-public class TierServiceImpl
-	implements TierService, CallBack
-{
-	private Logger log;
-	private LoopController loopControllerService;
-	
-	TierServiceImpl(Logger log)
-	{
-		this.loopControllerService = null;
-		this.log = log;
-	}
-	
-	public void setLoopControllerService(LoopController loopControllerService)
-	{
-		this.loopControllerService = loopControllerService;
-	}
-
-	public void doSomething() throws Exception
-	{
-		log.info("Now doing something");
-		
-		try {
-			thenAnotherThing();
-		} catch (Exception e) {
-			log.info(TierServiceImpl.class.getName() + ".doSomething");
-			e.printStackTrace();
-		}
-		
-		log.info("Done something");
-	}
-	
-	public void thenAnotherThing() throws Exception
-	{
-		try {
-			beforeLeaving();
-		} catch (Exception e) {
-			log.info(TierServiceImpl.class.getName() + ".thenAnotherThing");
-			e.printStackTrace();
-		}
-	}
-	
-	public void beforeLeaving() throws Exception
-	{
-		try {
-			loopControllerService.callMeBack(this);
-		} catch (Exception e) {
-			log.info(TierServiceImpl.class.getName() + ".beforeLeaving");
-			e.printStackTrace();
-		}
-	}
-
-	public void callBack() throws Exception
-	{
-		try {
-			loopControllerService.keepThis(this);
-			loopControllerService.loop();
-		} catch (Exception e) {
-			log.info(TierServiceImpl.class.getName() + ".callBack");
-			e.printStackTrace();
-		}
-	}
-
-	public Utility getSomething()
-	{
-		return new UtilityImpl(22);
-	}
-}

Removed: vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/UtilityImpl.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/UtilityImpl.java?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/UtilityImpl.java (original)
+++ vmkit/trunk/tests/ijvm.tests.tierImpl/src/ijvm/tests/tierImpl/UtilityImpl.java (removed)
@@ -1,30 +0,0 @@
-package ijvm.tests.tierImpl;
-
-import ijvm.tests.tier.Utility;
-
-public class UtilityImpl
-	implements Utility
-{
-	int something;
-	
-	UtilityImpl(int x)
-	{
-		something = x;
-	}
-	
-	protected void finalize() throws Throwable
-	{
-		System.out.println("UtilityImpl.finalize()");
-		something = -1;
-	}
-	
-	public int getSomething()
-	{
-		return something;
-	}
-	
-	public void setSomething(int x)
-	{
-		something = x;
-	}
-}

Removed: vmkit/trunk/tests/minimal.xargs
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/minimal.xargs?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/minimal.xargs (original)
+++ vmkit/trunk/tests/minimal.xargs (removed)
@@ -1,28 +0,0 @@
--Dorg.knopflerfish.framework.main.verbosity=0
--Dorg.knopflerfish.gosg.jars=file:jars/
--Forg.knopflerfish.framework.debug.errors=true
--Forg.knopflerfish.framework.debug.packages=false
--Forg.knopflerfish.framework.debug.classloader=false
--Forg.osgi.framework.system.packages.extra=
-
--Forg.knopflerfish.startlevel.use=true
-
--init
-
--install log/log_api-3.1.2.jar
--install console/console_api-3.0.3.jar
--istart  cm/cm_api-3.0.4.jar
--istart  log/log-3.1.2.jar
--istart  console/console-3.0.3.jar
--istart  consoletty/consoletty-3.0.1.jar
--istart  frameworkcommands/frameworkcommands-3.0.4.jar
--istart  logcommands/logcommands-3.1.1.jar
--istart  useradmin/useradmin_api-3.0.2.jar
-
--istart  file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.isolate.IsolateManager_1.0.0.jar
--istart  file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.looper_1.0.0.jar
--istart  file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.tier_1.0.0.jar
--istart  file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.tierImpl_1.0.0.jar
--istart  file:///home/koutheir/PhD/VMKit/ijvm/tests/plugins/ijvm.tests.loopClient_1.0.0.jar
-
--launch

Removed: vmkit/trunk/tests/sun-jvm-log.txt
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tests/sun-jvm-log.txt?rev=180291&view=auto
==============================================================================
--- vmkit/trunk/tests/sun-jvm-log.txt (original)
+++ vmkit/trunk/tests/sun-jvm-log.txt (removed)
@@ -1,58 +0,0 @@
-Sun JVM
-
-Direct access to static string.
-
-INFO[2:24:52.372 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:24:52.373 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:24:52.378 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:24:53.373 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:24:53.373 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:24:53.373 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:24:54.374 @ c vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:24:54.374 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:24:54.374 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:24:55.374 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:24:55.375 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:24:55.375 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:24:56.375 @ c vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:24:56.375 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:24:56.375 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:24:57.376 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:24:57.376 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:24:57.376 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-
-Access to static string through a getter function.
-
-INFO[2:45:5.298 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:5.308 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:5.309 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:6.308 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:6.308 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:6.308 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:7.309 @ c vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:7.309 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:7.309 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:8.310 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:8.310 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:8.310 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:9.310 @ c vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:9.310 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:9.310 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:10.311 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:10.311 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:10.311 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:11.312 @ c vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:11.312 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:11.312 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:12.312 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:12.313 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:12.313 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:13.313 @ c vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:13.313 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:13.313 @ b vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:14.314 @ b vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:14.314 @ b vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:14.314 @ c vmkit.tests.staticstringclient.Activator.sync] |*|
-INFO[2:45:15.314 @ c vmkit.tests.staticstringclient.Activator.sync] |>>
-INFO[2:45:15.315 @ c vmkit.tests.staticstringclient.Activator.run] >>|
-INFO[2:45:15.315 @ b vmkit.tests.staticstringclient.Activator.sync] |*|

Modified: vmkit/trunk/tools/precompiler/trainer/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/precompiler/trainer/Makefile?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/tools/precompiler/trainer/Makefile (original)
+++ vmkit/trunk/tools/precompiler/trainer/Makefile Thu Apr 25 11:49:31 2013
@@ -33,7 +33,7 @@ generated.bc: $(PRECOMPILER) HelloWorld.
 Precompiled.bc: HelloWorld.class $(LibDir)/StaticGCPass$(SHLIBEXT) $(LibDir)/StaticGCPrinter$(SHLIBEXT) generated.bc
 	$(Echo) "Building precompiled bootstrap code"
 	$(Verb) $(MKDIR) $(ObjDir)
-	$(Verb) $(LLC) -disable-branch-fold -disable-cfi -disable-debug-info-print -disable-fp-elim $(PRECOMPILER_FLAGS) -load=$(LibDir)/StaticGCPrinter$(SHLIBEXT) generated.bc -o $(ObjDir)/Precompiled.s
+	$(Verb) $(LLC) -disable-branch-fold -disable-cfi -disable-debug-info-print -disable-fp-elim -O3 -load=$(LibDir)/StaticGCPrinter$(SHLIBEXT) generated.bc -o $(ObjDir)/Precompiled.s
 	$(Verb) $(CC) -c $(ObjDir)/Precompiled.s -o $(ObjDir)/Precompiled.o
 	$(Verb) $(Archive) $(LibDir)/libPrecompiled.a $(ObjDir)/Precompiled.o
 	$(Verb) $(Ranlib) $(LibDir)/libPrecompiled.a

Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=180292&r1=180291&r2=180292&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Thu Apr 25 11:49:31 2013
@@ -124,11 +124,7 @@ int main(int argc, char **argv) {
   vmkit::VmkitModule::initialise(argc, argv);
   vmkit::Collector::initialise(argc, argv);
 
-  // WARNING: This is a silly method to discover that we are compiling MMTk.
-  // Please change to anything more deterministic.
-  bool compilingMMTk = (DisableExceptions && DisableCooperativeGC && DisableStubs && AssumeCompiled);
-
-  JavaAOTCompiler* Comp = new JavaAOTCompiler("AOT", compilingMMTk);
+  JavaAOTCompiler* Comp = new JavaAOTCompiler("AOT");
 
   vmkit::BumpPtrAllocator allocator;
   JnjvmBootstrapLoader* loader = new(allocator, "Bootstrap loader")





More information about the vmkit-commits mailing list