# HG changeset patch # User rottenha # Date 1297682373 28800 # Node ID 54df4702df97802debd5a1f0afb46c9876857472 # Parent 762bc029de50bc982b15c9a1151afa4ecf49e603# Parent 7aa1f99ca3012ef3321878cbe84f09a2096fed9f Merge diff -r 762bc029de50 -r 54df4702df97 make/windows/create.bat --- a/make/windows/create.bat Fri Feb 11 15:32:03 2011 -0800 +++ b/make/windows/create.bat Mon Feb 14 03:19:33 2011 -0800 @@ -1,6 +1,6 @@ @echo off REM -REM Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +REM Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. REM REM This code is free software; you can redistribute it and/or modify it @@ -50,9 +50,7 @@ :testit -cl 2>&1 | grep "IA-64" >NUL -if %errorlevel% == 0 goto isia64 -cl 2>&1 | grep "AMD64" >NUL +cl 2>&1 | grep "x64" >NUL if %errorlevel% == 0 goto amd64 set ARCH=x86 set BUILDARCH=i486 @@ -64,12 +62,6 @@ set BUILDARCH=amd64 set Platform_arch=x86 set Platform_arch_model=x86_64 -goto done -:isia64 -set ARCH=ia64 -set BUILDARCH=ia64 -set Platform_arch=ia64 -set Platform_arch_model=ia64 :done setlocal @@ -81,7 +73,7 @@ REM Set HotSpotWorkSpace to the directy two steps above this script for %%i in ("%~dp0..") do ( set HotSpotWorkSpace=%%~dpi) set HotSpotBuildRoot=%HotSpotWorkSpace%build -set HotSpotBuildSpace=%HotSpotBuildRoot%\vs +set HotSpotBuildSpace=%HotSpotBuildRoot%\vs-%BUILDARCH% set HotSpotJDKDist=%1 @@ -89,9 +81,9 @@ for /F %%i in ('sh %HotSpotWorkSpace%/make/windows/get_msc_ver.sh') do set %%i echo ************************************************************** -set ProjectFile=jvm.vcproj +set ProjectFile=%HotSpotBuildSpace%\jvm.vcproj if "%MSC_VER%" == "1200" ( -set ProjectFile=jvm.dsp +set ProjectFile=%HotSpotBuildSpace%\jvm.dsp echo Will generate VC6 project {unsupported} ) else ( if "%MSC_VER%" == "1400" ( @@ -163,7 +155,7 @@ ) REM force regneration of ProjectFile -if exist %HotSpotBuildSpace%\%ProjectFile% del %HotSpotBuildSpace%\%ProjectFile% +if exist %ProjectFile% del %ProjectFile% for /D %%i in (compiler1, compiler2, tiered, core, kernel) do ( echo -- %%i -- @@ -182,6 +174,7 @@ echo BUILDARCH=%BUILDARCH% >> %HotSpotBuildSpace%\%%i\local.make echo Platform_arch=%Platform_arch% >> %HotSpotBuildSpace%\%%i\local.make echo Platform_arch_model=%Platform_arch_model% >> %HotSpotBuildSpace%\%%i\local.make +echo MSC_VER=%MSC_VER% >> %HotSpotBuildSpace%\%%i\local.make for /D %%j in (debug, fastdebug, product) do ( if NOT EXIST %HotSpotBuildSpace%\%%i\%%j mkdir %HotSpotBuildSpace%\%%i\%%j @@ -196,7 +189,7 @@ pushd %HotSpotBuildRoot% REM It doesn't matter which variant we use here, "compiler1" is as good as any of the others - we need the common variables -nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile LOCAL_MAKE=%HotSpotBuildSpace%\compiler1\local.make %HotSpotBuildRoot%/%ProjectFile% +nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile LOCAL_MAKE=%HotSpotBuildSpace%\compiler1\local.make %ProjectFile% popd diff -r 762bc029de50 -r 54df4702df97 make/windows/makefiles/compile.make --- a/make/windows/makefiles/compile.make Fri Feb 11 15:32:03 2011 -0800 +++ b/make/windows/makefiles/compile.make Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -141,9 +141,6 @@ !endif !endif -# Add what version of the compiler we think this is to the compile line -CPP_FLAGS=$(CPP_FLAGS) /D "MSC_VER=$(MSC_VER)" - # By default, we do not want to use the debug version of the msvcrt.dll file # but if MFC_DEBUG is defined in the environment it will be used. MS_RUNTIME_OPTION = /MD diff -r 762bc029de50 -r 54df4702df97 make/windows/makefiles/projectcreator.make --- a/make/windows/makefiles/projectcreator.make Fri Feb 11 15:32:03 2011 -0800 +++ b/make/windows/makefiles/projectcreator.make Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -36,8 +36,6 @@ $(WorkSpace)\src\share\tools\ProjectCreator\DirectoryTree.java \ $(WorkSpace)\src\share\tools\ProjectCreator\DirectoryTreeNode.java \ $(WorkSpace)\src\share\tools\ProjectCreator\FileFormatException.java \ - $(WorkSpace)\src\share\tools\ProjectCreator\Macro.java \ - $(WorkSpace)\src\share\tools\ProjectCreator\MacroDefinitions.java \ $(WorkSpace)\src\share\tools\ProjectCreator\ProjectCreator.java \ $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatform.java \ $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC6.java \ @@ -50,6 +48,10 @@ # This is only used internally ProjectCreatorIncludesPRIVATE=\ + -relativeInclude src\closed\share\vm \ + -relativeInclude src\closed\os\windows\vm \ + -relativeInclude src\closed\os_cpu\windows_$(Platform_arch)\vm \ + -relativeInclude src\closed\cpu\$(Platform_arch)\vm \ -relativeInclude src\share\vm \ -relativeInclude src\share\vm\prims \ -relativeInclude src\os\windows\vm \ @@ -84,7 +86,7 @@ -buildBase $(HOTSPOTBUILDSPACE)\%f\%b \ -startAt src \ -compiler $(VcVersion) \ - -projectFileName $(HOTSPOTBUILDROOT)\$(ProjectFile) \ + -projectFileName $(HOTSPOTBUILDSPACE)\$(ProjectFile) \ -jdkTargetRoot $(HOTSPOTJDKDIST) \ -define ALIGN_STACK_FRAMES \ -define VM_LITTLE_ENDIAN \ @@ -106,13 +108,20 @@ # Add in build-specific options !if "$(BUILDARCH)" == "i486" ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \ + -platformName Win32 \ -define IA32 \ -ignorePath x86_64 \ -define TARGET_ARCH_MODEL_x86_32 !else +!if "$(BUILDARCH)" == "amd64" ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \ + -platformName x64 \ + -define AMD64 \ + -define _LP64 \ -ignorePath x86_32 \ - -define TARGET_ARCH_MODEL_x86_64 + -define TARGET_ARCH_MODEL_x86_64 \ + -define TARGET_OS_ARCH_MODEL_windows_x86_64 +!endif !endif ProjectCreatorIDEOptionsIgnoreCompiler1=\ diff -r 762bc029de50 -r 54df4702df97 make/windows/makefiles/rules.make --- a/make/windows/makefiles/rules.make Fri Feb 11 15:32:03 2011 -0800 +++ b/make/windows/makefiles/rules.make Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -53,7 +53,7 @@ !if "$(MSC_VER)" == "1200" VcVersion=VC6 -ProjectFile=vm.dsp +ProjectFile=jvm.dsp !elseif "$(MSC_VER)" == "1400" diff -r 762bc029de50 -r 54df4702df97 make/windows/platform_amd64 --- a/make/windows/platform_amd64 Fri Feb 11 15:32:03 2011 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -// Platform file for win32 NT platform - -os_family = windows - -arch = x86 - -arch_model = x86_64 - -os_arch = windows_x86 - -os_arch_model = windows_x86_64 - -lib_arch = amd64 - -compiler = visCPP diff -r 762bc029de50 -r 54df4702df97 make/windows/platform_i486 --- a/make/windows/platform_i486 Fri Feb 11 15:32:03 2011 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -// Platform file for windows platform - -os_family = windows - -arch = x86 - -arch_model = x86_32 - -os_arch = windows_x86 - -os_arch_model = windows_x86_32 - -lib_arch = i386 - -compiler = visCPP diff -r 762bc029de50 -r 54df4702df97 make/windows/platform_ia64 --- a/make/windows/platform_ia64 Fri Feb 11 15:32:03 2011 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -// Platform file for Itanium Windows platform $Revision: 1.0 $ - -os_family = win32 - -arch = ia64 - -os_arch = win32_ia64 - -compiler = visCPP - -gnu_dis_arch = ia64 - diff -r 762bc029de50 -r 54df4702df97 make/windows/projectfiles/common/Makefile --- a/make/windows/projectfiles/common/Makefile Fri Feb 11 15:32:03 2011 -0800 +++ b/make/windows/projectfiles/common/Makefile Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -54,8 +54,6 @@ JvmtiOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\jvmtifiles !include $(HOTSPOTWORKSPACE)/make/windows/makefiles/jvmti.make -Platform=$(HOTSPOTWORKSPACE)/make/windows/platform_$(BUILDARCH) - !if "$(Variant)" == "compiler2" # Pick up rules for building adlc !include $(HOTSPOTWORKSPACE)/make/windows/makefiles/adlc.make @@ -105,17 +103,16 @@ !endif ProjectCreatorIDEOptions = $(ProjectCreatorIDEOptions) \ - -platform $(Platform) \ -define HOTSPOT_RELEASE_VERSION=\\\"$(HOTSPOT_RELEASE_VERSION)\\\" \ -define JRE_RELEASE_VERSION=\\\"$(JRE_RELEASE_VERSION)\\\" \ -define HOTSPOT_VM_DISTRO=\\\"$(HOTSPOT_VM_DISTRO)\\\" -$(HOTSPOTBUILDROOT)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class +$(HOTSPOTBUILDSPACE)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class @$(RUN_JAVA) -Djava.class.path=$(HOTSPOTBUILDSPACE)/classes ProjectCreator WinGammaPlatform$(VcVersion) $(ProjectCreatorIDEOptions) clean: @rm -rf $(HOTSPOTBUILDSPACE)/classes - @rm -r ../$(ProjectFile) + @rm -r $(HOTSPOTBUILDSPACE)/$(ProjectFile) $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class: $(ProjectCreatorSources) @if exist $(HOTSPOTBUILDSPACE)\classes rmdir /s /q $(HOTSPOTBUILDSPACE)\classes diff -r 762bc029de50 -r 54df4702df97 src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp --- a/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp Fri Feb 11 15:32:03 2011 -0800 +++ b/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -71,7 +71,7 @@ PVOID HandlerData; } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; -#if MSC_VER < 1500 +#if _MSC_VER < 1500 /* Not needed for VS2008 compiler, comes from winnt.h. */ typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) ( diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/BuildConfig.java --- a/src/share/tools/ProjectCreator/BuildConfig.java Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/tools/ProjectCreator/BuildConfig.java Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,12 +51,14 @@ if (vars == null) vars = new Hashtable(); String flavourBuild = flavour + "_" + build; + String platformName = getFieldString(null, "PlatformName"); System.out.println(); System.out.println(flavourBuild); - put("Name", getCI().makeCfgName(flavourBuild)); + put("Name", getCI().makeCfgName(flavourBuild, platformName)); put("Flavour", flavour); put("Build", build); + put("PlatformName", platformName); // ones mentioned above were needed to expand format String buildBase = expandFormat(getFieldString(null, "BuildBase")); @@ -93,7 +95,7 @@ protected void initDefaultLinkerFlags() { Vector linkerFlags = new Vector(); - linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll"))); + linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll"), get("PlatformName"))); put("LinkerFlags", linkerFlags); } @@ -115,18 +117,15 @@ } - Vector getPreferredPaths(MacroDefinitions macros) { + Vector getPreferredPaths() { Vector preferredPaths = new Vector(); + // In the case of multiple files with the same name in - // different subdirectories, prefer the versions specified in - // the platform file as the "os_family" and "arch" macros. - for (Iterator iter = macros.getMacros(); iter.hasNext(); ) { - Macro macro = (Macro) iter.next(); - if (macro.name.equals("os_family") || - macro.name.equals("arch")) { - preferredPaths.add(macro.contents); - } - } + // different subdirectories, prefer these versions + preferredPaths.add("windows"); + preferredPaths.add("x86"); + preferredPaths.add("closed"); + // Also prefer "opto" over "adlc" for adlcVMDeps.hpp preferredPaths.add("opto"); @@ -137,18 +136,7 @@ void handleDB() { WinGammaPlatform platform = (WinGammaPlatform)getField(null, "PlatformObject"); - File incls = new File(get("OutputDir")+Util.sep+"incls"); - - incls.mkdirs(); - - MacroDefinitions macros = new MacroDefinitions(); - try { - macros.readFrom(getFieldString(null, "Platform"), false); - } catch (Exception e) { - throw new RuntimeException(e); - } - - putSpecificField("AllFilesHash", computeAllFiles(platform, macros)); + putSpecificField("AllFilesHash", computeAllFiles(platform)); } @@ -190,10 +178,10 @@ ht.put(expandFormat(key), expandFormat(value)); } - Hashtable computeAllFiles(WinGammaPlatform platform, MacroDefinitions macros) { + Hashtable computeAllFiles(WinGammaPlatform platform) { Hashtable rv = new Hashtable(); DirectoryTree tree = getSourceTree(get("SourceBase"), getFieldString(null, "StartAt")); - Vector preferredPaths = getPreferredPaths(macros); + Vector preferredPaths = getPreferredPaths(); // Hold errors until end Vector filesNotFound = new Vector(); @@ -228,8 +216,7 @@ System.err.println("Error: some files were not found or " + "appeared in multiple subdirectories of " + "directory " + get("SourceBase") + " and could not " + - "be resolved with the os_family and arch " + - "macros in the platform file."); + "be resolved with os_family and arch."); if (filesNotFound.size() != 0) { System.err.println("Files not found:"); for (Iterator iter = filesNotFound.iterator(); @@ -254,10 +241,14 @@ Vector sysDefines = new Vector(); sysDefines.add("WIN32"); sysDefines.add("_WINDOWS"); - sysDefines.add("HOTSPOT_BUILD_USER="+System.getProperty("user.name")); + sysDefines.add("HOTSPOT_BUILD_USER=\\\""+System.getProperty("user.name")+"\\\""); sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\""); sysDefines.add("_JNI_IMPLEMENTATION_"); - sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\""); + if (vars.get("PlatformName").equals("Win32")) { + sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\""); + } else { + sysDefines.add("HOTSPOT_LIB_ARCH=\\\"amd64\\\""); + } sysDefines.addAll(defines); @@ -710,7 +701,7 @@ } abstract class CompilerInterface { abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir); - abstract Vector getBaseLinkerFlags(String outDir, String outDll); + abstract Vector getBaseLinkerFlags(String outDir, String outDll, String platformName); abstract Vector getDebugCompilerFlags(String opt); abstract Vector getDebugLinkerFlags(); abstract void getAdditionalNonKernelLinkerFlags(Vector rv); @@ -718,7 +709,7 @@ abstract Vector getProductLinkerFlags(); abstract String getOptFlag(); abstract String getNoOptFlag(); - abstract String makeCfgName(String flavourBuild); + abstract String makeCfgName(String flavourBuild, String platformName); void addAttr(Vector receiver, String attr, String value) { receiver.add(attr); receiver.add(value); diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/DirectoryTree.java --- a/src/share/tools/ProjectCreator/DirectoryTree.java Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/tools/ProjectCreator/DirectoryTree.java Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,6 +55,9 @@ private Vector nodes = new Vector(); public FileIterator(Node rootNode) { + if(rootNode == null) { + return; + } nodes.add(rootNode); prune(); } @@ -112,10 +115,7 @@ throws IllegalArgumentException { File root = new File(Util.normalize(baseDirectory)); if (!root.isDirectory()) { - throw new IllegalArgumentException("baseDirectory \"" + - baseDirectory + - "\" does not exist or " + - "is not a directory"); + return; } try { root = root.getCanonicalFile(); diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/FileFormatException.java --- a/src/share/tools/ProjectCreator/FileFormatException.java Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/tools/ProjectCreator/FileFormatException.java Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,9 @@ * */ +@SuppressWarnings("serial") public class FileFormatException extends Exception { + public FileFormatException() { super(); } diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/Macro.java --- a/src/share/tools/ProjectCreator/Macro.java Fri Feb 11 15:32:03 2011 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -public class Macro { - public String name; - public String contents; -} diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/MacroDefinitions.java --- a/src/share/tools/ProjectCreator/MacroDefinitions.java Fri Feb 11 15:32:03 2011 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -/* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -import java.io.*; -import java.util.*; - -public class MacroDefinitions { - private Vector macros; - - public MacroDefinitions() { - macros = new Vector(); - } - - public void addMacro(String name, String contents) { - Macro macro = new Macro(); - macro.name = name; - macro.contents = contents; - macros.add(macro); - } - - private boolean lineIsEmpty(String s) { - for (int i = 0; i < s.length(); i++) { - if (!Character.isWhitespace(s.charAt(i))) { - return false; - } - } - return true; - } - - public void readFrom(String fileName, boolean missingOk) - throws FileNotFoundException, FileFormatException, IOException { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(fileName)); - } catch (FileNotFoundException e) { - if (missingOk) { - return; - } else { - throw(e); - } - } - String line; - do { - line = reader.readLine(); - if (line != null) { - // This had to be rewritten (compare to Database.java) - // because the Solaris platform file has been - // repurposed and now contains "macros" with spaces in - // them. - - if ((!line.startsWith("//")) && - (!lineIsEmpty(line))) { - int nameBegin = -1; - int nameEnd = -1; - boolean gotEquals = false; - int contentsBegin = -1; - int contentsEnd = -1; - - int i = 0; - // Scan forward for beginning of name - while (i < line.length()) { - if (!Character.isWhitespace(line.charAt(i))) { - break; - } - i++; - } - nameBegin = i; - - // Scan forward for end of name - while (i < line.length()) { - if (Character.isWhitespace(line.charAt(i))) { - break; - } - i++; - } - nameEnd = i; - - // Scan forward for equals sign - while (i < line.length()) { - if (line.charAt(i) == '=') { - gotEquals = true; - break; - } - i++; - } - - // Scan forward for start of contents - i++; - while (i < line.length()) { - if (!Character.isWhitespace(line.charAt(i))) { - break; - } - i++; - } - contentsBegin = i; - - // Scan *backward* for end of contents - i = line.length() - 1; - while (i >= 0) { - if (!Character.isWhitespace(line.charAt(i))) { - break; - } - } - contentsEnd = i+1; - - // Now do consistency check - if (!((nameBegin < nameEnd) && - (nameEnd < contentsBegin) && - (contentsBegin < contentsEnd) && - (gotEquals == true))) { - throw new FileFormatException( - "Expected \"macroname = value\", " + - "but found: " + line - ); - } - - String name = line.substring(nameBegin, nameEnd); - String contents = line.substring(contentsBegin, - contentsEnd); - addMacro(name, contents); - } - } - } while (line != null); - reader.close(); - } - - /** This returns an Iterator of Macros. You should not mutate the - returned Macro objects or use the Iterator to remove - macros. */ - public Iterator getMacros() { - return macros.iterator(); - } -} diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/Util.java --- a/src/share/tools/ProjectCreator/Util.java Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/tools/ProjectCreator/Util.java Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,7 +47,7 @@ return sb.toString(); } - static String join(String padder, String v[]) { + static String join(String padder, String v[]) { StringBuffer sb = new StringBuffer(); for (int i=0; i 2) { + if (file.charAt(1) == ':' && file.charAt(2) == '/') { + // convert drive letter to uppercase + String drive = file.substring(0, 1).toUpperCase(); + return drive + file.substring(1); + } + } + return file; } static String sep = File.separator; - static String os = "Win32"; //System.getProperty("os.name"); } diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/WinGammaPlatform.java --- a/src/share/tools/ProjectCreator/WinGammaPlatform.java Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/tools/ProjectCreator/WinGammaPlatform.java Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -235,13 +235,6 @@ (locationsInTree.size() == 0)) { filesNotFound.add(fileName); } else if (locationsInTree.size() > 1) { - // We shouldn't have duplicate file names in our workspace. - System.err.println(); - System.err.println("There are multiple files named as: " + fileName); - System.exit(-1); - // The following code could be safely removed if we don't need duplicate - // file names. - // Iterate through them, trying to find one with a // preferred path search: @@ -336,7 +329,7 @@ String projectName = getProjectName(projectFileName, ext); - writeProjectFile(projectFileName, projectName, createAllConfigs()); + writeProjectFile(projectFileName, projectName, createAllConfigs(BuildConfig.getFieldString(null, "PlatformName"))); } protected void writePrologue(String[] args) { @@ -376,7 +369,13 @@ HsArgHandler.STRING ), - new HsArgRule("-projectFileName", + new HsArgRule("-platformName", + "PlatformName", + null, + HsArgHandler.STRING + ), + + new HsArgRule("-projectFileName", "ProjectFileName", null, HsArgHandler.STRING @@ -394,12 +393,6 @@ HsArgHandler.STRING ), - new HsArgRule("-platform", - "Platform", - null, - HsArgHandler.STRING - ), - new HsArgRule("-absoluteInclude", "AbsoluteInclude", null, @@ -590,28 +583,27 @@ BuildConfig.putField(null, "PlatformObject", this); } - Vector createAllConfigs() { + Vector createAllConfigs(String platform) { Vector allConfigs = new Vector(); allConfigs.add(new C1DebugConfig()); - boolean b = true; - if (b) { - allConfigs.add(new C1FastDebugConfig()); - allConfigs.add(new C1ProductConfig()); + allConfigs.add(new C1FastDebugConfig()); + allConfigs.add(new C1ProductConfig()); - allConfigs.add(new C2DebugConfig()); - allConfigs.add(new C2FastDebugConfig()); - allConfigs.add(new C2ProductConfig()); + allConfigs.add(new C2DebugConfig()); + allConfigs.add(new C2FastDebugConfig()); + allConfigs.add(new C2ProductConfig()); - allConfigs.add(new TieredDebugConfig()); - allConfigs.add(new TieredFastDebugConfig()); - allConfigs.add(new TieredProductConfig()); + allConfigs.add(new TieredDebugConfig()); + allConfigs.add(new TieredFastDebugConfig()); + allConfigs.add(new TieredProductConfig()); - allConfigs.add(new CoreDebugConfig()); - allConfigs.add(new CoreFastDebugConfig()); - allConfigs.add(new CoreProductConfig()); + allConfigs.add(new CoreDebugConfig()); + allConfigs.add(new CoreFastDebugConfig()); + allConfigs.add(new CoreProductConfig()); + if (platform.equals("Win32")) { allConfigs.add(new KernelDebugConfig()); allConfigs.add(new KernelFastDebugConfig()); allConfigs.add(new KernelProductConfig()); diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/WinGammaPlatformVC6.java --- a/src/share/tools/ProjectCreator/WinGammaPlatformVC6.java Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/tools/ProjectCreator/WinGammaPlatformVC6.java Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -223,7 +223,7 @@ return rv; } - Vector getBaseLinkerFlags(String outDir, String outDll) { + Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) { Vector rv = new Vector(); rv.add("PROP Ignore_Export_Lib 0"); @@ -231,8 +231,12 @@ rv.add("ADD CPP /MD"); rv.add("ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib " + " advapi32.lib shell32.lib ole32.lib oleaut32.lib winmm.lib"); + String machine = "/machine:I386"; + if (platformName.equals("x64")) { + machine = "/machine:X64"; + } rv.add("ADD LINK32 /out:\""+outDll+"\" "+ - " /nologo /subsystem:windows /machine:I386" + + " /nologo /subsystem:windows /machine:" + machine + " /nologo /base:\"0x8000000\" /subsystem:windows /dll" + " /export:JNI_GetDefaultJavaVMInitArgs /export:JNI_CreateJavaVM /export:JNI_GetCreatedJavaVMs "+ " /export:jio_snprintf /export:jio_printf /export:jio_fprintf /export:jio_vfprintf "+ @@ -287,7 +291,7 @@ return "d"; } - String makeCfgName(String flavourBuild) { - return "vm - "+ Util.os + " " + flavourBuild; + String makeCfgName(String flavourBuild, String platform) { + return "vm - "+ platform + " " + flavourBuild; } } diff -r 762bc029de50 -r 54df4702df97 src/share/tools/ProjectCreator/WinGammaPlatformVC7.java --- a/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ public void writeProjectFile(String projectFileName, String projectName, Vector allConfigs) throws IOException { System.out.println(); - System.out.println(" Writing .vcproj file..."); + System.out.println(" Writing .vcproj file: "+projectFileName); // If we got this far without an error, we're safe to actually // write the .vcproj file printWriter = new PrintWriter(new FileWriter(projectFileName)); @@ -54,9 +54,8 @@ "SccLocalPath", "" } ); - startTag("Platforms", null); - tag("Platform", new String[] {"Name", Util.os}); + tag("Platform", new String[] {"Name", (String) BuildConfig.getField(null, "PlatformName")}); endTag("Platforms"); startTag("Configurations", null); @@ -81,12 +80,47 @@ abstract class NameFilter { - protected String fname; + protected String fname; abstract boolean match(FileInfo fi); String filterString() { return ""; } String name() { return this.fname;} + + @Override + // eclipse auto-generated + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + getOuterType().hashCode(); + result = prime * result + ((fname == null) ? 0 : fname.hashCode()); + return result; + } + + @Override + // eclipse auto-generated + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + NameFilter other = (NameFilter) obj; + if (!getOuterType().equals(other.getOuterType())) + return false; + if (fname == null) { + if (other.fname != null) + return false; + } else if (!fname.equals(other.fname)) + return false; + return true; + } + + // eclipse auto-generated + private WinGammaPlatformVC7 getOuterType() { + return WinGammaPlatformVC7.this; + } } class DirectoryFilter extends NameFilter { @@ -109,9 +143,50 @@ boolean match(FileInfo fi) { - int lastSlashIndex = fi.full.lastIndexOf('/'); - String fullDir = fi.full.substring(0, lastSlashIndex); - return fullDir.endsWith(dir); + int lastSlashIndex = fi.full.lastIndexOf('/'); + String fullDir = fi.full.substring(0, lastSlashIndex); + return fullDir.endsWith(dir); + } + + @Override + // eclipse auto-generated + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + getOuterType().hashCode(); + result = prime * result + baseLen; + result = prime * result + ((dir == null) ? 0 : dir.hashCode()); + result = prime * result + dirLen; + return result; + } + + @Override + // eclipse auto-generated + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + DirectoryFilter other = (DirectoryFilter) obj; + if (!getOuterType().equals(other.getOuterType())) + return false; + if (baseLen != other.baseLen) + return false; + if (dir == null) { + if (other.dir != null) + return false; + } else if (!dir.equals(other.dir)) + return false; + if (dirLen != other.dirLen) + return false; + return true; + } + + // eclipse auto-generated + private WinGammaPlatformVC7 getOuterType() { + return WinGammaPlatformVC7.this; } } @@ -232,32 +307,39 @@ DirectoryFilter container = null; for(FileInfo fileInfo : files) { - if (!fileInfo.full.startsWith(sbase)) { - continue; - } + if (!fileInfo.full.startsWith(sbase)) { + continue; + } + + int lastSlash = fileInfo.full.lastIndexOf('/'); + String dir = fileInfo.full.substring(sbase.length(), lastSlash); + if(dir.equals("share/vm")) { + // skip files directly in share/vm - should only be precompiled.hpp which is handled below + continue; + } + if (!dir.equals(currentDir)) { + currentDir = dir; + if (container != null && !rv.contains(container)) { + rv.add(container); + } - int lastSlash = fileInfo.full.lastIndexOf('/'); - String dir = fileInfo.full.substring(sbase.length(), lastSlash); - if(dir.equals("share/vm")) { - // skip files directly in share/vm - should only be precompiled.hpp which is handled below - continue; - } - if (!dir.equals(currentDir)) { - currentDir = dir; - if (container != null) { - rv.add(container); - } - - // remove "share/vm/" from names - String name = dir; - if (dir.startsWith("share/vm/")) { - name = dir.substring("share/vm/".length(), dir.length()); - } - container = new DirectoryFilter(name, dir, sbase); - } + // remove "share/vm/" from names + String name = dir; + if (dir.startsWith("share/vm/")) { + name = dir.substring("share/vm/".length(), dir.length()); + } + DirectoryFilter newfilter = new DirectoryFilter(name, dir, sbase); + int i = rv.indexOf(newfilter); + if(i == -1) { + container = newfilter; + } else { + // if the filter already exists, reuse it + container = (DirectoryFilter) rv.get(i); + } + } } - if (container != null) { - rv.add(container); + if (container != null && !rv.contains(container)) { + rv.add(container); } ContainerFilter generated = new ContainerFilter("Generated"); @@ -583,7 +665,7 @@ return rv; } - Vector getBaseLinkerFlags(String outDir, String outDll) { + Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) { Vector rv = new Vector(); addAttr(rv, "Name", "VCLinkerTool"); @@ -610,8 +692,13 @@ addAttr(rv, "SubSystem", "2"); addAttr(rv, "BaseAddress", "0x8000000"); addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib"); - // Set /MACHINE option. 1 is machineX86 - addAttr(rv, "TargetMachine", "1"); + if(platformName.equals("Win32")) { + // Set /MACHINE option. 1 is X86 + addAttr(rv, "TargetMachine", "1"); + } else { + // Set /MACHINE option. 17 is X64 + addAttr(rv, "TargetMachine", "17"); + } return rv; } @@ -656,12 +743,6 @@ addAttr(rv, "Optimization", "2"); // Set /Oy- option addAttr(rv, "OmitFramePointers", "FALSE"); - } - - Vector getProductCompilerFlags() { - Vector rv = new Vector(); - - getProductCompilerFlags_common(rv); // Set /Ob option. 1 is expandOnlyInline addAttr(rv, "InlineFunctionExpansion", "1"); // Set /GF option. @@ -670,6 +751,12 @@ addAttr(rv, "RuntimeLibrary", "2"); // Set /Gy option addAttr(rv, "EnableFunctionLevelLinking", "TRUE"); + } + + Vector getProductCompilerFlags() { + Vector rv = new Vector(); + + getProductCompilerFlags_common(rv); return rv; } @@ -693,7 +780,7 @@ return "0"; } - String makeCfgName(String flavourBuild) { - return flavourBuild + "|" + Util.os; + String makeCfgName(String flavourBuild, String platform) { + return flavourBuild + "|" + platform; } } diff -r 762bc029de50 -r 54df4702df97 src/share/vm/adlc/adlc.hpp --- a/src/share/vm/adlc/adlc.hpp Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/vm/adlc/adlc.hpp Mon Feb 14 03:19:33 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,11 +42,6 @@ using namespace std; #endif -// make sure the MSC_VER and _MSC_VER settings make sense -#if _MSC_VER != MSC_VER && (_MSC_VER != 1400 || MSC_VER != 1399) -#error "Something is wrong with the detection of MSC_VER in the makefiles" -#endif - #if _MSC_VER >= 1400 #define strdup _strdup #endif diff -r 762bc029de50 -r 54df4702df97 src/share/vm/oops/methodOop.cpp --- a/src/share/vm/oops/methodOop.cpp Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/vm/oops/methodOop.cpp Mon Feb 14 03:19:33 2011 -0800 @@ -1372,7 +1372,7 @@ } // See comment in methodOop.hpp which explains why this exists. -#if defined(_M_AMD64) && MSC_VER >= 1400 +#if defined(_M_AMD64) && _MSC_VER >= 1400 #pragma optimize("", off) void CompressedLineNumberWriteStream::write_pair(int bci, int line) { write_pair_inline(bci, line); diff -r 762bc029de50 -r 54df4702df97 src/share/vm/oops/methodOop.hpp --- a/src/share/vm/oops/methodOop.hpp Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/vm/oops/methodOop.hpp Mon Feb 14 03:19:33 2011 -0800 @@ -732,8 +732,8 @@ // Disabling optimization doesn't work for methods in header files // so we force it to call through the non-optimized version in the .cpp. // It's gross, but it's the only way we can ensure that all callers are -// fixed. MSC_VER is defined in build/windows/makefiles/compile.make. -#if defined(_M_AMD64) && MSC_VER >= 1400 +// fixed. _MSC_VER is defined by the windows compiler +#if defined(_M_AMD64) && _MSC_VER >= 1400 void write_pair(int bci, int line); #else void write_pair(int bci, int line) { write_pair_inline(bci, line); } diff -r 762bc029de50 -r 54df4702df97 src/share/vm/utilities/errorReporter.hpp --- a/src/share/vm/utilities/errorReporter.hpp Fri Feb 11 15:32:03 2011 -0800 +++ b/src/share/vm/utilities/errorReporter.hpp Mon Feb 14 03:19:33 2011 -0800 @@ -26,6 +26,7 @@ #define SHARE_VM_UTILITIES_ERRORREPORTER_HPP #include "utilities/globalDefinitions.hpp" +#include "memory/allocation.hpp" class ErrorReporter : public StackObj {