[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