From: <dgr...@us...> - 2006-08-18 21:21:46
|
Revision: 10704 Author: dgrove-oss Date: 2006-08-18 14:21:34 -0700 (Fri, 18 Aug 2006) ViewCVS: http://svn.sourceforge.net/jikesrvm/?rev=10704&view=rev Log Message: ----------- Move NEWS, LICENSE and doc to top level (out of rvm subdir) Modified Paths: -------------- rvmroot/trunk/doc/README rvmroot/trunk/doc/userguide/installation.tex rvmroot/trunk/rvm/bin/jconfigure rvmroot/trunk/rvm/config/exp/i686-pc-linux-gnu.kaffe.clunky rvmroot/trunk/rvm/config/i686-pc-linux-gnu rvmroot/trunk/rvm/config/powerpc-ibm-aix5 rvmroot/trunk/rvm/config/powerpc-unknown-linux-gnu rvmroot/trunk/rvm/config/powerpc-unknown-osx-gnu rvmroot/trunk/rvm/config/powerpc64-ibm-aix5 rvmroot/trunk/rvm/config/powerpc64-unknown-linux-gnu rvmroot/trunk/rvm/config/x86_64-pc-linux-gnu rvmroot/trunk/rvm/src/tools/install/GNUmakefile.in Added Paths: ----------- rvmroot/trunk/LICENSE rvmroot/trunk/NEWS rvmroot/trunk/doc/ Removed Paths: ------------- rvmroot/trunk/rvm/LICENSE rvmroot/trunk/rvm/NEWS rvmroot/trunk/rvm/doc/ Copied: rvmroot/trunk/LICENSE (from rev 10696, rvmroot/trunk/rvm/LICENSE) =================================================================== --- rvmroot/trunk/LICENSE (rev 0) +++ rvmroot/trunk/LICENSE 2006-08-18 21:21:34 UTC (rev 10704) @@ -0,0 +1,254 @@ +Jikes RVM is free, open source software, distributed and freely +redistributable under the Common Public License (CPL). The CPL has +been certified by the Open Source Initiative as an open source +license. The CPL meets the Debian Free Software Guidelines. + +-------- The following is the legal text of the Common Public License --------- + + Common Public License - v 1.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF + THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + 1. DEFINITIONS + + "Contribution" means: + + a) in the case of the initial Contributor, the initial code and + documentation distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from + and are distributed by that particular Contributor. A Contribution + 'originates' from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's + behalf. Contributions do not include additions to the Program + which: (i) are separate modules of software distributed in + conjunction with the Program under their own license agreement, and + (ii) are not derivative works of the Program. + + "Contributor" means any person or entity that distributes the + Program. + + "Licensed Patents" mean patent claims licensable by a Contributor + which are necessarily infringed by the use or sale of its + Contribution alone or when combined with the Program. + + "Program" means the Contributions distributed in accordance with + this Agreement. + + "Recipient" means anyone who receives the Program under this + Agreement, including all Contributors. + + + 2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free + copyright license to reproduce, prepare derivative works of, + publicly display, publicly perform, distribute and sublicense + the Contribution of such Contributor, if any, and such + derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free + patent license under Licensed Patents to make, use, sell, offer + to sell, import and otherwise transfer the Contribution of such + Contributor, if any, in source code and object code form. This + patent license shall apply to the combination of the + Contribution and the Program if, at the time the Contribution + is added by the Contributor, such addition of the Contribution + causes such combination to be covered by the Licensed + Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se + is licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances + are provided by any Contributor that the Program does not + infringe the patent or other intellectual property rights of + any other entity. Each Contributor disclaims any liability to + Recipient for claims brought by any other entity based on + infringement of intellectual property rights or otherwise. As + a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to + secure any other intellectual property rights needed, if any. + For example, if a third party patent license is required to + allow Recipient to distribute the Program, it is Recipient's + responsibility to acquire that license before distributing the + Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to + grant the copyright license set forth in this Agreement. + + 3. REQUIREMENTS + + A Contributor may choose to distribute the Program in object code + form under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement + are offered by that Contributor alone and not by any other + party; and + + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a + reasonable manner on or through a medium customarily used for + software exchange. + + When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the + Program. + + Contributors may not remove or alter any copyright notices + contained within the Program. + + Each Contributor must identify itself as the originator of its + Contribution, if any, in a manner that reasonably allows subsequent + Recipients to identify the originator of the Contribution. + + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain + responsibilities with respect to end users, business partners and + the like. While this license is intended to facilitate the + commercial use of the Program, the Contributor who includes the + Program in a commercial product offering should do so in a manner + which does not create potential liability for other + Contributors. Therefore, if a Contributor includes the Program in a + commercial product offering, such Contributor ("Commercial + Contributor") hereby agrees to defend and indemnify every other + Contributor ("Indemnified Contributor") against any losses, damages + and costs (collectively "Losses") arising from claims, lawsuits and + other legal actions brought by a third party against the + Indemnified Contributor to the extent caused by the acts or + omissions of such Commercial Contributor in connection with its + distribution of the Program in a commercial product offering. The + obligations in this section do not apply to any claims or Losses + relating to any actual or alleged intellectual property + infringement. In order to qualify, an Indemnified Contributor + must: a) promptly notify the Commercial Contributor in writing of + such claim, and b) allow the Commercial Contributor to control, and + cooperate with the Commercial Contributor in, the defense and any + related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + + For example, a Contributor might include the Program in a + commercial product offering, Product X. That Contributor is then a + Commercial Contributor. If that Commercial Contributor then makes + performance claims, or offers warranties related to Product X, + those performance claims and warranties are such Commercial + Contributor's responsibility alone. Under this section, the + Commercial Contributor would have to defend claims against the + other Contributors related to those performance claims and + warranties, and if a court requires any other Contributor to pay + any damages as a result, the Commercial Contributor must pay those + damages. + + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS + PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, + ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each + Recipient is solely responsible for determining the appropriateness + of using and distributing the Program and assumes all risks + associated with its exercise of rights under this Agreement, + including but not limited to the risks and costs of program errors, + compliance with applicable laws, damage to or loss of data, + programs or equipment, and unavailability or interruption of + operations. + + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT + NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY + RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable + under applicable law, it shall not affect the validity or + enforceability of the remainder of the terms of this Agreement, and + without further action by the parties hereto, such provision shall + be reformed to the minimum extent necessary to make such provision + valid and enforceable. + + If Recipient institutes patent litigation against a Contributor + with respect to a patent applicable to software (including a + cross-claim or counterclaim in a lawsuit), then any patent licenses + granted by that Contributor to such Recipient under this Agreement + shall terminate as of the date such litigation is filed. In + addition, if Recipient institutes patent litigation against any + entity (including a cross-claim or counterclaim in a lawsuit) + alleging that the Program itself (excluding combinations of the + Program with other software or hardware) infringes such Recipient's + patent(s), then such Recipient's rights granted under Section 2(b) + shall terminate as of the date such litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it + fails to comply with any of the material terms or conditions of + this Agreement and does not cure such failure in a reasonable + period of time after becoming aware of such noncompliance. If all + Recipient's rights under this Agreement terminate, Recipient agrees + to cease use and distribution of the Program as soon as reasonably + practicable. However, Recipient's obligations under this Agreement + and any licenses granted by Recipient relating to the Program shall + continue and survive. + + Everyone is permitted to copy and distribute copies of this + Agreement, but in order to avoid inconsistency the Agreement is + copyrighted and may only be modified in the following manner. The + Agreement Steward reserves the right to publish new versions + (including revisions) of this Agreement from time to time. No one + other than the Agreement Steward has the right to modify this + Agreement. IBM is the initial Agreement Steward. IBM may assign + the responsibility to serve as the Agreement Steward to a suitable + separate entity. Each new version of the Agreement will be given a + distinguishing version number. The Program (including + Contributions) may always be distributed subject to the version of + the Agreement under which it was received. In addition, after a new + version of the Agreement is published, Contributor may elect to + distribute the Program (including its Contributions) under the new + version. Except as expressly stated in Sections 2(a) and 2(b) + above, Recipient receives no rights or licenses to the intellectual + property of any Contributor under this Agreement, whether + expressly, by implication, estoppel or otherwise. All rights in the + Program not expressly granted under this Agreement are reserved. + + This Agreement is governed by the laws of the State of New York and + the intellectual property laws of the United States of America. No + party to this Agreement will bring a legal action under this + Agreement more than one year after the cause of action arose. Each + party waives its rights to a jury trial in any resulting + litigation. Copied: rvmroot/trunk/NEWS (from rev 10696, rvmroot/trunk/rvm/NEWS) =================================================================== --- rvmroot/trunk/NEWS (rev 0) +++ rvmroot/trunk/NEWS 2006-08-18 21:21:34 UTC (rev 10704) @@ -0,0 +1,1139 @@ +-*-outline-*- +$Id$ + +Jikes RVM NEWS -- History of significant changes + +This file contains the release notes since Jikes RVM 2.0.0, released +on October 14, 2001, + +*Jikes RVM 2.4.5 Release Notes (released August 14, 2006) +** Highlights +*** The recommended version of GNU classpath for Jikes RVM 2.4.5 is 0.92. + GNU classpath version 0.91 will work, but Jikes RVM 2.4.5 will not + compile against versions of GNU classpath before 0.91. + +*** Classpath AWT and Swing tests now run with the Jikes RVM. We have changed + from using the portable native sync code, and addressed issues with M-to-N + threading. + +*** We can now load and run Java 1.5.0 Java class files. Support includes + building the Jikes RVM using a 1.5.0 javac compiler and running the + SPEC JBB 2005 benchmark. Includes reflection support for generic types. + +*** MMTk changes & refactors. A mark-compact collector has been added. A + number of key bugs have been fixed, both in the vm (eg baseline GC + maps), and in MMTk proper. Completed a major refactoring of + "locals" to explicitly separate per-mutator and per-collector + contexts. This generalizes away from assumptions of the current + Jikes RVM threading model. + +*** We can now load runtime and non-runtime annotations. Runtime support + is limited as Classpath is missing the base annotation definitions. + A work around is to switch on non-runtime annotation loading in the RVM. + NOTE: This requires classpath 0.91 or better. + +*** Added ability to perform boot image root scanning, and thus avoid + tracing through the boot image at each full heap GC. As a result, + we've added a third region to the bootimage; all config files must + now define BOOTIMAGE_RMAP_ADDRESS in addition to BOOTIMAGE_DATA_ADDRESS + and BOOTIMAGE_CODE_ADDRESS. + +** Bug fixes +1442437: to match Sun behavior, java.lang.Class.newInstance now passes + through exceptions instead of wrapping in InstantiationExceptions. + NOTE: This requires classpath 0.90 or better. + +1505824: Exit cleanly when the jar file given to -jar doesn't contain a valid manifest + +1494784: Intermittent build failure on IA32 due to imprecise estimation of + instruction size in code used for short forward jump optimization. + +1147554: MarkSweep double-mark: corrects performance problem in MMTk MarkSweep + code which was marking both a bit in the object and a side mark map. + +** Other Notes +*** IA32 BURS improvement for special case of COND_MOV contibuted by + Garrett Kolpin +*** Improvements to OPT_Simplifier to catch a number of additional cases. + + +*Jikes RVM 2.4.4 Release Notes (released March 15, 2006) +** Highlights +*** The recommended version of GNU classpath for Jikes RVM 2.4.3 is 0.90. + Classpath 0.18, 0.19, and 0.20 are likely to still work, but have not + been tested. + +** Bug fixes +** Other Notes +*** There is now an x86_64-pc-linux-gnu config file for build Jikes RVM. + + +*Jikes RVM 2.4.3 Release Notes (released February 24, 2006) +** Highlights +*** The recommended version of GNU classpath for Jikes RVM 2.4.3 is 0.20. + Classpath 0.19 and 0.18 are likely to still work, but have not been tested. + Support for all version of GNU classpath prior to 0.18 has been removed. + +*** Simple GC sanity checking tool added to MMTk. Contact: Daniel Frampton. + +*** The RVM bootimage is now generated into two separate files, one for + code and one for data. These files are mapped separately into distinct + address ranges. As a result of this change, instead of defining + BOOTIMAGE_LOAD_ADDRESS in your config file, you must define + BOOTIMAGE_DATA_ADDRESS and BOOTIMAGE_CODE_ADDRESS. + All the default configu files (rvm/config/*) have been updated, + but if you have local copies of these files, you will need to update them. + +*** Loop Versioning optimization in the opt compiler + contributed by Ian Rogers and Jisheng Zhao. + Loop versioning replicates loop bodies and removes from one of + those loop bodies runtime exceptions that can be explicitly + tested. The phase runs as an SSA optimization so as only to + consider true dependencies. To capture the loop structure the + phase uses an annotated LST node. The annotations capture + information about the initial and terminal loop iterator values, + as well as the loop iterator instructions. This phase is currently + disabled by default until we can fix bugs in the optimizing compiler + that it exposes. + +*** The optimizing compiler's Local CSE pass now exploits commutativity, + patch contributed by Bernardo Pastorelli. + +** Bug fixes +*** defect 1240267: remove FIXED_JTOC option +*** defect 1411486: Bug in IA32 BT (Bit Test) instruction + + +*Jikes RVM 2.4.2 Release Notes (released on November 21, 2005) +**Highlights +**The recommended version of GNU classpath for Jikes RVM 2.4.2 is 0.19. +Classpath 0.18 is expected to still work, Classpath 0.15 and 0.17 may +still work, but have not been tested. + +** RunSanityTest support for DaCapo benchmark suite. DaCapo is now included +in the nightly Jikes RVM regression tests. We continue to solicit +contributions of more RunSanityTest harnesses for additional benchmarks. + +** Numerous bug fixes in the opt compiler to better maintain IR invariants +during. Contributed by Ian Rogers. + +**Bug Fixes +*** defect 1293619: Null Pointer Exception in VM_TypeReference +*** Minor fixes for OS X builds. + + +*Jikes RVM 2.4.1 Release Notes (released on September 15, 2005) + +*Highlights +**The recommended version of GNU classpath for Jikes RVM 2.4.1 is 0.18. +Classpath 0.17 is expected to still work, Classpath 0.15 may still +work, but has not been tested. + +** Support for triggering recompilation of dynamically loaded methods +It is now possible for an application running on Jikes RVM to request +that the system recompile all dynamically loaded methods at any point +in the application. This can be accomplished by a new VM_Callbacks +method. Details are in the user's guide. + +*Jikes RVM 2.4.0 Release Notes (released on August 11, 2005) + +*Highlights +** OS X is working again. +Support for running Jikes RVM on OS X has been restored. + +** Major MMTk Refactoring. +The most significant refactoring to MMTk since the initial release has +been completed. The MMTk Plan class hierarchy has been split to more +clearly distinguish global and local state, and move toward a more natural +Java style. This has involved substantial changes to the plan hierarchy, +which is now structured a set of subpackages under org.mmtk.plan. For more +information on the MMTk refactoring please refer to the tutorial and +cheatsheet in the MMTk/doc directory, both of which are intended to +assist with users migrating collectors to the new release. + +**The recommended version of GNU classpath for Jikes RVM 2.4.0 is 0.17. +Classpath 0.15 is expected to still work, but has not been tested. + +** Support for compiler replay +Contribution of compiler replay. Compiler replay is an experimental +methodology that eliminates memory allocation and mutator variations due +to non-deterministic sampling and adaptive optimizations. + + +*Jikes RVM 2.3.6 Release Notes (released on May 23, 2005) + +*Highlights +** Just like 2.3.5, this release of Jikes RVM does not work on OSX. +If you use Jikes RVM on OSX please help us fix it so subsequent +releases will support OSX again. + +**The recommended version of GNU classpath for Jikes RVM 2.3.6 is 0.15. +Classpath 0.14 is expected to still work. +Some older versions of classpath (0.10 and higher) might still work, +but have not been tested. +Subsequent releases of Jikes RVM will remove support for all versions of +GNU classpath prior to 0.15. + +** We have fixed defect 1189786 which represented a significant regression in +Jikes RVM 2.3.5. + +** After source code cleanups, most jikes warnings are now enabled by default. + + + +*Jikes RVM 2.3.5 Release Notes (released on April 8, 2005) +*Highlights +** This release of Jikes RVM does not work on OSX. +If you use Jikes RVM on OSX please help us fix it so subsequent +releases will support OSX again. + +**The recommended version of GNU classpath for this release of Jikes RVM is 0.14. +Furthermore, all of the configuration logic that controls classpath +version has been moved to $RVM_ROOT/rvm/config/classpath-version. We +suggest you may want to modify your local configuration files to source +this file, to make it easier to track changes in classpath version +across releases of Jikes RVM. + +**We can build with Jikes versions 1.20, 1.21, 1.22, and CVS Head. + +**We detect the version of the Jikes compiler in use and print warning +messages if that version has not been tested. + +**Quick Compiler (missing from the original 2.3.4 release notes) +Release 2.3.4 marked the first public appearance +of the "Quick" compiler for the PowerPC architecture targets. + +The Quick compiler is supposed to be rather smarter than the Base +compiler about register use without being nearly as complex as the Opt +compiler. + +Rather smarter means that stack and local variables are kept in +registers if possible, not in memory. + +Not nearly as complex means, for instance, that the Quick compiler code +generator works in a single pass, with no intermediate representations. +Right now the only additional optimizations are to remember if stack or +local variable values are already in a temporary or work register and +hence don't need to be loaded, and to postpone local variable stores +until it becomes obvious that the value really needs to be written. + +One purpose of the Quick compiler is to explore how close to the +performance of the Opt compiler we can come by using just the most +beneficial optimizations. Also, we hope to use it as a starting point +for experimenting with other optimizations without having to deal with +the implementation details of the Opt compiler and the complex +interactions among the many optimizations performed by the Opt compiler. + +*Other Notes: +**We've moved to http://jikesrvm.sourceforge.net. +We'll try to update the documentation, but please point out anything +that we missed. + +**The release notes are now in a file called NEWS instead of +the old ReleaseNotes-<revision-number> files. Further, NEWS is an +archive; it is contains release notes for all open source versions of +Jikes RVM. + +**The java.version system property is now at 1.4.2 +(This is missing from the original 2.3.4 release notes) + +Claiming to be at java.version 1.4.2 is a lie, of course -- we don't +really support all 1.4 features, such as assertions. However, it is a +necessary lie, since Eclipse 3.0 explicitly tests java.version and +insists upon at least 1.4.1 to run. + +Similarly, java.specification.version is up to 1.4 and +java.vm.version is at 1.4.2. + +*Bug Fixes: +**The problems with timezones that several users have reported with the change to daylight savings times and Jikes RVM 2.3.4/classpath 0.12 are not a problem in Jikes RVM 2.3.5/classpath 0.14. +**Calling VM.sysFail during boot image writing no longer generates a bogus "vm internal error" message. +***VM_Scheduler.traceback and VM_Scheduler.dumpStack now work properly +even when Jikes RVM is writing the boot image. This, in turn, means +that we no longer generate internal errors if we have to call +VM.sysFail during boot image writing time. + + + +*Jikes RVM 2.3.4 Release Notes (released December 21, 2004) +THe following four sections of the document contain the Jikes RVM +2.3.4 release notes. They are: +**Highlights +**Other Notes +**Bug Fixes +**Internal Changes + +*Highlights of the Jikes RVM 2.3.4 release: + +**We now run Eclipse 3.0 +You can use Jikes RVM to run Eclipse 3.0; this lets you run a free +IDE with a free VM. + +**The port to PowerPC64 is virtually complete. There are a few fringe opt +compiler bugs remaining, but functionality has advanced to the point where +development and production images of Jikes RVM are passing almost all +regression tests. + +**MMTk has been moved out of $RVM_ROOT/rvm/src/vm/memory managers to +$RVM_ROOT/MMTk. It has also been reorganized to have the directory structure +match its package structure and thus is "Eclipse-friendly." MMTk's +option parsing has been rewritten. There are other internal +changes as well. + +**Major revision of the object model. All objects (arrays and scalars) +are now layed out in a "forwards" direction. This simplifies and enables +many common GC techniques (scannable heap; card-marking) at the cost of a +slight performance hit on AIX/PowerPC due to the need to make some null checks +explicit. See VM_ObjectModel.java for more details. + +**XML parsing with Xalan +Jikes RVM can now be configured so it always uses the Xalan XML +parser. See the configuration file variable XALAN_J_DIR. + +**We have switched to GNU Classpath version 0.12. +Versions 0.10 and 0.11 can still be used, if you set appropriate +options in the configuration file, but we recommend Classpath 0.12. + +**CPU hogging fixed +Jikes RVM used to busy-wait when it was idle, waiting for I/O or +timeouts. It now sleeps properly, which is nice if you're trying +to do something else on your workstation at the same time that you're +using Jikes RVM. This closes long-standing defect # 2046. + +*Other Notes for the Jikes RVM 2.3.4 release: +**The memory size options now all take sizes in bytes by default. (INCOMPATIBLE CHANGE) +They used to use a mix of default units: Megabytes (Mebibytes), +Kilobytes (Kibibytes), and "Log 2 of the frequency (in bytes)". They +now all default to bytes; please update any scripts you have +appropriately. This affects -Xmx, -Xms, and the -X:gc:* options. + +**The MMAP_COPY_ON_WRITE feature now works on PowerPC/Linux and PowerPC/OSX. +(This feature was discussed in the 2.3.3 release notes.) + +**The AttachCurrentThread JNI function is now partly implemented; +it now works in the common case where a thread is already attached to the VM. + +**RVM_BOOTCLASSPATH_APPEND is a new environment variable that Jikes RVM +will recognize when booting. You can use it to add extensions to the +VM. Set it just as you would set the CLASSPATH environment variable. + +**Major re-implementation of AOS's feedback-directed inlining and the opt +compiler's default inlining policy. Result is simpler code, lower +overhead profiling, and more effective inlining decisions. + +*Bug Fixes in the Jikes RVM 2.3.4 release: +**The JNI AttachCurrentThread function now returns proper error status if it +cannot complete properly. It used to (incorrectly) always return +JNI_OK. +**Class.getResourceAsStream() and Class.getResource() would fail +with a NullPointerException when invoked on a Class object that was +loaded by the Bootstrap Class Loader. +**Defect #3601 is fixed -- java.lang.Thread no longer inherits from VM_Thread. +**Stack trace printing for trouble in the boot thread is fixed; +it no longer inappropriately elides frames. + +*Internal Changes in the Jikes RVM 2.3.4 relesae: +**The VM_Magic classes have been moved to the org.vmmagic namespace, +and rationalized. Further work on refactoring magic usage (mainly in Jikes +RVM as opposed to MMTk) is ongoing. + + + + +*Jikes RVM 2.3.3 release notes sections +The following three sections of the document contain the Jikes RVM +2.3.3 release notes. They are: +**Highlights +**Other Notes +**Bug Fixes + +*Highlights of the Jikes RVM 2.3.3 release include: + +**GNU Classpath 0.10 +Jikes RVM now uses GNU Classpath version 0.10 on all platforms. Jikes +RVM 2.3.3 should work with classpath version 0.08, 0.09 or 0.10. +However, we recommend that users switch to classpath 0.10, to get the +new features and because we run our nightly regression tests against +Classpath 0.10. + +(If hand-building GNU Classpath 0.10 or 0.09 on AIX, follow the +directions in rvm/doc/classpath-0.10-on-AIX.txt) + +**GCspy garbage collection visualization tool + +Jikes RVM now includes support for the GCspy tool for visualizing the +garbage collector's behaviour. Many thanks to Richard Jones of the +University of Kent for this contribution. (This item should have been +included in the 2.3.2 release notes, but was inadvertently omitted.) +Documentation is in the user's guide. + +**PowerPC/Linux/64 support with baseline compiler +Jikes RVM now runs on 64-bit PowerPC Linux to the same extent as it +does on 64-bit PowerPC AIX. All regression tests pass with the +baseline compiler. Porting of the opt compiler to 64 bit PowerPC is +an open work item; contributions welcome! + +**Startup time slashed +The startup time for Jikes RVM to run a simple "Hello World" program +on Linux/x86 went down by a factor of 8. This is because we now use +mmap()'s copy-on-write feature, instead of reading all 30 MB of boot +image into an area mmap()'d with MAP_ANONYMOUS. +(There is a long comment in src/tools/bootImageRunner/IA32/libvm.C +describing this; search for the preprocessor condition #ifdef +MMAP_COPY_ON_WRITE). If this creates problems, disable them by +#undefining MMAP_COPY_ON_WRITE in libvm.C. + +This change should be ported to PowerPC Linux by someone who runs that +platform. + +**Jikes RVM installable as a production runtime environment +You can install Jikes RVM on your system as a production runtime +environment for Java. Once you've built Jikes RVM, cd to +src/tools/install and read the file README to find out how to +install a Jikes RVM executable as /usr/bin/rvm (or in some other +location of your choice). + +**JNI 1.2 and 1.4 implemented +We have implemented all of the missing functions from JNI 1.2 and 1.4. +There are still aspects of the JNI implementation that can be +improved; volunteers welcome. + +**MMTk +Improvements to write barrier implementation, cleanup to mechanisms +for specifying alignment constraints in allocation code, and +refactoring of reference processing (java.lang.ref.*). + +*Other Notes for the Jikes RVM 2.3.3 release: + +**Compiler DNA updated -- x86 adaptive system now uses Opt level O2 sometimes. +The compiler DNA (the precomputed cost & benefit of using various +compiler/optimization levels) has been updated. Due to improvements +over the past 10 months, the optimizing compiler's level 2 is now +better than level 1, on average, on both platforms. (Previously, +this was not the case on IA32.) The result is that the adaptive +system may now choose to use Opt level 2 on some methods because +its model can now determine that it will sometimes be beneficial +to do so. + +*Bug Fixes for the Jikes RVM 2.3.3 release: +** Calls to the JNI function pair +GetPrimitiveArrayCritical/ReleasePrimitiveArrayCritical can now be nested. +** Fixed a bug in the GC map iterator code (both platforms) that was returning +references multiple times in dynamic linking frames. +** Fixed a bug in the GC map iterator code on PPC that was failing to return +spilled parameters in dynamic linking frames. + + + + +*Jikes RVM 2.3.2 release notes sections: +The following three sections of the document contain the Jikes RVM +2.3.2 release notes. They are: +**Highlights +**Other Notes +**Bug Fixes + +*Highlights of the Jikes RVM 2.3.2 release include: +** Jikes RVM 2.3.2 requires classpath 0.08. + +**64-bit port of baseline compiler and runtime system to PowerPC64/AIX is +complete. We have been passing all regression tests on PPC64/AIX for +over a month. NOTE: porting of the optimizing compiler has not yet begun +(contributions/collaborations welcome) and therefore no configuration +with the optimizing compiler will work in 64 bit mode. + +** The default GC plan for the prototype, prototype-opt, development, +and production configurations has been changed from CopyMS to GenMS. +GenMS is a generational collector with an Appel-style nursery and a +mark-sweep mature space. + +** Jikes RVM now runs on newer versions of Linux/PowerPC that store the +pthread id in R2. Building Jikes RVM with RVM_FOR_SINGLE_VIRTUAL_PROCESSOR=0 +is reported to work on top of these newer Linux releases, which resolves a +long-standing limitation of Jikes RVM on Linux/PowerPC. + +**Source Code editing support +There are now VIM and Emacs style files supporting the Jikes RVM coding +style for C, Java, and C++. See rvm/etc/README. (This should have +been in the 2.3.1 release announcement but was not.) + +**You can build Jikes RVM entirely with free software tools +You can now build Jikes RVM using the Kaffe virtual machine. Details +in the installation section in the user's guide. + +*Other Notes for the Jikes RVM 2.3.2 release: + +**Performance improvements in VM_Memory copying routines used by +System.arraycopy and copying GC resulted in 10% improvement in +SPECjbb2000 throughput. + +*Bug Fixes for the Jikes RVM 2.3.2 release: +** Fixed problems in alignment support in JMTk that were causing crashes +in GC on PowerPC/AIX when doubleword alignment of long[] and double[] +was enabled. This is a bug that was introduced in version 2.3.1 and is +fixed in 2.3.2. + +** Fixed performance problem in profile-directed inlining where the +AI Organizer forces recompilation of methods in an attempt to inline +runtime service routines that won't be inlined no matter how many +times we try. Problem has always existed, but became much more severe +in 2.3.0 release when we disabled the inlining of allocation sequences +if the size of the object was not known at compile time. + +** Fixed bug in which non-virtualizable interface calls where not being +considered as candidates for feedback-directed inlining. + +** We now provide all of the mandatory system properties +for the Java 1.4.2 API. + +** Fixed bug in which the time zone code always thought +the user was on New York time. + +** We now can print a meaningful message when we get +an ErrorInInitializerError in the early stages of booting the VM +before it is able to load in new classes. We had incorrectly left +ErrorInInitializerError out of the VM's list of boot classes. + +** If an uncaught exception is thrown while booting, +we no longer try to print to the uninitialized System.err stream. +That used to trigger a NullPointerException. + + + + +*Jikes RVM 2.3.1 Release Notes (released on December 10, 2003) +The following three sections of the document contain the Jikes RVM +2.3.1 release notes. They are: +**Highlights +**Other Notes +**Bug Fixes + +*Highlights of Jikes RVM 2.3.1 include: + +**Mac OSX is now supported! +Generously contributed by Chris Hoffman of the University of +Massachusetts (USA). +***Details: +If you want to build Jikes RVM for Mac OSX, you will need to patch +your copy (version 0.06 or better) of GNU Classpath with the patch +file located in etc/gnu-classpath-on-mac-osx.patch. + +** Seven user contributions incorporated since 2.3.0 +*** Contributions were improvements to JMTk from Robin Garner, +port to OSX from Chris Hoffman, refCount coalescing extension from Ian +Warrington, bug fixes for the OSX port and opt compiler on PPC from +Alan Lawrence, implementation of -jar cmd line arg from Anders Biehl +Norgaard, and support for getting the classpath from CLASSPATH envar +from Philippe Faes. + +** Switched to classpath 0.07 +*** Classpath 0.06 is expected to also work with this release of Jikes RVM, +but we recommend upgrading to the latest classpath release. + +**Source Code editing support +There are now VIM and Emacs style files supporting the Jikes RVM coding +style for C, Java, and C++. See rvm/etc/README. + +**Build system improvements: +***If you run "jbuild" with --trace, +you actually get all of the relevant shell commands printed out. + +***Under jbuild --trace=make, whenever we change directories, we report it +This is parseable by Emacs's compilation-mode. --trace=make is +enabled automatically by "--trace" without any arguments. + +***More error-checking functionality added to the build system. + +***Cleaned up a couple of bogus warnings +one could get in some versions of the Bourne-Again Shell (Bash). + +***We can make automatic binary installations of Jikes RVM +There's a new generated script, "$RVM_BUILD/jbuild.install", that does +this. Handy way to save off a configuration that works before making +changes. Also lets us make a binary distribution of Jikes RVM, should +it be desirable. + +***New build options, JAVAC_WARNING_FLAGS and JIKES_WARNING_FLAGS +These variables replace the former hardcoded "-nowarn", and can be set +arbitrarily. They default to "-nowarn" for historical compatibility. +It means you can now get helpful warnings from the Java compiler. + +**Improvements to automatic download of GNU Classpath libraries. +***We now use wget to download a classpath release instead of doing a +cvs checkout. This avoids the problematic aclocal/autoconf/etc step +and means that automatic downloading should work for all users and is +now the recommended default. + +**Progress in PowerPC64 port: we can run hello world +***The Jikes RVM port to PPC64 has progressed to the point where a prototype +configuration boots and can run many simple programs. +Getting this far requires that lots of things are working, so it is a +fairly significant step. However, there is more work to do with +prototype and we haven't started work on the opt compiler. This is very +much a work in progress (and members of the community are encouraged +to help!). + +*Other notes for Jikes RVM 2.3.1: + +***We have fixed all C and C++ compiler warnings in the Linux/x86 source +code, under GCC 2.96, GCC 3.3, and GCC 3.3.1. The only exception is +warnings from GCC 2.96 of the form: + + ihnpdsm.C:4942: warning: `unused' attribute ignored + +They are benign; ignore them. + +***__linuxsmp__ has now been officially exorcised from the source. + +*Bug Fixes in Jikes RVM 2.3.1: + +***Debugging output no longer can drift into InterfaceDeclarations.h; +GenerateInterfaceDeclarations.java takes a new "-out" option. + +***--trace=preprocessor now lists all of the directories consistently. + +***Cross-building from Linux to AIX now works better. +You can now set RVM_ROOT and RVM_BUILD to different values on the host +and the target machines. +****Details: +If you don't have RVM_ROOT and/or RVM_BUILD set in your environment +when you run the booter on the target, then "jbuild -booter" will use +the (recorded) values from the host. If you do have one or both of +them set, they'll be used as appropriate. + +It is now the case that, when you run "jconfigure" and "jbuild", you +should have your PATH set so that there is some Bash version in it +somewhere under the name "bash". + +*** Other misc bugs fixed as well; see the bug tracking software. + + + + +*Jikes RVM 2.3.0.1 Release Notes (released on September 3, 2003) +2.3.0.1 is minor release of Jikes RVM to fix a few regressions in Jikes +RVM 2.3.0. + +(1) Fixed build on Linux/IA32 with RVM_FOR_SINGLE_VIRTUAL_PROCESSOR=1. + +The following three sections of the document contain the Jikes RVM +2.3.2 release notes. They are: +**Highlights +**Other Notes +**Bug Fixes + + + + +*Jikes RVM 2.3.0 Release Notes (released on August 28, 2003) +This is release 2.3.0 of the Jikes RVM. + +There are a number of major changes and significant improvements in +overall system stability and functionality since Jikes RVM 2.2.2. + +Highlights of this release include: + + Now using classpath version 0.06 + - lots of improved functionality in classpath + - fixes several critical defects in Jikes RVM + + Build process: + - ksh has been replaced with bash + - improved robustness and error detection in all build tools + + GC/Memory management: + - MarkSweep and CopyMS Plans are considered stable + - CopyMS is now recommended as the default memory manager + - RefCount plan is functional (does not support finalization or parallel GC) + - heapsize dynamically grows/shrinks based on utilization and load + - implementation of soft, weak, and phantom references from Chris Hoffman + - numerous bug fixes and performance improvements + - numerous code cleanups from Robin Garner and Andrew Grey. + + Simplified configuration of Jikes RVM + - Added 4 logical configs to help new users pick a 'good' one + - All builds with opt compiler use adaptive system + + Baseline compiler is re-entrant; parallel baseline compilation enabled + + includes Arnold and Ryder Instrumentation Sampling Framework (PLDI'01) + + Some progress on port to 64 bit PowerPC + - Numerous code cleanups + - More use of VM_Address, VM_Word, etc. + - Complete reimplementation of syscalls (see VM_SysCall) + + Includes 9 user contributions since 2.2.2; + +Other notes: + +We fixed all Javadoc warnings in the source code. + +VM_Time.now() replaced by VM_Time.cycles(). Internal interval timing +should now be done using hardware cycle counters (VM_Time.cycles) +instead of getting the time of day. VM_Time.currentTimeMicros() can be +used to get the same functionality as VM_Time.now(), but is less +efficient than VM_Time.cycles(). + +A number of other miscellaneous bugs in version 2.2.2 +are fixed in the 2.3.0 release. See the developerWorks bug +tracking software tool and CVS history for details. + + +Expansions of some of the highlights listed above: + ++ Classpath 0.06 + Although many programs may still work with Jikes RVM 2.3.0 and + GNU classpath 0.05 we strongly recommend switching to classpath 0.06. + We no longer test Jikes RVM with classpath 0.05. + ++ logical configurations + There are a large number of possible Jikes RVM configurations. + Therefore we define four ``logical'' configurations that are most + suitable for casual or novice users of the system. + The mapping of logical to actual configurations may vary from release + to release. In particular, it is expected that the choice of garbage + collector for these logical configurations may be different as JMTk + evolves. The four configurations are: + (1) prototype + A simple, fast to build, but low performance configuration of + Jikes RVM. This configuration does not include the + optimizing compiler or adaptive system. Most useful for rapid + prototyping of the core virtual machine. + (2) prototype-opt + A simple, fast to build, but low performance configuration of + Jikes RVM. Unlike prototype, this configuration does + include the optimizing compiler and adaptive system. Most useful + for rapid prototyping of the core virtual machine, adaptive + system, and optimizing compiler. + (3) development + A fully functional configuration of Jikes RVM with reasonable + performance that includes the adaptive system and optimizing + compiler. This configuration takes longer to build than the two + prototype configurations. + (4) production + The same as the development configuration, except all assertions + are disabled. This is the highest performance configuration of + Jikes RVM and is the one to use for benchmarking and + performance analysis. Build times are similar to the development + configuration. + ++ Jikes RVM's Java preprocessor documented, and more robust: + The preprocessor is now documented, both in the User's Guide and via a + --help option. It is also a lot more robust than it used to be. + We wrote up-to-date documentation for the preprocessor. We also fixed + some deficiencies where certain errors in using the preprocessor would + lead to silent failures. The preprocessor was generating incorrect + exit status codes under some failure conditions; these are fixed. All + buffer overflows are now caught and fixed. All GCC warnings fixed in + the preprocessor. + + The preprocessor now notices incorrect syntax (extra trailing + characters after a conditional) and correctly complains about it. + + The preprocessor now handles failures and fatal signals by + conservatively deleting the output file in progress. This keeps us + from having half-updated files sitting around. + ++ improvements in build process to make it stop on errors: + Any error occurring during a build of Jikes RVM now cause the build + process to immediately abort. We had, in the past, at least twice a + month received reports that a built RVM failed to work, where upon + investigation we discovered that the build process had encountered + errors earlier, and these earlier errors were the real source of the + problem. + ++ ksh => bash + Jikes RVM's build process is now entirely free of KSH. This makes it + more convenient for Linux users to install the system. + ++ The optimizing compiler now contains an implementation of the + Instrumentation Sampling Framework from the Arnold and Ryder PLDI'01 + paper. This infrastructure can be used to reduce the overhead of + collecting profiling information using instrumentation. For details, + see the user guide section "Using the Jikes RVM to Profile an + Application -> Instrumentation Sampling Framework." + + + +*Jikes RVM 2.2.2 Release Notes (released on June 6, 2003) +This is release 2.2.2 of the Jikes RVM. + +Highlights of this release include: + + Support for the hybrid library configuration has been + removed and the library support code refactored to simplify + the interface between the GNU Classpath libraries and Jikes RVM. + + Defect 3383 has been resolved. We now recomend using the + Blackdown 1.4.1 SDK to build Jikes RVM on Linux/IA32 and the + IBM 1.4 SDK to build Jikes RVM on AIX/PowerPC. + + PowerPC hardware performance monitor tracing support for + multiprocessors on AIX 5. + + Work has stated on a port of Jikes RVM to 64 bit PowerPC. + This release includes a number of source code cleanups + (some complete, other still in progress) to make the system portable + across 32 and 64 bit systems. + + A major rewrite of the PowerPC baseline compiler to enable it to + generate code for both 32 and 64 bit PowerPC. As part of the redesign, + the use of an explict SP register was eliminated and all accesses to + the expression stack are done by computing offsets from the FP at + compile time. + NOTE: The 64 bit PowerPC version of the baseline compiler + is very much a work in progress and is NOT expected to work in this + release. + + Magic class (VM_AddressArray, etc) were added to enable arrays of + addresses to be safely created. The classloader was enhanced to + treat VM_Address etc as primitive types. + + Changed PowerPC version of VM_Assembler.java to uniformly use PowerPC + mnemonics for the instructions. + + The OutOfMemoryError exception is now thrown by the GC system. + +Other notes: + + Changes to configuration files: + added MAXIMUM_MAPPABLE_ADDRESS and dropped the "" from + BOOTIMAGE_LOAD_ADDRESS + + sysCalls were moved from VM to VM_SysCall. Naming conventions were + changed to make parameter/return types explicit in name. + + a number of obsolete command line arguments were removed. + Do rvm -help and rvm -X to see the current set of supported options. + +A number of other miscellaneous bugs in version 2.2.1 +are fixed in the 2.2.2 release. See the developerWorks bug +tracking software tool and CVS history for details. + + +*Jikes RVM 2.2.1 Release Notes (released on April 7, 2003) +This is release 2.2.1 of the Jikes RVM. +This release includes several major pieces of new +functionality and a number of bug fixes. + +Highlights of this release include: + + Jikes RVM is now based entirely on the GNU Classpath libraries. + The prior hybrid library solution is still supported in + this release, but will be removed in subsequent releases. + See the userguide for details on how to build with the hybrid libraries. + + Jikes RVM can run a significant subset of the Eclipse IDE. + + Separate name spaces for classloaders. + + Implementation of JNI for Linux/PowerPC. + + The addition of an on-stack replacement mechanism to + enable the adaptive system transfer execution from long-running + baseline compiled frames and to recover from speculative + optimizations. More details can be found in a CGO 2003 paper. + + Extensions for PowerPC hardware performance counters on AIX 5. + +Other notes: + + Future release of Jikes RVM will not support using the OTI + class libaries. + + We continue to anticipate moving completely to JMTk and removing + support for the watson collectors in a future release of Jikes RVM. + This should happen in the 2.2.2 release depending on the + performance of the JMTk MarkSweep collector. + +A number of other miscellaneous bugs in version 2.2.0 +are fixed in the 2.2.1 release. See the developerWorks bug +tracking software tool and CVS history for details. + + +*Jikes RVM 2.2.0 Release Notes (released on December 17, 2002) +This is release 2.2.0 of the Jikes RVM. +This release includes several major pieces of new +functionality and a number of bug fixes. + +Highlights of this release include: + + Jikes RVM now mostly uses the GNU Classpath class + libraries. All library packages except java.lang, + java.lang.ref, java.lang.reflect, java.io, java.net, + and java.util are from Classpath. + We are optimistic that release 2.2.1 of Jikes RVM will + be based entirely on the GNU Classpath libraries. + + The introduction of JMTk (Java Memory management Tool kit). + + Numerous extensions and bug fixes to core VM functionality + to support running a wider range of applications. + + Support for gathering and exploiting dynamic + branch probabilities for conditional and multi-way branches. + + Introduction of packages in the Jikes RVM source code. + + A bytecode verifier contributed by L. Zhang (UCSB) + + Support for Intel cycle counter contributed by + H. Lee and J. Palm (Colorado) + + Support for PowerPC hardware performance counters on AIX 5. + +Other notes: + + As announced in the 2.1.1 release notes support for + VM_Magic.pragmaInline and VM_Magic.pragmaNoInline + has been removed. Code must use the exception-based + pragma mechanism. + + jdp is no longer supported. See the userguide for details. + + We anticipate moving completely to JMTk and removing support + for the watson collectors in a future release of Jikes RVM. + This may happen as soon as the 2.2.1 release depending on JMTk + performance and stability. + +A large number of other miscellaneous bugs in version 2.1.1 +are fixed in the 2.2.0 release. See the developerWorks bug +tracking software tool and CVS history for details. + + +*Jikes RVM 2.1.1 Release Notes (released on July 2, 2002) +This is release 2.1.1 of the Jikes RVM. The main purpose of +this release is bug fixes. + +IMPORTANT NOTE: We are aware of a bug in the IBM DK for + Linux/IA32 v1.3.1 when building Jikes RVM. Stick with + version v1.3.0 until this bug can be resolved. + +Highlights of this release include: + - Introduction of a new method-level runtime exception + pragma mechanism, contributed by Chapman Flack. The + system now relies on this mechanism for method-level + pragmas for uninterruptibility and inlining directives. + - Restructuring of baseline compiler to increase the + amount of platform-independent shared code. + - Stricter enforcement of uninterruptibility rules. + - Improvements to SSA optimization package to reduce + register pressure. These changes make O2 profitable + for use by the adaptive system on IA32. + - The VM_CompilerInfo classes were folded into the + VM_CompiledMethod classes. + +NOTE: VM_Magic.pragmaInline and VM_Magic.pragmaNoInline +are deprecated, and will not be supported in the 2.1.2 +release. Migrate code to use the new runtime exception +pragma mechanism. + +To see more details on other miscellaneous bug fixes, see +the developerWorks bug tracking software tool and CVS +history. The following bugs in version 2.1.0 are +fixed in 2.1.1: + 2094: PPC: frem and drem incorrect + 2104: don't put <clinit> method for bootimage classes + in bootimage + 2916: Race condition: installing code and invalidation + of speculative opts + 2938: jazzlib documentation in userguide + 2949: OptAdaptive hangs on SPECjbb2000 + 2988: VM_Lock.allocate can result in threadswitch + + +*Jikes RVM 2.1.0 Release Notes (released on June 10, 2002) +This is release 2.1.0 of the Jikes RVM. This release +provides some significant refactoring and new functionality, +as well as bug fixes. + +IMPORTANT: new prerequisite! The Jikes RVM now requires + JazzLib. The jconfigure script will download it automatically. + +IMPORTANT NOTE: We are aware of a bug in the IBM DK for + Linux/IA32 v1.3.1 when building Jikes RVM. Stick with + version v1.3.0 until this bug can be resolved. + +IMPORTANT NOTE: The concurrent collector is no longer + functional in Jikes RVM 2.1.0. + +Highlights of this release include: + - Introduction of a plug-in parameterized object model, as + described in the ECOOP 2002 paper by Bacon, Fink & Grove. + The MarkSweep configurations now have a one-word header + for most objects. All configurations now use 32-bit + address-based hashing. + - Introduction of a "magic" VM_Address type, representing + a raw address manipulated by the VM. Currently both + platforms implement VM_Address as an unsigned + 32-bit integer. + - Significant refactoring of the memory management system, + to reduce replicated code and support more functionality. + - Signficant refactoring of the VM interface to the + standard libraries, introducing the + com.ibm.JikesRVM.librarySupport package to help porting + to use another standard library implementation. + - The original PowerPC linear scan implementation is + deleted, and the new IA32 linear scan implementation + has been refactored and ported to support both IA32 and + PowerPC. + - The optimizing compiler now inlines trivial callees even + at optimization level zero. + - Significant improvements in speed of the optimizing + compiler's register allocation and Heap Array SSA + construction phases. + - Some more support for miscellaneous library functions + including class loaders and some system services. + - Miscellaneous enhancements to JDP. + - Support for reading/using Soot-style class file annotations. + - Elimination of the classloading lock (VM_ClassLoader.lock). + +To see more details on other miscellaneous bug fixes, see +the developerWorks bug tracking software tool and CVS +history. The following bugs in version 2.0.3 are +fixed in 2.1.0: + 2128: getMostRecentlyGeneratedCompilerInfo + 2359: update RunSanityTests default + 2739: static synchronized methods in boot image + 2763: jdp 'thread' command broken + 2772: IA32: problems with physical registers in LIR + 2794: Classes resolved but not in boot image + 2806: IA32: genThreadSwitchTest for deterministic thread + switching + 2823: VM_Lister of CMPXCHG + 2831: BaseBase GC Map bug for Native Bridge + + +*Jikes RVM 2.0.3 Release Notes (released on March 11, 2002) +This is release 2.0.3 of the Jikes RVM. The main purpose +of this release is bug fixes. + +Highlights include: + -- Linux/IA32 jdp improvements including: many bug + fixes for BaseOpt and OptOpt bootimages; requiring + hex values to be prefixed with '0x' or '0X'; + clarifications in the help messages and userguide; + stepline command fixed for BaseBase builds; print + variable-name command fixed for BaseBase when + LoadLocalVariableTable is true. jdp still works + better with BaseBase builds. + -- Regression tests now have test-specific timeout + values + -- Improvements in opt's code placement phase: + (1) callee's with pragmaNoInline are marked + as infrequent + (2) uses dominator information to propagate + infrequency + -- Code cleanups in opt compiler's LIR: + (1) constant materialization delayed until + translation to LIR + (2) REF_ operators maintained through LIR. + -- Backpatching-based dynamic linking eliminated + from baseline PPC; table-based dynamic linking now + used by all compilers on all platforms. + -- Updated compiler DNA values for both AIX/PPC and + Linux/IA32; these values are used by the adaptive + system's cost/benefit model. + +To see more details on other miscellaneous bug fixes, see +the developerWorks bug tracking software tool and CVS +history. The following bugs in version 2.0.2 are +fixed in 2.0.3: + 2526: Invalid ref reported while scanning stack + (BaseBaseSemispace) + 2585: IA32 baseline compiler - pragmaInline warnings + unreachable + 2586: VM_EdgeListener.update not thread safe + 2594: Method.getParameterTypes() doesn't resolve + returned classes + 2616: LINTEL: bad GC map on SPECjbb2000 + 2623: Array index out of bounds in + OPT_ShortArrayReplacer + 2629: Null Ptr exception in adaptive code using a + saved cmid + 2664: Reflective operations on primitive types + 2665: GC points moving into uninterruptible regions + 2719: Threads on IO queue can starve + 2736: java.lang.Math.random is not properly initialized + in boot image + + +*Jikes RVM 2.0.2 Release Notes (released on January 17, 2002) +This is release 2.0.2 of the Jikes RVM. The main purposes +of this release are bug fixes, performance improvements for +IA32, and minor improvements to the build process. + +Important: + Starting in the 2.0.2 release, jconfigure now requires that + your RVM_TARGET_CONFIG file defines preprocessor directives + that specify the target architecture, operating system, and + whether or not your pthread library can support JikesRVM. + See the sample files in $RVM_ROOT/rvm/config. +... [truncated message content] |
From: <dgr...@us...> - 2006-08-24 16:19:44
|
Revision: 10737 Author: dgrove-oss Date: 2006-08-24 09:19:29 -0700 (Thu, 24 Aug 2006) ViewCVS: http://svn.sourceforge.net/jikesrvm/?rev=10737&view=rev Log Message: ----------- move source code of regressions tests from rvm/src/examples to testing/tests Modified Paths: -------------- rvmroot/trunk/rvm/GNUmakefile rvmroot/trunk/rvm/bin/jreplace rvmroot/trunk/rvm/regression/tests/bytecodeTests/Makefile rvmroot/trunk/rvm/regression/tests/gctest/Makefile rvmroot/trunk/rvm/regression/tests/gctracingtest/Makefile rvmroot/trunk/rvm/regression/tests/jBYTEmark/Makefile rvmroot/trunk/rvm/regression/tests/jgf/Makefile rvmroot/trunk/rvm/regression/tests/jni/Makefile rvmroot/trunk/rvm/regression/tests/memberNaming/Makefile rvmroot/trunk/rvm/regression/tests/opttests/Makefile rvmroot/trunk/rvm/regression/tests/reflect/Makefile rvmroot/trunk/rvm/regression/tests/serialization/Makefile rvmroot/trunk/rvm/regression/tests/threads/Makefile rvmroot/trunk/rvm/regression/tests/utf8/Makefile rvmroot/trunk/rvm/regression/tests/xalan/Makefile rvmroot/trunk/rvm/regression/tests/xerces/Makefile Added Paths: ----------- rvmroot/trunk/testing/ rvmroot/trunk/testing/tests/ Removed Paths: ------------- rvmroot/trunk/rvm/src/examples/ Modified: rvmroot/trunk/rvm/GNUmakefile =================================================================== --- rvmroot/trunk/rvm/GNUmakefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/GNUmakefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -21,7 +21,6 @@ # "make TAGS": * Make a tags table, "TAGS", for the generated # sources (in $RVM_BUILD) and for the C, C++, and Java sources # in the 'src' directory. -# * Skip 'src/examples' # * The table should include the Java templates in *.template # # "make TAGS.ALL": Make a tags table covering all of the source files @@ -47,7 +46,7 @@ @echo >&2 ' "make TAGS" to use it.' @echo >&2 ' (Well, it can also run "find" in ways useful for the Emacs Meta-x grep-find ' @echo >&2 ' command. It also makes an alternative tags file, TAGS.ALL, which contains' - @echo >&2 ' all files in the source tree, skipping only Emacs backups and CVS files.)' + @echo >&2 ' all files in the source tree, skipping only Emacs backups and svn files.)' @echo >&2 ' Documentation is at the head of the Makefile.' @@ -61,13 +60,13 @@ XFLAGS:=--no-run-if-empty find_ignore_docs:=-name \*.gif -o -name \*.jpg -o -name \*.ps -o -name \*.dvi -o -name \*.ind -o -name \*.ilg -find_match_junk_names:=-name Old -prune -o -name CVS -prune -o -name '*.[ao]' -o -name \*.so -o -name TAGS\* -o -name \*~ -o -name .\*~ -o -name '.\#*' -o -name '\#*' -o -name '*\#' -o -name core -o -name core.\* -o -name \*.log -append_java_templates=find src ../MMTk -follow ${find_match_junk_names} -o -name examples -prune -o -name \*.template -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --language=java --append --output=$@ +find_match_junk_names:=-name Old -prune -o -name .svn -prune -o -name '*.[ao]' -o -name \*.so -o -name TAGS\* -o -name \*~ -o -name .\*~ -o -name '.\#*' -o -name '\#*' -o -name '*\#' -o -name core -o -name core.\* -o -name \*.log +append_java_templates=find src ../MMTk -follow ${find_match_junk_names} -o -name \*.template -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --language=java --append --output=$@ # Throwing ${find_match_junk_names} into ${FIND} doesn't cut down on the size # in a clean checkout, but might possibly do so if there were old # files left over whose names start with "#" or with ".#". -FIND:=find $(GENSRC) src ../MMTk/src -follow ${find_match_junk_names} -o -name examples -prune -o \( -name \*.java -o -name \*.C -o -name \*.h -o -name \*.c -o -name \*.y \) +FIND:=find $(GENSRC) src ../MMTk/src -follow ${find_match_junk_names} -o \( -name \*.java -o -name \*.C -o -name \*.h -o -name \*.c -o -name \*.y \) FINDALL:=find $(GENSRC) . ../MMTk -follow ${find_match_junk_names} -o ${find_ignore_docs} -o -type f # etags in emacs 21.3.CVS-2003-09-23 does not support "--defines, nor --globals". @@ -100,7 +99,7 @@ TAGS.Makefiles: FORCE $(RM) $@ - find . ../MMTk -follow ${find_match_junk_names} -o -name regression -prune -o -name examples -prune -o -name '*akefil*' -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ + find . ../MMTk -follow ${find_match_junk_names} -o -name regression -prune -o -name '*akefil*' -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ ## We don't have any conditional compilation directives in the ## MMTk source tree; no need to search it. Modified: rvmroot/trunk/rvm/bin/jreplace =================================================================== --- rvmroot/trunk/rvm/bin/jreplace 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/bin/jreplace 2006-08-24 16:19:29 UTC (rev 10737) @@ -13,7 +13,8 @@ # Perform string replacement on java files # -my $filePattern = "\\A.*\\.java\\Z"; +#my $filePattern = "\\A.*\\.java\\Z"; +my $filePattern = "\\A.*\\Makefile\\Z"; # We expect exactly two arguments. # Modified: rvmroot/trunk/rvm/regression/tests/bytecodeTests/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/bytecodeTests/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/bytecodeTests/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -7,7 +7,7 @@ # include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/bytecodeTests +BENCH_HOME=$(JAL_ROOT)/testing/tests/bytecodeTests BENCH_SOURCE_PATH=$(BENCH_HOME) HEAPSIZE=150 START_NAME=TestAll Modified: rvmroot/trunk/rvm/regression/tests/gctest/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/gctest/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/gctest/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -13,7 +13,7 @@ include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/gctest +BENCH_HOME=$(JAL_ROOT)/testing/tests/gctest BENCH_SOURCE_PATH=$(BENCH_HOME) ifeq ($(MODE),PERFORMANCE) HEAPSIZE = 300 Modified: rvmroot/trunk/rvm/regression/tests/gctracingtest/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/gctracingtest/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/gctracingtest/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -10,7 +10,7 @@ include $(RVM_BUILD)/Make.rules.target -BENCH_HOME = $(JAL_ROOT)/rvm/src/examples/gctracingtest +BENCH_HOME = $(JAL_ROOT)/testing/tests/gctracingtest BENCH_SOURCE_PATH =$(BENCH_HOME) EXPECTED = BENCH_RVM_ARGS = "-X:sysLogfile=/dev/null" Modified: rvmroot/trunk/rvm/regression/tests/jBYTEmark/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/jBYTEmark/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/jBYTEmark/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -25,7 +25,7 @@ EmFloatPnt NumericSortTest -DRIVER_SOURCE_PATH=$(JAL_ROOT)/rvm/src/examples/iterationDriver +DRIVER_SOURCE_PATH=$(JAL_ROOT)/testing/tests/iterationDriver BENCH_SOURCE_PATH=$(JAL_ROOT)/rvm/regression/tests/jBYTEmark:$(BENCH_HOME):$(DRIVER_SOURCE_PATH) START_NAME=Driver START_ARGS=2 jBYTEmark main Modified: rvmroot/trunk/rvm/regression/tests/jgf/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/jgf/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/jgf/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -32,7 +32,7 @@ ifeq ($(MODE),PERFORMANCE) -DRIVER_SOURCE_PATH=$(JAL_ROOT)/rvm/src/examples/iterationDriver +DRIVER_SOURCE_PATH=$(JAL_ROOT)/testing/tests/iterationDriver BENCH_SOURCE_PATH=$(BENCH_HOME):$(DRIVER_SOURCE_PATH):$(BENCH_HOME)/section1 START_NAME=Driver START_ARGS=2 JGFAll main Modified: rvmroot/trunk/rvm/regression/tests/jni/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/jni/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/jni/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -12,7 +12,7 @@ # include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/jni +BENCH_HOME=$(JAL_ROOT)/testing/tests/jni BENCH_SOURCE_PATH=$(BENCH_HOME) HEAPSIZE=64 START_NAME= Modified: rvmroot/trunk/rvm/regression/tests/memberNaming/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/memberNaming/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/memberNaming/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -8,7 +8,7 @@ # include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/memberNaming +BENCH_HOME=$(JAL_ROOT)/testing/tests/memberNaming BENCH_SOURCE_PATH=$(BENCH_HOME) HEAPSIZE=150 TIME_LIMIT=300 Modified: rvmroot/trunk/rvm/regression/tests/opttests/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/opttests/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/opttests/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -21,7 +21,7 @@ include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/opttests +BENCH_HOME=$(JAL_ROOT)/testing/tests/opttests BENCH_SOURCE_PATH=$(BENCH_HOME) HEAPSIZE = 150 EXPECTED=Tests.expected Modified: rvmroot/trunk/rvm/regression/tests/reflect/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/reflect/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/reflect/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -8,7 +8,7 @@ # include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/reflect +BENCH_HOME=$(JAL_ROOT)/testing/tests/reflect BENCH_SOURCE_PATH=$(BENCH_HOME) HEAPSIZE=150 TIME_LIMIT=300 Modified: rvmroot/trunk/rvm/regression/tests/serialization/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/serialization/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/serialization/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -8,7 +8,7 @@ # include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/serialization +BENCH_HOME=$(JAL_ROOT)/testing/tests/serialization BENCH_SOURCE_PATH=$(BENCH_HOME) HEAPSIZE=50 TIME_LIMIT=300 Modified: rvmroot/trunk/rvm/regression/tests/threads/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/threads/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/threads/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -8,7 +8,7 @@ # include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/threads +BENCH_HOME=$(JAL_ROOT)/testing/tests/threads BENCH_SOURCE_PATH=$(BENCH_HOME) HEAPSIZE=150 NON_DETERMINISTIC_OUTPUT_ORDER=YES Modified: rvmroot/trunk/rvm/regression/tests/utf8/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/utf8/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/utf8/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -8,7 +8,7 @@ # include $(RVM_BUILD)/Make.rules.target -BENCH_HOME=$(JAL_ROOT)/rvm/src/examples/utf8 +BENCH_HOME=$(JAL_ROOT)/testing/tests/utf8 BENCH_SOURCE_PATH=$(WORKING) $(BENCH_HOME) HEAPSIZE=150 START_NAME=utf8test Modified: rvmroot/trunk/rvm/regression/tests/xalan/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/xalan/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/xalan/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -14,7 +14,7 @@ HEAPSIZE=250 -DRIVER_SOURCE_PATH=$(JAL_ROOT)/rvm/src/examples/iterationDriver +DRIVER_SOURCE_PATH=$(JAL_ROOT)/testing/tests/iterationDriver BENCH_SOURCE_PATH=$(DRIVER_SOURCE_PATH) BENCH_CLASS_PATH=$(BENCH_HOME)/bin/xalan.jar:$(BENCH_HOME)/bin/xercesImpl.jar:$(BENCH_HOME)/bin/xml-apis.jar:$(BENCH_HOME)/bin/xalansamples.jar:$(BENCH_HOME)/bin/xsltc.jar Modified: rvmroot/trunk/rvm/regression/tests/xerces/Makefile =================================================================== --- rvmroot/trunk/rvm/regression/tests/xerces/Makefile 2006-08-24 14:45:07 UTC (rev 10736) +++ rvmroot/trunk/rvm/regression/tests/xerces/Makefile 2006-08-24 16:19:29 UTC (rev 10737) @@ -14,7 +14,7 @@ HEAPSIZE=150 -DRIVER_SOURCE_PATH=$(JAL_ROOT)/rvm/src/examples/iterationDriver +DRIVER_SOURCE_PATH=$(JAL_ROOT)/testing/tests/iterationDriver BENCH_SOURCE_PATH=$(DRIVER_SOURCE_PATH) BENCH_CLASS_PATH=$(BENCH_HOME)/build/xercesImpl.jar:$(BENCH_HOME)/build/xercesSamples.jar:$(BENCH_HOME)/build/xmlParserAPIs.jar:$(XML_DATA)/shakespeare.1.10.xml.zip Copied: rvmroot/trunk/testing/tests (from rev 10735, rvmroot/trunk/rvm/src/examples) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2006-08-31 07:14:38
|
Revision: 10743 http://svn.sourceforge.net/jikesrvm/?rev=10743&view=rev Author: steveb-oss Date: 2006-08-31 00:14:19 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Fixed minor bug where assumption is made about the offset between object reference and array base (element zero). Previously the value was actually uninitialized, but worked only because the correct value was zero! Modified Paths: -------------- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java rvmroot/trunk/MMTk/src/org/mmtk/policy/CopySpace.java rvmroot/trunk/MMTk/src/org/mmtk/vm/ObjectModel.java rvmroot/trunk/MMTk/src/org/mmtk/vm/VM.java rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeaderConstants.java Modified: rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java =================================================================== --- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java 2006-08-31 06:32:10 UTC (rev 10742) +++ rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java 2006-08-31 07:14:19 UTC (rev 10743) @@ -15,6 +15,7 @@ import com.ibm.JikesRVM.VM_Magic; import com.ibm.JikesRVM.VM_Memory; import com.ibm.JikesRVM.VM_ObjectModel; +import com.ibm.JikesRVM.VM_JavaHeaderConstants; import com.ibm.JikesRVM.classloader.VM_Atom; import com.ibm.JikesRVM.classloader.VM_Array; import com.ibm.JikesRVM.classloader.VM_Class; @@ -36,6 +37,9 @@ * @date $Date: 2006/06/19 06:08:15 $ */ public final class ObjectModel extends org.mmtk.vm.ObjectModel implements Constants, VM_Constants, Uninterruptible { + + protected final Offset getArrayBaseOffset() { return VM_JavaHeaderConstants.ARRAY_BASE_OFFSET; } + /** * Copy an object using a plan's allocCopy to get space and install * the forwarding pointer. On entry, <code>from</code> must have Modified: rvmroot/trunk/MMTk/src/org/mmtk/policy/CopySpace.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/policy/CopySpace.java 2006-08-31 06:32:10 UTC (rev 10742) +++ rvmroot/trunk/MMTk/src/org/mmtk/policy/CopySpace.java 2006-08-31 07:14:19 UTC (rev 10743) @@ -260,7 +260,7 @@ setForwardingPointer(object, newObject); trace.enqueue(newObject); // Scan it later - return newObject; + return newObject; } } Modified: rvmroot/trunk/MMTk/src/org/mmtk/vm/ObjectModel.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/vm/ObjectModel.java 2006-08-31 06:32:10 UTC (rev 10742) +++ rvmroot/trunk/MMTk/src/org/mmtk/vm/ObjectModel.java 2006-08-31 07:14:19 UTC (rev 10743) @@ -210,4 +210,23 @@ * @return The type object for <code>object</code> */ public abstract MMType getObjectType(ObjectReference object); + + /* + * NOTE: The following methods must be implemented by subclasses of this + * class, but are internal to the VM<->MM interface glue, so are never + * called by MMTk users. + */ + /** @return The offset from array reference to element zero */ + protected abstract Offset getArrayBaseOffset(); + + /* + * NOTE: These methods should not be called by anything other than the + * reflective mechanisms in org.mmtk.vm.VM, and are not implemented by + * subclasses. This hack exists only to allow us to declare the respective + * methods as protected. + */ + static Offset arrayBaseOffsetTrapdoor(ObjectModel o) { + return o.getArrayBaseOffset(); + } + } Modified: rvmroot/trunk/MMTk/src/org/mmtk/vm/VM.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/vm/VM.java 2006-08-31 06:32:10 UTC (rev 10742) +++ rvmroot/trunk/MMTk/src/org/mmtk/vm/VM.java 2006-08-31 07:14:19 UTC (rev 10743) @@ -2,6 +2,7 @@ import org.mmtk.vm.SynchronizedCounter; import org.vmmagic.unboxed.Address; +import org.vmmagic.unboxed.Offset; public class VM { @@ -34,6 +35,8 @@ public static final int MAX_BYTES_PADDING; /** The value to store in alignment holes */ public static final int ALIGNMENT_VALUE; + /** The offset from an array reference to element zero */ + public static final Offset ARRAY_BASE_OFFSET; /* * VM-specific functionality captured in a series of singleton classs @@ -115,6 +118,7 @@ MAX_ALIGNMENT_SHIFT = Memory.maxAlignmentShiftTrapdoor(memory); MAX_BYTES_PADDING = Memory.maxBytesPaddingTrapdoor(memory); ALIGNMENT_VALUE = Memory.alignmentValueTrapdoor(memory); + ARRAY_BASE_OFFSET = ObjectModel.arrayBaseOffsetTrapdoor(objectModel); } public static Lock newLock(String name) { Modified: rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeaderConstants.java =================================================================== --- rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeaderConstants.java 2006-08-31 06:32:10 UTC (rev 10742) +++ rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeaderConstants.java 2006-08-31 07:14:19 UTC (rev 10743) @@ -43,7 +43,7 @@ static final Offset JAVA_HEADER_OFFSET = ARRAY_LENGTH_OFFSET.minus(JAVA_HEADER_BYTES); static final Offset MISC_HEADER_OFFSET = JAVA_HEADER_OFFSET.minus(MISC_HEADER_BYTES); static final Offset GC_HEADER_OFFSET = MISC_HEADER_OFFSET.minus(GC_HEADER_BYTES); - + static final Offset ARRAY_BASE_OFFSET = Offset.zero(); /** * This object model supports two schemes for hashcodes: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-08-31 16:28:43
|
Revision: 10744 http://svn.sourceforge.net/jikesrvm/?rev=10744&view=rev Author: dgrove-oss Date: 2006-08-31 09:28:28 -0700 (Thu, 31 Aug 2006) Log Message: ----------- patch 1549283: support for optional JNI 1.4 features Modified Paths: -------------- rvmroot/trunk/rvm/bin/jconfigure rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java rvmroot/trunk/testing/harness/tests/jni/Makefile Added Paths: ----------- rvmroot/trunk/rvm/src/vm/libSupport/gnu/classpath/JikesRVMSupport.java rvmroot/trunk/rvm/src/vm/libSupport/java/nio/ rvmroot/trunk/rvm/src/vm/libSupport/java/nio/JikesRVMSupport.java rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.c rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.java Modified: rvmroot/trunk/rvm/bin/jconfigure =================================================================== --- rvmroot/trunk/rvm/bin/jconfigure 2006-08-31 07:14:19 UTC (rev 10743) +++ rvmroot/trunk/rvm/bin/jconfigure 2006-08-31 16:28:28 UTC (rev 10744) @@ -1916,6 +1916,7 @@ $RVM_ROOT/rvm/src/vm/libSupport/java/lang/reflect $RVM_ROOT/rvm/src/vm/libSupport/java/net $RVM_ROOT/rvm/src/vm/libSupport/java/io + $RVM_ROOT/rvm/src/vm/libSupport/java/nio EOF # We actually aren't using java.security right now, except in a branch, # but this does no harm. Modified: rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java =================================================================== --- rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java 2006-08-31 07:14:19 UTC (rev 10743) +++ rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java 2006-08-31 16:28:28 UTC (rev 10744) @@ -11,6 +11,7 @@ import java.io.UTFDataFormatException; import java.lang.reflect.*; +import java.nio.Buffer; import org.vmmagic.pragma.*; import org.vmmagic.unboxed.*; @@ -5764,29 +5765,44 @@ * These functions are in JNI 1.4 */ - /** The VM is not required to support this. */ - private static Address NewDirectByteBuffer(VM_JNIEnvironment env, + private static int NewDirectByteBuffer(VM_JNIEnvironment env, Address address, long capacity) { if (traceJNI) VM.sysWrite("JNI called: NewDirectByteBuffer \n"); - if (traceJNI) VM.sysWrite("NewDirectByteBuffer not supported yet \n"); - return Address.zero(); + try { + Buffer buffer = java.nio.JikesRVMSupport.newDirectByteBuffer(address, capacity); + return env.pushJNIRef(buffer); + } catch (Throwable unexpected) { + if (traceJNI) unexpected.printStackTrace(System.err); + env.recordException(unexpected); + return 0; + } } - /** The VM is not required to support this. */ private static Address GetDirectBufferAddress(VM_JNIEnvironment env, int bufJREF) { if (traceJNI) VM.sysWrite("JNI called: GetDirectBufferAddress \n"); - if (traceJNI) VM.sysWrite("GetDirectBufferAddress not supported yet\n"); - return Address.zero(); + try { + Buffer buffer = (Buffer)env.getJNIRef(bufJREF); + return java.nio.JikesRVMSupport.getDirectBufferAddress(buffer); + } catch (Throwable unexpected) { + if (traceJNI) unexpected.printStackTrace(System.err); + env.recordException(unexpected); + return Address.zero(); + } } - /** The VM is not required to support this. */ private static long GetDirectBufferCapacity(VM_JNIEnvironment env, int bufJREF) { if (traceJNI) VM.sysWrite("JNI called: GetDirectBufferCapacity \n"); - if (traceJNI) VM.sysWrite("GetDirectBufferCapacity not supported yet\n"); - return -1; + try { + Buffer buffer = (Buffer)env.getJNIRef(bufJREF); + return buffer.capacity(); + } catch (Throwable unexpected) { + if (traceJNI) unexpected.printStackTrace(System.err); + env.recordException(unexpected); + return -1; + } } /******************************************************************* Added: rvmroot/trunk/rvm/src/vm/libSupport/gnu/classpath/JikesRVMSupport.java =================================================================== --- rvmroot/trunk/rvm/src/vm/libSupport/gnu/classpath/JikesRVMSupport.java (rev 0) +++ rvmroot/trunk/rvm/src/vm/libSupport/gnu/classpath/JikesRVMSupport.java 2006-08-31 16:28:28 UTC (rev 10744) @@ -0,0 +1,30 @@ +/* + * (C) Copyright IBM Corp 2002, 2004, 2005 + */ +//$Id: JikesRVMSupport.java,v 1.16 2006/03/01 12:23:56 dgrove-oss Exp $ +package gnu.classpath; + +import org.vmmagic.unboxed.Address; + +/** + * Library support interface of Jikes RVM + * + * @author Elias Naur + */ +public class JikesRVMSupport { + public static Address getAddressFromPointer(Pointer pointer) { + //-#if RVM_FOR_32_ADDR + return Address.fromIntSignExtend(((Pointer32)pointer).data); + //-#elif RVM_FOR_64_ADDR + return Address.fromLong(((Pointer64)pointer).data); + //-#endif + } + + public static Pointer getPointerFromAddress(Address address) { + //-#if RVM_FOR_32_ADDR + return new Pointer32(address.toInt()); + //-#elif RVM_FOR_64_ADDR + return new Pointer64(address.toLong()); + //-#endif + } +} Added: rvmroot/trunk/rvm/src/vm/libSupport/java/nio/JikesRVMSupport.java =================================================================== --- rvmroot/trunk/rvm/src/vm/libSupport/java/nio/JikesRVMSupport.java (rev 0) +++ rvmroot/trunk/rvm/src/vm/libSupport/java/nio/JikesRVMSupport.java 2006-08-31 16:28:28 UTC (rev 10744) @@ -0,0 +1,24 @@ +/* + * (C) Copyright IBM Corp 2002, 2004, 2005 + */ +//$Id: JikesRVMSupport.java,v 1.16 2006/03/01 12:23:56 dgrove-oss Exp $ +package java.nio; + +import org.vmmagic.unboxed.*; +import gnu.classpath.Pointer; + +/** + * Library support interface of Jikes RVM + * + * @author Elias Naur + */ +public class JikesRVMSupport { + public static Address getDirectBufferAddress(Buffer buffer) { + return gnu.classpath.JikesRVMSupport.getAddressFromPointer(buffer.address); + } + + public static Buffer newDirectByteBuffer(Address address, long capacity) { + Pointer pointer = gnu.classpath.JikesRVMSupport.getPointerFromAddress(address); + return new DirectByteBufferImpl.ReadWrite(null, pointer, (int)capacity, (int)capacity, 0); + } +} Modified: rvmroot/trunk/testing/harness/tests/jni/Makefile =================================================================== --- rvmroot/trunk/testing/harness/tests/jni/Makefile 2006-08-31 07:14:19 UTC (rev 10743) +++ rvmroot/trunk/testing/harness/tests/jni/Makefile 2006-08-31 16:28:28 UTC (rev 10744) @@ -36,8 +36,11 @@ # Tests for JNI 1.2 TESTS_12 := JNI12 StringRegion -TESTS := $(TESTS_11) $(TESTS_12) +# Tests for JNI 1.4 +TESTS_14 := TestJNIDirectBuffers +TESTS := $(TESTS_11) $(TESTS_12) $(TESTS_14) + LIBS = $(TESTS:%=lib%.a) $(TESTS:%=lib%.so) $(TESTS:%=lib%.jnilib) sanity: $(LIBS) $(TESTS) Added: rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.c =================================================================== --- rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.c (rev 0) +++ rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.c 2006-08-31 16:28:28 UTC (rev 10744) @@ -0,0 +1,46 @@ +#include <inttypes.h> +#include <jni.h> +#include "TestJNIDirectBuffers.h" + +int verbose=1; + +/* + * Class: FieldAccess + * Method: setVerboseOff + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_TestJNIDirectBuffers_setVerboseOff + (JNIEnv *env, jclass cls){ + verbose=0; +} + +#define SIZE 10 + +static jbyte native_bytes[SIZE]; + +JNIEXPORT void JNICALL Java_TestJNIDirectBuffers_putByte(JNIEnv *env, jclass clazz, jobject buffer, jint index, jbyte b) { + jbyte *bytes = (jbyte *)(*env)->GetDirectBufferAddress(env, buffer); + bytes[index] = b; +} + +JNIEXPORT jbyte JNICALL Java_TestJNIDirectBuffers_getByte(JNIEnv *env, jclass clazz, jobject buffer, jint index) { + jbyte *bytes = (jbyte *)(*env)->GetDirectBufferAddress(env, buffer); + return bytes[index]; +} + +JNIEXPORT jlong JNICALL Java_TestJNIDirectBuffers_getStaticNativeCapacity(JNIEnv *env, jclass clazz) { + return SIZE; +} + +JNIEXPORT jlong JNICALL Java_TestJNIDirectBuffers_getStaticNativeAddress(JNIEnv *env, jclass clazz) { + return (jlong)(intptr_t)native_bytes; +} + +JNIEXPORT jlong JNICALL Java_TestJNIDirectBuffers_getAddress(JNIEnv *env, jclass clazz, jobject buffer) { + void *address = (*env)->GetDirectBufferAddress(env, buffer); + return (jlong)(intptr_t)address; +} + +JNIEXPORT jobject JNICALL Java_TestJNIDirectBuffers_newByteBuffer(JNIEnv *env, jclass clazz, jlong address, jlong capacity) { + return (*env)->NewDirectByteBuffer(env, (void *)(intptr_t)address, capacity); +} Added: rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.java =================================================================== --- rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.java (rev 0) +++ rvmroot/trunk/testing/tests/jni/TestJNIDirectBuffers.java 2006-08-31 16:28:28 UTC (rev 10744) @@ -0,0 +1,102 @@ +import java.nio.*; + +public class TestJNIDirectBuffers { + + // set to true to get messages for each test + static boolean verbose = true; + static boolean allTestPass = true; + + public static void main(String[] args) throws Exception { + System.loadLibrary("TestJNIDirectBuffers"); + + if (args.length!=0) { + if (args[0].equals("-quiet")) { + verbose = false; + setVerboseOff(); + } + } + int returnValue; + + ByteBuffer buffer = ByteBuffer.allocateDirect(1); + + returnValue = testBuffer(buffer); + checkTest(returnValue, true, "testBuffer -- A"); + + long address = getStaticNativeAddress(); + long capacity = getStaticNativeCapacity(); + int returnVal = 0; + ByteBuffer native_buffer = newByteBuffer(address, capacity); + if (capacity != native_buffer.capacity()) { + printVerbose("Wrong capacity: " + capacity + " != " + native_buffer.capacity()); + checkTest(0, false, "CheckCapacity"); + } + long buffer_address = getAddress(native_buffer); + if (address != buffer_address) { + printVerbose("Wrong address: " + address + " != " + buffer_address); + checkTest(0, false, "CheckAddress"); + } + + returnValue = testBuffer(native_buffer); + checkTest(returnValue, true, "testBuffer -- B"); + + returnValue = testBuffer2(native_buffer); + checkTest(returnValue, true, "testBuffer2"); + + if (allTestPass) { + System.out.println("PASS: TestJNIDirectBuffers"); + } else { + System.out.println("FAIL: TestJNIDirectBuffers"); + } + } + + private static int testBuffer(ByteBuffer buffer) { + byte MAGIC_BYTE = (byte)0xde; + buffer.put(0, MAGIC_BYTE); + byte b = getByte(buffer, 0); + if (b != MAGIC_BYTE) { + printVerbose("Failed to get correct byte from native side: " + b + " != " + MAGIC_BYTE); + return 1; + } else { + return 0; + } + } + + private static int testBuffer2(ByteBuffer buffer) { + byte MAGIC_BYTE = (byte)0xad; + putByte(buffer, 0, MAGIC_BYTE); + byte b = buffer.get(0); + if (b != MAGIC_BYTE) { + printVerbose("Failed to put correct byte from native side: " + b + " != " + MAGIC_BYTE); + return 1; + } else { + return 0; + } + } + + + private final static native byte getByte(ByteBuffer buffer, int index); + private final static native void putByte(ByteBuffer buffer, int index, byte b); + private final static native long getAddress(ByteBuffer buffer); + private final static native long getStaticNativeAddress(); + private final static native long getStaticNativeCapacity(); + private final static native ByteBuffer newByteBuffer(long address, long capacity); + + public static native void setVerboseOff(); + + static void printVerbose(String str) { + if (verbose) + System.out.println(str); + } + + static void checkTest(int returnValue, boolean postCheck, String testName) { + if (returnValue==0 && postCheck) { + printVerbose("PASS: " + testName); + } else { + allTestPass = false; + printVerbose("FAIL: " + testName); + } + } + + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-11 13:12:08
|
Revision: 10764 http://svn.sourceforge.net/jikesrvm/?rev=10764&view=rev Author: dgrove-oss Date: 2006-09-11 06:11:46 -0700 (Mon, 11 Sep 2006) Log Message: ----------- patch 1551835 : Support for JNI_OnLoad. This patch changes the definition of the "syscall magic" so that the first argument to the magic syscall is now the address of the function (or in the case of POWEROPEN_API, the function description) that should be invoked. VM_SysCall is now a wrapper class that loads the proper target address from the bootrecord and invokes the real magic. Once the syscall magic is changed, it can then be used more generally to invoke dynamically loaded C functions (in particular JNI_OnLoad) functions as syscalls. Modified Paths: -------------- rvmroot/trunk/rvm/src/tools/bootImageRunner/GenerateInterfaceDeclarations.java rvmroot/trunk/rvm/src/tools/bootImageRunner/powerPC/libvm.C rvmroot/trunk/rvm/src/tools/bootImageRunner/sys.C rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_Compiler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_Compiler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_CallingConvention.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/VM_QuickCompiler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNICompiler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_OutOfLineMachineCode.java rvmroot/trunk/rvm/src/vm/classLoader/VM_TypeReference.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_GenerateMagic.java rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java rvmroot/trunk/rvm/src/vm/runtime/VM_Entrypoints.java rvmroot/trunk/rvm/src/vm/runtime/VM_SysCall.java rvmroot/trunk/testing/harness/tests/jni/Makefile Added Paths: ----------- rvmroot/trunk/rvm/src/vm/jni/VM_JNIJavaVM.java rvmroot/trunk/rvm/src/vm/runtime/VM_SysCallMagic.java rvmroot/trunk/testing/tests/jni/JNI_OnLoad.c rvmroot/trunk/testing/tests/jni/JNI_OnLoad.java Modified: rvmroot/trunk/rvm/src/tools/bootImageRunner/GenerateInterfaceDeclarations.java =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/GenerateInterfaceDeclarations.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/tools/bootImageRunner/GenerateInterfaceDeclarations.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -361,29 +361,10 @@ if (suffixIndex > 0) { // java field "xxxIP" corresponds to C function "xxx" String functionName = fieldName.substring(0, suffixIndex); - if (VM.BuildForAix || (VM.BuildForLinux && VM.BuildFor64Addr)) { - // e. g., - // sysFOOIP = ((AixLinkageLayout *)&sysFOO)->ip; - p(" br->" + fieldName + " = ((AixLinkageLayout *)&" + functionName + ")->ip;\n"); - } else { - // e. g., - //sysFOOIP = (int) sysFOO; - p(" br->" + fieldName + " = (int) " + functionName + ";\n"); - } + // e. g., + //sysFOOIP = (int) sysFOO; + p(" br->" + fieldName + " = (intptr_t)" + functionName + ";\n"); } - - suffixIndex = fieldName.indexOf("TOC"); - if (suffixIndex > 0) { - // java field "xxxTOC" corresponds to C function "xxx" - String functionName = fieldName.substring(0, suffixIndex); - if (VM.BuildForAix || (VM.BuildForLinux && VM.BuildFor64Addr)) { - // e. g., - // sysTOC = ((AixLinkageLayout *)&sys)->toc; - p(" br->" + fieldName + " = ((AixLinkageLayout *)&" + functionName + ")->toc;\n"); - } else { - p(" br->" + fieldName + " = 0;\n"); - } - } } p("}\n"); Modified: rvmroot/trunk/rvm/src/tools/bootImageRunner/powerPC/libvm.C =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/powerPC/libvm.C 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/tools/bootImageRunner/powerPC/libvm.C 2006-09-11 13:11:46 UTC (rev 10764) @@ -26,6 +26,7 @@ #define _GNU_SOURCE /* so that the Linux (GNU Libc) string.h will // include strsignal(), */ #endif + #include <stdio.h> #include <stdlib.h> #include <fcntl.h> @@ -1245,7 +1246,6 @@ fprintf(SysTraceFile, " spRegister: " FMTrvmPTR "\n", rvmPTR_ARG(bootRecord.spRegister)); fprintf(SysTraceFile, " ipRegister: " FMTrvmPTR "\n", rvmPTR_ARG(bootRecord.ipRegister)); fprintf(SysTraceFile, " tocRegister: " FMTrvmPTR "\n", rvmPTR_ARG(bootRecord.tocRegister)); - fprintf(SysTraceFile, " sysTOC: " FMTrvmPTR "\n", rvmPTR_ARG(bootRecord.sysTOC)); fprintf(SysTraceFile, " sysWriteCharIP: " FMTrvmPTR "\n", rvmPTR_ARG(bootRecord.sysWriteCharIP)); } @@ -1485,5 +1485,3 @@ fprintf(SysErrorFile, "Cannot CreateJavaVM on PowerPC yet"); return 1; } - - Modified: rvmroot/trunk/rvm/src/tools/bootImageRunner/sys.C =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/sys.C 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/tools/bootImageRunner/sys.C 2006-09-11 13:11:46 UTC (rev 10764) @@ -133,22 +133,6 @@ #define MANGLE16(x) x #endif - -//---------------------------// -// Environmental operations. // -//---------------------------// - -//!!TEMP - dummy function -//!!TODO: remove this when boot record has single "sysTOC" instead of multiple "sysXXXTOC" values -extern "C" void sys(void) __attribute__((noreturn)); - -extern "C" void -sys() -{ - fprintf(SysErrorFile, "%s: unexpected call to \"sys\"\n", Me); - sysExit(EXIT_STATUS_UNEXPECTED_CALL_TO_SYS); -} - // Console write (java character). // extern "C" void Modified: rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_Compiler.java =================================================================== --- rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_Compiler.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_Compiler.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -3139,8 +3139,8 @@ asm.emitPUSH_Reg(ESI); asm.emitPUSH_Reg(EDI); - // (2) Push args to target function (reversed) - for (int i=args.length-1; i>=0; i--) { + // (2) Push args to target function (reversed), except for the first argument + for (int i=args.length-1; i>=1; i--) { VM_TypeReference arg = args[i]; if (arg.isLongType() || arg.isDoubleType()) { asm.emitPUSH_RegDisp(SP, offsetToJavaArg.plus(4)); @@ -3152,12 +3152,11 @@ offsetToJavaArg = offsetToJavaArg.plus(8); paramBytes += 4; } - } + } - // (3) invoke target function - VM_Field ip = VM_Entrypoints.getSysCallField(m.getName().toString()); - asm.emitMOV_Reg_RegDisp(S0, JTOC, VM_Entrypoints.the_boot_recordField.getOffset()); - asm.emitCALL_RegDisp(S0, ip.getOffset()); + // (3) invoke target function with address given by the first argument + asm.emitMOV_Reg_RegDisp(S0, SP, offsetToJavaArg); + asm.emitCALL_Reg(S0); // (4) pop space for arguments asm.emitADD_Reg_Imm(SP, paramBytes); @@ -3167,8 +3166,8 @@ asm.emitPOP_Reg(ESI); asm.emitPOP_Reg(EBX); - // (6) pop expression stack - asm.emitADD_Reg_Imm(SP, paramBytes); + // (6) pop expression stack (including the first parameter) + asm.emitADD_Reg_Imm(SP, paramBytes + 4); // (7) push return value if (rtype.isLongType()) { @@ -3187,6 +3186,7 @@ return true; } + if (methodName == VM_MagicNames.getFramePointer) { asm.emitLEA_Reg_RegDisp(S0, SP, fp2spOffset(NO_SLOT)); asm.emitPUSH_Reg (S0); Modified: rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_Compiler.java =================================================================== --- rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_Compiler.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_Compiler.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -3367,21 +3367,22 @@ * @param methodToBeCalled method whose name indicates semantics of code to be generated * @return true if there was magic defined for the method */ - private boolean generateInlineCode(VM_MethodReference methodToBeCalled) { + private boolean generateInlineCode(VM_MethodReference methodToBeCalled) { VM_Atom methodName = methodToBeCalled.getName(); if (methodToBeCalled.getType() == VM_TypeReference.SysCall) { VM_TypeReference[] args = methodToBeCalled.getParameterTypes(); - // (1) Set up arguments according to OS calling convention + // (1) Set up arguments according to OS calling convention, excluding the first + // which is not an argument to the native function but the address of the function to call int paramWords = methodToBeCalled.getParameterWords(); int gp = FIRST_OS_PARAMETER_GPR; int fp = FIRST_OS_PARAMETER_FPR; - int stackIndex = paramWords; - int paramBytes = (VM.BuildFor64Addr? args.length : paramWords) * BYTES_IN_STACKSLOT; + int stackIndex = paramWords - 1; + int paramBytes = ((VM.BuildFor64Addr? args.length : paramWords) - 1)* BYTES_IN_STACKSLOT; int callee_param_index = - BYTES_IN_STACKSLOT - paramBytes; - for (int i=0; i<args.length; i++) { + for (int i=1; i<args.length; i++) { VM_TypeReference t = args[i]; if (t.isLongType()) { stackIndex -= 2; @@ -3455,8 +3456,8 @@ } // (2) Call it - VM_Field ip = VM_Entrypoints.getSysCallField(methodName.toString()); - generateSysCall(paramBytes, ip); + peekAddr(S0, paramWords - 1); // Load addres of function into S0 + generateSysCall(paramBytes); // make the call // (3) Pop Java expression stack discardSlots(paramWords); @@ -4373,6 +4374,17 @@ * appear in the parameter save area right to left (C conventions) */ private void generateSysCall(int parametersSize, VM_Field target) { + // acquire toc and ip from bootrecord + asm.emitLAddrToc(S0, VM_Entrypoints.the_boot_recordField.getOffset()); + asm.emitLAddrOffset(S0, S0, target.getOffset()); + generateSysCall(parametersSize); + } + + /** + * Generate a sys call where the address of the function or (when POWEROPEN_ABI is defined) + * function descriptor have been loaded into S0 already + */ + private void generateSysCall(int parametersSize) { int linkageAreaSize = parametersSize + BYTES_IN_STACKSLOT + (6 * BYTES_IN_STACKSLOT); if (VM.BuildFor32Addr) { @@ -4381,14 +4393,15 @@ asm.emitSTDU (FP, -linkageAreaSize, FP); // create linkage area } asm.emitSTAddr(JTOC, linkageAreaSize-BYTES_IN_STACKSLOT, FP); // save JTOC - - // acquire toc and ip from bootrecord - asm.emitLAddrToc(S0, VM_Entrypoints.the_boot_recordField.getOffset()); - asm.emitLAddrOffset(JTOC, S0, VM_Entrypoints.sysTOCField.getOffset()); - asm.emitLAddrOffset(0, S0, target.getOffset()); - + //-#if RVM_WITH_POWEROPEN_ABI + /* GPR0 is pointing to the function descriptor, so we need to load the TOC and IP from that */ + // Load TOC (Offset one word) + asm.emitLAddrOffset(JTOC, S0, Offset.fromInt(BYTES_IN_STACKSLOT)); + // Load IP (offset 0) + asm.emitLAddrOffset(S0, S0, Offset.zero()); + //-#endif // call it - asm.emitMTCTR(0); + asm.emitMTCTR(S0); asm.emitBCCTRL(); // cleanup Modified: rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_CallingConvention.java =================================================================== --- rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_CallingConvention.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_CallingConvention.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -70,10 +70,9 @@ */ public static void expandSysCall(OPT_Instruction s, OPT_IR ir) { OPT_RegisterOperand ip = null; - OPT_RegisterOperand t1 = - OPT_ConvertToLowLevelIR.getStatic(s, ir, VM_Entrypoints.the_boot_recordField); - OPT_RegisterOperand toc = OPT_ConvertToLowLevelIR.getField(s, ir, t1, VM_Entrypoints.sysTOCField); if (Call.getMethod(s) != null) { + OPT_RegisterOperand t1 = + OPT_ConvertToLowLevelIR.getStatic(s, ir, VM_Entrypoints.the_boot_recordField); OPT_MethodOperand nat = Call.getClearMethod(s); VM_Field target = null; target = nat.getMemberRef().asFieldReference().resolve(); @@ -81,7 +80,6 @@ } else { ip = (OPT_RegisterOperand)Call.getClearAddress(s); } - /* compute the parameter space */ int numberParams = Call.getNumberOfParams(s); //-#if RVM_FOR_32_ADDR @@ -110,7 +108,15 @@ ir.regpool.makeFPOp(), AC(Offset.fromIntSignExtend(5*BYTES_IN_ADDRESS)), null); // TODO: valid location? s.insertBack(s2); - s.insertBack(Move.create(REF_MOVE, ir.regpool.makeJTOCOp(ir,s), toc)); + //-#if RVM_WITH_POWEROPEN_ABI + s2 = Load.create(REF_LOAD, ir.regpool.makeJTOCOp(ir,s), ip, + AC(Offset.fromInt(BYTES_IN_ADDRESS)), null); + s.insertBack(s2); + OPT_RegisterOperand iptmp = ir.regpool.makeTempAddress(); + s2 = Load.create(REF_LOAD, iptmp, ip, AC(Offset.zero()), null); + s.insertBack(s2); + ip = iptmp; + //-#endif Call.mutate0(s, SYSCALL, Call.getClearResult(s), ip, null); s2 = Load.create(REF_LOAD, ir.regpool.makeJTOCOp(ir,s), ir.regpool.makeFPOp(), AC(Offset.fromIntSignExtend(5*BYTES_IN_ADDRESS)), null); // TODO: valid location? Modified: rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/VM_QuickCompiler.java =================================================================== --- rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/VM_QuickCompiler.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/VM_QuickCompiler.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -3192,6 +3192,13 @@ if (methodToBeCalled.getType() == VM_TypeReference.SysCall) { + // We'll have to rewrite the quick compiler to compile + // for the new SysCall interface once it can compile on ppc again. + // The ppc baseline and the optimizing compiler are already converted. + // The generateSysCall itself is converted (since it is the same as the baseline) + // but the following code needs to skip the first parameter and use it as + // a function address like in the baseline and opt compiler. + VM._assert(false); VM_TypeReference[] args = methodToBeCalled.getParameterTypes(); // (1) Set up arguments according to OS calling convention @@ -4190,7 +4197,7 @@ * * @param rawParameterSize: number of bytes in parameters (not including IP) */ - private void generateSysCall1(int rawParametersSize) { +/* private void generateSysCall1(int rawParametersSize) { int ipIndex = rawParametersSize >> LOG_BYTES_IN_STACKSLOT; // where to access IP parameter int linkageAreaSize = rawParametersSize + // values BYTES_IN_STACKSLOT + // saveJTOC @@ -4214,7 +4221,7 @@ asm.emitLAddr(JTOC, linkageAreaSize - BYTES_IN_STACKSLOT, FP); // restore JTOC asm.emitADDI (FP, linkageAreaSize, FP); // remove linkage area } - +*/ /** * Generate call and return sequence to invoke a C function through the * boot record field specificed by target. @@ -4290,9 +4297,12 @@ // acquire toc and ip from bootrecord asm.emitLAddrToc(S0, VM_Entrypoints.the_boot_recordField.getOffset()); - asm.emitLAddrOffset(JTOC, S0, VM_Entrypoints.sysTOCField.getOffset()); asm.emitLAddrOffset(0, S0, target.getOffset()); - + //-#if RVM_WITH_POWEROPEN_ABI + /* GPR0 points to the function descriptor, so we'll load TOC and IP from that */ + asm.emitLAddrOffset(JTOC, 0, BYTES_IN_STACKSLOT); + asm.emitLAddrOffset(0, 0, 0); + //-#endif // call it asm.emitMTCTR(0); asm.emitBCCTRL(); Modified: rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNICompiler.java =================================================================== --- rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNICompiler.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNICompiler.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -1218,8 +1218,12 @@ asm.emitLAddrToc(S1, VM_Entrypoints.the_boot_recordField.getOffset()); // get boot record address asm.emitMR (PROCESSOR_REGISTER, JTOC); // save JTOC so we can restore below - asm.emitLAddrOffset(JTOC, S1, VM_Entrypoints.sysTOCField.getOffset()); // load TOC for syscalls from bootrecord asm.emitLAddrOffset(KLUDGE_TI_REG, S1, VM_Entrypoints.sysVirtualProcessorYieldIPField.getOffset()); // load addr of function + //-#if RVM_WITH_POWEROPEN_ABI + /* the sysVPYIP field points to the function descriptor, so we'll load the IP and TOC from that */ + asm.emitLAddrOffset(JTOC, KLUDGE_TI_REG, Offset.fromInt(BYTES_IN_ADDRESS)); // load TOC + asm.emitLAddrOffset(KLUDGE_TI_REG, KLUDGE_TI_REG, Offset.zero()); + //-#endif asm.emitMTLR (KLUDGE_TI_REG); asm.emitBCLRL(); // call sysVirtualProcessorYield in sys.C asm.emitMR (JTOC, PROCESSOR_REGISTER); // restore JTOC Modified: rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_OutOfLineMachineCode.java =================================================================== --- rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_OutOfLineMachineCode.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_OutOfLineMachineCode.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -412,8 +412,12 @@ // if blocked in native, call C routine to do pthread_yield // asm.emitLAddrOffset (T2, JTOC, VM_Entrypoints.the_boot_recordField.getOffset()); // T2 gets boot record address - asm.emitLAddrOffset (JTOC, T2, VM_Entrypoints.sysTOCField.getOffset()); // load TOC for syscalls from bootrecord asm.emitLAddrOffset (T1, T2, VM_Entrypoints.sysVirtualProcessorYieldIPField.getOffset()); // load addr of function + //-#if RVM_WITH_POWEROPEN_ABI + /* T1 points to the function descriptor, so we'll load TOC and IP from that */ + asm.emitLAddrOffset(JTOC, T1, Offset.fromInt(BYTES_IN_ADDRESS)); // load TOC + asm.emitLAddrOffset(T1, T1, Offset.zero()); + //-#endif asm.emitMTLR (T1); asm.emitBCLRL (); // call sysVirtualProcessorYield in sys.C asm.emitB (label1); // retest the attempt to change status to IN_JAVAE Modified: rvmroot/trunk/rvm/src/vm/classLoader/VM_TypeReference.java =================================================================== --- rvmroot/trunk/rvm/src/vm/classLoader/VM_TypeReference.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/classLoader/VM_TypeReference.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -78,7 +78,7 @@ public static final VM_TypeReference ExtentArray = findOrCreate("Lorg/vmmagic/unboxed/ExtentArray;"); public static final VM_TypeReference CodeArray = findOrCreate("Lcom/ibm/JikesRVM/VM_CodeArray;"); public static final VM_TypeReference Magic = findOrCreate("Lcom/ibm/JikesRVM/VM_Magic;"); - public static final VM_TypeReference SysCall = findOrCreate("Lcom/ibm/JikesRVM/VM_SysCall;"); + public static final VM_TypeReference SysCall = findOrCreate("Lcom/ibm/JikesRVM/VM_SysCallMagic;"); public static final VM_TypeReference JavaLangObject = findOrCreate("Ljava/lang/Object;"); public static final VM_TypeReference JavaLangClass = findOrCreate("Ljava/lang/Class;"); @@ -365,7 +365,7 @@ * Does 'this' refer to VM_Magic? */ public final boolean isMagicType() { - return this == Magic || this == SysCall + return this == Magic || this == SysCall || this == ObjectReference || this == ObjectReferenceArray || isWordType() || isWordArrayType() || isCodeType() || isCodeArrayType(); Modified: rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_GenerateMagic.java =================================================================== --- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_GenerateMagic.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_GenerateMagic.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -348,15 +348,15 @@ loc)); } else if (meth.getType() == VM_TypeReference.SysCall) { // All methods of VM_SysCall have the following signature: - // callNAME(Address code, <var args to pass via native calling convention>) + // callNAME(Address functionAddress, <var args to pass via native calling convention>) + // With POWEROPEN_ABI, functionAddress points to the function descriptor VM_TypeReference[] args = meth.getParameterTypes(); - int numArgs = args.length; - VM_Field ip = VM_Entrypoints.getSysCallField(meth.getName().toString()); - OPT_MethodOperand mo = OPT_MethodOperand.STATIC(ip); - OPT_Instruction call = Call.create(SYSCALL, null, null, mo, null, args.length); - for (int i = args.length-1; i >= 0; i--) { - Call.setParam(call, i, bc2ir.pop(args[i])); + OPT_Instruction call = Call.create(SYSCALL, null, null, null, null, args.length - 1); + for (int i = args.length-1; i >= 1; i--) { + Call.setParam(call, i - 1, bc2ir.pop(args[i])); } + OPT_Operand functionAddress = bc2ir.pop(args[0]); + Call.setAddress(call, functionAddress); if (!returnType.isVoidType()) { OPT_RegisterOperand op0 = gc.temps.makeTemp(returnType); Call.setResult(call, op0); Modified: rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java =================================================================== --- rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -5381,22 +5381,18 @@ } } - // this is the address of the malloc'ed JavaVM struct (one per VM) - private static Address JavaVM; - - private static native Address createJavaVM(); - private static int GetJavaVM(VM_JNIEnvironment env, Address StarStarJavaVM) { if (traceJNI) VM.sysWrite("JNI called: GetJavaVM \n"); + try { + if (traceJNI) VM.sysWriteln(StarStarJavaVM); + Address JavaVM = VM_JNIJavaVM.getJavaVM(); + StarStarJavaVM.store(JavaVM); - if (JavaVM == null) { - JavaVM = createJavaVM(); - } - - if (traceJNI) VM.sysWriteln(StarStarJavaVM); - StarStarJavaVM.store(JavaVM); - - return 0; + return 0; + } catch (Throwable unexpected) { + if (traceJNI) unexpected.printStackTrace(System.err); + return -1; + } } /******************************************************************* Added: rvmroot/trunk/rvm/src/vm/jni/VM_JNIJavaVM.java =================================================================== --- rvmroot/trunk/rvm/src/vm/jni/VM_JNIJavaVM.java (rev 0) +++ rvmroot/trunk/rvm/src/vm/jni/VM_JNIJavaVM.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -0,0 +1,26 @@ +/* + * (C) Copyright IBM Corp. 2001 + */ +//$Id: VM_JNIJavaVM.java 4855 2003-09-25 16:55:52Z dgrove-oss $ +package com.ibm.JikesRVM.jni; + +import org.vmmagic.unboxed.Address; + +/** + * Holder class for the global JavaVM instance + * used by JNI_OnLoad and JNIEnv.GetJavaVM. + * + * @author Elias Naur + */ +public final class VM_JNIJavaVM { + // this is the address of the malloc'ed JavaVM struct (one per VM) + private static Address JavaVM; + + private static native Address createJavaVM(); + + public static Address getJavaVM() { + if (JavaVM == null) + JavaVM = createJavaVM(); + return JavaVM; + } +} Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -214,17 +214,6 @@ // Host operating system entrypoints - see "sys.C" // - //-#if RVM_FOR_POWERPC - /** - * value to place in TOC register when issuing "sys" calls - */ - public Address sysTOC; - /** - * dummy function to pair with sysTOC - */ - Address sysIP; - //-#endif - // lowlevel write to console public Address sysWriteCharIP; public Address sysWriteIP; Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -4,6 +4,7 @@ //$Id$ package com.ibm.JikesRVM; +import com.ibm.JikesRVM.jni.VM_JNIJavaVM; import com.ibm.JikesRVM.util.*; import java.util.Iterator; import org.vmmagic.unboxed.*; @@ -25,12 +26,12 @@ /** * The name of the library */ - private String libName; + private final String libName; /** * Value returned from dlopen */ - private Address libHandler; + private final Address libHandler; /** * Load a dynamic library and maintain it in this object. @@ -64,12 +65,33 @@ } libName = libraryName; + try { + callOnLoad(); + } catch (UnsatisfiedLinkError e) { + unload(); + throw e; + } if (VM.verboseJNI) { VM.sysWriteln("[Loaded native library: "+libName+"]"); } } + private void callOnLoad() { + Address JNI_OnLoadAddress = getSymbol("JNI_OnLoad"); + if (!JNI_OnLoadAddress.isZero()) { + int version = VM_SysCallMagic.JNI_OnLoad(JNI_OnLoadAddress, VM_JNIJavaVM.getJavaVM(), Address.zero()); + checkJNIVersion(version); + } + } + + private static void checkJNIVersion(int version) { + int major = version >>> 16; + int minor = version & 0xFFFF; + if (major > 1 || minor > 4) + throw new UnsatisfiedLinkError("Unsupported JNI version: " + major + "." + minor); + } + /** * @return the true name of the dynamic library */ Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_Entrypoints.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_Entrypoints.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_Entrypoints.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -210,7 +210,6 @@ public static final VM_Field sysDoubleToLongIPField = getField("Lcom/ibm/JikesRVM/VM_BootRecord;", "sysDoubleToLongIP", "Lorg/vmmagic/unboxed/Address;"); //-#if RVM_FOR_POWERPC public static final VM_Field sysDoubleRemainderIPField = getField("Lcom/ibm/JikesRVM/VM_BootRecord;", "sysDoubleRemainderIP", "Lorg/vmmagic/unboxed/Address;"); - public static final VM_Field sysTOCField = getField("Lcom/ibm/JikesRVM/VM_BootRecord;", "sysTOC", "Lorg/vmmagic/unboxed/Address;"); //-#endif public static final VM_Field edgeCountersField = getField("Lcom/ibm/JikesRVM/VM_EdgeCounts;", "data", "[[I"); Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_SysCall.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_SysCall.java 2006-09-11 12:44:40 UTC (rev 10763) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_SysCall.java 2006-09-11 13:11:46 UTC (rev 10764) @@ -8,20 +8,16 @@ import org.vmmagic.pragma.*; /** - * Support for lowlevel (ie non-JNI) invocation of C functions. + * Support for lowlevel (ie non-JNI) invocation of C functions with static addresses. * * All methods of this class have the following signature: * <pre> * public static <TYPE> NAME(<args to pass to sysNAME via native calling convention>) * </pre> - * When one of Jikes RVM's compilers encounters an invokestatic that invokes - * a method of this class, instead of generating code that calls the method - * it looks up offset of the matching function pointer in VM_BootRecord.java - * and generates code to invoke it passing the rest of the arguments - * using the native OS calling convention. The result of the call is assumed - * to be returned using the native OS calling convention. + * which will call the corresponding method in VM_SysCallMagic with the added + * function address from the boot image. * <p> - * NOTE: From the standpoint of the rest of the VM, an invocation + * NOTE: From the standpoint of the rest of the VM, an invocation * to a method of VM_SysCall is uninterruptible. * <p> * NOTE: There must be a matching field NAMEIP in VM_BootRecord.java @@ -33,89 +29,165 @@ public class VM_SysCall implements Uninterruptible { // lowlevel write to console - public static void sysWriteChar(char v) {} - public static void sysWrite(int value, int hexToo) {} - public static void sysWriteLong(long value, int hexToo) {} - public static void sysWriteDouble(double value, int postDecimalDigits) {} + public static void sysWriteChar(char v) { + VM_SysCallMagic.sysWriteChar(VM_BootRecord.the_boot_record.sysWriteCharIP, v); + } + public static void sysWrite(int value, int hexToo) { + VM_SysCallMagic.sysWrite(VM_BootRecord.the_boot_record.sysWriteIP, value, hexToo); + } + public static void sysWriteLong(long value, int hexToo) { + VM_SysCallMagic.sysWriteLong(VM_BootRecord.the_boot_record.sysWriteLongIP, value, hexToo); + } + public static void sysWriteDouble(double value, int postDecimalDigits) { + VM_SysCallMagic.sysWriteDouble(VM_BootRecord.the_boot_record.sysWriteDoubleIP, value, postDecimalDigits); + } // startup/shutdown - public static void sysExit(int value) {} - public static int sysArg(int argno, byte[] buf, int buflen) { return 0; } + public static void sysExit(int value) { + VM_SysCallMagic.sysExit(VM_BootRecord.the_boot_record.sysExitIP, value); + } + public static int sysArg(int argno, byte[] buf, int buflen) { + return VM_SysCallMagic.sysArg(VM_BootRecord.the_boot_record.sysArgIP, argno, buf, buflen); + } // misc. info on the process -- used in startup/shutdown public static int sysGetenv(byte[] varName, byte[] buf, int limit) { - return -2; + return VM_SysCallMagic.sysGetenv(VM_BootRecord.the_boot_record.sysGetenvIP, varName, buf, limit); } // memory - public static void sysCopy(Address dst, Address src, Extent cnt) {} - public static void sysFill(Address dst, int pattern, Extent cnt) {} - public static Address sysMalloc(int length) { return null; } - public static void sysFree(Address location) {} - public static void sysZero(Address dst, Extent cnt) {} - public static void sysZeroPages(Address dst, int cnt) {} - public static void sysSyncCache(Address address, int size) {} + public static void sysCopy(Address dst, Address src, Extent cnt) { + VM_SysCallMagic.sysCopy(VM_BootRecord.the_boot_record.sysCopyIP, dst, src, cnt); + } + public static void sysFill(Address dst, int pattern, Extent cnt) { + VM_SysCallMagic.sysFill(VM_BootRecord.the_boot_record.sysFillIP, dst, pattern, cnt); + } + public static Address sysMalloc(int length) { + return VM_SysCallMagic.sysMalloc(VM_BootRecord.the_boot_record.sysMallocIP, length); + } + public static void sysFree(Address location) { + VM_SysCallMagic.sysFree(VM_BootRecord.the_boot_record.sysFreeIP, location); + } + public static void sysZero(Address dst, Extent cnt) { + VM_SysCallMagic.sysZero(VM_BootRecord.the_boot_record.sysZeroIP, dst, cnt); + } + public static void sysZeroPages(Address dst, int cnt) { + VM_SysCallMagic.sysZeroPages(VM_BootRecord.the_boot_record.sysZeroPagesIP, dst, cnt); + } + public static void sysSyncCache(Address address, int size) { + VM_SysCallMagic.sysSyncCache(VM_BootRecord.the_boot_record.sysSyncCacheIP, address, size); + } // files - public static int sysStat(byte[] name, int kind) { return 0; } - public static int sysList(byte[] name, byte[] buf, int limit) { - return 0; + public static int sysStat(byte[] name, int kind) { + return VM_SysCallMagic.sysStat(VM_BootRecord.the_boot_record.sysStatIP, name, kind); } - public static int sysOpen(byte[] name, int how) { return 0; } + public static int sysList(byte[] name, byte[] buf, int limit) { + return VM_SysCallMagic.sysList(VM_BootRecord.the_boot_record.sysListIP, name, buf, limit); + } + public static int sysOpen(byte[] name, int how) { + return VM_SysCallMagic.sysOpen(VM_BootRecord.the_boot_record.sysOpenIP, name, how); + } public static int sysUtime(byte[] fileName, int modTimeSec) { - return 0; + return VM_SysCallMagic.sysUtime(VM_BootRecord.the_boot_record.sysUtimeIP, fileName, modTimeSec); } - public static int sysReadByte(int fd) { return 0; } - public static int sysWriteByte(int fd, int data) { return 0; } - public static int sysReadBytes(int fd, Address buf, int cnt) { return 0; } - public static int sysWriteBytes(int fd, Address buf, int cnt) { return 0; } - public static int sysSeek(int fd, int offset, int whence) { return 0; } - public static int sysClose(int fd) { return 0; } - public static int sysDelete(byte[] name) { return 0; } - public static int sysRename(byte[] fromName, byte[] toName) { return 0; } - public static int sysMkDir(byte[] name) { return 0; } - public static int sysBytesAvailable(int fd) { return 0; } - public static int sysIsValidFD(int fd) { return 0; } - public static int sysLength(int fd) { return 0; } - public static int sysSetLength(int fd, int len) { return 0; } - public static int sysSyncFile(int fd) { return 0; } - public static int sysIsTTY(int fd) { return 0; } - public static int sysSetFdCloseOnExec(int fd) { return 0; } - public static int sysAccess(byte[] name, int kind) { return 0; } + public static int sysReadByte(int fd) { + return VM_SysCallMagic.sysReadByte(VM_BootRecord.the_boot_record.sysReadByteIP, fd); + } + public static int sysWriteByte(int fd, int data) { + return VM_SysCallMagic.sysWriteByte(VM_BootRecord.the_boot_record.sysWriteByteIP, fd, data); + } + public static int sysReadBytes(int fd, Address buf, int cnt) { + return VM_SysCallMagic.sysReadBytes(VM_BootRecord.the_boot_record.sysReadBytesIP, fd, buf, cnt); + } + public static int sysWriteBytes(int fd, Address buf, int cnt) { + return VM_SysCallMagic.sysWriteBytes(VM_BootRecord.the_boot_record.sysWriteBytesIP, fd, buf, cnt); + } + public static int sysSeek(int fd, int offset, int whence) { + return VM_SysCallMagic.sysSeek(VM_BootRecord.the_boot_record.sysSeekIP, fd, offset, whence); + } + public static int sysClose(int fd) { + return VM_SysCallMagic.sysClose(VM_BootRecord.the_boot_record.sysCloseIP, fd); + } + public static int sysDelete(byte[] name) { + return VM_SysCallMagic.sysDelete(VM_BootRecord.the_boot_record.sysDeleteIP, name); + } + public static int sysRename(byte[] fromName, byte[] toName) { + return VM_SysCallMagic.sysRename(VM_BootRecord.the_boot_record.sysRenameIP, fromName, toName); + } + public static int sysMkDir(byte[] name) { + return VM_SysCallMagic.sysMkDir(VM_BootRecord.the_boot_record.sysMkDirIP, name); + } + public static int sysBytesAvailable(int fd) { + return VM_SysCallMagic.sysBytesAvailable(VM_BootRecord.the_boot_record.sysBytesAvailableIP, fd); + } + public static int sysIsValidFD(int fd) { + return VM_SysCallMagic.sysIsValidFD(VM_BootRecord.the_boot_record.sysIsValidFDIP, fd); + } + public static int sysLength(int fd) { + return VM_SysCallMagic.sysLength(VM_BootRecord.the_boot_record.sysLengthIP, fd); + } + public static int sysSetLength(int fd, int len) { + return VM_SysCallMagic.sysSetLength(VM_BootRecord.the_boot_record.sysSetLengthIP, fd, len); + } + public static int sysSyncFile(int fd) { + return VM_SysCallMagic.sysSyncFile(VM_BootRecord.the_boot_record.sysSyncFileIP, fd); + } + public static int sysIsTTY(int fd) { + return VM_SysCallMagic.sysIsTTY(VM_BootRecord.the_boot_record.sysIsTTYIP, fd); + } + public static int sysSetFdCloseOnExec(int fd) { + return VM_SysCallMagic.sysSetFdCloseOnExec(VM_BootRecord.the_boot_record.sysSetFdCloseOnExecIP, fd); + } + public static int sysAccess(byte[] name, int kind) { + return VM_SysCallMagic.sysAccess(VM_BootRecord.the_boot_record.sysAccessIP, name, kind); + } // shm* - memory mapping - public static int sysShmget(int key, int size, int flags) { return 0; } - public static int sysShmctl(int shmid, int command) { return 0; } - public static Address sysShmat(int shmid, Address addr, int flags) { - return null; + public static int sysShmget(int key, int size, int flags) { + return VM_SysCallMagic.sysShmget(VM_BootRecord.the_boot_record.sysShmgetIP, key, size, flags); } - public static int sysShmdt(Address addr) { return 0; } + public static int sysShmctl(int shmid, int command) { + return VM_SysCallMagic.sysShmctl(VM_BootRecord.the_boot_record.sysShmctlIP, shmid, command); + } + public static Address sysShmat(int shmid, Address addr, int flags) { + return VM_SysCallMagic.sysShmat(VM_BootRecord.the_boot_record.sysShmatIP, shmid, addr, flags); + } + public static int sysShmdt(Address addr) { + return VM_SysCallMagic.sysShmdt(VM_BootRecord.the_boot_record.sysShmdtIP, addr); + } // mmap - memory mapping public static Address sysMMap(Address start, Extent length, int protection, - int flags, int fd, Offset offset) { - return null; + int flags, int fd, Offset offset) { + return VM_SysCallMagic.sysMMap(VM_BootRecord.the_boot_record.sysMMapIP, start, length, protection, + flags, fd, offset); } public static Address sysMMapErrno(Address start, Extent length, int protection, - int flags, int fd, Offset offset) { - return null; + int flags, int fd, Offset offset) { + return VM_SysCallMagic.sysMMapErrno(VM_BootRecord.the_boot_record.sysMMapErrnoIP, start, length, protection, + flags, fd, offset); } public static int sysMUnmap(Address start, Extent length) { - return 0; + return VM_SysCallMagic.sysMUnmap(VM_BootRecord.the_boot_record.sysMUnmapIP, start, length); } public static int sysMProtect(Address start, Extent length, int prot) { - return 0; + return VM_SysCallMagic.sysMProtect(VM_BootRecord.the_boot_record.sysMProtectIP, start, length, prot); } public static int sysMSync(Address start, Extent length, int flags) { - return 0; + return VM_SysCallMagic.sysMSync(VM_BootRecord.the_boot_record.sysMSyncIP, start, length, flags); } public static int sysMAdvise(Address start, Extent length, int advice) { - return 0; + return VM_SysCallMagic.sysMAdvise(VM_BootRecord.the_boot_record.sysMAdviseIP, start, length, advice); } - public static int sysGetPageSize() { return 0; } + public static int sysGetPageSize() { + return VM_SysCallMagic.sysGetPageSize(VM_BootRecord.the_boot_record.sysGetPageSizeIP); + } // threads - public static int sysNumProcessors() { return 0; } + public static int sysNumProcessors() { + return VM_SysCallMagic.sysNumProcessors(VM_BootRecord.the_boot_record.sysNumProcessorsIP); + } /** * Create a virtual processor (aka "unix kernel thread", "pthread"). * @param jtoc register values to use for thread startup @@ -127,41 +199,80 @@ public static int sysVirtualProcessorCreate(Address jtoc, Address pr, Address ip, - Address fp) { - return 0; + Address fp) { + return VM_SysCallMagic.sysVirtualProcessorCreate(VM_BootRecord.the_boot_record.sysVirtualProcessorCreateIP, jtoc, + pr, + ip, + fp); } /** * Bind execution of current virtual processor to specified physical cpu. * @param cpuid physical cpu id (0, 1, 2, ...) */ - public static void sysVirtualProcessorBind(int cpuid) {} - public static void sysVirtualProcessorYield() {} + public static void sysVirtualProcessorBind(int cpuid) { + VM_SysCallMagic.sysVirtualProcessorBind(VM_BootRecord.the_boot_record.sysVirtualProcessorBindIP, cpuid); + } + public static void sysVirtualProcessorYield() { + VM_SysCallMagic.sysVirtualProcessorYield(VM_BootRecord.the_boot_record.sysVirtualProcessorYieldIP); + } /** * Start interrupt generator for thread timeslicing. * The interrupt will be delivered to whatever virtual processor happens * to be running when the timer expires. */ - public static void sysVirtualProcessorEnableTimeSlicing(int timeSlice) {} - public static int sysPthreadSelf() { return 0; } - public static void sysPthreadSetupSignalHandling() {} - public static int sysPthreadSignal(int pthread) { return 0; } - public static void sysPthreadExit() {} - public static int sysPthreadJoin(int pthread) { return 0; } + public static void sysVirtualProcessorEnableTimeSlicing(int timeSlice) { + VM_SysCallMagic.sysVirtualProcessorEnableTimeSlicing(VM_BootRecord.the_boot_record.sysVirtualProcessorEnableTimeSlicingIP, timeSlice); + } + public static int sysPthreadSelf() { + return VM_SysCallMagic.sysPthreadSelf(VM_BootRecord.the_boot_record.sysPthreadSelfIP); + } + public static void sysPthreadSetupSignalHandling() { + VM_SysCallMagic.sysPthreadSetupSignalHandling(VM_BootRecord.the_boot_record.sysPthreadSetupSignalHandlingIP); + } + public static int sysPthreadSignal(int pthread) { + return VM_SysCallMagic.sysPthreadSignal(VM_BootRecord.the_boot_record.sysPthreadSignalIP, pthread); + } + public static void sysPthreadExit() { + VM_SysCallMagic.sysPthreadExit(VM_BootRecord.the_boot_record.sysPthreadExitIP); + } + public static int sysPthreadJoin(int pthread) { + return VM_SysCallMagic.sysPthreadJoin(VM_BootRecord.the_boot_record.sysPthreadJoinIP, pthread); + } //-#if !RVM_WITHOUT_INTERCEPT_BLOCKING_SYSTEM_CALLS - public static int sysStashVmProcessorInPthread(VM_Processor vmProcessor) { return 0; } + public static int sysStashVmProcessorInPthread(VM_Processor vmProcessor) { + return VM_SysCallMagic.sysStashVmProcessorInPthread(VM_BootRecord.the_boot_record.sysStashVmProcessorInPthreadIP, vmProcessor); + } //-#endif // arithmetic - public static long sysLongDivide(long x, long y) { return 0; } - public static long sysLongRemainder(long x, long y) { return 0; } - public static float sysLongToFloat(long x) { return 0f; } - public static double sysLongToDouble(long x) { return 0; } - public static int sysFloatToInt(float x) { return 0; } - public static int sysDoubleToInt(double x) { return 0; } - public static long sysFloatToLong(float x) { return 0; } - public static long sysDoubleToLong(double x) { return 0; } + public static long sysLongDivide(long x, long y) { + return VM_SysCallMagic.sysLongDivide(VM_BootRecord.the_boot_record.sysLongDivideIP, x, y); + } + public static long sysLongRemainder(long x, long y) { + return VM_SysCallMagic.sysLongRemainder(VM_BootRecord.the_boot_record.sysLongRemainderIP, x, y); + } + public static float sysLongToFloat(long x) { + return VM_SysCallMagic.sysLongToFloat(VM_BootRecord.the_boot_record.sysLongToFloatIP, x); + } + public static double sysLongToDouble(long x) { + return VM_SysCallMagic.sysLongToDouble(VM_BootRecord.the_boot_record.sysLongToDoubleIP, x); + } + public static int sysFloatToInt(float x) { + return VM_SysCallMagic.sysFloatToInt(VM_BootRecord.the_boot_record.sysFloatToIntIP, x); + } + public static int sysDoubleToInt(double x) { + return VM_SysCallMagic.sysDoubleToInt(VM_BootRecord.the_boot_record.sysDoubleToIntIP, x); + } + public static long sysFloatToLong(float x) { + return VM_SysCallMagic.sysFloatToLong(VM_BootRecord.the_boot_record.sysFloatToLongIP, x); + } + public static long sysDoubleToLong(double x) { + return VM_SysCallMagic.sysDoubleToLong(VM_BootRecord.the_boot_record.sysDoubleToLongIP, x); + } //-#if RVM_FOR_POWERPC - public static double sysDoubleRemainder(double x, double y) { return 0; } + public static double sysDoubleRemainder(double x, double y) { + return VM_SysCallMagic.sysDoubleRemainder(VM_BootRecord.the_boot_record.sysDoubleRemainderIP, x, y); + } //-#endif /** @@ -177,7 +288,9 @@ * by strtof() * @return the floating-point value produced by the call to strtof() on buf. */ - public static float sysPrimitiveParseFloat(byte[] buf) { return 0; } + public static float sysPrimitiveParseFloat(byte[] buf) { + return VM_SysCallMagic.sysPrimitiveParseFloat(VM_BootRecord.the_boot_record.sysPrimitiveParseFloatIP, buf); + } /** * Used to parse command line arguments that are @@ -191,154 +304,297 @@ * @return the int value produced by the call to strtol() on buf. * */ - public static int sysPrimitiveParseInt(byte[] buf) { return 0; } + public static int sysPrimitiveParseInt(byte[] buf) { + return VM_SysCallMagic.sysPrimitiveParseInt(VM_BootRecord.the_boot_record.sysPrimitiveParseIntIP, buf); + } /** Parse memory sizes passed as command-line arguments. */ public static long sysParseMemorySize(byte[] sizeName, byte[] sizeFlag, byte[] defaultFactor, int roundTo, byte[] argToken, byte[] subArg) { - return -1; + return VM_SysCallMagic.sysParseMemorySize(VM_BootRecord.the_boot_record.sysParseMemorySizeIP, sizeName, sizeFlag, + defaultFactor, roundTo, + argToken, subArg); } // time - public static long sysGetTimeOfDay() { return 0; } - public static void sysNanosleep(long howLongNanos) {} + public static long sysGetTimeOfDay() { + return VM_SysCallMagic.sysGetTimeOfDay(VM_BootRecord.the_boot_record.sysGetTimeOfDayIP); + } + public static void sysNanosleep(long howLongNanos) { + VM_SysCallMagic.sysNanosleep(VM_BootRecord.the_boot_record.sysNanosleepIP, howLongNanos); + } // shared libraries - public static Address sysDlopen(byte[] libname) { return null; } - public static void sysDlclose() {} - public static Address sysDlsym(Address libHandler, byte[] symbolName) { return null; } - public static void sysSlibclean() {} + public static Address sysDlopen(byte[] libname) { + return VM_SysCallMagic.sysDlopen(VM_BootRecord.the_boot_record.sysDlopenIP, libname); + } + public static void sysDlclose() { + VM_SysCallMagic.sysDlclose(VM_BootRecord.the_boot_record.sysDlcloseIP); + } + public static Address sysDlsym(Address libHandler, byte[] symbolName) { + return VM_SysCallMagic.sysDlsym(VM_BootRecord.the_boot_record.sysDlsymIP, libHandler, symbolName); + } + public static void sysSlibclean() { + VM_SysCallMagic.sysSlibclean(VM_BootRecord.the_boot_record.sysSlibcleanIP); + } //-#if RVM_WITH_UNUSED_SYSCALLS // network public static int sysNetLocalHostName(Address buf, int limit) { - return 0; + return VM_SysCallMagic.sysNetLocalHostName(VM_BootRecord.the_boot_record.sysNetLocalHostNameIP, buf, limit); } public static int sysNetRemoteHostName(int internetAddress, - Address buf, - int limit) { - return 0; + buf, + limit) { + return VM_SysCallMagic.sysNetRemoteHostName(VM_BootRecord.the_boot_record.sysNetRemoteHostNameIP, internetAddress, + buf, + limit); } public static int sysNetHostAddresses(Address hostname, Address buf, int limit) { - return 0; + return VM_SysCallMagic.sysNetHostAddresses(VM_BootRecord.the_boot_record.sysNetHostAddressesIP, hostname, buf, + limit); } //-#endif - public static int sysNetSocketCreate(int isStream) { return 0; } - public static int sysNetSocketPort(int fd) { return 0; } - public static int sysNetSocketSndBuf(int fd) { return 0; } - public static int sysNetSocketFamily(int fd) { return 0; } - public static int sysNetSocketLocalAddress(int fd) { return 0; } + public static int sysNetSocketCreate(int isStream) { + return VM_SysCallMagic.sysNetSocketCreate(VM_BootRecord.the_boot_record.sysNetSocketCreateIP, isStream); + } + public static int sysNetSocketPort(int fd) { + return VM_SysCallMagic.sysNetSocketPort(VM_BootRecord.the_boot_record.sysNetSocketPortIP, fd); + } + public static int sysNetSocketSndBuf(int fd) { + return VM_SysCallMagic.sysNetSocketSndBuf(VM_BootRecord.the_boot_record.sysNetSocketSndBufIP, fd); + } + public static int sysNetSocketFamily(int fd) { + return VM_SysCallMagic.sysNetSocketFamily(VM_BootRecord.the_boot_record.sysNetSocketFamilyIP, fd); + } + public static int sysNetSocketLocalAddress(int fd) { + return VM_SysCallMagic.sysNetSocketLocalAddress(VM_BootRecord.the_boot_record.sysNetSocketLocalAddressIP, fd); + } public static int sysNetSocketBind(int fd, int family, int localAddress, - int localPort) { - return 0; + int localPort) { + return VM_SysCallMagic.sysNetSocketBind(VM_BootRecord.the_boot_record.sysNetSocketBindIP, fd, family, localAddress, + localPort); } public static int sysNetSocketConnect(int fd, int family, int remoteAddress, int remotePort) { - return 0; + return VM_SysCallMagic.sysNetSocketConnect(VM_BootRecord.the_boot_record.sysNetSocketConnectIP, fd, family, remoteAddress, + remotePort); } - public static int sysNetSocketListen(int fd, int backlog) { return 0; } + public static int sysNetSocketListen(int fd, int backlog) { + return VM_SysCallMagic.sysNetSocketListen(VM_BootRecord.the_boot_record.sysNetSocketListenIP, fd, backlog); + } public static int sysNetSocketAccept(int fd, java.net.SocketImpl connectionObject) { - return 0; + return VM_SysCallMagic.sysNetSocketAccept(VM_BootRecord.the_boot_record.sysNetSocketAcceptIP, fd, connectionObject); } public static int sysNetSocketLinger(int fd, int enable, int timeout) { - return 0; + return VM_SysCallMagic.sysNetSocketLinger(VM_BootRecord.the_boot_record.sysNetSocketLingerIP, fd, enable, timeout); } public static int sysNetSocketNoDelay(int fd, int enable) { - return 0; + return VM_SysCallMagic.sysNetSocketNoDelay(VM_BootRecord.the_boot_record.sysNetSocketNoDelayIP, fd, enable); } public static int sysNetSocketNoBlock(int fd, int enable) { - return 0; + return VM_SysCallMagic.sysNetSocketNoBlock(VM_BootRecord.the_boot_record.sysNetSocketNoBlockIP, fd, enable); } public static int sysNetSocketClose(int fd) { - return 0; + return VM_SysCallMagic.sysNetSocketClose(VM_BootRecord.the_boot_record.sysNetSocketCloseIP, fd); } public static int sysNetSocketShutdown(int fd, int how) { - return 0; + return VM_SysCallMagic.sysNetSocketShutdown(VM_BootRecord.the_boot_record.sysNetSocketShutdownIP, fd, how); } public static int sysNetSelect(int[] allFds, int rc, int wc, int ec) { - return 0; + return VM_SysCallMagic.sysNetSelect(VM_BootRecord.the_boot_record.sysNetSelectIP, allFds, rc, wc, ec); } // process management public static void sysWaitPids(Address pidArray, Address exitStatusArray, - int numPids) {} + int numPids) { + VM_SysCallMagic.sysWaitPids(VM_BootRecord.the_boot_record.sysWaitPidsIP, pidArray, exitStatusArray, + numPids); + } // system startup pthread sync. primitives //-#if !RVM_WITHOUT_INTERCEPT_BLOCKING_SYSTEM_CALLS - public static void sysCreateThreadSpecificDataKeys() {} + public static void sysCreateThreadSpecificDataKeys() { + VM_SysCallMagic.sysCreateThreadSpecificDataKeys(VM_BootRecord.the_boot_record.sysCreateThreadSpecificDataKeysIP); + } //-#endif - public static void sysInitializeStartupLocks(int howMany) {} - public static void sysWaitForVirtualProcessorInitialization() {} - public static void sysWaitForMultithreadingStart() {} + public static void sysInitializeStartupLocks(int howMany) { + VM_SysCallMagic.sysInitializeStartupLocks(VM_BootRecord.the_boot_record.sysInitializeStartupLocksIP, howMany); + } + public static void sysWaitForVirtualProcessorInitialization() { + VM_SysCallMagic.sysWaitForVirtualProcessorInitialization(VM_BootRecord.the_boot_record.sysWaitForVirtualProcessorInitializationIP); + } + public static void sysWaitForMultithreadingStart() { + VM_SysCallMagic.sysWaitForMultithreadingStart(VM_BootRecord.the_boot_record.sysWaitForMultithreadingStartIP); + } //-#if RVM_WITH_HPM // sysCall entry points to HPM - public static int sysHPMinit() { return 0; } - public static int sysHPMsetEvent(int e1, int e2, int e3, int e4) { return 0; } - public static int sysHPMsetEventX(int e5, int e6, int e7, int e8) {return 0; } - public static int sysHPMsetMode(int mode) { return 0; } - public static int sysHPMgetNumberOfCounters() { return 0; } - public static int sysHPMgetNumberOfEvents() { return 0; } - public static int sysHPMisBigEndian() { return 0; } - public static int sysHPMtest() { return 0; } - public static int sysHPMsetProgramMyThread() { return 0; } - public static int sysHPMstartMyThread() { return 0; } - public static int sysHPMstopMyThread() { return 0; } - public static int sysHPMresetMyThread() { return 0; } - public static long sysHPMgetCounterMyThread(int counter) { return 0; } - public static int sysHPMsetProgramMyGroup() { return 0; } - public static int sysHPMstartMyGroup() { return 0; } - public static int sysHPMstopMyGroup() { return 0; } - public static int sysHPMresetMyGroup() { return 0; } - public static long sysHPMgetCounterMyGroup(int counter) { return 0; } - public static int sysHPMprintMyGroup() { return 0; } + public static int sysHPMinit() { + return VM_SysCallMagic.sysHPMinit(VM_BootRecord.the_boot_record.sysHPMinitIP); + } + public static int sysHPMsetEvent(int e1, int e2, int e3, int e4) { + return VM_SysCallMagic.sysHPMsetEvent(VM_BootRecord.the_boot_record.sysHPMsetEventIP, e1, e2, e3, e4); + } + public static int sysHPMsetEventX(int e5, int e6, int e7, int e8) { + return VM_SysCallMagic.sysHPMsetEventX(VM_BootRecord.the_boot_record.sysHPMsetEventXIP, e5, e6, e7, e8); + } + public static int sysHPMsetMode(int mode) { + return VM_SysCallMagic.sysHPMsetMode(VM_BootRecord.the_boot_record.sysHPMsetModeIP, mode); + } + public static int sysHPMgetNumberOfCounters() { + return VM_SysCallMagic.sysHPMgetNumberOfCounters(VM_BootRecord.the_boot_record.sysHPMgetNumberOfCountersIP); + } + public static int sysHPMgetNumberOfEvents() { + return VM_SysCallMagic.sysHPMgetNumberOfEvents(VM_BootRecord.the_boot_record.sysHPMgetNumberOfEventsIP); + } + public static int sysHPMisBigEndian() { + return VM_SysCallMagic.sysHPMisBigEndian(VM_BootRecord.the_boot_record.sysHPMisBigEndianIP); + } + public static int sysHPMtest() { + return VM_SysCallMagic.sysHPMtest(VM_BootRecord.the_boot_record.sysHPMtestIP); + } + public static int sysHPMsetProgramMyThread() { + return VM_SysCallMagic.sysHPMsetProgramMyThread(VM_BootRecord.the_boot_record.sysHPMsetProgramMyThreadIP); + } + public static int sysHPMstartMyThread() { + return VM_SysCallMagic.sysHPMstartMyThread(VM_BootRecord.the_boot_record.sysHPMstartMyThreadIP); + } + public static int sysHPMstopMyThread() { + return VM_SysCallMagic.sysHPMstopMyThread(VM_BootRecord.the_boot_record.sysHPMstopMyThreadIP); + } + public static int sysHPMresetMyThread() { + return VM_SysCallMagic.sysHPMresetMyThread(VM_BootRecord.the_boot_record.sysHPMresetMyThreadIP); + } + public static long sysHPMgetCounterMyThread(int counter) { + return VM_SysCallMagic.sysHPMgetCounterMyThread(VM_BootRecord.the_boot_record.sysHPMgetCounterMyThreadIP, counter); + } + public static int sysHPMsetProgramMyGroup() { + return VM_SysCallMagic.sysHPMsetProgramMyGroup(VM_BootRecord.the_boot_record.sysHPMsetProgramMyGroupIP); + } + public static int sysHPMstartMyGroup() { + return VM_SysCallMagic.sysHPMstartMyGroup(VM_BootRecord.the_boot_record.sysHPMstartMyGroupIP); + } + public static int sysHPMstopMyGroup() { + return VM_SysCallMagic.sysHPMstopMyGroup(VM_BootRecord.the_boot_record.sysHPMstopMyGroupIP); + } + public static int sysHPMresetMyGroup() { + return VM_SysCallMagic.sysHPMresetMyGroup(VM_BootRecord.the_boot_record.sysHPMresetMyGroupIP); + } + public static long sysHPMgetCounterMyGroup(int counter) { + return VM_SysCallMagic.sysHPMgetCounterMyGroup(VM_BootRecord.the_boot_record.sysHPMgetCounterMyGroupIP, counter); + } + public static int sysHPMprintMyGroup() { + return VM_SysCallMagic.sysHPMprintMyGroup(VM_BootRecord.the_boot_record.sysHPMprintMyGroupIP); + } //-#endif //-#if RVM_WITH_GCSPY // sysCall entry points to GCSpy - public static Address gcspyDriverAddStream (Address driver, int it) { return null; } - public static void gcspyDriverEndOutput (Address driver) {} + public static Address gcspyDriverAddStream (Address driver, int it) { + return VM_SysCallMagic.gcspyDriverAddStream (VM_BootRecord.the_boot_record.gcspyDriverAddStreamIP, driver, it); + } + public static void gcspyDriverEndOutput (Address driver) { + VM_SysCallMagic.gcspyDriverEndOutput (VM_BootRecord.the_boot_record.gcspyDriverEndOutputIP, driver); + } public static void gcspyDriverInit (Address driver, int id, Address serverName, Address driverName, Address title, Address blockInfo, int tileNum, - Address unused, int mainSpace) {} - public static void gcspyDriverInitOutput (Address driver) {} - public static void gcspyDriverResize (Address driver, int size) {} - public static void gcspyDriverSetTileName (Address driver, int i, Address start, Address end) {} - public static void gcspyDriverSpaceInfo (Address driver, Address info) {} - public static void gcspyDriverStartComm (Address driver) {} - public static void gcspyDriverStream (Address driver, int id, int len) {} - public static void gcspyDriverStreamByteValue (Address driver, byte value) {} - public static void gcspyDriverStreamShortValue (Address driver, short value) {} - public static void gcspyDriverStreamIntValue (Address driver, int value) {} - public static void gcspyDriverSummary (Address driver, int id, int len) {} - public static void gcspyDriverSummaryValue (Address driver, int value) {} + Address unused, int mainSpace) { + VM_SysCallMagic.gcspyDriverInit (VM_BootRecord.the_boot_record.gcspyDriverInitIP, driver, id, serverName, driverName, + title, blockInfo, tileNum, + unused, mainSpace); + } + public static void gcspyDriverInitOutput (Address driver) { + VM_SysCa... [truncated message content] |
From: <dgr...@us...> - 2006-09-12 21:25:47
|
Revision: 10769 http://svn.sourceforge.net/jikesrvm/?rev=10769&view=rev Author: dgrove-oss Date: 2006-09-12 14:25:31 -0700 (Tue, 12 Sep 2006) Log Message: ----------- continue directory restructuring: move rvm/src/tools to tools Modified Paths: -------------- rvmroot/trunk/doc/userguide/Makefile rvmroot/trunk/doc/userguide/optdetails.tex rvmroot/trunk/doc/userguide/preprocessor.tex rvmroot/trunk/doc/userguide/profiling.tex rvmroot/trunk/rvm/bin/jconfigure rvmroot/trunk/rvm/config/build/compilers/OTH rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template rvmroot/trunk/tools/bootImageRunner/IA32/libvm.C rvmroot/trunk/tools/bootImageRunner/RunBootImage.C rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h rvmroot/trunk/tools/bootImageRunner/powerPC/libvm.C rvmroot/trunk/tools/bootImageRunner/sys.C rvmroot/trunk/tools/computeCompilerDNA/Run-gather-dna rvmroot/trunk/tools/preprocessor/GNUmakefile Added Paths: ----------- rvmroot/trunk/tools/ Removed Paths: ------------- rvmroot/trunk/rvm/src/tools/ Modified: rvmroot/trunk/doc/userguide/Makefile =================================================================== --- rvmroot/trunk/doc/userguide/Makefile 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/doc/userguide/Makefile 2006-09-12 21:25:31 UTC (rev 10769) @@ -36,7 +36,7 @@ .DELETE_ON_ERROR: # Clean up. -GENERATOR_DIR := $(RVM_ROOT)/rvm/src/tools/templateExpander +GENERATOR_DIR := $(RVM_ROOT)/tools/templateExpander GENERATOR := GenerateFromTemplate VM_OPTION_DIR := $(RVM_ROOT)/rvm/src/vm/utility Modified: rvmroot/trunk/doc/userguide/optdetails.tex =================================================================== --- rvmroot/trunk/doc/userguide/optdetails.tex 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/doc/userguide/optdetails.tex 2006-09-12 21:25:31 UTC (rev 10769) @@ -430,7 +430,7 @@ from a file. The source to the {\tt OptTestHarness} resides in -{\tt \$RVM\_\-ROOT/rvm/src/tools/\-opt\-Test\-Har\-ness}. Consult the comments +{\tt \$RVM\_\-ROOT/tools/\-opt\-Test\-Har\-ness}. Consult the comments at the head of the file {\tt OptTestHarness.java} in that directory to read about other options, including how to use {\tt -er} to make {\tt OptTestHarness} Modified: rvmroot/trunk/doc/userguide/preprocessor.tex =================================================================== --- rvmroot/trunk/doc/userguide/preprocessor.tex 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/doc/userguide/preprocessor.tex 2006-09-12 21:25:31 UTC (rev 10769) @@ -117,7 +117,7 @@ \subsection{Where It Is} The source code for the preprocessor is in {\tt - rvm/src/tools/preprocessor}. The Jikes RVM build process installs a + tools/preprocessor}. The Jikes RVM build process installs a preprocessor executable for the host as as {\tt RVM\_BUILD/jbuild.prep.host} and one for the target at {\tt RVM\_BUILD/jbuild.prep.target}. The preprocessing is done Modified: rvmroot/trunk/doc/userguide/profiling.tex =================================================================== --- rvmroot/trunk/doc/userguide/profiling.tex 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/doc/userguide/profiling.tex 2006-09-12 21:25:31 UTC (rev 10769) @@ -85,7 +85,7 @@ are supported for application use. Support for other callbacks can be easily added following the current design. -A trace file reader is available in the {\tt \$RVM\_\-ROOT/rvm/src/tools/HPM\_\-trace\-Fi\-le\-Rea\-der} +A trace file reader is available in the {\tt \$RVM\_\-ROOT/tools/HPM\_\-trace\-Fi\-le\-Rea\-der} subdirectory. Type ``{\tt make}'' on the command line to generate the class files and then type ``{\tt java Trace\-Fi\-le\-Rea\-der}'' to determine what command line options are available. Modified: rvmroot/trunk/rvm/bin/jconfigure =================================================================== --- rvmroot/trunk/rvm/bin/jconfigure 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/rvm/bin/jconfigure 2006-09-12 21:25:31 UTC (rev 10769) @@ -1653,14 +1653,14 @@ # Place where bootimage runner lives. # -BOOTIMAGE_RUNNER_DIR="${RVM_ROOT}/rvm/src/tools/bootImageRunner" -BOOTIMAGE_RUNNER_DIR_STR="${ROOT_DIRECTORY_STR}/rvm/src/tools/bootImageRunner" +BOOTIMAGE_RUNNER_DIR="${RVM_ROOT}/tools/bootImageRunner" +BOOTIMAGE_RUNNER_DIR_STR="${ROOT_DIRECTORY_STR}/tools/bootImageRunner" if (( RVM_FOR_POWERPC )); then - BOOTIMAGE_RUNNER_SUBDIR="${RVM_ROOT}/rvm/src/tools/bootImageRunner/powerPC" - BOOTIMAGE_RUNNER_SUBDIR_STR="${ROOT_DIRECTORY_STR}/rvm/src/tools/bootImageRunner/powerPC" + BOOTIMAGE_RUNNER_SUBDIR="${RVM_ROOT}/tools/bootImageRunner/powerPC" + BOOTIMAGE_RUNNER_SUBDIR_STR="${ROOT_DIRECTORY_STR}/tools/bootImageRunner/powerPC" elif (( RVM_FOR_IA32 )); then - BOOTIMAGE_RUNNER_SUBDIR="${RVM_ROOT}/rvm/src/tools/bootImageRunner/IA32" - BOOTIMAGE_RUNNER_SUBDIR_STR="${ROOT_DIRECTORY_STR}/rvm/src/tools/bootImageRunner/IA32" + BOOTIMAGE_RUNNER_SUBDIR="${RVM_ROOT}/tools/bootImageRunner/IA32" + BOOTIMAGE_RUNNER_SUBDIR_STR="${ROOT_DIRECTORY_STR}/tools/bootImageRunner/IA32" else show_mesg_raw >&2 "$ME:$LINENO: Trouble is looming; neither RVM_FOR_POWERPC nor RVM_FOR_IA32 is defined." BOOTIMAGE_RUNNER_DIR="UNKNOWN_BOOTIMAGE_RUNNER_DIRECTORY" @@ -1669,8 +1669,8 @@ # Place where bootimage writer lives. # -BOOTIMAGE_WRITER_DIR="${RVM_ROOT}/rvm/src/tools/bootImageWriter" -BOOTIMAGE_WRITER_DIR_STR="${ROOT_DIRECTORY_STR}/rvm/src/tools/bootImageWriter" +BOOTIMAGE_WRITER_DIR="${RVM_ROOT}/tools/bootImageWriter" +BOOTIMAGE_WRITER_DIR_STR="${ROOT_DIRECTORY_STR}/tools/bootImageWriter" #--------------------------------------# # SECTION 5 - DEFINITIONS OF FUNCTIONS # @@ -2536,13 +2536,13 @@ fi # Make the tools that we need to do template expansion - run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C "${ROOT_DIRECTORY_STR}/rvm/src/tools/templateExpander" tool SCRATCH_DIR="${SCRATCH_DIRECTORY_STR}" + run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C "${ROOT_DIRECTORY_STR}/tools/templateExpander" tool SCRATCH_DIR="${SCRATCH_DIRECTORY_STR}" EOF if (( RVM_WITH_OPT_COMPILER )); then cat <<- EOF # Opt compiler only: - run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -f ${ROOT_DIRECTORY_STR}/rvm/src/tools/jburg/Makefile -C ${SCRATCH_DIRECTORY_STR} VPATH=${ROOT_DIRECTORY_STR}/rvm/src/tools/jburg tool + run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -f ${ROOT_DIRECTORY_STR}/tools/jburg/Makefile -C ${SCRATCH_DIRECTORY_STR} VPATH=${ROOT_DIRECTORY_STR}/tools/jburg tool EOF fi cat <<- EOF @@ -2665,7 +2665,7 @@ fi [ ! "\$VFLAG\$XFLAG" ] || set \$VFLAG \$XFLAG # Make the preprocessor - run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C ${ROOT_DIRECTORY_STR}/rvm/src/tools/preprocessor INCLUDED_MAKEFILE=${BUILD_DIRECTORY_STR}/Make.rules.host tool SCRATCH_DIR=${SCRATCH_DIRECTORY_STR} + run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C ${ROOT_DIRECTORY_STR}/tools/preprocessor INCLUDED_MAKEFILE=${BUILD_DIRECTORY_STR}/Make.rules.host tool SCRATCH_DIR=${SCRATCH_DIRECTORY_STR} copyIfNewer "${SCRATCH_DIRECTORY_STR}/preprocessModifiedFiles" "${BUILD_DIRECTORY_STR}/jbuild.prep.host" -n "(set up jbuild.prep.host) " # This may be reset in the loop below. @@ -3077,7 +3077,7 @@ # The new_generator_dir is scaffolding for a work-in-progress # feature --Steve Augart, 26 May 2004 - new_generator_dir=${ROOT_DIRECTORY_STR}/rvm/src/tools/generateInterfaceDeclarations + new_generator_dir=${ROOT_DIRECTORY_STR}/tools/generateInterfaceDeclarations if [[ \${INTERFACE_GENERATOR_DIR-} ]]; then generator_dir=\${INTERFACE_GENERATOR_DIR} elif [[ -f \$new_generator_dir/\${generator_class}.java ]]; then @@ -4178,10 +4178,10 @@ echo >&2 -n '(classpath native libraries copied) ' CONFIG_H_DIR=${SCRATCH_DIRECTORY_STR}/Config.target - run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C ${ROOT_DIRECTORY_STR}/rvm/src/tools/configuring CONFIG_H_DIR=\${CONFIG_H_DIR} + run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C ${ROOT_DIRECTORY_STR}/tools/configuring CONFIG_H_DIR=\${CONFIG_H_DIR} # Make a target platform preprocessor for use in gctest - run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C ${ROOT_DIRECTORY_STR}/rvm/src/tools/preprocessor INCLUDED_MAKEFILE=${BUILD_DIRECTORY_STR}/Make.rules.target tool SCRATCH_DIR=${SCRATCH_DIRECTORY_STR} + run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -C ${ROOT_DIRECTORY_STR}/tools/preprocessor INCLUDED_MAKEFILE=${BUILD_DIRECTORY_STR}/Make.rules.target tool SCRATCH_DIR=${SCRATCH_DIRECTORY_STR} copyIfNewer "${SCRATCH_DIRECTORY_STR}/preprocessModifiedFiles" "${BUILD_DIRECTORY_STR}/jbuild.prep.target" -n '(set up jbuild.prep.target) ' ## Create RunBootImage.h file. @@ -4203,7 +4203,7 @@ # Build the JNI library for creating processes # and a couple of wrapper libraries we may need. - chdir ${ROOT_DIRECTORY_STR}/rvm/src/tools/bootImageRunner/ + chdir ${ROOT_DIRECTORY_STR}/tools/bootImageRunner/ EOF DEST="${BUILD_DIRECTORY_STR}/libjpnexec\${shlib_suffix}" echo "run ${GNU_MAKE_STR} \$MFLAGS CFLAGS='' CXXFLAGS='' -f Makefile.jni DEST=\"$DEST\" \"$DEST\"" @@ -4333,7 +4333,7 @@ \$BOOTER_CXX -c -I$SCRATCH_DIRECTORY_STR \ -I$ROOT_DIRECTORY_STR/rvm/src/include \ -I$ROOT_DIRECTORY_STR/rvm/src/vm/HPM/$ARCH_DIR \ - -I$ROOT_DIRECTORY_STR/rvm/src/tools/bootImageRunner \ + -I$ROOT_DIRECTORY_STR/tools/bootImageRunner \ -o $SCRATCH_DIRECTORY_STR/Java2HPM.o Java2HPM.C ALL_HPM_LIBS="\${SYS_HPM_LIBS} -L$BUILD_DIRECTORY_STR -lhpm" @@ -4789,7 +4789,7 @@ emit_ant_properties > \${propfile} - srcdir=${ROOT_DIRECTORY_STR}/rvm/src/tools/eclipse/plugin2 + srcdir=${ROOT_DIRECTORY_STR}/tools/eclipse/plugin2 chdir \${srcdir} if tracing ant; then Modified: rvmroot/trunk/rvm/config/build/compilers/OTH =================================================================== --- rvmroot/trunk/rvm/config/build/compilers/OTH 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/rvm/config/build/compilers/OTH 2006-09-12 21:25:31 UTC (rev 10769) @@ -1,2 +1,2 @@ export RVM_WITH_OPT_TEST_HARNESS=1 - CONF_SPECIFIC_SOURCES_LIST="$CONF_SPECIFIC_SOURCES_LIST rvm/src/tools/optTestHarness" + CONF_SPECIFIC_SOURCES_LIST="$CONF_SPECIFIC_SOURCES_LIST tools/optTestHarness" Modified: rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template =================================================================== --- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template 2006-09-12 21:25:31 UTC (rev 10769) @@ -15,7 +15,7 @@ * * Note: some of the functions have been taken and modified * from the file gen.c, from the LCC compiler. - * See $RVM_ROOT/rvm/src/tools/jburg/COPYRIGHT file for copyright restrictions. + * See $RVM_ROOT/tools/jburg/COPYRIGHT file for copyright restrictions. * * @see OPT_BURS * @author Mauricio Serrano Copied: rvmroot/trunk/tools (from rev 10768, rvmroot/trunk/rvm/src/tools) Modified: rvmroot/trunk/tools/bootImageRunner/IA32/libvm.C =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/IA32/libvm.C 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/tools/bootImageRunner/IA32/libvm.C 2006-09-12 21:25:31 UTC (rev 10769) @@ -39,7 +39,7 @@ #define __STDC_FORMAT_MACROS // include PRIxPTR #include <inttypes.h> // PRIxPTR, uintptr_t -#include "../pthread-wrappers.h" // In rvm/src/tools/bootImageRunner +#include "../pthread-wrappers.h" // In tools/bootImageRunner /* Interface to virtual machine data structures. */ #define NEED_EXIT_STATUS_CODES @@ -50,7 +50,7 @@ extern "C" void setLinkage(VM_BootRecord*); -#include "../bootImageRunner.h" // In rvm/src/tools/bootImageRunner +#include "../bootImageRunner.h" // In tools/bootImageRunner // These are definitions of items declared in bootImageRunner.h /* Sink for messages relating to serious errors detected by C runtime. */ Modified: rvmroot/trunk/tools/bootImageRunner/RunBootImage.C =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/RunBootImage.C 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/tools/bootImageRunner/RunBootImage.C 2006-09-12 21:25:31 UTC (rev 10769) @@ -53,7 +53,7 @@ #endif #include "RunBootImage.h" // Automatically generated for us by // jbuild.linkBooter -#include "bootImageRunner.h" // In rvm/src/tools/bootImageRunner +#include "bootImageRunner.h" // In tools/bootImageRunner #include "cmdLine.h" // Command line args. // Interface to VM data structures. Modified: rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/bootImageRunner.h 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h 2006-09-12 21:25:31 UTC (rev 10769) @@ -3,12 +3,12 @@ */ // $Id$ /* Handles "extern" declarations shared among files in - * rvm/src/tools/bootImageRunner/. + * tools/bootImageRunner/. * @author: Steven Augart, based on contributions from everyone who ever * touched files in that directory. * */ -// #include "bootImageRunner.h" // In rvm/src/tools/bootImageRunner +// #include "bootImageRunner.h" // In tools/bootImageRunner #include <stdio.h> #include <inttypes.h> @@ -20,7 +20,7 @@ } /* un-confuse the auto-indenter */ #endif -#include "../../include/cAttributePortability.h" +#include "../../rvm/src/include/cAttributePortability.h" #if defined(RVM_FOR_32_ADDR) #define VM_Offset int32_t Modified: rvmroot/trunk/tools/bootImageRunner/powerPC/libvm.C =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/powerPC/libvm.C 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/tools/bootImageRunner/powerPC/libvm.C 2006-09-12 21:25:31 UTC (rev 10769) @@ -314,7 +314,7 @@ VM_BootRecord *theBootRecord; #define VM_NULL 0 -#include "../bootImageRunner.h" // In rvm/src/tools/bootImageRunner +#include "../bootImageRunner.h" // In tools/bootImageRunner /**** These are definitions of items declared in bootImageRunner.h ****/ Modified: rvmroot/trunk/tools/bootImageRunner/sys.C =================================================================== --- rvmroot/trunk/rvm/src/tools/bootImageRunner/sys.C 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/tools/bootImageRunner/sys.C 2006-09-12 21:25:31 UTC (rev 10769) @@ -98,8 +98,8 @@ #define NEED_VIRTUAL_MACHINE_DECLARATIONS #define NEED_EXIT_STATUS_CODES #include "InterfaceDeclarations.h" -#include "bootImageRunner.h" // In rvm/src/tools/bootImageRunner. -#include "../../include/jni.h" // For the jlong type. +#include "bootImageRunner.h" // In tools/bootImageRunner. +#include "../../rvm/src/include/jni.h" // For the jlong type. #include "pthread-wrappers.h" Modified: rvmroot/trunk/tools/computeCompilerDNA/Run-gather-dna =================================================================== --- rvmroot/trunk/rvm/src/tools/computeCompilerDNA/Run-gather-dna 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/tools/computeCompilerDNA/Run-gather-dna 2006-09-12 21:25:31 UTC (rev 10769) @@ -78,7 +78,7 @@ # Generate SPECjvm98 profile data mkdir -p $RVM_ROOT/support/profileData PROFILE_FILE=$RVM_ROOT/support/profileData/edgeCounts.SPECjvm98 -$RVM_ROOT/rvm/src/tools/computeCompilerDNA/GenerateSPECjvmProfile $PROFILE_FILE $BUILDDIR +$RVM_ROOT/tools/computeCompilerDNA/GenerateSPECjvmProfile $PROFILE_FILE $BUILDDIR PROFILE_ARG="-X:vm:edgeCounterFile=$PROFILE_FILE" cp="-classpath $RVM_SPECJVM98" Modified: rvmroot/trunk/tools/preprocessor/GNUmakefile =================================================================== --- rvmroot/trunk/rvm/src/tools/preprocessor/GNUmakefile 2006-09-12 18:32:43 UTC (rev 10768) +++ rvmroot/trunk/tools/preprocessor/GNUmakefile 2006-09-12 21:25:31 UTC (rev 10769) @@ -29,8 +29,7 @@ ## in the distribution. (They are the ones I test with, though.) # -Wcast-align -Wpointer-arith -Wcast-qual -Wshadow -Wstrict-prototypes -Wmissing-prototypes -fkeep-static-consts -fkeep-inline-functions -Wundef -Wwrite-strings -Wno-aggregate-return -Wmissing-noreturn -Wtrigraphs -Wconversion -Wsign-compare -Wfloat-equal -Wendif-labels -Wmissing-format-attribute -Wno-long-long -fcheck-new -fpermissive -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo # CXXFLAGS+=-W -Wall -# The rvm/src/include directory. -CPPFLAGS+=-I../../include +CPPFLAGS+=-I../../rvm/src/include tool: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-13 12:26:57
|
Revision: 10777 http://svn.sourceforge.net/jikesrvm/?rev=10777&view=rev Author: dgrove-oss Date: 2006-09-13 05:26:51 -0700 (Wed, 13 Sep 2006) Log Message: ----------- patch 1557806: Fix for FileChannel. Must run clinit method during VM boot sequence to initialize natives Modified Paths: -------------- rvmroot/trunk/rvm/src/vm/VM.java Added Paths: ----------- rvmroot/trunk/testing/harness/tests/nio/ rvmroot/trunk/testing/harness/tests/nio/Makefile rvmroot/trunk/testing/tests/nio/ rvmroot/trunk/testing/tests/nio/TestFileChannel.java Modified: rvmroot/trunk/rvm/src/vm/VM.java =================================================================== --- rvmroot/trunk/rvm/src/vm/VM.java 2006-09-13 04:07:50 UTC (rev 10776) +++ rvmroot/trunk/rvm/src/vm/VM.java 2006-09-13 12:26:51 UTC (rev 10777) @@ -334,6 +334,7 @@ runClassInitializer("com.ibm.JikesRVM.VM_Process"); runClassInitializer("com.ibm.JikesRVM.classloader.VM_Annotation"); runClassInitializer("java.lang.VMClassLoader"); + runClassInitializer("gnu.java.nio.VMChannel"); // Initialize java.lang.System.out, java.lang.System.err, java.lang.System.in VM_FileSystem.initializeStandardStreams(); Added: rvmroot/trunk/testing/harness/tests/nio/Makefile =================================================================== --- rvmroot/trunk/testing/harness/tests/nio/Makefile (rev 0) +++ rvmroot/trunk/testing/harness/tests/nio/Makefile 2006-09-13 12:26:51 UTC (rev 10777) @@ -0,0 +1,25 @@ +# +# (C) Copyright IBM Corp. 2001 +# +# +# $Id: Makefile 10738 2006-08-24 18:29:58Z dgrove-oss $ +# +# @author Julian Dolby +# +include $(RVM_BUILD)/Make.rules.target + +BENCH_HOME=$(JAL_ROOT)/testing/tests/nio +BENCH_SOURCE_PATH=$(BENCH_HOME) +HEAPSIZE=50 +TIME_LIMIT=300 + +include $(JAL_ROOT)/testing/harness/Make.rules + +TESTS=TestFileChannel + +sanity: $(TESTS) + $(MAKE) do-sanity-finish + +$(TESTS): %: + $(MAKE) START_NAME=$@ START_ARGS=out.$@.$(BOOTNAME).jdk do-sanity-compare + Added: rvmroot/trunk/testing/tests/nio/TestFileChannel.java =================================================================== --- rvmroot/trunk/testing/tests/nio/TestFileChannel.java (rev 0) +++ rvmroot/trunk/testing/tests/nio/TestFileChannel.java 2006-09-13 12:26:51 UTC (rev 10777) @@ -0,0 +1,29 @@ +import java.io.*; +import java.nio.*; +import java.nio.channels.*; + +public class TestFileChannel { + public static void main(String[] args) { + final int MAGIC_INT = 0xdeadbeef; + final String TEST_FILE = "test.out"; + try { + ByteBuffer buffer = ByteBuffer.allocateDirect(4); + ByteChannel write_channel = new FileOutputStream(TEST_FILE).getChannel(); + buffer.putInt(MAGIC_INT); + buffer.flip(); + write_channel.write(buffer); + write_channel.close(); + ByteChannel read_channel = new FileInputStream(TEST_FILE).getChannel(); + buffer.clear(); + while (buffer.hasRemaining()) + read_channel.read(buffer); + read_channel.close(); + buffer.flip(); + int file_int = buffer.getInt(); + if (file_int != MAGIC_INT) + throw new Error("Wrote " + Integer.toHexString(MAGIC_INT) + " but read " + Integer.toHexString(file_int)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-14 16:04:20
|
Revision: 10782 http://svn.sourceforge.net/jikesrvm/?rev=10782&view=rev Author: dgrove-oss Date: 2006-09-14 09:03:28 -0700 (Thu, 14 Sep 2006) Log Message: ----------- continued directory restructuring to clear non-Java source from rvm direcotry: move rvm/bin to bin Modified Paths: -------------- rvmroot/trunk/doc/userguide/MMTk.tex rvmroot/trunk/doc/userguide/codingstyle-nonjava.tex rvmroot/trunk/doc/userguide/faq.tex rvmroot/trunk/doc/userguide/installation.tex rvmroot/trunk/rvm/config/exp/i686-pc-linux-gnu.gij rvmroot/trunk/rvm/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart rvmroot/trunk/rvm/config/i686-pc-linux-gnu rvmroot/trunk/rvm/config/i686-pc-linux-gnu.kaffe rvmroot/trunk/rvm/config/powerpc-ibm-aix5 rvmroot/trunk/rvm/config/powerpc-unknown-osx-gnu rvmroot/trunk/rvm/config/x86_64-pc-linux-gnu rvmroot/trunk/testing/harness/Make.rules rvmroot/trunk/testing/harness/RunSanityTests rvmroot/trunk/testing/harness/night-sanity-build rvmroot/trunk/testing/harness/night-sanity-run rvmroot/trunk/testing/harness/tests/SPECjbb2000/jbb.hpm rvmroot/trunk/testing/harness/tests/SPECjvm98/aos.jvm rvmroot/trunk/testing/harness/tests/SPECjvm98/aos.jvm.hpm rvmroot/trunk/testing/harness/tests/pseudojbb/pseudojbb.hpm rvmroot/trunk/testing/harness/tests/pseudojbb/pseudojbb1.hpm rvmroot/trunk/testing/harness/tests/pseudojbb/pseudojbb2.hpm rvmroot/trunk/testing/harness/tests/pseudojbb/raw.aos rvmroot/trunk/testing/harness/tests/pseudojbb/raw.base rvmroot/trunk/testing/harness/tests/pseudojbb/raw.opt rvmroot/trunk/testing/harness/tests/pseudojbb/rvm.pseudojbb rvmroot/trunk/tools/computeCompilerDNA/BuildImages rvmroot/trunk/tools/computeCompilerDNA/GenerateSPECjvmProfile rvmroot/trunk/tools/computeCompilerDNA/Run-gather-dna rvmroot/trunk/tools/install/GNUmakefile.in rvmroot/trunk/tools/install/README rvmroot/trunk/tools/install/rvm.1.in rvmroot/trunk/tools/install/rvm.in rvmroot/trunk/tools/jburg/Makefile Added Paths: ----------- rvmroot/trunk/bin/ rvmroot/trunk/bin/RunSanityTests rvmroot/trunk/bin/build-classpath-from-cvs rvmroot/trunk/bin/findDeviantFiles rvmroot/trunk/bin/findMatchedFiles.perl rvmroot/trunk/bin/gdbInit rvmroot/trunk/bin/gdbrvm rvmroot/trunk/bin/jBuildClasspathJar rvmroot/trunk/bin/jconfigure rvmroot/trunk/bin/jcreate rvmroot/trunk/bin/jdoc.sh rvmroot/trunk/bin/jfind rvmroot/trunk/bin/jreplace rvmroot/trunk/bin/jrun rvmroot/trunk/bin/libjconfigure.bash rvmroot/trunk/bin/noAuthorFilter.awk rvmroot/trunk/bin/noCopyrightFilter.awk rvmroot/trunk/bin/noIdFilter.awk rvmroot/trunk/bin/runrvm rvmroot/trunk/bin/rvm rvmroot/trunk/bin/rvmeclipse rvmroot/trunk/bin/sanity-envars.bash Removed Paths: ------------- rvmroot/trunk/bin/RunSanityTests rvmroot/trunk/bin/build-classpath-from-cvs rvmroot/trunk/bin/findDeviantFiles rvmroot/trunk/bin/findMatchedFiles.perl rvmroot/trunk/bin/gdbInit rvmroot/trunk/bin/gdbrvm rvmroot/trunk/bin/jBuildClasspathJar rvmroot/trunk/bin/jconfigure rvmroot/trunk/bin/jcreate rvmroot/trunk/bin/jdoc.sh rvmroot/trunk/bin/jfind rvmroot/trunk/bin/jreplace rvmroot/trunk/bin/jrun rvmroot/trunk/bin/libjconfigure.bash rvmroot/trunk/bin/noAuthorFilter.awk rvmroot/trunk/bin/noCopyrightFilter.awk rvmroot/trunk/bin/noIdFilter.awk rvmroot/trunk/bin/runrvm rvmroot/trunk/bin/rvm rvmroot/trunk/bin/rvmeclipse rvmroot/trunk/bin/sanity-envars.bash rvmroot/trunk/rvm/bin/ Copied: rvmroot/trunk/bin (from rev 10777, rvmroot/trunk/rvm/bin) Deleted: rvmroot/trunk/bin/RunSanityTests =================================================================== --- rvmroot/trunk/rvm/bin/RunSanityTests 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/RunSanityTests 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,10 +0,0 @@ -#! /bin/bash -# -# (C) Copyright IBM Corp. 2001, 2003 -# -# $Id$ -# -# @author Steve Fink -# @modified Steven Augart -# -exec "$RVM_ROOT/testing/harness/RunSanityTests" "$@" Copied: rvmroot/trunk/bin/RunSanityTests (from rev 10781, rvmroot/trunk/rvm/bin/RunSanityTests) =================================================================== --- rvmroot/trunk/bin/RunSanityTests (rev 0) +++ rvmroot/trunk/bin/RunSanityTests 2006-09-14 16:03:28 UTC (rev 10782) @@ -0,0 +1,10 @@ +#! /bin/bash +# +# (C) Copyright IBM Corp. 2001, 2003 +# +# $Id$ +# +# @author Steve Fink +# @modified Steven Augart +# +exec "$RVM_ROOT/testing/harness/RunSanityTests" "$@" Deleted: rvmroot/trunk/bin/build-classpath-from-cvs =================================================================== --- rvmroot/trunk/rvm/bin/build-classpath-from-cvs 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/build-classpath-from-cvs 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,73 +0,0 @@ -#! /usr/bin/env bash -# -*- coding: iso-8859-1 ; mode: shell-script ;-*- -# (C) Copyright \xA9 IBM Corp. 2004 -# -# $Id$ -# -# This little program builds and installs GNU Classpath -# from a checked-out CVS repository. -# -# This is intended for use by a nightly regression script. -# You can also use it to build Classpath yourself. When you've run it, -# then set CLASSPATH_INSTALLATION in RVM_{HOST,TARGET}_CONFIG to -# the second argument, which should now be the head of a -# good GNU Classpath installation. -# -# @author Steven Augart -# @date 3 May 2004 - -ME=${0##*/} -function usage () { - cat >&2 <<EOF -Usage: $ME <classpath-checkout-dir> \$CLASSPATH_INSTALLATION <classpath-config-args> - Configure and build a GNU Classpath CVS Head checkout which is - already present in the directory <classpath-checkout-dir> and - then install it in <classpath-installation-dir>. Use the proper - configuration options for Jikes RVM. - - <classpath-config-args> are any extra configuration arguments you - want to use. -EOF -} -if (( $# < 2 )); then - usage; - exit 2; -fi -function croak () { - echo "${ME}: $*" >&2 - echo "${ME}: Aborting execution" - exit 3 -} -declare -r srcdir="$1" installdir="$2" -shift; shift -set -e -trap 'echo "Unexpected error; aborting"' ERR -cd $srcdir || croak "Unable to change directories into $srcdir." -[ -f HACKING ] || croak "Can not find a file named $srcdir/HACKING; this probably isn't a GNU Classpath checkout." -grep "Classpath" HACKING > /dev/null || croak "The file $srcdir/HACKING does not contain the word 'Classpath'; this might not be a GNU Classpath checkout." -if ! [ -f configure ] || ! [ -x configure ]; then - echo "$ME: Running autogen.sh to build a configure file for GNU Classpath" - ./autogen.sh - echo "$ME: done running autogen.sh" -fi - -if ! [[ $JIKES ]] \ - && [[ ${RVM_HOST_CONFIG} ]] && [[ -r ${RVM_HOST_CONFIG} ]] -then - eval $(grep JIKES ${RVM_HOST_CONFIG}) -fi -if [[ $JIKES ]] && ! [[ -x $JIKES ]]; then - unset JIKES -fi -if ! [[ $JIKES ]] \ - && [[ ${RVM_TARGET_CONFIG} ]] && [[ -r ${RVM_TARGET_CONFIG} ]] -then - eval $(grep JIKES ${RVM_TARGET_CONFIG}) -fi -if [[ ! $JIKES ]]; then - JIKES=$(type -p jikes) -fi - -./configure --disable-gtk-peer --prefix=${installdir} ${JIKES+--with-jikes=}${JIKES} "$@" -make -make install Copied: rvmroot/trunk/bin/build-classpath-from-cvs (from rev 10781, rvmroot/trunk/rvm/bin/build-classpath-from-cvs) =================================================================== --- rvmroot/trunk/bin/build-classpath-from-cvs (rev 0) +++ rvmroot/trunk/bin/build-classpath-from-cvs 2006-09-14 16:03:28 UTC (rev 10782) @@ -0,0 +1,73 @@ +#! /usr/bin/env bash +# -*- coding: iso-8859-1 ; mode: shell-script ;-*- +# (C) Copyright \xA9 IBM Corp. 2004 +# +# $Id$ +# +# This little program builds and installs GNU Classpath +# from a checked-out CVS repository. +# +# This is intended for use by a nightly regression script. +# You can also use it to build Classpath yourself. When you've run it, +# then set CLASSPATH_INSTALLATION in RVM_{HOST,TARGET}_CONFIG to +# the second argument, which should now be the head of a +# good GNU Classpath installation. +# +# @author Steven Augart +# @date 3 May 2004 + +ME=${0##*/} +function usage () { + cat >&2 <<EOF +Usage: $ME <classpath-checkout-dir> \$CLASSPATH_INSTALLATION <classpath-config-args> + Configure and build a GNU Classpath CVS Head checkout which is + already present in the directory <classpath-checkout-dir> and + then install it in <classpath-installation-dir>. Use the proper + configuration options for Jikes RVM. + + <classpath-config-args> are any extra configuration arguments you + want to use. +EOF +} +if (( $# < 2 )); then + usage; + exit 2; +fi +function croak () { + echo "${ME}: $*" >&2 + echo "${ME}: Aborting execution" + exit 3 +} +declare -r srcdir="$1" installdir="$2" +shift; shift +set -e +trap 'echo "Unexpected error; aborting"' ERR +cd $srcdir || croak "Unable to change directories into $srcdir." +[ -f HACKING ] || croak "Can not find a file named $srcdir/HACKING; this probably isn't a GNU Classpath checkout." +grep "Classpath" HACKING > /dev/null || croak "The file $srcdir/HACKING does not contain the word 'Classpath'; this might not be a GNU Classpath checkout." +if ! [ -f configure ] || ! [ -x configure ]; then + echo "$ME: Running autogen.sh to build a configure file for GNU Classpath" + ./autogen.sh + echo "$ME: done running autogen.sh" +fi + +if ! [[ $JIKES ]] \ + && [[ ${RVM_HOST_CONFIG} ]] && [[ -r ${RVM_HOST_CONFIG} ]] +then + eval $(grep JIKES ${RVM_HOST_CONFIG}) +fi +if [[ $JIKES ]] && ! [[ -x $JIKES ]]; then + unset JIKES +fi +if ! [[ $JIKES ]] \ + && [[ ${RVM_TARGET_CONFIG} ]] && [[ -r ${RVM_TARGET_CONFIG} ]] +then + eval $(grep JIKES ${RVM_TARGET_CONFIG}) +fi +if [[ ! $JIKES ]]; then + JIKES=$(type -p jikes) +fi + +./configure --disable-gtk-peer --prefix=${installdir} ${JIKES+--with-jikes=}${JIKES} "$@" +make +make install Deleted: rvmroot/trunk/bin/findDeviantFiles =================================================================== --- rvmroot/trunk/rvm/bin/findDeviantFiles 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/findDeviantFiles 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,198 +0,0 @@ -#! /bin/bash -# -*-coding: iso-8859-1; -*- -# -# (C) Copyright IBM Corp. 2001, 2003 -# -# $Id$ -# -# This shell finds plain files that have: -# no authorship tag: "@ author", or -# no copyright notice: "(C) Copyright", or -# no id: "$Id$". -# And source files (.java files) that have: -# embedded TAB characters (some editors don't display them properly) -# -# Three parameters: -# target directory -# source directory where to put output files -# suffix to identify output files -# -# This script could be more efficiently implemented by searching for all -# the missing information at the same time; however, we would not know -# what information was missing in a particular file. -# -# @Author: Peter F. Sweeney -# @Date: 2001/10/05 -# @Modified Steven Augart -# @Date 2003/06/02, 2003/07 -# Ported to Bash - -usage() { - local exitstatus="${1-1}"; - cat >&2 <<EOF -Usage: $ME <input-subtree> <output-directory> [ <suffix> ] - or: $ME --help - - Where - <input-subtree> identifies the directory subtree to search for files, - <output-directory> indicates where to put output files, and - <suffix> is a file extension appended to the output files. - - This script finds all files in a directory subtree - that don't contain either: - 1) an @author javadoc tag, - 2) a copyright notice, or - 3) an \$Id: tag. - - Output files: - - "<output-directory>/noAuthors[.<suffix>]" - Names of files without the @author tag - "<output-directory>/noCopyright[.<suffix>]" - Names of files without a copyright notice - "<output-directory>/noId[.<suffix>]" - Names of files without an \$Id: tag. - -EOF - exit ${exitstatus} -} - -# Turns on the -u option, where we scream if trouble. -set -o nounset - -# What is our name? -# Bash internal shorthand that works like the "basename" command. -ME="${0##*/}" - -if (( $# < 1 )); then # make sure $1 is set. - usage 1; -fi -case "$1" in - -help|--help) usage 0 ;; -esac - -if (( $# < 2 || $# > 3 )); then - usage 1; -fi -in="$1" -out="$2" -if (( $# == 3 )); then - suffix="$3" - [[ $suffix == .* ]] || suffix=".$suffix" -else - suffix="" -fi - -# Where are we? -# Bash internal shorthand that works like the "dirname" command. -mydir="${0%/*}" # temporary; directory we were run from - -if [[ $mydir && $mydir != $ME ]]; then - # Where to find auxiliary programs: - bin_dir="${mydir}" -else - bin_dir="${RVM_ROOT:?$ME: You must set the RVM_ROOT variable before you run this program.}/rvm/bin" -fi - -function croak_nonusage () { - # Display the error message. If it's a multi-line error message, indent - # the second and subsequent lines by a few spaces. - # Try to auto-wrap the message if we have GNU Fold. - - local gnufold="/usr/bin/fold --width=65 --spaces" - $gnufold < /dev/null &> /dev/null || gnufold=cat - - echo "${ME}: $*" | $gnufold | sed -e '2,$s/^/ /' >&2 - trap '' EXIT - exit 1 -} - -sanity_env="${bin_dir}/sanity-envars.bash" -[[ -f $sanity_env ]] || croak_nonusage "Internal error: Cannot find the file sanity-envars.bash ($sanity_env); something is badly broken." -[[ -r $sanity_env ]] || croak_nonusage "Internal error: Cannot read the file sanity-envars.bash ($sanity_env); something is badly broken. You might check the file permissions or user id you used to extract Jikes RVM." -. "${sanity_env}"; # sets ME, defines checkenv() - -checkenv RVM_ROOT -bin_dir=${RVM_ROOT}/rvm/bin - -if [[ "$mydir" == /* ]] && [ "$mydir" != "$bin_dir" ]; then - echo >&2 "Something is really strange here: This program was invoked out of the directory $mydir, but your RVM_ROOT is set to $RVM_ROOT. You may have an inconsistent PATH and RVM_ROOT. Going on anyway." -fi - -trap 'echo "$ME: An Unexpected Error happened; execution aborted" >&2' EXIT -set -e # Abort on errors - -## Create output directory if necessary. -mkdir -p "$2" -# cd to input directory -cd $in - - -## Will not follow symbolic links; you'd have to say "-follow" to do it. -# Skip Emacs backup files (this might be run from the working directory of a user. -# Skip svn internal files used to store older revisions. -# open a subexpression. Must be closed in the user (look for the ")") -# Skip .svn directories. -# Do show normal files. - -# This will make the bug discussed below appear irrespective of what is going on.. That is good. Better that this program break than not work. -shopt -s nullglob -### XXX This array version breaks due to what I believe is a bug in -### Bash, whereby the expression '*~' is being expanded in the calls -### to `find' (at least, it is being expanded whenever it might be.) -### OK, this is a bug in BASH version "2.05a.0(1)-release". -### The manual page clearly states: "the special pattern characters must be quoted if they are to be matched literally". - -## Turn off the globbing. This works in all BASH versions. -set -f -## Redundant with above -set -o noglob - -## Make sure ! is not magic. This really doesn't help, thought, since Bash -## defines '!' as a reserved word. -## Oddly, bash gripes even when the reserved words are quoted. How odd. -set +H - -# The expression: -# '\!' -name 'javacore*.txt' \ -# ignores the dump files that occur on AIX if the host JDK crashes. -# We'll get warned anyway, because the image will fail to build, but there -# is no point in getting warned multiply. - -declare -r -a find_optsA=( \ - -name .svn -prune \ - -o \ - '\!' -name 'javacore*.txt' \ - '\!' -name '*~' \ - '\!' -name '.*~' \ - '\!' -name '.#*' \ - -type f -print \ -); - -declare -r -a find_javaA=( \ - -name .svn -prune \ - -o -name '*.java' \ -); - -## The same bug afflicts the one below: - -declare -r find_optsSTR="-name .svn -prune -o \! -name *~ \! -name .*~ \! -name .#* -type f -print" - -#echo "find all plain files without @Author tags" -find . "${find_optsA[@]}" -exec fgrep -c "@author" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noAuthorFilter.awk" > "$out/noAuthor$suffix" -#find . ${find_opts} -exec fgrep -c "@author" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noAuthorFilter.awk" > "$out/noAuthor$suffix" - -#echo "find all plain files without copyright notices" -find . "${find_optsA[@]}" -exec egrep -c "\([cC]\) Copyright|Copyright \xA9|Copyright \([cC]\)" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noCopyrightFilter.awk" > "$out/noCopyright${suffix}" - -#echo "find all plain files without \$Id: tags" -find . "${find_optsA[@]}" -exec fgrep -c '$Id' {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noIdFilter.awk" > "$out/noId${suffix}" - -# echo "Find all .java files with embedded TAB characters" -## Not currently executed because we may no longer need this. -if false; then - TAB=' ' - find . "${find_javaA[@]}" -print0 | xargs -0 fgrep --files-with-matches "$TAB" > "$out/tabChars${suffix}" -fi - -trap '' EXIT Copied: rvmroot/trunk/bin/findDeviantFiles (from rev 10781, rvmroot/trunk/rvm/bin/findDeviantFiles) =================================================================== --- rvmroot/trunk/bin/findDeviantFiles (rev 0) +++ rvmroot/trunk/bin/findDeviantFiles 2006-09-14 16:03:28 UTC (rev 10782) @@ -0,0 +1,198 @@ +#! /bin/bash +# -*-coding: iso-8859-1; -*- +# +# (C) Copyright IBM Corp. 2001, 2003 +# +# $Id$ +# +# This shell finds plain files that have: +# no authorship tag: "@ author", or +# no copyright notice: "(C) Copyright", or +# no id: "$Id$". +# And source files (.java files) that have: +# embedded TAB characters (some editors don't display them properly) +# +# Three parameters: +# target directory +# source directory where to put output files +# suffix to identify output files +# +# This script could be more efficiently implemented by searching for all +# the missing information at the same time; however, we would not know +# what information was missing in a particular file. +# +# @Author: Peter F. Sweeney +# @Date: 2001/10/05 +# @Modified Steven Augart +# @Date 2003/06/02, 2003/07 +# Ported to Bash + +usage() { + local exitstatus="${1-1}"; + cat >&2 <<EOF +Usage: $ME <input-subtree> <output-directory> [ <suffix> ] + or: $ME --help + + Where + <input-subtree> identifies the directory subtree to search for files, + <output-directory> indicates where to put output files, and + <suffix> is a file extension appended to the output files. + + This script finds all files in a directory subtree + that don't contain either: + 1) an @author javadoc tag, + 2) a copyright notice, or + 3) an \$Id: tag. + + Output files: + + "<output-directory>/noAuthors[.<suffix>]" + Names of files without the @author tag + "<output-directory>/noCopyright[.<suffix>]" + Names of files without a copyright notice + "<output-directory>/noId[.<suffix>]" + Names of files without an \$Id: tag. + +EOF + exit ${exitstatus} +} + +# Turns on the -u option, where we scream if trouble. +set -o nounset + +# What is our name? +# Bash internal shorthand that works like the "basename" command. +ME="${0##*/}" + +if (( $# < 1 )); then # make sure $1 is set. + usage 1; +fi +case "$1" in + -help|--help) usage 0 ;; +esac + +if (( $# < 2 || $# > 3 )); then + usage 1; +fi +in="$1" +out="$2" +if (( $# == 3 )); then + suffix="$3" + [[ $suffix == .* ]] || suffix=".$suffix" +else + suffix="" +fi + +# Where are we? +# Bash internal shorthand that works like the "dirname" command. +mydir="${0%/*}" # temporary; directory we were run from + +if [[ $mydir && $mydir != $ME ]]; then + # Where to find auxiliary programs: + bin_dir="${mydir}" +else + bin_dir="${RVM_ROOT:?$ME: You must set the RVM_ROOT variable before you run this program.}/bin" +fi + +function croak_nonusage () { + # Display the error message. If it's a multi-line error message, indent + # the second and subsequent lines by a few spaces. + # Try to auto-wrap the message if we have GNU Fold. + + local gnufold="/usr/bin/fold --width=65 --spaces" + $gnufold < /dev/null &> /dev/null || gnufold=cat + + echo "${ME}: $*" | $gnufold | sed -e '2,$s/^/ /' >&2 + trap '' EXIT + exit 1 +} + +sanity_env="${bin_dir}/sanity-envars.bash" +[[ -f $sanity_env ]] || croak_nonusage "Internal error: Cannot find the file sanity-envars.bash ($sanity_env); something is badly broken." +[[ -r $sanity_env ]] || croak_nonusage "Internal error: Cannot read the file sanity-envars.bash ($sanity_env); something is badly broken. You might check the file permissions or user id you used to extract Jikes RVM." +. "${sanity_env}"; # sets ME, defines checkenv() + +checkenv RVM_ROOT +bin_dir=${RVM_ROOT}/bin + +if [[ "$mydir" == /* ]] && [ "$mydir" != "$bin_dir" ]; then + echo >&2 "Something is really strange here: This program was invoked out of the directory $mydir, but your RVM_ROOT is set to $RVM_ROOT. You may have an inconsistent PATH and RVM_ROOT. Going on anyway." +fi + +trap 'echo "$ME: An Unexpected Error happened; execution aborted" >&2' EXIT +set -e # Abort on errors + +## Create output directory if necessary. +mkdir -p "$2" +# cd to input directory +cd $in + + +## Will not follow symbolic links; you'd have to say "-follow" to do it. +# Skip Emacs backup files (this might be run from the working directory of a user. +# Skip svn internal files used to store older revisions. +# open a subexpression. Must be closed in the user (look for the ")") +# Skip .svn directories. +# Do show normal files. + +# This will make the bug discussed below appear irrespective of what is going on.. That is good. Better that this program break than not work. +shopt -s nullglob +### XXX This array version breaks due to what I believe is a bug in +### Bash, whereby the expression '*~' is being expanded in the calls +### to `find' (at least, it is being expanded whenever it might be.) +### OK, this is a bug in BASH version "2.05a.0(1)-release". +### The manual page clearly states: "the special pattern characters must be quoted if they are to be matched literally". + +## Turn off the globbing. This works in all BASH versions. +set -f +## Redundant with above +set -o noglob + +## Make sure ! is not magic. This really doesn't help, thought, since Bash +## defines '!' as a reserved word. +## Oddly, bash gripes even when the reserved words are quoted. How odd. +set +H + +# The expression: +# '\!' -name 'javacore*.txt' \ +# ignores the dump files that occur on AIX if the host JDK crashes. +# We'll get warned anyway, because the image will fail to build, but there +# is no point in getting warned multiply. + +declare -r -a find_optsA=( \ + -name .svn -prune \ + -o \ + '\!' -name 'javacore*.txt' \ + '\!' -name '*~' \ + '\!' -name '.*~' \ + '\!' -name '.#*' \ + -type f -print \ +); + +declare -r -a find_javaA=( \ + -name .svn -prune \ + -o -name '*.java' \ +); + +## The same bug afflicts the one below: + +declare -r find_optsSTR="-name .svn -prune -o \! -name *~ \! -name .*~ \! -name .#* -type f -print" + +#echo "find all plain files without @Author tags" +find . "${find_optsA[@]}" -exec fgrep -c "@author" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noAuthorFilter.awk" > "$out/noAuthor$suffix" +#find . ${find_opts} -exec fgrep -c "@author" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noAuthorFilter.awk" > "$out/noAuthor$suffix" + +#echo "find all plain files without copyright notices" +find . "${find_optsA[@]}" -exec egrep -c "\([cC]\) Copyright|Copyright \xA9|Copyright \([cC]\)" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noCopyrightFilter.awk" > "$out/noCopyright${suffix}" + +#echo "find all plain files without \$Id: tags" +find . "${find_optsA[@]}" -exec fgrep -c '$Id' {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noIdFilter.awk" > "$out/noId${suffix}" + +# echo "Find all .java files with embedded TAB characters" +## Not currently executed because we may no longer need this. +if false; then + TAB=' ' + find . "${find_javaA[@]}" -print0 | xargs -0 fgrep --files-with-matches "$TAB" > "$out/tabChars${suffix}" +fi + +trap '' EXIT Deleted: rvmroot/trunk/bin/findMatchedFiles.perl =================================================================== --- rvmroot/trunk/rvm/bin/findMatchedFiles.perl 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/findMatchedFiles.perl 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,53 +0,0 @@ -#! /usr/bin/perl -w -# -# (C) Copyright IBM Corp. 2001, 2003. -# -# $Id$ -# -# @author Peter Sweeney -# @date 11/2/2001 -# @modified Steven Augart -# @date 6/9/2003 -# Added check for internal error. - -## This is a helper program for -## "rvm/bin/findDeviantFiles". - - - -# -# Given input in the form of -# value -# filename -# list files that have a value of zero. -# -# The input is generated from a command in the form of: -# "find . -exec grep -c "string" {} \;" -# where value counts how many times string occurs in a file. -# -# This is used to find files that lack some piece of text. The input is -# generated by "grep -c". - -$debug = 0; - -@inputs = <STDIN>; - -for ($i=0; $i < @inputs; $i+=2) { - chomp($file = $inputs[$i]); - unless (defined($inputs[$i + 1])) { - die "Internal error in execution of findDeviantFiles; ODD # of input lines to findMatchedFiles.perl: \$inputs[$i + 1] is undefined. \@inputs is", scalar @inputs, "\n\t\$file is $file\n"; - } - chomp($value =$inputs[($i+1)]); - if ($debug>=1) {print "$i: line is '$file:$value'\n";} - if ($value eq 0) { - if($debug>=1){print "found file $file with no matches";} - if (! ($file =~ /\.dat/ || $file =~ /.svn/ || $file =~ /.template/ || - $file =~ /[0-9]d[0-9]/ || $file =~ /\.cvsignore/ || $file =~ /[\.\/]expected/ || - $file =~ /\/config/) ) { - if($debug>=1){print " valid\n";} - print "$file\n"; - } else { - if($debug>=1){print " invalid\n";} - } - } -} Copied: rvmroot/trunk/bin/findMatchedFiles.perl (from rev 10781, rvmroot/trunk/rvm/bin/findMatchedFiles.perl) =================================================================== --- rvmroot/trunk/bin/findMatchedFiles.perl (rev 0) +++ rvmroot/trunk/bin/findMatchedFiles.perl 2006-09-14 16:03:28 UTC (rev 10782) @@ -0,0 +1,53 @@ +#! /usr/bin/perl -w +# +# (C) Copyright IBM Corp. 2001, 2003. +# +# $Id$ +# +# @author Peter Sweeney +# @date 11/2/2001 +# @modified Steven Augart +# @date 6/9/2003 +# Added check for internal error. + +## This is a helper program for +## "/bin/findDeviantFiles". + + + +# +# Given input in the form of +# value +# filename +# list files that have a value of zero. +# +# The input is generated from a command in the form of: +# "find . -exec grep -c "string" {} \;" +# where value counts how many times string occurs in a file. +# +# This is used to find files that lack some piece of text. The input is +# generated by "grep -c". + +$debug = 0; + +@inputs = <STDIN>; + +for ($i=0; $i < @inputs; $i+=2) { + chomp($file = $inputs[$i]); + unless (defined($inputs[$i + 1])) { + die "Internal error in execution of findDeviantFiles; ODD # of input lines to findMatchedFiles.perl: \$inputs[$i + 1] is undefined. \@inputs is", scalar @inputs, "\n\t\$file is $file\n"; + } + chomp($value =$inputs[($i+1)]); + if ($debug>=1) {print "$i: line is '$file:$value'\n";} + if ($value eq 0) { + if($debug>=1){print "found file $file with no matches";} + if (! ($file =~ /\.dat/ || $file =~ /.svn/ || $file =~ /.template/ || + $file =~ /[0-9]d[0-9]/ || $file =~ /\.cvsignore/ || $file =~ /[\.\/]expected/ || + $file =~ /\/config/) ) { + if($debug>=1){print " valid\n";} + print "$file\n"; + } else { + if($debug>=1){print " invalid\n";} + } + } +} Deleted: rvmroot/trunk/bin/gdbInit =================================================================== --- rvmroot/trunk/rvm/bin/gdbInit 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/gdbInit 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,17 +0,0 @@ -# -# (C) Copyright IBM Corp. 2003 -# -# $Id$ -# -# gdb init file for running Jikes RVM executable on gdb -# -# @author Dave Grove -# - -# Tell gdb to completely ignore some signals that Jikes RVM uses -# for its own purposes. -# SIGSEGV is a null pointer exception -handle SIGSEGV nostop noprint pass - -# Set an initial breakpoint right before we start the jump into VM.boot -break bootThread Copied: rvmroot/trunk/bin/gdbInit (from rev 10781, rvmroot/trunk/rvm/bin/gdbInit) =================================================================== --- rvmroot/trunk/bin/gdbInit (rev 0) +++ rvmroot/trunk/bin/gdbInit 2006-09-14 16:03:28 UTC (rev 10782) @@ -0,0 +1,17 @@ +# +# (C) Copyright IBM Corp. 2003 +# +# $Id$ +# +# gdb init file for running Jikes RVM executable on gdb +# +# @author Dave Grove +# + +# Tell gdb to completely ignore some signals that Jikes RVM uses +# for its own purposes. +# SIGSEGV is a null pointer exception +handle SIGSEGV nostop noprint pass + +# Set an initial breakpoint right before we start the jump into VM.boot +break bootThread Deleted: rvmroot/trunk/bin/gdbrvm =================================================================== --- rvmroot/trunk/rvm/bin/gdbrvm 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/gdbrvm 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,138 +0,0 @@ -#! /bin/bash -# -# (C) Copyright IBM Corp. 2003 -# -# $Id$ -# -# Run Jikes RVM under the gdb debugger. -# -# The script validates the RVM_ environment variables and -# computes command line arguments for the Jikes RVM executable. -# -# It then executes a standard gdb macro file that does some -# common setup tasks. -# -# @author Dave Grove -# @modified Steven Augart -# Converted to Bash. - -# Sanity checks -# What is our name? -# Bash internal shorthand that works like the "basename" command. -ME="${0##*/}" - -# Where are we? -# Bash internal shorthand that works like the "dirname" command. -mydir="${0%/*}" # temporary; directory we were run from - -function croak_nonusage () { - # Display the error message. If it's a multi-line error message, indent - # the second and subsequent lines by a few spaces. - # Try to auto-wrap the message if we have GNU Fold. - - local gnufold="/usr/bin/fold --width=65 --spaces" - $gnufold < /dev/null &> /dev/null || gnufold=cat - - echo "${ME}: $*" | $gnufold | sed -e '2,$s/^/ /' >&2 - trap '' EXIT - exit 1 -} - - -if [[ $mydir && $mydir != $ME ]]; then - # Where to find auxiliary programs: - bin_dir="${mydir}" -else - bin_dir="${RVM_ROOT:?$ME: You must set the RVM_ROOT variable before you run this program.}/rvm/bin" -fi - -sanity_env="${bin_dir}/sanity-envars.bash" -[[ -f $sanity_env ]] || croak_nonusage "Internal error: Cannot find the file sanity-envars.bash ($sanity_env); something is badly broken." -[[ -r $sanity_env ]] || croak_nonusage "Internal error: Cannot read the file sanity-envars.bash ($sanity_env); something is badly broken. You might check the file permissions or user id you used to extract Jikes RVM." -. "${sanity_env}"; # Defines checkenv() - -## Sanity checks for environment variables. - -checkenv HOME -# Place where source files reside. -checkenv RVM_ROOT - -# We reset bin_dir so that we're sure to have an absolute pathname. -bin_dir="${RVM_ROOT}/rvm/bin"; -checkenv RVM_BUILD - -home="$HOME" -rvm_root="$RVM_ROOT" -rvm_build="$RVM_BUILD" - -# TODO: This portion of the gdbrvm program should be consolidated with -# the originally-identical part of the runrvm program. - -## If you change anything below this point, you probably want to -## change runrvm as well. - -# Load up where the RVM bootimage, booter, and runtime support files reside: -env="$rvm_build/environment.target" -[[ -f $env ]] || croak_nonusage "Cannot find a file named \"$env\"; have you set RVM_BUILD to a Jikes RVM build directory that was initialized by \"jconfigure\"?" -[[ -r $env ]] || croak_nonusage "Cannot read the file named \"$env\"; some sort of permissions problem." -. $env -unset env - -declare -a gdb_args -gdb_args=() -if (( $# >= 1 )) && [[ $1 == -fullname ]]; then - gdb_args=("$1"); - shift; -fi - -# Note: Writing it like this commented-out line below will break! Must not -# incorporate the assignment into the declare, at least under Bash 2.05b. -#declare -a user_args=("$@") -declare -a user_args -user_args=("$@") - -# Add arguments to the invocation line for $rvm_build/JikesRVM. We -# put these before any user-specified arguments, so that any flags -# that the user may have explicitly specified will override our defaults. - -## These are the first set of defines (we used to -## set these before checking user args, for some odd reason). - -declare -a sys_args -sys_args=("-X:ic=$rvm_build/RVM.code.image" \ - "-X:id=$rvm_build/RVM.data.image" \ - "-X:ir=$rvm_build/RVM.rmap.image" \ - "-X:vmClasses=$rvm_build/RVM.classes/jksvm.jar:$rvm_build/RVM.classes/rvmrt.jar" \ - "-Drvm.root=$rvm_root" \ - "-Drvm.build=$rvm_build" \ - "-Djava.home=$rvm_root" \ - "-Dgnu.classpath.home.url=file:${rvm_build}" \ - "-Dgnu.classpath.vm.shortname=JikesRVM" \ - "-Duser.home=$home" "-Duser.dir=$(pwd)" \ - "-Dos.name=$(uname -s)" "-Dos.version=$(uname -r)" \ - "-Dos.arch=\"$(uname -m)\"" \ - ) - -## This implementation is dependent upon subsequent uses of -cp and -classpath -## overriding previous uses. This allows us to maintain the semantics that -## the CLASSPATH envar is overridden by any user-specified arguments. -declare -a classpath_args - -if [[ ${CLASSPATH-UNSET} = UNSET ]]; then - classpath_arg=(); -else - classpath_arg=('-classpath' "${CLASSPATH}"); -fi - -# Now execute the VM -prog="$rvm_build/JikesRVM" -[[ -f $prog ]] || croak_nonusage "Cannot find a file named \"$prog\"; have you set RVM_BUILD to a Jikes RVM build directory that contains a successfully-completed build?" -[[ -x $prog ]] || croak_nonusage "Cannot execute the file named \"$prog\"; some sort of permissions problem. Something weird is happening. Maybe somebody with a highly restrictive \"umask\" compiled Jikes RVM?" - -argf="$RVM_BUILD/gdb.commandlineArgs" -echo -n "set args" > "$argf" -for arg in "${sys_args[@]}" "${classpath_arg[@]}" "${user_args[@]}"; do - echo -n " \"$arg\"" -done >> "$argf" -echo "" >> "$argf" -gdb "${gdb_args[@]}" "$prog" -x "$RVM_BUILD/gdb.commandlineArgs" -x "$RVM_ROOT/rvm/bin/gdbInit" Copied: rvmroot/trunk/bin/gdbrvm (from rev 10781, rvmroot/trunk/rvm/bin/gdbrvm) =================================================================== --- rvmroot/trunk/bin/gdbrvm (rev 0) +++ rvmroot/trunk/bin/gdbrvm 2006-09-14 16:03:28 UTC (rev 10782) @@ -0,0 +1,138 @@ +#! /bin/bash +# +# (C) Copyright IBM Corp. 2003 +# +# $Id$ +# +# Run Jikes RVM under the gdb debugger. +# +# The script validates the RVM_ environment variables and +# computes command line arguments for the Jikes RVM executable. +# +# It then executes a standard gdb macro file that does some +# common setup tasks. +# +# @author Dave Grove +# @modified Steven Augart +# Converted to Bash. + +# Sanity checks +# What is our name? +# Bash internal shorthand that works like the "basename" command. +ME="${0##*/}" + +# Where are we? +# Bash internal shorthand that works like the "dirname" command. +mydir="${0%/*}" # temporary; directory we were run from + +function croak_nonusage () { + # Display the error message. If it's a multi-line error message, indent + # the second and subsequent lines by a few spaces. + # Try to auto-wrap the message if we have GNU Fold. + + local gnufold="/usr/bin/fold --width=65 --spaces" + $gnufold < /dev/null &> /dev/null || gnufold=cat + + echo "${ME}: $*" | $gnufold | sed -e '2,$s/^/ /' >&2 + trap '' EXIT + exit 1 +} + + +if [[ $mydir && $mydir != $ME ]]; then + # Where to find auxiliary programs: + bin_dir="${mydir}" +else + bin_dir="${RVM_ROOT:?$ME: You must set the RVM_ROOT variable before you run this program.}/bin" +fi + +sanity_env="${bin_dir}/sanity-envars.bash" +[[ -f $sanity_env ]] || croak_nonusage "Internal error: Cannot find the file sanity-envars.bash ($sanity_env); something is badly broken." +[[ -r $sanity_env ]] || croak_nonusage "Internal error: Cannot read the file sanity-envars.bash ($sanity_env); something is badly broken. You might check the file permissions or user id you used to extract Jikes RVM." +. "${sanity_env}"; # Defines checkenv() + +## Sanity checks for environment variables. + +checkenv HOME +# Place where source files reside. +checkenv RVM_ROOT + +# We reset bin_dir so that we're sure to have an absolute pathname. +bin_dir="${RVM_ROOT}/bin"; +checkenv RVM_BUILD + +home="$HOME" +rvm_root="$RVM_ROOT" +rvm_build="$RVM_BUILD" + +# TODO: This portion of the gdbrvm program should be consolidated with +# the originally-identical part of the runrvm program. + +## If you change anything below this point, you probably want to +## change runrvm as well. + +# Load up where the RVM bootimage, booter, and runtime support files reside: +env="$rvm_build/environment.target" +[[ -f $env ]] || croak_nonusage "Cannot find a file named \"$env\"; have you set RVM_BUILD to a Jikes RVM build directory that was initialized by \"jconfigure\"?" +[[ -r $env ]] || croak_nonusage "Cannot read the file named \"$env\"; some sort of permissions problem." +. $env +unset env + +declare -a gdb_args +gdb_args=() +if (( $# >= 1 )) && [[ $1 == -fullname ]]; then + gdb_args=("$1"); + shift; +fi + +# Note: Writing it like this commented-out line below will break! Must not +# incorporate the assignment into the declare, at least under Bash 2.05b. +#declare -a user_args=("$@") +declare -a user_args +user_args=("$@") + +# Add arguments to the invocation line for $rvm_build/JikesRVM. We +# put these before any user-specified arguments, so that any flags +# that the user may have explicitly specified will override our defaults. + +## These are the first set of defines (we used to +## set these before checking user args, for some odd reason). + +declare -a sys_args +sys_args=("-X:ic=$rvm_build/RVM.code.image" \ + "-X:id=$rvm_build/RVM.data.image" \ + "-X:ir=$rvm_build/RVM.rmap.image" \ + "-X:vmClasses=$rvm_build/RVM.classes/jksvm.jar:$rvm_build/RVM.classes/rvmrt.jar" \ + "-Drvm.root=$rvm_root" \ + "-Drvm.build=$rvm_build" \ + "-Djava.home=$rvm_root" \ + "-Dgnu.classpath.home.url=file:${rvm_build}" \ + "-Dgnu.classpath.vm.shortname=JikesRVM" \ + "-Duser.home=$home" "-Duser.dir=$(pwd)" \ + "-Dos.name=$(uname -s)" "-Dos.version=$(uname -r)" \ + "-Dos.arch=\"$(uname -m)\"" \ + ) + +## This implementation is dependent upon subsequent uses of -cp and -classpath +## overriding previous uses. This allows us to maintain the semantics that +## the CLASSPATH envar is overridden by any user-specified arguments. +declare -a classpath_args + +if [[ ${CLASSPATH-UNSET} = UNSET ]]; then + classpath_arg=(); +else + classpath_arg=('-classpath' "${CLASSPATH}"); +fi + +# Now execute the VM +prog="$rvm_build/JikesRVM" +[[ -f $prog ]] || croak_nonusage "Cannot find a file named \"$prog\"; have you set RVM_BUILD to a Jikes RVM build directory that contains a successfully-completed build?" +[[ -x $prog ]] || croak_nonusage "Cannot execute the file named \"$prog\"; some sort of permissions problem. Something weird is happening. Maybe somebody with a highly restrictive \"umask\" compiled Jikes RVM?" + +argf="$RVM_BUILD/gdb.commandlineArgs" +echo -n "set args" > "$argf" +for arg in "${sys_args[@]}" "${classpath_arg[@]}" "${user_args[@]}"; do + echo -n " \"$arg\"" +done >> "$argf" +echo "" >> "$argf" +gdb "${gdb_args[@]}" "$prog" -x "$RVM_BUILD/gdb.commandlineArgs" -x "$RVM_ROOT/bin/gdbInit" Deleted: rvmroot/trunk/bin/jBuildClasspathJar =================================================================== --- rvmroot/trunk/rvm/bin/jBuildClasspathJar 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/jBuildClasspathJar 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,276 +0,0 @@ -#! /bin/bash -# -# (C) Copyright IBM 2002, 2003, 2004 -# -# $Id$ -# @author Julian Dolby -# @modified Steven Augart -# (Bash conversion plus more error checking.) -# - -## Progress messages go to stdout; failures to stderr. - -## This program is sensitive to the following environment variables. -## (If it can, it will read them in from $RVM_BUILD/environment.host) -## JAL_ROOT (to determine whether we're running under jbuild) -## -## JIKES -## JAR -## ZIP_CMD -## AR -## CC -## CPLUS -## FIND -## AR_FLAGS -## RVM_ROOT -## GNU_MAKE -## GREP -## XARGS - -## BUILDING_CLASSPATH_FROM_CVS_HEAD -## CLASSPATH_ROOT ( optional ) - -## This program should NOT be called if you have CLASSPATH_INSTALLATION set. -## If it is, then we give up. - - -trap 'echo "$ME: Aborted due to a command exiting with error status ($?)"' ERR 2> /dev/null || : -set -e -ME="${0##*/}" -if [[ ! ${JAL_BUILD-} ]]; then - if ! [[ ${RVM_BUILD-} ]]; then - echo >&2 "$ME: RVM_BUILD must be set if you're not running this program - as a subsidiary of jbuild. It isn't; aborting." - exit 1 - fi - . ${RVM_BUILD}/environment.host -fi - - -## -## constants -## -TOP_LEVEL_PACKAGES="java javax gnu" - -## -## defaults -## -declare -i CHECK=0 -export DEST_DIR=${CLASSPATH_ROOT:-$RVM_ROOT/classpath} -OSNAME="$(uname)" - -if [[ ${JIKES-:} ]]; then - JIKES_ARG="--with-jikes=\"$JIKES\"" -fi -JAR_TOOL=$JAR - -declare -i AIX=0 -# OSTYPE is a Bash builtin, not a typo for OSNAME -[[ $OSTYPE == aix* ]] && AIX=1 - -## -## process arguments -## -while [[ $# > 0 ]] ; do - case $1 in - --destination) - DEST_DIR=$2 - shift - ;; - - --check) - CHECK=1 - ;; - esac - shift -done - -## Where are Classpath's sources? -if [[ ${CLASSPATH_SOURCE_DIR-} ]]; then - SRC=${CLASSPATH_SOURCE_DIR} -else - SRC=$DEST_DIR/classpath -fi - -## If the user has already unpacked Classpath into SRC, then -## we are OK. - -if [[ -e $SRC/config.guess ]]; then - export USE_LOCAL_CLASSPATH="yes" -else - export USE_LOCAL_CLASSPATH="no" -fi - - - -## What args do we give to classpath's "configure" command? -function classpath_configure_args () { - if (( AIX )); then - ## AIX does not come with pkg-config or glib by default. So, if - ## someone is doing a default AIX build, we'll disable them. - ## - ## The GTk peers won't do any good without select hijacking, - ## in any case. - ## Also disable gcjwebplugin. - echo " --disable-gtk-peer --disable-gconf-peer --disable-plugin CPPFLAGS='-D_POSIX_SOURCE -D_ALL_SOURCE -D__ppc__'" - return; - fi - - # Enable AWT support using gtk peers if gtk appears to be installed - # and this isn't an X86_64 build - if [[ -e /usr/include/gtk-2.0/gtk/gtk.h ]] || [[ -e /opt/gnome/include/gtk-2.0/gtk/gtk.h ]]; then - if [ `uname -m` == "x86_64" ]; then - echo " --disable-gtk-peer" - else - echo " --enable-gtk-peer" - fi - else - echo " --disable-gtk-peer" - fi - - # Disable building the mozilla plugin - echo " --disable-plugin" - - # Disable building gconf peers - echo " --disable-gconf-peer" - - # Disable the ALSA sound library for x86_64 builds. This hides a - # bug for libtool in classpath where a 32bit address space - # compilation gets linked against the 64bit ALSA libraries. - if [ `uname -m` == "x86_64" ]; then - echo " --disable-alsa" - fi -} - - -## -## Warn if timestamps do not match. -## -mismatch=0 -if ! [[ ${BUILDING_CLASSPATH_FROM_CVS_HEAD-} ]] && [[ "$USE_LOCAL_CLASSPATH" = "no" ]]; then - if [[ -e $DEST_DIR/stamp ]]; then - declare -i stat=0 - echo $RVM_CLASSPATH_URL > /tmp/classpath.stamp - $DIFF /tmp/classpath.stamp $DEST_DIR/stamp > /dev/null || stat=$? - rm /tmp/classpath.stamp - if (( stat == 1 )); then - echo >&2 "${ME}: I think you want me to automatically download and build GNU Classpath. But, there's already some sort of Classpath download in $DEST_DIR." - echo >&2 "The timestamp in $DEST_DIR/stamp is: $(< $DEST_DIR/stamp)" - echo >&2 "The timestamp I expect is: $RVM_CLASSPATH_URL" - let ++mismatch; - elif (( stat != 0 )); then - echo >&2 "$ME: $DIFF failed with bad status $stat; aborting" - exit $stat - fi - elif [[ -e $DEST_DIR ]]; then - echo >&2 "${ME}: $DEST_DIR contains what might be an unknown GNU Classpath download" - echo >&2 "${ME}: I expected to find a file named $DEST_DIR/stamp" - echo >&2 "${ME}: that contains the timestamp: $RVM_CLASSPATH_URL" - let ++mismatch; - fi -fi - -if (( mismatch )); then - echo >&2 "${ME}: Either (a) set one of the CLASSPATH_ variables in your config file and rerun \"jconfigure\" or (b) delete $DEST_DIR. Then restart this build. If you wipe out $DEST_DIR, I will automatically download GNU Classpath and build it for you. If you set one of the CLASSPATH_ variables, I will use the already built or installed GNU Classpath that I find there." - exit 1 -fi - -## -## check if requested -## -declare BUILD="" -BUILD=${CLASSPATH_BUILD_DIR-} # Potentially unset. -declare system_type="" -if (( CHECK )) && [[ -e $SRC/config.guess ]]; then - if [[ ! ${BUILD} ]]; then - system_type="$($SRC/config.guess)" - BUILD=$DEST_DIR/$system_type - fi - if [[ -e $BUILD/lib/glibj.zip ]]; then - exit 0 - fi - ## Didn't find an existing classpath. -fi - - -## -## download classpath if needed -## -if [[ ! -e $SRC/TODO ]]; then - if [[ $USE_LOCAL_CLASSPATH != "no" ]]; then - echo >&2 "Please download GNU Classpath and unpack it in $DEST_DIR" - echo >&2 "(See $RVM_ROOT/rvm/config/classpath-version for version information)" - exit 1 - fi - echo "Downloading GNU Classpath" - rm -rf $DEST_DIR - mkdir -p $DEST_DIR - cd $DEST_DIR - - # use curl if we have it - if [[ -e `type -p curl` ]]; then - curl $RVM_CLASSPATH_URL -oclasspath.tar.gz - else - $WGET --passive-ftp $RVM_CLASSPATH_URL -Oclasspath.tar.gz - fi - $GNU_TAR xzf classpath.tar.gz - rm classpath.tar.gz - mv classpath-* classpath - echo $RVM_CLASSPATH_URL > stamp - # stuff untarred into the dir "classpath", which should be the same as - # $SRC. - if [[ ! -e $SRC/TODO ]]; then - echo >&2 "$ME: Internal error or weird trouble: After retrieving - Classpath sources under the directory \`$DEST_DIR', - we still can not find a file named \`$SRC/TODO'" - exit 1 - fi -fi -cd $SRC - -# Set up the directory for building if it's not already done. -# This will only be needed if you are using a CVS release. -if [[ ! -e $SRC/configure ]]; then - echo >&2 "Setting up source tree" - ./autogen.sh -fi - -function aix_cleanups() { - local mkf=native/fdlibm/Makefile - echo "Cleaning up $mkf for AIX" - sed -e '/^CPPFLAGS/s/-D_ALL_SOURCE//' $mkf > ${mkf}.tmp - mv -f ${mkf}.tmp ${mkf} - - mkf=native/jni/java-lang/Makefile - echo "Cleaning up ${mkf} for AIX" - sed -e '/^LIBS *=/s/$/-lm/' $mkf > $mkf.tmp - mv -f ${mkf}.tmp ${mkf} -} - -# configure and build library -[[ $system_type ]] || system_type=$($SRC/config.guess) -if [[ ! $BUILD ]]; then - BUILD=$DEST_DIR/$system_type -fi - -if [[ ! -e $BUILD/lib/glibj.zip ]]; then - mkdir -p $BUILD - echo "Configuring for $system_type" - cd $BUILD - CXX=$CPLUS CC=$CC FIND=$FIND ZIP=$ZIP_CMD AR=$AR AR_FLAGS=$AR_FLAGS eval ../classpath/configure --enable-jni $JIKES_ARG $(classpath_configure_args) - if (( AIX )); then - aix_cleanups - fi - echo "Building the library" - $GNU_MAKE -fi - -# build classpath source jar -cp_src_jar_dir=$RVM_ROOT/support/lib -cp_src_jar=${cp_src_jar_dir}/classpathsrc.jar -echo "Building ${cp_src_jar}" -rm -f ${cp_src_jar} -mkdir -p $cp_src_jar_dir -touch ${cp_src_jar} -cd $SRC -$FIND $TOP_LEVEL_PACKAGES -name '*.java' | $GREP -v -f `find .. -name standard.omit` | $XARGS $JAR_TOOL uf ${cp_src_jar} Copied: rvmroot/trunk/bin/jBuildClasspathJar (from rev 10781, rvmroot/trunk/rvm/bin/jBuildClasspathJar) =================================================================== --- rvmroot/trunk/bin/jBuildClasspathJar (rev 0) +++ rvmroot/trunk/bin/jBuildClasspathJar 2006-09-14 16:03:28 UTC (rev 10782) @@ -0,0 +1,276 @@ +#! /bin/bash +# +# (C) Copyright IBM 2002, 2003, 2004 +# +# $Id$ +# @author Julian Dolby +# @modified Steven Augart +# (Bash conversion plus more error checking.) +# + +## Progress messages go to stdout; failures to stderr. + +## This program is sensitive to the following environment variables. +## (If it can, it will read them in from $RVM_BUILD/environment.host) +## JAL_ROOT (to determine whether we're running under jbuild) +## +## JIKES +## JAR +## ZIP_CMD +## AR +## CC +## CPLUS +## FIND +## AR_FLAGS +## RVM_ROOT +## GNU_MAKE +## GREP +## XARGS + +## BUILDING_CLASSPATH_FROM_CVS_HEAD +## CLASSPATH_ROOT ( optional ) + +## This program should NOT be called if you have CLASSPATH_INSTALLATION set. +## If it is, then we give up. + + +trap 'echo "$ME: Aborted due to a command exiting with error status ($?)"' ERR 2> /dev/null || : +set -e +ME="${0##*/}" +if [[ ! ${JAL_BUILD-} ]]; then + if ! [[ ${RVM_BUILD-} ]]; then + echo >&2 "$ME: RVM_BUILD must be set if you're not running this program + as a subsidiary of jbuild. It isn't; aborting." + exit 1 + fi + . ${RVM_BUILD}/environment.host +fi + + +## +## constants +## +TOP_LEVEL_PACKAGES="java javax gnu" + +## +## defaults +## +declare -i CHECK=0 +export DEST_DIR=${CLASSPATH_ROOT:-$RVM_ROOT/classpath} +OSNAME="$(uname)" + +if [[ ${JIKES-:} ]]; then + JIKES_ARG="--with-jikes=\"$JIKES\"" +fi +JAR_TOOL=$JAR + +declare -i AIX=0 +# OSTYPE is a Bash builtin, not a typo for OSNAME +[[ $OSTYPE == aix* ]] && AIX=1 + +## +## process arguments +## +while [[ $# > 0 ]] ; do + case $1 in + --destination) + DEST_DIR=$2 + shift + ;; + + --check) + CHECK=1 + ;; + esac + shift +done + +## Where are Classpath's sources? +if [[ ${CLASSPATH_SOURCE_DIR-} ]]; then + SRC=${CLASSPATH_SOURCE_DIR} +else + SRC=$DEST_DIR/classpath +fi + +## If the user has already unpacked Classpath into SRC, then +## we are OK. + +if [[ -e $SRC/config.guess ]]; then + export USE_LOCAL_CLASSPATH="yes" +else + export USE_LOCAL_CLASSPATH="no" +fi + + + +## What args do we give to classpath's "configure" command? +function classpath_configure_args () { + if (( AIX )); then + ## AIX does not come with pkg-config or glib by default. So, if + ## someone is doing a default AIX build, we'll disable them. + ## + ## The GTk peers won't do any good without select hijacking, + ## in any case. + ## Also disable gcjwebplugin. + echo " --disable-gtk-peer --disable-gconf-peer --disable-plugin CPPFLAGS='-D_POSIX_SOURCE -D_ALL_SOURCE -D__ppc__'" + return; + fi + + # Enable AWT support using gtk peers if gtk appears to be installed + # and this isn't an X86_64 build + if [[ -e /usr/include/gtk-2.0/gtk/gtk.h ]] || [[ -e /opt/gnome/include/gtk-2.0/gtk/gtk.h ]]; then + if [ `uname -m` == "x86_64" ]; then + echo " --disable-gtk-peer" + else + echo " --enable-gtk-peer" + fi + else + echo " --disable-gtk-peer" + fi + + # Disable building the mozilla plugin + echo " --disable-plugin" + + # Disable building gconf peers + echo " --disable-gconf-peer" + + # Disable the ALSA sound library for x86_64 builds. This hides a + # bug for libtool in classpath where a 32bit address space + # compilation gets linked against the 64bit ALSA libraries. + if [ `uname -m` == "x86_64" ]; then + echo " --disable-alsa" + fi +} + + +## +## Warn if timestamps do not match. +## +mismatch=0 +if ! [[ ${BUILDING_CLASSPATH_FROM_CVS_HEAD-} ]] && [[ "$USE_LOCAL_CLASSPATH" = "no" ]]; then + if [[ -e $DEST_DIR/stamp ]]; then + declare -i stat=0 + echo $RVM_CLASSPATH_URL > /tmp/classpath.stamp + $DIFF /tmp/classpath.stamp $DEST_DIR/stamp > /dev/null || stat=$? + rm /tmp/classpath.stamp + if (( stat == 1 )); then + echo >&2 "${ME}: I think you want me to automatically download and build GNU Classpath. But, there's already some sort of Classpath download in $DEST_DIR." + echo >&2 "The timestamp in $DEST_DIR/stamp is: $(< $DEST_DIR/stamp)" + echo >&2 "The timestamp I expect is: $RVM_CLASSPATH_URL" + let ++mismatch; + elif (( stat != 0 )); then + echo >&2 "$ME: $DIFF failed with bad status $stat; aborting" + exit $stat + fi + elif [[ -e $DEST_DIR ]]; then + echo >&2 "${ME}: $DEST_DIR contains what might be an unknown GNU Classpath download" + echo >&2 "${ME}: I expected to find a file named $DEST_DIR/stamp" + echo >&2 "${ME}: that contains the timestamp: $RVM_CLASSPATH_URL" + let ++mismatch; + fi +fi + +if (( mismatch )); then + echo >&2 "${ME}: Either (a) set one of the CLASSPATH_ variables in your config file and rerun \"jconfigure\" or (b) delete $DEST_DIR. Then restart this build. If you wipe out $DEST_DIR, I will automatically download GNU Classpath and build it for you. If you set one of the CLASSPATH_ variables, I will use the already built or installed GNU Classpath that I find there." + exit 1 +fi + +## +## check if requested +## +declare BUILD="" +BUILD=${CLASSPATH_BUILD_DIR-} # Potentially unset. +declare system_type="" +if (( CHECK )) && [[ -e $SRC/config.guess ]]; then + if [[ ! ${BUILD} ]]; then + system_type="$($SRC/config.guess)" + BUILD=$DEST_DIR/$system_type + fi + if [[ -e $BUILD/lib/glibj.zip ]]; then + exit 0 + fi + ## Didn't find an existing classpath. +fi + + +## +## download classpath if needed +## +if [[ ! -e $SRC/TODO ]]; then + if [[ $USE_LOCAL_CLASSPATH != "no" ]]; then + echo >&2 "Please download GNU Classpath and unpack it in $DEST_DIR" + echo >&2 "(See $RVM_ROOT/rvm/config/classpath-version for version information)" + exit 1 + fi + echo "Downloading GNU Classpath" + rm -rf $DEST_DIR + mkdir -p $DEST_DIR + cd $DEST_DIR + + # use curl if we have it + if [[ -e `type -p curl` ]]; then + curl $RVM_CLASSPATH_URL -oclasspath.tar.gz + else + $WGET --passive-ftp $RVM_CLASSPATH_URL -Oclasspath.tar.gz + fi + $GNU_TAR xzf classpath.tar.gz + rm classpath.tar.gz + mv classpath-* classpath + echo $RVM_CLASSPATH_URL > stamp + # stuff untarred into the dir "classpath", which should be the same as + # $SRC. + if [[ ! -e $SRC/TODO ]]; then + echo >&2 "$ME: Internal error or weird trouble: After retrieving + Classpath sources under the directory \`$DEST_DIR', + we still can not find a file named \`$SRC/TODO'" + exit 1 + fi +fi +cd $SRC + +# Set up the directory for building if it's not already done. +# This will only be needed if you are using a CVS release. +if [[ ! -e $SRC/configure ]]; then + echo >&2 "Setting up source tree" + ./autogen.sh +fi + +function aix_cleanups() { + local mkf=native/fdlibm/Makefile + echo "Cleaning up $mkf for AIX" + sed -e '/^CPPFLAGS/s/-D_ALL_SOURCE//' $mkf > ${mkf}.tmp + mv -f ${mkf}.tmp ${mkf} + + mkf=native/jni/java-lang/Makefile + echo "Cleaning up ${mkf} for AIX" + sed -e '/^LIBS *=/s/$/-lm/' $mkf > $mkf.tmp + mv -f ${mkf}.tmp ${mkf} +} + +# configure and build library +[[ $system_type ]] || system_type=$($SRC/config.guess) +if [[ ! $BUILD ]]; then + BUILD=$DEST_DIR/$system_type +fi + +if [[ ! -e $BUILD/lib/glibj.zip ]]; then + mkdir -p $BUILD + echo "Configuring for $system_type" + cd $BUILD + CXX=$CPLUS CC=$CC FIND=$FIND ZIP=$ZIP_CMD AR=$AR AR_FLAGS=$AR_FLAGS eval ../classpath/configure --enable-jni $JIKES_ARG $(classpath_configure_args) + if (( AIX )); then + aix_cleanups + fi + echo "Building the library" + $GNU_MAKE +fi + +# build classpath source jar +cp_src_jar_dir=$RVM_ROOT/support/lib +cp_src_jar=${cp_src_jar_dir}/classpathsrc.jar +echo "Building ${cp_src_jar}" +rm -f ${cp_src_jar} +mkdir -p $cp_src_jar_dir +touch ${cp_src_jar} +cd $SRC +$FIND $TOP_LEVEL_PACKAGES -name '*.java' | $GREP -v -f `find .. -name standard.omit` | $XARGS $JAR_TOOL uf ${cp_src_jar} Deleted: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/rvm/bin/jconfigure 2006-09-13 12:26:51 UTC (rev 10777) +++ rvmroot/trunk/bin/jconfigure 2006-09-14 16:03:28 UTC (rev 10782) @@ -1,5049 +0,0 @@ -#! /usr/bin/env bash -# -# (C) Copyright IBM Corp. 2001, 2002, 2003, 2004, 2005 -# -#$Id$ -# -# Generate control files necessary to build a particular "configuration" -# of the Research Virtual Machine. -# -# See the usage message below, in section 1, the def. of function -# help_message. It gives much more information than is in this header comment. -# -# This script is organized into seven sections: -# 0 - Setup -# 1 - Documentation -# 2 - Definitions of constants -# 3 - Process RVM_TARGET_CONFIG -# 4 - ARGUMENT PARSING -# 5 - Definitions of functions -# 6 - Mainline Code that does the work -# -# @author Derek Lieber -# @date 19 Jan 2000 -# @author Steven Augart (Bash version) -# @date 17 May 2003 - -## We can first do some simple version tests to keep from getting slipped Bash -## version 2.03 or earlier. -if ! echo D | read -n 1 > /dev/null 2>&1 ; then - echo >&2 "$0: ERROR: We are somehow running under a version of the shell that does not recognize the '-n' argument to the 'read' builtin. This program absolutely requires Bash version 2.05 or better to run, and we recommend 2.05a or better. Aborting execution." - exit 1 -fi - - - -## Exit statuses. Declare these right up front since we need them immediately. - -## We exit with status 0 upon success, as is conventional. -## In case of trouble, we exit with the triggering exit status (if invoked via 'set -e'. -## Exit status 33: Invalid arguments. -declare -r -i Exit_Status_Bad_Args=33 -## Exit status 2: trouble (configuration problems, etc.) -## Exit status 1: misc. complaints. -## -## Exit status 111: The master "jbuild" script (generated by jconfigure) uses -## exit status "111" to mean that it has gone as far as it could with a -## cross-platform build, and that the target itself now needs to -## run the linker. -declare -r -i Exit_Status_Run_Linker=111 - -#----------------------# -# SECTION 0 - Setup # -#----------------------# - -# What is our name? -# Bash internal shorthand that works like the "basename" command. -ME="${0##*/}" - -## get_bin_dir(): -## Find what directory our aux. files are in. Also confirms that -## RVM_ROOT is set to something reasonable. -## We print out the value of bin_dir at the end, or exit abnormally. -## -## This is horribly convoluted, and probably to no good purpose. -## I'm ashamed to admit that I wrote it. --Steve Augart -function get_bin_dir() { - # Where are we? - # Bash internal shorthand that works like the "dirname" command: - local mydir="${0%/*}" # temporary; directory we were run from - - ## The sole purpose of this next "if" statement is to set the - ## variable bin_dir, and to verify that it is set to something - ## reasonable that will allow us to load in "libjconfigure.bash". - if [[ $mydir && $mydir != $ME ]]; then - # Where to find library files and auxiliary programs: - local bin_dir="${mydir}" - local suffix=libjconfigure.bash - local f=$bin_dir/$suffix - if [[ ! -f $f ]]; then - echo >&2 "\ - $ME: ERROR: Something is weird here. I can't find a file named - \"${f##*/}\" in \"$f\", - but I was apparently run from the directory \"$bin_dir\". - Please use a version of jconfigure in the same source tree that - your sources are located in." - trap '' EXIT - exit 2 - fi - else - bin_dir="${RVM_ROOT:?$ME: This program won't work unless you've set the RVM_ROOT variable.}/rvm/bin" - suffix=libjconfigure.bash - f=$bin_dir/$suffix - if [[ ! -f $f ]]; then - echo >&2 "\ - $ME: ERROR: I can't find a file named \"${f##*/}\" at - RVM_ROOT/$suffix (that's - $f). - You probably have RVM_ROOT set incorrectly. Reset RVM_ROOT and try again." - trap '' EXIT - exit 2 - fi - fi ... [truncated message content] |
From: <dgr...@us...> - 2006-09-19 01:53:50
|
Revision: 10788 http://svn.sourceforge.net/jikesrvm/?rev=10788&view=rev Author: dgrove-oss Date: 2006-09-18 18:53:46 -0700 (Mon, 18 Sep 2006) Log Message: ----------- remove last vestiges of util kludge; this code has been dead for about 4 months Modified Paths: -------------- rvmroot/trunk/bin/jconfigure rvmroot/trunk/tools/bootImageWriter/Makefile Modified: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/bin/jconfigure 2006-09-19 01:35:49 UTC (rev 10787) +++ rvmroot/trunk/bin/jconfigure 2006-09-19 01:53:46 UTC (rev 10788) @@ -1075,12 +1075,6 @@ CLASSES_DIRECTORY="${BUILD_DIRECTORY}/RVM.classes" CLASSES_DIRECTORY_STR="${BUILD_DIRECTORY_STR}/RVM.classes" -## Place to put the compiled special class or classes that we use -## in order to build the utility kludge jar file. -UTIL_KLUDGE_STUBS_DIRECTORY="${BUILD_DIRECTORY}/RVM.utility_kludge_stubs" -UTIL_KLUDGE_STUBS_DIRECTORY_STR="${BUILD_DIRECTORY_STR}/RVM.utility_kludge_stubs" - - # Place to put source files that are machine generated. # GENERATED_FILES_DIRECTORY="${BUILD_DIRECTORY}/RVM.generatedSources" @@ -2992,7 +2986,7 @@ ## is the flag for no-compression. It is actually ## '0' (the number zero), not the letter 'O'. - ## Create a blank .jar file + ## Create a blank .jar file and put in Jikes RVM classes run touch jksvm.jar \$FIND com -name '*.class' | \$XARGS $JAR_STR -u0f jksvm.jar \$FIND org -name '*.class' | \$XARGS $JAR_STR -u0f jksvm.jar @@ -3945,7 +3939,6 @@ ## The utility kludge directory is only needed by classpath 0.13 and ## later, but it does no harm to include it for earlier versions. - run mkdir -p ${UTIL_KLUDGE_STUBS_DIRECTORY_STR} run $GNU_MAKE_STR \$MFLAGS CFLAGS='' CXXFLAGS='' \ -f \$BOOTIMAGE_WRITER_MAKEFILE \${VERBOSE_STR} \ RVM_REPOSITORIES=$CLASSES_DIRECTORY_STR/jksvm.jar:$CLASSES_DIRECTORY_STR/rvmrt.jar:$CLASSES_DIRECTORY_STR/mmtk.jar \ @@ -3957,7 +3950,6 @@ RVM_BOOTIMAGE_WRITER_ARGS="$BOOTIMAGE_WRITER_ARGS" \ IMAGE_ADDRESS_ARG="$IMAGE_ADDRESS_ARG" \ SCRATCH_DIR=$SCRATCH_DIRECTORY_STR \ - STUBS_DIR=$UTIL_KLUDGE_STUBS_DIRECTORY_STR \ bootimage trap '' EXIT Modified: rvmroot/trunk/tools/bootImageWriter/Makefile =================================================================== --- rvmroot/trunk/tools/bootImageWriter/Makefile 2006-09-19 01:35:49 UTC (rev 10787) +++ rvmroot/trunk/tools/bootImageWriter/Makefile 2006-09-19 01:53:46 UTC (rev 10788) @@ -14,7 +14,6 @@ # RVM_BOOTIMAGE_COMPILER_ARGS = command line arguments to pass to boot image compiler # RVM_BOOTIMAGE_WRITER_ARGS = command line arguments to pass to boot image writer # VERBOSE_ARG = command-line argument for verbose host jdk options -# STUBS_DIR = directory where we'll built the utility_kludge.jar. # # @author Derek Lieber # @modified Steven Augart March, 2004, to handle using alternative VMs for booting. @@ -80,7 +79,7 @@ $(HOST_VM_RT) \ $(host_vm_bootclasspath_args) \ $(host_mem_size_arg) \ - -classpath $(STUBS_DIR):$(SCRATCH_DIR):$(RVM_REPOSITORIES) \ + -classpath $(SCRATCH_DIR):$(RVM_REPOSITORIES) \ -Djava.security.policy=rvm.security \ -Dmmtk.hostjvm=com.ibm.JikesRVM.mm.mmtk \ $(HOST_JDK_FLAGS) $(VERBOSE_ARG) \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-20 21:09:44
|
Revision: 10789 http://svn.sourceforge.net/jikesrvm/?rev=10789&view=rev Author: dgrove-oss Date: 2006-09-20 14:09:29 -0700 (Wed, 20 Sep 2006) Log Message: ----------- continue to pull non-Java source out of rvm directory; moved RVM_ROOT/rvm/config to RVM_ROOT/config. Likely you will need to update local scripts/aliases after updating from this change. I will make matching changes to ANU regresssion machines immediatelyt after checkin and monitor the tests tonight to see if I missed anything Modified Paths: -------------- rvmroot/trunk/MMTk/doc/cheatsheet/cheatsheet.tex rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/README rvmroot/trunk/NEWS rvmroot/trunk/bin/jBuildClasspathJar rvmroot/trunk/bin/jconfigure rvmroot/trunk/bin/sanity-envars.bash rvmroot/trunk/config/exp/README rvmroot/trunk/config/exp/i686-pc-linux-gnu.gij.augart rvmroot/trunk/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart rvmroot/trunk/config/exp/i686-pc-linux-gnu.sablevm.augart rvmroot/trunk/config/exp/twostage.sh rvmroot/trunk/config/i686-pc-linux-gnu rvmroot/trunk/config/i686-pc-linux-gnu.kaffe rvmroot/trunk/config/powerpc-ibm-aix5 rvmroot/trunk/config/powerpc-unknown-linux-gnu rvmroot/trunk/config/powerpc-unknown-osx-gnu rvmroot/trunk/config/powerpc64-ibm-aix5 rvmroot/trunk/config/powerpc64-unknown-linux-gnu rvmroot/trunk/config/x86_64-pc-linux-gnu rvmroot/trunk/doc/userguide/MMTk.tex rvmroot/trunk/doc/userguide/gcspy.tex rvmroot/trunk/doc/userguide/installation.tex rvmroot/trunk/doc/userguide/kaffe.tex rvmroot/trunk/doc/userguide/profiling.tex rvmroot/trunk/testing/harness/tests/SPECjbb2000/jbb.hpm Added Paths: ----------- rvmroot/trunk/config/ Removed Paths: ------------- rvmroot/trunk/rvm/config/ Modified: rvmroot/trunk/MMTk/doc/cheatsheet/cheatsheet.tex =================================================================== --- rvmroot/trunk/MMTk/doc/cheatsheet/cheatsheet.tex 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/MMTk/doc/cheatsheet/cheatsheet.tex 2006-09-20 21:09:29 UTC (rev 10789) @@ -70,7 +70,7 @@ Selecting the plan at build time is now done by substituting a value rather than by a long series of boolean options. For example, -\code{rvm/config/build/gc/SemiSpace} now has, +\code{config/build/gc/SemiSpace} now has, \begin{lstlisting} export RVM_WITH_JMTK_PLAN="org.mmtk.plan.semispace.SS" \end{lstlisting} Modified: rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/README =================================================================== --- rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/README 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/README 2006-09-20 21:09:29 UTC (rev 10789) @@ -11,7 +11,7 @@ We have assumed that you will place all the GCspy code and required libraries in $RVM_ROOT. If you wish to change this, you'll need to modify these -instructions and the $RVM_ROOT/rvm/config/build/gcspy/GCspy config file +instructions and the $RVM_ROOT/config/build/gcspy/GCspy config file appropriately. 1. Download Modified: rvmroot/trunk/NEWS =================================================================== --- rvmroot/trunk/NEWS 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/NEWS 2006-09-20 21:09:29 UTC (rev 10789) @@ -81,7 +81,7 @@ address ranges. As a result of this change, instead of defining BOOTIMAGE_LOAD_ADDRESS in your config file, you must define BOOTIMAGE_DATA_ADDRESS and BOOTIMAGE_CODE_ADDRESS. - All the default configu files (rvm/config/*) have been updated, + All the default configu files (config/*) have been updated, but if you have local copies of these files, you will need to update them. *** Loop Versioning optimization in the opt compiler @@ -189,7 +189,7 @@ **The recommended version of GNU classpath for this release of Jikes RVM is 0.14. Furthermore, all of the configuration logic that controls classpath -version has been moved to $RVM_ROOT/rvm/config/classpath-version. We +version has been moved to $RVM_ROOT/config/classpath-version. We suggest you may want to modify your local configuration files to source this file, to make it easier to track changes in classpath version across releases of Jikes RVM. @@ -1031,7 +1031,7 @@ your RVM_TARGET_CONFIG file defines preprocessor directives that specify the target architecture, operating system, and whether or not your pthread library can support JikesRVM. - See the sample files in $RVM_ROOT/rvm/config. + See the sample files in $RVM_ROOT/config. Set RVM_FOR_SINGLE_VIRTUAL_PROCESSOR as follows: -- AIX/PowerPC: 0 (SMP is supported) -- Linux/PowerPC: 1 (SMP is not supported) Modified: rvmroot/trunk/bin/jBuildClasspathJar =================================================================== --- rvmroot/trunk/bin/jBuildClasspathJar 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/bin/jBuildClasspathJar 2006-09-20 21:09:29 UTC (rev 10789) @@ -199,7 +199,7 @@ if [[ ! -e $SRC/TODO ]]; then if [[ $USE_LOCAL_CLASSPATH != "no" ]]; then echo >&2 "Please download GNU Classpath and unpack it in $DEST_DIR" - echo >&2 "(See $RVM_ROOT/rvm/config/classpath-version for version information)" + echo >&2 "(See $RVM_ROOT/config/classpath-version for version information)" exit 1 fi echo "Downloading GNU Classpath" Modified: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/bin/jconfigure 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/bin/jconfigure 2006-09-20 21:09:29 UTC (rev 10789) @@ -744,7 +744,7 @@ function rationalize_classpath_version () { ## Re-loading classpath-version will not hurt. Not ever loading it ## would mean trouble with RVM_CLASSPATH_URL - . ${RVM_ROOT}/rvm/config/classpath-version + . ${RVM_ROOT}/config/classpath-version ## Perform sanity checks. We could consolidate these, but ## breaking them into two checks lets us print better error @@ -903,7 +903,7 @@ ## (it used to be that execution would just continue, despite the ## ERR Trap!), but if RVM_HOST_CONFIG is bogus, we just get a ## message like: - ## /homes/bilbo/augart/JikesRVM/src.sysWriteFix/bin/jconfigure: line 599: $RVM_ROOT/rvm/config/i686-pc-linux.watson: No such file or directory + ## /homes/bilbo/augart/JikesRVM/src.sysWriteFix/bin/jconfigure: line 599: $RVM_ROOT/config/i686-pc-linux.watson: No such file or directory ## and then Bash exits on its own with status 1. Certainly, the ## right behavior would be for it to be consistent one way or the ## other. @@ -1049,7 +1049,7 @@ # source path for configuration files # eg, BaseBaseSemispace # -CONFIGURATION_FILE_SOURCE="$ROOT_DIRECTORY/rvm/config/build" +CONFIGURATION_FILE_SOURCE="$ROOT_DIRECTORY/config/build" # Place to remember what configuration we have built. # @@ -1272,7 +1272,7 @@ declare -i RVM_WITH_QUICK_COMPILER_INLINING=0 # No qc inlining ## Classpath versions that might work with Jikes RVM. -## See $RVM_ROOT/rvm/config/classpath-version for the gory details. +## See $RVM_ROOT/config/classpath-version for the gory details. declare -i RVM_WITH_CLASSPATH_0_91=0 declare -i RVM_WITH_CLASSPATH_0_92=0 declare -i RVM_WITH_CLASSPATH_CVS_HEAD=0 Modified: rvmroot/trunk/bin/sanity-envars.bash =================================================================== --- rvmroot/trunk/bin/sanity-envars.bash 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/bin/sanity-envars.bash 2006-09-20 21:09:29 UTC (rev 10789) @@ -106,13 +106,13 @@ ## What configuration will run the system? RVM_HOST_CONFIG ) checkenv RVM_ROOT - example = "$RVM_ROOT/rvm/config/i686-pc-linux or $RVM_ROOT/rvm/config/powerpc-ibm-aix4.3.3.0" + example = "$RVM_ROOT/config/i686-pc-linux or $RVM_ROOT/rvm/config/powerpc-ibm-aix4.3.3.0" ;; ## What configuration will run the system? RVM_TARGET_CONFIG ) - # example="$RVM_ROOT/rvm/config/i686-pc-linux"; + # example="$RVM_ROOT/config/i686-pc-linux"; checkenv RVM_HOST_CONFIG; example="$RVM_HOST_CONFIG" ;; Copied: rvmroot/trunk/config (from rev 10788, rvmroot/trunk/rvm/config) Modified: rvmroot/trunk/config/exp/README =================================================================== --- rvmroot/trunk/rvm/config/exp/README 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/exp/README 2006-09-20 21:09:29 UTC (rev 10789) @@ -2,7 +2,7 @@ $Id$ -This directory, rvm/config/exp, contains experimental configurations +This directory, config/exp, contains experimental configurations for building Jikes RVM. Once they work, I'll move them up to the config directory. Modified: rvmroot/trunk/config/exp/i686-pc-linux-gnu.gij.augart =================================================================== --- rvmroot/trunk/rvm/config/exp/i686-pc-linux-gnu.gij.augart 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/exp/i686-pc-linux-gnu.gij.augart 2006-09-20 21:09:29 UTC (rev 10789) @@ -10,4 +10,4 @@ # export JIKES=jikes-1.13 # jikes-1.13 sometimes gives more useful diagnostic messages than Jikes 1.19 or Jikes 1.18. # export JIKES=jikes # Default. -. $RVM_ROOT/rvm/config/i686-pc-linux-gnu.gij +. $RVM_ROOT/config/i686-pc-linux-gnu.gij Modified: rvmroot/trunk/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart =================================================================== --- rvmroot/trunk/rvm/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart 2006-09-20 21:09:29 UTC (rev 10789) @@ -16,7 +16,7 @@ # export JIKES=jikes-1.13 export JIKES=jikes # Implicit -. $RVM_ROOT/rvm/config/i686-pc-linux-gnu.kaffe +. $RVM_ROOT/config/i686-pc-linux-gnu.kaffe export DONOR_RVM_ROOT=$RVM_ROOT export DONOR_RVM_BUILD=/home/augart/JikesRVM/Images/prototype Modified: rvmroot/trunk/config/exp/i686-pc-linux-gnu.sablevm.augart =================================================================== --- rvmroot/trunk/rvm/config/exp/i686-pc-linux-gnu.sablevm.augart 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/exp/i686-pc-linux-gnu.sablevm.augart 2006-09-20 21:09:29 UTC (rev 10789) @@ -10,7 +10,7 @@ # export JIKES=jikes-1.13 export JIKES=jikes -. $RVM_ROOT/rvm/config/i686-pc-linux-gnu.kaffe +. $RVM_ROOT/config/i686-pc-linux-gnu.kaffe ## Assume you have SableVM installed with the java-sablevm and sablevm executables somewhere in your path. ## Sablevm is close enough to Kaffe that, with an explicitly specified HOST_VM_RT, we can just pretend ## that it is Kaffe, and get enough leverage. Modified: rvmroot/trunk/config/exp/twostage.sh =================================================================== --- rvmroot/trunk/rvm/config/exp/twostage.sh 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/exp/twostage.sh 2006-09-20 21:09:29 UTC (rev 10789) @@ -20,7 +20,7 @@ export RVM_ROOT=~/JikesRVM/OSS/Trunk images=~/JikesRVM/OSS/Images -c=$r/rvm/config/i686-pc-linux-gnu.kaffe.augart +c=$r/config/i686-pc-linux-gnu.kaffe.augart echo "The first stage: Build a working Jikes RVM" export RVM_HOST_CONFIG=$c @@ -37,7 +37,7 @@ export DONOR_RVM_BUILD=$RVM_BUILD export RVM_BUILD=${images}.Kaffe/prototype-opt -c=$r/rvm/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart +c=$r/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart export RVM_HOST_CONFIG=$c export RVM_TARGET_CONFIG=$c jconfigure prototype-opt Modified: rvmroot/trunk/config/i686-pc-linux-gnu =================================================================== --- rvmroot/trunk/rvm/config/i686-pc-linux-gnu 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/i686-pc-linux-gnu 2006-09-20 21:09:29 UTC (rev 10789) @@ -60,7 +60,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version # Set HOST_VM_TYPE to reflect the JVM the Jikes RVM will be built upon. # Choose Sun for Sun, IBM and jrockit JVMs. Modified: rvmroot/trunk/config/i686-pc-linux-gnu.kaffe =================================================================== --- rvmroot/trunk/rvm/config/i686-pc-linux-gnu.kaffe 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/i686-pc-linux-gnu.kaffe 2006-09-20 21:09:29 UTC (rev 10789) @@ -60,7 +60,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version HOST_VM_TYPE=Kaffe # HOST_VM_TYPE=Sun Modified: rvmroot/trunk/config/powerpc-ibm-aix5 =================================================================== --- rvmroot/trunk/rvm/config/powerpc-ibm-aix5 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/powerpc-ibm-aix5 2006-09-20 21:09:29 UTC (rev 10789) @@ -46,7 +46,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version # Root of JDK installation. [[ ${HOST_JAVA_HOME-} ]] || HOST_JAVA_HOME="/usr/java14" Modified: rvmroot/trunk/config/powerpc-unknown-linux-gnu =================================================================== --- rvmroot/trunk/rvm/config/powerpc-unknown-linux-gnu 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/powerpc-unknown-linux-gnu 2006-09-20 21:09:29 UTC (rev 10789) @@ -37,7 +37,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version # Note that this is only known to work with the IBM 142 SR5 release # (29/4/06 datestamp). Furthermore, to sucessfully use this jvm on Modified: rvmroot/trunk/config/powerpc-unknown-osx-gnu =================================================================== --- rvmroot/trunk/rvm/config/powerpc-unknown-osx-gnu 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/powerpc-unknown-osx-gnu 2006-09-20 21:09:29 UTC (rev 10789) @@ -48,7 +48,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version export HOST_JAVA_HOME=/usr/ Modified: rvmroot/trunk/config/powerpc64-ibm-aix5 =================================================================== --- rvmroot/trunk/rvm/config/powerpc64-ibm-aix5 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/powerpc64-ibm-aix5 2006-09-20 21:09:29 UTC (rev 10789) @@ -40,7 +40,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version [[ ${HOST_JAVA_HOME-} ]] || export HOST_JAVA_HOME="/usr/java14" Modified: rvmroot/trunk/config/powerpc64-unknown-linux-gnu =================================================================== --- rvmroot/trunk/rvm/config/powerpc64-unknown-linux-gnu 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/powerpc64-unknown-linux-gnu 2006-09-20 21:09:29 UTC (rev 10789) @@ -35,7 +35,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version export HOST_JAVA_HOME=/opt/IBMJava2-ppc-141 Modified: rvmroot/trunk/config/x86_64-pc-linux-gnu =================================================================== --- rvmroot/trunk/rvm/config/x86_64-pc-linux-gnu 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/config/x86_64-pc-linux-gnu 2006-09-20 21:09:29 UTC (rev 10789) @@ -63,7 +63,7 @@ # Selection of GNU Classpath version is platform independent and fairly # involved; therefore it has been factored out into a separate file. -. $RVM_ROOT/rvm/config/classpath-version +. $RVM_ROOT/config/classpath-version # Set HOST_VM_TYPE to reflect the JVM the Jikes RVM will be built upon. # Choose Sun for Sun, IBM and jrockit JVMs. Modified: rvmroot/trunk/doc/userguide/MMTk.tex =================================================================== --- rvmroot/trunk/doc/userguide/MMTk.tex 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/doc/userguide/MMTk.tex 2006-09-20 21:09:29 UTC (rev 10789) @@ -133,7 +133,7 @@ \begin{enumerate} \item Create a new directory within the \texttt{plan} subdirectory, such as ``\texttt{NewGC}''. -\item Add a new configuration in \texttt{\$RVM\_\-ROOT/rvm/config/build} +\item Add a new configuration in \texttt{\$RVM\_\-ROOT/config/build} which includes your new directory in the build. Name it appropriately, such as ``\texttt{BaseBaseNewGC}''. \item Modify \texttt{\$RVM\_\-ROOT/bin/jconfigure} to handle the new Modified: rvmroot/trunk/doc/userguide/gcspy.tex =================================================================== --- rvmroot/trunk/doc/userguide/gcspy.tex 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/doc/userguide/gcspy.tex 2006-09-20 21:09:29 UTC (rev 10789) @@ -72,7 +72,7 @@ The discussion below assumes that you will place all the GCspy code and required libraries in \rvmRoot. If you wish to change this, you'll need to modify these instructions and the {\tt - \rvmRoot/rvm/config/build/gcspy/GCspy} config file appropriately. + \rvmRoot/config/build/gcspy/GCspy} config file appropriately. \paragraph{Downloads} Modified: rvmroot/trunk/doc/userguide/installation.tex =================================================================== --- rvmroot/trunk/doc/userguide/installation.tex 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/doc/userguide/installation.tex 2006-09-20 21:09:29 UTC (rev 10789) @@ -90,10 +90,10 @@ \AtManualClasspathRootDiscussion{} \item Edit a configuration file so that it fits your machine. One of -the {\tt i686-pc-linux} files in {\tt \$RVM\_\-ROOT/rvm/config} will probably be +the {\tt i686-pc-linux} files in {\tt \$RVM\_\-ROOT/config} will probably be more-or-less right to begin with. On Linux, most standard commands (and Jikes) are in {\tt /usr/bin}. Hereinafter, we will call your edited -file {\tt \$RVM\_\-ROOT/rvm/config/i686-pc-linux-gnu{\it .mine}} +file {\tt \$RVM\_\-ROOT/config/i686-pc-linux-gnu{\it .mine}} \index{environment variables}% \item Setup your environment with definitions required by Jikes RVM.\@ @@ -107,11 +107,11 @@ \item[\varName{RVM\_HOST\_CONFIG}] is the configuration file of the machine building Jikes RVM.\@ It must be -{\tt \$RVM\_\-ROOT/rvm/config/i686-pc-linux-gnu{\it .mine}}. +{\tt \$RVM\_\-ROOT/config/i686-pc-linux-gnu{\it .mine}}. \item[\varName{RVM\_TARGET\_CONFIG}] is the configuration of the machine running Jikes RVM.\@ It will normally be {\tt - \$RVM\_\-ROOT/rvm/config/i686-pc-linux-gnu{\it .mine}}. If you + \$RVM\_\-ROOT/config/i686-pc-linux-gnu{\it .mine}}. If you leave it unset, the build configuration program {\tt jconfigure} will assume it is the same as \varName{RVM\_HOST\_CONFIG}. @@ -381,8 +381,8 @@ setenv RVM_ROOT $HOME/rvmRoot # <--define your working directory setenv RVM_BUILD $HOME/rvmBuild # <--define your current build directory setenv PATH $RVM_ROOT/bin:$PATH -setenv RVM_HOST_CONFIG $RVM_ROOT/rvm/config/powerpc-ibm-aix4.3.3.0 -setenv RVM_TARGET_CONFIG $RVM_ROOT/rvm/config/powerpc-ibm-aix4.3.3.0 +setenv RVM_HOST_CONFIG $RVM_ROOT/config/powerpc-ibm-aix4.3.3.0 +setenv RVM_TARGET_CONFIG $RVM_ROOT/config/powerpc-ibm-aix4.3.3.0 \end{verbatim} {\em Note:} You should define each of these environment variables as an @@ -393,8 +393,8 @@ would be replaced with the following: \begin{verbatim} -setenv RVM_HOST_CONFIG $RVM_ROOT/rvm/config/i686-pc-linux-gnu -setenv RVM_TARGET_CONFIG $RVM_ROOT/rvm/config/i686-pc-linux-gnu +setenv RVM_HOST_CONFIG $RVM_ROOT/config/i686-pc-linux-gnu +setenv RVM_TARGET_CONFIG $RVM_ROOT/config/i686-pc-linux-gnu \end{verbatim} These two variables point to the same file when the type of system @@ -406,14 +406,14 @@ \item {\bf Edit configuration scripts.} -You must edit a script in the \texttt{\$RVM\_\-ROOT/rvm/config} +You must edit a script in the \texttt{\$RVM\_\-ROOT/config} directory to set up variables used by the installation process. If someone else at your site has already installed Jikes RVM, they have probably already done this step for you. Consult your local Jikes RVM guru. You must edit the file(s) that define the host and target configuration -environments in the \texttt{\$RVM\_\-ROOT/rvm/config} directory. +environments in the \texttt{\$RVM\_\-ROOT/config} directory. You do not need to {\em source} these variables in your working shell; variables in this file will be picked up by the installation scripts. @@ -892,8 +892,8 @@ % setenv RVM_ROOT $HOME/rvmRoot % setenv RVM_BUILD $HOME/rvmBuild % setenv PATH $RVM_ROOT/bin:$PATH -% setenv RVM_TARGET_CONFIG=$RVM_ROOT/rvm/config/powerpc-ibm-aix4.3.3.0 -% setenv RVM_HOST_CONFIG=$RVM_ROOT/rvm/config/i686-pc-linux-gnu +% setenv RVM_TARGET_CONFIG=$RVM_ROOT/config/powerpc-ibm-aix4.3.3.0 +% setenv RVM_HOST_CONFIG=$RVM_ROOT/config/i686-pc-linux-gnu % jconfigure prototype % cd $RVM_BUILD % ./jbuild Modified: rvmroot/trunk/doc/userguide/kaffe.tex =================================================================== --- rvmroot/trunk/doc/userguide/kaffe.tex 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/doc/userguide/kaffe.tex 2006-09-20 21:09:29 UTC (rev 10789) @@ -41,7 +41,7 @@ \end{itemize} To make a baseline-compiled build, use one of the {\tt -\$RVM\_\-ROOT/rvm/config/i686-pc-linux-gnu.kaffe{\it *}} files as your +\$RVM\_\-ROOT/config/i686-pc-linux-gnu.kaffe{\it *}} files as your starting point. Now go ahead and \link{follow the regular installation directions}[. See Section~\Ref, page~\Pageref]{section:installation}. @@ -85,7 +85,7 @@ Now create a new configuration file for the second phase build, this time following the example in {\tt -\$RVM\_\-ROOT/rvm/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart}. +\$RVM\_\-ROOT/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart}. Set DONOR\_RVM\_BUILD in your new configuration file to point to \$\{RVM\_ROOT\}\texttt{/DonorRVMBuild}. Modified: rvmroot/trunk/doc/userguide/profiling.tex =================================================================== --- rvmroot/trunk/doc/userguide/profiling.tex 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/doc/userguide/profiling.tex 2006-09-20 21:09:29 UTC (rev 10789) @@ -17,7 +17,7 @@ included in AIX version 5. To build Jikes RVM to use HPMs, you must define \varName{RVM\_HPM\_DIR} to be the directory containing the pmapi code (typically {\tt /usr/pmapi}) and \varName{RVM\_WITH\_HPM} to be 1. -See the config file {\tt \$RVM\_\-ROOT/rvm/config/powerpc-ibm-aix5.1.MC4U} for +See the config file {\tt \$RVM\_\-ROOT/config/powerpc-ibm-aix5.1.MC4U} for an example. After a valid configuration is built, the HPM are accessed through Modified: rvmroot/trunk/testing/harness/tests/SPECjbb2000/jbb.hpm =================================================================== --- rvmroot/trunk/testing/harness/tests/SPECjbb2000/jbb.hpm 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/testing/harness/tests/SPECjbb2000/jbb.hpm 2006-09-20 21:09:29 UTC (rev 10789) @@ -21,8 +21,8 @@ # @author: Brendon Cahoon # @author: Peter F. Sweeney -export RVM_HOST_CONFIG=$RVM_ROOT/rvm/config/powerpc-ibm-aix5.1.MC4U -export RVM_TARGET_CONFIG=$RVM_ROOT/rvm/config/powerpc-ibm-aix5.1.MC4U +export RVM_HOST_CONFIG=$RVM_ROOT/config/powerpc-ibm-aix5.1.MC4U +export RVM_TARGET_CONFIG=$RVM_ROOT/config/powerpc-ibm-aix5.1.MC4U echo "RVM_HOST_CONFIG: $RVM_HOST_CONFIG" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-20 21:45:01
|
Revision: 10790 http://svn.sourceforge.net/jikesrvm/?rev=10790&view=rev Author: dgrove-oss Date: 2006-09-20 14:44:02 -0700 (Wed, 20 Sep 2006) Log Message: ----------- move RVM_ROOT/rvm/etc to RVM_ROOT/etc Modified Paths: -------------- rvmroot/trunk/bin/rvmeclipse rvmroot/trunk/doc/userguide/codingstyle.tex rvmroot/trunk/etc/dot-emacs.el rvmroot/trunk/etc/dot-vimrc.vim rvmroot/trunk/etc/jikes-rvm.vim Added Paths: ----------- rvmroot/trunk/etc/ Removed Paths: ------------- rvmroot/trunk/rvm/etc/ Modified: rvmroot/trunk/bin/rvmeclipse =================================================================== --- rvmroot/trunk/bin/rvmeclipse 2006-09-20 21:09:29 UTC (rev 10789) +++ rvmroot/trunk/bin/rvmeclipse 2006-09-20 21:44:02 UTC (rev 10790) @@ -20,7 +20,7 @@ ## Put the "eclipse" binary and the fake "java" program it needs at the head ## of our path. -export PATH="${ECLIPSE_INSTALL_DIR-}${ECLIPSE_INSTALL_DIR+:}${RVM_ROOT}/rvm/etc/eclipse-bin:${PATH}" +export PATH="${ECLIPSE_INSTALL_DIR-}${ECLIPSE_INSTALL_DIR+:}${RVM_ROOT}/etc/eclipse-bin:${PATH}" # If ECLIPSE_INSTALL_DIR is not set to something sane, then we hope ## that there is an executable named "eclipse" in the user's path Modified: rvmroot/trunk/doc/userguide/codingstyle.tex =================================================================== --- rvmroot/trunk/doc/userguide/codingstyle.tex 2006-09-20 21:09:29 UTC (rev 10789) +++ rvmroot/trunk/doc/userguide/codingstyle.tex 2006-09-20 21:44:02 UTC (rev 10790) @@ -117,7 +117,7 @@ extended tag.) There is usually also a Javadoc {\tt @date} field for the date of authorship. There are skeleton files for Java, C/C++, Bash (Bourne Shell), \texttt{make}, and \texttt{m4} in the source directory -``\texttt{rvm/etc/skel/}''; just cut-and-paste the header text from them. +``\texttt{etc/skel/}''; just cut-and-paste the header text from them. A Java example of the notices follows. @@ -238,12 +238,12 @@ \paragraph{jikes-rvm.el} Load the contents of the -file \texttt{RVM\_ROOT/rvm/etc/jikes-rvm.el}. This will set up your +file \texttt{RVM\_ROOT/etc/jikes-rvm.el}. This will set up your Emacs to use Jikes RVM's coding conventions for Java, C, and C++ code. The easiest way to enable Emacs to do this automatically is to copy (cut-and-paste) the contents -of \texttt{RVM\_ROOT/rvm/etc/dot-emacs.el} into the \texttt{.emacs} +of \texttt{RVM\_ROOT/etc/dot-emacs.el} into the \texttt{.emacs} file in your home directory. \texttt{dot-emacs.el} also contains sample customizations for telling @@ -281,14 +281,14 @@ \paragraph{vim}\label{options:vim} -The file \texttt{RVM\_ROOT/rvm/etc/jikes-rvm.vim} contains +The file \texttt{RVM\_ROOT/etc/jikes-rvm.vim} contains customizations for editing Jikes RVM source code. It customizes Java mode, C++ mode, and C mode. Since this file will probably improve with time, I recommend you load it in indirectly from the source tree rather than cutting and pasting its contents into your \texttt{.vimrc} file. To set yourself up to load it indirectly, add the contents -of ``\texttt{RVM\_ROOT/rvm/etc/dot-vimrc.vim}'' to a file in your home +of ``\texttt{RVM\_ROOT/etc/dot-vimrc.vim}'' to a file in your home directory named ``\texttt{.vimrc}''. \paragraph{vi}\label{options:vi} Copied: rvmroot/trunk/etc (from rev 10788, rvmroot/trunk/rvm/etc) Modified: rvmroot/trunk/etc/dot-emacs.el =================================================================== --- rvmroot/trunk/rvm/etc/dot-emacs.el 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/etc/dot-emacs.el 2006-09-20 21:44:02 UTC (rev 10790) @@ -12,7 +12,7 @@ (let ((r (getenv "RVM_ROOT"))) (when r - (add-to-list 'load-path (concat r "/rvm/etc")) + (add-to-list 'load-path (concat r "/etc")) (require 'jikes-rvm))) ;;; The rest of this file is optional. Modified: rvmroot/trunk/etc/dot-vimrc.vim =================================================================== --- rvmroot/trunk/rvm/etc/dot-vimrc.vim 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/etc/dot-vimrc.vim 2006-09-20 21:44:02 UTC (rev 10790) @@ -13,7 +13,7 @@ if 1 " in case +eval is off let r = $RVM_ROOT if r != "" - execute 'set runtimepath+=' . escape(r, ' \') . '/rvm/etc' + execute 'set runtimepath+=' . escape(r, ' \') . '/etc' runtime jikes-rvm.vim endif unlet r Modified: rvmroot/trunk/etc/jikes-rvm.vim =================================================================== --- rvmroot/trunk/rvm/etc/jikes-rvm.vim 2006-09-19 01:53:46 UTC (rev 10788) +++ rvmroot/trunk/etc/jikes-rvm.vim 2006-09-20 21:44:02 UTC (rev 10790) @@ -108,7 +108,7 @@ "" Read a skeleton file of a given type function! Jikes_rvm_read_skeleton_file(file) - execute '0r '. $RVM_ROOT . '/rvm/etc/skel/' . a:file + execute '0r '. $RVM_ROOT . '/etc/skel/' . a:file redraw " clear the 'File read' message endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-20 21:56:56
|
Revision: 10791 http://svn.sourceforge.net/jikesrvm/?rev=10791&view=rev Author: dgrove-oss Date: 2006-09-20 14:56:50 -0700 (Wed, 20 Sep 2006) Log Message: ----------- move makefiles from RVM_ROOT/rvm to RVM_ROOT. TODO: Not at all clear to me that we still need Make.rules.generic. It's a fairly trivial file that probably should go away Modified Paths: -------------- rvmroot/trunk/bin/jconfigure rvmroot/trunk/doc/userguide/installation.tex Added Paths: ----------- rvmroot/trunk/GNUmakefile rvmroot/trunk/Make.rules.generic Removed Paths: ------------- rvmroot/trunk/rvm/GNUmakefile rvmroot/trunk/rvm/Make.rules.generic Copied: rvmroot/trunk/GNUmakefile (from rev 10788, rvmroot/trunk/rvm/GNUmakefile) =================================================================== --- rvmroot/trunk/GNUmakefile (rev 0) +++ rvmroot/trunk/GNUmakefile 2006-09-20 21:56:50 UTC (rev 10791) @@ -0,0 +1,129 @@ +# +# (C) Copyright IBM Corp. 2003 +# +# $Id$ +# +# @author Steven Augart +# + +## This Makefile uses Emacs 21's "etags" program to build its tags table. +## This is installed by default on Red Hat Linux as "etags", but on +## Debian exuberant-ctags is the default etags -- you can change this by +## running, as root: +## ``update-alternatives --config etags'' + +ETAGS_EMACS:=etags +## For Debian: +# ETAGS_EMACS=etags.emacs21 + +# Here are the most useful targets in this makefile: +# +# "make TAGS": * Make a tags table, "TAGS", for the generated +# sources (in $RVM_BUILD) and for the C, C++, and Java sources +# in the 'src' directory. +# * The table should include the Java templates in *.template +# +# "make TAGS.ALL": Make a tags table covering all of the source files +# in the 'rvm' tree and all of the generated files. +# +# "make TAGS.Makefiles": Make a tags table covering all of the Makefiles. +# +# "make conditionals": Search the sources for any .java files +# containing preprocessor conditionals. Filter out the conditional +# expressions. Dump the sorted list of unique conditional variables +# to stdout. +# +# "make -s findall0": Search through the rvm source tree and the generated +# source tree. Print all file names, separated by ASCII NUL +# characters. This makes output useful for the GNU "xargs -0" command +# to use. + + +.PHONY: all +all: + @echo >&2 "This is not the makefile for building JikesRVM. It is" + @echo >&2 " just for building a TAGS table for GNU Emacs. Type" + @echo >&2 ' "make TAGS" to use it.' + @echo >&2 ' (Well, it can also run "find" in ways useful for the Emacs Meta-x grep-find ' + @echo >&2 ' command. It also makes an alternative tags file, TAGS.ALL, which contains' + @echo >&2 ' all files in the source tree, skipping only Emacs backups and svn files.)' + @echo >&2 ' Documentation is at the head of the Makefile.' + + +## If RVM_BUILD is in the environment, then we have a real Jikes RVM build that +## we can search for the generated sources (the ones that don't appear here). +ifdef RVM_BUILD + GENSRC:="$(RVM_BUILD)/RVM.generatedSources" +else + GENSRC:= +endif +XFLAGS:=--no-run-if-empty + +find_ignore_docs:=-name \*.gif -o -name \*.jpg -o -name \*.ps -o -name \*.dvi -o -name \*.ind -o -name \*.ilg +find_match_junk_names:=-name Old -prune -o -name .svn -prune -o -name '*.[ao]' -o -name \*.so -o -name TAGS\* -o -name \*~ -o -name .\*~ -o -name '.\#*' -o -name '\#*' -o -name '*\#' -o -name core -o -name core.\* -o -name \*.log +append_java_templates=find src ../MMTk -follow ${find_match_junk_names} -o -name \*.template -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --language=java --append --output=$@ + +# Throwing ${find_match_junk_names} into ${FIND} doesn't cut down on the size +# in a clean checkout, but might possibly do so if there were old +# files left over whose names start with "#" or with ".#". +FIND:=find $(GENSRC) src ../MMTk/src -follow ${find_match_junk_names} -o \( -name \*.java -o -name \*.C -o -name \*.h -o -name \*.c -o -name \*.y \) +FINDALL:=find $(GENSRC) . ../MMTk -follow ${find_match_junk_names} -o ${find_ignore_docs} -o -type f + +# etags in emacs 21.3.CVS-2003-09-23 does not support "--defines, nor --globals". +EFLAGS:=--members --declarations --language=java +## Exuberant CTAGS 5.5.4 doesn't support these options; you'll have to modify +## this program to use "Exuberant CTAGS" +# EFLAGS:= + +# A forced target. +.PHONY: FORCE tags +FORCE: + +tags: TAGS # Convenient alias. + +TAGS: FORCE + $(RM) $@ + $(FIND) -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ +ifdef RVM_BUILD + find "$(RVM_BUILD)/RVM.scratch" \( -name \*.C -o -name \*.java -o -name \*.h -o -name \*.c -o -name \*.y \) -type f -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ +endif + ${append_java_templates} + +TAGS.ALL: FORCE + $(RM) $@ + $(FINDALL) ! -name \*.template -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ +ifdef RVM_BUILD + find "$(RVM_BUILD)/RVM.scratch" \( -name \*.C -o -name \*.java -o -name \*.h -o -name \*.c -o -name \*.y \) -type f -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ +endif + ${append_java_templates} + +TAGS.Makefiles: FORCE + $(RM) $@ + find . ../MMTk -follow ${find_match_junk_names} -o -name regression -prune -o -name '*akefil*' -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ + +## We don't have any conditional compilation directives in the +## MMTk source tree; no need to search it. +.PHONY: conditionals +# Note: explicit tab characters below. +conditionals: + find . -follow -name \*.java -print0 | xargs ${XFLAGS} -0 fgrep --no-filename '//-#' | sed -e 's/.*#[a-z]\+[ ]*//' | sed -e '/\/\/.*/d' | tr '[!&|]' '\n' |sed -e 's/[ ]*$$//' -e 's/^[ ]//' -e '/^$$/d' | sort | uniq +# | cat -v -e -t + + +## These targets may be handy if you're writing code that wants to do +## a find-like hunt. The main problem is they won't be able to tell +## '$(ETAGS_EMACS)' that the .template files contain Java code. + +.PHONY: find0 find findall findall0 +find0: FORCE + $(FIND) -print0 + +find: FORCE + $(FIND) -print + +findall0: FORCE + $(FINDALL) -print0 + +findall: FORCE + $(FINDALL) -print + Copied: rvmroot/trunk/Make.rules.generic (from rev 10788, rvmroot/trunk/rvm/Make.rules.generic) =================================================================== --- rvmroot/trunk/Make.rules.generic (rev 0) +++ rvmroot/trunk/Make.rules.generic 2006-09-20 21:56:50 UTC (rev 10791) @@ -0,0 +1,34 @@ +# +# (C) Copyright IBM Corp. 2001, 2003 +# +# $Id$ +# +# @author Julian Dolby +# @modified Steven Augart + +# +# Everything in this file should be site independent +# and architecture/OS independent. +# + +# On AIX, where /bin/sh is a link to /bin/ksh, it is useful to have SHELL +# set to /bin/bash. This is because, on AIX under ksh, "echo -n <message>" +# emits the text "-n <message><NEWLINE>". The Bash behavior, even when +# invoked as "sh", is to emit "<message>", without a trailing <NEWLINE>. +SHELL=/bin/bash + +# This is the name to use to compile "normal" (non-RVM) java files. +JCOMPILE = $(HOST_JAVAC) $(HOST_JAVAC_CLASSPATH) + +RM=rm -f +CP=cp -f + +.SUFFIXES: .java .class + +.PRECIOUS: %.class + +# Produce a class file from a java source file +# +.java.class:; $(JCOMPILE) $< + + Modified: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/bin/jconfigure 2006-09-20 21:44:02 UTC (rev 10790) +++ rvmroot/trunk/bin/jconfigure 2006-09-20 21:56:50 UTC (rev 10791) @@ -1544,7 +1544,7 @@ # ## To find out which programmable conditions are still alive (i.e., which ones ## are currently in use in the program source code), look at -## rvm/GNUmakefile, the 'conditionals' target. +## GNUmakefile, the 'conditionals' target. ## The BUILD_WITH_PARANOID_PREPROCESSOR directive affects this. ## Remember, these numbers (BOOTIMAGE_LOAD_ADDRESS, MAXIMUM_MAPPABLE_ADDRESS) @@ -2124,7 +2124,7 @@ ${ROOT_DIRECTORY_STR1}:=${RVM_ROOT} endif - include $ROOT_DIRECTORY_STR/rvm/Make.rules.generic + include $ROOT_DIRECTORY_STR/Make.rules.generic ifdef RVM_BUILD ${BUILD_DIRECTORY_STR1}:=\${RVM_BUILD} Modified: rvmroot/trunk/doc/userguide/installation.tex =================================================================== --- rvmroot/trunk/doc/userguide/installation.tex 2006-09-20 21:44:02 UTC (rev 10790) +++ rvmroot/trunk/doc/userguide/installation.tex 2006-09-20 21:56:50 UTC (rev 10791) @@ -623,12 +623,12 @@ \item If you want to \texttt{make tags} using -\texttt{\$RVM\_ROOT/rvm/GNUmakefile}, you will need \texttt{xargs} +\texttt{\$RVM\_ROOT/GNUmakefile}, you will need \texttt{xargs} from GNU findutils. \item If you want to \texttt{make conditionals} using -\texttt{\$RVM\_ROOT/rvm/GNUmakefile}, you will need GNU sed. +\texttt{\$RVM\_ROOT/GNUmakefile}, you will need GNU sed. \item Check the \link{list of OS~X prerequisites}[ on page~\Pageref]{prereqs} for additional Deleted: rvmroot/trunk/rvm/GNUmakefile =================================================================== --- rvmroot/trunk/rvm/GNUmakefile 2006-09-20 21:44:02 UTC (rev 10790) +++ rvmroot/trunk/rvm/GNUmakefile 2006-09-20 21:56:50 UTC (rev 10791) @@ -1,129 +0,0 @@ -# -# (C) Copyright IBM Corp. 2003 -# -# $Id$ -# -# @author Steven Augart -# - -## This Makefile uses Emacs 21's "etags" program to build its tags table. -## This is installed by default on Red Hat Linux as "etags", but on -## Debian exuberant-ctags is the default etags -- you can change this by -## running, as root: -## ``update-alternatives --config etags'' - -ETAGS_EMACS:=etags -## For Debian: -# ETAGS_EMACS=etags.emacs21 - -# Here are the most useful targets in this makefile: -# -# "make TAGS": * Make a tags table, "TAGS", for the generated -# sources (in $RVM_BUILD) and for the C, C++, and Java sources -# in the 'src' directory. -# * The table should include the Java templates in *.template -# -# "make TAGS.ALL": Make a tags table covering all of the source files -# in the 'rvm' tree and all of the generated files. -# -# "make TAGS.Makefiles": Make a tags table covering all of the Makefiles. -# -# "make conditionals": Search the sources for any .java files -# containing preprocessor conditionals. Filter out the conditional -# expressions. Dump the sorted list of unique conditional variables -# to stdout. -# -# "make -s findall0": Search through the rvm source tree and the generated -# source tree. Print all file names, separated by ASCII NUL -# characters. This makes output useful for the GNU "xargs -0" command -# to use. - - -.PHONY: all -all: - @echo >&2 "This is not the makefile for building JikesRVM. It is" - @echo >&2 " just for building a TAGS table for GNU Emacs. Type" - @echo >&2 ' "make TAGS" to use it.' - @echo >&2 ' (Well, it can also run "find" in ways useful for the Emacs Meta-x grep-find ' - @echo >&2 ' command. It also makes an alternative tags file, TAGS.ALL, which contains' - @echo >&2 ' all files in the source tree, skipping only Emacs backups and svn files.)' - @echo >&2 ' Documentation is at the head of the Makefile.' - - -## If RVM_BUILD is in the environment, then we have a real Jikes RVM build that -## we can search for the generated sources (the ones that don't appear here). -ifdef RVM_BUILD - GENSRC:="$(RVM_BUILD)/RVM.generatedSources" -else - GENSRC:= -endif -XFLAGS:=--no-run-if-empty - -find_ignore_docs:=-name \*.gif -o -name \*.jpg -o -name \*.ps -o -name \*.dvi -o -name \*.ind -o -name \*.ilg -find_match_junk_names:=-name Old -prune -o -name .svn -prune -o -name '*.[ao]' -o -name \*.so -o -name TAGS\* -o -name \*~ -o -name .\*~ -o -name '.\#*' -o -name '\#*' -o -name '*\#' -o -name core -o -name core.\* -o -name \*.log -append_java_templates=find src ../MMTk -follow ${find_match_junk_names} -o -name \*.template -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --language=java --append --output=$@ - -# Throwing ${find_match_junk_names} into ${FIND} doesn't cut down on the size -# in a clean checkout, but might possibly do so if there were old -# files left over whose names start with "#" or with ".#". -FIND:=find $(GENSRC) src ../MMTk/src -follow ${find_match_junk_names} -o \( -name \*.java -o -name \*.C -o -name \*.h -o -name \*.c -o -name \*.y \) -FINDALL:=find $(GENSRC) . ../MMTk -follow ${find_match_junk_names} -o ${find_ignore_docs} -o -type f - -# etags in emacs 21.3.CVS-2003-09-23 does not support "--defines, nor --globals". -EFLAGS:=--members --declarations --language=java -## Exuberant CTAGS 5.5.4 doesn't support these options; you'll have to modify -## this program to use "Exuberant CTAGS" -# EFLAGS:= - -# A forced target. -.PHONY: FORCE tags -FORCE: - -tags: TAGS # Convenient alias. - -TAGS: FORCE - $(RM) $@ - $(FIND) -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ -ifdef RVM_BUILD - find "$(RVM_BUILD)/RVM.scratch" \( -name \*.C -o -name \*.java -o -name \*.h -o -name \*.c -o -name \*.y \) -type f -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ -endif - ${append_java_templates} - -TAGS.ALL: FORCE - $(RM) $@ - $(FINDALL) ! -name \*.template -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ -ifdef RVM_BUILD - find "$(RVM_BUILD)/RVM.scratch" \( -name \*.C -o -name \*.java -o -name \*.h -o -name \*.c -o -name \*.y \) -type f -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ -endif - ${append_java_templates} - -TAGS.Makefiles: FORCE - $(RM) $@ - find . ../MMTk -follow ${find_match_junk_names} -o -name regression -prune -o -name '*akefil*' -print0 | xargs ${XFLAGS} -0 $(ETAGS_EMACS) $(EFLAGS) --append --output=$@ - -## We don't have any conditional compilation directives in the -## MMTk source tree; no need to search it. -.PHONY: conditionals -# Note: explicit tab characters below. -conditionals: - find . -follow -name \*.java -print0 | xargs ${XFLAGS} -0 fgrep --no-filename '//-#' | sed -e 's/.*#[a-z]\+[ ]*//' | sed -e '/\/\/.*/d' | tr '[!&|]' '\n' |sed -e 's/[ ]*$$//' -e 's/^[ ]//' -e '/^$$/d' | sort | uniq -# | cat -v -e -t - - -## These targets may be handy if you're writing code that wants to do -## a find-like hunt. The main problem is they won't be able to tell -## '$(ETAGS_EMACS)' that the .template files contain Java code. - -.PHONY: find0 find findall findall0 -find0: FORCE - $(FIND) -print0 - -find: FORCE - $(FIND) -print - -findall0: FORCE - $(FINDALL) -print0 - -findall: FORCE - $(FINDALL) -print - Deleted: rvmroot/trunk/rvm/Make.rules.generic =================================================================== --- rvmroot/trunk/rvm/Make.rules.generic 2006-09-20 21:44:02 UTC (rev 10790) +++ rvmroot/trunk/rvm/Make.rules.generic 2006-09-20 21:56:50 UTC (rev 10791) @@ -1,34 +0,0 @@ -# -# (C) Copyright IBM Corp. 2001, 2003 -# -# $Id$ -# -# @author Julian Dolby -# @modified Steven Augart - -# -# Everything in this file should be site independent -# and architecture/OS independent. -# - -# On AIX, where /bin/sh is a link to /bin/ksh, it is useful to have SHELL -# set to /bin/bash. This is because, on AIX under ksh, "echo -n <message>" -# emits the text "-n <message><NEWLINE>". The Bash behavior, even when -# invoked as "sh", is to emit "<message>", without a trailing <NEWLINE>. -SHELL=/bin/bash - -# This is the name to use to compile "normal" (non-RVM) java files. -JCOMPILE = $(HOST_JAVAC) $(HOST_JAVAC_CLASSPATH) - -RM=rm -f -CP=cp -f - -.SUFFIXES: .java .class - -.PRECIOUS: %.class - -# Produce a class file from a java source file -# -.java.class:; $(JCOMPILE) $< - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dfr...@us...> - 2006-09-20 23:23:15
|
Revision: 10792 http://svn.sourceforge.net/jikesrvm/?rev=10792&view=rev Author: dframpton-oss Date: 2006-09-20 16:22:56 -0700 (Wed, 20 Sep 2006) Log Message: ----------- Correct fix to deal with multiple alignment words due to hashing and alignment. Modified Paths: -------------- rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSConstraints.java rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeader.java Modified: rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSConstraints.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSConstraints.java 2006-09-20 21:56:50 UTC (rev 10791) +++ rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSConstraints.java 2006-09-20 23:22:56 UTC (rev 10792) @@ -22,6 +22,4 @@ */ public class GenMSConstraints extends GenConstraints implements Uninterruptible { - - public boolean needsLinearScan() { return true; } // FIXME: This is a hack to work around bug 1549822 } Modified: rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeader.java =================================================================== --- rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeader.java 2006-09-20 21:56:50 UTC (rev 10791) +++ rvmroot/trunk/rvm/src/vm/objectModel/default/VM_JavaHeader.java 2006-09-20 23:22:56 UTC (rev 10792) @@ -273,7 +273,10 @@ if ((start.loadWord().toInt() & ALIGNMENT_MASK) == ALIGNMENT_MASK) { start = start.plus(BYTES_IN_WORD); if ((start.loadWord().toInt() & ALIGNMENT_MASK) == ALIGNMENT_MASK) { - return ObjectReference.nullReference(); + start = start.plus(BYTES_IN_WORD); + if ((start.loadWord().toInt() & ALIGNMENT_MASK) == ALIGNMENT_MASK) { + return ObjectReference.nullReference(); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-21 01:38:19
|
Revision: 10793 http://svn.sourceforge.net/jikesrvm/?rev=10793&view=rev Author: dgrove-oss Date: 2006-09-20 18:37:54 -0700 (Wed, 20 Sep 2006) Log Message: ----------- move RVM_ROOT/rvm/src/include to RVM_ROOT/include Modified Paths: -------------- rvmroot/trunk/bin/jconfigure rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/Makefile rvmroot/trunk/testing/harness/tests/jni/Makefile rvmroot/trunk/testing/harness/tests/myTests/Makefile rvmroot/trunk/tools/bootImageRunner/Makefile.syswrap rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h rvmroot/trunk/tools/bootImageRunner/sys.C rvmroot/trunk/tools/preprocessor/GNUmakefile Added Paths: ----------- rvmroot/trunk/include/ Removed Paths: ------------- rvmroot/trunk/rvm/src/include/ Modified: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/bin/jconfigure 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/bin/jconfigure 2006-09-21 01:37:54 UTC (rev 10793) @@ -4337,7 +4337,7 @@ echo >&2 -n "(building libJava2HPM\${shlib_suffix} JNI library) " chdir $ROOT_DIRECTORY_STR/rvm/src/vm/HPM \$BOOTER_CXX -c -I$SCRATCH_DIRECTORY_STR \ - -I$ROOT_DIRECTORY_STR/rvm/src/include \ + -I$ROOT_DIRECTORY_STR/include \ -I$ROOT_DIRECTORY_STR/rvm/src/vm/HPM/$ARCH_DIR \ -I$ROOT_DIRECTORY_STR/tools/bootImageRunner \ -o $SCRATCH_DIRECTORY_STR/Java2HPM.o Java2HPM.C Copied: rvmroot/trunk/include (from rev 10790, rvmroot/trunk/rvm/src/include) Modified: rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/Makefile =================================================================== --- rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/Makefile 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/Makefile 2006-09-21 01:37:54 UTC (rev 10793) @@ -9,10 +9,10 @@ .SUFFIXES: .c .C .o .h .C.o: - gcc -funsigned-bitfields -I. -I$(JAL_ROOT)/rvm/src/include -g -c $< + gcc -funsigned-bitfields -I. -I$(JAL_ROOT)/include -g -c $< .c.o: - gcc -funsigned-bitfields -I. -I$(JAL_ROOT)/rvm/src/include -g -c $< + gcc -funsigned-bitfields -I. -I$(JAL_ROOT)/include -g -c $< disasm.o: disasm.C disasm.h gcc -funsigned-bitfields -g -c disasm.C Modified: rvmroot/trunk/testing/harness/tests/jni/Makefile =================================================================== --- rvmroot/trunk/testing/harness/tests/jni/Makefile 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/testing/harness/tests/jni/Makefile 2006-09-21 01:37:54 UTC (rev 10793) @@ -67,8 +67,8 @@ $(HOST_JAVA_HOME)/bin/javah -classpath $(BENCH_CLASS_CP) -jni -o $(BENCH_CLASS_CP)/$@ $(basename $(notdir $<)) lib%.a: %.c %.h - $(CC) $(CFLAGS) -c -o $(BENCH_CLASS_CP)/$(basename $(notdir $<)).o -I$(BENCH_CLASS_CP) -I$(JAL_ROOT)/rvm/src/include $< - $(LDSHARED) $(CXXFLAGS) -o $(BENCH_CLASS_CP)/$@ -I$(BENCH_CLASS_CP) -I$(JAL_ROOT)/rvm/src/include $(BENCH_CLASS_CP)/$(basename $(notdir $<)).o + $(CC) $(CFLAGS) -c -o $(BENCH_CLASS_CP)/$(basename $(notdir $<)).o -I$(BENCH_CLASS_CP) -I$(JAL_ROOT)/include $< + $(LDSHARED) $(CXXFLAGS) -o $(BENCH_CLASS_CP)/$@ -I$(BENCH_CLASS_CP) -I$(JAL_ROOT)/include $(BENCH_CLASS_CP)/$(basename $(notdir $<)).o %.so: %.a cp -f $(BENCH_CLASS_CP)/$< $(BENCH_CLASS_CP)/$@ Modified: rvmroot/trunk/testing/harness/tests/myTests/Makefile =================================================================== --- rvmroot/trunk/testing/harness/tests/myTests/Makefile 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/testing/harness/tests/myTests/Makefile 2006-09-21 01:37:54 UTC (rev 10793) @@ -19,8 +19,8 @@ $(HOST_JAVA_HOME)/bin/javah -jni -o $@ $(basename $(notdir $<)) lib%.a: %.c %.h - $(CC) $(CFLAGS) -c -o $(basename $(notdir $<)).o -I. -I$(JAL_ROOT)/rvm/src/include $< - $(LDSHARED) $(CXXFLAGS) -o $@ -I$(JAL_ROOT)/rvm/src/include $(basename $(notdir $<)).o + $(CC) $(CFLAGS) -c -o $(basename $(notdir $<)).o -I. -I$(JAL_ROOT)/include $< + $(LDSHARED) $(CXXFLAGS) -o $@ -I$(JAL_ROOT)/include $(basename $(notdir $<)).o %.so: %.a cp -f $< $@ Modified: rvmroot/trunk/tools/bootImageRunner/Makefile.syswrap =================================================================== --- rvmroot/trunk/tools/bootImageRunner/Makefile.syswrap 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/tools/bootImageRunner/Makefile.syswrap 2006-09-21 01:37:54 UTC (rev 10793) @@ -9,4 +9,4 @@ CXXFLAGS+=-Wno-unused-parameter $(DEST): syswrap.C syswrap.h - $(LDSHARED) -nostartfiles -Wl,--export-dynamic -o $@ -I$(JAL_ROOT)/rvm/src/include -I$(JAL_BUILD)/RVM.scratch $< + $(LDSHARED) -nostartfiles -Wl,--export-dynamic -o $@ -I$(JAL_ROOT)/include -I$(JAL_BUILD)/RVM.scratch $< Modified: rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h =================================================================== --- rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h 2006-09-21 01:37:54 UTC (rev 10793) @@ -20,7 +20,7 @@ } /* un-confuse the auto-indenter */ #endif -#include "../../rvm/src/include/cAttributePortability.h" +#include "../../include/cAttributePortability.h" #if defined(RVM_FOR_32_ADDR) #define VM_Offset int32_t Modified: rvmroot/trunk/tools/bootImageRunner/sys.C =================================================================== --- rvmroot/trunk/tools/bootImageRunner/sys.C 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/tools/bootImageRunner/sys.C 2006-09-21 01:37:54 UTC (rev 10793) @@ -99,7 +99,7 @@ #define NEED_EXIT_STATUS_CODES #include "InterfaceDeclarations.h" #include "bootImageRunner.h" // In tools/bootImageRunner. -#include "../../rvm/src/include/jni.h" // For the jlong type. +#include "../../include/jni.h" // For the jlong type. #include "pthread-wrappers.h" Modified: rvmroot/trunk/tools/preprocessor/GNUmakefile =================================================================== --- rvmroot/trunk/tools/preprocessor/GNUmakefile 2006-09-20 23:22:56 UTC (rev 10792) +++ rvmroot/trunk/tools/preprocessor/GNUmakefile 2006-09-21 01:37:54 UTC (rev 10793) @@ -29,7 +29,7 @@ ## in the distribution. (They are the ones I test with, though.) # -Wcast-align -Wpointer-arith -Wcast-qual -Wshadow -Wstrict-prototypes -Wmissing-prototypes -fkeep-static-consts -fkeep-inline-functions -Wundef -Wwrite-strings -Wno-aggregate-return -Wmissing-noreturn -Wtrigraphs -Wconversion -Wsign-compare -Wfloat-equal -Wendif-labels -Wmissing-format-attribute -Wno-long-long -fcheck-new -fpermissive -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo # CXXFLAGS+=-W -Wall -CPPFLAGS+=-I../../rvm/src/include +CPPFLAGS+=-I../../include tool: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-22 12:33:13
|
Revision: 10806 http://svn.sourceforge.net/jikesrvm/?rev=10806&view=rev Author: dgrove-oss Date: 2006-09-22 05:17:46 -0700 (Fri, 22 Sep 2006) Log Message: ----------- Expand standard header comment in all files to repeat what has been true since we went open source in 2001: the file is part of JikesRVM/MMTk and is licensed/distributed under the terms of the CPL. Modified Paths: -------------- rvmroot/trunk/GNUmakefile rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ActivePlan.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Assert.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Barriers.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Collection.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Factory.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Lock.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Memory.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Options.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ReferenceGlue.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanBootImage.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanStatics.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Scanning.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Statistics.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Strings.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/SynchronizedCounter.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/TraceInterface.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/ActivePlan.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Assert.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Barriers.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Collection.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Lock.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Memory.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/ObjectModel.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Options.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/ReferenceGlue.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/ScanBootImage.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/ScanStatics.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/ScanThread.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Scanning.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Statistics.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/Strings.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/SynchronizedCounter.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/TraceInterface.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/VMConstants.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/ServerInterpreter.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/ServerSpace.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/Stream.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/gcspy.patch rvmroot/trunk/MMTk/ext/vm/JikesRVM/org/mmtk/vm/gcspy/util/Util.java rvmroot/trunk/MMTk/ext/vm/stub/org/mmtk/vm/gcspy/ServerInterpreter.java rvmroot/trunk/MMTk/ext/vm/stub/org/mmtk/vm/gcspy/ServerSpace.java rvmroot/trunk/MMTk/ext/vm/stub/org/mmtk/vm/gcspy/Stream.java rvmroot/trunk/MMTk/ext/vm/stub/org/mmtk/vm/gcspy/Util.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/InlinePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/InterruptiblePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/LogicallyUninterruptiblePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/NoInlinePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/NoOptCompilePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/PragmaException.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/PreemptiblePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/Uninterruptible.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/UninterruptibleNoWarnPragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/UninterruptiblePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/Unpreemptible.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/pragma/UnpreemptiblePragma.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/Address.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/AddressArray.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/Extent.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/ExtentArray.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/ObjectReference.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/ObjectReferenceArray.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/Offset.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/OffsetArray.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/Word.java rvmroot/trunk/MMTk/ext/vmmagic/stub/org/vmmagic/unboxed/WordArray.java rvmroot/trunk/MMTk/src/org/mmtk/plan/CollectorContext.java rvmroot/trunk/MMTk/src/org/mmtk/plan/ComplexPhase.java rvmroot/trunk/MMTk/src/org/mmtk/plan/MutatorContext.java rvmroot/trunk/MMTk/src/org/mmtk/plan/Phase.java rvmroot/trunk/MMTk/src/org/mmtk/plan/Plan.java rvmroot/trunk/MMTk/src/org/mmtk/plan/PlanConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/SimplePhase.java rvmroot/trunk/MMTk/src/org/mmtk/plan/StopTheWorld.java rvmroot/trunk/MMTk/src/org/mmtk/plan/StopTheWorldCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/StopTheWorldConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/StopTheWorldMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/Trace.java rvmroot/trunk/MMTk/src/org/mmtk/plan/TraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/copyms/CopyMS.java rvmroot/trunk/MMTk/src/org/mmtk/plan/copyms/CopyMSCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/copyms/CopyMSConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/copyms/CopyMSMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/copyms/CopyMSSanityCheckerLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/copyms/CopyMSTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/Gen.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/GenCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/GenConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/GenMatureTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/GenMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/GenNurseryTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/GenSanityCheckerLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/copying/GenCopy.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/copying/GenCopyConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/copying/GenCopyMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMS.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSMatureTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/generational/marksweep/GenMSMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/markcompact/MC.java rvmroot/trunk/MMTk/src/org/mmtk/plan/markcompact/MCCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/markcompact/MCConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/markcompact/MCForwardTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/markcompact/MCMarkTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/markcompact/MCMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/markcompact/MCSanityCheckerLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/marksweep/MS.java rvmroot/trunk/MMTk/src/org/mmtk/plan/marksweep/MSCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/marksweep/MSConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/marksweep/MSMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/marksweep/MSTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/nogc/NoGC.java rvmroot/trunk/MMTk/src/org/mmtk/plan/nogc/NoGCCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/nogc/NoGCConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/nogc/NoGCMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/nogc/NoGCTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/RCBase.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/RCBaseCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/RCBaseConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/RCBaseMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/fullheap/RC.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/fullheap/RCCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/fullheap/RCConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/fullheap/RCMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/fullheap/RCTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/generational/GenRC.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/generational/GenRCCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/generational/GenRCConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/generational/GenRCMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/refcount/generational/GenRCTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/SS.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/SSCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/SSConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/SSMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/SSTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspy.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspyCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspyConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gcspy/SSGCspyMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gctrace/GCTrace.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceCollector.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceConstraints.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceMutator.java rvmroot/trunk/MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/CopyLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/CopySpace.java rvmroot/trunk/MMTk/src/org/mmtk/policy/ImmortalLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/ImmortalSpace.java rvmroot/trunk/MMTk/src/org/mmtk/policy/LargeObjectLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/LargeObjectSpace.java rvmroot/trunk/MMTk/src/org/mmtk/policy/LargeRCObjectLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/MarkCompactLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/MarkCompactSpace.java rvmroot/trunk/MMTk/src/org/mmtk/policy/MarkSweepLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/MarkSweepSpace.java rvmroot/trunk/MMTk/src/org/mmtk/policy/RawPageSpace.java rvmroot/trunk/MMTk/src/org/mmtk/policy/RefCountLOSLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/RefCountLocal.java rvmroot/trunk/MMTk/src/org/mmtk/policy/RefCountSpace.java rvmroot/trunk/MMTk/src/org/mmtk/policy/Space.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Barrier.java rvmroot/trunk/MMTk/src/org/mmtk/utility/BaseGenericFreeList.java rvmroot/trunk/MMTk/src/org/mmtk/utility/CallSite.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Constants.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Conversions.java rvmroot/trunk/MMTk/src/org/mmtk/utility/CycleDetector.java rvmroot/trunk/MMTk/src/org/mmtk/utility/DoublyLinkedList.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Finalizer.java rvmroot/trunk/MMTk/src/org/mmtk/utility/GenericFreeList.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Log.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Memory.java rvmroot/trunk/MMTk/src/org/mmtk/utility/ReferenceProcessor.java rvmroot/trunk/MMTk/src/org/mmtk/utility/SimpleHashtable.java rvmroot/trunk/MMTk/src/org/mmtk/utility/SmallGenericFreeList.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Synchronize.java rvmroot/trunk/MMTk/src/org/mmtk/utility/TraceGenerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/TracingConstants.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Treadmill.java rvmroot/trunk/MMTk/src/org/mmtk/utility/TrialDeletion.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/AllocAdvice.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/Allocator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/BlockAllocator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/BumpPointer.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/DumpLinearScan.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/EmbeddedMetaData.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/LargeObjectAllocator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/LinearScan.java rvmroot/trunk/MMTk/src/org/mmtk/utility/alloc/SegregatedFreeList.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/AddressDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/AddressPairDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/AddressTripleDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/Deque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/LocalDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/LocalQueue.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/LocalSSB.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/ObjectReferenceDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/SharedDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/SortSharedDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/SortTODAddressStack.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/SortTODObjectReferenceStack.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/SortTODSharedDeque.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/TraceBuffer.java rvmroot/trunk/MMTk/src/org/mmtk/utility/deque/WriteBuffer.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/AbstractTile.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/Color.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/GCspy.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/LinearScan.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/StreamConstants.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/Subspace.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/drivers/AbstractDriver.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/drivers/ContiguousSpaceDriver.java rvmroot/trunk/MMTk/src/org/mmtk/utility/gcspy/drivers/TreadmillDriver.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/FreeListPageResource.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/Map.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/MonotonePageResource.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/PageResource.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/SpaceDescriptor.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/AddressOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/BooleanOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/BoundedNursery.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/CycleFilterThreshold.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/CycleMetaDataLimit.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/CycleTriggerThreshold.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/DebugAddress.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/DummyEnum.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/EagerCompleteSweep.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/EchoOptions.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/EnumOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/FixedNursery.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/FloatOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/FragmentationStats.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/FullHeapSystemGC.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/GCTimeCap.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/GCspyPort.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/GCspyTileSize.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/GCspyWait.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/GenCycleDetection.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/IgnoreSystemGC.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/IntOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/MarkSweepMarkBits.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/MetaDataLimit.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/MicrosecondsOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/NoFinalizer.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/NoReferenceTypes.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/NurserySize.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/Option.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/Options.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/PagesOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/PrintPhaseStats.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/ProtectOnRelease.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/SanityCheck.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/StressFactor.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/StringOption.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/TraceRate.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/VariableSizeHeap.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/Verbose.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/VerboseFragmentationStats.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/VerboseTiming.java rvmroot/trunk/MMTk/src/org/mmtk/utility/sanitychecker/SanityChecker.java rvmroot/trunk/MMTk/src/org/mmtk/utility/sanitychecker/SanityCheckerLocal.java rvmroot/trunk/MMTk/src/org/mmtk/utility/sanitychecker/SanityDataTable.java rvmroot/trunk/MMTk/src/org/mmtk/utility/sanitychecker/SanityTraceLocal.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/Enumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/MMType.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/RCDecEnumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/RCModifiedEnumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/RCSanityEnumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/Scan.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/TDCollectEnumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/TDGreyEnumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/TDScanBlackEnumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/scan/TDScanEnumerator.java rvmroot/trunk/MMTk/src/org/mmtk/utility/statistics/BooleanCounter.java rvmroot/trunk/MMTk/src/org/mmtk/utility/statistics/Counter.java rvmroot/trunk/MMTk/src/org/mmtk/utility/statistics/EventCounter.java rvmroot/trunk/MMTk/src/org/mmtk/utility/statistics/LongCounter.java rvmroot/trunk/MMTk/src/org/mmtk/utility/statistics/SizeCounter.java rvmroot/trunk/MMTk/src/org/mmtk/utility/statistics/Stats.java rvmroot/trunk/MMTk/src/org/mmtk/utility/statistics/Timer.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Assert.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Barriers.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Collection.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Factory.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Lock.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Memory.java rvmroot/trunk/MMTk/src/org/mmtk/vm/ObjectModel.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Options.java rvmroot/trunk/MMTk/src/org/mmtk/vm/ReferenceGlue.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Scanning.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Statistics.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Strings.java rvmroot/trunk/MMTk/src/org/mmtk/vm/SynchronizedCounter.java rvmroot/trunk/MMTk/src/org/mmtk/vm/TraceInterface.java rvmroot/trunk/MMTk/src/org/mmtk/vm/VM.java rvmroot/trunk/Make.rules.generic rvmroot/trunk/bin/RunSanityTests rvmroot/trunk/bin/build-classpath-from-cvs rvmroot/trunk/bin/findDeviantFiles rvmroot/trunk/bin/findMatchedFiles.perl rvmroot/trunk/bin/gdbInit rvmroot/trunk/bin/gdbrvm rvmroot/trunk/bin/jBuildClasspathJar rvmroot/trunk/bin/jconfigure rvmroot/trunk/bin/jcreate rvmroot/trunk/bin/jdoc.sh rvmroot/trunk/bin/jfind rvmroot/trunk/bin/jreplace rvmroot/trunk/bin/jrun rvmroot/trunk/bin/libjconfigure.bash rvmroot/trunk/bin/noAuthorFilter.awk rvmroot/trunk/bin/noCopyrightFilter.awk rvmroot/trunk/bin/noIdFilter.awk rvmroot/trunk/bin/runrvm rvmroot/trunk/bin/rvm rvmroot/trunk/bin/rvmeclipse rvmroot/trunk/bin/sanity-envars.bash rvmroot/trunk/config/exp/README rvmroot/trunk/config/exp/i686-pc-linux-gnu.gij rvmroot/trunk/config/exp/i686-pc-linux-gnu.gij.augart rvmroot/trunk/config/exp/i686-pc-linux-gnu.kaffe-with-help.augart rvmroot/trunk/config/exp/i686-pc-linux-gnu.kaffe.clunky rvmroot/trunk/config/exp/i686-pc-linux-gnu.sablevm.augart rvmroot/trunk/config/exp/i686-pc-linux-gnu.sun.augart rvmroot/trunk/config/exp/twostage.sh rvmroot/trunk/config/i686-pc-linux-gnu rvmroot/trunk/config/i686-pc-linux-gnu.kaffe rvmroot/trunk/config/powerpc-ibm-aix5 rvmroot/trunk/config/powerpc-unknown-linux-gnu rvmroot/trunk/config/powerpc-unknown-osx-gnu rvmroot/trunk/config/powerpc64-ibm-aix5 rvmroot/trunk/config/powerpc64-unknown-linux-gnu rvmroot/trunk/config/x86_64-pc-linux-gnu rvmroot/trunk/doc/userguide/codingstyle.tex rvmroot/trunk/doc/userguide/inclusions.filenames.m4 rvmroot/trunk/etc/dot-emacs.el rvmroot/trunk/etc/dot-vimrc.vim rvmroot/trunk/etc/eclipse-bin/java rvmroot/trunk/etc/jikes-rvm.el rvmroot/trunk/etc/jikes-rvm.vim rvmroot/trunk/etc/skel/GNUmakefile.skel rvmroot/trunk/etc/skel/Skeleton.java rvmroot/trunk/etc/skel/skeleton.C rvmroot/trunk/etc/skel/skeleton.m4 rvmroot/trunk/etc/skel/skeleton.man rvmroot/trunk/etc/skel/skeleton.sh rvmroot/trunk/include/cAttributePortability.h rvmroot/trunk/include/jni.h rvmroot/trunk/include/jniExternal.h rvmroot/trunk/rvm/src/vm/Dummy.java rvmroot/trunk/rvm/src/vm/HPM/HPM_counters.java rvmroot/trunk/rvm/src/vm/HPM/HPM_info.java rvmroot/trunk/rvm/src/vm/HPM/Java2HPM.C rvmroot/trunk/rvm/src/vm/HPM/Java2HPM.java rvmroot/trunk/rvm/src/vm/HPM/VM_HardwarePerformanceMonitor.java rvmroot/trunk/rvm/src/vm/HPM/VM_HardwarePerformanceMonitors.java rvmroot/trunk/rvm/src/vm/HPM/VM_TraceWriter.java rvmroot/trunk/rvm/src/vm/HPM/intel/hpm.c rvmroot/trunk/rvm/src/vm/HPM/intel/hpm.h rvmroot/trunk/rvm/src/vm/HPM/powerPC/hpm.c rvmroot/trunk/rvm/src/vm/HPM/powerPC/hpm.h rvmroot/trunk/rvm/src/vm/VM.java rvmroot/trunk/rvm/src/vm/VM_Configuration.java rvmroot/trunk/rvm/src/vm/VM_Constants.java rvmroot/trunk/rvm/src/vm/VM_HeapLayoutConstants.java rvmroot/trunk/rvm/src/vm/VM_Properties.java rvmroot/trunk/rvm/src/vm/VM_SizeConstants.java rvmroot/trunk/rvm/src/vm/adaptive/Makefile rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_AINewHotEdgeEvent.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_AdaptiveInlining.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_AnalyticModel.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_Controller.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_ControllerInputEvent.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_ControllerMemory.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_ControllerPlan.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_ControllerThread.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_HotMethodEvent.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_HotMethodRecompilationEvent.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_MultiLevelAdaptiveModel.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_RecompilationChoice.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_RecompilationStrategy.java rvmroot/trunk/rvm/src/vm/adaptive/controller/VM_RecompileOptChoice.java rvmroot/trunk/rvm/src/vm/adaptive/database/VM_AOSDatabase.java rvmroot/trunk/rvm/src/vm/adaptive/database/callGraph/VM_CallSite.java rvmroot/trunk/rvm/src/vm/adaptive/database/callGraph/VM_PartialCallGraph.java rvmroot/trunk/rvm/src/vm/adaptive/database/callGraph/VM_WeightedCallTargets.java rvmroot/trunk/rvm/src/vm/adaptive/database/methodSamples/VM_MethodCountData.java rvmroot/trunk/rvm/src/vm/adaptive/database/methodSamples/VM_MethodCountSet.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/executionState/OSR_BytecodeTraverser.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/executionState/OSR_Constants.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/executionState/OSR_ExecStateExtractor.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/executionState/OSR_ExecutionState.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/executionState/OSR_ObjectHolder.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/executionState/OSR_VariableElement.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/optCompilationWithOsr/OSR_EncodedOSRMap.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/optCompilationWithOsr/OSR_LocalRegPair.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/optCompilationWithOsr/OSR_MapIterator.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/optCompilationWithOsr/OSR_MethodVariables.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/optCompilationWithOsr/OSR_OsrPointConstructor.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/optCompilationWithOsr/OSR_VariableMap.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/optCompilationWithOsr/OSR_VariableMapElement.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_AConstNull.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_CheckCast.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_DoubleStore.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_FloatStore.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_Goto.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_IntStore.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_InvokeCompiledMethod.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_InvokeStatic.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_LoadDoubleConst.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_LoadFloatConst.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_LoadIntConst.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_LoadLongConst.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_LoadRetAddrConst.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_LoadWordConst.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_LongStore.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_Nop.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_ParamInitEnd.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_Pop.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/BC_RefStore.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/OSR_AdjustBCIndexes.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/OSR_PseudoBytecode.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/specialCompilation/OSR_SpecialCompiler.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/threadControls/OSR_Listener.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/threadControls/OSR_OnStackReplacementEvent.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/threadControls/OSR_OnStackReplacementPlan.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/threadControls/OSR_OnStackReplacementTrigger.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/threadControls/OSR_OrganizerThread.java rvmroot/trunk/rvm/src/vm/adaptive/onStackReplacement/util/OSR_Profiler.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/VM_CompilationThread.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/VM_CompilerDNA.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/VM_InvocationCounts.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/VM_PreCompile.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/instrumentation/OPT_InsertInstructionCounters.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/instrumentation/OPT_InsertMethodInvocationCounter.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/instrumentation/OPT_InsertYieldpointCounters.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/instrumentation/OPT_InstrumentationSamplingFramework.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/instrumentation/OPT_LowerInstrumentation.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/instrumentation/VM_AOSInstrumentationPlan.java rvmroot/trunk/rvm/src/vm/adaptive/recompilation/instrumentation/VM_CounterBasedSampling.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/VM_Decayable.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/VM_Reportable.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/VM_RuntimeMeasurements.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_CounterArrayManager.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_CounterNameFunction.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_Instrumentation.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_ManagedCounterData.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_MethodInvocationCounterData.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_MethodNameFunction.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_StringEventCounterData.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/instrumentation/VM_YieldpointCounterData.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/listeners/VM_CallDensityListener.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/listeners/VM_ContextListener.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/listeners/VM_EdgeListener.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/listeners/VM_Listener.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/listeners/VM_MethodListener.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/listeners/VM_NullListener.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/listeners/VM_YieldCounterListener.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/organizers/VM_AccumulatingMethodSampleOrganizer.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/organizers/VM_DecayOrganizer.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/organizers/VM_DynamicCallGraphOrganizer.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/organizers/VM_MethodSampleOrganizer.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/organizers/VM_MissingHotCallEdgeOrganizer.java rvmroot/trunk/rvm/src/vm/adaptive/runtimeMeasurements/organizers/VM_Organizer.java rvmroot/trunk/rvm/src/vm/adaptive/utility/BooleanOptions.dat rvmroot/trunk/rvm/src/vm/adaptive/utility/Makefile rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_AOSGenerator.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_AOSLogging.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_AOSOptions.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_AOSOptions.template rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_BlockingPriorityQueue.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_CompilerAdvice.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_CompilerAdviceAttribute.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_CompilerAdviceInfoReader.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_DynamicCallAttribute.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_DynamicCallFileInfoReader.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_PriorityQueue.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_UnResolvedCallSite.java rvmroot/trunk/rvm/src/vm/adaptive/utility/VM_UnResolvedWeightedCallTargets.java rvmroot/trunk/rvm/src/vm/adaptive/utility/ValueOptions.dat rvmroot/trunk/rvm/src/vm/arch/intel/VM_RegisterConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/VM_Registers.java rvmroot/trunk/rvm/src/vm/arch/intel/VM_StackframeLayoutConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/VM_TrapConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/assembler/Makefile rvmroot/trunk/rvm/src/vm/arch/intel/assembler/VM_Assembler.in rvmroot/trunk/rvm/src/vm/arch/intel/assembler/VM_AssemblerConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/assembler/VM_Lister.java rvmroot/trunk/rvm/src/vm/arch/intel/assembler/VM_MachineCode.java rvmroot/trunk/rvm/src/vm/arch/intel/assembler/genAssembler.sh rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/GCMap/VM_BaselineGCMapIterator.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_BaselineConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_BaselineExceptionDeliverer.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_Compiler.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/VM_MultianewarrayHelper.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/baseline/writeBarrier/VM_Barriers.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/OPT_GenerateMachineSpecificMagic.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/OPT_MIROptimizationPlanner.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/lir2mir/IA32.rules rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/lir2mir/Makefile rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/lir2mir/OPT_BURS_Helpers.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/lir2mir/OPT_ComplexLIR2MIRExpansion.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/lir2mir/OPT_ConvertALUOperators.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/lir2mir/OPT_NormalizeConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/GenerateAssembler.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/Makefile rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/NoInlinePragma.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/OPT_AssemblerBase.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/OPT_FinalMIRExpansion.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/OPT_InstructionFormatTables.template rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/OPT_OperatorFormatTable.template rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/OPT_OperatorFormatTables.template rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/Offset.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/VM.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/VM_CodeArray.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/VM_Compiler.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/VM_Control.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/VM_Lister.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/VM_MachineCode.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/VM_Magic.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/conversions/mir2mc/Word.fake rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/InstructionFormatList.dat rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/Make.operatorList rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/OPT_RegisterPool.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/OperatorClassList.dat rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/OperatorList.dat rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/ResourceList.dat rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/operand/OPT_BURSManagedFPROperand.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/ir/instruction/operand/OPT_IA32ConditionOperand.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_CallingConvention.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_ExpandFPRStackConvention.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_MIRSplitRanges.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_PhysicalDefUse.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_PhysicalRegisterConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_PhysicalRegisterSet.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_PhysicalRegisterTools.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_RegisterPreferences.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_RegisterRestrictions.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/regalloc/OPT_StackManager.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/vmInterface/services/VM_OptExceptionDeliverer.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/vmInterface/services/VM_OptGCMapIterator.java rvmroot/trunk/rvm/src/vm/arch/intel/compilers/optimizing/vmInterface/services/VM_OptGCMapIteratorConstants.java rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/Makefile rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/disasm.C rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/disasm.h rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/ihnpdsm.C rvmroot/trunk/rvm/src/vm/arch/intel/disassembler/ihnpdsm.h rvmroot/trunk/rvm/src/vm/arch/intel/executionState/OSR_BaselineExecStateExtractor.java rvmroot/trunk/rvm/src/vm/arch/intel/executionState/OSR_CodeInstaller.java rvmroot/trunk/rvm/src/vm/arch/intel/executionState/OSR_OptExecStateExtractor.java rvmroot/trunk/rvm/src/vm/arch/intel/executionState/OSR_PostThreadSwitch.java rvmroot/trunk/rvm/src/vm/arch/intel/executionState/OSR_TempRegisters.java rvmroot/trunk/rvm/src/vm/arch/intel/jni/VM_JNICompiler.java rvmroot/trunk/rvm/src/vm/arch/intel/jni/VM_JNIGCMapIterator.java rvmroot/trunk/rvm/src/vm/arch/intel/jni/VM_JNIHelpers.java rvmroot/trunk/rvm/src/vm/arch/intel/runtime/VM_CodeArray.java rvmroot/trunk/rvm/src/vm/arch/intel/runtime/VM_DynamicLinkerHelper.java rvmroot/trunk/rvm/src/vm/arch/intel/runtime/VM_InterfaceMethodConflictResolver.java rvmroot/trunk/rvm/src/vm/arch/intel/runtime/VM_LazyCompilationTrampolineGenerator.java rvmroot/trunk/rvm/src/vm/arch/intel/runtime/VM_MachineReflection.java rvmroot/trunk/rvm/src/vm/arch/intel/runtime/VM_OutOfLineMachineCode.java rvmroot/trunk/rvm/src/vm/arch/intel/runtime/VM_ProcessorLocalState.java rvmroot/trunk/rvm/src/vm/arch/powerPC/VM_RegisterConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/VM_Registers.java rvmroot/trunk/rvm/src/vm/arch/powerPC/VM_StackframeLayoutConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/VM_TrapConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/GCMap/VM_BaselineGCMapIterator.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_Assembler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_AssemblerConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_BaselineConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_BaselineExceptionDeliverer.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_Compiler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_MachineCode.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/VM_MultianewarrayHelper.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/baseline/writeBarrier/VM_Barriers.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/OPT_GenerateMachineSpecificMagic.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/OPT_MIROptimizationPlanner.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/Makefile rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/OPT_BURS_Helpers.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/OPT_ComplexLIR2MIRExpansion.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/OPT_ConvertALUOperators.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/OPT_NormalizeConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/PPC_Alu32.rules rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/PPC_Alu64.rules rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/PPC_Common.rules rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/PPC_Mem32.rules rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/lir2mir/PPC_Mem64.rules rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/mir2mc/OPT_Assembler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/conversions/mir2mc/OPT_FinalMIRExpansion.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/InstructionFormatList.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/Make.operatorList rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/OPT_RegisterPool.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/OperatorClassList.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/OperatorList_Alu32.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/OperatorList_Alu64.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/OperatorList_Common.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/OperatorList_Mem32.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/OperatorList_Mem64.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/ResourceList.dat rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/operand/OPT_PowerPCConditionOperand.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/ir/instruction/operand/OPT_PowerPCTrapOperand.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_CallingConvention.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_MIRSplitRanges.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_PhysicalDefUse.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_PhysicalRegisterConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_PhysicalRegisterSet.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_PhysicalRegisterTools.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_RegisterPreferences.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_RegisterRestrictions.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/regalloc/OPT_StackManager.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/vmInterface/services/VM_OptExceptionDeliverer.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/vmInterface/services/VM_OptGCMapIterator.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/optimizing/vmInterface/services/VM_OptGCMapIteratorConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/GCMap/VM_QuickGCMapIterator.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/VM_QuickCompiler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/VM_QuickConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/VM_QuickExceptionDeliverer.java rvmroot/trunk/rvm/src/vm/arch/powerPC/compilers/quick/writeBarrier/VM_QuickBarriers.java rvmroot/trunk/rvm/src/vm/arch/powerPC/disassembler/PPC_Disassembler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/disassembler/opcodeXX.java rvmroot/trunk/rvm/src/vm/arch/powerPC/disassembler/opcode_tab.java rvmroot/trunk/rvm/src/vm/arch/powerPC/executionState/OSR_BaselineExecStateExtractor.java rvmroot/trunk/rvm/src/vm/arch/powerPC/executionState/OSR_CodeInstaller.java rvmroot/trunk/rvm/src/vm/arch/powerPC/executionState/OSR_OptExecStateExtractor.java rvmroot/trunk/rvm/src/vm/arch/powerPC/executionState/OSR_PostThreadSwitch.java rvmroot/trunk/rvm/src/vm/arch/powerPC/executionState/OSR_TempRegisters.java rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNICompiler.java rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNIConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNIGCMapIterator.java rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNIHelpers.java rvmroot/trunk/rvm/src/vm/arch/powerPC/jni/VM_JNIStackframeLayoutConstants.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_CodeArray.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_DynamicLinkerHelper.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_InterfaceMethodConflictResolver.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_LazyCompilationTrampolineGenerator.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_MachineReflection.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_OutOfLineMachineCode.java rvmroot/trunk/rvm/src/vm/arch/powerPC/runtime/VM_ProcessorLocalState.java rvmroot/trunk/rvm/src/vm/classLoader/ApplicationClassLoader.java rvmroot/trunk/rvm/src/vm/classLoader/VM_AbstractMethod.java rvmroot/trunk/rvm/src/vm/classLoader/VM_AnnotatedElement.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Annotation.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Array.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Atom.java rvmroot/trunk/rvm/src/vm/classLoader/VM_BootstrapClassLoader.java rvmroot/trunk/rvm/src/vm/classLoader/VM_BytecodeConstants.java rvmroot/trunk/rvm/src/vm/classLoader/VM_BytecodeStream.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Class.java rvmroot/trunk/rvm/src/vm/classLoader/VM_ClassLoader.java rvmroot/trunk/rvm/src/vm/classLoader/VM_ClassLoaderConstants.java rvmroot/trunk/rvm/src/vm/classLoader/VM_DynamicTypeCheck.java rvmroot/trunk/rvm/src/vm/classLoader/VM_ExceptionHandlerMap.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Field.java rvmroot/trunk/rvm/src/vm/classLoader/VM_FieldReference.java rvmroot/trunk/rvm/src/vm/classLoader/VM_FieldVector.java rvmroot/trunk/rvm/src/vm/classLoader/VM_InterfaceInvocation.java rvmroot/trunk/rvm/src/vm/classLoader/VM_InterfaceMethodSignature.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Member.java rvmroot/trunk/rvm/src/vm/classLoader/VM_MemberReference.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Method.java rvmroot/trunk/rvm/src/vm/classLoader/VM_MethodReference.java rvmroot/trunk/rvm/src/vm/classLoader/VM_MethodVector.java rvmroot/trunk/rvm/src/vm/classLoader/VM_NativeMethod.java rvmroot/trunk/rvm/src/vm/classLoader/VM_NormalMethod.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Primitive.java rvmroot/trunk/rvm/src/vm/classLoader/VM_TableBasedDynamicLinker.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Type.java rvmroot/trunk/rvm/src/vm/classLoader/VM_TypeDescriptorParsing.java rvmroot/trunk/rvm/src/vm/classLoader/VM_TypeReference.java rvmroot/trunk/rvm/src/vm/classLoader/VM_TypeReferenceVector.java rvmroot/trunk/rvm/src/vm/classLoader/VM_UTF8Convert.java rvmroot/trunk/rvm/src/vm/compilers/baseline/BooleanOptions.dat rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_BBConstants.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_BasicBlock.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_BasicBlockFactory.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_BuildBB.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_BuildReferenceMaps.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_JSRInfo.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_JSRSubroutineInfo.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_PendingRETInfo.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_ReferenceMaps.java rvmroot/trunk/rvm/src/vm/compilers/baseline/GCMap/VM_UnusualMaps.java rvmroot/trunk/rvm/src/vm/compilers/baseline/Makefile rvmroot/trunk/rvm/src/vm/compilers/baseline/VM_BaselineCompiledMethod.java rvmroot/trunk/rvm/src/vm/compilers/baseline/VM_BaselineCompiler.java rvmroot/trunk/rvm/src/vm/compilers/baseline/VM_BaselineExceptionTable.java rvmroot/trunk/rvm/src/vm/compilers/baseline/VM_BaselineOptions.template rvmroot/trunk/rvm/src/vm/compilers/baseline/VM_CompilerFramework.java rvmroot/trunk/rvm/src/vm/compilers/baseline/VM_ForwardReference.java rvmroot/trunk/rvm/src/vm/compilers/baseline/ValueOptions.dat rvmroot/trunk/rvm/src/vm/compilers/baseline/profiling/VM_BranchProfile.java rvmroot/trunk/rvm/src/vm/compilers/baseline/profiling/VM_BranchProfiles.java rvmroot/trunk/rvm/src/vm/compilers/baseline/profiling/VM_ConditionalBranchProfile.java rvmroot/trunk/rvm/src/vm/compilers/baseline/profiling/VM_EdgeCounts.java rvmroot/trunk/rvm/src/vm/compilers/baseline/profiling/VM_SwitchBranchProfile.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_CodeFinder.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_CompiledMethod.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_CompiledMethods.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_ExceptionTable.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_HardwareTrapCompiledMethod.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_HardwareTrapGCMapIterator.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_RecompilationManager.java rvmroot/trunk/rvm/src/vm/compilers/harness/bootImage/baseline/VM_BootImageCompiler.java rvmroot/trunk/rvm/src/vm/compilers/harness/bootImage/optimizing/VM_BootImageCompiler.java rvmroot/trunk/rvm/src/vm/compilers/harness/bootImage/quick/VM_BootImageCompiler.java rvmroot/trunk/rvm/src/vm/compilers/harness/runtime/VM_RuntimeCompiler.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/Makefile rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/BooleanOptions.dat rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/Makefile rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_CompilationPlan.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_Compiler.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_CompilerPhase.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_Constants.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_IRPrinter.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_InstrumentationPlan.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_OptimizationPlanAtomicElement.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_OptimizationPlanCompositeElement.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_OptimizationPlanElement.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_OptimizationPlanner.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OPT_Options.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/OptDummy.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/driver/ValueOptions.dat rvmroot/trunk/rvm/src/vm/compilers/optimizing/instrumentation/OPT_InstrumentedEventCounterManager.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/OPT_HIRInfo.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/OPT_IR.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/OPT_LIRInfo.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/OPT_MIRInfo.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_BasicBlock.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_ControlFlowGraph.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_ExceptionHandlerBasicBlock.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_ExceptionHandlerBasicBlockBag.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_InlineSequence.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_WeightedBranchTargets.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_BC2IR.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_ConvertBCtoHIR.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_GenerateMagic.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_GenerationContext.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/bc2hir/OPT_IRGenOptions.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/hir2lir/OPT_ConvertHIRtoLIR.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/hir2lir/OPT_ConvertToLowLevelIR.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/hir2lir/OPT_DynamicTypeCheckExpansion.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/hir2lir/OPT_ExpandRuntimeServices.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/Makefile rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_BURS.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_BURS_Common_Helpers.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_BURS_IntConstantTreeNode.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_BURS_MemOp_Helpers.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_BURS_TreeNode.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_ConvertLIRtoMIR.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_MinimalBURS.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_NormalBURS.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_SplitBasicBlock.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/ir.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/mir2mc/OPT_ConvertMIRtoMC.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/gcmap/OPT_GCIRMap.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/gcmap/OPT_GCIRMapElement.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/gcmap/OPT_GCIRMapEnumerator.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/gcmap/OPT_RegSpillListElement.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/gcmap/OPT_RegSpillListEnumerator.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/CommonOperands.dat rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/InstructionFormatList.dat rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/InstructionFormats.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/Makefile rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OPT_AbstractRegisterPool.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OPT_GenericRegisterPool.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OPT_Instruction.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OPT_Operator.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OPT_OperatorNames.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OPT_Operators.template rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OPT_Register.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/OperatorList.dat rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_AddressConstantOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_BasicBlockOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_BranchOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_BranchProfileOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_ClassConstantOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_ConditionOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_ConstantOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_DoubleConstantOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_FloatConstantOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_InlinedOsrTypeInfoOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_IntConstantOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_LocationOperand.java rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/instruction/operand/OPT_LongConstantOperand.java rvmroot/trunk/rvm/src/... [truncated message content] |
From: <dgr...@us...> - 2006-09-22 14:44:54
|
Revision: 10808 http://svn.sourceforge.net/jikesrvm/?rev=10808&view=rev Author: dgrove-oss Date: 2006-09-22 07:44:46 -0700 (Fri, 22 Sep 2006) Log Message: ----------- License related cleanup. tools/jburg has always been distributed under a different license than the rest of the project. Create tools-external to hold jburg and any other future exceptions to the general CPL license that applies to the rest of the files in rvmroot. Modified Paths: -------------- rvmroot/trunk/LICENSE rvmroot/trunk/bin/jconfigure rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template Added Paths: ----------- rvmroot/trunk/tools-external/ rvmroot/trunk/tools-external/jburg/ Removed Paths: ------------- rvmroot/trunk/tools/jburg/ Modified: rvmroot/trunk/LICENSE =================================================================== --- rvmroot/trunk/LICENSE 2006-09-22 13:42:38 UTC (rev 10807) +++ rvmroot/trunk/LICENSE 2006-09-22 14:44:46 UTC (rev 10808) @@ -3,6 +3,11 @@ been certified by the Open Source Initiative as an open source license. The CPL meets the Debian Free Software Guidelines. +Note: The tools-external directory contains open source software +that is distributed/redistributable under other licenses. +Please see the license information found in each sub-directory +of tools-external for specific details. + -------- The following is the legal text of the Common Public License --------- Common Public License - v 1.0 Modified: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/bin/jconfigure 2006-09-22 13:42:38 UTC (rev 10807) +++ rvmroot/trunk/bin/jconfigure 2006-09-22 14:44:46 UTC (rev 10808) @@ -2550,7 +2550,7 @@ cat <<- EOF # Opt compiler only: - run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -f ${ROOT_DIRECTORY_STR}/tools/jburg/Makefile -C ${SCRATCH_DIRECTORY_STR} VPATH=${ROOT_DIRECTORY_STR}/tools/jburg tool + run ${GNU_MAKE_STR} \${MFLAGS} CFLAGS='' CXXFLAGS='' -f ${ROOT_DIRECTORY_STR}/tools-external/jburg/Makefile -C ${SCRATCH_DIRECTORY_STR} VPATH=${ROOT_DIRECTORY_STR}/tools-external/jburg tool EOF fi cat <<- EOF Modified: rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template =================================================================== --- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template 2006-09-22 13:42:38 UTC (rev 10807) +++ rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template 2006-09-22 14:44:46 UTC (rev 10808) @@ -20,7 +20,7 @@ * * Note: some of the functions have been taken and modified * from the file gen.c, from the LCC compiler. - * See $RVM_ROOT/tools/jburg/COPYRIGHT file for copyright restrictions. + * See $RVM_ROOT/tools-external/jburg/COPYRIGHT file for copyright restrictions. * * @see OPT_BURS * @author Mauricio Serrano Copied: rvmroot/trunk/tools-external/jburg (from rev 10806, rvmroot/trunk/tools/jburg) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-22 15:00:46
|
Revision: 10809 http://svn.sourceforge.net/jikesrvm/?rev=10809&view=rev Author: dgrove-oss Date: 2006-09-22 08:00:35 -0700 (Fri, 22 Sep 2006) Log Message: ----------- move the other LCC-derived file from opt compiler portion of the sourcd tree to tools-external Modified Paths: -------------- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/Makefile Added Paths: ----------- rvmroot/trunk/tools-external/jburg/burg.template Removed Paths: ------------- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template Modified: rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/Makefile =================================================================== --- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/Makefile 2006-09-22 14:44:46 UTC (rev 10808) +++ rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/Makefile 2006-09-22 15:00:35 UTC (rev 10809) @@ -16,6 +16,8 @@ MIR_IR_DIR = $(RVM_ROOT)/rvm/src/vm/arch/$(ARCH_DIR)/compilers/optimizing/ir/instruction JBURG_DIR = $(SCRATCH_DIR) +BURG_TEMPLATE=$(RVM_ROOT)/tools-external/jburg/burg.template + # define RULE_FILES include $(MIR_LIR2MIR_DIR)/Makefile @@ -32,8 +34,8 @@ ARCH_OP_LIST=$(GEN_FILES_DIR)/Arch_OperatorList.dat \ THE_RULE_FILE=$(GEN_FILES_DIR)/LIR2MIR.rules -$(GEN_FILES_DIR)/OPT_BURS_STATE.java: $(GEN_FILES_DIR)/ir.brg burg.template +$(GEN_FILES_DIR)/OPT_BURS_STATE.java: $(GEN_FILES_DIR)/ir.brg $(BURG_TEMPLATE) (cd $(GEN_FILES_DIR) && $(JBURG_DIR)/jburg -p BURS ir.brg > $(ARCH_DIR).tmp) cat OPT_BURS_TreeNode.template $(GEN_FILES_DIR)/BURS_State.template > $(GEN_FILES_DIR)/OPT_BURS_TreeNode.java - cat burg.template $(GEN_FILES_DIR)/$(ARCH_DIR).tmp > $(GEN_FILES_DIR)/OPT_BURS_STATE.java + cat $(BURG_TEMPLATE) $(GEN_FILES_DIR)/$(ARCH_DIR).tmp > $(GEN_FILES_DIR)/OPT_BURS_STATE.java Deleted: rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template =================================================================== --- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template 2006-09-22 14:44:46 UTC (rev 10808) +++ rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template 2006-09-22 15:00:35 UTC (rev 10809) @@ -1,124 +0,0 @@ -/* - * This file is part of the Jikes RVM project (http://jikesrvm.sourceforge.net). - * The Jikes RVM project is distributed under the Common Public License (CPL). - * A copy of the license is included in the distribution, and is also - * available at http://www.opensource.org/licenses/cpl1.0.php - * - * (C) Copyright IBM Corp. 2001 - */ -//$Id$ - -package com.ibm.JikesRVM.opt; - -import com.ibm.JikesRVM.*; -import com.ibm.JikesRVM.classloader.*; -import com.ibm.JikesRVM.opt.ir.*; -import org.vmmagic.unboxed.*; - -/** - * Machine-specific instruction selection rules. Program generated. - * - * Note: some of the functions have been taken and modified - * from the file gen.c, from the LCC compiler. - * See $RVM_ROOT/tools-external/jburg/COPYRIGHT file for copyright restrictions. - * - * @see OPT_BURS - * @author Mauricio Serrano - * @author Vivek Sarkar - * @author Igor Pechtchanski - * @modified Dave Grove - * - * NOTE: Program generated file, do not edit! - */ -public final class OPT_BURS_STATE extends OPT_BURS_Helpers - implements OPT_Operators, OPT_BURS_Definitions { - - static final byte NOFLAGS = 0x00; - static final byte EMIT_INSTRUCTION = 0x01; - static final byte LEFT_CHILD_FIRST = 0x02; - static final byte RIGHT_CHILD_FIRST = 0x04; - - OPT_BURS_STATE(OPT_BURS b) { - super(b); - } - -/*****************************************************************/ -/* */ -/* BURS TEMPLATE */ -/* */ -/*****************************************************************/ - - /* accessors used by BURS */ - private static OPT_BURS_TreeNode STATE(OPT_BURS_TreeNode a) { return a; } - - /*********************************************************************** - * - * This file contains BURG utilities - * - * Note: some of the functions have been taken and modified - * from the file gen.c, from the LCC compiler. - * - ************************************************************************/ - void trace(OPT_BURS_TreeNode p, int rule, int cost, int bestcost) { - if (OPT_BURS.DEBUG) { - VM.sysWrite(p+" matched "+OPT_BURS_Debug.string[rule]+" with cost "+ - cost+"vs. "+bestcost); - } - } - - // - // This function will dump the tree - // - public static void dumpTree(OPT_BURS_TreeNode p) { - if (OPT_BURS.DEBUG) { - VM.sysWrite(dumpTree("\n",p,1)); - } - } - - public static String dumpTree(String out, OPT_BURS_TreeNode p, int indent) { - if (p == null) return out; - for (int i=0; i<indent; i++) - out = out + " "; - out = out + p; - out = out + '\n'; - if (p.child1 != null) { - indent++; - out = out + dumpTree("",p.child1,indent); - if (p.child2 != null) { - out = out + dumpTree("",p.child2,indent); - } - } - return out; - } - - // - // This function will dump the cover of a tree, i.e. the rules - // that cover the tree with a minimal cost. - // - public static void dumpCover(OPT_BURS_TreeNode p, byte goalnt, int indent){ - if (OPT_BURS.DEBUG) { - if (p == null) return; - int rule = STATE(p).rule(goalnt); - VM.sysWrite(STATE(p).getCost(goalnt)+"\t"); - for (int i = 0; i < indent; i++) - VM.sysWrite(' '); - VM.sysWrite(OPT_BURS_Debug.string[rule]+"\n"); - for (int i = 0; i < nts[rule].length; i++) - dumpCover(kids(p,rule,i), nts[rule][i], indent + 1); - } - } - - // caution: MARK should be used in single threaded mode, - public static void mark(OPT_BURS_TreeNode p, byte goalnt) { - if (p == null) return; - int rule = STATE(p).rule(goalnt); - byte act = action[rule]; - if ((act & EMIT_INSTRUCTION) != 0) { - p.setNonTerminal(goalnt); - } - if (rule == 0) { - throw new OPT_OptimizingCompilerException("BURS","rule missing in ", - p.getInstruction().toString(), dumpTree("",p,1)); - } - mark_kids(p,rule); - } Copied: rvmroot/trunk/tools-external/jburg/burg.template (from rev 10808, rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/burg.template) =================================================================== --- rvmroot/trunk/tools-external/jburg/burg.template (rev 0) +++ rvmroot/trunk/tools-external/jburg/burg.template 2006-09-22 15:00:35 UTC (rev 10809) @@ -0,0 +1,119 @@ +/* + * (C) Copyright IBM Corp. 2001 + */ +//$Id$ + +package com.ibm.JikesRVM.opt; + +import com.ibm.JikesRVM.*; +import com.ibm.JikesRVM.classloader.*; +import com.ibm.JikesRVM.opt.ir.*; +import org.vmmagic.unboxed.*; + +/** + * Machine-specific instruction selection rules. Program generated. + * + * Note: some of the functions have been taken and modified + * from the file gen.c, from the LCC compiler. + * See $RVM_ROOT/tools-external/jburg/COPYRIGHT file for copyright restrictions. + * + * @see OPT_BURS + * @author Mauricio Serrano + * @author Vivek Sarkar + * @author Igor Pechtchanski + * @modified Dave Grove + * + * NOTE: Program generated file, do not edit! + */ +public final class OPT_BURS_STATE extends OPT_BURS_Helpers + implements OPT_Operators, OPT_BURS_Definitions { + + static final byte NOFLAGS = 0x00; + static final byte EMIT_INSTRUCTION = 0x01; + static final byte LEFT_CHILD_FIRST = 0x02; + static final byte RIGHT_CHILD_FIRST = 0x04; + + OPT_BURS_STATE(OPT_BURS b) { + super(b); + } + +/*****************************************************************/ +/* */ +/* BURS TEMPLATE */ +/* */ +/*****************************************************************/ + + /* accessors used by BURS */ + private static OPT_BURS_TreeNode STATE(OPT_BURS_TreeNode a) { return a; } + + /*********************************************************************** + * + * This file contains BURG utilities + * + * Note: some of the functions have been taken and modified + * from the file gen.c, from the LCC compiler. + * + ************************************************************************/ + void trace(OPT_BURS_TreeNode p, int rule, int cost, int bestcost) { + if (OPT_BURS.DEBUG) { + VM.sysWrite(p+" matched "+OPT_BURS_Debug.string[rule]+" with cost "+ + cost+"vs. "+bestcost); + } + } + + // + // This function will dump the tree + // + public static void dumpTree(OPT_BURS_TreeNode p) { + if (OPT_BURS.DEBUG) { + VM.sysWrite(dumpTree("\n",p,1)); + } + } + + public static String dumpTree(String out, OPT_BURS_TreeNode p, int indent) { + if (p == null) return out; + for (int i=0; i<indent; i++) + out = out + " "; + out = out + p; + out = out + '\n'; + if (p.child1 != null) { + indent++; + out = out + dumpTree("",p.child1,indent); + if (p.child2 != null) { + out = out + dumpTree("",p.child2,indent); + } + } + return out; + } + + // + // This function will dump the cover of a tree, i.e. the rules + // that cover the tree with a minimal cost. + // + public static void dumpCover(OPT_BURS_TreeNode p, byte goalnt, int indent){ + if (OPT_BURS.DEBUG) { + if (p == null) return; + int rule = STATE(p).rule(goalnt); + VM.sysWrite(STATE(p).getCost(goalnt)+"\t"); + for (int i = 0; i < indent; i++) + VM.sysWrite(' '); + VM.sysWrite(OPT_BURS_Debug.string[rule]+"\n"); + for (int i = 0; i < nts[rule].length; i++) + dumpCover(kids(p,rule,i), nts[rule][i], indent + 1); + } + } + + // caution: MARK should be used in single threaded mode, + public static void mark(OPT_BURS_TreeNode p, byte goalnt) { + if (p == null) return; + int rule = STATE(p).rule(goalnt); + byte act = action[rule]; + if ((act & EMIT_INSTRUCTION) != 0) { + p.setNonTerminal(goalnt); + } + if (rule == 0) { + throw new OPT_OptimizingCompilerException("BURS","rule missing in ", + p.getInstruction().toString(), dumpTree("",p,1)); + } + mark_kids(p,rule); + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-22 15:44:03
|
Revision: 10811 http://svn.sourceforge.net/jikesrvm/?rev=10811&view=rev Author: dgrove-oss Date: 2006-09-22 08:43:37 -0700 (Fri, 22 Sep 2006) Log Message: ----------- consolidate header exceptions into a single awk filter; update filters for new source structure; add check for license statement Modified Paths: -------------- rvmroot/trunk/bin/findDeviantFiles rvmroot/trunk/testing/harness/night-sanity-run Added Paths: ----------- rvmroot/trunk/bin/headerExceptionsFilter.awk Removed Paths: ------------- rvmroot/trunk/bin/noAuthorFilter.awk rvmroot/trunk/bin/noCopyrightFilter.awk rvmroot/trunk/bin/noIdFilter.awk Modified: rvmroot/trunk/bin/findDeviantFiles =================================================================== --- rvmroot/trunk/bin/findDeviantFiles 2006-09-22 15:07:39 UTC (rev 10810) +++ rvmroot/trunk/bin/findDeviantFiles 2006-09-22 15:43:37 UTC (rev 10811) @@ -6,7 +6,7 @@ # A copy of the license is included in the distribution, and is also # available at http://www.opensource.org/licenses/cpl1.0.php # -# (C) Copyright IBM Corp. 2001, 2003 +# (C) Copyright IBM Corp. 2001, 2003, 2006 # # $Id$ # @@ -171,6 +171,9 @@ '\!' -name '*~' \ '\!' -name '.*~' \ '\!' -name '.#*' \ + '\!' -name '.classpath' \ + '\!' -name '.project' \ + '\!' -name 'build.xml' \ -type f -print \ ); @@ -184,15 +187,17 @@ declare -r find_optsSTR="-name .svn -prune -o \! -name *~ \! -name .*~ \! -name .#* -type f -print" #echo "find all plain files without @Author tags" -find . "${find_optsA[@]}" -exec fgrep -c "@author" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noAuthorFilter.awk" > "$out/noAuthor$suffix" -#find . ${find_opts} -exec fgrep -c "@author" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noAuthorFilter.awk" > "$out/noAuthor$suffix" +find . "${find_optsA[@]}" -exec fgrep -c "@author" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/headerExceptionsFilter.awk" > "$out/noAuthor$suffix" #echo "find all plain files without copyright notices" -find . "${find_optsA[@]}" -exec egrep -c "\([cC]\) Copyright|Copyright \xA9|Copyright \([cC]\)" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noCopyrightFilter.awk" > "$out/noCopyright${suffix}" +find . "${find_optsA[@]}" -exec egrep -c "\([cC]\) Copyright|Copyright \xA9|Copyright \([cC]\)" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/headerExceptionsFilter.awk" > "$out/noCopyright${suffix}" #echo "find all plain files without \$Id: tags" -find . "${find_optsA[@]}" -exec fgrep -c '$Id' {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/noIdFilter.awk" > "$out/noId${suffix}" +find . "${find_optsA[@]}" -exec fgrep -c '$Id' {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/headerExceptionsFilter.awk" > "$out/noId${suffix}" +#echo "find all plain files without license statement" +find . "${find_optsA[@]}" -exec egrep -c "The Jikes RVM project is distributed under the Common Public License|MMTk is distributed under the Common Public License" {} \; | "$bin_dir/findMatchedFiles.perl" | awk -f "$bin_dir/headerExceptionsFilter.awk" > "$out/noLicense${suffix}" + # echo "Find all .java files with embedded TAB characters" ## Not currently executed because we may no longer need this. if false; then Copied: rvmroot/trunk/bin/headerExceptionsFilter.awk (from rev 10808, rvmroot/trunk/bin/noAuthorFilter.awk) =================================================================== --- rvmroot/trunk/bin/headerExceptionsFilter.awk (rev 0) +++ rvmroot/trunk/bin/headerExceptionsFilter.awk 2006-09-22 15:43:37 UTC (rev 10811) @@ -0,0 +1,58 @@ +# This file is part of the Jikes RVM project (http://jikesrvm.sourceforge.net). +# The Jikes RVM project is distributed under the Common Public License (CPL). +# A copy of the license is included in the distribution, and is also +# available at http://www.opensource.org/licenses/cpl1.0.php +# +# (C) Copyright IBM Corp. 2001, 2003, 2005, 2006 +# +# $Id$ + +# @author Peter Sweeney +# @date 11/1/2001 +# @modified Steven Augart +# @date June, 2003 + +## Auxiliary AWK program to help out /bin/findDeviantFiles. You should +## never run this directly; to discourage people from doing so, this is not an +## executable file. + +# +# The following is a list of patterns to match files +# that are expempted from project-wide standards on +# header infromation. This list should be kept as +# short as possible, and all exceptions need to be +# approved by the steering committee. +# +/\/tools-external\// { next } + +/\/doc\/userguide\// { next } +/\/MMTk\/doc\// { next } + +/\/testing\/harness\/tests\/javalex\/qb1.lex.ref/ {next} +/\/testing\/harness\/tests\/jBYTEmark\/jBYTEmark.java/ {next} +/\/testing\/harness\/tests\/SPECjbb2000\/SPECjbb./ {next} +/\/testing\/harness\/tests\/pseudojbb\/pseudojbb/ {next} +/\/testing\/harness\/tests\/pseudojbb\/props/ {next} +/\/testing\/harness\/tests\/mauve\/mauve-jikesrvm/ {next} + +/\/tools\/bootImageRunner\/com_ibm_JikesRVM_VM_0005fProcess.h/ { next } +/\/tools\/bootImageWriter\/rvm.security/ { next } +/\/tools\/preprocessor\/testFancy.preprocessor/ { next } +/\/tools\/preprocessor\/testSimple.preprocessor/ { next } +/\/tools\/eclipse\/plugin2\/src\/com\/ibm\/jikesrvm\/eclipse\/ui\/jalapeno.jpg/ { next } + +/\/LICENSE/ { next } +/\/NEWS/ { next } + +/\/TimeLimit.sanity/ { next } +/\/TimeLimit.performance/ { next } + +/\.properties$/ { next } +/\.properties\.sample$/ { next } +/README$/ { next } + +# +# print everything else +# +{ print; } + Deleted: rvmroot/trunk/bin/noAuthorFilter.awk =================================================================== --- rvmroot/trunk/bin/noAuthorFilter.awk 2006-09-22 15:07:39 UTC (rev 10810) +++ rvmroot/trunk/bin/noAuthorFilter.awk 2006-09-22 15:43:37 UTC (rev 10811) @@ -1,62 +0,0 @@ -# This file is part of the Jikes RVM project (http://jikesrvm.sourceforge.net). -# The Jikes RVM project is distributed under the Common Public License (CPL). -# A copy of the license is included in the distribution, and is also -# available at http://www.opensource.org/licenses/cpl1.0.php -# -# (C) Copyright IBM Corp. 2001, 2003, 2005 -# -# $Id$ - -# @author Peter Sweeney -# @date 11/1/2001 -# @modified Steven Augart -# @date June, 2003 - -## Auxiliary AWK program to help out /bin/findDeviantFiles. You should -## never run this directly; to discourage people from doing so, this is not an -## executable file. - -# -# Search for files that don't have a Javadoc @author tag. -# -/\/bin\/classpath.stamp/ { next } - -/\/doc\/userguide\// { next } -/\/etc\/testing\// { next } - -/\/regression\/tests\/javalex\/qb1.lex.ref/ {next} -/\/regression\/tests\/jBYTEmark\/jBYTEmark.java/ {next} -/\/regression\/tests\/SPECjbb2000\/SPECjbb./ {next} -/\/regression\/tests\/pseudojbb\/pseudojbb/ {next} -/\/regression\/tests\/pseudojbb\/props/ {next} -/\/regression\/tests\/mauve\/mauve-jikesrvm/ {next} - -/\/src\/examples\/opttests\/Linpack.java/ { next } - -/\/tools\/bootImageRunner\/com_ibm_JikesRVM_VM_0005fProcess.h/ { next } -/\/src\/tools\/bootImageWriter\/rvm.security/ { next } -/\/src\/tools\/jburg\/COPYRIGHT/ { next } -/\/src\/tools\/jburg/ { next } -/\/src\/tools\/preprocessor\/testFancy.preprocessor/ { next } -/\/src\/tools\/preprocessor\/testSimple.preprocessor/ { next } -/\/src\/tools\/eclipse\/plugin2\/src\/com\/ibm\/jikesrvm\/eclipse\/ui\/jalapeno.jpg/ { next } - -/\/LICENSE/ { next } -/\/NEWS/ { next } -/\/src\/tools\/install\/macros.txt/ { next } - - -/\/ReleaseNotes-/ { next } - -/\/TimeLimit.sanity/ { next } -/\/TimeLimit.performance/ { next } - -/\.properties$/ { next } -/\.properties\.sample$/ { next } -/README$/ { next } - -# -# print everything else -# -{ print; } - Deleted: rvmroot/trunk/bin/noCopyrightFilter.awk =================================================================== --- rvmroot/trunk/bin/noCopyrightFilter.awk 2006-09-22 15:07:39 UTC (rev 10810) +++ rvmroot/trunk/bin/noCopyrightFilter.awk 2006-09-22 15:43:37 UTC (rev 10811) @@ -1,58 +0,0 @@ -# -# This file is part of the Jikes RVM project (http://jikesrvm.sourceforge.net). -# The Jikes RVM project is distributed under the Common Public License (CPL). -# A copy of the license is included in the distribution, and is also -# available at http://www.opensource.org/licenses/cpl1.0.php -# -# (C) Copyright IBM Corp. 2001, 2003, 2004, 2005 -# -# $Id$ - -# @author Peter Sweeney -# @date 11/1/2001 -# @modified Steven Augart -# @date June, 2003 - -## Auxiliary AWK program to help out /bin/findDeviantFiles. You should -## never run this directly; to discourage people from doing so, this is not an -## executable file. -# -# Find files that don't have a copyright notice. -# -/^\.\/etc\/gnu-classpath-on-mac-osx\.patch$/ { next } - -/\/bin\/classpath.stamp/ { next } - -/\/doc\/userguide\// { next } -/\/etc\/testing\// { next } - -/\/regression\/tests\/SPECjbb2000\/SPECjbb./ { next } -/\/regression\/tests\/pseudojbb\/pseudojbb/ {next} -/\/regression\/tests\/pseudojbb\/props/ {next} -/\/regression\/tests\/mauve\/mauve-jikesrvm/ {next} - -/\/tests\/javalex\/qb1.lex.ref/ { next } - -/\/tools\/bootImageRunner\/com_ibm_JikesRVM_VM_0005fProcess.h/ { next } -/\/tools\/bootImageWriter\/rvm.security/ { next } -/\/tools\/jburg\/COPYRIGHT/ { next } -/\/src\/tools\/eclipse\/plugin2\/src\/com\/ibm\/jikesrvm\/eclipse\/ui\/jalapeno.jpg/ { next } - -/\/LICENSE/ { next } -/\/NEWS/ { next } -/\/src\/tools\/install\/macros.txt/ { next } - -/\/ReleaseNotes-/ { next } - -/\/TimeLimit.sanity/ { next } -/\/TimeLimit.performance/ { next } - -/\.properties$/ { next } -/\.properties\.sample$/ { next } -/README$/ { next } -/\.txt$/ { next } - -# -# print everything else -# -/.*/ Deleted: rvmroot/trunk/bin/noIdFilter.awk =================================================================== --- rvmroot/trunk/bin/noIdFilter.awk 2006-09-22 15:07:39 UTC (rev 10810) +++ rvmroot/trunk/bin/noIdFilter.awk 2006-09-22 15:43:37 UTC (rev 10811) @@ -1,56 +0,0 @@ -# -# This file is part of the Jikes RVM project (http://jikesrvm.sourceforge.net). -# The Jikes RVM project is distributed under the Common Public License (CPL). -# A copy of the license is included in the distribution, and is also -# available at http://www.opensource.org/licenses/cpl1.0.php -# -# (C) Copyright IBM Corp. 2001, 2003, 2005 -# -# $Id$ - -# @author Peter Sweeney -# @date 11/1/2001 -# @modified Steven Augart -# @date 6/9/2003 - -## Auxiliary AWK program to help out /bin/findDeviantFiles. You should -## never run this directly; to discourage people from doing so, this is not an -## executable file. -# -# Files that don't have a CVS/RCS $Id tag. -# -/\/bin\/classpath\.stamp/ { next } - -/\/doc\/userguide\// { next } -/\/etc\/testing\// { next } - -/\/regression\/tests\/javalex\/qb1\.lex\.ref/ {next} -/\/regression\/tests\/SPECjbb2000\/SPECjbb./ { next } -/\/regression\/tests\/pseudojbb\/pseudojbb/ {next} -/\/regression\/tests\/pseudojbb\/props/ {next} -/\/regression\/tests\/mauve\/mauve-jikesrvm/ {next} - -/\/src\/tools\/preprocessor\/testFancy\.preprocessor/ { next } -/\/src\/tools\/preprocessor\/testSimple\.preprocessor/ { next } -/\/src\/tools\/eclipse\/plugin2\/src\/com\/ibm\/jikesrvm\/eclipse\/ui\/jalapeno.jpg/ { next } - -/\/tools\/bootImageRunner\/com_ibm_JikesRVM_VM_0005fProcess.h/ { next } -/\/tools\/bootImageWriter\/rvm\.security/ { next } -/\/tools\/jburg\/COPYRIGHT/ { next } - -/\/ReleaseNotes-/ { next } - -/\/TimeLimit\.sanity/ { next } -/\/TimeLimit\.performance/ { next } - -/\.properties$/ { next } -/\.properties\.sample$/ { next } -/README$/ { next } - -/\/LICENSE/ { next } -/\/src\/tools\/install\/macros.txt/ { next } - -# -# print everything else -# -/.*/ Modified: rvmroot/trunk/testing/harness/night-sanity-run =================================================================== --- rvmroot/trunk/testing/harness/night-sanity-run 2006-09-22 15:07:39 UTC (rev 10810) +++ rvmroot/trunk/testing/harness/night-sanity-run 2006-09-22 15:43:37 UTC (rev 10811) @@ -373,6 +373,10 @@ cat $CHECK_DIR/noCopyright.rvm| mail -s "files without a Copyright notice" $RESULT_MAILING_LIST fi + if [[ -s $CHECK_DIR/noLicense.rvm ]]; then + cat $CHECK_DIR/noLicense.rvm| mail -s "files without a License statement" $RESULT_MAILING_LIST + fi + if [[ -s $CHECK_DIR/tabChars.rvm ]]; then cat $CHECK_DIR/tabChars.rvm| mail -s "files with embedded TAB characters" $RESULT_MAILING_LIST fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hi...@us...> - 2006-09-24 02:45:52
|
Revision: 10820 http://svn.sourceforge.net/jikesrvm/?rev=10820&view=rev Author: hindm Date: 2006-09-23 19:45:18 -0700 (Sat, 23 Sep 2006) Log Message: ----------- removed lock on BURS phase (opt compiler is now re-entrant, parallel builds work, but don't show speedup), also some code cleanup Modified Paths: -------------- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_ConvertLIRtoMIR.java rvmroot/trunk/tools/bootImageWriter/BootImageWorker.java rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java Modified: rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_ConvertLIRtoMIR.java =================================================================== --- rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_ConvertLIRtoMIR.java 2006-09-23 03:30:25 UTC (rev 10819) +++ rvmroot/trunk/rvm/src/vm/compilers/optimizing/ir/conversions/lir2mir/OPT_ConvertLIRtoMIR.java 2006-09-24 02:45:18 UTC (rev 10820) @@ -348,15 +348,9 @@ // It isn't verifiable again until after ComplexOperators completes. public void verify(OPT_IR ir) { } - /** - * BURS isn't (yet!) thread safe so each thread must synchronize on a lock - */ - private static final Object BURS_lock = new Object(); - public final void perform (OPT_IR ir) { OPT_Options options = ir.options; OPT_DefUse.recomputeSpansBasicBlock(ir); - synchronized(BURS_lock){ OPT_MinimalBURS mburs = new OPT_MinimalBURS(ir); OPT_NormalBURS burs = new OPT_NormalBURS(ir); for (OPT_BasicBlock bb = ir.firstBasicBlockInCodeOrder(); @@ -403,7 +397,6 @@ } burs.finalizeBlock(bb); } - } } } Modified: rvmroot/trunk/tools/bootImageWriter/BootImageWorker.java =================================================================== --- rvmroot/trunk/tools/bootImageWriter/BootImageWorker.java 2006-09-23 03:30:25 UTC (rev 10819) +++ rvmroot/trunk/tools/bootImageWriter/BootImageWorker.java 2006-09-24 02:45:18 UTC (rev 10820) @@ -19,11 +19,11 @@ public class BootImageWorker extends Thread { public static final int verbose = 0; - static Enumeration _enum; + static Enumeration enum; int id; public static void startup (Enumeration e) { - _enum = e; + enum = e; } public void run () { @@ -31,23 +31,23 @@ int count = 0; while (true) { VM_Type type = null; - synchronized (_enum) { - if (_enum.hasMoreElements()) { - type = (VM_Type) _enum.nextElement(); + synchronized (enum) { + if (enum.hasMoreElements()) { + type = (VM_Type) enum.nextElement(); count++; } } if (type == null) return; - long startTime = 0; + long startTime = 0; if (verbose >= 1) { BootImageWriterMessages.say("Thread " + id + " instantiating type " + count + " " + type); - startTime = System.currentTimeMillis(); - } + startTime = System.currentTimeMillis(); + } type.instantiate(); if (verbose >= 1) { - BootImageWriterMessages.say("Thread " + id + " instantiating type " + count + " " + type + " Time: " + (System.currentTimeMillis() - startTime) + "ms"); - } + BootImageWriterMessages.say("Thread " + id + " instantiating type " + count + " " + type + " Time: " + (System.currentTimeMillis() - startTime) + "ms"); + } } } Modified: rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java =================================================================== --- rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java 2006-09-23 03:30:25 UTC (rev 10819) +++ rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java 2006-09-24 02:45:18 UTC (rev 10820) @@ -51,6 +51,8 @@ * -m <filename> place to put bootimage map * -profile time major phases of bootimage writing * -xclasspath <path> OBSOLETE compatibility aid + * -parallelize=N number of parallel compilation threads we should create, 0=>sequential + * * </pre> * @author Derek Lieber * @version 03 Jan 2000 @@ -62,6 +64,10 @@ public class BootImageWriter extends BootImageWriterMessages implements BootImageWriterConstants { + /** + * Should we try to parallelize the compilation (0 = no, >0 = yes) + * Values >0 give the number compilation threads we should create + */ public static int parallelize = 0; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2006-09-25 02:04:19
|
Revision: 10826 http://svn.sourceforge.net/jikesrvm/?rev=10826&view=rev Author: steveb-oss Date: 2006-09-24 19:04:03 -0700 (Sun, 24 Sep 2006) Log Message: ----------- Minor change for clarity. Use the name "dzmmap()" rather than "mmap()" in the cases where we're actually doing demand zero mmap. The generic mmap calls remain unchanged and the dzmmap implementation is now expressed in terms of the generic one. Modified Paths: -------------- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Memory.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java rvmroot/trunk/MMTk/src/org/mmtk/vm/Memory.java rvmroot/trunk/rvm/src/vm/runtime/VM_Memory.java Modified: rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Memory.java =================================================================== --- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Memory.java 2006-09-25 01:25:54 UTC (rev 10825) +++ rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/Memory.java 2006-09-25 02:04:03 UTC (rev 10826) @@ -103,19 +103,17 @@ } /** - * Maps an area of virtual memory. + * Demand zero mmaps an area of virtual memory. * * @param start the address of the start of the area to be mapped * @param size the size, in bytes, of the area to be mapped * @return 0 if successful, otherwise the system errno */ - public final int mmap(Address start, int size) { - Address result = VM_Memory.mmap(start, Extent.fromIntZeroExtend(size), - VM_Memory.PROT_READ | VM_Memory.PROT_WRITE | VM_Memory.PROT_EXEC, - VM_Memory.MAP_PRIVATE | VM_Memory.MAP_FIXED | VM_Memory.MAP_ANONYMOUS); + public final int dzmmap(Address start, int size) { + Address result = VM_Memory.dzmmap(start, Extent.fromIntZeroExtend(size)); if (result.EQ(start)) return 0; if (result.GT(Address.fromIntZeroExtend(127))) { - VM.sysWrite("mmap with MAP_FIXED on ", start); + VM.sysWrite("demand zero mmap with MAP_FIXED on ", start); VM.sysWriteln(" returned some other address", result); VM.sysFail("mmap with MAP_FIXED has unexpected behavior"); } Modified: rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java 2006-09-25 01:25:54 UTC (rev 10825) +++ rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java 2006-09-25 02:04:03 UTC (rev 10826) @@ -52,7 +52,7 @@ lock.check(100); if (mapped[chunk] == UNMAPPED) { lock.check(101); - int errno = VM.memory.mmap(mmapStart, MMAP_CHUNK_SIZE); + int errno = VM.memory.dzmmap(mmapStart, MMAP_CHUNK_SIZE); lock.check(102); if (errno != 0) { lock.release(); Modified: rvmroot/trunk/MMTk/src/org/mmtk/vm/Memory.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/vm/Memory.java 2006-09-25 01:25:54 UTC (rev 10825) +++ rvmroot/trunk/MMTk/src/org/mmtk/vm/Memory.java 2006-09-25 02:04:03 UTC (rev 10826) @@ -77,13 +77,13 @@ public abstract void setHeapRange(int id, Address start, Address end); /** - * Maps an area of virtual memory. + * Demand zero mmaps an area of virtual memory. * * @param start the address of the start of the area to be mapped * @param size the size, in bytes, of the area to be mapped * @return 0 if successful, otherwise the system errno */ - public abstract int mmap(Address start, int size); + public abstract int dzmmap(Address start, int size); /** * Protects access to an area of virtual memory. Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_Memory.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_Memory.java 2006-09-25 01:25:54 UTC (rev 10825) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_Memory.java 2006-09-25 02:04:03 UTC (rev 10826) @@ -561,7 +561,7 @@ } /** - * Do mmap non-file memory mapping call + * Do generic mmap non-file memory mapping call * @param address Start of address range (Address) * @param size Size of address range * @param prot Protection (int) @@ -580,12 +580,12 @@ * @param size Size of address range * @return Address (of region) if successful; errno (1 to 127) otherwise */ - public static Address mmap(Address address, Extent size) { + public static Address dzmmap(Address address, Extent size) { if (VM.VerifyAssertions) VM._assert(isPageAligned(address) && isPageMultiple(size)); int prot = PROT_READ | PROT_WRITE | PROT_EXEC; - int flag = MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED; - return VM_SysCall.sysMMapErrno(address, size, prot, flag, -1, Offset.zero()); + int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED; + return mmap(address, size, prot, flags); } /** @@ -792,7 +792,7 @@ Extent size = Extent.fromIntZeroExtend(1024 * 1024); int ro = VM_Memory.PROT_READ; Address base = Address.fromIntZeroExtend(0x38000000); - Address addr = VM_Memory.mmap(base, size); + Address addr = VM_Memory.dzmmap(base, size); VM.sysWrite("page size = "); VM.sysWrite(psize); VM.sysWrite("\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2006-09-25 06:17:41
|
Revision: 10828 http://svn.sourceforge.net/jikesrvm/?rev=10828&view=rev Author: steveb-oss Date: 2006-09-24 23:17:19 -0700 (Sun, 24 Sep 2006) Log Message: ----------- Refactored LazyMMapper. Removed "Lazy" from the name since it is not necessarily lazy. Added comments. Added ability to eagerly mmap all MMTk spaces. Added command line option to support this function (defaults to false for now). A number of other minor cleanups relating to mmap. Modified Paths: -------------- rvmroot/trunk/MMTk/src/org/mmtk/plan/Plan.java rvmroot/trunk/MMTk/src/org/mmtk/policy/Space.java rvmroot/trunk/MMTk/src/org/mmtk/utility/Conversions.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/FreeListPageResource.java rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/MonotonePageResource.java rvmroot/trunk/MMTk/src/org/mmtk/utility/options/Options.java rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/DebugUtil.java rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java Added Paths: ----------- rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/Mmapper.java Removed Paths: ------------- rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java Modified: rvmroot/trunk/MMTk/src/org/mmtk/plan/Plan.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/plan/Plan.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/MMTk/src/org/mmtk/plan/Plan.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -157,6 +157,7 @@ Options.metaDataLimit = new MetaDataLimit(); Options.nurserySize = new NurserySize(); Options.variableSizeHeap = new VariableSizeHeap(); + Options.eagerMmapSpaces = new EagerMmapSpaces(); Options.sanityCheck = new SanityCheck(); Options.debugAddress = new DebugAddress(); } @@ -184,6 +185,7 @@ public void postBoot() throws InterruptiblePragma { if (Options.verbose.getValue() > 2) Space.printVMMap(); if (Options.verbose.getValue() > 0) Stats.startAll(); + if (Options.eagerMmapSpaces.getValue()) Space.eagerlyMmapMMTkSpaces(); } /** Modified: rvmroot/trunk/MMTk/src/org/mmtk/policy/Space.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/policy/Space.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/MMTk/src/org/mmtk/policy/Space.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -11,8 +11,10 @@ import org.mmtk.plan.TraceLocal; import org.mmtk.utility.heap.Map; +import org.mmtk.utility.heap.Mmapper; import org.mmtk.utility.heap.PageResource; import org.mmtk.utility.heap.SpaceDescriptor; +import org.mmtk.utility.options.Options; import org.mmtk.utility.Log; import org.mmtk.utility.Constants; @@ -507,6 +509,28 @@ Log.writeln(space.start.plus(space.extent.minus(1))); } } + + /** + * Ensure that all MMTk spaces (all spaces aside from the VM space) + * are mapped. Demand zero map all of them if they are not already + * mapped. + */ + public static void eagerlyMmapMMTkSpaces() throws InterruptiblePragma { + for (int i = 0; i < spaceCount; i++) { + Space space = spaces[i]; + if (space != VM.memory.getVMSpace()) { + if (Options.verbose.getValue() > 2) { + Log.write("Mapping "); + Log.write(space.name); + Log.write(" "); + Log.write(space.start); + Log.write("->"); + Log.writeln(space.start.plus(space.extent.minus(1))); + } + Mmapper.ensureMapped(space.start, space.extent.toInt()>>LOG_BYTES_IN_PAGE); + } + } + } /** * Print out the memory used by all spaces in either megabytes or Modified: rvmroot/trunk/MMTk/src/org/mmtk/utility/Conversions.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/utility/Conversions.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/MMTk/src/org/mmtk/utility/Conversions.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -57,7 +57,7 @@ } public static int bytesToMmapChunksUp(Extent bytes) { - return bytes.plus(LazyMmapper.MMAP_CHUNK_SIZE - 1).toWord().rshl(LazyMmapper.LOG_MMAP_CHUNK_SIZE).toInt(); + return bytes.plus(Mmapper.MMAP_CHUNK_BYTES - 1).toWord().rshl(Mmapper.LOG_MMAP_CHUNK_BYTES).toInt(); } public static int pagesToMmapChunksUp(int pages) { @@ -65,7 +65,7 @@ } public static int addressToMmapChunksDown(Address addr) { - Word chunk = addr.toWord().rshl(LazyMmapper.LOG_MMAP_CHUNK_SIZE); + Word chunk = addr.toWord().rshl(Mmapper.LOG_MMAP_CHUNK_BYTES); return chunk.toInt(); } @@ -85,7 +85,7 @@ } public static int addressToMmapChunksUp(Address addr) { - Word chunk = addr.plus(LazyMmapper.MMAP_CHUNK_SIZE - 1).toWord().rshl(LazyMmapper.LOG_MMAP_CHUNK_SIZE); + Word chunk = addr.plus(Mmapper.MMAP_CHUNK_BYTES - 1).toWord().rshl(Mmapper.LOG_MMAP_CHUNK_BYTES); return chunk.toInt(); } @@ -137,7 +137,7 @@ } public static Address mmapChunksToAddress(int chunk) { - return Word.fromIntZeroExtend(chunk).lsh(LazyMmapper.LOG_MMAP_CHUNK_SIZE).toAddress(); + return Word.fromIntZeroExtend(chunk).lsh(Mmapper.LOG_MMAP_CHUNK_BYTES).toAddress(); } public static Address pageAlign(Address address) { Modified: rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/FreeListPageResource.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/FreeListPageResource.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/FreeListPageResource.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -126,7 +126,7 @@ } } Address rtn = start.plus(Conversions.pagesToBytes(pageOffset)); - LazyMmapper.ensureMapped(rtn, pages); + Mmapper.ensureMapped(rtn, pages); VM.memory.zero(rtn, Conversions.pagesToBytes(pages)); unlock(); return rtn; Deleted: rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -1,163 +0,0 @@ -/* - * This file is part of MMTk (http://jikesrvm.sourceforge.net). - * MMTk is distributed under the Common Public License (CPL). - * A copy of the license is included in the distribution, and is also - * available at http://www.opensource.org/licenses/cpl1.0.php - * - * (C) Copyright Department of Computer Science, - * Australian National University. 2002 - * (C) Copyright IBM Corp. 2002 - */ - -package org.mmtk.utility.heap; - -import org.mmtk.utility.*; -import org.mmtk.utility.Constants; - -import org.mmtk.vm.Lock; -import org.mmtk.vm.VM; - -import org.vmmagic.unboxed.*; -import org.vmmagic.pragma.*; - -/** - * This class implements lazy mmapping of virtual memory. - * - * @author Steve Blackburn - * @version $Revision$ - * @date $Date$ - */ -public final class LazyMmapper implements Constants, Uninterruptible { - public final static String Id = "$Id$"; - - /**************************************************************************** - * - * Public static methods - * - */ - - public static final boolean verbose = false; - public static final Lock lock = VM.newLock("LazyMapper"); - - // There is a monotonicity assumption so that only updates require lock acquisition. - // - public static void ensureMapped(Address start, int pages) { - int startChunk = Conversions.addressToMmapChunksDown(start); - int endChunk = Conversions.addressToMmapChunksUp(start.plus(Conversions.pagesToBytes(pages))); - for (int chunk = startChunk; chunk < endChunk; chunk++) { - if (mapped[chunk] == MAPPED) continue; - Address mmapStart = Conversions.mmapChunksToAddress(chunk); - lock.acquire(); - // might have become MAPPED here - lock.check(100); - if (mapped[chunk] == UNMAPPED) { - lock.check(101); - int errno = VM.memory.dzmmap(mmapStart, MMAP_CHUNK_SIZE); - lock.check(102); - if (errno != 0) { - lock.release(); - Log.write("ensureMapped failed with errno "); Log.write(errno); - Log.write(" on address "); Log.writeln(mmapStart); - if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(false); - } - else { - if (verbose) { - Log.write("mmap succeeded at chunk "); Log.write(chunk); Log.write(" "); Log.write(mmapStart); - Log.write(" with len = "); Log.writeln(MMAP_CHUNK_SIZE); - } - } - lock.check(103); - } - if (mapped[chunk] == PROTECTED) { - lock.check(201); - if (!VM.memory.munprotect(mmapStart, MMAP_CHUNK_SIZE)) { - lock.check(202); - lock.release(); - VM.assertions.fail("LazyMmapper.ensureMapped (unprotect) failed"); - } - else { - if (verbose) { - Log.write("munprotect succeeded at chunk "); Log.write(chunk); Log.write(" "); Log.write(mmapStart); - Log.write(" with len = "); Log.writeln(MMAP_CHUNK_SIZE); - } - } - } - lock.check(301); - mapped[chunk] = MAPPED; - lock.check(302); - lock.release(); - } - - } - - public static void protect(Address start, int pages) { - int startChunk = Conversions.addressToMmapChunksDown(start); - int chunks = Conversions.pagesToMmapChunksUp(pages); - int endChunk = startChunk + chunks; - lock.acquire(); - for (int chunk = startChunk; chunk < endChunk; chunk++) { - if (mapped[chunk] == MAPPED) { - Address mmapStart = Conversions.mmapChunksToAddress(chunk); - if (!VM.memory.mprotect(mmapStart, MMAP_CHUNK_SIZE)) { - lock.release(); - VM.assertions.fail("LazyMmapper.mprotect failed"); - } - else { - if (verbose) { - Log.write("mprotect succeeded at chunk "); Log.write(chunk); Log.write(" "); Log.write(mmapStart); - Log.write(" with len = "); Log.writeln(MMAP_CHUNK_SIZE); - } - } - mapped[chunk] = PROTECTED; - } - else { - if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(mapped[chunk] == PROTECTED); - } - } - lock.release(); - } - - public static boolean addressIsMapped(Address addr) - throws UninterruptiblePragma { - int chunk = Conversions.addressToMmapChunksDown(addr); - return mapped[chunk] == MAPPED; - } - - public static boolean objectIsMapped(ObjectReference object) - throws UninterruptiblePragma { - return addressIsMapped(VM.objectModel.refToAddress(object)); - } - - /**************************************************************************** - * - * Private static methods and variables - */ - final public static byte UNMAPPED = 0; - final public static byte MAPPED = 1; - final public static byte PROTECTED = 2; // mapped but not accessible - private static byte mapped[]; - final public static int LOG_MMAP_CHUNK_SIZE = 20; - final public static int MMAP_CHUNK_SIZE = 1 << LOG_MMAP_CHUNK_SIZE; // the granularity VMResource operates at - //TODO: 64-bit: this is not OK: value does not fit in int, but should, we do not want to create such big array - final private static int MMAP_NUM_CHUNKS = 1 << (Constants.LOG_BYTES_IN_ADDRESS_SPACE - LOG_MMAP_CHUNK_SIZE); - - /** - * Class initializer. This is executed <i>prior</i> to bootstrap - * (i.e. at "build" time). - */ - static { - mapped = new byte[MMAP_NUM_CHUNKS]; - for (int c = 0; c < MMAP_NUM_CHUNKS; c++) { - mapped[c] = UNMAPPED; - } - } - - public static void boot(Address bootStart, int bootSize) { - int startChunk = Conversions.addressToMmapChunksDown(bootStart); - int endChunk = Conversions.addressToMmapChunksDown(bootStart.plus(bootSize)); - for (int i = startChunk; i <= endChunk; i++) - mapped[i] = MAPPED; - } - -} - Copied: rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/Mmapper.java (from rev 10826, rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/LazyMmapper.java) =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/Mmapper.java (rev 0) +++ rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/Mmapper.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -0,0 +1,254 @@ +/* + * This file is part of MMTk (http://jikesrvm.sourceforge.net). + * MMTk is distributed under the Common Public License (CPL). + * A copy of the license is included in the distribution, and is also + * available at http://www.opensource.org/licenses/cpl1.0.php + * + * (C) Copyright Department of Computer Science, + * Australian National University. 2002 + * (C) Copyright IBM Corp. 2002 + */ + +package org.mmtk.utility.heap; + +import org.mmtk.utility.*; +import org.mmtk.utility.Constants; + +import org.mmtk.vm.Lock; +import org.mmtk.vm.VM; + +import org.vmmagic.unboxed.*; +import org.vmmagic.pragma.*; + +/** + * This class implements mmapping and protection of virtual memory. + * + * $Id$ + * + * @author Steve Blackburn + * @version $Revision$ + * @date $Date$ + */ +public final class Mmapper implements Constants, Uninterruptible { + + /**************************************************************************** + * Constants + */ + final public static byte UNMAPPED = 0; + final public static byte MAPPED = 1; + final public static byte PROTECTED = 2; // mapped but not accessible + final public static int LOG_MMAP_CHUNK_BYTES = 20; + final public static int MMAP_CHUNK_BYTES = 1 << LOG_MMAP_CHUNK_BYTES; // the granularity VMResource operates at + //TODO: 64-bit: this is not OK: value does not fit in int, but should, we do not want to create such big array + private final static int MMAP_CHUNK_MASK = MMAP_CHUNK_BYTES - 1; + final private static int MMAP_NUM_CHUNKS = 1 << (Constants.LOG_BYTES_IN_ADDRESS_SPACE - LOG_MMAP_CHUNK_BYTES); + public static final boolean verbose = false; + + /**************************************************************************** + * Class variables + */ + public static final Lock lock = VM.newLock("Mmapper"); + private static byte mapped[]; + + + /**************************************************************************** + * Initialization + */ + + /** + * Class initializer. This is executed <i>prior</i> to bootstrap + * (i.e. at "build" time). + */ + static { + mapped = new byte[MMAP_NUM_CHUNKS]; + for (int c = 0; c < MMAP_NUM_CHUNKS; c++) { + mapped[c] = UNMAPPED; + } + } + + /**************************************************************************** + * Generic mmap and protection functionality + */ + + /** + * Given an address array describing the regions of virtual memory to be used + * by MMTk, demand zero map all of them if they are not already mapped. + * + * @param spaceMap An address array containing a pairs of start and end + * addresses for each of the regions to be mappe3d + */ + public static void eagerlyMmapAllSpaces(AddressArray spaceMap) { + + /*for (int i = 0; i < spaceMap.length() / 2; i++) { + Address regionStart = spaceMap.get(i * 2); + Address regionEnd = spaceMap.get(i * 2 + 1); + Log.write(regionStart); Log.write(" "); Log.writeln(regionEnd); + if (regionEnd.EQ(Address.zero()) || regionStart.EQ(Address.fromIntSignExtend(-1)) ||regionEnd.EQ(Address.fromIntSignExtend(-1))) + break; + if (VM.VERIFY_ASSERTIONS) { + VM.assertions._assert(regionStart.EQ(chunkAlignDown(regionStart))); + VM.assertions._assert(regionEnd.EQ(chunkAlignDown(regionEnd))); + } + int pages = Conversions.bytesToPages(regionEnd.diff(regionStart)); + ensureMapped(regionStart, pages); + }*/ + } + + /** + * Mark a range of pages as having (already) been mapped. This is useful + * where the VM has performed the mapping of the pages itself. + * + * @param start The start of the range to be marked as mapped + * @param bytes The size of the range, in bytes. + */ + public static void markAsMapped(Address start, int bytes) { + int startChunk = Conversions.addressToMmapChunksDown(start); + int endChunk = Conversions.addressToMmapChunksUp(start.plus(bytes)); + for (int i = startChunk; i <= endChunk; i++) + mapped[i] = MAPPED; + } + + /** + * Ensure that a range of pages is mmapped (or equivalent). If the + * pages are not yet mapped, demand-zero map them. Note that mapping + * occurs at chunk granularity, not page granularity.<p> + * + * NOTE: There is a monotonicity assumption so that only updates require lock + * acquisition. + * TODO: Fix the above to support unmapping. + * + * @param start The start of the range to be mapped. + * @param pages The size of the range to be mapped, in pages + */ + public static void ensureMapped(Address start, int pages) { + int startChunk = Conversions.addressToMmapChunksDown(start); + int endChunk = Conversions.addressToMmapChunksUp(start.plus(Conversions.pagesToBytes(pages))); + for (int chunk = startChunk; chunk < endChunk; chunk++) { + if (mapped[chunk] == MAPPED) continue; + Address mmapStart = Conversions.mmapChunksToAddress(chunk); + lock.acquire(); +// Log.writeln(mmapStart); + // might have become MAPPED here + lock.check(100); + if (mapped[chunk] == UNMAPPED) { + lock.check(101); + int errno = VM.memory.dzmmap(mmapStart, MMAP_CHUNK_BYTES); + lock.check(102); + if (errno != 0) { + lock.release(); + Log.write("ensureMapped failed with errno "); Log.write(errno); + Log.write(" on address "); Log.writeln(mmapStart); + if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(false); + } + else { + if (verbose) { + Log.write("mmap succeeded at chunk "); Log.write(chunk); Log.write(" "); Log.write(mmapStart); + Log.write(" with len = "); Log.writeln(MMAP_CHUNK_BYTES); + } + } + lock.check(103); + } + if (mapped[chunk] == PROTECTED) { + lock.check(201); + if (!VM.memory.munprotect(mmapStart, MMAP_CHUNK_BYTES)) { + lock.check(202); + lock.release(); + VM.assertions.fail("Mmapper.ensureMapped (unprotect) failed"); + } + else { + if (verbose) { + Log.write("munprotect succeeded at chunk "); Log.write(chunk); Log.write(" "); Log.write(mmapStart); + Log.write(" with len = "); Log.writeln(MMAP_CHUNK_BYTES); + } + } + } + lock.check(301); + mapped[chunk] = MAPPED; + lock.check(302); + lock.release(); + } + + } + + /** + * Memory protect a range of pages (using mprotect or equivalent). Note + * that protection occurs at chunk granularity, not page granularity. + * + * @param start The start of the range to be protected. + * @param pages The size of the range to be protected, in pages + */ + public static void protect(Address start, int pages) { + int startChunk = Conversions.addressToMmapChunksDown(start); + int chunks = Conversions.pagesToMmapChunksUp(pages); + int endChunk = startChunk + chunks; + lock.acquire(); + for (int chunk = startChunk; chunk < endChunk; chunk++) { + if (mapped[chunk] == MAPPED) { + Address mmapStart = Conversions.mmapChunksToAddress(chunk); + if (!VM.memory.mprotect(mmapStart, MMAP_CHUNK_BYTES)) { + lock.release(); + VM.assertions.fail("Mmapper.mprotect failed"); + } + else { + if (verbose) { + Log.write("mprotect succeeded at chunk "); Log.write(chunk); Log.write(" "); Log.write(mmapStart); + Log.write(" with len = "); Log.writeln(MMAP_CHUNK_BYTES); + } + } + mapped[chunk] = PROTECTED; + } + else { + if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(mapped[chunk] == PROTECTED); + } + } + lock.release(); + } + + /**************************************************************************** + * Utility functions + */ + + /** + * Return true if the given address has been mmapped + * + * @param addr The address in question. + * @return true if the given address has been mmapped + */ + public static boolean addressIsMapped(Address addr) + throws UninterruptiblePragma { + int chunk = Conversions.addressToMmapChunksDown(addr); + return mapped[chunk] == MAPPED; + } + + /** + * Return true if the given address has been mmapped + * + * @param addr The address in question. + * @return true if the given address has been mmapped + */ + public static boolean objectIsMapped(ObjectReference object) + throws UninterruptiblePragma { + return addressIsMapped(VM.objectModel.refToAddress(object)); + } + + /** + * Return a given address rounded up to an mmap chunk size + * + * @param addr The address to be aligned + * @return The given address rounded up to an mmap chunk size + */ + private static Address chunkAlignUp(Address addr) { + return chunkAlignDown(addr.plus(MMAP_CHUNK_MASK)); + } + + /** + * Return a given address rounded down to an mmap chunk size + * + * @param addr The address to be aligned + * @return The given address rounded down to an mmap chunk size + */ + private static Address chunkAlignDown(Address addr) { + return addr.toWord().and(Word.fromInt(MMAP_CHUNK_MASK).not()).toAddress(); + } +} + Modified: rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/MonotonePageResource.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/MonotonePageResource.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/MMTk/src/org/mmtk/utility/heap/MonotonePageResource.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -131,7 +131,7 @@ Address old = cursor; cursor = tmp; unlock(); - LazyMmapper.ensureMapped(old, pages); + Mmapper.ensureMapped(old, pages); VM.memory.zero(old, bytes); return rtn; } @@ -244,6 +244,6 @@ if (ZERO_ON_RELEASE) VM.memory.zero(first, bytes); if (Options.protectOnRelease.getValue()) - LazyMmapper.protect(first, pages); + Mmapper.protect(first, pages); } } Modified: rvmroot/trunk/MMTk/src/org/mmtk/utility/options/Options.java =================================================================== --- rvmroot/trunk/MMTk/src/org/mmtk/utility/options/Options.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/MMTk/src/org/mmtk/utility/options/Options.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -31,6 +31,7 @@ public static DebugAddress debugAddress; public static DummyEnum dummyEnum; public static EagerCompleteSweep eagerCompleteSweep; + public static EagerMmapSpaces eagerMmapSpaces; public static FixedNursery fixedNursery; public static FragmentationStats fragmentationStats; public static FullHeapSystemGC fullHeapSystemGC; Modified: rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/DebugUtil.java =================================================================== --- rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/DebugUtil.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/DebugUtil.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -12,7 +12,7 @@ package com.ibm.JikesRVM.memoryManagers.mmInterface; import org.mmtk.policy.Space; -import org.mmtk.utility.heap.LazyMmapper; +import org.mmtk.utility.heap.Mmapper; import org.mmtk.utility.Constants; import org.mmtk.vm.Memory; @@ -149,7 +149,7 @@ public static boolean mappedVMRef(ObjectReference ref) throws UninterruptiblePragma { - return Space.isMappedObject(ref) && LazyMmapper.objectIsMapped(ref); + return Space.isMappedObject(ref) && Mmapper.objectIsMapped(ref); } public static void dumpRef(ObjectReference ref) throws UninterruptiblePragma { Modified: rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java =================================================================== --- rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java 2006-09-25 02:15:20 UTC (rev 10827) +++ rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java 2006-09-25 06:17:19 UTC (rev 10828) @@ -164,8 +164,8 @@ public static final void boot(VM_BootRecord theBootRecord) throws InterruptiblePragma { int pageSize = VM_Memory.getPagesize(); // Cannot be determined at init-time - LazyMmapper.boot(BOOT_IMAGE_DATA_START, BOOT_IMAGE_DATA_SIZE); - LazyMmapper.boot(BOOT_IMAGE_CODE_START, BOOT_IMAGE_CODE_SIZE); + Mmapper.markAsMapped(BOOT_IMAGE_DATA_START, BOOT_IMAGE_DATA_SIZE); + Mmapper.markAsMapped(BOOT_IMAGE_CODE_START, BOOT_IMAGE_CODE_SIZE); HeapGrowthManager.boot(theBootRecord.initialHeapSize, theBootRecord.maximumHeapSize); DebugUtil.boot(theBootRecord); SelectedPlan.get().boot(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dgr...@us...> - 2006-09-26 21:46:27
|
Revision: 10836 http://svn.sourceforge.net/jikesrvm/?rev=10836&view=rev Author: dgrove-oss Date: 2006-09-26 14:46:04 -0700 (Tue, 26 Sep 2006) Log Message: ----------- require GNU classpath version 0.92 or better (removes support for 0.91) Modified Paths: -------------- rvmroot/trunk/NEWS rvmroot/trunk/bin/jconfigure rvmroot/trunk/config/classpath-version rvmroot/trunk/rvm/src/vm/libSupport/java/lang/VMClassLoader.java Modified: rvmroot/trunk/NEWS =================================================================== --- rvmroot/trunk/NEWS 2006-09-26 17:29:50 UTC (rev 10835) +++ rvmroot/trunk/NEWS 2006-09-26 21:46:04 UTC (rev 10836) @@ -8,6 +8,9 @@ *Jikes RVM 2.4.6 Release Notes (future) ** Highlights +*** The recommended version of GNU classpath for Jikes RVM 2.4.5 is 0.92. + Earlier versions of GNU classpath are not supported. + *** A large scale restructuring of the source tree was performed to prepare for making it easier to develop Jikes RVM using Eclipse. All files except for the Java source to Jikes RVM itself was moved Modified: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/bin/jconfigure 2006-09-26 17:29:50 UTC (rev 10835) +++ rvmroot/trunk/bin/jconfigure 2006-09-26 21:46:04 UTC (rev 10836) @@ -757,7 +757,7 @@ ## Now check for setting more than one RVM_WITH_CLASSPATH variable. local -i sum - let "sum=(RVM_WITH_CLASSPATH_0_91 + RVM_WITH_CLASSPATH_0_92 \ + let "sum=(RVM_WITH_CLASSPATH_0_92 \ + RVM_WITH_CLASSPATH_CVS_HEAD)" if (( sum > 1 )); then croak_nonusage "More than one of the variables RVM_WITH_CLASSPATH_<version> is defined. Your configuration files are inconsistent." @@ -772,7 +772,6 @@ local unk="$(set | sed \ -e '/^RVM_WITH_CLASSPATH_/!d' \ -e '/=0$/d' \ - -e '/^RVM_WITH_CLASSPATH_0_91=/d' \ -e '/^RVM_WITH_CLASSPATH_0_92=/d' \ -e '/^RVM_WITH_CLASSPATH_CVS_HEAD=/d' \ )" @@ -1278,7 +1277,6 @@ ## Classpath versions that might work with Jikes RVM. ## See $RVM_ROOT/config/classpath-version for the gory details. -declare -i RVM_WITH_CLASSPATH_0_91=0 declare -i RVM_WITH_CLASSPATH_0_92=0 declare -i RVM_WITH_CLASSPATH_CVS_HEAD=0 Modified: rvmroot/trunk/config/classpath-version =================================================================== --- rvmroot/trunk/config/classpath-version 2006-09-26 17:29:50 UTC (rev 10835) +++ rvmroot/trunk/config/classpath-version 2006-09-26 21:46:04 UTC (rev 10836) @@ -5,8 +5,7 @@ ## can remove it. ## -sum=$(( ${RVM_WITH_CLASSPATH_0_91-0} + \ - ${RVM_WITH_CLASSPATH_0_92-0} + \ +sum=$(( ${RVM_WITH_CLASSPATH_0_92-0} + \ ${RVM_WITH_CLASSPATH_CVS_HEAD-0} )) if (( sum == 0 )); then Modified: rvmroot/trunk/rvm/src/vm/libSupport/java/lang/VMClassLoader.java =================================================================== --- rvmroot/trunk/rvm/src/vm/libSupport/java/lang/VMClassLoader.java 2006-09-26 17:29:50 UTC (rev 10835) +++ rvmroot/trunk/rvm/src/vm/libSupport/java/lang/VMClassLoader.java 2006-09-26 21:46:04 UTC (rev 10836) @@ -12,17 +12,13 @@ import gnu.classpath.Configuration; import gnu.classpath.SystemProperties; -//-#if !RVM_WITH_CLASSPATH_0_90 import gnu.java.lang.InstrumentationImpl; -//-#endif import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -//-#if !RVM_WITH_CLASSPATH_0_90 import java.lang.instrument.Instrumentation; -//-#endif import java.net.MalformedURLException; import java.net.URL; import java.security.ProtectionDomain; @@ -62,7 +58,6 @@ private static final VM_HashMap bootjars = new VM_HashMap(); - //-#if !RVM_WITH_CLASSPATH_0_90 static { String[] packages = getBootPackages(); @@ -94,7 +89,6 @@ } } } - //-#endif static final Class defineClass(ClassLoader cl, String name, byte[] data, int offset, int len, @@ -227,8 +221,6 @@ static Package getPackage(String name) { return (Package)definedPackages.get(name); } - - static Package[] getPackages() { Package[] packages = new Package[definedPackages.size()]; @@ -298,7 +290,6 @@ return (Class)mapForCL.get(name); } - //-#if !RVM_WITH_CLASSPATH_0_90 static final Instrumentation instrumenter = null; static final Class defineClassWithTransformers(ClassLoader loader, String name, byte[] data, int offset, int len, ProtectionDomain pd) { @@ -314,5 +305,4 @@ return defineClass(loader, name, data, offset, len, pd); } } - //-#endif } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2006-09-27 00:07:15
|
Revision: 10838 http://svn.sourceforge.net/jikesrvm/?rev=10838&view=rev Author: steveb-oss Date: 2006-09-26 17:07:03 -0700 (Tue, 26 Sep 2006) Log Message: ----------- Fixed some minor bugs in debugging code so failure due to stack scan errors will produce more meaningful output. Modified Paths: -------------- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java Modified: rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java =================================================================== --- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java 2006-09-26 21:46:49 UTC (rev 10837) +++ rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ObjectModel.java 2006-09-27 00:07:03 UTC (rev 10838) @@ -109,6 +109,22 @@ mmType.profileCopy(bytes); return to; } + + /** + * Return the size of a given object, in bytes + * + * @param object The object whose size is being queried + * @return The size (in bytes) of the given object. + */ + static int getObjectSize(ObjectReference object) { + Object[] tib = VM_ObjectModel.getTIB(object); + VM_Type type = VM_Magic.objectAsType(tib[TIB_TYPE_INDEX]); + + if (type.isClassType()) + return VM_ObjectModel.bytesRequiredWhenCopied(object, type.asClass()); + else + return VM_ObjectModel.bytesRequiredWhenCopied(object, type.asArray(), VM_Magic.getArrayLength(object)); + } /** * Copy an object to be pointer to by the to address. This is required Modified: rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java =================================================================== --- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java 2006-09-26 21:46:49 UTC (rev 10837) +++ rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java 2006-09-27 00:07:03 UTC (rev 10838) @@ -287,8 +287,9 @@ if (VALIDATE_REFS) { Address ip = ipLoc.loadAddress(); Offset offset = ip.diff(code.toAddress()); + if (offset.sLT(Offset.zero()) || - offset.sGT(Offset.fromIntZeroExtend(1<<24))) { + offset.sGT(Offset.fromIntZeroExtend(ObjectModel.getObjectSize(code)))) { Log.writeln("ERROR: Suspiciously large offset of interior pointer from object base"); Log.write(" object base = "); Log.writeln(code); Log.write(" interior reference = "); Log.writeln(ip); @@ -467,9 +468,9 @@ Log.writeln(thread.contextRegisters.getIPLocation().loadAddress()); } /* skip native code, as it is not (cannot be) moved */ - if (compiledMethodType != VM_CompiledMethod.JNI) { + if (compiledMethodType != VM_CompiledMethod.JNI) codeLocationsPush(code, initialIPLoc); - } else if (verbosity >=3) { + else if (verbosity >=3) { Log.writeln("GC Warning: SKIPPING return address for JNI code"); } } else { /* below top of stack: IP is return address, in prev frame */ @@ -687,10 +688,11 @@ for (Address loc = start; loc.LT(end); loc = loc.plus(BYTES_IN_ADDRESS)) { Log.write(loc); Log.write(" ("); Log.write(loc.diff(start)); + Log.write("): "); ObjectReference value = loc.loadObjectReference(); - Log.write("): "); Log.write(value); Log.write(" "); + Log.flush(); if (verbosity >= 3 && MM_Interface.objectInVM(value) && loc.NE(start) && loc.NE(end) ) MM_Interface.dumpRef(value); else Modified: rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java =================================================================== --- rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java 2006-09-26 21:46:49 UTC (rev 10837) +++ rvmroot/trunk/rvm/src/vm/memoryManagers/JMTk/vmInterface/MM_Interface.java 2006-09-27 00:07:03 UTC (rev 10838) @@ -1027,7 +1027,8 @@ */ public static boolean mightBeTIB(ObjectReference obj) throws InlinePragma, UninterruptiblePragma { - return !obj.isNull() && Space.isImmortal(obj); + return !obj.isNull() && Space.isMappedObject(obj) && Space.isImmortal(obj) + && Space.isMappedObject(ObjectReference.fromObject(VM_ObjectModel.getTIB(obj))); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2006-09-27 04:53:07
|
Revision: 10839 http://svn.sourceforge.net/jikesrvm/?rev=10839&view=rev Author: steveb-oss Date: 2006-09-26 21:52:55 -0700 (Tue, 26 Sep 2006) Log Message: ----------- Fixed a bug which was stopping hardware trap frames from being handled properly during stack scanning. Added assertions to help trap future bugs sooner. Modified Paths: -------------- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_CompiledMethods.java Modified: rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java =================================================================== --- rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java 2006-09-27 00:07:03 UTC (rev 10838) +++ rvmroot/trunk/MMTk/ext/vm/JikesRVM/com/ibm/JikesRVM/mm/mmtk/ScanThread.java 2006-09-27 04:52:55 UTC (rev 10839) @@ -267,10 +267,14 @@ if (processCodeLocations && thread.hardwareExceptionRegisters.inuse) { Address ip = thread.hardwareExceptionRegisters.ip; VM_CompiledMethod compiledMethod = VM_CompiledMethods.findMethodForInstruction(ip); - if (VM.VerifyAssertions) VM._assert(compiledMethod != null); + if (VM.VerifyAssertions) { + VM._assert(compiledMethod != null); + VM._assert(compiledMethod.containsReturnAddress(ip)); + } compiledMethod.setObsolete(false); ObjectReference code = ObjectReference.fromObject(compiledMethod.getEntryCodeArray()); Address ipLoc = thread.hardwareExceptionRegisters.getIPLocation(); + if (VM.VerifyAssertions) VM._assert(ip == ipLoc.loadAddress()); codeLocationsPush(code, ipLoc); } } Modified: rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_CompiledMethods.java =================================================================== --- rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_CompiledMethods.java 2006-09-27 00:07:03 UTC (rev 10838) +++ rvmroot/trunk/rvm/src/vm/compilers/compiledCode/VM_CompiledMethods.java 2006-09-27 04:52:55 UTC (rev 10839) @@ -132,8 +132,8 @@ if (compiledMethod == null || !compiledMethod.isCompiled()) continue; // empty slot - if (compiledMethod.containsReturnAddress(ip)) return compiledMethod; - return compiledMethod; + if (compiledMethod.containsReturnAddress(ip)) + return compiledMethod; } return null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cap...@us...> - 2006-09-27 09:30:48
|
Revision: 10840 http://svn.sourceforge.net/jikesrvm/?rev=10840&view=rev Author: captain5050 Date: 2006-09-27 02:30:21 -0700 (Wed, 27 Sep 2006) Log Message: ----------- Fixes to get Classpath CVS head working again (NB there's a bug in Classpath's jcl.c that needs patching from their end). Moved support for JNI_OnLoad into a native method so that JNI calls work as expected from JNI_OnLoad methods. Modifications to the boot image writer and VM.boot so that certain known fields are populated during boot image write time, thereby avoiding the need to run class initializers in VM.boot. Typically we fail to populate a field value when it's part of the bootstrap JVM and in some way protected. The patch also modifies how we count nullified references in the boot image as previously values that were genuinely null would also be counted as having been nullified by the boot image writer. Modified Paths: -------------- rvmroot/trunk/bin/jconfigure rvmroot/trunk/rvm/src/vm/VM.java rvmroot/trunk/rvm/src/vm/classLoader/VM_Primitive.java rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLink.java rvmroot/trunk/rvm/src/vm/runtime/VM_SysCallMagic.java rvmroot/trunk/tools/bootImageRunner/GenerateInterfaceDeclarations.java rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h rvmroot/trunk/tools/bootImageRunner/sys.C rvmroot/trunk/tools/bootImageRunner/syswrap.C rvmroot/trunk/tools/bootImageWriter/BootImage.java rvmroot/trunk/tools/bootImageWriter/BootImageMap.java rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java Modified: rvmroot/trunk/bin/jconfigure =================================================================== --- rvmroot/trunk/bin/jconfigure 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/bin/jconfigure 2006-09-27 09:30:21 UTC (rev 10840) @@ -3477,7 +3477,9 @@ java/io/FileInputStream java/io/FileDescriptor java/io/VMFile -gnu/java/nio/channels/FileChannelImpl +gnu/java/nio/FileChannelImpl # if Classpath > 0.92 +gnu/java/nio/channels/FileChannelImpl # if Classpath <= 0.92 +gnu/java/nio/VMChannel # Character conversion # @@ -3589,7 +3591,8 @@ java/nio/charset/CoderResult\\\$2 java/util/zip/ZipFile\\\$1 gnu/java/net/loader/URLStreamHandlerCache -gnu/java/nio/VMChannel +gnu/classpath/Pointer32 +gnu/classpath/Pointer64 EOF # the application class loader uses jar classes (which can be loaded or not) @@ -3762,6 +3765,10 @@ [Ljava/lang/Object; [[Ljava/lang/Object; [Ljava/lang/String; + [Ljava/lang/Byte; + [Ljava/lang/Character; + [Ljava/lang/Integer; + [Ljava/lang/Short; [Ljava/lang/Class; [Ljava/lang/reflect/Field; [Ljava/lang/reflect/Method; Modified: rvmroot/trunk/rvm/src/vm/VM.java =================================================================== --- rvmroot/trunk/rvm/src/vm/VM.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/rvm/src/vm/VM.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -213,14 +213,6 @@ runClassInitializer("java.lang.Runtime"); runClassInitializer("java.lang.System"); - runClassInitializer("java.lang.Void"); - runClassInitializer("java.lang.Boolean"); - runClassInitializer("java.lang.Byte"); - runClassInitializer("java.lang.Short"); - runClassInitializer("java.lang.Number"); - runClassInitializer("java.lang.Integer"); - runClassInitializer("java.lang.Long"); - runClassInitializer("java.lang.Float"); runClassInitializer("java.lang.Character"); runClassInitializer("java.util.WeakHashMap"); // Need for ThreadLocal // Turn off security checks; about to hit EncodingManager. @@ -274,10 +266,6 @@ runClassInitializer("java.io.PrintWriter"); // Uses System.getProperty runClassInitializer("java.io.PrintStream"); // Uses System.getProperty - runClassInitializer("java.lang.Math"); /* Load in the javalang library, so - that Math's native trig functions - work. Still can't use them - until JNI is set up. */ runClassInitializer("java.util.SimpleTimeZone"); runClassInitializer("java.util.Locale"); runClassInitializer("java.util.Calendar"); @@ -313,6 +301,7 @@ // if (verboseBoot >= 1) VM.sysWriteln("Booting scheduler"); VM_Scheduler.boot(); + VM_DynamicLibrary.boot(); VM.dynamicClassLoadingEnabled = true; // Create JNI Environment for boot thread. @@ -324,7 +313,13 @@ // Run class intializers that require JNI if (verboseBoot >= 1) VM.sysWriteln("Running late class initializers"); System.loadLibrary("javaio"); + runClassInitializer("java.lang.Math"); + runClassInitializer("gnu.java.nio.VMChannel"); + //-#if RVM_WITH_CLASSPATH_0_92 runClassInitializer("gnu.java.nio.channels.FileChannelImpl"); + //-#else + runClassInitializer("gnu.java.nio.FileChannelImpl"); + //-#endif runClassInitializer("java.io.FileDescriptor"); runClassInitializer("java.util.jar.JarFile"); @@ -333,14 +328,12 @@ VM_HardwarePerformanceMonitors.setUpHPMinfo(); //-#endif - runClassInitializer("java.lang.Double"); runClassInitializer("java.lang.VMDouble"); runClassInitializer("java.util.PropertyPermission"); runClassInitializer("com.ibm.JikesRVM.VM_Process"); runClassInitializer("com.ibm.JikesRVM.classloader.VM_Annotation"); runClassInitializer("java.lang.VMClassLoader"); - runClassInitializer("gnu.java.nio.VMChannel"); - + // Initialize java.lang.System.out, java.lang.System.err, java.lang.System.in VM_FileSystem.initializeStandardStreams(); Modified: rvmroot/trunk/rvm/src/vm/classLoader/VM_Primitive.java =================================================================== --- rvmroot/trunk/rvm/src/vm/classLoader/VM_Primitive.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/rvm/src/vm/classLoader/VM_Primitive.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -153,9 +153,7 @@ stackWords = 1; name = tr.getName(); } else { - if (VM.VerifyAssertions) VM._assert(false); - stackWords = -1; - name = null; + throw new Error("Unknown primitive type " + tr.getName()); } } Modified: rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java =================================================================== --- rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/rvm/src/vm/jni/VM_JNIFunctions.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -5390,7 +5390,7 @@ if (traceJNI) VM.sysWrite("JNI called: GetJavaVM \n"); try { if (traceJNI) VM.sysWriteln(StarStarJavaVM); - Address JavaVM = VM_JNIJavaVM.getJavaVM(); + Address JavaVM = VM_BootRecord.the_boot_record.sysJavaVM; StarStarJavaVM.store(JavaVM); return 0; Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_BootRecord.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -183,12 +183,19 @@ public Address ipRegister; // value to place into IP register public Address tocRegister; // value to place into JTOC register + /** * flag to indicate RVM has completed booting and ready to run Java programs * added by Ton Ngo for JNI support */ int bootCompleted; // use for start up by JNI_CreateJavaVM + /** + * address of JavaVM, used by JNI_OnLoad and JNIEnv.GetJavaVM, + * defined in Sys.C + */ + public Address sysJavaVM; + // Additional RVM entrypoints // /** Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLibrary.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -9,7 +9,6 @@ //$Id$ package com.ibm.JikesRVM; -import com.ibm.JikesRVM.jni.VM_JNIJavaVM; import com.ibm.JikesRVM.util.*; import java.util.Iterator; import org.vmmagic.unboxed.*; @@ -26,9 +25,16 @@ /** * Currently loaded dynamic libraries. */ - private static VM_HashMap dynamicLibraries = new VM_HashMap(); + private static final VM_HashMap dynamicLibraries = new VM_HashMap(); /** + * Add symbol for the boot image runner to find symbols within it. + */ + static void boot() { + dynamicLibraries.put("JikesRVM", new VM_DynamicLibrary()); + } + + /** * The name of the library */ private final String libName; @@ -39,6 +45,19 @@ private final Address libHandler; /** + * Create a dynamic library for the boot image runner + */ + private VM_DynamicLibrary() { + libName = "JikesRVM"; + libHandler = VM_SysCall.sysDlopen(null); + + if (libHandler.isZero()) { + VM.sysWriteln("error loading library: JikesRVM"); + throw new UnsatisfiedLinkError(); + } + } + + /** * Load a dynamic library and maintain it in this object. * @param libraryName library name */ @@ -70,31 +89,51 @@ } libName = libraryName; - try { - callOnLoad(); - } catch (UnsatisfiedLinkError e) { - unload(); - throw e; - } + try { + callOnLoad(); + } catch (UnsatisfiedLinkError e) { + unload(); + throw e; + } if (VM.verboseJNI) { VM.sysWriteln("[Loaded native library: "+libName+"]"); } } + /** + * Called after we've succesfully loaded the shared library + */ private void callOnLoad() { + // Run any JNI_OnLoad functions defined within the library Address JNI_OnLoadAddress = getSymbol("JNI_OnLoad"); if (!JNI_OnLoadAddress.isZero()) { - int version = VM_SysCallMagic.JNI_OnLoad(JNI_OnLoadAddress, VM_JNIJavaVM.getJavaVM(), Address.zero()); - checkJNIVersion(version); - } + int version = runJNI_OnLoad(JNI_OnLoadAddress); + checkJNIVersion(version); + } } + /** + * Method call to run the onload method. Performed as a native + * method as the JNI_OnLoad method may contain JNI calls and we need + * the VM_Processor of the JNIEnv to be correctly populated (this + * wouldn't happen with a VM_SysCall) + * + * @param JNI_OnLoadAddress address of JNI_OnLoad function + * @return the JNI version returned by the JNI_OnLoad function + */ + private static native int runJNI_OnLoad(Address JNI_OnLoadAddress); + + /** + * Check JNI version is ≤ 1.4 and if not throw an + * UnsatisfiedLinkError + * @param version to check + */ private static void checkJNIVersion(int version) { int major = version >>> 16; int minor = version & 0xFFFF; - if (major > 1 || minor > 4) - throw new UnsatisfiedLinkError("Unsupported JNI version: " + major + "." + minor); + if (major > 1 || minor > 4) + throw new UnsatisfiedLinkError("Unsupported JNI version: " + major + "." + minor); } /** Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLink.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLink.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_DynamicLink.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -13,16 +13,22 @@ import org.vmmagic.pragma.*; /** - * Place for VM_CompiledMethod.getDynamicLink() to deposit return information. + * Place for VM_CompiledMethod.getDynamicLink() to deposit return + * information. NB this method is called from within VM_GCMapIterator + * and has to be uninterruptible (ie contain no new bytecodes), + * therefore the fields of this class are non-final). * * @author Bowen Alpern * @author Derek Lieber */ public final class VM_DynamicLink implements VM_BytecodeConstants, Uninterruptible { - private VM_MethodReference methodRef; // method referenced at a call site - private int bytecode; // how method was called at that site + /** method referenced at a call site */ + private VM_MethodReference methodRef; + /** how method was called at that site */ + private int bytecode; + /** set the dynamic link information. */ public void set(VM_MethodReference methodRef, int bytecode) { this.methodRef = methodRef; this.bytecode = bytecode; Modified: rvmroot/trunk/rvm/src/vm/runtime/VM_SysCallMagic.java =================================================================== --- rvmroot/trunk/rvm/src/vm/runtime/VM_SysCallMagic.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/rvm/src/vm/runtime/VM_SysCallMagic.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -340,8 +340,4 @@ public static int gcspySprintf (Address functionAddress, Address str, Address format, Address value) { return 0; } //-#endif - - public static int JNI_OnLoad(Address functionAddress, Address JavaVM, Address reserved) { - return -1; - } } Modified: rvmroot/trunk/tools/bootImageRunner/GenerateInterfaceDeclarations.java =================================================================== --- rvmroot/trunk/tools/bootImageRunner/GenerateInterfaceDeclarations.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/tools/bootImageRunner/GenerateInterfaceDeclarations.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -351,6 +351,9 @@ // extern "C" void sysFOOf(); p("extern \"C\" int " + functionName + "();\n"); } + else if (fieldName.equals("sysJavaVM")) { + p("extern struct JavaVM_ " + fieldName + ";\n"); + } } // emit field initializers @@ -366,10 +369,13 @@ if (suffixIndex > 0) { // java field "xxxIP" corresponds to C function "xxx" String functionName = fieldName.substring(0, suffixIndex); - // e. g., - //sysFOOIP = (int) sysFOO; - p(" br->" + fieldName + " = (intptr_t)" + functionName + ";\n"); + // e. g., + //sysFOOIP = (int) sysFOO; + p(" br->" + fieldName + " = (intptr_t)" + functionName + ";\n"); } + else if (fieldName.equals("sysJavaVM")) { + p(" br->" + fieldName + " = (intptr_t)&" + fieldName + ";\n"); + } } p("}\n"); Modified: rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h =================================================================== --- rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/tools/bootImageRunner/bootImageRunner.h 2006-09-27 09:30:21 UTC (rev 10840) @@ -26,6 +26,7 @@ #endif #include "../../include/cAttributePortability.h" +#include "../../include/jni.h" #if defined(RVM_FOR_32_ADDR) #define VM_Offset int32_t @@ -110,6 +111,7 @@ /* These are defined in sys.C; used in syswrap.C */ extern pthread_key_t VmProcessorKey; extern pthread_key_t IsVmProcessorKey; +extern jint GetEnv(JavaVM *, void **, jint); // Defined in sys.C.; used in libvm.C extern void sysSyncCache(void *, size_t size); Modified: rvmroot/trunk/tools/bootImageRunner/sys.C =================================================================== --- rvmroot/trunk/tools/bootImageRunner/sys.C 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/tools/bootImageRunner/sys.C 2006-09-27 09:30:21 UTC (rev 10840) @@ -33,7 +33,7 @@ #endif #include <stdio.h> -#include <stdlib.h> // getenv() and others +#include <stdlib.h> // getenv() and others #include <unistd.h> #include <string.h> #include <dirent.h> @@ -104,8 +104,6 @@ #define NEED_EXIT_STATUS_CODES #include "InterfaceDeclarations.h" #include "bootImageRunner.h" // In tools/bootImageRunner. -#include "../../include/jni.h" // For the jlong type. - #include "pthread-wrappers.h" #if !defined(RVM_WITHOUT_INTERCEPT_BLOCKING_SYSTEM_CALLS) @@ -257,16 +255,16 @@ per-process environment.) Used, indirectly, by VMSystem.getenv() Taken: VARNAME, name of the envar we want. - BUF, a buffer in which to place the value of that envar + BUF, a buffer in which to place the value of that envar LIMIT, the size of BUF Returned: See the convention documented in loadResultBuf(). - - 0: A return value of 0 indicates that the envar was set with a - zero-length value. (Distinguised from unset, see below) + + 0: A return value of 0 indicates that the envar was set with a + zero-length value. (Distinguised from unset, see below) - -2: Indicates that the envar was unset. This is distinguished - from a zero-length value (see above). + -2: Indicates that the envar was unset. This is distinguished + from a zero-length value (see above). */ extern "C" int sysGetenv(const char *varName, char *buf, int limit) @@ -274,8 +272,8 @@ return loadResultBuf(buf, limit, getenv(varName)); } - - + + /* Copy SRC, a null-terminated string or a NULL pointer, into DEST, a buffer * with LIMIT characters capacity. This is a helper function used by * sysGetEnv() and, later on, to be used by other functions returning strings @@ -304,14 +302,14 @@ static int loadResultBuf(char * dest, int limit, const char *src) { - if ( ! src ) // Is it set? - return -2; // Tell caller it was unset. + if ( ! src ) // Is it set? + return -2; // Tell caller it was unset. for (int i = 0;; ++i) { - if ( i < limit ) // If there's room for the next char of the value ... - dest[i] = src[i]; // ... write it into the destination buffer. - if (src[i] == '\0') - return i; // done, return # of chars needed for SRC + if ( i < limit ) // If there's room for the next char of the value ... + dest[i] = src[i]; // ... write it into the destination buffer. + if (src[i] == '\0') + return i; // done, return # of chars needed for SRC } } @@ -2202,25 +2200,25 @@ sysPrimitiveParseFloat(const char * buf) { if (! buf[0] ) { - fprintf(SysErrorFile, "%s: Got an empty string as a command-line" - " argument that is supposed to be a" - " floating-point number\n", Me); + fprintf(SysErrorFile, "%s: Got an empty string as a command-line" + " argument that is supposed to be a" + " floating-point number\n", Me); exit(EXIT_STATUS_BOGUS_COMMAND_LINE_ARG); } - char *end; // This prototype is kinda broken. It really - // should be char *. But isn't. + char *end; // This prototype is kinda broken. It really + // should be char *. But isn't. errno = 0; float f = (float)strtod(buf, &end); if (errno) { - fprintf(SysErrorFile, "%s: Trouble while converting the" - " command-line argument \"%s\" to a" - " floating-point number: %s\n", Me, buf, strerror(errno)); - exit(EXIT_STATUS_BOGUS_COMMAND_LINE_ARG); + fprintf(SysErrorFile, "%s: Trouble while converting the" + " command-line argument \"%s\" to a" + " floating-point number: %s\n", Me, buf, strerror(errno)); + exit(EXIT_STATUS_BOGUS_COMMAND_LINE_ARG); } if (*end != '\0') { fprintf(SysErrorFile, "%s: Got a command-line argument that" - " is supposed to be a floating-point value," - " but isn't: %s\n", Me, buf); + " is supposed to be a floating-point value," + " but isn't: %s\n", Me, buf); exit(EXIT_STATUS_BOGUS_COMMAND_LINE_ARG); } return f; @@ -2236,18 +2234,18 @@ sysPrimitiveParseInt(const char * buf) { if (! buf[0] ) { - fprintf(SysErrorFile, "%s: Got an empty string as a command-line" - " argument that is supposed to be an integer\n", Me); + fprintf(SysErrorFile, "%s: Got an empty string as a command-line" + " argument that is supposed to be an integer\n", Me); exit(EXIT_STATUS_BOGUS_COMMAND_LINE_ARG); } char *end; errno = 0; long l = strtol(buf, &end, 0); if (errno) { - fprintf(SysErrorFile, "%s: Trouble while converting the" - " command-line argument \"%s\" to an integer: %s\n", - Me, buf, strerror(errno)); - exit(EXIT_STATUS_BOGUS_COMMAND_LINE_ARG); + fprintf(SysErrorFile, "%s: Trouble while converting the" + " command-line argument \"%s\" to an integer: %s\n", + Me, buf, strerror(errno)); + exit(EXIT_STATUS_BOGUS_COMMAND_LINE_ARG); } if (*end != '\0') { fprintf(SysErrorFile, "%s: Got a command-line argument that is supposed to be an integer, but isn't: %s\n", Me, buf); @@ -2502,17 +2500,17 @@ extern "C" void * sysMMapErrno(char *start , size_t length , - int protection , int flags , - int fd , VM_Offset offset) + int protection , int flags , + int fd , VM_Offset offset) { void* res = mmap(start, (size_t)(length), protection, flags, fd, (off_t)offset); if (res == (void *) -1){ #if RVM_FOR_32_ADDR fprintf(stderr, "mmap (%x, %u, %d, %d, %d, %ld) failed with %d: ", - (VM_Address) start, (unsigned) length, protection, flags, fd, offset, errno); + (VM_Address) start, (unsigned) length, protection, flags, fd, offset, errno); #else fprintf(stderr, "mmap (%llx, %u, %d, %d, -1, 0) failed with %d: ", - (VM_Address) start, (unsigned) length, protection, flags, errno); + (VM_Address) start, (unsigned) length, protection, flags, errno); #endif return (void *) errno; }else{ @@ -3472,7 +3470,7 @@ int len; if (GCSPY_TRACE) { fprintf(SysTraceFile, "gcspyDriverEndOutput: driver=%x, len=%d, written=%d\n", - driver, stream_len, stream_count); + driver, stream_len, stream_count); stream_count = 0; /*??*/ gcspy_buffered_output_t *output = @@ -3492,10 +3490,10 @@ fprintf(SysTraceFile, "gcspyDriverInit: driver=%x, id=%d, server=%s, driver=%s, title=%s, blockInfo=%s, %d tiles, used=%s, mainSpace=%d\n", driver, id, serverName, driverName, title, blockInfo, tileNum, - unused, mainSpace); + unused, mainSpace); gcspy_driverInit(driver, id, serverName, driverName, title, blockInfo, tileNum, - unused, mainSpace); + unused, mainSpace); } extern "C" void @@ -3690,7 +3688,7 @@ fprintf(SysTraceFile, "gcspyStartserver: starting thread, wait=%d\n", wait); pthread_t tid; int res = pthread_create(&tid, NULL, - (pthread_start_routine_t) loop, server); + (pthread_start_routine_t) loop, server); if (res != 0) { fprintf(SysErrorFile,"Couldn't create thread.\n"); exit(EXIT_STATUS_MISC_TROUBLE); @@ -3716,12 +3714,12 @@ fprintf(SysTraceFile, "gcspyStreamInit: stream=%x, id=%d, dataType=%d, name=\"%s\", min=%d, max=%d, zero=%d, default=%d, pre=\"%s\", post=\"%s\", presentation=%d, style=%d, maxIndex=%d, colour=%x<%d,%d,%d>\n", stream, id, dataType, streamName, minValue, maxValue, zeroValue, defaultValue, - stringPre, stringPost, presentation, paintStyle, - maxStreamIndex, &colour, colour.red, colour.green, colour.blue); + stringPre, stringPost, presentation, paintStyle, + maxStreamIndex, &colour, colour.red, colour.green, colour.blue); gcspy_streamInit(stream, id, dataType, streamName, minValue, maxValue, zeroValue,defaultValue, - stringPre, stringPost, presentation, paintStyle, - maxStreamIndex, &colour); + stringPre, stringPost, presentation, paintStyle, + maxStreamIndex, &colour); } extern "C" void @@ -3745,3 +3743,172 @@ #endif + +// Fish out an address stored in an instance field of an object. +static void * +getFieldAsAddress(void *objPtr, int fieldOffset) +{ + char *fieldAddress = ((char*) objPtr) + fieldOffset; + return *((void**) fieldAddress); +} + +// Get the JNI environment object from the VM_Processor. +static JNIEnv * +getJniEnvFromVmProcessor(void *vmProcessorPtr) +{ + if (vmProcessorPtr == 0) + return 0; // oops + + // Follow chain of pointers: + // VM_Processor -> VM_Thread -> VM_JNIEnvironment -> thread's native JNIEnv + void *vmThreadPtr = + getFieldAsAddress(vmProcessorPtr, VM_Processor_activeThread_offset); + void *jniEnvironment = + getFieldAsAddress(vmThreadPtr, VM_Thread_jniEnv_offset); + // Convert VM_JNIEnvironment to JNIEnv* expected by native code + // by creating the appropriate interior pointer. + void *jniEnv = ((char*)jniEnvironment + VM_JNIEnvironment_JNIExternalFunctions_offset); + + return (JNIEnv*) jniEnv; +} + +////////////////////////////////////////////////////////////// +// JNI Invocation API functions +////////////////////////////////////////////////////////////// + +/** Destroying the Java VM only makes sense if programs can create a VM + * on-the-fly. Further, as of Sun's Java 1.2, it sitll didn't support + * unloading virtual machine instances. It is supposed to block until all + * other user threads are gone, and then return an error code. + * + * TODO: Implement. + */ +static +jint +DestroyJavaVM(JavaVM UNUSED * vm) +{ + fprintf(stderr, "JikesRVM: Unimplemented JNI call DestroyJavaVM\n"); + return JNI_ERR; +} + +/* "Trying to attach a thread that is already attached is a no-op". We + * implement that common case. (In other words, it works like GetEnv()). + * However, we do not implement the more difficult case of actually attempting + * to attach a native thread that is not currently attached to the VM. + * + * TODO: Implement for actually attaching unattached threads. + */ +static +jint +AttachCurrentThread(JavaVM UNUSED * vm, /* JNIEnv */ void ** penv, /* JavaVMAttachArgs */ void *args) +{ + JavaVMAttachArgs *aargs = (JavaVMAttachArgs *) args; + jint version; + if (args == NULL) { + version = JNI_VERSION_1_1; + } else { + version = aargs->version ; + /* We'd like to handle aargs->name and aargs->group */ + } + + // Handled for us by GetEnv(). We do it here anyway so that we avoid + // printing an error message further along in this function. + if (version > JNI_VERSION_1_4) + return JNI_EVERSION; + + /* If we're already attached, we're gold. */ + register jint retval = GetEnv(vm, penv, version); + if (retval == JNI_OK) + return retval; + else if (retval == JNI_EDETACHED) { + fprintf(stderr, "JikesRVM: JNI call AttachCurrentThread Unimplemented for threads not already attached to the VM\n"); + } else { + fprintf(stderr, "JikesRVM: JNI call AttachCurrentThread failed; returning UNEXPECTED error code %d\n", (int) retval); + } + + // Upon failure: + *penv = NULL; // Make sure we don't yield a bogus one to use. + return retval; +} + +/* TODO: Implement */ +static +jint +DetachCurrentThread(JavaVM UNUSED *vm) +{ + fprintf(stderr, "UNIMPLEMENTED JNI call DetachCurrentThread\n"); + return JNI_ERR; +} + +jint +GetEnv(JavaVM UNUSED *vm, void **penv, jint version) +{ + if (version > JNI_VERSION_1_4) + return JNI_EVERSION; + +#if !defined(RVM_FOR_SINGLE_VIRTUAL_PROCESSOR) + // Return NULL if we are not on a VM pthread + if (pthread_getspecific(IsVmProcessorKey) == NULL) { + *penv = NULL; + return JNI_EDETACHED; + } +#endif + + // Get VM_Processor id. + void* vmProcessor = +#if defined(RVM_FOR_SINGLE_VIRTUAL_PROCESSOR) + VmProcessor; +#else + pthread_getspecific(VmProcessorKey); +#endif + + // Get the JNIEnv from the VM_Processor object + JNIEnv *env = getJniEnvFromVmProcessor(vmProcessor); + + *penv = env; + + return JNI_OK; +} + +/** JNI 1.4 */ +/* TODO: Implement */ +static +jint +AttachCurrentThreadAsDaemon(JavaVM UNUSED * vm, /* JNIEnv */ void UNUSED ** penv, /* JavaVMAttachArgs */ void UNUSED *args) +{ + fprintf(stderr, "Unimplemented JNI call AttachCurrentThreadAsDaemon\n"); + return JNI_ERR; +} + +const struct JNIInvokeInterface_ externalJNIFunctions = { + NULL, // reserved0 + NULL, // reserved1 + NULL, // reserved2 + DestroyJavaVM, + AttachCurrentThread, + DetachCurrentThread, + GetEnv, // JNI 1.2 + AttachCurrentThreadAsDaemon // JNI 1.4 +}; + +struct JavaVM_ sysJavaVM = { + &externalJNIFunctions, // functions + NULL, // reserved0 + NULL, // reserved1 + NULL, // reserved2 + NULL, // pthreadIDTable + NULL, // jniEnvTable +}; + +typedef jint (*JNI_OnLoad)(JavaVM_ *vm, void *reserved __attribute__((unused))); + +/* + * Class: com_ibm_JikesRVM_VM_DynamicLibrary + * Method: runJNI_OnLoad + * Signature: (Lorg/vmmagic/unboxed/Address;)I + */ +extern "C" JNIEXPORT jint JNICALL Java_com_ibm_JikesRVM_VM_1DynamicLibrary_runJNI_1OnLoad (JNIEnv UNUSED *env, + jobject UNUSED clazz, + jobject JNI_OnLoadAddress) { + return ((JNI_OnLoad)JNI_OnLoadAddress)(&sysJavaVM, NULL); +} Modified: rvmroot/trunk/tools/bootImageRunner/syswrap.C =================================================================== --- rvmroot/trunk/tools/bootImageRunner/syswrap.C 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/tools/bootImageRunner/syswrap.C 2006-09-27 09:30:21 UTC (rev 10840) @@ -35,7 +35,6 @@ #include <stdlib.h> #include <dlfcn.h> #include <stdio.h> -#include <jni.h> #include <string.h> #include <sys/poll.h> @@ -43,11 +42,6 @@ #define NEED_VIRTUAL_MACHINE_DECLARATIONS #include "InterfaceDeclarations.h" #include "bootImageRunner.h" - -/* Forward declaration of a function defined later on in this file. Goes into - the JNI dispatch table. */ -static jint GetEnv(JavaVM *, void **, jint); - #include "syswrap.h" ////////////////////////////////////////////////////////////// @@ -82,34 +76,6 @@ } } -// Fish out an address stored in an instance field of an object. -static void * -getFieldAsAddress(void *objPtr, int fieldOffset) -{ - char *fieldAddress = ((char*) objPtr) + fieldOffset; - return *((void**) fieldAddress); -} - -// Get the JNI environment object from the VM_Processor. -JNIEnv * -getJniEnvFromVmProcessor(void *vmProcessorPtr) -{ - if (vmProcessorPtr == 0) - return 0; // oops - - // Follow chain of pointers: - // VM_Processor -> VM_Thread -> VM_JNIEnvironment -> thread's native JNIEnv - void *vmThreadPtr = - getFieldAsAddress(vmProcessorPtr, VM_Processor_activeThread_offset); - void *jniEnvironment = - getFieldAsAddress(vmThreadPtr, VM_Thread_jniEnv_offset); - // Convert VM_JNIEnvironment to JNIEnv* expected by native code - // by creating the appropriate interior pointer. - void *jniEnv = ((char*)jniEnvironment + VM_JNIEnvironment_JNIExternalFunctions_offset); - - return (JNIEnv*) jniEnv; -} - // Arbitrarily consider anything longer than 1 millisecond a "long" wait. // We may want to adjust this so any non-zero wait is considered long. static bool @@ -355,150 +321,8 @@ return ready; } -////////////////////////////////////////////////////////////// -// JNI Invocation API functions -////////////////////////////////////////////////////////////// -/** Destroying the Java VM only makes sense if programs can create a VM - * on-the-fly. Further, as of Sun's Java 1.2, it sitll didn't support - * unloading virtual machine instances. It is supposed to block until all - * other user threads are gone, and then return an error code. - * - * TODO: Implement. - */ -static -jint -DestroyJavaVM(JavaVM UNUSED * vm) -{ - fprintf(stderr, "JikesRVM: Unimplemented JNI call DestroyJavaVM\n"); - return JNI_ERR; -} - -/* "Trying to attach a thread that is already attached is a no-op". We - * implement that common case. (In other words, it works like GetEnv()). - * However, we do not implement the more difficult case of actually attempting - * to attach a native thread that is not currently attached to the VM. - * - * TODO: Implement for actually attaching unattached threads. - */ -static -jint -AttachCurrentThread(JavaVM UNUSED * vm, /* JNIEnv */ void ** penv, /* JavaVMAttachArgs */ void *args) -{ - JavaVMAttachArgs *aargs = (JavaVMAttachArgs *) args; - jint version; - if (args == NULL) { - version = JNI_VERSION_1_1; - } else { - version = aargs->version ; - /* We'd like to handle aargs->name and aargs->group */ - } - - // Handled for us by GetEnv(). We do it here anyway so that we avoid - // printing an error message further along in this function. - if (version > JNI_VERSION_1_4) - return JNI_EVERSION; - - /* If we're already attached, we're gold. */ - register jint retval = GetEnv(vm, penv, version); - if (retval == JNI_OK) - return retval; - else if (retval == JNI_EDETACHED) { - fprintf(stderr, "JikesRVM: JNI call AttachCurrentThread Unimplemented for threads not already attached to the VM\n"); - } else { - fprintf(stderr, "JikesRVM: JNI call AttachCurrentThread failed; returning UNEXPECTED error code %d\n", (int) retval); - } - - // Upon failure: - *penv = NULL; // Make sure we don't yield a bogus one to use. - return retval; -} - - -/* TODO: Implement */ -static -jint -DetachCurrentThread(JavaVM UNUSED *vm) -{ - fprintf(stderr, "UNIMPLEMENTED JNI call DetachCurrentThread\n"); - return JNI_ERR; -} - -static -jint -GetEnv(JavaVM UNUSED *vm, void **penv, jint version) -{ - if (version > JNI_VERSION_1_4) - return JNI_EVERSION; - #if !defined(RVM_FOR_SINGLE_VIRTUAL_PROCESSOR) - // Return NULL if we are not on a VM pthread - if (pthread_getspecific(IsVmProcessorKey) == NULL) { - *penv = NULL; - return JNI_EDETACHED; - } -#endif - - // Get VM_Processor id. - void* vmProcessor = -#if defined(RVM_FOR_SINGLE_VIRTUAL_PROCESSOR) - VmProcessor; -#else - pthread_getspecific(VmProcessorKey); -#endif - - // Get the JNIEnv from the VM_Processor object - JNIEnv *env = getJniEnvFromVmProcessor(vmProcessor); - - *penv = env; - - return JNI_OK; -} - -/** JNI 1.4 */ -/* TODO: Implement */ -static -jint -AttachCurrentThreadAsDaemon(JavaVM UNUSED * vm, /* JNIEnv */ void UNUSED ** penv, /* JavaVMAttachArgs */ void UNUSED *args) -{ - fprintf(stderr, "Unimplemented JNI call AttachCurrentThreadAsDaemon\n"); - return JNI_ERR; -} - -struct JNIInvokeInterface_ externalJNIFunctions = { - NULL, - NULL, - NULL, - DestroyJavaVM, - AttachCurrentThread, - DetachCurrentThread, - GetEnv, // JNI 1.2 - AttachCurrentThreadAsDaemon // JNI 1.4 -}; - - -static -VM_Address -createJavaVM(void) -{ - JavaVM *theJikesRVM = (struct JavaVM_ *) malloc (sizeof(struct JavaVM_)); - theJikesRVM->functions = &externalJNIFunctions; - - return (VM_Address) theJikesRVM; -} - -/* - * Class: VM_JNIFunctions - * Method: createJavaVM - * Signature: ()I - */ -extern "C" JNIEXPORT jint JNICALL -Java_com_ibm_JikesRVM_jni_VM_1JNIJavaVM_createJavaVM(JNIEnv *, jclass) -{ - return createJavaVM(); -} - -#if !defined(RVM_FOR_SINGLE_VIRTUAL_PROCESSOR) // Wrapper for pthread_mutex_lock // If the lock can't be obtained then yield and try again int pthread_mutex_lock(pthread_mutex_t *mutex) Modified: rvmroot/trunk/tools/bootImageWriter/BootImage.java =================================================================== --- rvmroot/trunk/tools/bootImageWriter/BootImage.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/tools/bootImageWriter/BootImage.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -396,13 +396,27 @@ * @param address address of target * @param objField true if this word is an object field (as opposed * to a static, or tib, or some other metadata) + * @param genuineNull true if the value is a genuine null and + * shouldn't be counted as a blanked field */ - public void setNullAddressWord(Address address, boolean objField) { + public void setNullAddressWord(Address address, boolean objField, boolean genuineNull) { setAddressWord(address, Word.zero(), objField); - numNulledReferences += 1; + if (!genuineNull) + numNulledReferences += 1; } /** + * Fill in 4/8 bytes of bootimage, as null object reference. + * + * @param address address of target + * @param objField true if this word is an object field (as opposed + * to a static, or tib, or some other metadata) + */ + public void setNullAddressWord(Address address, boolean objField) { + setNullAddressWord(address, objField, true); + } + + /** * Fill in 8 bytes of bootimage. * * @param address address of target Modified: rvmroot/trunk/tools/bootImageWriter/BootImageMap.java =================================================================== --- rvmroot/trunk/tools/bootImageWriter/BootImageMap.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/tools/bootImageWriter/BootImageMap.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -8,8 +8,9 @@ */ //$Id$ +import java.util.ArrayList; +import java.util.Enumeration; import java.util.Hashtable; -import java.util.ArrayList; import com.ibm.JikesRVM.*; import org.vmmagic.unboxed.*; @@ -40,13 +41,13 @@ private static final Entry nullEntry; /** - * Unique ID value - */ + * Unique ID value + */ private static int idGenerator; /** - * Create unique ID number - */ + * Create unique ID number + */ private static Address newId() { return Address.fromIntZeroExtend(idGenerator++); } @@ -57,7 +58,7 @@ static { keyToEntry = new Hashtable(5000); objectIdToEntry = new ArrayList(5000); - idGenerator = 0; + idGenerator = 0; // predefine "null" object nullEntry = new Entry(newId(), null, Address.zero()); // slot 0 reserved for "null" object entry @@ -175,5 +176,12 @@ } return mapEntry.imageAddress; } + + /** + * @return enumeration of all the entries + */ + public static Enumeration elements() { + return keyToEntry.elements(); + } } Modified: rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java =================================================================== --- rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java 2006-09-27 04:52:55 UTC (rev 10839) +++ rvmroot/trunk/tools/bootImageWriter/BootImageWriter.java 2006-09-27 09:30:21 UTC (rev 10840) @@ -669,7 +669,7 @@ if (imageAddress.EQ(OBJECT_NOT_PRESENT)) { // object not part of bootimage: install null reference if (verbose >= 2) traceContext.traceObjectNotInBootImage(); - bootImage.setNullAddressWord(jtocImageAddress.plus(jtocOff), false); + bootImage.setNullAddressWord(jtocImageAddress.plus(jtocOff), false, false); } else { bootImage.setAddressWord(jtocImageAddress.plus(jtocOff), imageAddress.toWord(), false); @@ -1204,24 +1204,47 @@ jdkFieldAcc = getJdkFieldAccessor(jdkType, j, STATIC_FIELD); if (jdkFieldAcc == null) { + // we failed to get a reflective field accessors if (jdkType != null) { - if (verbose >= 2) traceContext.push(rvmFieldType.toString(), - jdkType.getName(), rvmFieldName); - if (verbose >= 2) traceContext.traceFieldNotInHostJdk(); - if (verbose >= 2) traceContext.pop(); + // we know the type - probably a private field of a java.lang class + if(!copyKnownClasspathStaticField(jdkType, + rvmFieldName, + rvmFieldType, + rvmFieldOffset + )) { + // we didn't know the field so nullify + if (verbose >= 2) { + traceContext.push(rvmFieldType.toString(), + jdkType.getName(), rvmFieldName); + traceContext.traceFieldNotInHostJdk(); + traceContext.pop(); + } + VM_Statics.setSlotContents(rvmFieldOffset, 0); + if (!VM.runningTool) + bootImage.countNulledReference(); + } } - VM_Statics.setSlotContents(rvmFieldOffset, 0); - if (!VM.runningTool) - bootImage.countNulledReference(); + else { + // no accessor and we don't know the type so nullify + if (verbose >= 2) { + traceContext.push(rvmFieldType.toString(), + rvmFieldType.toString(), rvmFieldName); + traceContext.traceFieldNotInHostJdk(); + traceContext.pop(); + } + VM_Statics.setSlotContents(rvmFieldOffset, 0); + if (!VM.runningTool) + bootImage.countNulledReference(); + } continue; } if (! Modifier.isStatic(jdkFieldAcc.getModifiers())) { - if (verbose >= 2) traceContext.push(rvmFieldType.toString(), - jdkType.getName(), rvmFieldName); - if (verbose >= 2) traceContext.traceFieldNotStaticInHostJdk(); - if (verbose >= 2) traceContext.pop(); - VM_Statics.setSlotContents(rvmFieldOffset, 0); + if (verbose >= 2) traceContext.push(rvmFieldType.toString(), + jdkType.getName(), rvmFieldName); + if (verbose >= 2) traceContext.traceFieldNotStaticInHostJdk(); + if (verbose >= 2) traceContext.pop(); + VM_Statics.setSlotContents(rvmFieldOffset, 0); if (!VM.runningTool) bootImage.countNulledReference(); continue; @@ -1483,14 +1506,14 @@ if (imageAddress.EQ(OBJECT_NOT_PRESENT)) { // object not part of bootimage: install null reference if (verbose >= 2) traceContext.traceObjectNotInBootImage(); - bootImage.setNullAddressWord(arrayImageAddress.plus(i << LOG_BYTES_IN_ADDRESS), true); + bootImage.setNullAddressWord(arrayImageAddress.plus(i << LOG_BYTES_IN_ADDRESS), true, false); } else { bootImage.setAddressWord(arrayImageAddress.plus(i << LOG_BYTES_IN_ADDRESS), imageAddress.toWord(), true); } if (verbose >= 2) traceContext.pop(); } else { - bootImage.setNullAddressWord(arrayImageAddress.plus(i << LOG_BYTES_IN_ADDRESS), true); + bootImage.setNullAddressWord(arrayImageAddress.plus(i << LOG_BYTES_IN_ADDRESS), true, true); } } } @@ -1538,8 +1561,9 @@ return copyMagicArrayToBootImage(backing, rvmType.asArray(), allocOnly, overwriteAddress, parentObject); } - if (rvmType.isMagicType()) { - VM.sysWriteln("Unhandled copying of magic type: " + rvmType.getDescriptor().toString()); + if (rvmType.isMagicType()) { + VM.sysWriteln("Unhandled copying of magic type: " + rvmType.getDescriptor().toString() + + " in object of type " + parentObject.getClass().toString()); VM.sysFail("incomplete boot image support"); } @@ -1577,18 +1601,24 @@ Field jdkFieldAcc = getJdkFieldAccessor(jdkType, i, INSTANCE_FIELD); if (jdkFieldAcc == null) { - if (verbose >= 2) traceContext.push(rvmFieldType.toString(), - jdkType.getName(), rvmFieldName); - if (verbose >= 2) traceContext.traceFieldNotInHostJdk(); - if (verbose >= 2) traceContext.pop(); - if (rvmFieldType.isPrimitiveType()) - switch (rvmField.getType().getSize()) { + // Field not found via reflection + if (!copyKnownClasspathInstanceField(jdkObject, rvmFieldName, rvmFieldType, rvmFieldAddress)) { + // Field wasn't a known Classpath field so write null + if (verbose >= 2) traceContext.push(rvmFieldType.toString(), + jdkType.getName(), rvmFieldName); + if (verbose >= 2) traceContext.traceFieldNotInHostJdk(); + if (verbose >= 2) traceContext.pop(); + if (rvmFieldType.isPrimitiveType()) { + switch (rvmField.getType().getSize()) { case 4: bootImage.setFullWord(rvmFieldAddress, 0); break; case 8: bootImage.setDoubleWord(rvmFieldAddress, 0L); break; default:fail("unexpected field type: " + rvmFieldType); break; + } } - else - bootImage.setNullAddressWord(rvmFieldAddress, true); + else { + bootImage.setNullAddressWord(rvmFieldAddress, true, false); + } + } continue; } @@ -1641,20 +1671,20 @@ Object value = jdkFieldAcc.get(jdkObject); if (!allocOnly) { if (value != null) { - Class jdkClass = jdkFieldAcc.getDeclaringClass(); - if (verbose >= 2) traceContext.push(value.getClass().getName(), - jdkClass.getName(), - jdkFieldAcc.getName()); - Address imageAddress = copyToBootImage(value, allocOnly, Address.max(), jdkObject); - if (imageAddress.EQ(OBJECT_NOT_PRESENT)) { - // object not part of bootimage: install null reference - if (verbose >= 2) traceContext.traceObjectNotInBootImage(); - bootImage.setNullAddressWord(rvmFieldAddress, true); - } else + Class jdkClass = jdkFieldAcc.getDeclaringClass(); + if (verbose >= 2) traceContext.push(value.getClass().getName(), + jdkClass.getName(), + jdkFieldAcc.getName()); + Address imageAddress = copyToBootImage(value, allocOnly, Address.max(), jdkObject); + if (imageAddress.EQ(OBJECT_NOT_PRESENT)) { + // object not part of bootimage: install null reference + if (verbose >= 2) traceContext.traceObjectNotInBootImage(); + bootImage.setNullAddressWord(rvmFieldAddress, true, false); + } else bootImage.setAddressWord(rvmFieldAddress, imageAddress.toWord(), !rvmField.isFinal()); - if (verbose >= 2) traceContext.pop(); + if (verbose >= 2) traceContext.pop(); } else { - bootImage.setNullAddressWord(rvmFieldAddress, true); + bootImage.setNullAddressWord(rvmFieldAddress, true, true); } } } @@ -1797,6 +1827,266 @@ return mapEntry.imageAddress; } + /** + * If we can't find a field via reflection we may still determine + * and copy a value because we know the internals of Classpath. + * @param jdkType the class containing the field + * @param rvmFieldName the name of the field + * @param rvmFieldType the type reference of the field + */ + private static boolean copyKnownClasspathStaticField(Class jdkType, String rvmFieldName, VM_TypeReference rvmFieldType, Offset rvmFieldOffset) + throws IllegalAccessException + { + // java.lang.Number + if ((jdkType.equals(java.lang.Number.class)) && + (rvmFieldName.equals("digits")) && + (rvmFieldType.isArrayType())) { + char java_lang_Number_digits[] = new char[]{ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', + 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', + 'u', 'v', 'w', 'x', 'y', 'z' + }; + VM_Statics.setSlotContents(rvmFieldOffset, java_lang_Number_digits); + return true; + } + else if (jdkType.equals(java.lang.Number.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // java.lang.Boolean + else if (jdkType.equals(java.lang.Boolean.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // java.lang.Byte + else if ((jdkType.equals(java.lang.Byte.class)) && + (rvmFieldName.equals("byteCache")) && + (rvmFieldType.isArrayType())) { + Byte java_lang_Byte_byteCache[] = new Byte[256]; + // Populate table, although unnecessary + for(int i=-128; i < 128; i++) { + Byte value = new Byte((byte)i); // NB Byte.valueOf appears in Java 1.5 + BootImageMap.findOrCreateEntry(value); + java_lang_Byte_byteCache[128+i] = value; + } + VM_Statics.setSlotContents(rvmFieldOffset, java_lang_Byte_byteCache); + return true; + } + else if ((jdkType.equals(java.lang.Byte.class)) && + (rvmFieldName.equals("MIN_CACHE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, -128); + return true; + } + else if ((jdkType.equals(java.lang.Byte.class)) && + (rvmFieldName.equals("MAX_CACHE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 127); + return true; + } + else if ((jdkType.equals(java.lang.Byte.class)) && + (rvmFieldName.equals("SIZE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 8); // NB not present in Java 1.4 + return true; + } + else if (jdkType.equals(java.lang.Byte.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // java.lang.Character - there are many static fields that need + // initializing in Character, so we leave it for VM.boot + + // java.lang.Double + else if ((jdkType.equals(java.lang.Double.class)) && + (rvmFieldName.equals("SIZE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 64); // NB not present in Java 1.4 + return true; + } + else if (jdkType.equals(java.lang.Double.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // java.lang.Float + else if ((jdkType.equals(java.lang.Float.class)) && + (rvmFieldName.equals("SIZE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 32); // NB not present in Java 1.4 + return true; + } + else if (jdkType.equals(java.lang.Float.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // java.lang.Integer + else if ((jdkType.equals(java.lang.Integer.class)) && + (rvmFieldName.equals("intCache")) && + (rvmFieldType.isArrayType())) { + Integer java_lang_Integer_intCache[] = new Integer[256]; + // Populate table, although unnecessary + for(int i=-128; i < 128; i++) { + Integer value = new Integer(i); // NB Integer.valueOf(i) appears in Java 1.5 + java_lang_Integer_intCache[128+i] = value; + } + VM_Statics.setSlotContents(rvmFieldOffset, java_lang_Integer_intCache); + return true; + } + else if ((jdkType.equals(java.lang.Integer.class)) && + (rvmFieldName.equals("MIN_CACHE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, -128); + return true; + } + else if ((jdkType.equals(java.lang.Integer.class)) && + (rvmFieldName.equals("MAX_CACHE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 127); + return true; + } + else if ((jdkType.equals(java.lang.Integer.class)) && + (rvmFieldName.equals("SIZE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 32); // NB not present in Java 1.4 + return true; + } + else if (jdkType.equals(java.lang.Integer.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // java.lang.Long + else if ((jdkType.equals(java.lang.Long.class)) && + (rvmFieldName.equals("SIZE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 64); // NB not present in Java 1.4 + return true; + } + else if (jdkType.equals(java.lang.Long.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // java.lang.Short + else if ((jdkType.equals(java.lang.Short.class)) && + (rvmFieldName.equals("shortCache")) && + (rvmFieldType.isArrayType())) { + Short java_lang_Short_shortCache[] = new Short[256]; + // Populate table, although unnecessary + for(short i=-128; i < 128; i++) { + Short value = new Short(i); // NB Short.valueOf(i) appears in Java 1.5 + BootImageMap.findOrCreateEntry(value); + java_lang_Short_shortCache[128+i] = value; + } + VM_Statics.setSlotContents(rvmFieldOffset, java_lang_Short_shortCache); + return true; + } + else if ((jdkType.equals(java.lang.Short.class)) && + (rvmFieldName.equals("MIN_CACHE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, -128); + return true; + } + else if ((jdkType.equals(java.lang.Short.class)) && + (rvmFieldName.equals("MAX_CACHE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 127); + return true; + } + else if ((jdkType.equals(java.lang.Short.class)) && + (rvmFieldName.equals("SIZE")) && + (rvmFieldType.isIntType())) { + VM_Statics.setSlotContents(rvmFieldOffset, 16); // NB not present in Java 1.4 + return true; + } + else if (jdkType.equals(java.lang.Short.class)) { + throw new Error("Unknown field in " + jdkType + " " + rvmFieldName + " " + rvmFieldType); + } + // Unknown field + else { + return false; + } + } + + /** + * If we can't find a field via reflection we may still determine + * and copy a value because we know the internals of Classpath. + * @param jdkObject the object containing the field + * @param rvmFieldName the name of the field + * @param rvmFieldType the type reference of the field + * @param rvmFieldAddress + */ + private static boolean copyKnownClasspathInstanceField(Object jdkObject, String rvmFieldName, VM_TypeReference rvmFieldType, Address rvmFieldAddress) + throws IllegalAccessException + { + if ((jdkObject instanceof java.lang.String) && + (rvmFieldName.equals("cachedHashCode")) && + (rvmFieldType.isIntType()) + ) { + // Populate String's cachedHashCode value + bootImage.setFullWord(rvmFieldAddress, ((String)jdkObject).hashCode()); + return true; + } + else if (jdkObject instanceof java.lang.Class) { + Object value = null; + String fieldName = null; + boolean fieldIsFinal = false; + if(rvmFieldName.equals("type")) { + // Looks as though we're trying to write the type for Class, + // lets go over the common ones + if (jdkObject == java.lang.Boolean.TYPE) { + value = VM_Type.BooleanType; + } + else if (jdkObject == java.lang.Byte.TYPE) { + value = VM_Type.ByteType; + } + else if (jdkObject == java.lang.Character.TYPE) { + value = VM_Type.CharType; + } + else if (jdkObject == java.lang.Double.TYPE) { + value = VM_Type.DoubleType; + } + else if (jdkObject == java.lang.Float.TYPE) { + value = VM_Type.FloatType; + } + else if (jdkObject == java.lang.Integer.TYPE) { + value = VM_Type.IntType; + } + else if (jdkObject == java.lang.Long.TYPE) { + value = VM_Type.LongType; + } + else if (jdkObject == java.lang.Short.TYPE) { + value = VM_Type.ShortType; + } + else if (jdkObject == java.lang.Void.TYPE) { + value = VM_Type.VoidType; + } + else { + String typeName = "L" + jdkObject.getClass().getName().replace('.','/') + ";"; + value = VM_TypeReference.findOrCreate(typeName).peekResolvedType(); + if (value == null) { + throw new Error("Failed to populate Class.type for " + typeName); + } + } + fieldName = "type"; + fieldIsFinal = true; + } + if ((fieldName != null) && (value != null)) { + if (verbose >= 2) traceContext.push(value.getClass().getName(), + "java.lang.Class", + fieldName); + Address imageAddress = BootImageMap.findOrCreateEntry(value).imageAddress; + if (imageAddress.EQ(OBJECT_NOT_PRESENT)) { + // object not part of bootimage: install null reference + if (verbose >= 2) traceContext.traceObjectNotInBootImage(); + bootImage.setNullAddressWord(rvmFieldAddress, true, false); + } else + bootImage.setAddressWord(rvmFieldAddress, imageAddress.toWord(), !fieldIsFinal); + if (verbose >= 2) traceContext.pop(); + return true; + } else { + // Unknown Class field or value for type + return false; + } + } + else { + // Unknown field + return false; + } + } + private static final int OBJECT_HEADER_SIZE = 8; private static Hashtable traversed = null; private static final Integer VISITED = new Integer(0); @@ -2232,8 +2522,10 @@ VM_Type type = findTypeOfTIBSlot(jtocOff); details = (type == null) ? "?" : type.toString(); break; - + default: + fail("Unrecognized static description for RVM.map " + + VM_Statics.getSlotDescriptionAsString(jtocSlot)); break; } @@ -2265,12 +2557,34 @@ } } + // Extra information on the layout of objects in the boot image + if (false) { + out.println(); + out.println("Object Map"); + out.println("----------"); + out.println(" address type"); + out.println(" ------- ------"); + out.println(); + + for (Enumeration e = BootImageMap.elements() ; e.hasMoreElements() ;) { + BootImageMap.Entry entry = (BootImageMap.Entry)e.nextElement(); + Address data = entry.imageAddress; + out.println(". . data " + VM.addressAsHexString(data) + + " " + entry.jdkObject.getClass()); + } + } + out.println(); out.println("EOF-EOF-EOF"); out.flush(); out.close(); } + /** + * Read an integer value from the JTOC + * @param jtocOff offset in JTOC + * @return integer at offset + */ private static int getIVal(Offset jtocOff) { int ival; if (VM.BuildFor32Addr) { @@ -2281,9 +2595,14 @@ return ival; } + /** + * Read a reference from the JTOC + * @param jtocOff offset in JTOC + * @param fatalIfNotFound whether to terminate on failure + * @return address of object or zero if not found + */ private static Address getReferenceAddr(Offset jtocOff, boolean fatalIfNotFound) { int ival = getIVal(jtocOff); - Address addr = Address.fromIntZeroExtend(ival); if (ival != 0) { Object jdkObject = BootImageMap.getObject(ival); if (jdkObject instanceof VM_CodeArray) { @@ -2299,8 +2618,10 @@ } else if (jdkObject instanceof WordArray) { jdkObject = ((WordArray)jdkObject).getBacking(); } - addr = BootImageMap.getImageAddress(jdkObject, fatalIfNotFound); + ... [truncated message content] |