changeset 1978:2ca799d83d3c

Merge
author ohair
date Tue, 30 Nov 2010 18:10:20 -0800
parents 0fc262af204f (diff) c7db7adb83b4 (current diff)
children 01c0559441c8
files make/linux/makefiles/buildtree.make make/solaris/makefiles/buildtree.make make/windows/projectfiles/common/Makefile
diffstat 1628 files changed, 30572 insertions(+), 23888 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Tue Nov 30 18:07:18 2010 -0800
+++ b/.hgtags	Tue Nov 30 18:10:20 2010 -0800
@@ -127,4 +127,7 @@
 5511edd5d719f3fc9fdd04879482026a3d2c8652 hs20-b01
 bdbc48857210a509b3c50a3291ecb9dd6a72e016 jdk7-b115
 96b3f2a7add0b445b8aa421f6823cff5a2e2fe03 jdk7-b116
+52f19c724d9634af79044a2e0defbe4a5f1adbda hs20-b02
 806d0c037e6bbb88dac0699673f4ba55ee8c02da jdk7-b117
+698b7b727e12de44139d8cca6ab9a494ead13253 jdk7-b118
+3ef7426b4deac5dcfd4afb35cabe9ab3d666df91 hs20-b02
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -188,7 +188,7 @@
        } else {
           throw new RuntimeException("should not reach here");
        }
-    } else if (ctag.isMethodHandle() || ctag.isMethodType()) {
+    } else if (ctag.isMethodHandle()) {
        Oop x = getCachedConstant();
        int refidx = cpool.getMethodHandleIndexAt(cpIndex);
        int refkind = cpool.getMethodHandleRefKindAt(cpIndex);
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Tue Nov 30 18:10:20 2010 -0800
@@ -53,11 +53,19 @@
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type   = db.lookupType("constantPoolOopDesc");
     tags        = new OopField(type.getOopField("_tags"), 0);
+    operands    = new OopField(type.getOopField("_operands"), 0);
     cache       = new OopField(type.getOopField("_cache"), 0);
     poolHolder  = new OopField(type.getOopField("_pool_holder"), 0);
     length      = new CIntField(type.getCIntegerField("_length"), 0);
     headerSize  = type.getSize();
     elementSize = 0;
+    // fetch constants:
+    MULTI_OPERAND_COUNT_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_multi_operand_count_offset").intValue();
+    MULTI_OPERAND_BASE_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_multi_operand_base_offset").intValue();
+    INDY_BSM_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_indy_bsm_offset").intValue();
+    INDY_NT_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_indy_nt_offset").intValue();
+    INDY_ARGC_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_indy_argc_offset").intValue();
+    INDY_ARGV_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_indy_argv_offset").intValue();
   }
 
   ConstantPool(OopHandle handle, ObjectHeap heap) {
@@ -67,6 +75,7 @@
   public boolean isConstantPool()      { return true; }
 
   private static OopField tags;
+  private static OopField operands;
   private static OopField cache;
   private static OopField poolHolder;
   private static CIntField length; // number of elements in oop
@@ -74,7 +83,15 @@
   private static long headerSize;
   private static long elementSize;
 
+  private static int MULTI_OPERAND_COUNT_OFFSET;
+  private static int MULTI_OPERAND_BASE_OFFSET;
+  private static int INDY_BSM_OFFSET;
+  private static int INDY_NT_OFFSET;
+  private static int INDY_ARGC_OFFSET;
+  private static int INDY_ARGV_OFFSET;
+
   public TypeArray         getTags()       { return (TypeArray)         tags.getValue(this); }
+  public TypeArray         getOperands()   { return (TypeArray)         operands.getValue(this); }
   public ConstantPoolCache getCache()      { return (ConstantPoolCache) cache.getValue(this); }
   public Klass             getPoolHolder() { return (Klass)             poolHolder.getValue(this); }
   public int               getLength()     { return (int)length.getValue(this); }
@@ -278,6 +295,25 @@
     return res;
   }
 
+  /** Lookup for multi-operand (InvokeDynamic) entries. */
+  public int[] getMultiOperandsAt(int i) {
+    if (Assert.ASSERTS_ENABLED) {
+      Assert.that(getTagAt(i).isInvokeDynamic(), "Corrupted constant pool");
+    }
+    int pos = this.getIntAt(i);
+    int countPos = pos + MULTI_OPERAND_COUNT_OFFSET;  // == pos-1
+    int basePos  = pos + MULTI_OPERAND_BASE_OFFSET;   // == pos
+    if (countPos < 0)  return null;  // safety first
+    TypeArray operands = getOperands();
+    if (operands == null)  return null;  // safety first
+    int length = operands.getIntAt(countPos);
+    int[] values = new int[length];
+    for (int j = 0; j < length; j++) {
+        values[j] = operands.getIntAt(basePos+j);
+    }
+    return values;
+  }
+
   final private static String[] nameForTag = new String[] {
   };
 
@@ -522,15 +558,20 @@
 
               case JVM_CONSTANT_InvokeDynamic: {
                   dos.writeByte(cpConstType);
-                  int value = getIntAt(ci);
-                  short bootstrapMethodIndex = (short) extractLowShortFromInt(value);
-                  short nameAndTypeIndex = (short) extractHighShortFromInt(value);
-                  dos.writeShort(bootstrapMethodIndex);
-                  dos.writeShort(nameAndTypeIndex);
+                  int[] values = getMultiOperandsAt(ci);
+                  for (int vn = 0; vn < values.length; vn++) {
+                      dos.writeShort(values[vn]);
+                  }
+                  int bootstrapMethodIndex = values[INDY_BSM_OFFSET];
+                  int nameAndTypeIndex = values[INDY_NT_OFFSET];
+                  int argumentCount = values[INDY_ARGC_OFFSET];
+                  assert(INDY_ARGV_OFFSET + argumentCount == values.length);
                   if (DEBUG) debugMessage("CP[" + ci + "] = indy BSM = " + bootstrapMethodIndex
-                                          + ", N&T = " + nameAndTypeIndex);
+                                          + ", N&T = " + nameAndTypeIndex
+                                          + ", argc = " + argumentCount);
                   break;
               }
+
               default:
                   throw new InternalError("unknown tag: " + cpConstType);
           } // switch
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java	Tue Nov 30 18:10:20 2010 -0800
@@ -42,7 +42,8 @@
     public static final int JVM_CONSTANT_NameAndType        = 12;
     public static final int JVM_CONSTANT_MethodHandle       = 15;
     public static final int JVM_CONSTANT_MethodType         = 16;
-    public static final int JVM_CONSTANT_InvokeDynamic      = 17;
+    public static final int JVM_CONSTANT_InvokeDynamicTrans = 17;  // only occurs in old class files
+    public static final int JVM_CONSTANT_InvokeDynamic      = 18;
 
     // JVM_CONSTANT_MethodHandle subtypes
     public static final int JVM_REF_getField                = 1;
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Tue Nov 30 18:10:20 2010 -0800
@@ -303,12 +303,12 @@
                 case JVM_CONSTANT_MethodHandle: {
                      dos.writeByte(cpConstType);
                      int value = cpool.getIntAt(ci);
-                     short bootstrapMethodIndex = (short) extractLowShortFromInt(value);
-                     short nameAndTypeIndex = (short) extractHighShortFromInt(value);
-                     dos.writeShort(bootstrapMethodIndex);
-                     dos.writeShort(nameAndTypeIndex);
-                     if (DEBUG) debugMessage("CP[" + ci + "] = indy BSM = " +
-                           bootstrapMethodIndex + ", N&T = " + nameAndTypeIndex);
+                     byte refKind = (byte) extractLowShortFromInt(value);
+                     short memberIndex = (short) extractHighShortFromInt(value);
+                     dos.writeByte(refKind);
+                     dos.writeShort(memberIndex);
+                     if (DEBUG) debugMessage("CP[" + ci + "] = MH kind = " +
+                           refKind + ", mem = " + memberIndex);
                      break;
                 }
 
@@ -323,10 +323,11 @@
 
                 case JVM_CONSTANT_InvokeDynamic: {
                      dos.writeByte(cpConstType);
-                     int value = cpool.getIntAt(ci);
-                     short refIndex = (short) value;
-                     dos.writeShort(refIndex);
-                     if (DEBUG) debugMessage("CP[" + ci + "] = MT index = " + refIndex);
+                     int[] values = cpool.getMultiOperandsAt(ci);
+                     for (int vn = 0; vn < values.length; vn++) {
+                         dos.writeShort(values[vn]);
+                     }
+                     if (DEBUG) debugMessage("CP[" + ci + "] = INDY indexes = " + Arrays.toString(values));
                      break;
                 }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Tue Nov 30 18:10:20 2010 -0800
@@ -460,6 +460,18 @@
       return buf.toString();
    }
 
+   private String genListOfShort(int[] values) {
+      Formatter buf = new Formatter(genHTML);
+      buf.append('[');
+      for (int i = 0; i < values.length; i++) {
+          if (i > 0)  buf.append(' ');
+          buf.append('#');
+          buf.append(Integer.toString(values[i]));
+      }
+      buf.append(']');
+      return buf.toString();
+   }
+
    protected String genHTMLTableForConstantPool(ConstantPool cpool) {
       Formatter buf = new Formatter(genHTML);
       buf.beginTable(1);
@@ -584,7 +596,7 @@
 
             case JVM_CONSTANT_InvokeDynamic:
                buf.cell("JVM_CONSTANT_InvokeDynamic");
-               buf.cell(genLowHighShort(cpool.getIntAt(index)));
+               buf.cell(genListOfShort(cpool.getMultiOperandsAt(index)));
                break;
 
             default:
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/ConstantTag.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/ConstantTag.java	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -40,7 +40,8 @@
   private static int JVM_CONSTANT_NameAndType             = 12;
   private static int JVM_CONSTANT_MethodHandle            = 15;  // JSR 292
   private static int JVM_CONSTANT_MethodType              = 16;  // JSR 292
-  private static int JVM_CONSTANT_InvokeDynamic           = 17;  // JSR 292
+  //      static int JVM_CONSTANT_InvokeDynamicTrans      = 17;  // JSR 292, only occurs in old class files
+  private static int JVM_CONSTANT_InvokeDynamic           = 18;  // JSR 292
   private static int JVM_CONSTANT_Invalid                 = 0;   // For bad value initialization
   private static int JVM_CONSTANT_UnresolvedClass         = 100; // Temporary tag until actual use
   private static int JVM_CONSTANT_ClassIndex              = 101; // Temporary tag while constructing constant pool
--- a/make/hotspot_version	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/hotspot_version	Tue Nov 30 18:10:20 2010 -0800
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=20
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=02
+HS_BUILD_NUMBER=03
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/make/linux/Makefile	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/Makefile	Tue Nov 30 18:10:20 2010 -0800
@@ -62,7 +62,9 @@
 include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make
 
 ifndef CC_INTERP
-FORCE_TIERED=1
+  ifndef FORCE_TIERED
+    FORCE_TIERED=1
+  endif
 endif
 
 ifdef LP64
@@ -254,7 +256,7 @@
 	$(BUILDTREE) VARIANT=tiered
 
 $(SUBDIRS_C2): $(BUILDTREE_MAKE)
-ifdef FORCE_TIERED
+ifeq ($(FORCE_TIERED),1)
 	$(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
 		$(BUILDTREE) VARIANT=tiered FORCE_TIERED=1
 else
--- a/make/linux/makefiles/adlc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/adlc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -42,16 +42,14 @@
 SOURCES.AD = $(GAMMADIR)/src/cpu/$(ARCH)/vm/$(Platform_arch_model).ad \
 	     $(GAMMADIR)/src/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad 
 
-Src_Dirs += $(GAMMADIR)/src/share/vm/adlc
-
 EXEC	= $(OUTDIR)/adlc
 
 # set VPATH so make knows where to look for source files
-Src_Dirs_V = ${Src_Dirs} $(GENERATED)/incls
-VPATH    += $(Src_Dirs_V:%=%:)
+Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc
+VPATH += $(Src_Dirs_V:%=%:)
 
 # set INCLUDES for C preprocessor
-Src_Dirs_I = ${Src_Dirs} $(GENERATED)
+Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED)
 INCLUDES += $(Src_Dirs_I:%=-I%)
 
 # set flags for adlc compilation
--- a/make/linux/makefiles/amd64.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/amd64.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
@@ -22,9 +22,6 @@
 #  
 #
 
-# Not included in includeDB because it has no dependencies
-Obj_Files += linux_x86_64.o
-
 # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
 OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
 # The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
--- a/make/linux/makefiles/buildtree.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/buildtree.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -113,7 +113,7 @@
 COMPILER	= $(shell sed -n 's/^compiler[ 	]*=[ 	]*//p' $(PLATFORM_FILE))
 
 SIMPLE_DIRS	= \
-	$(PLATFORM_DIR)/generated/incls \
+	$(PLATFORM_DIR)/generated/dependencies \
 	$(PLATFORM_DIR)/generated/adfiles \
 	$(PLATFORM_DIR)/generated/jvmtifiles
 
@@ -197,11 +197,27 @@
 	echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
 	echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
 	echo; \
-	echo "Src_Dirs = \\"; \
+	echo "# Used for platform dispatching"; \
+	echo "TARGET_DEFINES  = -DTARGET_OS_FAMILY_\$$(Platform_os_family)"; \
+	echo "TARGET_DEFINES += -DTARGET_ARCH_\$$(Platform_arch)"; \
+	echo "TARGET_DEFINES += -DTARGET_ARCH_MODEL_\$$(Platform_arch_model)"; \
+	echo "TARGET_DEFINES += -DTARGET_OS_ARCH_\$$(Platform_os_arch)"; \
+	echo "TARGET_DEFINES += -DTARGET_OS_ARCH_MODEL_\$$(Platform_os_arch_model)"; \
+	echo "TARGET_DEFINES += -DTARGET_COMPILER_\$$(Platform_compiler)"; \
+	echo "CFLAGS += \$$(TARGET_DEFINES)"; \
+	echo; \
+	echo "Src_Dirs_V = \\"; \
 	sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
 	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
 	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
 	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
+	echo; \
+	echo "Src_Dirs_I = \\"; \
+	echo "\$$(GAMMADIR)/src/share/vm \\"; \
+	echo "\$$(GAMMADIR)/src/share/vm/prims \\"; \
+	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
+	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
+	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
 	[ -n "$(CFLAGS_BROWSE)" ] && \
 	    echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
 	[ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
--- a/make/linux/makefiles/core.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/core.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -24,8 +24,7 @@
 
 # Sets make macros for making core version of VM
 
-# Note the effect on includeDB lists in top.make:
-# includeDB_compiler* and ad_<arch>.*pp are excluded from the build,
+# Select which files to use (in top.make)
 TYPE=CORE
 
 # There is no "core" directory in JDK. Install core build in server directory.
--- a/make/linux/makefiles/gcc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/gcc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -44,7 +44,8 @@
 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
 USE_PRECOMPILED_HEADER=1
 PRECOMPILED_HEADER_DIR=.
-PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch
+PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled.hpp
+PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
 endif
 
 
@@ -144,6 +145,11 @@
 OPT_CFLAGS/mulnode.o += -O0
 endif
 
+# Flags for generating make dependency flags.
+ifneq ("${CC_VER_MAJOR}", "2")
+DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
+endif
+
 #------------------------------------------------------------------------
 # Linker flags
 
--- a/make/linux/makefiles/i486.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/i486.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -23,8 +23,6 @@
 #
 
 # TLS helper, assembled from .s file
-# Not included in includeDB because it has no dependencies
-Obj_Files += linux_x86_32.o
 
 # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
 OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
--- a/make/linux/makefiles/jvmti.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/jvmti.make	Tue Nov 30 18:10:20 2010 -0800
@@ -37,11 +37,10 @@
 
 JvmtiSrcDir = $(GAMMADIR)/src/share/vm/prims
 InterpreterSrcDir = $(GAMMADIR)/src/share/vm/interpreter
-Src_Dirs += $(JvmtiSrcDir)
 
 # set VPATH so make knows where to look for source files
-Src_Dirs_V = ${Src_Dirs}
-VPATH    += $(Src_Dirs_V:%=%:)
+Src_Dirs_V += $(JvmtiSrcDir)
+VPATH += $(Src_Dirs_V:%=%:)
 
 JvmtiGeneratedNames = \
         jvmtiEnv.hpp \
--- a/make/linux/makefiles/launcher.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/launcher.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -56,7 +56,7 @@
 LINK_LAUNCHER/POST_HOOK = $(LINK_LIB.CC/POST_HOOK)
 
 launcher.o: launcher.c $(LAUNCHERDIR)/java.c $(LAUNCHERDIR)/java_md.c
-	$(CC) -g -c -o $@ launcher.c $(LAUNCHERFLAGS) $(CPPFLAGS)
+	$(CC) -g -c -o $@ launcher.c $(LAUNCHERFLAGS) $(CPPFLAGS) $(TARGET_DEFINES)
 
 launcher.c:
 	@echo Generating $@
--- a/make/linux/makefiles/makedeps.make	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#
-# Copyright (c) 2000, 2008, 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.
-#  
-#
-
-include $(GAMMADIR)/make/linux/makefiles/rules.make
-
-COMPILE.JAVAC.FLAGS += -d $(OUTDIR)
-
-MakeDepsSources=\
-	$(GAMMADIR)/src/share/tools/MakeDeps/Database.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/DirectoryTree.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/DirectoryTreeNode.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/FileFormatException.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/FileList.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/FileName.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/Macro.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/MacroDefinitions.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/MakeDeps.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/MetroWerksMacPlatform.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/Platform.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/UnixPlatform.java        
-
-MakeDepsOptions=
--- a/make/linux/makefiles/rules.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/rules.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
@@ -151,20 +151,20 @@
 %.o: %.cpp
 	@echo Compiling $<
 	$(QUIETLY) $(REMOVE_TARGET)
-	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
+	$(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
 else
 %.o: %.cpp
 	@echo Compiling $<
 	$(QUIETLY) $(REMOVE_TARGET)
 	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
-	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \
-	   $(COMPILE.CC) -o $@ $< $(COMPILE_DONE))
+	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
+	   $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
 endif
 
 %.o: %.s
 	@echo Assembling $<
 	$(QUIETLY) $(REMOVE_TARGET)
-	$(QUIETLY) $(AS.S) -o $@ $< $(COMPILE_DONE)
+	$(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
 
 %.s: %.cpp
 	@echo Generating assembly for $<
--- a/make/linux/makefiles/saproc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/saproc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -55,10 +55,12 @@
 # if $(AGENT_DIR) does not exist, we don't build SA
 # also, we don't build SA on Itanium, PPC, ARM or zero.
 
-checkAndBuildSA:
-	$(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "arm" -a "$(SRCARCH)" != "ppc" -a "$(SRCARCH)" != "zero" ] ; then \
-	   $(MAKE) -f vm.make $(LIBSAPROC); \
-	fi
+ifneq ($(wildcard $(AGENT_DIR)),)
+ifneq ($(filter-out ia64 arm ppc zero,$(SRCARCH)),)
+  BUILDLIBSAPROC = $(LIBSAPROC)
+endif
+endif
+
 
 SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
 
@@ -81,10 +83,10 @@
 	           -lthread_db
 	$(QUIETLY) [ -f $(LIBSAPROC_G) ] || { ln -s $@ $(LIBSAPROC_G); }
 
-install_saproc: checkAndBuildSA
+install_saproc: $(BUILDLIBSAPROC)
 	$(QUIETLY) if [ -e $(LIBSAPROC) ] ; then             \
 	  echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)";     \
 	  cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done";  \
 	fi
 
-.PHONY: checkAndBuildSA install_saproc
+.PHONY: install_saproc
--- a/make/linux/makefiles/sparc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/sparc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -22,6 +22,3 @@
 #  
 #
 
-# Not included in includeDB because it has no dependencies
-Obj_Files += linux_sparc.o
-
--- a/make/linux/makefiles/sparcWorks.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/sparcWorks.make	Tue Nov 30 18:10:20 2010 -0800
@@ -74,6 +74,11 @@
 OPT_CFLAGS+=-xO4
 OPT_CFLAGS/NOOPT=-xO0
 
+# Flags for creating the dependency files.
+ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
+DEPFLAGS = -xMMD -xMF $(DEP_DIR)/$(@:%=%.d)
+endif
+
 #------------------------------------------------------------------------
 # Linker flags
 
--- a/make/linux/makefiles/sparcv9.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/sparcv9.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -21,10 +21,6 @@
 # questions.
 #  
 
-#
-# Not included in includeDB because it has no dependencies
-Obj_Files += linux_sparc.o
-
 # gcc 4.0 miscompiles this code in -m64
 OPT_CFLAGS/macro.o = -O0
 
--- a/make/linux/makefiles/top.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/top.make	Tue Nov 30 18:10:20 2010 -0800
@@ -31,7 +31,7 @@
 #   -generate sa-jdi.jar (JDI binding to core files)
 
 # It assumes the following flags are set:
-# CFLAGS Platform_file, Src_Dirs, SYSDEFS, AOUT, Obj_Files
+# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files
 
 # -- D. Ungar (5/97) from a file by Bill Bush
 
@@ -45,10 +45,6 @@
 Plat_File   = $(Platform_file)
 CDG         = cd $(GENERATED); 
 
-# Pick up MakeDeps' sources and definitions
-include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/makedeps.make
-MakeDepsClass = MakeDeps.class
-
 ifdef USE_PRECOMPILED_HEADER
 PrecompiledOption = -DUSE_PRECOMPILED_HEADER
 UpdatePCH         = $(MAKE) -f vm.make $(PRECOMPILED_HEADER) $(MFLAGS) 
@@ -57,33 +53,7 @@
 PrecompiledOption = 
 endif
 
-MakeDeps    = $(RUN.JAVA) $(PrecompiledOption) -classpath $(GENERATED) MakeDeps
-
-Include_DBs/GC          = $(VM)/includeDB_gc \
-                          $(VM)/includeDB_gc_parallel \
-                          $(VM)/gc_implementation/includeDB_gc_parallelScavenge \
-                          $(VM)/gc_implementation/includeDB_gc_concurrentMarkSweep \
-                          $(VM)/gc_implementation/includeDB_gc_parNew \
-                          $(VM)/gc_implementation/includeDB_gc_g1     \
-                          $(VM)/gc_implementation/includeDB_gc_serial \
-                          $(VM)/gc_implementation/includeDB_gc_shared
-
-Include_DBs/CORE        = $(VM)/includeDB_core   $(Include_DBs/GC) \
-                          $(VM)/includeDB_jvmti \
-                          $(VM)/includeDB_features
-Include_DBs/COMPILER1   = $(Include_DBs/CORE) $(VM)/includeDB_compiler1
-Include_DBs/COMPILER2   = $(Include_DBs/CORE) $(VM)/includeDB_compiler2
-Include_DBs/TIERED      = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 $(VM)/includeDB_compiler2
-Include_DBs/ZERO        = $(Include_DBs/CORE) $(VM)/includeDB_zero
-Include_DBs/SHARK       = $(Include_DBs/ZERO) $(VM)/includeDB_shark
-Include_DBs = $(Include_DBs/$(TYPE))
-
 Cached_plat = $(GENERATED)/platform.current
-Cached_db   = $(GENERATED)/includeDB.current
-
-Incremental_Lists = $(Cached_db)
-# list generation also creates $(GENERATED)/$(Cached_plat)
-
 
 AD_Dir   = $(GENERATED)/adfiles
 ADLC     = $(AD_Dir)/adlc
@@ -102,7 +72,7 @@
 MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"`
 
 
-# default target: make makeDeps, update lists, make vm
+# default target: update lists, make vm
 # done in stages to force sequential order with parallel make
 #
 
@@ -110,39 +80,18 @@
 	@echo All done.
 
 # This is an explicit dependency for the sake of parallel makes.
-vm_build_preliminaries:  checks $(Incremental_Lists) $(AD_Files_If_Required) jvmti_stuff sa_stuff
+vm_build_preliminaries:  checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff sa_stuff
 	@# We need a null action here, so implicit rules don't get consulted.
 
-# make makeDeps: (and zap the cached db files to force a nonincremental run)
-
-$(GENERATED)/$(MakeDepsClass): $(MakeDepsSources)
-	@$(REMOTE) $(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -d $(GENERATED) $(MakeDepsSources)
-	@echo Removing $(Incremental_Lists) to force regeneration.
-	@rm -f $(Incremental_Lists)
-	@$(CDG) echo >$(Cached_plat)
-
-# make incremental_lists, if cached files out of date, run makeDeps
-
-$(Incremental_Lists): $(Include_DBs) $(Plat_File) $(GENERATED)/$(MakeDepsClass)
-	$(CDG) cat $(Include_DBs) > $(GENERATED)/includeDB
-	$(CDG) if [ ! -r incls ] ; then \
-	mkdir incls ; \
-	fi
-	$(CDG) (echo $(CDG) echo $(MakeDeps) diffs UnixPlatform $(Cached_plat) $(Cached_db) $(Plat_File) $(GENERATED)/includeDB $(MakeDepsOptions)) > makeDeps.sh
-	$(CDG) $(REMOTE) sh $(GENERATED)/makeDeps.sh
-	$(CDG) cp includeDB    $(Cached_db)
+$(Cached_plat): $(Plat_File)
 	$(CDG) cp $(Plat_File) $(Cached_plat)
 
-# symbolic target for command lines
-lists: $(Incremental_Lists)
-	@: lists are now up to date
-
 # make AD files as necessary
-ad_stuff: $(Incremental_Lists) $(adjust-mflags)
+ad_stuff: $(Cached_plat) $(adjust-mflags)
 	@$(MAKE) -f adlc.make $(MFLAGS-adjusted)
 
 # generate JVMTI files from the spec
-jvmti_stuff: $(Incremental_Lists) $(adjust-mflags)
+jvmti_stuff: $(Cached_plat) $(adjust-mflags)
 	@$(MAKE) -f jvmti.make $(MFLAGS-adjusted)
 
 # generate SA jar files and native header
@@ -169,7 +118,7 @@
 install: the_vm
 	@$(MAKE) -f vm.make install
 
-# next rules support "make foo.[oi]"
+# next rules support "make foo.[ois]"
 
 %.o %.i %.s:
 	$(UpdatePCH) 
@@ -179,7 +128,6 @@
 # this should force everything to be rebuilt
 clean: 
 	rm -f $(GENERATED)/*.class
-	$(MAKE) $(MFLAGS) $(GENERATED)/$(MakeDepsClass)
 	$(MAKE) -f vm.make $(MFLAGS) clean
 
 # just in case it doesn't, this should do it
--- a/make/linux/makefiles/vm.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/vm.make	Tue Nov 30 18:10:20 2010 -0800
@@ -35,9 +35,10 @@
 # Defs
 
 GENERATED     = ../generated
+DEP_DIR       = $(GENERATED)/dependencies
 
-# read a generated file defining the set of .o's and the .o .h dependencies
-include $(GENERATED)/Dependencies
+# reads the generated files defining the set of .o's and the .o .h dependencies
+-include $(DEP_DIR)/*.d
 
 # read machine-specific adjustments (%%% should do this via buildtree.make?)
 ifeq ($(ZERO_BUILD), true)
@@ -47,16 +48,16 @@
 endif
 
 # set VPATH so make knows where to look for source files
-# Src_Dirs is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
-# The incls directory contains generated header file lists for inclusion.
+# Src_Dirs_V is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
 # The adfiles directory contains ad_<arch>.[ch]pp.
 # The jvmtifiles directory contains jvmti*.[ch]pp
-Src_Dirs_V = $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED)/incls
-VPATH    += $(Src_Dirs_V:%=%:)
+Src_Dirs_V += $(GENERATED)/adfiles $(GENERATED)/jvmtifiles
+VPATH += $(Src_Dirs_V:%=%:)
 
-# set INCLUDES for C preprocessor
-Src_Dirs_I = $(PRECOMPILED_HEADER_DIR) $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED)
-INCLUDES += $(Src_Dirs_I:%=-I%)
+# set INCLUDES for C preprocessor.
+Src_Dirs_I += $(GENERATED)
+# The order is important for the precompiled headers to work.
+INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
 
 ifeq (${VERSION}, debug)
   SYMFLAG = -g
@@ -118,6 +119,62 @@
 LIBJVM   = lib$(JVM).so
 LIBJVM_G = lib$(JVM)$(G_SUFFIX).so
 
+CORE_PATHS := $(shell find $(GAMMADIR)/src/share/vm/* -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \))
+CORE_PATHS += $(GAMMADIR)/src/os/$(Platform_os_family)/vm
+CORE_PATHS += $(GAMMADIR)/src/cpu/$(Platform_arch)/vm
+CORE_PATHS += $(GAMMADIR)/src/os_cpu/$(Platform_os_arch)/vm
+CORE_PATHS += $(GENERATED)/jvmtifiles
+
+COMPILER1_PATHS := $(GAMMADIR)/src/share/vm/c1
+
+COMPILER2_PATHS := $(GAMMADIR)/src/share/vm/opto
+COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt
+COMPILER2_PATHS +=  $(GENERATED)/adfiles
+
+# Include dirs per type.
+Src_Dirs/CORE      := $(CORE_PATHS)
+Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
+Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
+Src_Dirs/TIERED    := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
+Src_Dirs/ZERO      := $(CORE_PATHS)
+Src_Dirs/SHARK     := $(CORE_PATHS)
+Src_Dirs := $(Src_Dirs/$(TYPE))
+
+COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp chaitin\* c2_\* runtime_\*
+COMPILER1_SPECIFIC_FILES := c1_\*
+SHARK_SPECIFIC_FILES     := shark
+ZERO_SPECIFIC_FILES      := zero
+
+# Always exclude these.
+Src_Files_EXCLUDE := jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp
+
+# Exclude per type.
+Src_Files_EXCLUDE/CORE      := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
+Src_Files_EXCLUDE/COMPILER1 := $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
+Src_Files_EXCLUDE/COMPILER2 := $(COMPILER1_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
+Src_Files_EXCLUDE/TIERED    := $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
+Src_Files_EXCLUDE/ZERO      := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
+Src_Files_EXCLUDE/SHARK     := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES)
+
+Src_Files_EXCLUDE +=  $(Src_Files_EXCLUDE/$(TYPE))
+
+# Special handling of arch model.
+ifeq ($(Platform_arch_model), x86_32)
+Src_Files_EXCLUDE += \*x86_64\*
+endif
+ifeq ($(Platform_arch_model), x86_64)
+Src_Files_EXCLUDE += \*x86_32\*
+endif
+
+# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
+define findsrc
+	$(notdir $(shell find $(1) \( -name \*.c -o -name \*.cpp -o -name \*.s \) -a \! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \) ))
+endef
+
+Src_Files := $(foreach e,$(Src_Dirs),$(call findsrc,$(e)))
+
+Obj_Files = $(addsuffix .o,$(basename $(Src_Files)))
+
 JVM_OBJ_FILES = $(Obj_Files)
 
 vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
@@ -180,10 +237,10 @@
 LINK_VM = $(LINK_LIB.c)
 
 # rule for building precompiled header
-$(PRECOMPILED_HEADER): $(Precompiled_Files)
+$(PRECOMPILED_HEADER):
 	$(QUIETLY) echo Generating precompiled header $@
-	$(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)/incls
-	$(QUIETLY) $(COMPILE.CC) -x c++-header -c $(GENERATED)/incls/_precompiled.incl -o $@ $(COMPILE_DONE)
+	$(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)
+	$(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -x c++-header $(PRECOMPILED_HEADER_SRC) -o $@ $(COMPILE_DONE)
 
 # making the library:
 
@@ -252,7 +309,7 @@
 
 #----------------------------------------------------------------------
 
-build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) checkAndBuildSA
+build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC)
 
 install: install_jvm install_jsig install_saproc
 
--- a/make/linux/makefiles/zero.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/linux/makefiles/zero.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
 # Copyright 2009 Red Hat, Inc.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
@@ -25,7 +25,7 @@
 
 # Setup for Zero (non-Shark) version of VM
 
-# Select which includeDB files to use (in top.make)
+# Select which files to use (in top.make)
 TYPE = ZERO
 
 # Install libjvm.so, etc in in server directory.
--- a/make/solaris/Makefile	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/Makefile	Tue Nov 30 18:10:20 2010 -0800
@@ -53,7 +53,9 @@
 include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make
 
 ifndef CC_INTERP
-FORCE_TIERED=1
+  ifndef FORCE_TIERED
+    FORCE_TIERED=1
+  endif
 endif
 
 ifdef LP64
@@ -210,7 +212,7 @@
 	$(BUILDTREE) VARIANT=tiered
 
 $(SUBDIRS_C2): $(BUILDTREE_MAKE)
-ifdef FORCE_TIERED
+ifeq ($(FORCE_TIERED),1)
 	$(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
 		$(BUILDTREE) VARIANT=tiered FORCE_TIERED=1
 else
--- a/make/solaris/makefiles/adlc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/adlc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 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
@@ -42,16 +42,14 @@
 SOURCES.AD = $(GAMMADIR)/src/cpu/$(ARCH)/vm/$(Platform_arch_model).ad \
 	     $(GAMMADIR)/src/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad 
 
-Src_Dirs += $(GAMMADIR)/src/share/vm/adlc
-
 EXEC	= $(OUTDIR)/adlc
 
 # set VPATH so make knows where to look for source files
-Src_Dirs_V = ${Src_Dirs} $(GENERATED)/incls
-VPATH    += $(Src_Dirs_V:%=%:)
+Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc
+VPATH += $(Src_Dirs_V:%=%:)
 
 # set INCLUDES for C preprocessor
-Src_Dirs_I = ${Src_Dirs} $(GENERATED)
+Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED)
 INCLUDES += $(Src_Dirs_I:%=-I%)
 
 # set flags for adlc compilation
--- a/make/solaris/makefiles/amd64.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/amd64.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 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
@@ -25,9 +25,6 @@
 # Must also specify if CPU is little endian
 CFLAGS += -DVM_LITTLE_ENDIAN
 
-# Not included in includeDB because it has no dependencies
-Obj_Files += solaris_x86_64.o
-
 #
 # Special case flags for compilers and compiler versions on amd64.
 #
--- a/make/solaris/makefiles/buildtree.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/buildtree.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 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
@@ -106,7 +106,7 @@
 COMPILER	= $(shell sed -n 's/^compiler[ 	]*=[ 	]*//p' $(PLATFORM_FILE))
 
 SIMPLE_DIRS	= \
-	$(PLATFORM_DIR)/generated/incls \
+	$(PLATFORM_DIR)/generated/dependencies \
 	$(PLATFORM_DIR)/generated/adfiles \
 	$(PLATFORM_DIR)/generated/jvmtifiles
 
@@ -191,11 +191,27 @@
 	echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
 	echo "$(LP64_SETTING/$(DATA_MODE))"; \
 	echo; \
-	echo "Src_Dirs = \\"; \
+	echo "# Used for platform dispatching"; \
+	echo "TARGET_DEFINES  = -DTARGET_OS_FAMILY_\$$(Platform_os_family)"; \
+	echo "TARGET_DEFINES += -DTARGET_ARCH_\$$(Platform_arch)"; \
+	echo "TARGET_DEFINES += -DTARGET_ARCH_MODEL_\$$(Platform_arch_model)"; \
+	echo "TARGET_DEFINES += -DTARGET_OS_ARCH_\$$(Platform_os_arch)"; \
+	echo "TARGET_DEFINES += -DTARGET_OS_ARCH_MODEL_\$$(Platform_os_arch_model)"; \
+	echo "TARGET_DEFINES += -DTARGET_COMPILER_\$$(Platform_compiler)"; \
+	echo "CFLAGS += \$$(TARGET_DEFINES)"; \
+	echo; \
+	echo "Src_Dirs_V = \\"; \
 	sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
 	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
 	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
 	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
+	echo; \
+	echo "Src_Dirs_I = \\"; \
+	echo "\$$(GAMMADIR)/src/share/vm \\"; \
+	echo "\$$(GAMMADIR)/src/share/vm/prims \\"; \
+	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
+	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
+	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
 	[ -n "$(CFLAGS_BROWSE)" ] && \
 	    echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
 	[ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
--- a/make/solaris/makefiles/core.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/core.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -24,8 +24,7 @@
 
 # Sets make macros for making core version of VM
 
-# Note the effect on includeDB lists in top.make:
-# includeDB_compiler* and ad_<arch>.*pp are excluded from the build,
+# Select which files to use (in top.make)
 TYPE=CORE
 
 # There is no "core" directory in JDK. Install core build in server directory.
--- a/make/solaris/makefiles/dtrace.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/dtrace.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -63,8 +63,6 @@
 
 # making libjvm_db
 
-INCLS = $(GENERATED)/incls
-
 # Use mapfile with libjvm_db.so
 LIBJVM_DB_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jvm_db
 LFLAGS_JVM_DB += $(MAPFLAG:FILENAME=$(LIBJVM_DB_MAPFILE))
@@ -114,7 +112,7 @@
 endif
 
 lib$(GENOFFS).so: $(DTRACE_SRCDIR)/$(GENOFFS).cpp $(DTRACE_SRCDIR)/$(GENOFFS).h \
-                  $(INCLS)/_vmStructs.cpp.incl $(LIBJVM.o)
+                  $(LIBJVM.o)
 	$(QUIETLY) $(CCC) $(CPPFLAGS) $(GENOFFS_CFLAGS) $(SHARED_FLAG) $(PICFLAG) \
 		 $(LFLAGS_GENOFFS) -o $@ $(DTRACE_SRCDIR)/$(GENOFFS).cpp -lc
 
@@ -161,6 +159,27 @@
              $(DTRACE_SRCDIR)/hs_private.d $(DTRACE_SRCDIR)/jhelper.d
 	$(QUIETLY) cat $^ > $@
 
+DTraced_Files = ciEnv.o \
+                classLoadingService.o \
+                compileBroker.o \
+                hashtable.o \
+                instanceKlass.o \
+                java.o \
+                jni.o \
+                jvm.o \
+                memoryManager.o \
+                nmethod.o \
+                objectMonitor.o \
+                runtimeService.o \
+                sharedRuntime.o \
+                synchronizer.o \
+                thread.o \
+                unsafe.o \
+                vmThread.o \
+                vmCMSOperations.o \
+                vmPSOperations.o \
+                vmGCOperations.o \
+
 # Dtrace is available, so we build $(DTRACE.o)  
 $(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)
 	@echo Compiling $(DTRACE).d
--- a/make/solaris/makefiles/gcc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/gcc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -49,7 +49,8 @@
 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
 USE_PRECOMPILED_HEADER=1
 PRECOMPILED_HEADER_DIR=.
-PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch
+PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled.hpp
+PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
 endif
 
 
@@ -131,6 +132,12 @@
 endif
 
 OPT_CFLAGS/NOOPT=-O0
+
+# Flags for generating make dependency flags.
+ifneq ("${CC_VER_MAJOR}", "2")
+DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
+endif
+
 #------------------------------------------------------------------------
 # Linker flags
 
--- a/make/solaris/makefiles/i486.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/i486.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -26,8 +26,6 @@
 CFLAGS += -DVM_LITTLE_ENDIAN
 
 # TLS helper, assembled from .s file
-# Not included in includeDB because it has no dependencies
-Obj_Files += solaris_x86_32.o
 
 #
 # Special case flags for compilers and compiler versions on i486.
--- a/make/solaris/makefiles/jvmti.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/jvmti.make	Tue Nov 30 18:10:20 2010 -0800
@@ -36,11 +36,10 @@
 
 JvmtiSrcDir = $(GAMMADIR)/src/share/vm/prims
 InterpreterSrcDir = $(GAMMADIR)/src/share/vm/interpreter
-Src_Dirs += $(JvmtiSrcDir)
 
 # set VPATH so make knows where to look for source files
-Src_Dirs_V = ${Src_Dirs}
-VPATH    += $(Src_Dirs_V:%=%:)
+Src_Dirs_V += $(JvmtiSrcDir)
+VPATH += $(Src_Dirs_V:%=%:)
 
 JvmtiGeneratedNames = \
         jvmtiEnv.hpp \
--- a/make/solaris/makefiles/launcher.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/launcher.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -69,7 +69,7 @@
 endif # Platform_compiler == sparcWorks
 
 launcher.o: launcher.c $(LAUNCHERDIR)/java.c $(LAUNCHERDIR)/java_md.c
-	$(CC) -g -c -o $@ launcher.c $(LAUNCHERFLAGS) $(CPPFLAGS)
+	$(CC) -g -c -o $@ launcher.c $(LAUNCHERFLAGS) $(CPPFLAGS) ${TARGET_DEFINES}
 
 launcher.c:
 	@echo Generating $@
--- a/make/solaris/makefiles/makedeps.make	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#
-# Copyright (c) 1999, 2008, 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.
-#  
-#
-
-include $(GAMMADIR)/make/solaris/makefiles/rules.make
-
-COMPILE.JAVAC.FLAGS += -d $(OUTDIR)
-
-MakeDepsSources=\
-	$(GAMMADIR)/src/share/tools/MakeDeps/Database.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/DirectoryTree.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/DirectoryTreeNode.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/FileFormatException.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/FileList.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/FileName.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/Macro.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/MacroDefinitions.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/MakeDeps.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/MetroWerksMacPlatform.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/Platform.java \
-	$(GAMMADIR)/src/share/tools/MakeDeps/UnixPlatform.java
-
-MakeDepsOptions=
--- a/make/solaris/makefiles/rules.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/rules.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 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
@@ -151,14 +151,14 @@
 %.o: %.cpp
 	@echo Compiling $<
 	$(QUIETLY) $(REMOVE_TARGET)
-	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
+	$(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
 else
 %.o: %.cpp
 	@echo Compiling $<
 	$(QUIETLY) $(REMOVE_TARGET)
 	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
-         $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \
-         $(COMPILE.CC) -o $@ $< $(COMPILE_DONE))
+	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
+	   $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
 endif
 
 %.o: %.s
--- a/make/solaris/makefiles/saproc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/saproc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -44,10 +44,9 @@
 
 # if $(AGENT_DIR) does not exist, we don't build SA
 
-checkAndBuildSA:
-	$(QUIETLY) if [ -d $(AGENT_DIR) ] ; then \
-	   $(MAKE) -f vm.make $(LIBSAPROC); \
-	fi
+ifneq ($(wildcard $(AGENT_DIR)),)
+  BUILDLIBSAPROC = $(LIBSAPROC)
+endif
 
 SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE))
 
@@ -75,10 +74,10 @@
 	           -ldl -ldemangle -lthread -lc
 	[ -f $(LIBSAPROC_G) ] || { ln -s $@ $(LIBSAPROC_G); }
 
-install_saproc: checkAndBuildSA
+install_saproc: $(BULDLIBSAPROC)
 	$(QUIETLY) if [ -f $(LIBSAPROC) ] ; then             \
 	  echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)";     \
 	  cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done";  \
 	fi
 
-.PHONY: checkAndBuildSA install_saproc
+.PHONY: install_saproc
--- a/make/solaris/makefiles/sparcWorks.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/sparcWorks.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -145,7 +145,12 @@
 OPT_CFLAGS/O2=-xO2
 OPT_CFLAGS/NOOPT=-xO1
 
-#################################################
+# Flags for creating the dependency files.
+ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
+DEPFLAGS = -xMMD -xMF $(DEP_DIR)/$(@:%=%.d)
+endif
+
+################################################
 # Begin current (>=5.9) Forte compiler options #
 #################################################
 
--- a/make/solaris/makefiles/sparcv9.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/sparcv9.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -22,7 +22,6 @@
 #  
 #
 
-Obj_Files += solaris_sparc.o
 ASFLAGS += $(AS_ARCHFLAG)
 
 ifeq ("${Platform_compiler}", "sparcWorks")
--- a/make/solaris/makefiles/top.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/top.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -31,7 +31,7 @@
 #   -generate sa-jdi.jar (JDI binding to core files)
 
 # It assumes the following flags are set:
-# CFLAGS Platform_file, Src_Dirs, SYSDEFS, AOUT, Jvm_Obj_Files
+# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Jvm_Obj_Files
 
 # -- D. Ungar (5/97) from a file by Bill Bush
 
@@ -44,42 +44,7 @@
 Plat_File   = $(Platform_file)
 CDG         = cd $(GENERATED); 
 
-# Pick up MakeDeps' sources and definitions
-include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/makedeps.make
-MakeDepsClass = MakeDeps.class
-MakeDeps    = $(RUN.JAVA) -classpath . MakeDeps
-
-Include_DBs/GC     = $(VM)/includeDB_gc \
-                     $(VM)/includeDB_gc_parallel \
-                     $(VM)/gc_implementation/includeDB_gc_parallelScavenge \
-                     $(VM)/gc_implementation/includeDB_gc_concurrentMarkSweep \
-                     $(VM)/gc_implementation/includeDB_gc_parNew \
-                     $(VM)/gc_implementation/includeDB_gc_g1 \
-                     $(VM)/gc_implementation/includeDB_gc_serial \
-                     $(VM)/gc_implementation/includeDB_gc_shared
-
-
-Include_DBs/KERNEL      = $(VM)/includeDB_core $(VM)/includeDB_gc \
-                          $(VM)/gc_implementation/includeDB_gc_serial \
-                          $(VM)/includeDB_jvmti \
-                          $(VM)/includeDB_compiler1
-
-Include_DBs/CORE        = $(VM)/includeDB_core   $(Include_DBs/GC) \
-                          $(VM)/includeDB_jvmti \
-                          $(VM)/includeDB_features
-Include_DBs/COMPILER1   = $(Include_DBs/CORE) $(VM)/includeDB_compiler1
-Include_DBs/COMPILER2   = $(Include_DBs/CORE) $(VM)/includeDB_compiler2
-Include_DBs/TIERED      = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 \
-                          $(VM)/includeDB_compiler2
-
-Include_DBs = $(Include_DBs/$(TYPE))
-
-Cached_plat = platform.current
-Cached_db   = includeDB.current
-
-Incremental_Lists =$(GENERATED)/$(Cached_db)
-# list generation also creates $(GENERATED)/$(Cached_plat)
-
+Cached_plat = $(GENERATED)/platform.current
 
 AD_Dir   = $(GENERATED)/adfiles
 ADLC     = $(AD_Dir)/adlc
@@ -98,7 +63,7 @@
 MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"`
 
 
-# default target: make makeDeps, update lists, make vm
+# default target: update lists, make vm
 # done in stages to force sequential order with parallel make
 #
 
@@ -106,38 +71,18 @@
 	@echo All done.
 
 # This is an explicit dependency for the sake of parallel makes.
-vm_build_preliminaries:  checks $(Incremental_Lists) $(AD_Files_If_Required) jvmti_stuff sa_stuff
+vm_build_preliminaries:  checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff sa_stuff
 	@# We need a null action here, so implicit rules don't get consulted.
 
-# make makeDeps: (and zap the cached db files to force a nonincremental run)
-
-$(GENERATED)/$(MakeDepsClass): $(MakeDepsSources)
-	@$(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -d $(GENERATED) $(MakeDepsSources)
-	@echo Removing $(Incremental_Lists) to force regeneration.
-	@rm -f $(Incremental_Lists)
-	@$(CDG) echo >$(Cached_plat)
-
-# make incremental_lists, if cached files out of date, run makeDeps
-
-$(Incremental_Lists):  $(Include_DBs) $(Plat_File) $(GENERATED)/$(MakeDepsClass)
-	$(CDG)  cat $(Include_DBs) > includeDB
-	$(CDG) if [ ! -r incls ] ; then \
-	mkdir incls ; \
-	fi
-	$(CDG)  $(MakeDeps) diffs UnixPlatform $(Cached_plat) $(Cached_db) $(Plat_File) includeDB $(MakeDepsOptions)
-	$(CDG)  cp includeDB    $(Cached_db)
-	$(CDG)  cp $(Plat_File) $(Cached_plat)
-
-# symbolic target for command lines
-lists: $(Incremental_Lists)
-	@: lists are now up to date
+$(Cached_plat): $(Plat_File)
+	$(CDG) cp $(Plat_File) $(Cached_plat)
 
 # make AD files as necessary
-ad_stuff: $(Incremental_Lists) $(adjust-mflags)
+ad_stuff: $(Cached_plat) $(adjust-mflags)
 	@$(MAKE) -f adlc.make $(MFLAGS-adjusted)
 
 # generate JVMTI files from the spec
-jvmti_stuff: $(Incremental_Lists) $(adjust-mflags)
+jvmti_stuff: $(Cached_plat) $(adjust-mflags)
 	@$(MAKE) -f jvmti.make $(MFLAGS-adjusted)
 
 # generate SA jar files and native header
@@ -172,7 +117,6 @@
 # this should force everything to be rebuilt
 clean: 
 	rm -f $(GENERATED)/*.class
-	$(MAKE) $(MFLAGS) $(GENERATED)/$(MakeDepsClass)
 	$(MAKE) -f vm.make $(MFLAGS) clean
 
 # just in case it doesn't, this should do it
--- a/make/solaris/makefiles/vm.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/solaris/makefiles/vm.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -35,23 +35,23 @@
 # Defs
 
 GENERATED     = ../generated
+DEP_DIR       = $(GENERATED)/dependencies
 
-# read a generated file defining the set of .o's and the .o .h dependencies
-include $(GENERATED)/Dependencies
+# reads the generated files defining the set of .o's and the .o .h dependencies
+-include $(DEP_DIR)/*.d
 
 # read machine-specific adjustments (%%% should do this via buildtree.make?)
 include $(MAKEFILES_DIR)/$(BUILDARCH).make
 
 # set VPATH so make knows where to look for source files
-# Src_Dirs is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
-# The incls directory contains generated header file lists for inclusion.
+# Src_Dirs_V is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
 # The adfiles directory contains ad_<arch>.[ch]pp.
 # The jvmtifiles directory contains jvmti*.[ch]pp
-Src_Dirs_V = $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED)/incls
-VPATH    += $(Src_Dirs_V:%=%:)
+Src_Dirs_V += $(GENERATED)/adfiles $(GENERATED)/jvmtifiles
+VPATH += $(Src_Dirs_V:%=%:)
 
 # set INCLUDES for C preprocessor
-Src_Dirs_I = $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED) 
+Src_Dirs_I += $(GENERATED)
 INCLUDES += $(Src_Dirs_I:%=-I%)
 
 ifeq (${VERSION}, debug)
@@ -135,6 +135,62 @@
 LIBJVM   = lib$(JVM).so
 LIBJVM_G = lib$(JVM)$(G_SUFFIX).so
 
+CORE_PATHS := $(shell find $(GAMMADIR)/src/share/vm/* -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \))
+CORE_PATHS += $(GAMMADIR)/src/os/$(Platform_os_family)/vm
+CORE_PATHS += $(GAMMADIR)/src/cpu/$(Platform_arch)/vm
+CORE_PATHS += $(GAMMADIR)/src/os_cpu/$(Platform_os_arch)/vm
+CORE_PATHS += $(GENERATED)/jvmtifiles
+
+COMPILER1_PATHS := $(GAMMADIR)/src/share/vm/c1
+
+COMPILER2_PATHS := $(GAMMADIR)/src/share/vm/opto
+COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt
+COMPILER2_PATHS +=  $(GENERATED)/adfiles
+
+# Include dirs per type.
+Src_Dirs/CORE      := $(CORE_PATHS)
+Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
+Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
+Src_Dirs/TIERED    := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
+Src_Dirs/ZERO      := $(CORE_PATHS)
+Src_Dirs/SHARK     := $(CORE_PATHS)
+Src_Dirs := $(Src_Dirs/$(TYPE))
+
+COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp chaitin\* c2_\* runtime_\*
+COMPILER1_SPECIFIC_FILES := c1_\*
+SHARK_SPECIFIC_FILES     := shark
+ZERO_SPECIFIC_FILES      := zero
+
+# Always exclude these.
+Src_Files_EXCLUDE := dtrace jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp
+
+# Exclude per type.
+Src_Files_EXCLUDE/CORE      := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
+Src_Files_EXCLUDE/COMPILER1 := $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
+Src_Files_EXCLUDE/COMPILER2 := $(COMPILER1_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
+Src_Files_EXCLUDE/TIERED    := $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
+Src_Files_EXCLUDE/ZERO      := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
+Src_Files_EXCLUDE/SHARK     := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES)
+
+Src_Files_EXCLUDE +=  $(Src_Files_EXCLUDE/$(TYPE))
+
+# Special handling of arch model.
+ifeq ($(Platform_arch_model), x86_32)
+Src_Files_EXCLUDE += \*x86_64\*
+endif
+ifeq ($(Platform_arch_model), x86_64)
+Src_Files_EXCLUDE += \*x86_32\*
+endif
+
+# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
+define findsrc
+	$(notdir $(shell find $(1) \( -name \*.c -o -name \*.cpp -o -name \*.s \) -a \! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \) ))
+endef
+
+Src_Files := $(foreach e,$(Src_Dirs),$(call findsrc,$(e)))
+
+Obj_Files = $(addsuffix .o,$(basename $(Src_Files)))
+
 JVM_OBJ_FILES = $(Obj_Files) $(DTRACE_OBJS)
 
 vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
@@ -205,7 +261,7 @@
 
 #----------------------------------------------------------------------
 
-build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(LIBJVM_DTRACE) checkAndBuildSA dtraceCheck
+build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(LIBJVM_DTRACE) $(BUILDLIBSAPROC) dtraceCheck
 
 install: install_jvm install_jsig install_saproc
 
--- a/make/windows/README	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-Copyright (c) 2007 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.
-
-________________________________________________________________________________
-
-__Introduction__________________________________________________________________
-
-This readme file should provide all the information needed to build
-the HotSpot VM for Windows 95/Windows NT from its teamware workspace.
-It is intended as a starting point for people who want to learn how
-to work with the current HotSpot source workspace and who need to
-build the VM locally. It is not intended as a tutorial for licensees.
-
-Last update: 03/28/05
-
-
-__Platform______________________________________________________________________
-
-The VM builds under the following platforms:
-- Windows NT 4.0 on Intel x486 or greater
-- x486 PC (or greater), 32MByte or more
-
-
-__Tools_________________________________________________________________________
-
-For building/testing the following tools need to be available:
-- Microsoft Visual C++ 6.0 (with nmake version 1.62.7022 or greater)
-- MKS Toolkit 6.1 or greater
-  see: /net/reinstall/export/vol0/pc-archive/software/mks6.1 (NFS)
-   or: \\reinstall\pc-archive\software\mks6.1                (NT)
-
-
-__JDK___________________________________________________________________________
-
-The workspace works with the following version of the JDK:
-(NOTE: these are out of date)
-- JDK1.2FCS "V" build
-  see: /usr/local/java/jdk1.2/win32
-
-and the following version(s) of HotJava:
-- hjb1.1.4
-- hjb1.1.5
-  see /usr/local/java/hjb1.1.x/win32
-
-
-__Environment variables_________________________________________________________
-
-The following environment variables need to be set up for the IDE
-build process.  For batch builds these do not need to be set.
-
-HotSpotMksHome     points to the (NFS or PC-local) directory where the MKS
-                   executables (like sh.exe and grep.exe) are installed
-
-Optionally you may set the following variables in your environment and they
-will be picked up by the create.bat script used to generate the vm.vcproj files.
-See the section on building within MS Developer Studio for more details.
-
-HotSpotWorkSpace   points to the (NFS) directory where the workspace is located
-HotSpotBuildSpace  points to the (PC-local) directory where the vm is built
-HotSpotReleaseBinDest points to the (NFS or PC-local) directory where the product DLL is
-		      written
-HotSpotDebugBinDest   points to the (NFS or PC-local) directory where the debug DLL is
-		      written
-
-NOTE: For both batch and IDE builds, java and javac must be in your
-PATH, and the versions found by default must work. (If this turns out
-to be a problem, we can define HotSpotJava and HotSpotJavaC for
-bootstrapping...)
-
-__Building the JVM from the command line________________________________________
-
-1) choose a directory in which you want to build the vm
-   (the build process will create a subdirectory)
-
-2) To build the 'core' version (debug || optimized)
-   %HotSpotWorkSpace%\build\windows\build <flavor> core %HotSpotWorkSpace% <jdk_dir>
-   To build the 'compiler2' version (debug || optimized)
-   %HotSpotWorkSpace%\build\windows\build <flavor> compiler2 %HotSpotWorkSpace% <jdk_dir>
-
-   where <jdk_dir> is a full path to a JDK in which bin/java and
-   bin/javac are present and working.
-
-3) If you have problems with building, first try:
-   vcvars32 <CR> (sets path for VC++)
-
-4) In addition to jvm.dll, the Serviceability Agent (SA) based JDI connector 
-   and command line tools are built if dbgeng.h and dbgeng.lib
-   can be located, and BUILD_WIN_SA=1 is specified.   We look for dbgeng.h here:
-        $(MSVCDIR)\PlatformSDK\Include
-        $(SYSTEMROOT)\..\Program Files\Microsoft SDK\include
-
-  The first directory is part of  Visual Studio VC .NET 2003.
-  The second is used on Windows-amd64.
-
-
-__Building the JVM from within MS Developer Studio______________________________
-
-0) Set environment variables as described above
-
-1) Run the following script:
-   %HotSpotWorkSpace%\build\windows\create <type> { <workspace> <buildspace> <productbindest> <debugbindest> }
-   where type is one of core, compiler1, compiler2.  If you leave off the
-   "<workspace> <buildspace> <productbindest> <debugbindest>" part, the script expects to find their
-   values in the HotSpotWorkSpace, HotSpotBuildSpace, HotSpotReleaseBinDest, and HotSpotDebugBinDest environment
-   variables.  The resulting vm.vcproj does not depend on these values in the environment.
-
-   This will populate the build space with the appropriate makefiles
-   and run nmake in it. This builds and runs makedeps, which now
-   generates the appropriate vm.vcproj into the build space. It also
-   builds and runs adlc.
-
-   To regenerate the .incl and .dsp files after changing the include
-   databases, just run nmake in the build space.
-
-   The build process now relies on java and javac. For the IDE builds,
-   the full path to a JDK (in which bin/java and bin/javac are present
-   and working) can be specified either explicitly with the
-   ALT_BOOTDIR environment variable (like the JDK build process), via
-   the JDK build's default BOOTDIR environment variable, via JAVA_HOME,
-   or implicitly via the PATH.
-
-   (Note that there are now many more command line options to MakeDeps
-   on the Windows platform than before. These have been bundled into
-   makefiles/makedeps.make, but it is still necessary to keep this in
-   sync with the batch makefiles, in vm/generated.)
-
-   If you have problems with building (i.e,. finding nmake), first try:
-   vcvars32 <CR> (sets path for VC++)
-
-2) Double-click the vm.vcproj file in the %HotSpotBuildSpace% directory
-   to open MS Developer Studio.
-
-3) build desired or all versions:
-   menu Build -> Batch Build... -> Build (or Rebuild All)
-
-4) jvm.dll is in the %HotSpotReleaseBinDest% or %HotSpotDebugBinDest% directory
-   depending on which configuration you built (release or debug).
-
-Note: do not edit any of the files (especially the vm.vcproj file) in the
-build space, since they are all either autogenerated or copied from
-the work space. If necessary, modify the original Makefiles in
-%HotSpotWorkSpace%\build\windows\projectfiles, or the shared
-makedeps arguments in
-%HotSpotWorkSpace%\build\windows\makefiles\makedeps.make.
-
-Note that it appears that some options set in the IDE (for example,
-the default executable) show up not in the .dsp file, but in the .opt
-file, so the automatic regeneration of the .dsp file should not
-destroy the project settings. However, makedeps.make should be edited
-to supply per-file compiler options.
-
-To build adlc from within the IDE for debugging purposes:
-
-1) in MS Developer Studio, open ADLCompiler.dsw:
-   menu File -> Open Workspace...
-   select & double-click ADLCompiler.dsw
-
-2) rebuild all (debug mode is enough)
-   menu Build -> Rebuild All (make sure Win32 Debug version is selected)
-
-
-__Testing the VM________________________________________________________________
-
-To test the VM using the Tonga Testsuite, use testlook. testlook is a very
-simple testing framework on top of Tonga which allows us to use one (Tonga)
-test file, that can be extended with attributes.
-
-1) copy %HotSpotWorkSpace%\test\testlook.bat onto PC (preferably
-   %HotSpotBuildSpace%\bin, which should ideally be in the path)
-
-2) run testlook <cr> or testlook help <cr> for details
-
-3) to run testlook you need to have Tonga mounted:
-   net use T: \\tapas\export1\psqe
-
-
-__HotJava under HotSpot_________________________________________________________
-
-To run HotJava, use the .bat file %HotSpotWorkSpace%\test\h.bat. Copy
-it into %HotSpotBuildSpace%/<flavor> (which ideally is in the path) and run
-HotJava: h java <flags> (e.g., h java_g -Xint).
-
-
-__Preferred directory setup under Windows NT____________________________________
-
-Within the HotSpot group we are using the following directory setup:
-
-D:\jdk1.2          - where we install the JDK
-
-The following drives are mounted for testing/putbacks/etc.:
-
-net use T: \\tapas\export1\psqe
-net use Y: \\rschmidt\GammaBase
-net use Z: \\animorphic\animorphic
--- a/make/windows/build.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/build.make	Tue Nov 30 18:10:20 2010 -0800
@@ -74,9 +74,11 @@
 
 !if "$(BUILDARCH)" != "ia64"
 !ifndef CC_INTERP
+!ifndef FORCE_TIERED
 FORCE_TIERED=1
 !endif
 !endif
+!endif
 
 !if "$(BUILDARCH)" == "amd64"
 Platform_arch=x86
@@ -100,7 +102,7 @@
 !if "$(Variant)" == "compiler1"
 VARIANT_TEXT=Client
 !elseif "$(Variant)" == "compiler2"
-!ifdef FORCE_TIERED
+!if "$(FORCE_TIERED)" == "1"
 VARIANT_TEXT=Server
 realVariant=tiered
 !else
--- a/make/windows/create.bat	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/create.bat	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 @echo off
 REM
-REM Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+REM Copyright (c) 1999, 2010, 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
@@ -26,11 +26,8 @@
 REM This is the interactive build setup script (as opposed to the batch
 REM build execution script). It creates $HotSpotBuildSpace if necessary,
 REM copies the appropriate files out of $HotSpotWorkSpace into it, and
-REM builds and runs MakeDeps in it. This has the side-effect of creating
+REM builds and runs ProjectCreator in it. This has the side-effect of creating
 REM the vm.vcproj file in the buildspace, which is then used in Visual C++.
-REM 
-REM The generated project file depends upon the include databases. If
-REM those are changed then MakeDeps is rerun.
 
 REM
 REM Since we don't have uname and we could be cross-compiling,
@@ -158,13 +155,31 @@
 echo Platform_arch=%Platform_arch%         >>    %HotSpotBuildSpace%\%%i\local.make
 echo Platform_arch_model=%Platform_arch_model% >>    %HotSpotBuildSpace%\%%i\local.make
 
-REM build config specific stuff
-
 pushd %HotSpotBuildSpace%\%%i
 nmake /nologo
 popd
+
 )
 
+pushd %HotSpotBuildSpace%
+
+echo # Generated file!                                                 >    local.make
+echo # Changing a variable below and then deleting %ProjectFile% will cause  >>    local.make
+echo # %ProjectFile% to be regenerated with the new values.  Changing the    >>    local.make
+echo # version requires rerunning create.bat.                         >>    local.make
+echo.                                      >>    local.make
+echo HOTSPOTWORKSPACE=%HotSpotWorkSpace%   >>    local.make
+echo HOTSPOTBUILDSPACE=%HotSpotBuildSpace% >>    local.make
+echo HOTSPOTJDKDIST=%HotSpotJDKDist%       >>    local.make
+echo ARCH=%ARCH%                           >>    local.make
+echo BUILDARCH=%BUILDARCH%                 >>    local.make
+echo Platform_arch=%Platform_arch%         >>    local.make
+echo Platform_arch_model=%Platform_arch_model% >>    local.make
+
+nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile %HotSpotBuildSpace%/%ProjectFile%
+
+popd
+
 goto end
 
 :usage
@@ -173,14 +188,11 @@
 echo This is the interactive build setup script (as opposed to the batch
 echo build execution script). It creates HotSpotBuildSpace if necessary,
 echo copies the appropriate files out of HotSpotWorkSpace into it, and
-echo builds and runs MakeDeps in it. This has the side-effect of creating
+echo builds and runs ProjectCreator in it. This has the side-effect of creating
 echo the %ProjectFile% file in the build space, which is then used in Visual C++.
 echo The HotSpotJDKDist defines place where JVM binaries should be placed.
 echo Environment variable FORCE_MSC_VER allows to override MSVC version autodetection.
 echo.
-echo The generated project file depends upon the include databases. If
-echo those are changed then MakeDeps is rerun.
-echo.
 echo NOTE that it is now NOT safe to modify any of the files in the build
 echo space, since they may be overwritten whenever this script is run or
 echo nmake is run in that directory.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/windows/create_obj_files.sh	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,124 @@
+#
+# Copyright (c) 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.
+#  
+#
+
+set -e
+
+# Note that we currently do not have a way to set HotSpotMksHome in
+# the batch build, but so far this has not seemed to be a problem. The
+# reason this environment variable is necessary is that it seems that
+# Windows truncates very long PATHs when executing shells like MKS's
+# sh, and it has been found that sometimes `which sh` fails.
+
+if [ "x$HotSpotMksHome" != "x" ]; then
+  TOOL_DIR="$HotSpotMksHome"
+else
+  # HotSpotMksHome is not set so use the directory that contains "sh".
+  # This works with both MKS and Cygwin.
+  SH=`which sh`
+  TOOL_DIR=`dirname "$SH"`
+fi
+
+DIRNAME="$TOOL_DIR/dirname"
+FIND="$TOOL_DIR/find"
+
+TYPE=$1
+Platform_arch=$2
+Platform_arch_model=$3
+Platform_os_family=windows
+Platform_os_arch=windows_$Platform_arch
+
+WorkSpace=$4
+GENERATED=$5
+
+BASE_PATHS="` $FIND ${WorkSpace}/src/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \)`"
+BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/share/vm/gc_implementation/shared"
+BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/os/${Platform_os_family}/vm"
+BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/cpu/${Platform_arch}/vm"
+BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/os_cpu/${Platform_os_arch}/vm"
+BASE_PATHS="${BASE_PATHS} ${GENERATED}/jvmtifiles"
+
+CORE_PATHS="${BASE_PATHS}"
+# shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS.
+CORE_PATHS="${CORE_PATHS} `$FIND ${WorkSpace}/src/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
+
+COMPILER1_PATHS="${WorkSpace}/src/share/vm/c1"
+
+COMPILER2_PATHS="${WorkSpace}/src/share/vm/opto"
+COMPILER2_PATHS="${COMPILER2_PATHS} ${WorkSpace}/src/share/vm/libadt"
+COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles"
+
+# Include dirs per type.
+case "${TYPE}" in
+    "core")      Src_Dirs="${CORE_PATHS}" ;;
+    "kernel")    Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS}" ;;
+    "compiler1") Src_Dirs="${CORE_PATHS} ${COMPILER1_PATHS}" ;;
+    "compiler2") Src_Dirs="${CORE_PATHS} ${COMPILER2_PATHS}" ;;
+    "tiered")    Src_Dirs="${CORE_PATHS} ${COMPILER1_PATHS} ${COMPILER2_PATHS}" ;;
+    "zero")      Src_Dirs="${CORE_PATHS}" ;;
+    "shark")     Src_Dirs="${CORE_PATHS}" ;;
+esac
+
+COMPILER2_SPECIFIC_FILES="opto libadt bcEscapeAnalyzer.cpp chaitin* c2_* runtime_*"
+COMPILER1_SPECIFIC_FILES="c1_*"
+SHARK_SPECIFIC_FILES="shark"
+ZERO_SPECIFIC_FILES="zero"
+
+# These files need to be excluded when building the kernel target.
+KERNEL_EXCLUDED_FILES="attachListener.cpp attachListener_windows.cpp dump.cpp dump_${Platform_arch_model}.cpp forte.cpp fprofiler.cpp heapDumper.cpp heapInspection.cpp jniCheck.cpp jvmtiCodeBlobEvents.cpp jvmtiExtensions.cpp jvmtiImpl.cpp jvmtiRawMonitor.cpp jvmtiTagMap.cpp jvmtiTrace.cpp restore.cpp serialize.cpp vmStructs.cpp g1MemoryPool.cpp psMemoryPool.cpp gcAdaptivePolicyCounters.cpp concurrentGCThread.cpp mutableNUMASpace.cpp allocationStats.cpp gSpaceCounters.cpp immutableSpace.cpp mutableSpace.cpp spaceCounters.cpp yieldingWorkgroup.cpp"
+
+# Always exclude these.
+Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp"
+
+# Exclude per type.
+case "${TYPE}" in
+    "core")      Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;;
+    "kernel")    Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ${KERNEL_EXCLUDED_FILES} ciTypeFlow.cpp" ;;
+    "compiler1") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;;
+    "compiler2") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;;
+    "tiered")    Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;;
+    "zero")      Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;;
+    "shark")     Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES}" ;;
+esac
+
+# Special handling of arch model.
+case "${Platform_arch_model}" in
+	"x86_32") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_64*" ;;
+	"x86_64") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_32*" ;;
+esac
+
+function findsrc {
+    $FIND ${1} \( -name \*.c -o -name \*.cpp -o -name \*.s \) -a \! \( -name ${Src_Files_EXCLUDE// / -o -name } \) | sed 's/.*\/\(.*\)/\1/';
+}
+
+Src_Files=
+for e in ${Src_Dirs}; do
+   Src_Files="${Src_Files}`findsrc ${e}` "
+done 
+
+Obj_Files=
+for e in ${Src_Files}; do
+	Obj_Files="${Obj_Files}${e%\.[!.]*}.obj "
+done
+
+echo Obj_Files=${Obj_Files}
--- a/make/windows/makefiles/adlc.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/makefiles/adlc.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -49,24 +49,13 @@
 CPP_FLAGS=$(CPP_FLAGS) /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE  
 
 CPP_INCLUDE_DIRS=\
-  /I "..\generated"                          \
-  /I "$(WorkSpace)\src\share\vm\compiler"    \
-  /I "$(WorkSpace)\src\share\vm\code"        \
-  /I "$(WorkSpace)\src\share\vm\interpreter" \
-  /I "$(WorkSpace)\src\share\vm\classfile"   \
-  /I "$(WorkSpace)\src\share\vm\asm"         \
-  /I "$(WorkSpace)\src\share\vm\memory"      \
-  /I "$(WorkSpace)\src\share\vm\oops"        \
-  /I "$(WorkSpace)\src\share\vm\prims"       \
-  /I "$(WorkSpace)\src\share\vm\runtime"     \
-  /I "$(WorkSpace)\src\share\vm\utilities"   \
-  /I "$(WorkSpace)\src\share\vm\libadt"      \
-  /I "$(WorkSpace)\src\share\vm\opto"        \
-  /I "$(WorkSpace)\src\os\windows\vm"          \
+  /I "..\generated" \
+  /I "$(WorkSpace)\src\share\vm" \
+  /I "$(WorkSpace)\src\os\windows\vm" \
   /I "$(WorkSpace)\src\cpu\$(Platform_arch)\vm"
 
-# NOTE! If you add any files here, you must also update GENERATED_NAMES_IN_INCL
-# and MakeDepsIDEOptions in makedeps.make. 
+# NOTE! If you add any files here, you must also update GENERATED_NAMES_IN_DIR
+# and ProjectCreatorIDEOptions in projectcreator.make. 
 GENERATED_NAMES=\
   ad_$(Platform_arch_model).cpp \
   ad_$(Platform_arch_model).hpp \
@@ -81,18 +70,18 @@
   dfa_$(Platform_arch_model).cpp
 
 # NOTE! This must be kept in sync with GENERATED_NAMES
-GENERATED_NAMES_IN_INCL=\
-  incls/ad_$(Platform_arch_model).cpp \
-  incls/ad_$(Platform_arch_model).hpp \
-  incls/ad_$(Platform_arch_model)_clone.cpp \
-  incls/ad_$(Platform_arch_model)_expand.cpp \
-  incls/ad_$(Platform_arch_model)_format.cpp \
-  incls/ad_$(Platform_arch_model)_gen.cpp \
-  incls/ad_$(Platform_arch_model)_misc.cpp \
-  incls/ad_$(Platform_arch_model)_peephole.cpp \
-  incls/ad_$(Platform_arch_model)_pipeline.cpp \
-  incls/adGlobals_$(Platform_arch_model).hpp \
-  incls/dfa_$(Platform_arch_model).cpp
+GENERATED_NAMES_IN_DIR=\
+  $(AdlcOutDir)\ad_$(Platform_arch_model).cpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model).hpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model)_clone.cpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model)_expand.cpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model)_format.cpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model)_gen.cpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model)_misc.cpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model)_peephole.cpp \
+  $(AdlcOutDir)\ad_$(Platform_arch_model)_pipeline.cpp \
+  $(AdlcOutDir)\adGlobals_$(Platform_arch_model).hpp \
+  $(AdlcOutDir)\dfa_$(Platform_arch_model).cpp
 
 {$(WorkSpace)\src\share\vm\adlc}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(EXH_FLAGS) $(CPP_INCLUDE_DIRS) /c $<
@@ -110,10 +99,12 @@
 	$(MT) /manifest $@.manifest /outputresource:$@;#1
 !endif
 
-$(GENERATED_NAMES_IN_INCL): $(Platform_arch_model).ad adlc.exe includeDB.current 
+$(GENERATED_NAMES_IN_DIR): $(Platform_arch_model).ad adlc.exe
 	rm -f $(GENERATED_NAMES)
+	if exist $(AdlcOutDir) rmdir /s /q $(AdlcOutDir)
+	mkdir $(AdlcOutDir)
 	$(ADLC) $(ADLCFLAGS) $(Platform_arch_model).ad
-	mv $(GENERATED_NAMES) incls/
+	mv $(GENERATED_NAMES) $(AdlcOutDir)/
 
 $(Platform_arch_model).ad: $(WorkSpace)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad $(WorkSpace)/src/os_cpu/windows_$(Platform_arch)/vm/windows_$(Platform_arch_model).ad
 	rm -f $(Platform_arch_model).ad
--- a/make/windows/makefiles/debug.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/makefiles/debug.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 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
@@ -38,8 +38,6 @@
 !include $(WorkSpace)/make/windows/makefiles/vm.make
 !include local.make
 
-!include $(GENERATED)/Dependencies
-
 HS_BUILD_ID=$(HS_BUILD_VER)-debug
 
 # Force resources to be rebuilt every time
--- a/make/windows/makefiles/fastdebug.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/makefiles/fastdebug.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -38,8 +38,6 @@
 !include $(WorkSpace)/make/windows/makefiles/vm.make
 !include local.make
 
-!include $(GENERATED)/Dependencies
-
 HS_BUILD_ID=$(HS_BUILD_VER)-fastdebug
 
 # Force resources to be rebuilt every time
@@ -57,6 +55,5 @@
 	$(MT) /manifest $@.manifest /outputresource:$@;#2
 !endif
 
-
 !include $(WorkSpace)/make/windows/makefiles/shared.make
 !include $(WorkSpace)/make/windows/makefiles/sa.make
--- a/make/windows/makefiles/generated.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/makefiles/generated.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -23,7 +23,7 @@
 #
 
 !include ../local.make
-!include $(WorkSpace)/make/windows/makefiles/makedeps.make
+!include $(WorkSpace)/make/windows/makefiles/projectcreator.make
 !include local.make
 
 # Pick up rules for building JVMTI (JSR-163)
@@ -33,65 +33,21 @@
 # Pick up rules for building SA
 !include $(WorkSpace)/make/windows/makefiles/sa.make
 
-!if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
-default:: includeDB.current Dependencies incls/ad_$(Platform_arch_model).cpp incls/dfa_$(Platform_arch_model).cpp $(JvmtiGeneratedFiles)
-!else
-default:: includeDB.current Dependencies $(JvmtiGeneratedFiles)
-!endif
-
-# core plus serial gc
-IncludeDBs_base=$(WorkSpace)/src/share/vm/includeDB_core \
-           $(WorkSpace)/src/share/vm/includeDB_jvmti \
-           $(WorkSpace)/src/share/vm/includeDB_gc \
-           $(WorkSpace)/src/share/vm/gc_implementation/includeDB_gc_serial
+AdlcOutDir=adfiles
 
-# parallel gc
-IncludeDBs_gc= $(WorkSpace)/src/share/vm/includeDB_gc_parallel \
-           $(WorkSpace)/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge \
-           $(WorkSpace)/src/share/vm/gc_implementation/includeDB_gc_shared \
-           $(WorkSpace)/src/share/vm/gc_implementation/includeDB_gc_parNew \
-           $(WorkSpace)/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep \
-           $(WorkSpace)/src/share/vm/gc_implementation/includeDB_gc_g1
-
-IncludeDBs_core=$(IncludeDBs_base) $(IncludeDBs_gc) \
-                $(WorkSpace)/src/share/vm/includeDB_features
-
-!if "$(Variant)" == "core"
-IncludeDBs=$(IncludeDBs_core)
+!if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
+default:: $(AdlcOutDir)/ad_$(Platform_arch_model).cpp $(AdlcOutDir)/dfa_$(Platform_arch_model).cpp $(JvmtiGeneratedFiles) buildobjfiles
+!else
+default:: $(JvmtiGeneratedFiles) buildobjfiles
 !endif
 
-!if "$(Variant)" == "kernel"
-IncludeDBs=$(IncludeDBs_base) $(WorkSpace)/src/share/vm/includeDB_compiler1
-!endif
-
-!if "$(Variant)" == "compiler1"
-IncludeDBs=$(IncludeDBs_core) $(WorkSpace)/src/share/vm/includeDB_compiler1
-!endif
-
-
-!if "$(Variant)" == "compiler2"
-IncludeDBs=$(IncludeDBs_core) $(WorkSpace)/src/share/vm/includeDB_compiler2
-!endif
+buildobjfiles:
+	@ sh $(WorkSpace)/make/windows/create_obj_files.sh $(Variant) $(Platform_arch) $(Platform_arch_model) $(WorkSpace) .	> objfiles.make
 
-!if "$(Variant)" == "tiered"
-IncludeDBs=$(IncludeDBs_core) $(WorkSpace)/src/share/vm/includeDB_compiler1 \
-           $(WorkSpace)/src/share/vm/includeDB_compiler2
-!endif
-
-# Note we don't generate a Visual C++ project file using MakeDeps for
-# the batch build.
-includeDB.current Dependencies: classes/MakeDeps.class $(IncludeDBs)
-	cat $(IncludeDBs) > includeDB
-	if exist incls rmdir /s /q incls
-	mkdir incls
-	$(RUN_JAVA) -Djava.class.path=classes MakeDeps WinGammaPlatform$(VcVersion) $(WorkSpace)/make/windows/platform_$(BUILDARCH) includeDB $(MakeDepsOptions)
-	rm -f includeDB.current
-	cp includeDB includeDB.current
-
-classes/MakeDeps.class: $(MakeDepsSources)
+classes/ProjectCreator.class: $(ProjectCreatorSources)
 	if exist classes rmdir /s /q classes
 	mkdir classes
-	$(COMPILE_JAVAC) -classpath $(WorkSpace)\src\share\tools\MakeDeps -d classes $(MakeDepsSources)
+	$(COMPILE_JAVAC) -classpath $(WorkSpace)\src\share\tools\ProjectCreator -d classes $(ProjectCreatorSources)
 
 !if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
 
--- a/make/windows/makefiles/makedeps.make	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-#
-# Copyright (c) 1999, 2009, 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.
-#  
-#
-
-!include $(WorkSpace)/make/windows/makefiles/rules.make
-
-# This is used externally by both batch and IDE builds, so can't
-# reference any of the HOTSPOTWORKSPACE, HOTSPOTBUILDSPACE,
-# HOTSPOTRELEASEBINDEST, or HOTSPOTDEBUGBINDEST environment variables.
-#
-# NOTE: unfortunately the MakeDepsSources list must be kept
-# synchronized between this and the Solaris version
-# (make/solaris/makefiles/makedeps.make).
-
-MakeDepsSources=\
-        $(WorkSpace)\src\share\tools\MakeDeps\Database.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\DirectoryTree.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\DirectoryTreeNode.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\FileFormatException.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\FileList.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\FileName.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\Macro.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\MacroDefinitions.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\MakeDeps.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\MetroWerksMacPlatform.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\Platform.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\UnixPlatform.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatform.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC6.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC7.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC8.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\WinGammaPlatformVC9.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\Util.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\BuildConfig.java \
-        $(WorkSpace)\src\share\tools\MakeDeps\ArgsParser.java
-
-# This is only used internally
-MakeDepsIncludesPRIVATE=\
-        -relativeInclude src\share\vm\c1 \
-        -relativeInclude src\share\vm\compiler \
-        -relativeInclude src\share\vm\code \
-        -relativeInclude src\share\vm\interpreter \
-        -relativeInclude src\share\vm\ci \
-        -relativeInclude src\share\vm\classfile \
-        -relativeInclude src\share\vm\gc_implementation\parallelScavenge \
-        -relativeInclude src\share\vm\gc_implementation\shared \
-        -relativeInclude src\share\vm\gc_implementation\parNew \
-        -relativeInclude src\share\vm\gc_implementation\concurrentMarkSweep \
-        -relativeInclude src\share\vm\gc_implementation\g1 \
-        -relativeInclude src\share\vm\gc_interface \
-        -relativeInclude src\share\vm\asm \
-        -relativeInclude src\share\vm\memory \
-        -relativeInclude src\share\vm\oops \
-        -relativeInclude src\share\vm\prims \
-        -relativeInclude src\share\vm\runtime \
-        -relativeInclude src\share\vm\services \
-        -relativeInclude src\share\vm\utilities \
-        -relativeInclude src\share\vm\libadt \
-        -relativeInclude src\share\vm\opto \
-        -relativeInclude src\os\windows\vm \
-        -relativeInclude src\os_cpu\windows_$(Platform_arch)\vm \
-        -relativeInclude src\cpu\$(Platform_arch)\vm
-
-# This is referenced externally by both the IDE and batch builds
-MakeDepsOptions=
-
-# This is used externally, but only by the IDE builds, so we can
-# reference environment variables which aren't defined in the batch
-# build process.
-
-MakeDepsIDEOptions = \
-        -useToGeneratePch  java.cpp \
-        -disablePch        os_windows.cpp \
-        -disablePch        os_windows_$(Platform_arch).cpp \
-        -disablePch        osThread_windows.cpp \
-        -disablePch        bytecodeInterpreter.cpp \
-        -disablePch        bytecodeInterpreterWithChecks.cpp \
-	-disablePch        getThread_windows_$(Platform_arch).cpp \
-        -disablePch_compiler2     opcodes.cpp    
-
-# Common options for the IDE builds for core, c1, and c2
-MakeDepsIDEOptions=\
-        $(MakeDepsIDEOptions) \
-        -sourceBase $(HOTSPOTWORKSPACE) \
-	-buildBase $(HOTSPOTBUILDSPACE)\%f\%b \
-        -startAt src \
-	-compiler $(VcVersion) \
-        -projectFileName $(HOTSPOTBUILDSPACE)\$(ProjectFile) \
-        -jdkTargetRoot $(HOTSPOTJDKDIST) \
-        -define ALIGN_STACK_FRAMES \
-        -define VM_LITTLE_ENDIAN \
-        -additionalFile includeDB_compiler1 \
-        -additionalFile includeDB_compiler2 \
-        -additionalFile includeDB_core \
-        -additionalFile includeDB_features \
-        -additionalFile includeDB_jvmti \
-        -additionalFile includeDB_gc \
-        -additionalFile includeDB_gc_parallel \
-        -additionalFile includeDB_gc_parallelScavenge \
-        -additionalFile includeDB_gc_concurrentMarkSweep \
-        -additionalFile includeDB_gc_g1 \
-        -additionalFile includeDB_gc_parNew \
-        -additionalFile includeDB_gc_shared \
-        -additionalFile includeDB_gc_serial \
-        -additionalGeneratedFile $(HOTSPOTBUILDSPACE)\%f\%b vm.def \
-        -prelink  "" "Generating vm.def..." "cd $(HOTSPOTBUILDSPACE)\%f\%b	set HOTSPOTMKSHOME=$(HOTSPOTMKSHOME)	$(HOTSPOTMKSHOME)\sh $(HOTSPOTWORKSPACE)\make\windows\build_vm_def.sh $(LINK_VER)" \
-       $(MakeDepsIncludesPRIVATE)
-
-# Add in build-specific options
-!if "$(BUILDARCH)" == "i486"
-MakeDepsIDEOptions=$(MakeDepsIDEOptions) -define IA32
-!endif
-
-##################################################
-# JKERNEL specific options
-##################################################
-MakeDepsIDEOptions=$(MakeDepsIDEOptions) \
- -define_kernel KERNEL \
-
-##################################################
-# Client(C1) compiler specific options
-##################################################
-MakeDepsIDEOptions=$(MakeDepsIDEOptions) \
- -define_compiler1 COMPILER1 \
-
-##################################################
-# Server(C2) compiler specific options
-##################################################
-#NOTE! This list must be kept in sync with GENERATED_NAMES in adlc.make.
-MakeDepsIDEOptions=$(MakeDepsIDEOptions) \
- -define_compiler2 COMPILER2 \
- -absoluteInclude_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls \
- -additionalFile_compiler2 $(Platform_arch_model).ad \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model).cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model).hpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model)_clone.cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model)_expand.cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model)_format.cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model)_gen.cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model)_misc.cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model)_peephole.cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls ad_$(Platform_arch_model)_pipeline.cpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls adGlobals_$(Platform_arch_model).hpp \
- -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/incls dfa_$(Platform_arch_model).cpp 
-
-# Add in the jvmti (JSR-163) options
-# NOTE: do not pull in jvmtiEnvRecommended.cpp.  This file is generated
-#       so the programmer can diff it with jvmtiEnv.cpp to be sure the
-#       code merge was done correctly (@see jvmti.make and jvmtiEnvFill.java).
-#       If so, they would then check it in as a new version of jvmtiEnv.cpp.
-MakeDepsIDEOptions=$(MakeDepsIDEOptions) \
- -absoluteInclude $(HOTSPOTBUILDSPACE)/jvmtifiles \
- -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/jvmtifiles jvmtiEnv.hpp \
- -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/jvmtifiles jvmtiEnter.cpp \
- -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/jvmtifiles jvmtiEnterTrace.cpp \
- -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/jvmtifiles jvmti.h \
- -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/jvmtifiles bytecodeInterpreterWithChecks.cpp 
--- a/make/windows/makefiles/product.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/makefiles/product.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -41,8 +41,6 @@
 !include $(WorkSpace)/make/windows/makefiles/vm.make
 !include local.make
 
-!include $(GENERATED)/Dependencies
-
 HS_BUILD_ID=$(HS_BUILD_VER)
 
 # Force resources to be rebuilt every time
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/windows/makefiles/projectcreator.make	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,234 @@
+#
+# 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.
+#  
+#
+
+!include $(WorkSpace)/make/windows/makefiles/rules.make
+
+# This is used externally by both batch and IDE builds, so can't
+# reference any of the HOTSPOTWORKSPACE, HOTSPOTBUILDSPACE,
+# HOTSPOTRELEASEBINDEST, or HOTSPOTDEBUGBINDEST environment variables.
+#
+# NOTE: unfortunately the ProjectCreatorSources list must be kept
+# synchronized between this and the Solaris version
+# (make/solaris/makefiles/projectcreator.make).
+
+ProjectCreatorSources=\
+        $(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 \
+        $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC7.java \
+        $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC8.java \
+        $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC9.java \
+        $(WorkSpace)\src\share\tools\ProjectCreator\Util.java \
+        $(WorkSpace)\src\share\tools\ProjectCreator\BuildConfig.java \
+        $(WorkSpace)\src\share\tools\ProjectCreator\ArgsParser.java
+
+# This is only used internally
+ProjectCreatorIncludesPRIVATE=\
+        -relativeInclude src\share\vm \
+        -relativeInclude src\share\vm\prims \
+        -relativeInclude src\os\windows\vm \
+        -relativeInclude src\os_cpu\windows_$(Platform_arch)\vm \
+        -relativeInclude src\cpu\$(Platform_arch)\vm \
+        -absoluteInclude $(HOTSPOTBUILDSPACE)/%f/generated \
+        -ignorePath $(HOTSPOTBUILDSPACE)/%f/generated \
+        -ignorePath src\share\vm\adlc \
+        -ignorePath src\share\vm\shark
+
+# This is referenced externally by both the IDE and batch builds
+ProjectCreatorOptions=
+
+# This is used externally, but only by the IDE builds, so we can
+# reference environment variables which aren't defined in the batch
+# build process.
+
+ProjectCreatorIDEOptions = \
+        -useToGeneratePch  java.cpp \
+        -disablePch        os_windows.cpp \
+        -disablePch        os_windows_$(Platform_arch).cpp \
+        -disablePch        osThread_windows.cpp \
+        -disablePch        bytecodeInterpreter.cpp \
+        -disablePch        bytecodeInterpreterWithChecks.cpp \
+        -disablePch        getThread_windows_$(Platform_arch).cpp \
+        -disablePch_compiler2     opcodes.cpp    
+
+# Common options for the IDE builds for core, c1, and c2
+ProjectCreatorIDEOptions=\
+        $(ProjectCreatorIDEOptions) \
+        -sourceBase $(HOTSPOTWORKSPACE) \
+        -buildBase $(HOTSPOTBUILDSPACE)\%f\%b \
+        -startAt src \
+        -compiler $(VcVersion) \
+        -projectFileName $(HOTSPOTBUILDSPACE)\$(ProjectFile) \
+        -jdkTargetRoot $(HOTSPOTJDKDIST) \
+        -define ALIGN_STACK_FRAMES \
+        -define VM_LITTLE_ENDIAN \
+        -prelink  "" "Generating vm.def..." "cd $(HOTSPOTBUILDSPACE)\%f\%b	set HOTSPOTMKSHOME=$(HOTSPOTMKSHOME)	$(HOTSPOTMKSHOME)\sh $(HOTSPOTWORKSPACE)\make\windows\build_vm_def.sh $(LINK_VER)" \
+        -ignoreFile jsig.c \
+        -ignoreFile jvmtiEnvRecommended.cpp \
+        -ignoreFile jvmtiEnvStub.cpp \
+        -ignoreFile globalDefinitions_gcc.hpp \
+        -ignoreFile globalDefinitions_sparcWorks.hpp \
+        -ignoreFile version.rc \
+        -ignoreFile Xusage.txt \
+        -define TARGET_ARCH_x86 \
+        -define TARGET_OS_ARCH_windows_x86 \
+        -define TARGET_OS_FAMILY_windows \
+        -define TARGET_COMPILER_visCPP \
+       $(ProjectCreatorIncludesPRIVATE)
+
+# Add in build-specific options
+!if "$(BUILDARCH)" == "i486"
+ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
+        -define IA32 \
+        -ignorePath x86_64 \
+        -define TARGET_ARCH_MODEL_x86_32
+!else
+ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
+        -ignorePath x86_32 \
+        -define TARGET_ARCH_MODEL_x86_64
+!endif
+
+ProjectCreatorIDEOptionsIgnoreCompiler1=\
+ -ignorePath_TARGET c1_
+
+ProjectCreatorIDEOptionsIgnoreCompiler2=\
+ -ignorePath_TARGET src/share/vm/opto \
+ -ignorePath_TARGET src/share/vm/libadt \
+ -ignorePath_TARGET adfiles \
+ -ignoreFile_TARGET bcEscapeAnalyzer.cpp \
+ -ignoreFile_TARGET bcEscapeAnalyzer.hpp \
+ -ignorePath_TARGET chaitin \
+ -ignorePath_TARGET c2_ \
+ -ignorePath_TARGET runtime_ \
+ -ignoreFile_TARGET ciTypeFlow.cpp \
+ -ignoreFile_TARGET ciTypeFlow.hpp \
+ -ignoreFile_TARGET $(Platform_arch_model).ad
+
+##################################################
+# Without compiler(core) specific options
+##################################################
+ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
+$(ProjectCreatorIDEOptionsIgnoreCompiler1:TARGET=core) \
+$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=core)
+
+##################################################
+# JKERNEL specific options
+##################################################
+ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
+ -define_kernel KERNEL \
+$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=kernel) \
+ -ignorePath_kernel src/share/vm/gc_implementation/parallelScavenge \
+ -ignorePath_kernel src/share/vm/gc_implementation/parNew \
+ -ignorePath_kernel src/share/vm/gc_implementation/concurrentMarkSweep \
+ -ignorePath_kernel src/share/vm/gc_implementation/g1 \
+ -ignoreFile_kernel attachListener.cpp \
+ -ignoreFile_kernel attachListener_windows.cpp \
+ -ignoreFile_kernel dump.cpp \
+ -ignoreFile_kernel dump_$(Platform_arch_model).cpp \
+ -ignoreFile_kernel forte.cpp \
+ -ignoreFile_kernel fprofiler.cpp \
+ -ignoreFile_kernel heapDumper.cpp \
+ -ignoreFile_kernel heapInspection.cpp \
+ -ignoreFile_kernel jniCheck.cpp \
+ -ignoreFile_kernel jvmtiCodeBlobEvents.cpp \
+ -ignoreFile_kernel jvmtiExtensions.cpp \
+ -ignoreFile_kernel jvmtiImpl.cpp \
+ -ignoreFile_kernel jvmtiRawMonitor.cpp \
+ -ignoreFile_kernel jvmtiTagMap.cpp \
+ -ignoreFile_kernel jvmtiTrace.cpp \
+ -ignoreFile_kernel jvmtiTrace.hpp \
+ -ignoreFile_kernel restore.cpp \
+ -ignoreFile_kernel serialize.cpp \
+ -ignoreFile_kernel vmStructs.cpp \
+ -ignoreFile_kernel g1MemoryPool.cpp \
+ -ignoreFile_kernel g1MemoryPool.hpp \
+ -ignoreFile_kernel psMemoryPool.cpp \
+ -ignoreFile_kernel psMemoryPool.hpp \
+ -ignoreFile_kernel gcAdaptivePolicyCounters.cpp \
+ -ignoreFile_kernel concurrentGCThread.cpp \
+ -ignoreFile_kernel mutableNUMASpace.cpp \
+ -ignoreFile_kernel ciTypeFlow.cpp \
+ -ignoreFile_kernel ciTypeFlow.hpp \
+ -ignoreFile_kernel oop.pcgc.inline.hpp \
+ -ignoreFile_kernel oop.psgc.inline.hpp \
+ -ignoreFile_kernel allocationStats.cpp \
+ -ignoreFile_kernel allocationStats.hpp \
+ -ignoreFile_kernel concurrentGCThread.hpp \
+ -ignoreFile_kernel gSpaceCounters.cpp \
+ -ignoreFile_kernel gSpaceCounters.hpp \
+ -ignoreFile_kernel gcAdaptivePolicyCounters.hpp \
+ -ignoreFile_kernel immutableSpace.cpp \
+ -ignoreFile_kernel mutableNUMASpace.hpp \
+ -ignoreFile_kernel mutableSpace.cpp \
+ -ignoreFile_kernel spaceCounters.cpp \
+ -ignoreFile_kernel spaceCounters.hpp \
+ -ignoreFile_kernel yieldingWorkgroup.cpp \
+ -ignoreFile_kernel yieldingWorkgroup.hpp \
+ -ignorePath_kernel vmStructs_ \
+ -ignoreFile_kernel $(Platform_arch_model).ad \
+ -additionalFile_kernel gcTaskManager.hpp
+
+##################################################
+# Client(C1) compiler specific options
+##################################################
+ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
+ -define_compiler1 COMPILER1 \
+$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=compiler1)
+
+##################################################
+# Server(C2) compiler specific options
+##################################################
+#NOTE! This list must be kept in sync with GENERATED_NAMES in adlc.make.
+ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
+ -define_compiler2 COMPILER2 \
+ -additionalFile_compiler2 $(Platform_arch_model).ad \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model).cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model).hpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model)_clone.cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model)_expand.cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model)_format.cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model)_gen.cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model)_misc.cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model)_peephole.cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles ad_$(Platform_arch_model)_pipeline.cpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles adGlobals_$(Platform_arch_model).hpp \
+ -additionalGeneratedFile_compiler2 $(HOTSPOTBUILDSPACE)/%f/generated/adfiles dfa_$(Platform_arch_model).cpp \
+ $(ProjectCreatorIDEOptionsIgnoreCompiler1:TARGET=compiler2)
+
+# Add in the jvmti (JSR-163) options
+# NOTE: do not pull in jvmtiEnvRecommended.cpp.  This file is generated
+#       so the programmer can diff it with jvmtiEnv.cpp to be sure the
+#       code merge was done correctly (@see jvmti.make and jvmtiEnvFill.java).
+#       If so, they would then check it in as a new version of jvmtiEnv.cpp.
+ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
+ -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/%f/generated/jvmtifiles jvmtiEnv.hpp \
+ -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/%f/generated/jvmtifiles jvmtiEnter.cpp \
+ -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/%f/generated/jvmtifiles jvmtiEnterTrace.cpp \
+ -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/%f/generated/jvmtifiles jvmti.h \
+ -additionalGeneratedFile $(HOTSPOTBUILDSPACE)/%f/generated/jvmtifiles bytecodeInterpreterWithChecks.cpp
--- a/make/windows/makefiles/vm.make	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/makefiles/vm.make	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 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
@@ -25,6 +25,8 @@
 # Resource file containing VERSIONINFO
 Res_Files=.\version.res
 
+!include ..\generated\objfiles.make
+
 !ifdef RELEASE 
 !ifdef DEVELOP
 CPP_FLAGS=$(CPP_FLAGS) /D "DEBUG"
@@ -77,6 +79,14 @@
 # Define that so jni.h is on correct side
 CPP_FLAGS=$(CPP_FLAGS) /D "_JNI_IMPLEMENTATION_"
 
+# Used for platform dispatching
+CPP_FLAGS=$(CPP_FLAGS) /D TARGET_OS_FAMILY_windows
+CPP_FLAGS=$(CPP_FLAGS) /D TARGET_ARCH_$(Platform_arch)
+CPP_FLAGS=$(CPP_FLAGS) /D TARGET_ARCH_MODEL_$(Platform_arch_model)
+CPP_FLAGS=$(CPP_FLAGS) /D TARGET_OS_ARCH_windows_$(Platform_arch)
+CPP_FLAGS=$(CPP_FLAGS) /D TARGET_OS_ARCH_MODEL_windows_$(Platform_arch_model)
+CPP_FLAGS=$(CPP_FLAGS) /D TARGET_COMPILER_visCPP
+
 !if "$(BUILDARCH)" == "ia64"
 STACK_SIZE="/STACK:1048576,262144"
 !else
@@ -111,37 +121,18 @@
   /export:JVM_InitAgentProperties
 
 CPP_INCLUDE_DIRS=\
-  /I "..\generated"                          \
-  /I "..\generated\jvmtifiles"               \
-  /I "$(WorkSpace)\src\share\vm\c1"          \
-  /I "$(WorkSpace)\src\share\vm\compiler"    \
-  /I "$(WorkSpace)\src\share\vm\code"        \
-  /I "$(WorkSpace)\src\share\vm\interpreter" \
-  /I "$(WorkSpace)\src\share\vm\ci"          \
-  /I "$(WorkSpace)\src\share\vm\classfile"   \
-  /I "$(WorkSpace)\src\share\vm\gc_implementation\parallelScavenge"\
-  /I "$(WorkSpace)\src\share\vm\gc_implementation\shared"\
-  /I "$(WorkSpace)\src\share\vm\gc_implementation\parNew"\
-  /I "$(WorkSpace)\src\share\vm\gc_implementation\concurrentMarkSweep"\
-  /I "$(WorkSpace)\src\share\vm\gc_implementation\g1"\
-  /I "$(WorkSpace)\src\share\vm\gc_interface"\
-  /I "$(WorkSpace)\src\share\vm\asm"         \
-  /I "$(WorkSpace)\src\share\vm\memory"      \
-  /I "$(WorkSpace)\src\share\vm\oops"        \
-  /I "$(WorkSpace)\src\share\vm\prims"       \
-  /I "$(WorkSpace)\src\share\vm\runtime"     \
-  /I "$(WorkSpace)\src\share\vm\services"    \
-  /I "$(WorkSpace)\src\share\vm\utilities"   \
-  /I "$(WorkSpace)\src\share\vm\libadt"      \
-  /I "$(WorkSpace)\src\share\vm\opto"        \
-  /I "$(WorkSpace)\src\os\windows\vm"          \
+  /I "..\generated" \
+  /I "$(WorkSpace)\src\share\vm" \
+  /I "$(WorkSpace)\src\share\vm\prims" \
+  /I "$(WorkSpace)\src\os\windows\vm" \
   /I "$(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm" \
   /I "$(WorkSpace)\src\cpu\$(Platform_arch)\vm"
 
-CPP_USE_PCH=/Fp"vm.pch" /Yu"incls/_precompiled.incl"
+CPP_USE_PCH=/Fp"vm.pch" /Yu"precompiled.hpp"
 
 # Where to find the source code for the virtual machine
-VM_PATH=../generated/incls
+VM_PATH=../generated
+VM_PATH=$(VM_PATH);../generated/adfiles
 VM_PATH=$(VM_PATH);../generated/jvmtifiles
 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/c1
 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/compiler
@@ -280,11 +271,14 @@
 {..\generated\incls}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
+{..\generated\adfiles}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
 {..\generated\jvmtifiles}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
 default::
 
 _build_pch_file.obj:
-        @echo #include "incls/_precompiled.incl" > ../generated/_build_pch_file.cpp
-        $(CPP) $(CPP_FLAGS) /Fp"vm.pch" /Yc"incls/_precompiled.incl" /c ../generated/_build_pch_file.cpp
+        @echo #include "precompiled.hpp" > ../generated/_build_pch_file.cpp
+        $(CPP) $(CPP_FLAGS) /Fp"vm.pch" /Yc"precompiled.hpp" /c ../generated/_build_pch_file.cpp
--- a/make/windows/projectfiles/common/Makefile	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/projectfiles/common/Makefile	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -22,6 +22,8 @@
 #  
 #
 
+!include local.make
+
 WorkSpace=$(HOTSPOTWORKSPACE)
 
 !ifdef ALT_BOOTDIR
@@ -36,70 +38,25 @@
 !endif
 !endif
 
-!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/makedeps.make
+!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/projectcreator.make
 
 # Pick up rules for building JVMTI (JSR-163)
-JvmtiOutDir=$(HOTSPOTBUILDSPACE)\jvmtifiles
+JvmtiOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\jvmtifiles
 !include $(HOTSPOTWORKSPACE)/make/windows/makefiles/jvmti.make
 
 Platform=$(HOTSPOTWORKSPACE)/make/windows/platform_$(BUILDARCH)
 
-default:: $(AdditionalTargets) $(JvmtiGeneratedFiles)
-
-IncludeDBs_base=$(HOTSPOTWORKSPACE)/src/share/vm/includeDB_core  \
-                $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_jvmti \
-                $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_gc    \
-                $(HOTSPOTWORKSPACE)/src/share/vm/gc_implementation/includeDB_gc_serial
-
-# Parallel gc files
-IncludeDBs_gc=$(HOTSPOTWORKSPACE)/src/share/vm/includeDB_gc_parallel       \
-    $(HOTSPOTWORKSPACE)/src/share/vm/gc_implementation/includeDB_gc_shared \
-    $(HOTSPOTWORKSPACE)/src/share/vm/gc_implementation/includeDB_gc_parNew \
-    $(HOTSPOTWORKSPACE)/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge \
-    $(HOTSPOTWORKSPACE)/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep \
-    $(HOTSPOTWORKSPACE)/src/share/vm/gc_implementation/includeDB_gc_g1
-
-
-IncludeDBs_kernel =$(IncludeDBs_base) \
-                    $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_compiler1
-
-IncludeDBs_core =$(IncludeDBs_base) $(IncludeDBs_gc) \
-                 $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_features
-
-IncludeDBs_compiler1=$(IncludeDBs_core) \
-                     $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_compiler1
-
-IncludeDBs_compiler2=$(IncludeDBs_core) \
-                    $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_compiler2
-
-IncludeDBs_tiered=$(IncludeDBs_core) \
-                    $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_compiler1 \
-                    $(HOTSPOTWORKSPACE)/src/share/vm/includeDB_compiler2
-
-
-!if "$(Variant)" == "compiler1"
-IncludeDBs = $(IncludeDBs_compiler1)
-!endif
-
 !if "$(Variant)" == "compiler2"
-IncludeDBs = $(IncludeDBs_compiler2)
 # Pick up rules for building adlc
 !include $(HOTSPOTWORKSPACE)/make/windows/makefiles/adlc.make
 !endif
 
 !if "$(Variant)" == "tiered"
-IncludeDBs = $(IncludeDBs_tiered)
 # Pick up rules for building adlc
 !include $(HOTSPOTWORKSPACE)/make/windows/makefiles/adlc.make
 !endif
 
-!if "$(Variant)" == "core"
-IncludeDBs = $(IncludeDBs_core)
-!endif
-
-!if "$(Variant)" == "kernel"
-IncludeDBs = $(IncludeDBs_kernel)
-!endif
+default:: $(AdditionalTargets) $(JvmtiGeneratedFiles)
 
 !include $(HOTSPOTWORKSPACE)/make/hotspot_version
 
@@ -134,55 +91,22 @@
 !endif
 !endif
 
-MakeDepsIDEOptions =       $(MakeDepsIDEOptions) \
-      -includeDB_kernel    $(HOTSPOTBUILDSPACE)\includeDB_kernel \
-      -includeDB_core      $(HOTSPOTBUILDSPACE)\includeDB_core \
-      -includeDB_compiler1 $(HOTSPOTBUILDSPACE)\includeDB_compiler1 \
-      -includeDB_compiler2 $(HOTSPOTBUILDSPACE)\includeDB_compiler2 \
-      -includeDB_tiered    $(HOTSPOTBUILDSPACE)\includeDB_tiered \
+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)\\\"
 
-incls:
-	@mkdir incls
-
-includeDB.current $(ProjectFile) Dependencies: local.make $(HOTSPOTBUILDSPACE)/classes/MakeDeps.class \
-                                               $(IncludeDBs) incls
-	@rm -f includeDB $(HOTSPOTBUILDSPACE)\includeDB_kernel \
-                         $(HOTSPOTBUILDSPACE)\includeDB_core \
-                         $(HOTSPOTBUILDSPACE)\includeDB_compiler1 \
-                         $(HOTSPOTBUILDSPACE)\includeDB_compiler2 \
-                         $(HOTSPOTBUILDSPACE)\includeDB_tiered
-	@cat $(IncludeDBs_kernel) > $(HOTSPOTBUILDSPACE)\includeDB_kernel
-	@cat $(IncludeDBs_core) > $(HOTSPOTBUILDSPACE)\includeDB_core
-	@cat $(IncludeDBs_compiler1)   > $(HOTSPOTBUILDSPACE)\includeDB_compiler1
-	@cat $(IncludeDBs_compiler2)   > $(HOTSPOTBUILDSPACE)\includeDB_compiler2
-	@cat $(IncludeDBs_tiered)      > $(HOTSPOTBUILDSPACE)\includeDB_tiered
-	@echo java.cpp jni.h >  includeDB
-	@$(RUN_JAVA) -Djava.class.path=$(HOTSPOTBUILDSPACE)/classes MakeDeps diffs WinGammaPlatform$(VcVersion) \
-                  $(Platform) includeDB.current $(Platform) includeDB $(MakeDepsOptions) $(MakeDepsIDEOptions)
-	@rm -f includeDB.current
-	@cp includeDB includeDB.current
-
-lists: $(HOTSPOTBUILDSPACE)/classes/MakeDeps.class FORCE
-	@if exist incls rmdir /s /q incls
-	@rm -f includeDB
-	@cat $(IncludeDBs) > includeDB
-	@mkdir incls
-	@$(RUN_JAVA) -Djava.class.path=$(HOTSPOTBUILDSPACE)/classes MakeDeps WinGammaPlatform$(VcVersion) \
-                 $(Platform) includeDB $(MakeDepsOptions) $(MakeDepsIDEOptions)
-	@rm -f includeDB.current
-	@cp includeDB includeDB.current
+$(HOTSPOTBUILDSPACE)/$(ProjectFile): local.make $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class
+	@$(RUN_JAVA) -Djava.class.path=$(HOTSPOTBUILDSPACE)/classes ProjectCreator WinGammaPlatform$(VcVersion) $(ProjectCreatorIDEOptions)
 
 clean:
-	@rm -rf incls $(HOTSPOTBUILDSPACE)/classes
-	@rm -f includeDB includeDB.current $(ProjectFile) Dependencies
+	@rm -rf $(HOTSPOTBUILDSPACE)/classes
+	@rm -r ../$(ProjectFile)
 
-$(HOTSPOTBUILDSPACE)/classes/MakeDeps.class: $(MakeDepsSources)
+$(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class: $(ProjectCreatorSources)
 	@if exist $(HOTSPOTBUILDSPACE)\classes rmdir /s /q $(HOTSPOTBUILDSPACE)\classes
 	@mkdir $(HOTSPOTBUILDSPACE)\classes
-	@$(COMPILE_JAVAC) -classpath $(HOTSPOTWORKSPACE)\src\share\tools\MakeDeps -d $(HOTSPOTBUILDSPACE)/classes $(MakeDepsSources)
+	@$(COMPILE_JAVAC) -classpath $(HOTSPOTWORKSPACE)\src\share\tools\ProjectCreator -d $(HOTSPOTBUILDSPACE)/classes $(ProjectCreatorSources)
 
 FORCE:
--- a/make/windows/projectfiles/compiler2/Makefile	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/projectfiles/compiler2/Makefile	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -24,6 +24,7 @@
 
 Variant=compiler2
 !include local.make
-AdditionalTargets=incls/ad_$(Platform_arch_model).cpp incls/dfa_$(Platform_arch_model).cpp
+AdlcOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\adfiles
+AdditionalTargets=$(AdlcOutDir)\ad_$(Platform_arch_model).cpp $(AdlcOutDir)\dfa_$(Platform_arch_model).cpp
 
 !include $(HOTSPOTWORKSPACE)/make/windows/projectfiles/common/Makefile
--- a/make/windows/projectfiles/kernel/Makefile	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/projectfiles/kernel/Makefile	Tue Nov 30 18:10:20 2010 -0800
@@ -22,7 +22,7 @@
 #  
 #
 
-Variant=compiler1
+Variant=kernel
 !include local.make
 
 !include $(HOTSPOTWORKSPACE)/make/windows/projectfiles/common/Makefile
--- a/make/windows/projectfiles/tiered/Makefile	Tue Nov 30 18:07:18 2010 -0800
+++ b/make/windows/projectfiles/tiered/Makefile	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 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
@@ -24,6 +24,7 @@
 
 Variant=tiered
 !include local.make
-AdditionalTargets=incls/ad_$(Platform_arch_model).cpp incls/dfa_$(Platform_arch_model).cpp
+AdlcOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\adfiles
+AdditionalTargets=$(AdlcOutDir)\ad_$(Platform_arch_model).cpp $(AdlcOutDir)\dfa_$(Platform_arch_model).cpp
 
 !include $(HOTSPOTWORKSPACE)/make/windows/projectfiles/common/Makefile
--- a/src/cpu/sparc/vm/assembler_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/assembler_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,24 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/os.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#endif
 
 // Convert the raw encoding form into the form expected by the
 // constructor for Address.
--- a/src/cpu/sparc/vm/assembler_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/assembler_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_ASSEMBLER_SPARC_HPP
+#define CPU_SPARC_VM_ASSEMBLER_SPARC_HPP
+
 class BiasedLockingCounters;
 
 // <sys/trap.h> promises that the system will not use traps 16-31
@@ -1126,7 +1129,7 @@
   inline void add(Register s1, int simm13a, Register d, relocInfo::relocType rtype = relocInfo::none);
   inline void add(Register s1, int simm13a, Register d, RelocationHolder const& rspec);
   inline void add(Register s1, RegisterOrConstant s2, Register d, int offset = 0);
-  inline void add(const Address& a, Register d, int offset = 0) { add( a.base(), a.disp() + offset, d, a.rspec(offset)); }
+  inline void add(const Address& a, Register d, int offset = 0);
 
   void addcc(  Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(add_op3  | cc_bit_op3) | rs1(s1) | rs2(s2) ); }
   void addcc(  Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(add_op3  | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); }
@@ -2500,3 +2503,5 @@
 // On RISC, there's no benefit to verifying instruction boundaries.
 inline bool AbstractAssembler::pd_check_instruction_mark() { return false; }
 #endif
+
+#endif // CPU_SPARC_VM_ASSEMBLER_SPARC_HPP
--- a/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_ASSEMBLER_SPARC_INLINE_HPP
+#define CPU_SPARC_VM_ASSEMBLER_SPARC_INLINE_HPP
+
+#include "asm/assembler.inline.hpp"
+#include "asm/codeBuffer.hpp"
+#include "code/codeCache.hpp"
+#include "runtime/handles.inline.hpp"
+
 inline void MacroAssembler::pd_patch_instruction(address branch, address target) {
   jint& stub_inst = *(jint*) branch;
   stub_inst = patched_branch(target - branch, stub_inst, 0);
@@ -206,6 +214,11 @@
 inline void Assembler::ldd( Register s1, RegisterOrConstant s2, Register d) { ldd( Address(s1, s2), d); }
 
 // form effective addresses this way:
+inline void Assembler::add(const Address& a, Register d, int offset) {
+  if (a.has_index())   add(a.base(), a.index(),         d);
+  else               { add(a.base(), a.disp() + offset, d, a.rspec(offset)); offset = 0; }
+  if (offset != 0)     add(d,        offset,            d);
+}
 inline void Assembler::add(Register s1, RegisterOrConstant s2, Register d, int offset) {
   if (s2.is_register())  add(s1, s2.as_register(),          d);
   else                 { add(s1, s2.as_constant() + offset, d); offset = 0; }
@@ -817,3 +830,5 @@
     Assembler::ldstub(SP, 0, G0);
   }
 }
+
+#endif // CPU_SPARC_VM_ASSEMBLER_SPARC_INLINE_HPP
--- a/src/cpu/sparc/vm/bytecodeInterpreter_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/bytecodeInterpreter_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,4 +22,24 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interp_masm_sparc.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/bytecodeInterpreter.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+
 // KILL THIS FILE
--- a/src/cpu/sparc/vm/bytecodeInterpreter_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/bytecodeInterpreter_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_BYTECODEINTERPRETER_SPARC_HPP
+#define CPU_SPARC_VM_BYTECODEINTERPRETER_SPARC_HPP
+
 // Platform specific for C++ based Interpreter
 #define LOTS_OF_REGS    /* Lets interpreter use plenty of registers */
 
@@ -97,3 +100,5 @@
                                                   ((VMJavaVal64*)(addr))->d)
 #define SET_LOCALS_LONG_FROM_ADDR(addr, offset) (((VMJavaVal64*)&locals[-((offset)+1)])->l = \
                                                 ((VMJavaVal64*)(addr))->l)
+
+#endif // CPU_SPARC_VM_BYTECODEINTERPRETER_SPARC_HPP
--- a/src/cpu/sparc/vm/bytecodeInterpreter_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/bytecodeInterpreter_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_BYTECODEINTERPRETER_SPARC_INLINE_HPP
+#define CPU_SPARC_VM_BYTECODEINTERPRETER_SPARC_INLINE_HPP
+
 // Inline interpreter functions for sparc
 
 inline jfloat BytecodeInterpreter::VMfloatAdd(jfloat op1, jfloat op2) { return op1 + op2; }
@@ -331,3 +334,5 @@
   }
 };
 #endif /* ALIGN_CONVERTER */
+
+#endif // CPU_SPARC_VM_BYTECODEINTERPRETER_SPARC_INLINE_HPP
--- a/src/cpu/sparc/vm/bytecodes_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/bytecodes_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecodes_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodes.hpp"
 
 
 void Bytecodes::pd_initialize() {
--- a/src/cpu/sparc/vm/bytecodes_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/bytecodes_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_BYTECODES_SPARC_HPP
+#define CPU_SPARC_VM_BYTECODES_SPARC_HPP
+
 #ifdef SPARC
 #define NLOCALS_IN_REGS 6
 #endif
@@ -30,3 +33,5 @@
 // Sparc specific bytecodes
 
 // (none)
+
+#endif // CPU_SPARC_VM_BYTECODES_SPARC_HPP
--- a/src/cpu/sparc/vm/bytes_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/bytes_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_BYTES_SPARC_HPP
+#define CPU_SPARC_VM_BYTES_SPARC_HPP
+
+#include "memory/allocation.hpp"
+
 class Bytes: AllStatic {
  public:
   // Efficient reading and writing of unaligned unsigned data in platform-specific byte ordering
@@ -155,3 +160,5 @@
 // 1.15 98/10/05 16:30:21 bytes_i486.hpp
 // 1.17 99/06/22 16:37:35 bytes_i486.hpp
 //End
+
+#endif // CPU_SPARC_VM_BYTES_SPARC_HPP
--- a/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_CodeStubs_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_CodeStubs.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "nativeInst_sparc.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_sparc.inline.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#endif
 
 #define __ ce->masm()->
 
--- a/src/cpu/sparc/vm/c1_Defs_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_Defs_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C1_DEFS_SPARC_HPP
+#define CPU_SPARC_VM_C1_DEFS_SPARC_HPP
+
 // native word offsets from memory address (big endian)
 enum {
   pd_lo_word_offset_in_bytes = BytesPerInt,
@@ -65,3 +68,5 @@
 enum {
   pd_float_saved_as_double = false
 };
+
+#endif // CPU_SPARC_VM_C1_DEFS_SPARC_HPP
--- a/src/cpu/sparc/vm/c1_FpuStackSim_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_FpuStackSim_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,4 +22,10 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "c1/c1_FpuStackSim.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "utilities/array.hpp"
+#include "utilities/ostream.hpp"
+
 // No FPU stack on SPARC
--- a/src/cpu/sparc/vm/c1_FpuStackSim_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_FpuStackSim_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,5 +22,10 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C1_FPUSTACKSIM_SPARC_HPP
+#define CPU_SPARC_VM_C1_FPUSTACKSIM_SPARC_HPP
+
 // No FPU stack on SPARC
 class FpuStackSim;
+
+#endif // CPU_SPARC_VM_C1_FPUSTACKSIM_SPARC_HPP
--- a/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_FrameMap_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_LIR.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_sparc.inline.hpp"
 
 
 const int FrameMap::pd_c_runtime_reserved_arg_size = 7;
--- a/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C1_FRAMEMAP_SPARC_HPP
+#define CPU_SPARC_VM_C1_FRAMEMAP_SPARC_HPP
+
  public:
 
   enum {
@@ -151,3 +154,5 @@
 
   static bool is_caller_save_register (LIR_Opr  reg);
   static bool is_caller_save_register (Register r);
+
+#endif // CPU_SPARC_VM_C1_FRAMEMAP_SPARC_HPP
--- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_LIRAssembler_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciArrayKlass.hpp"
+#include "ci/ciInstance.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/barrierSet.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "nativeInst_sparc.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 #define __ _masm->
 
--- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C1_LIRASSEMBLER_SPARC_HPP
+#define CPU_SPARC_VM_C1_LIRASSEMBLER_SPARC_HPP
+
  private:
 
   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -90,3 +93,5 @@
 #endif // _LP64
          exception_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(10*4),
          deopt_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(10*4) };
+
+#endif // CPU_SPARC_VM_C1_LIRASSEMBLER_SPARC_HPP
--- a/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_LIRGenerator_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_LIRGenerator.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciArray.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "vmreg_sparc.inline.hpp"
 
 #ifdef ASSERT
 #define __ gen()->lir(__FILE__, __LINE__)->
@@ -664,7 +676,7 @@
   // Use temps to avoid kills
   LIR_Opr t1 = FrameMap::G1_opr;
   LIR_Opr t2 = FrameMap::G3_opr;
-  LIR_Opr addr = (type == objectType) ? new_register(T_OBJECT) : new_pointer_register();
+  LIR_Opr addr = new_pointer_register();
 
   // get address of field
   obj.load_item();
--- a/src/cpu/sparc/vm/c1_LinearScan_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_LinearScan_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_LinearScan_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LinearScan.hpp"
+#include "utilities/bitMap.inline.hpp"
 
 void LinearScan::allocate_fpu_stack() {
   // No FPU stack on SPARC
--- a/src/cpu/sparc/vm/c1_LinearScan_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_LinearScan_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C1_LINEARSCAN_SPARC_HPP
+#define CPU_SPARC_VM_C1_LINEARSCAN_SPARC_HPP
+
 inline bool LinearScan::is_processed_reg_num(int reg_num) {
   return reg_num < 26 || reg_num > 31;
 }
@@ -71,3 +74,5 @@
   }
   return false;
 }
+
+#endif // CPU_SPARC_VM_C1_LINEARSCAN_SPARC_HPP
--- a/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_MacroAssembler_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/markOop.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/os.hpp"
+#include "runtime/stubRoutines.hpp"
 
 void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
   Label L;
--- a/src/cpu/sparc/vm/c1_MacroAssembler_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_MacroAssembler_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C1_MACROASSEMBLER_SPARC_HPP
+#define CPU_SPARC_VM_C1_MACROASSEMBLER_SPARC_HPP
+
   void pd_init() { /* nothing to do */ }
 
  public:
@@ -84,3 +87,5 @@
   // invalidates registers in this window
   void invalidate_registers(bool iregisters, bool lregisters, bool oregisters,
                             Register preserve1 = noreg, Register preserve2 = noreg);
+
+#endif // CPU_SPARC_VM_C1_MACROASSEMBLER_SPARC_HPP
--- a/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Runtime1_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Defs.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_sparc.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "register_sparc.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframeArray.hpp"
+#include "vmreg_sparc.inline.hpp"
 
 // Implementation of StubAssembler
 
--- a/src/cpu/sparc/vm/c1_globals_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c1_globals_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C1_GLOBALS_SPARC_HPP
+#define CPU_SPARC_VM_C1_GLOBALS_SPARC_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 // Sets the default values for platform dependent flags used by the client compiler.
 // (see c1_globals.hpp)
 
@@ -61,3 +67,5 @@
 define_pd_global(bool, TwoOperandLIRForm,            false);
 
 define_pd_global(intx, SafepointPollOffset,          0    );
+
+#endif // CPU_SPARC_VM_C1_GLOBALS_SPARC_HPP
--- a/src/cpu/sparc/vm/c2_globals_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c2_globals_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_C2_GLOBALS_SPARC_HPP
+#define CPU_SPARC_VM_C2_GLOBALS_SPARC_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 // Sets the default values for platform dependent flags used by the server compiler.
 // (see c2_globals.hpp).  Alpha-sorted.
 
@@ -88,3 +94,5 @@
 
 // Ergonomics related flags
 define_pd_global(bool, NeverActAsServerClassMachine, false);
+
+#endif // CPU_SPARC_VM_C2_GLOBALS_SPARC_HPP
--- a/src/cpu/sparc/vm/c2_init_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/c2_init_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c2_init_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/compile.hpp"
+#include "opto/node.hpp"
 
 // processor dependent initialization for sparc
 
--- a/src/cpu/sparc/vm/codeBuffer_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/codeBuffer_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_CODEBUFFER_SPARC_HPP
+#define CPU_SPARC_VM_CODEBUFFER_SPARC_HPP
+
 private:
   void pd_initialize() {}
 
@@ -32,3 +35,5 @@
   bool is_backward_branch(Label& L) {
     return L.is_bound() && insts_end() <= locator_address(L.loc());
   }
+
+#endif // CPU_SPARC_VM_CODEBUFFER_SPARC_HPP
--- a/src/cpu/sparc/vm/copy_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/copy_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_COPY_SPARC_HPP
+#define CPU_SPARC_VM_COPY_SPARC_HPP
+
 // Inline functions for memory copy and fill.
 
 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
@@ -186,3 +189,5 @@
 static void pd_zero_to_bytes(void* to, size_t count) {
   (void)memset(to, 0, count);
 }
+
+#endif // CPU_SPARC_VM_COPY_SPARC_HPP
--- a/src/cpu/sparc/vm/cppInterpreterGenerator_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/cppInterpreterGenerator_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_CPPINTERPRETERGENERATOR_SPARC_HPP
+#define CPU_SPARC_VM_CPPINTERPRETERGENERATOR_SPARC_HPP
+
   static address frame_manager_return;
   static address frame_manager_sync_return;
 
@@ -32,3 +35,5 @@
   void generate_compute_interpreter_state(const Register state,
                                           const Register prev_state,
                                           bool native);
+
+#endif // CPU_SPARC_VM_CPPINTERPRETERGENERATOR_SPARC_HPP
--- a/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,32 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cppInterpreter_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/cppInterpreter.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+#ifdef SHARK
+#include "shark/shark_globals.hpp"
+#endif
 
 #ifdef CC_INTERP
 
--- a/src/cpu/sparc/vm/cppInterpreter_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/cppInterpreter_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_CPPINTERPRETER_SPARC_HPP
+#define CPU_SPARC_VM_CPPINTERPRETER_SPARC_HPP
+
   // Size of interpreter code.  Increase if too small.  Interpreter will
   // fail with a guarantee ("not enough space for interpreter generation");
   // if too small.
@@ -37,3 +40,5 @@
 #else
   const static int InterpreterCodeSize = 180 * K;
 #endif
+
+#endif // CPU_SPARC_VM_CPPINTERPRETER_SPARC_HPP
--- a/src/cpu/sparc/vm/debug_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/debug_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,14 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_debug_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeCache.hpp"
+#include "code/nmethod.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/init.hpp"
+#include "runtime/os.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/top.hpp"
 
 #ifndef PRODUCT
 
--- a/src/cpu/sparc/vm/depChecker_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/depChecker_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,7 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_depChecker_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/disassembler.hpp"
+#include "depChecker_sparc.hpp"
+#include "runtime/hpi.hpp"
 
 // Nothing to do on Sparc
--- a/src/cpu/sparc/vm/depChecker_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/depChecker_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,4 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_DEPCHECKER_SPARC_HPP
+#define CPU_SPARC_VM_DEPCHECKER_SPARC_HPP
+
 // Nothing to do on Sparc
+
+#endif // CPU_SPARC_VM_DEPCHECKER_SPARC_HPP
--- a/src/cpu/sparc/vm/disassembler_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/disassembler_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_DISASSEMBLER_SPARC_HPP
+#define CPU_SPARC_VM_DISASSEMBLER_SPARC_HPP
+
   static int pd_instruction_alignment() {
     return sizeof(int);
   }
@@ -30,3 +33,5 @@
     return (VM_Version::v9_instructions_work()?
             (VM_Version::v8_instructions_work()? "" : "v9only") : "v8only");
   }
+
+#endif // CPU_SPARC_VM_DISASSEMBLER_SPARC_HPP
--- a/src/cpu/sparc/vm/dump_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/dump_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dump_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "memory/compactingPermGenGen.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/space.inline.hpp"
 
 
 
--- a/src/cpu/sparc/vm/frame_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/frame_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,24 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_frame_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "vmreg_sparc.inline.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#include "runtime/vframeArray.hpp"
+#endif
 
 void RegisterMap::pd_clear() {
   if (_thread->has_last_Java_frame()) {
--- a/src/cpu/sparc/vm/frame_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/frame_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_FRAME_SPARC_HPP
+#define CPU_SPARC_VM_FRAME_SPARC_HPP
+
+#include "runtime/synchronizer.hpp"
+#include "utilities/top.hpp"
+
 // A frame represents a physical stack frame (an activation).  Frames can be
 // C or Java frames, and the Java frames can be interpreted or compiled.
 // In contrast, vframes represent source-level activations, so that one physical frame
@@ -309,3 +315,5 @@
     return reg->is_out() || reg->is_global();
 #endif
   }
+
+#endif // CPU_SPARC_VM_FRAME_SPARC_HPP
--- a/src/cpu/sparc/vm/frame_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/frame_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP
+#define CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP
+
 // Inline functions for SPARC frames:
 
 // Constructors
@@ -295,3 +298,5 @@
 inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
   *((oop*) map->location(O0->as_VMReg())) = obj;
 }
+
+#endif // CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP
--- a/src/cpu/sparc/vm/globalDefinitions_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/globalDefinitions_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,7 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_GLOBALDEFINITIONS_SPARC_HPP
+#define CPU_SPARC_VM_GLOBALDEFINITIONS_SPARC_HPP
+
 // Size of Sparc Instructions
 const int BytesPerInstWord = 4;
 
 const int StackAlignmentInBytes = (2*wordSize);
+
+#endif // CPU_SPARC_VM_GLOBALDEFINITIONS_SPARC_HPP
--- a/src/cpu/sparc/vm/globals_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/globals_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_GLOBALS_SPARC_HPP
+#define CPU_SPARC_VM_GLOBALS_SPARC_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 // Sets the default values for platform dependent flags used by the runtime system.
 // (see globals.hpp)
 
@@ -62,3 +68,7 @@
 
 define_pd_global(bool, RewriteBytecodes,     true);
 define_pd_global(bool, RewriteFrequentPairs, true);
+
+define_pd_global(bool, UseMembar,            false);
+
+#endif // CPU_SPARC_VM_GLOBALS_SPARC_HPP
--- a/src/cpu/sparc/vm/icBuffer_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/icBuffer_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icBuffer_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/resourceArea.hpp"
+#include "nativeInst_sparc.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
 
 int InlineCacheBuffer::ic_stub_code_size() {
 #ifdef _LP64
--- a/src/cpu/sparc/vm/icache_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/icache_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icache_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "runtime/icache.hpp"
 
 #define __ _masm->
 
--- a/src/cpu/sparc/vm/icache_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/icache_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_ICACHE_SPARC_HPP
+#define CPU_SPARC_VM_ICACHE_SPARC_HPP
+
 // Interface for updating the instruction cache.  Whenever the VM modifies
 // code, part of the processor instruction cache potentially has to be flushed.
 
@@ -36,3 +39,5 @@
 
   // Use default implementation
 };
+
+#endif // CPU_SPARC_VM_ICACHE_SPARC_HPP
--- a/src/cpu/sparc/vm/interp_masm_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/interp_masm_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,26 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interp_masm_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "interp_masm_sparc.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/sharedRuntime.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
 
 #ifndef CC_INTERP
 #ifndef FAST_DISPATCH
--- a/src/cpu/sparc/vm/interp_masm_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/interp_masm_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_INTERP_MASM_SPARC_HPP
+#define CPU_SPARC_VM_INTERP_MASM_SPARC_HPP
+
+#include "assembler_sparc.inline.hpp"
+#include "interpreter/invocationCounter.hpp"
+
 // This file specializes the assember with interpreter-specific macros
 
 REGISTER_DECLARATION(     Register, Otos_i , O0); // tos for ints, etc
@@ -327,3 +333,5 @@
   void restore_return_value(TosState state, bool is_native_call);
 
 };
+
+#endif // CPU_SPARC_VM_INTERP_MASM_SPARC_HPP
--- a/src/cpu/sparc/vm/interpreterGenerator_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/interpreterGenerator_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_INTERPRETERGENERATOR_SPARC_HPP
+#define CPU_SPARC_VM_INTERPRETERGENERATOR_SPARC_HPP
+
  friend class AbstractInterpreterGenerator;
 
  private:
@@ -39,3 +42,5 @@
 
   void generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue);
   void generate_counter_overflow(Label& Lcontinue);
+
+#endif // CPU_SPARC_VM_INTERPRETERGENERATOR_SPARC_HPP
--- a/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreterRT_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/signature.hpp"
 
 
 #define __ _masm->
--- a/src/cpu/sparc/vm/interpreterRT_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/interpreterRT_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_INTERPRETERRT_SPARC_HPP
+#define CPU_SPARC_VM_INTERPRETERRT_SPARC_HPP
+
+#include "memory/allocation.hpp"
+
 static int binary_search(int key, LookupswitchPair* array, int n);
 
 static address iload (JavaThread* thread);
@@ -54,3 +59,5 @@
   // Code generation
   void generate( uint64_t fingerprint );
 };
+
+#endif // CPU_SPARC_VM_INTERPRETERRT_SPARC_HPP
--- a/src/cpu/sparc/vm/interpreter_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/interpreter_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,32 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreter_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 
 
--- a/src/cpu/sparc/vm/interpreter_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/interpreter_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_INTERPRETER_SPARC_HPP
+#define CPU_SPARC_VM_INTERPRETER_SPARC_HPP
+
  public:
 
   static int expr_offset_in_bytes(int i) { return stackElementSize * i + wordSize; }
@@ -34,3 +37,5 @@
     assert(i <= 0, "local direction already negated");
     return stackElementWords * i;
   }
+
+#endif // CPU_SPARC_VM_INTERPRETER_SPARC_HPP
--- a/src/cpu/sparc/vm/javaFrameAnchor_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/javaFrameAnchor_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_JAVAFRAMEANCHOR_SPARC_HPP
+#define CPU_SPARC_VM_JAVAFRAMEANCHOR_SPARC_HPP
+
 private:
   volatile int _flags;
 
@@ -97,3 +100,5 @@
     _flags |= flushed;
     OrderAccess::fence();
   }
+
+#endif // CPU_SPARC_VM_JAVAFRAMEANCHOR_SPARC_HPP
--- a/src/cpu/sparc/vm/jniFastGetField_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/jniFastGetField_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jniFastGetField_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm_misc.hpp"
+#include "runtime/safepoint.hpp"
 
 // TSO ensures that loads are blocking and ordered with respect to
 // to earlier loads, so we don't need LoadLoad membars.
--- a/src/cpu/sparc/vm/jniTypes_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/jniTypes_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_JNITYPES_SPARC_HPP
+#define CPU_SPARC_VM_JNITYPES_SPARC_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "prims/jni.h"
+
 // This file holds platform-dependent routines used to write primitive jni
 // types to the array of arguments passed into JavaCalls::call
 
@@ -106,3 +113,5 @@
 #endif
 
 };
+
+#endif // CPU_SPARC_VM_JNITYPES_SPARC_HPP
--- a/src/cpu/sparc/vm/jni_sparc.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/jni_sparc.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/src/cpu/sparc/vm/methodHandles_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/methodHandles_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_methodHandles_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "prims/methodHandles.hpp"
 
 #define __ _masm->
 
@@ -70,17 +72,29 @@
 
 // Code generation
 address MethodHandles::generate_method_handle_interpreter_entry(MacroAssembler* _masm) {
-  // I5_savedSP: sender SP (must preserve)
+  // I5_savedSP/O5_savedSP: sender SP (must preserve)
   // G4 (Gargs): incoming argument list (must preserve)
-  // G5_method:  invoke methodOop; becomes method type.
+  // G5_method:  invoke methodOop
   // G3_method_handle: receiver method handle (must load from sp[MethodTypeForm.vmslots])
-  // O0, O1: garbage temps, blown away
-  Register O0_argslot = O0;
+  // O0, O1, O2, O3, O4: garbage temps, blown away
+  Register O0_mtype   = O0;
   Register O1_scratch = O1;
+  Register O2_scratch = O2;
+  Register O3_scratch = O3;
+  Register O4_argslot = O4;
+  Register O4_argbase = O4;
 
   // emit WrongMethodType path first, to enable back-branch from main path
   Label wrong_method_type;
   __ bind(wrong_method_type);
+  Label invoke_generic_slow_path;
+  assert(methodOopDesc::intrinsic_id_size_in_bytes() == sizeof(u1), "");;
+  __ ldub(Address(G5_method, methodOopDesc::intrinsic_id_offset_in_bytes()), O1_scratch);
+  __ cmp(O1_scratch, (int) vmIntrinsics::_invokeExact);
+  __ brx(Assembler::notEqual, false, Assembler::pt, invoke_generic_slow_path);
+  __ delayed()->nop();
+  __ mov(O0_mtype, G5_method_type);  // required by throw_WrongMethodType
+  // mov(G3_method_handle, G3_method_handle);  // already in this register
   __ jump_to(AddressLiteral(Interpreter::throw_WrongMethodType_entry()), O1_scratch);
   __ delayed()->nop();
 
@@ -88,23 +102,74 @@
   __ align(CodeEntryAlignment);
   address entry_point = __ pc();
 
-  // fetch the MethodType from the method handle into G5_method_type
+  // fetch the MethodType from the method handle
   {
     Register tem = G5_method;
-    assert(tem == G5_method_type, "yes, it's the same register");
     for (jint* pchase = methodOopDesc::method_type_offsets_chain(); (*pchase) != -1; pchase++) {
-      __ ld_ptr(Address(tem, *pchase), G5_method_type);
+      __ ld_ptr(Address(tem, *pchase), O0_mtype);
+      tem = O0_mtype;          // in case there is another indirection
     }
   }
 
   // given the MethodType, find out where the MH argument is buried
-  __ load_heap_oop(Address(G5_method_type, __ delayed_value(java_dyn_MethodType::form_offset_in_bytes, O1_scratch)),        O0_argslot);
-  __ ldsw(         Address(O0_argslot,     __ delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, O1_scratch)), O0_argslot);
-  __ ld_ptr(__ argument_address(O0_argslot), G3_method_handle);
+  __ load_heap_oop(Address(O0_mtype,   __ delayed_value(java_dyn_MethodType::form_offset_in_bytes,        O1_scratch)), O4_argslot);
+  __ ldsw(         Address(O4_argslot, __ delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, O1_scratch)), O4_argslot);
+  __ add(Gargs, __ argument_offset(O4_argslot, 1), O4_argbase);
+  // Note: argument_address uses its input as a scratch register!
+  __ ld_ptr(Address(O4_argbase, -Interpreter::stackElementSize), G3_method_handle);
+
+  trace_method_handle(_masm, "invokeExact");
+
+  __ check_method_handle_type(O0_mtype, G3_method_handle, O1_scratch, wrong_method_type);
+  __ jump_to_method_handle_entry(G3_method_handle, O1_scratch);
+
+  // for invokeGeneric (only), apply argument and result conversions on the fly
+  __ bind(invoke_generic_slow_path);
+#ifdef ASSERT
+  { Label L;
+    __ ldub(Address(G5_method, methodOopDesc::intrinsic_id_offset_in_bytes()), O1_scratch);
+    __ cmp(O1_scratch, (int) vmIntrinsics::_invokeGeneric);
+    __ brx(Assembler::equal, false, Assembler::pt, L);
+    __ delayed()->nop();
+    __ stop("bad methodOop::intrinsic_id");
+    __ bind(L);
+  }
+#endif //ASSERT
 
-  __ check_method_handle_type(G5_method_type, G3_method_handle, O1_scratch, wrong_method_type);
+  // make room on the stack for another pointer:
+  insert_arg_slots(_masm, 2 * stack_move_unit(), _INSERT_REF_MASK, O4_argbase, O1_scratch, O2_scratch, O3_scratch);
+  // load up an adapter from the calling type (Java weaves this)
+  Register O2_form    = O2_scratch;
+  Register O3_adapter = O3_scratch;
+  __ load_heap_oop(Address(O0_mtype, __ delayed_value(java_dyn_MethodType::form_offset_in_bytes,               O1_scratch)), O2_form);
+  // load_heap_oop(Address(O2_form,  __ delayed_value(java_dyn_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter);
+  // deal with old JDK versions:
+  __ add(          Address(O2_form,  __ delayed_value(java_dyn_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter);
+  __ cmp(O3_adapter, O2_form);
+  Label sorry_no_invoke_generic;
+  __ brx(Assembler::lessUnsigned, false, Assembler::pn, sorry_no_invoke_generic);
+  __ delayed()->nop();
+
+  __ load_heap_oop(Address(O3_adapter, 0), O3_adapter);
+  __ tst(O3_adapter);
+  __ brx(Assembler::zero, false, Assembler::pn, sorry_no_invoke_generic);
+  __ delayed()->nop();
+  __ st_ptr(O3_adapter, Address(O4_argbase, 1 * Interpreter::stackElementSize));
+  // As a trusted first argument, pass the type being called, so the adapter knows
+  // the actual types of the arguments and return values.
+  // (Generic invokers are shared among form-families of method-type.)
+  __ st_ptr(O0_mtype,   Address(O4_argbase, 0 * Interpreter::stackElementSize));
+  // FIXME: assert that O3_adapter is of the right method-type.
+  __ mov(O3_adapter, G3_method_handle);
+  trace_method_handle(_masm, "invokeGeneric");
   __ jump_to_method_handle_entry(G3_method_handle, O1_scratch);
 
+  __ bind(sorry_no_invoke_generic); // no invokeGeneric implementation available!
+  __ mov(O0_mtype, G5_method_type);  // required by throw_WrongMethodType
+  // mov(G3_method_handle, G3_method_handle);  // already in this register
+  __ jump_to(AddressLiteral(Interpreter::throw_WrongMethodType_entry()), O1_scratch);
+  __ delayed()->nop();
+
   return entry_point;
 }
 
@@ -630,9 +695,15 @@
 
       switch (ek) {
       case _adapter_opt_i2i:
+        value = vmarg;
+        break;
       case _adapter_opt_l2i:
-        __ unimplemented(entry_name(ek));
-        value = vmarg;
+        {
+          // just delete the extra slot
+          __ add(Gargs, __ argument_offset(O0_argslot), O0_argslot);
+          remove_arg_slots(_masm, -stack_move_unit(), O0_argslot, O1_scratch, O2_scratch, O3_scratch);
+          value = vmarg = Address(O0_argslot, 0);
+        }
         break;
       case _adapter_opt_unboxi:
         {
--- a/src/cpu/sparc/vm/nativeInst_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/nativeInst_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_nativeInst_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "nativeInst_sparc.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/ostream.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 
 bool NativeInstruction::is_dtrace_trap() {
--- a/src/cpu/sparc/vm/nativeInst_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/nativeInst_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_NATIVEINST_SPARC_HPP
+#define CPU_SPARC_VM_NATIVEINST_SPARC_HPP
+
+#include "asm/assembler.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/os.hpp"
+#include "utilities/top.hpp"
+
 // We have interface for the following instructions:
 // - NativeInstruction
 // - - NativeCall
@@ -913,3 +922,5 @@
   // Insert illegal opcode as specific address
   static void insert(address code_pos);
 };
+
+#endif // CPU_SPARC_VM_NATIVEINST_SPARC_HPP
--- a/src/cpu/sparc/vm/registerMap_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/registerMap_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_REGISTERMAP_SPARC_HPP
+#define CPU_SPARC_VM_REGISTERMAP_SPARC_HPP
+
 // machine-dependent implemention for register maps
   friend class frame;
 
@@ -51,3 +54,5 @@
   void shift_individual_registers();
   // When popping out of compiled frames, we make all IRegs disappear.
   void make_integer_regs_unsaved() { _location_valid[0] = 0; }
+
+#endif // CPU_SPARC_VM_REGISTERMAP_SPARC_HPP
--- a/src/cpu/sparc/vm/register_definitions_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/register_definitions_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -25,8 +25,11 @@
 // make sure the defines don't screw up the declarations later on in this file
 #define DONT_USE_REGISTER_DEFINES
 
-#include "incls/_precompiled.incl"
-#include "incls/_register_definitions_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/register.hpp"
+#include "interp_masm_sparc.hpp"
+#include "register_sparc.hpp"
 
 REGISTER_DEFINITION(Register, noreg);
 
--- a/src/cpu/sparc/vm/register_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/register_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_register_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "register_sparc.hpp"
 
 const int ConcreteRegisterImpl::max_gpr = RegisterImpl::number_of_registers << 1;
 const int ConcreteRegisterImpl::max_fpr =  ConcreteRegisterImpl::max_gpr + FloatRegisterImpl::number_of_registers;
--- a/src/cpu/sparc/vm/register_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/register_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_REGISTER_SPARC_HPP
+#define CPU_SPARC_VM_REGISTER_SPARC_HPP
+
+#include "asm/register.hpp"
+#include "vm_version_sparc.hpp"
+
 // forward declaration
 class Address;
 class VMRegImpl;
@@ -440,3 +446,5 @@
     return as_FloatRegister( ((encoding & 1) << 5) | (encoding & 0x1c) );
   }
 };
+
+#endif // CPU_SPARC_VM_REGISTER_SPARC_HPP
--- a/src/cpu/sparc/vm/relocInfo_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/relocInfo_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_relocInfo_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.inline.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "code/relocInfo.hpp"
+#include "nativeInst_sparc.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/safepoint.hpp"
 
 void Relocation::pd_set_data_value(address x, intptr_t o) {
   NativeInstruction* ip = nativeInstruction_at(addr());
--- a/src/cpu/sparc/vm/relocInfo_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/relocInfo_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_RELOCINFO_SPARC_HPP
+#define CPU_SPARC_VM_RELOCINFO_SPARC_HPP
+
   // machine-dependent parts of class relocInfo
  private:
   enum {
@@ -49,3 +52,5 @@
 // 1.8 99/06/22 16:37:50 relocInfo_i486.hpp
 // 1.9 99/07/16 11:12:11 relocInfo_i486.hpp
 //End
+
+#endif // CPU_SPARC_VM_RELOCINFO_SPARC_HPP
--- a/src/cpu/sparc/vm/runtime_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/runtime_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,22 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_runtime_sparc.cpp.incl"
+#include "precompiled.hpp"
+#ifdef COMPILER2
+#include "asm/assembler.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/vmreg.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_sparc.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "vmreg_sparc.inline.hpp"
+#endif
 
 
 #define __ masm->
--- a/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,28 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharedRuntime_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/vframeArray.hpp"
+#include "vmreg_sparc.inline.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
+#ifdef SHARK
+#include "compiler/compileBroker.hpp"
+#include "shark/sharkCompiler.hpp"
+#endif
 
 #define __ masm->
 
--- a/src/cpu/sparc/vm/sparc.ad	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/sparc.ad	Tue Nov 30 18:10:20 2010 -0800
@@ -1843,6 +1843,12 @@
   return can_be_java_arg(reg);
 }
 
+bool Matcher::use_asm_for_ldiv_by_con( jlong divisor ) {
+  // Use hardware SDIVX instruction when it is
+  // faster than a code which use multiply.
+  return VM_Version::has_fast_idiv();
+}
+
 // Register for DIVI projection of divmodI
 RegMask Matcher::divI_proj_mask() {
   ShouldNotReachHere();
@@ -9510,16 +9516,16 @@
     Register Rdst = $dst$$Register;
     Register Rsrc = $src$$Register;
     Register Rtmp = $tmp$$Register;
-    __ srl(Rsrc, 1, Rtmp);
-    __ srl(Rsrc, 0, Rdst);
+    __ srl(Rsrc, 1,    Rtmp);
+    __ srl(Rsrc, 0,    Rdst);
     __ or3(Rdst, Rtmp, Rdst);
-    __ srl(Rdst, 2, Rtmp);
+    __ srl(Rdst, 2,    Rtmp);
     __ or3(Rdst, Rtmp, Rdst);
-    __ srl(Rdst, 4, Rtmp);
+    __ srl(Rdst, 4,    Rtmp);
     __ or3(Rdst, Rtmp, Rdst);
-    __ srl(Rdst, 8, Rtmp);
+    __ srl(Rdst, 8,    Rtmp);
     __ or3(Rdst, Rtmp, Rdst);
-    __ srl(Rdst, 16, Rtmp);
+    __ srl(Rdst, 16,   Rtmp);
     __ or3(Rdst, Rtmp, Rdst);
     __ popc(Rdst, Rdst);
     __ mov(BitsPerInt, Rtmp);
@@ -9528,7 +9534,7 @@
   ins_pipe(ialu_reg);
 %}
 
-instruct countLeadingZerosL(iRegI dst, iRegL src, iRegL tmp, flagsReg cr) %{
+instruct countLeadingZerosL(iRegIsafe dst, iRegL src, iRegL tmp, flagsReg cr) %{
   predicate(UsePopCountInstruction);  // See Matcher::match_rule_supported
   match(Set dst (CountLeadingZerosL src));
   effect(TEMP dst, TEMP tmp, KILL cr);
@@ -9559,18 +9565,18 @@
     Register Rdst = $dst$$Register;
     Register Rsrc = $src$$Register;
     Register Rtmp = $tmp$$Register;
-    __ srlx(Rsrc, 1, Rtmp);
-    __ or3(Rsrc, Rtmp, Rdst);
-    __ srlx(Rdst, 2, Rtmp);
-    __ or3(Rdst, Rtmp, Rdst);
-    __ srlx(Rdst, 4, Rtmp);
-    __ or3(Rdst, Rtmp, Rdst);
-    __ srlx(Rdst, 8, Rtmp);
-    __ or3(Rdst, Rtmp, Rdst);
-    __ srlx(Rdst, 16, Rtmp);
-    __ or3(Rdst, Rtmp, Rdst);
-    __ srlx(Rdst, 32, Rtmp);
-    __ or3(Rdst, Rtmp, Rdst);
+    __ srlx(Rsrc, 1,    Rtmp);
+    __ or3( Rsrc, Rtmp, Rdst);
+    __ srlx(Rdst, 2,    Rtmp);
+    __ or3( Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 4,    Rtmp);
+    __ or3( Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 8,    Rtmp);
+    __ or3( Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 16,   Rtmp);
+    __ or3( Rdst, Rtmp, Rdst);
+    __ srlx(Rdst, 32,   Rtmp);
+    __ or3( Rdst, Rtmp, Rdst);
     __ popc(Rdst, Rdst);
     __ mov(BitsPerLong, Rtmp);
     __ sub(Rtmp, Rdst, Rdst);
--- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,31 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubGenerator_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_sparc.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // Declaration and definition of StubGenerator (no .hpp file).
 // For a more detailed description of the stub routine structure
--- a/src/cpu/sparc/vm/stubRoutines_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/stubRoutines_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
 
 // Implementation of the platform-specific part of StubRoutines - for
 // a description of how to extend it, see the stubRoutines.hpp file.
--- a/src/cpu/sparc/vm/stubRoutines_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/stubRoutines_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_STUBROUTINES_SPARC_HPP
+#define CPU_SPARC_VM_STUBROUTINES_SPARC_HPP
+
 // This file holds the platform specific parts of the StubRoutines
 // definition. See stubRoutines.hpp for a description on how to
 // extend it.
@@ -100,3 +103,5 @@
 
   static address partial_subtype_check()                  { return _partial_subtype_check; }
 };
+
+#endif // CPU_SPARC_VM_STUBROUTINES_SPARC_HPP
--- a/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_TEMPLATEINTERPRETERGENERATOR_SPARC_HPP
+#define CPU_SPARC_VM_TEMPLATEINTERPRETERGENERATOR_SPARC_HPP
+
   protected:
 
   void generate_fixed_frame(bool native_call); // template interpreter only
   void generate_stack_overflow_check(Register Rframe_size, Register Rscratch,
                                      Register Rscratch2);
+
+#endif // CPU_SPARC_VM_TEMPLATEINTERPRETERGENERATOR_SPARC_HPP
--- a/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,28 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_templateInterpreter_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
 
 #ifndef CC_INTERP
 #ifndef FAST_DISPATCH
--- a/src/cpu/sparc/vm/templateInterpreter_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/templateInterpreter_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_TEMPLATEINTERPRETER_SPARC_HPP
+#define CPU_SPARC_VM_TEMPLATEINTERPRETER_SPARC_HPP
+
 
   protected:
 
@@ -38,3 +41,5 @@
 #else
   const static int InterpreterCodeSize = 180 * K;
 #endif
+
+#endif // CPU_SPARC_VM_TEMPLATEINTERPRETER_SPARC_HPP
--- a/src/cpu/sparc/vm/templateTable_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/templateTable_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_templateTable_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
 
 #ifndef CC_INTERP
 #define __ _masm->
@@ -341,6 +351,26 @@
   resolve_cache_and_index(f1_oop, Otos_i, Rcache, Rscratch, wide ? sizeof(u2) : sizeof(u1));
 
   __ verify_oop(Otos_i);
+
+  Label L_done;
+  const Register Rcon_klass = G3_scratch;  // same as Rcache
+  const Register Rarray_klass = G4_scratch;  // same as Rscratch
+  __ load_klass(Otos_i, Rcon_klass);
+  AddressLiteral array_klass_addr((address)Universe::systemObjArrayKlassObj_addr());
+  __ load_contents(array_klass_addr, Rarray_klass);
+  __ cmp(Rarray_klass, Rcon_klass);
+  __ brx(Assembler::notEqual, false, Assembler::pt, L_done);
+  __ delayed()->nop();
+  __ ld(Address(Otos_i, arrayOopDesc::length_offset_in_bytes()), Rcon_klass);
+  __ tst(Rcon_klass);
+  __ brx(Assembler::zero, true, Assembler::pt, L_done);
+  __ delayed()->clr(Otos_i);    // executed only if branch is taken
+
+  // Load the exception from the system-array which wraps it:
+  __ load_heap_oop(Otos_i, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Otos_i);
+  __ throw_if_not_x(Assembler::never, Interpreter::throw_exception_entry(), G3_scratch);
+
+  __ bind(L_done);
 }
 
 void TemplateTable::ldc2_w() {
--- a/src/cpu/sparc/vm/templateTable_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/templateTable_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_TEMPLATETABLE_SPARC_HPP
+#define CPU_SPARC_VM_TEMPLATETABLE_SPARC_HPP
+
   // helper function
   static void invokevfinal_helper(Register Rcache, Register Rret);
   static void invokeinterface_object_method(Register RklassOop, Register Rcall,
@@ -29,3 +32,5 @@
                                             Register Rflags);
   static void generate_vtable_call(Register Rrecv, Register Rindex, Register Rret);
   static void volatile_barrier(Assembler::Membar_mask_bits order_constraint);
+
+#endif // CPU_SPARC_VM_TEMPLATETABLE_SPARC_HPP
--- a/src/cpu/sparc/vm/vmStructs_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/vmStructs_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_VMSTRUCTS_SPARC_HPP
+#define CPU_SPARC_VM_VMSTRUCTS_SPARC_HPP
+
 // These are the CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -97,3 +100,5 @@
   /* NOTE that we do not use the last_entry() macro here; it is used        */
   /* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and must */
   /* be present there)                                                      */
+
+#endif // CPU_SPARC_VM_VMSTRUCTS_SPARC_HPP
--- a/src/cpu/sparc/vm/vm_version_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/vm_version_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/java.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "vm_version_sparc.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
 
 int VM_Version::_features = VM_Version::unknown_m;
 const char* VM_Version::_features_str = "";
@@ -80,7 +90,8 @@
       FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
     }
     if (is_niagara1_plus()) {
-      if (AllocatePrefetchStyle > 0 && FLAG_IS_DEFAULT(AllocatePrefetchStyle)) {
+      if (has_blk_init() && AllocatePrefetchStyle > 0 &&
+          FLAG_IS_DEFAULT(AllocatePrefetchStyle)) {
         // Use BIS instruction for allocation prefetch.
         FLAG_SET_DEFAULT(AllocatePrefetchStyle, 3);
         if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
@@ -118,16 +129,18 @@
 #endif
 
   char buf[512];
-  jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s",
+  jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
                (has_v8() ? ", has_v8" : ""),
                (has_v9() ? ", has_v9" : ""),
                (has_hardware_popc() ? ", popc" : ""),
                (has_vis1() ? ", has_vis1" : ""),
                (has_vis2() ? ", has_vis2" : ""),
+               (has_blk_init() ? ", has_blk_init" : ""),
                (is_ultra3() ? ", is_ultra3" : ""),
                (is_sun4v() ? ", is_sun4v" : ""),
                (is_niagara1() ? ", is_niagara1" : ""),
                (is_niagara1_plus() ? ", is_niagara1_plus" : ""),
+               (is_sparc64() ? ", is_sparc64" : ""),
                (!has_hardware_mul32() ? ", no-mul32" : ""),
                (!has_hardware_div32() ? ", no-div32" : ""),
                (!has_hardware_fsmuld() ? ", no-fsmuld" : ""));
--- a/src/cpu/sparc/vm/vm_version_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/vm_version_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_VM_VERSION_SPARC_HPP
+#define CPU_SPARC_VM_VM_VERSION_SPARC_HPP
+
+#include "runtime/globals_extension.hpp"
+#include "runtime/vm_version.hpp"
+
 class VM_Version: public Abstract_VM_Version {
 protected:
   enum Feature_Flag {
@@ -33,7 +39,9 @@
     v9_instructions    = 5,
     vis1_instructions  = 6,
     vis2_instructions  = 7,
-    sun4v_instructions = 8
+    sun4v_instructions = 8,
+    blk_init_instructions = 9,
+    fmaf_instructions  = 10
   };
 
   enum Feature_Flag_Set {
@@ -49,6 +57,8 @@
     vis1_instructions_m = 1 << vis1_instructions,
     vis2_instructions_m = 1 << vis2_instructions,
     sun4v_m             = 1 << sun4v_instructions,
+    blk_init_instructions_m = 1 << blk_init_instructions,
+    fmaf_instructions_m = 1 << fmaf_instructions,
 
     generic_v8_m        = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m,
     generic_v9_m        = generic_v8_m | v9_instructions_m,
@@ -67,6 +77,7 @@
   static int  platform_features(int features);
 
   static bool is_niagara1(int features) { return (features & sun4v_m) != 0; }
+  static bool  is_sparc64(int features) { return (features & fmaf_instructions_m) != 0; }
 
   static int maximum_niagara1_processor_count() { return 32; }
   // Returns true if the platform is in the niagara line and
@@ -86,6 +97,7 @@
   static bool has_hardware_popc()       { return (_features & hardware_popc_m) != 0; }
   static bool has_vis1()                { return (_features & vis1_instructions_m) != 0; }
   static bool has_vis2()                { return (_features & vis2_instructions_m) != 0; }
+  static bool has_blk_init()            { return (_features & blk_init_instructions_m) != 0; }
 
   static bool supports_compare_and_exchange()
                                         { return has_v9(); }
@@ -93,8 +105,10 @@
   static bool is_ultra3()               { return (_features & ultra3_m) == ultra3_m; }
   static bool is_sun4v()                { return (_features & sun4v_m) != 0; }
   static bool is_niagara1()             { return is_niagara1(_features); }
+  static bool is_sparc64()              { return is_sparc64(_features); }
 
   static bool has_fast_fxtof()          { return has_v9() && !is_ultra3(); }
+  static bool has_fast_idiv()           { return is_niagara1_plus() || is_sparc64(); }
 
   static const char* cpu_features()     { return _features_str; }
 
@@ -144,3 +158,5 @@
   // Calculates the number of parallel threads
   static unsigned int calc_parallel_worker_threads();
 };
+
+#endif // CPU_SPARC_VM_VM_VERSION_SPARC_HPP
--- a/src/cpu/sparc/vm/vmreg_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/vmreg_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vmreg_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "code/vmreg.hpp"
 
 
 
--- a/src/cpu/sparc/vm/vmreg_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/vmreg_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_VMREG_SPARC_HPP
+#define CPU_SPARC_VM_VMREG_SPARC_HPP
+
   bool is_Register();
   Register as_Register();
 
   bool is_FloatRegister();
   FloatRegister as_FloatRegister();
+
+#endif // CPU_SPARC_VM_VMREG_SPARC_HPP
--- a/src/cpu/sparc/vm/vmreg_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/vmreg_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_SPARC_VM_VMREG_SPARC_INLINE_HPP
+#define CPU_SPARC_VM_VMREG_SPARC_INLINE_HPP
+
 inline VMReg RegisterImpl::as_VMReg() {
   if( this==noreg ) return VMRegImpl::Bad();
   return VMRegImpl::as_VMReg(encoding() << 1 );
@@ -60,3 +63,5 @@
   assert(false, "what register?");
   return false;
 }
+
+#endif // CPU_SPARC_VM_VMREG_SPARC_INLINE_HPP
--- a/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vtableStubs_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "code/vtableStubs.hpp"
+#include "interp_masm_sparc.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassVtable.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_sparc.inline.hpp"
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // machine-dependent part of VtableStubs: create vtableStub of correct size and
 // initialize its code
--- a/src/cpu/x86/vm/assembler_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/assembler_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,24 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/os.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#endif
 
 // Implementation of AddressLiteral
 
@@ -1275,6 +1291,12 @@
   emit_byte(0xF8 | encode);
 }
 
+void Assembler::divl(Register src) { // Unsigned
+  int encode = prefix_and_encode(src->encoding());
+  emit_byte(0xF7);
+  emit_byte(0xF0 | encode);
+}
+
 void Assembler::imull(Register dst, Register src) {
   int encode = prefix_and_encode(dst->encoding(), src->encoding());
   emit_byte(0x0F);
@@ -1288,7 +1310,7 @@
   if (is8bit(value)) {
     emit_byte(0x6B);
     emit_byte(0xC0 | encode);
-    emit_byte(value);
+    emit_byte(value & 0xFF);
   } else {
     emit_byte(0x69);
     emit_byte(0xC0 | encode);
@@ -3903,7 +3925,7 @@
   if (is8bit(value)) {
     emit_byte(0x6B);
     emit_byte(0xC0 | encode);
-    emit_byte(value);
+    emit_byte(value & 0xFF);
   } else {
     emit_byte(0x69);
     emit_byte(0xC0 | encode);
@@ -5516,17 +5538,14 @@
 }
 
 void MacroAssembler::warn(const char* msg) {
-  push(r12);
-  movq(r12, rsp);
+  push(rsp);
   andq(rsp, -16);     // align stack as required by push_CPU_state and call
 
   push_CPU_state();   // keeps alignment at 16 bytes
   lea(c_rarg0, ExternalAddress((address) msg));
   call_VM_leaf(CAST_FROM_FN_PTR(address, warning), c_rarg0);
   pop_CPU_state();
-
-  movq(rsp, r12);
-  pop(r12);
+  pop(rsp);
 }
 
 #ifndef PRODUCT
@@ -5838,6 +5857,10 @@
   // debugging support
   assert(number_of_arguments >= 0   , "cannot have negative number of arguments");
   LP64_ONLY(assert(java_thread == r15_thread, "unexpected register"));
+#ifdef ASSERT
+  LP64_ONLY(if (UseCompressedOops) verify_heapbase("call_VM_base");)
+#endif // ASSERT
+
   assert(java_thread != oop_result  , "cannot use the same register for java_thread & oop_result");
   assert(java_thread != last_java_sp, "cannot use the same register for java_thread & last_java_sp");
 
--- a/src/cpu/x86/vm/assembler_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/assembler_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_ASSEMBLER_X86_HPP
+#define CPU_X86_VM_ASSEMBLER_X86_HPP
+
 class BiasedLockingCounters;
 
 // Contains all the definitions needed for x86 assembly code generation.
@@ -1011,6 +1014,7 @@
   void hlt();
 
   void idivl(Register src);
+  void divl(Register src); // Unsigned division
 
   void idivq(Register src);
 
@@ -2272,3 +2276,5 @@
 #ifdef ASSERT
 inline bool AbstractAssembler::pd_check_instruction_mark() { return true; }
 #endif
+
+#endif // CPU_X86_VM_ASSEMBLER_X86_HPP
--- a/src/cpu/x86/vm/assembler_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/assembler_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef CPU_X86_VM_ASSEMBLER_X86_INLINE_HPP
+#define CPU_X86_VM_ASSEMBLER_X86_INLINE_HPP
+
+#include "asm/assembler.inline.hpp"
+#include "asm/codeBuffer.hpp"
+#include "code/codeCache.hpp"
+#include "runtime/handles.inline.hpp"
+
 inline void MacroAssembler::pd_patch_instruction(address branch, address target) {
   unsigned char op = branch[0];
   assert(op == 0xE8 /* call */ ||
@@ -85,3 +93,5 @@
   code_section()->set_end(_code_pos);
 }
 #endif // _LP64
+
+#endif // CPU_X86_VM_ASSEMBLER_X86_INLINE_HPP
--- a/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,30 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecodeInterpreter_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/bytecodeInterpreter.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "interp_masm_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "interp_masm_x86_64.hpp"
+#endif
 
 #ifdef CC_INTERP
 
--- a/src/cpu/x86/vm/bytecodeInterpreter_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/bytecodeInterpreter_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_BYTECODEINTERPRETER_X86_HPP
+#define CPU_X86_VM_BYTECODEINTERPRETER_X86_HPP
+
 // Platform specific for C++ based Interpreter
 
 private:
@@ -108,3 +111,5 @@
                                                   ((VMJavaVal64*)(addr))->d)
 #define SET_LOCALS_LONG_FROM_ADDR(addr, offset) (((VMJavaVal64*)&locals[-((offset)+1)])->l = \
                                                 ((VMJavaVal64*)(addr))->l)
+
+#endif // CPU_X86_VM_BYTECODEINTERPRETER_X86_HPP
--- a/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_BYTECODEINTERPRETER_X86_INLINE_HPP
+#define CPU_X86_VM_BYTECODEINTERPRETER_X86_INLINE_HPP
+
 // Inline interpreter functions for IA32
 
 inline jfloat BytecodeInterpreter::VMfloatAdd(jfloat op1, jfloat op2) { return op1 + op2; }
@@ -278,3 +281,5 @@
 inline jbyte BytecodeInterpreter::VMint2Byte(jint val) {
   return (jbyte) val;
 }
+
+#endif // CPU_X86_VM_BYTECODEINTERPRETER_X86_INLINE_HPP
--- a/src/cpu/x86/vm/bytecodes_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/bytecodes_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecodes_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodes.hpp"
 
 
 void Bytecodes::pd_initialize() {
--- a/src/cpu/x86/vm/bytecodes_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/bytecodes_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,4 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_BYTECODES_X86_HPP
+#define CPU_X86_VM_BYTECODES_X86_HPP
+
 // No i486 specific bytecodes
+
+#endif // CPU_X86_VM_BYTECODES_X86_HPP
--- a/src/cpu/x86/vm/bytes_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/bytes_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef CPU_X86_VM_BYTES_X86_HPP
+#define CPU_X86_VM_BYTES_X86_HPP
+
+#include "memory/allocation.hpp"
+
 class Bytes: AllStatic {
  private:
 #ifndef AMD64
@@ -67,4 +72,15 @@
 
 
 // The following header contains the implementations of swap_u2, swap_u4, and swap_u8[_base]
-#include "incls/_bytes_pd.inline.hpp.incl"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "bytes_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "bytes_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "bytes_windows_x86.inline.hpp"
+#endif
+
+
+#endif // CPU_X86_VM_BYTES_X86_HPP
--- a/src/cpu/x86/vm/c1_CodeStubs_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_CodeStubs_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_CodeStubs_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_CodeStubs.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "nativeInst_x86.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_x86.inline.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#endif
 
 
 #define __ ce->masm()->
@@ -499,7 +509,7 @@
   Register new_val_reg = new_val()->as_register();
   __ cmpptr(new_val_reg, (int32_t) NULL_WORD);
   __ jcc(Assembler::equal, _continuation);
-  ce->store_parameter(addr()->as_register(), 0);
+  ce->store_parameter(addr()->as_pointer_register(), 0);
   __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_post_barrier_slow_id)));
   __ jmp(_continuation);
 }
--- a/src/cpu/x86/vm/c1_Defs_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_Defs_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_C1_DEFS_X86_HPP
+#define CPU_X86_VM_C1_DEFS_X86_HPP
+
 // native word offsets from memory address (little endian)
 enum {
   pd_lo_word_offset_in_bytes = 0,
@@ -71,3 +74,5 @@
 enum {
   pd_float_saved_as_double = true
 };
+
+#endif // CPU_X86_VM_C1_DEFS_X86_HPP
--- a/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_FpuStackSim_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_FpuStackSim.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "utilities/array.hpp"
+#include "utilities/ostream.hpp"
 
 //--------------------------------------------------------
 //               FpuStackSim
--- a/src/cpu/x86/vm/c1_FpuStackSim_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_FpuStackSim_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_C1_FPUSTACKSIM_X86_HPP
+#define CPU_X86_VM_C1_FPUSTACKSIM_X86_HPP
+
 //  Simulates the FPU stack and maintains mapping [fpu-register -> stack offset]
 //  FPU registers are described as numbers from 0..nof_fpu_regs-1
 
@@ -65,3 +68,5 @@
 
   void print() PRODUCT_RETURN;
 };
+
+#endif // CPU_X86_VM_C1_FPUSTACKSIM_X86_HPP
--- a/src/cpu/x86/vm/c1_FrameMap_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_FrameMap_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_FrameMap_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_LIR.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_x86.inline.hpp"
 
 const int FrameMap::pd_c_runtime_reserved_arg_size = 0;
 
--- a/src/cpu/x86/vm/c1_FrameMap_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_FrameMap_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_C1_FRAMEMAP_X86_HPP
+#define CPU_X86_VM_C1_FRAMEMAP_X86_HPP
+
 //  On i486 the frame looks as follows:
 //
 //  +-----------------------------+---------+----------------------------------------+----------------+-----------
@@ -126,3 +129,5 @@
     assert(i >= 0 && i < nof_caller_save_xmm_regs, "out of bounds");
     return _caller_save_xmm_regs[i];
   }
+
+#endif // CPU_X86_VM_C1_FRAMEMAP_X86_HPP
--- a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_LIRAssembler_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciArrayKlass.hpp"
+#include "ci/ciInstance.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/barrierSet.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "nativeInst_x86.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 
 // These masks are used to provide 128-bit aligned bitmasks to the XMM
--- a/src/cpu/x86/vm/c1_LIRAssembler_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_C1_LIRASSEMBLER_X86_HPP
+#define CPU_X86_VM_C1_LIRASSEMBLER_X86_HPP
+
  private:
 
   Address::ScaleFactor array_element_size(BasicType type) const;
@@ -56,3 +59,5 @@
          exception_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(175),
          deopt_handler_size = NOT_LP64(10) LP64_ONLY(17)
        };
+
+#endif // CPU_X86_VM_C1_LIRASSEMBLER_X86_HPP
--- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_LIRGenerator_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_LIRGenerator.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciArray.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "vmreg_x86.inline.hpp"
 
 #ifdef ASSERT
 #define __ gen()->lir(__FILE__, __LINE__)->
@@ -765,7 +777,7 @@
     ShouldNotReachHere();
   }
 
-  LIR_Opr addr = (type == objectType) ? new_register(T_OBJECT) : new_pointer_register();
+  LIR_Opr addr = new_pointer_register();
   LIR_Address* a;
   if(offset.result()->is_constant()) {
     a = new LIR_Address(obj.result(),
--- a/src/cpu/x86/vm/c1_LinearScan_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_LinearScan_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_LinearScan_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LinearScan.hpp"
+#include "utilities/bitMap.inline.hpp"
 
 
 //----------------------------------------------------------------------
--- a/src/cpu/x86/vm/c1_LinearScan_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_LinearScan_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_C1_LINEARSCAN_X86_HPP
+#define CPU_X86_VM_C1_LINEARSCAN_X86_HPP
+
 inline bool LinearScan::is_processed_reg_num(int reg_num) {
 #ifndef _LP64
   // rsp and rbp (numbers 6 ancd 7) are ignored
@@ -185,3 +188,5 @@
   FpuStackAllocator(Compilation* compilation, LinearScan* allocator);
   void allocate();
 };
+
+#endif // CPU_X86_VM_C1_LINEARSCAN_X86_HPP
--- a/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_MacroAssembler_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/markOop.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/os.hpp"
+#include "runtime/stubRoutines.hpp"
 
 int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register disp_hdr, Register scratch, Label& slow_case) {
   const int aligned_mask = BytesPerWord -1;
--- a/src/cpu/x86/vm/c1_MacroAssembler_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_MacroAssembler_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_C1_MACROASSEMBLER_X86_HPP
+#define CPU_X86_VM_C1_MACROASSEMBLER_X86_HPP
+
 // C1_MacroAssembler contains high-level macros for C1
 
  private:
@@ -113,3 +116,5 @@
   }
 
   void invalidate_registers(bool inv_rax, bool inv_rbx, bool inv_rcx, bool inv_rdx, bool inv_rsi, bool inv_rdi) PRODUCT_RETURN;
+
+#endif // CPU_X86_VM_C1_MACROASSEMBLER_X86_HPP
--- a/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Runtime1_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Defs.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_x86.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "register_x86.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframeArray.hpp"
+#include "vmreg_x86.inline.hpp"
 
 
 // Implementation of StubAssembler
--- a/src/cpu/x86/vm/c1_globals_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c1_globals_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_C1_GLOBALS_X86_HPP
+#define CPU_X86_VM_C1_GLOBALS_X86_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 // Sets the default values for platform dependent flags used by the client compiler.
 // (see c1_globals.hpp)
 
@@ -60,3 +66,5 @@
 define_pd_global(bool, TwoOperandLIRForm,            true );
 
 define_pd_global(intx, SafepointPollOffset,          256  );
+
+#endif // CPU_X86_VM_C1_GLOBALS_X86_HPP
--- a/src/cpu/x86/vm/c2_globals_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c2_globals_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_C2_GLOBALS_X86_HPP
+#define CPU_X86_VM_C2_GLOBALS_X86_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 // Sets the default values for platform dependent flags used by the server compiler.
 // (see c2_globals.hpp).  Alpha-sorted.
 
@@ -87,3 +93,5 @@
 
 // Ergonomics related flags
 define_pd_global(bool, NeverActAsServerClassMachine, false);
+
+#endif // CPU_X86_VM_C2_GLOBALS_X86_HPP
--- a/src/cpu/x86/vm/c2_init_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/c2_init_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c2_init_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/compile.hpp"
+#include "opto/node.hpp"
 
 // processor dependent initialization for i486
 
--- a/src/cpu/x86/vm/codeBuffer_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/codeBuffer_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef CPU_X86_VM_CODEBUFFER_X86_HPP
+#define CPU_X86_VM_CODEBUFFER_X86_HPP
+
 private:
   void pd_initialize() {}
 
 public:
   void flush_bundle(bool start_new_bundle) {}
+
+#endif // CPU_X86_VM_CODEBUFFER_X86_HPP
--- a/src/cpu/x86/vm/copy_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/copy_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,10 +22,22 @@
  *
  */
 
+#ifndef CPU_X86_VM_COPY_X86_HPP
+#define CPU_X86_VM_COPY_X86_HPP
+
 // Inline functions for memory copy and fill.
 
 // Contains inline asm implementations
-#include "incls/_copy_pd.inline.hpp.incl"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "copy_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "copy_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "copy_windows_x86.inline.hpp"
+#endif
+
 
 static void pd_fill_to_words(HeapWord* tohw, size_t count, juint value) {
 #ifdef AMD64
@@ -58,3 +70,5 @@
 static void pd_zero_to_bytes(void* to, size_t count) {
   (void)memset(to, 0, count);
 }
+
+#endif // CPU_X86_VM_COPY_X86_HPP
--- a/src/cpu/x86/vm/cppInterpreterGenerator_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/cppInterpreterGenerator_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_CPPINTERPRETERGENERATOR_X86_HPP
+#define CPU_X86_VM_CPPINTERPRETERGENERATOR_X86_HPP
+
  protected:
 
 #if 0
@@ -45,3 +48,5 @@
                                           const Register prev_state,
                                           const Register sender_sp,
                                           bool native); // C++ interpreter only
+
+#endif // CPU_X86_VM_CPPINTERPRETERGENERATOR_X86_HPP
--- a/src/cpu/x86/vm/cppInterpreter_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/cppInterpreter_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,32 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cppInterpreter_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/cppInterpreter.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+#ifdef SHARK
+#include "shark/shark_globals.hpp"
+#endif
 
 #ifdef CC_INTERP
 
--- a/src/cpu/x86/vm/cppInterpreter_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/cppInterpreter_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_CPPINTERPRETER_X86_HPP
+#define CPU_X86_VM_CPPINTERPRETER_X86_HPP
+
 
   protected:
 
@@ -31,3 +34,5 @@
   // Run with +PrintInterpreter to get the VM to print out the size.
   // Max size with JVMTI
   const static int InterpreterCodeSize = 168 * 1024;
+
+#endif // CPU_X86_VM_CPPINTERPRETER_X86_HPP
--- a/src/cpu/x86/vm/debug_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/debug_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,7 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_debug_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeCache.hpp"
+#include "code/nmethod.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/init.hpp"
+#include "runtime/os.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/top.hpp"
 
 void pd_ps(frame f) {}
--- a/src/cpu/x86/vm/depChecker_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/depChecker_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,7 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_depChecker_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/disassembler.hpp"
+#include "depChecker_x86.hpp"
+#include "runtime/hpi.hpp"
 
 // Nothing to do on i486
--- a/src/cpu/x86/vm/depChecker_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/depChecker_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,4 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_DEPCHECKER_X86_HPP
+#define CPU_X86_VM_DEPCHECKER_X86_HPP
+
 // Nothing to do on i486
+
+#endif // CPU_X86_VM_DEPCHECKER_X86_HPP
--- a/src/cpu/x86/vm/disassembler_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/disassembler_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_DISASSEMBLER_X86_HPP
+#define CPU_X86_VM_DISASSEMBLER_X86_HPP
+
   static int pd_instruction_alignment() {
     return 1;
   }
@@ -29,3 +32,5 @@
   static const char* pd_cpu_opts() {
     return "";
   }
+
+#endif // CPU_X86_VM_DISASSEMBLER_X86_HPP
--- a/src/cpu/x86/vm/dump_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/dump_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dump_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/compactingPermGenGen.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/space.inline.hpp"
 
 
 
--- a/src/cpu/x86/vm/dump_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/dump_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dump_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/compactingPermGenGen.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/space.inline.hpp"
 
 
 
--- a/src/cpu/x86/vm/frame_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/frame_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,24 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_frame_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "vmreg_x86.inline.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#include "runtime/vframeArray.hpp"
+#endif
 
 #ifdef ASSERT
 void RegisterMap::check_location_valid() {
--- a/src/cpu/x86/vm/frame_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/frame_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_FRAME_X86_HPP
+#define CPU_X86_VM_FRAME_X86_HPP
+
+#include "runtime/synchronizer.hpp"
+#include "utilities/top.hpp"
+
 // A frame represents a physical stack frame (an activation).  Frames can be
 // C or Java frames, and the Java frames can be interpreted or compiled.
 // In contrast, vframes represent source-level activations, so that one physical frame
@@ -199,3 +205,5 @@
 #ifdef CC_INTERP
   inline interpreterState get_interpreterState() const;
 #endif // CC_INTERP
+
+#endif // CPU_X86_VM_FRAME_X86_HPP
--- a/src/cpu/x86/vm/frame_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/frame_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_FRAME_X86_INLINE_HPP
+#define CPU_X86_VM_FRAME_X86_INLINE_HPP
+
 // Inline functions for Intel frames:
 
 // Constructors:
@@ -296,3 +299,5 @@
 inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
   *((oop*) map->location(rax->as_VMReg())) = obj;
 }
+
+#endif // CPU_X86_VM_FRAME_X86_INLINE_HPP
--- a/src/cpu/x86/vm/globalDefinitions_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/globalDefinitions_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,4 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_GLOBALDEFINITIONS_X86_HPP
+#define CPU_X86_VM_GLOBALDEFINITIONS_X86_HPP
+
 const int StackAlignmentInBytes  = 16;
+
+#endif // CPU_X86_VM_GLOBALDEFINITIONS_X86_HPP
--- a/src/cpu/x86/vm/globals_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/globals_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_GLOBALS_X86_HPP
+#define CPU_X86_VM_GLOBALS_X86_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 // Sets the default values for platform dependent flags used by the runtime system.
 // (see globals.hpp)
 
@@ -63,3 +69,7 @@
 
 define_pd_global(bool, RewriteBytecodes,     true);
 define_pd_global(bool, RewriteFrequentPairs, true);
+
+define_pd_global(bool, UseMembar,            false);
+
+#endif // CPU_X86_VM_GLOBALS_X86_HPP
--- a/src/cpu/x86/vm/icBuffer_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/icBuffer_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icBuffer_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/resourceArea.hpp"
+#include "nativeInst_x86.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
 
 int InlineCacheBuffer::ic_stub_code_size() {
   return NativeMovConstReg::instruction_size +
--- a/src/cpu/x86/vm/icache_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/icache_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icache_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "runtime/icache.hpp"
 
 #define __ _masm->
 
--- a/src/cpu/x86/vm/icache_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/icache_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_ICACHE_X86_HPP
+#define CPU_X86_VM_ICACHE_X86_HPP
+
 // Interface for updating the instruction cache.  Whenever the VM modifies
 // code, part of the processor instruction cache potentially has to be flushed.
 
@@ -53,3 +56,5 @@
   };
 #endif // AMD64
 };
+
+#endif // CPU_X86_VM_ICACHE_X86_HPP
--- a/src/cpu/x86/vm/interp_masm_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interp_masm_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,29 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interp_masm_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "interp_masm_x86_32.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/sharedRuntime.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 // Implementation of InterpreterMacroAssembler
--- a/src/cpu/x86/vm/interp_masm_x86_32.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interp_masm_x86_32.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_INTERP_MASM_X86_32_HPP
+#define CPU_X86_VM_INTERP_MASM_X86_32_HPP
+
+#include "assembler_x86.inline.hpp"
+#include "interpreter/invocationCounter.hpp"
+
 // This file specializes the assember with interpreter-specific macros
 
 
@@ -227,3 +233,5 @@
   void notify_method_exit(TosState state, NotifyMethodExitMode mode);
 
 };
+
+#endif // CPU_X86_VM_INTERP_MASM_X86_32_HPP
--- a/src/cpu/x86/vm/interp_masm_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interp_masm_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,29 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interp_masm_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "interp_masm_x86_64.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/sharedRuntime.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 // Implementation of InterpreterMacroAssembler
@@ -428,10 +449,9 @@
     // JVMTI events, such as single-stepping, are implemented partly by avoiding running
     // compiled code in threads for which the event is enabled.  Check here for
     // interp_only_mode if these events CAN be enabled.
-    get_thread(temp);
     // interp_only is an int, on little endian it is sufficient to test the byte only
-    // Is a cmpl faster (ce
-    cmpb(Address(temp, JavaThread::interp_only_mode_offset()), 0);
+    // Is a cmpl faster?
+    cmpb(Address(r15_thread, JavaThread::interp_only_mode_offset()), 0);
     jcc(Assembler::zero, run_compiled_code);
     jmp(Address(method, methodOopDesc::interpreter_entry_offset()));
     bind(run_compiled_code);
--- a/src/cpu/x86/vm/interp_masm_x86_64.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interp_masm_x86_64.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_INTERP_MASM_X86_64_HPP
+#define CPU_X86_VM_INTERP_MASM_X86_64_HPP
+
+#include "assembler_x86.inline.hpp"
+#include "interpreter/invocationCounter.hpp"
+
 // This file specializes the assember with interpreter-specific macros
 
 
@@ -243,3 +249,5 @@
   void notify_method_entry();
   void notify_method_exit(TosState state, NotifyMethodExitMode mode);
 };
+
+#endif // CPU_X86_VM_INTERP_MASM_X86_64_HPP
--- a/src/cpu/x86/vm/interpreterGenerator_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interpreterGenerator_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_INTERPRETERGENERATOR_X86_HPP
+#define CPU_X86_VM_INTERPRETERGENERATOR_X86_HPP
+
 
 // Generation of Interpreter
 //
@@ -41,3 +44,5 @@
 
   void generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue);
   void generate_counter_overflow(Label* do_continue);
+
+#endif // CPU_X86_VM_INTERPRETERGENERATOR_X86_HPP
--- a/src/cpu/x86/vm/interpreterRT_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interpreterRT_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef CPU_X86_VM_INTERPRETERRT_X86_HPP
+#define CPU_X86_VM_INTERPRETERRT_X86_HPP
+
+#include "memory/allocation.hpp"
+
 // native method calls
 
 class SignatureHandlerGenerator: public NativeSignatureIterator {
@@ -72,3 +77,5 @@
   static Register to();
   static Register temp();
 };
+
+#endif // CPU_X86_VM_INTERPRETERRT_X86_HPP
--- a/src/cpu/x86/vm/interpreterRT_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interpreterRT_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreterRT_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/signature.hpp"
 
 
 #define __ _masm->
--- a/src/cpu/x86/vm/interpreterRT_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interpreterRT_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreterRT_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/signature.hpp"
 
 #define __ _masm->
 
--- a/src/cpu/x86/vm/interpreter_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interpreter_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_INTERPRETER_X86_HPP
+#define CPU_X86_VM_INTERPRETER_X86_HPP
+
  public:
 
   // Sentinel placed in the code for interpreter returns so
@@ -44,3 +47,5 @@
     assert(i <= 0, "local direction already negated");
     return stackElementWords * i;
   }
+
+#endif // CPU_X86_VM_INTERPRETER_X86_HPP
--- a/src/cpu/x86/vm/interpreter_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interpreter_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,32 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreter_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 #define __ _masm->
 
--- a/src/cpu/x86/vm/interpreter_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/interpreter_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,32 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreter_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 #define __ _masm->
 
--- a/src/cpu/x86/vm/javaFrameAnchor_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/javaFrameAnchor_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_JAVAFRAMEANCHOR_X86_HPP
+#define CPU_X86_VM_JAVAFRAMEANCHOR_X86_HPP
+
 private:
 
   // FP value associated with _last_Java_sp:
@@ -79,3 +82,5 @@
   intptr_t*   last_Java_fp(void)                     { return _last_Java_fp; }
   // Assert (last_Java_sp == NULL || fp == NULL)
   void set_last_Java_fp(intptr_t* fp)                { _last_Java_fp = fp; }
+
+#endif // CPU_X86_VM_JAVAFRAMEANCHOR_X86_HPP
--- a/src/cpu/x86/vm/jniFastGetField_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/jniFastGetField_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jniFastGetField_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm_misc.hpp"
+#include "runtime/safepoint.hpp"
 
 #define __ masm->
 
--- a/src/cpu/x86/vm/jniFastGetField_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/jniFastGetField_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jniFastGetField_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm_misc.hpp"
+#include "runtime/safepoint.hpp"
 
 #define __ masm->
 
--- a/src/cpu/x86/vm/jniTypes_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/jniTypes_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef CPU_X86_VM_JNITYPES_X86_HPP
+#define CPU_X86_VM_JNITYPES_X86_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "prims/jni.h"
+
 // This file holds platform-dependent routines used to write primitive jni
 // types to the array of arguments passed into JavaCalls::call
 
@@ -122,3 +129,5 @@
   static inline jdouble get_double(intptr_t *from) { return *(jdouble *)(from + _JNI_SLOT_OFFSET); }
 #undef _JNI_SLOT_OFFSET
 };
+
+#endif // CPU_X86_VM_JNITYPES_X86_HPP
--- a/src/cpu/x86/vm/jni_x86.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/jni_x86.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/src/cpu/x86/vm/methodHandles_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/methodHandles_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_methodHandles_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "prims/methodHandles.hpp"
 
 #define __ _masm->
 
--- a/src/cpu/x86/vm/nativeInst_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/nativeInst_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_nativeInst_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "nativeInst_x86.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/ostream.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 void NativeInstruction::wrote(int offset) {
   ICache::invalidate_word(addr_at(offset));
--- a/src/cpu/x86/vm/nativeInst_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/nativeInst_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef CPU_X86_VM_NATIVEINST_X86_HPP
+#define CPU_X86_VM_NATIVEINST_X86_HPP
+
+#include "asm/assembler.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/os.hpp"
+#include "utilities/top.hpp"
+
 // We have interfaces for the following instructions:
 // - NativeInstruction
 // - - NativeCall
@@ -547,3 +556,5 @@
   return false;
 #endif // AMD64
 }
+
+#endif // CPU_X86_VM_NATIVEINST_X86_HPP
--- a/src/cpu/x86/vm/registerMap_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/registerMap_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_REGISTERMAP_X86_HPP
+#define CPU_X86_VM_REGISTERMAP_X86_HPP
+
 // machine-dependent implemention for register maps
   friend class frame;
 
@@ -37,3 +40,5 @@
   void pd_clear() {}
   void pd_initialize() {}
   void pd_initialize_from(const RegisterMap* map) {}
+
+#endif // CPU_X86_VM_REGISTERMAP_X86_HPP
--- a/src/cpu/x86/vm/register_definitions_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/register_definitions_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_register_definitions_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/register.hpp"
+#include "register_x86.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "interp_masm_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "interp_masm_x86_64.hpp"
+#endif
 
 REGISTER_DEFINITION(Register, noreg);
 REGISTER_DEFINITION(Register, rax);
--- a/src/cpu/x86/vm/register_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/register_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_register_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "register_x86.hpp"
+
 #ifndef AMD64
 const int ConcreteRegisterImpl::max_gpr = RegisterImpl::number_of_registers;
 #else
--- a/src/cpu/x86/vm/register_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/register_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_REGISTER_X86_HPP
+#define CPU_X86_VM_REGISTER_X86_HPP
+
+#include "asm/register.hpp"
+#include "vm_version_x86.hpp"
+
 class VMRegImpl;
 typedef VMRegImpl* VMReg;
 
@@ -219,3 +225,5 @@
   static const int max_xmm;
 
 };
+
+#endif // CPU_X86_VM_REGISTER_X86_HPP
--- a/src/cpu/x86/vm/relocInfo_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/relocInfo_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_relocInfo_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.inline.hpp"
+#include "assembler_x86.inline.hpp"
+#include "code/relocInfo.hpp"
+#include "nativeInst_x86.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/safepoint.hpp"
 
 
 void Relocation::pd_set_data_value(address x, intptr_t o) {
--- a/src/cpu/x86/vm/relocInfo_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/relocInfo_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_RELOCINFO_X86_HPP
+#define CPU_X86_VM_RELOCINFO_X86_HPP
+
   // machine-dependent parts of class relocInfo
  private:
   enum {
@@ -36,3 +39,5 @@
     format_width       =  2
 #endif
   };
+
+#endif // CPU_X86_VM_RELOCINFO_X86_HPP
--- a/src/cpu/x86/vm/runtime_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/runtime_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,9 +22,23 @@
  *
  */
 
+#include "precompiled.hpp"
+#ifdef COMPILER2
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/vmreg.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_x86.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "vmreg_x86.inline.hpp"
+#endif
 
-#include "incls/_precompiled.incl"
-#include "incls/_runtime_x86_32.cpp.incl"
 
 #define __ masm->
 
--- a/src/cpu/x86/vm/runtime_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/runtime_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,7 +22,23 @@
  *
  */
 
-#include "incls/_precompiled.incl"
+#include "precompiled.hpp"
+#ifdef COMPILER2
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/vmreg.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_x86.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "vmreg_x86.inline.hpp"
+#endif
+
 
 // This file should really contain the code for generating the OptoRuntime
 // exception_blob. However that code uses SimpleRuntimeFrame which only
--- a/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,24 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharedRuntime_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/vframeArray.hpp"
+#include "vmreg_x86.inline.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 #define __ masm->
 #ifdef COMPILER2
--- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,24 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharedRuntime_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/vframeArray.hpp"
+#include "vmreg_x86.inline.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 DeoptimizationBlob *SharedRuntime::_deopt_blob;
 #ifdef COMPILER2
--- a/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,34 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubGenerator_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_x86.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // Declaration and definition of StubGenerator (no .hpp file).
 // For a more detailed description of the stub routine structure
--- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,34 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubGenerator_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_x86.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // Declaration and definition of StubGenerator (no .hpp file).
 // For a more detailed description of the stub routine structure
--- a/src/cpu/x86/vm/stubRoutines_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/stubRoutines_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 // Implementation of the platform-specific part of StubRoutines - for
 // a description of how to extend it, see the stubRoutines.hpp file.
--- a/src/cpu/x86/vm/stubRoutines_x86_32.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/stubRoutines_x86_32.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_STUBROUTINES_X86_32_HPP
+#define CPU_X86_VM_STUBROUTINES_X86_32_HPP
+
 // This file holds the platform specific parts of the StubRoutines
 // definition. See stubRoutines.hpp for a description on how to
 // extend it.
@@ -60,3 +63,5 @@
 
   static bool    returns_to_call_stub(address return_pc)     { return (return_pc == _call_stub_return_address) ||
                                                                        return_pc == x86::get_call_stub_compiled_return(); }
+
+#endif // CPU_X86_VM_STUBROUTINES_X86_32_HPP
--- a/src/cpu/x86/vm/stubRoutines_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/stubRoutines_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 // Implementation of the platform-specific part of StubRoutines - for
 // a description of how to extend it, see the stubRoutines.hpp file.
--- a/src/cpu/x86/vm/stubRoutines_x86_64.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/stubRoutines_x86_64.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_STUBROUTINES_X86_64_HPP
+#define CPU_X86_VM_STUBROUTINES_X86_64_HPP
+
 // This file holds the platform specific parts of the StubRoutines
 // definition. See stubRoutines.hpp for a description on how to
 // extend it.
@@ -113,3 +116,5 @@
     return _mxcsr_std;
   }
 };
+
+#endif // CPU_X86_VM_STUBROUTINES_X86_64_HPP
--- a/src/cpu/x86/vm/templateInterpreterGenerator_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateInterpreterGenerator_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef CPU_X86_VM_TEMPLATEINTERPRETERGENERATOR_X86_HPP
+#define CPU_X86_VM_TEMPLATEINTERPRETERGENERATOR_X86_HPP
+
  protected:
 
  void generate_fixed_frame(bool native_call);
 
  // address generate_asm_interpreter_entry(bool synchronized);
+
+#endif // CPU_X86_VM_TEMPLATEINTERPRETERGENERATOR_X86_HPP
--- a/src/cpu/x86/vm/templateInterpreter_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateInterpreter_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_TEMPLATEINTERPRETER_X86_HPP
+#define CPU_X86_VM_TEMPLATEINTERPRETER_X86_HPP
+
 
   protected:
 
@@ -35,3 +38,5 @@
 #else
   const static int InterpreterCodeSize = 168 * 1024;
 #endif // AMD64
+
+#endif // CPU_X86_VM_TEMPLATEINTERPRETER_X86_HPP
--- a/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,28 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_templateInterpreter_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
 
 #define __ _masm->
 
--- a/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,28 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreter_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
 
 #define __ _masm->
 
@@ -1049,7 +1069,7 @@
     // runtime call by hand.
     //
     __ mov(c_rarg0, r15_thread);
-    __ mov(r12, rsp); // remember sp
+    __ mov(r12, rsp); // remember sp (can only use r12 if not using call_VM)
     __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows
     __ andptr(rsp, -16); // align stack as required by ABI
     __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans)));
@@ -1096,7 +1116,7 @@
     __ jcc(Assembler::notEqual, no_reguard);
 
     __ pusha(); // XXX only save smashed registers
-    __ mov(r12, rsp); // remember sp
+    __ mov(r12, rsp); // remember sp (can only use r12 if not using call_VM)
     __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows
     __ andptr(rsp, -16); // align stack as required by ABI
     __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages)));
@@ -1887,7 +1907,7 @@
 
   assert(Interpreter::trace_code(t->tos_in()) != NULL,
          "entry must have been generated");
-  __ mov(r12, rsp); // remember sp
+  __ mov(r12, rsp); // remember sp (can only use r12 if not using call_VM)
   __ andptr(rsp, -16); // align stack as required by ABI
   __ call(RuntimeAddress(Interpreter::trace_code(t->tos_in())));
   __ mov(rsp, r12); // restore sp
--- a/src/cpu/x86/vm/templateTable_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateTable_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_templateTable_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
 
 #ifndef CC_INTERP
 #define __ _masm->
@@ -399,6 +409,23 @@
   if (VerifyOops) {
     __ verify_oop(rax);
   }
+
+  Label L_done, L_throw_exception;
+  const Register con_klass_temp = rcx;  // same as Rcache
+  __ movptr(con_klass_temp, Address(rax, oopDesc::klass_offset_in_bytes()));
+  __ cmpptr(con_klass_temp, ExternalAddress((address)Universe::systemObjArrayKlassObj_addr()));
+  __ jcc(Assembler::notEqual, L_done);
+  __ cmpl(Address(rax, arrayOopDesc::length_offset_in_bytes()), 0);
+  __ jcc(Assembler::notEqual, L_throw_exception);
+  __ xorptr(rax, rax);
+  __ jmp(L_done);
+
+  // Load the exception from the system-array which wraps it:
+  __ bind(L_throw_exception);
+  __ movptr(rax, Address(rax, arrayOopDesc::base_offset_in_bytes(T_OBJECT)));
+  __ jump(ExternalAddress(Interpreter::throw_exception_entry()));
+
+  __ bind(L_done);
 }
 
 void TemplateTable::ldc2_w() {
--- a/src/cpu/x86/vm/templateTable_x86_32.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateTable_x86_32.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_TEMPLATETABLE_X86_32_HPP
+#define CPU_X86_VM_TEMPLATETABLE_X86_32_HPP
+
   static void prepare_invoke(Register method, Register index, int byte_no);
   static void invokevirtual_helper(Register index, Register recv,
                                    Register flags);
@@ -30,3 +33,5 @@
   // Helpers
   static void index_check(Register array, Register index);
   static void index_check_without_pop(Register array, Register index);
+
+#endif // CPU_X86_VM_TEMPLATETABLE_X86_32_HPP
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateTable_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_templateTable_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
 
 #ifndef CC_INTERP
 
@@ -413,6 +423,25 @@
   if (VerifyOops) {
     __ verify_oop(rax);
   }
+
+  Label L_done, L_throw_exception;
+  const Register con_klass_temp = rcx;  // same as cache
+  const Register array_klass_temp = rdx;  // same as index
+  __ movptr(con_klass_temp, Address(rax, oopDesc::klass_offset_in_bytes()));
+  __ lea(array_klass_temp, ExternalAddress((address)Universe::systemObjArrayKlassObj_addr()));
+  __ cmpptr(con_klass_temp, Address(array_klass_temp, 0));
+  __ jcc(Assembler::notEqual, L_done);
+  __ cmpl(Address(rax, arrayOopDesc::length_offset_in_bytes()), 0);
+  __ jcc(Assembler::notEqual, L_throw_exception);
+  __ xorptr(rax, rax);
+  __ jmp(L_done);
+
+  // Load the exception from the system-array which wraps it:
+  __ bind(L_throw_exception);
+  __ movptr(rax, Address(rax, arrayOopDesc::base_offset_in_bytes(T_OBJECT)));
+  __ jump(ExternalAddress(Interpreter::throw_exception_entry()));
+
+  __ bind(L_done);
 }
 
 void TemplateTable::ldc2_w() {
@@ -2733,7 +2762,7 @@
     // access constant pool cache entry
     __ get_cache_entry_pointer_at_bcp(c_rarg2, rcx, 1);
     __ verify_oop(rax);
-    __ mov(r12, rax);  // save object pointer before call_VM() clobbers it
+    __ push_ptr(rax);  // save object pointer before call_VM() clobbers it
     __ mov(c_rarg1, rax);
     // c_rarg1: object pointer copied above
     // c_rarg2: cache entry pointer
@@ -2741,8 +2770,7 @@
                CAST_FROM_FN_PTR(address,
                                 InterpreterRuntime::post_field_access),
                c_rarg1, c_rarg2);
-    __ mov(rax, r12); // restore object pointer
-    __ reinit_heapbase();
+    __ pop_ptr(rax); // restore object pointer
     __ bind(L1);
   }
 
@@ -3336,10 +3364,7 @@
           JVM_CONSTANT_Class);
   __ jcc(Assembler::equal, quicked);
   __ push(atos); // save receiver for result, and for GC
-  __ mov(r12, rcx); // save rcx XXX
   call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
-  __ movq(rcx, r12); // restore rcx XXX
-  __ reinit_heapbase();
   __ pop_ptr(rdx); // restore receiver
   __ jmpb(resolved);
 
@@ -3393,11 +3418,9 @@
   __ jcc(Assembler::equal, quicked);
 
   __ push(atos); // save receiver for result, and for GC
-  __ mov(r12, rcx); // save rcx
   call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
-  __ movq(rcx, r12); // restore rcx
-  __ reinit_heapbase();
   __ pop_ptr(rdx); // restore receiver
+  __ verify_oop(rdx);
   __ load_klass(rdx, rdx);
   __ jmpb(resolved);
 
--- a/src/cpu/x86/vm/templateTable_x86_64.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/templateTable_x86_64.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_TEMPLATETABLE_X86_64_HPP
+#define CPU_X86_VM_TEMPLATETABLE_X86_64_HPP
+
   static void prepare_invoke(Register method, Register index, int byte_no);
   static void invokevirtual_helper(Register index, Register recv,
                                    Register flags);
@@ -30,3 +33,5 @@
   // Helpers
   static void index_check(Register array, Register index);
   static void index_check_without_pop(Register array, Register index);
+
+#endif // CPU_X86_VM_TEMPLATETABLE_X86_64_HPP
--- a/src/cpu/x86/vm/vmStructs_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vmStructs_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_VMSTRUCTS_X86_HPP
+#define CPU_X86_VM_VMSTRUCTS_X86_HPP
+
 // These are the CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -60,3 +63,5 @@
   /* NOTE that we do not use the last_entry() macro here; it is used         */
   /* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and must  */
   /* be present there)                                                       */
+
+#endif // CPU_X86_VM_VMSTRUCTS_X86_HPP
--- a/src/cpu/x86/vm/vm_version_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vm_version_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/java.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "vm_version_x86.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 
 int VM_Version::_cpu;
--- a/src/cpu/x86/vm/vm_version_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vm_version_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef CPU_X86_VM_VM_VERSION_X86_HPP
+#define CPU_X86_VM_VM_VERSION_X86_HPP
+
+#include "runtime/globals_extension.hpp"
+#include "runtime/vm_version.hpp"
+
 class VM_Version : public Abstract_VM_Version {
 public:
   // cpuid result register layouts.  These are all unions of a uint32_t
@@ -446,6 +452,10 @@
   static bool supports_lzcnt()    { return (_cpuFeatures & CPU_LZCNT) != 0; }
   static bool supports_sse4a()    { return (_cpuFeatures & CPU_SSE4A) != 0; }
 
+  // Intel Core and newer cpus have fast IDIV instruction (excluding Atom).
+  static bool has_fast_idiv()     { return is_intel() && cpu_family() == 6 &&
+                                           supports_sse3() && _model != 0x1C; }
+
   static bool supports_compare_and_exchange() { return true; }
 
   static const char* cpu_features()           { return _features_str; }
@@ -516,3 +526,5 @@
     return count >= 0 ? count : 1;
   }
 };
+
+#endif // CPU_X86_VM_VM_VERSION_X86_HPP
--- a/src/cpu/x86/vm/vmreg_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vmreg_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vmreg_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "code/vmreg.hpp"
 
 
 
--- a/src/cpu/x86/vm/vmreg_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vmreg_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_VMREG_X86_HPP
+#define CPU_X86_VM_VMREG_X86_HPP
+
   bool is_Register();
   Register as_Register();
 
@@ -30,3 +33,5 @@
 
   bool is_XMMRegister();
   XMMRegister as_XMMRegister();
+
+#endif // CPU_X86_VM_VMREG_X86_HPP
--- a/src/cpu/x86/vm/vmreg_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vmreg_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_X86_VM_VMREG_X86_INLINE_HPP
+#define CPU_X86_VM_VMREG_X86_INLINE_HPP
+
 inline VMReg RegisterImpl::as_VMReg() {
   if( this==noreg ) return VMRegImpl::Bad();
 #ifdef AMD64
@@ -82,3 +85,5 @@
 #endif // AMD64
   return is_even(value());
 }
+
+#endif // CPU_X86_VM_VMREG_X86_INLINE_HPP
--- a/src/cpu/x86/vm/vtableStubs_x86_32.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vtableStubs_x86_32.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vtableStubs_x86_32.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "code/vtableStubs.hpp"
+#include "interp_masm_x86_32.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassVtable.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_x86.inline.hpp"
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // machine-dependent part of VtableStubs: create VtableStub of correct size and
 // initialize its code
--- a/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vtableStubs_x86_64.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "code/vtableStubs.hpp"
+#include "interp_masm_x86_64.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassVtable.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_x86.inline.hpp"
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // machine-dependent part of VtableStubs: create VtableStub of correct size and
 // initialize its code
--- a/src/cpu/x86/vm/x86_32.ad	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/x86_32.ad	Tue Nov 30 18:10:20 2010 -0800
@@ -1508,6 +1508,16 @@
   return can_be_java_arg(reg);
 }
 
+bool Matcher::use_asm_for_ldiv_by_con( jlong divisor ) {
+  // Use hardware integer DIV instruction when
+  // it is faster than a code which use multiply.
+  // Only when constant divisor fits into 32 bit
+  // (min_jint is excluded to get only correct
+  // positive 32 bit values from negative).
+  return VM_Version::has_fast_idiv() &&
+         (divisor == (int)divisor && divisor != min_jint);
+}
+
 // Register for DIVI projection of divmodI
 RegMask Matcher::divI_proj_mask() {
   return EAX_REG_mask;
@@ -1546,6 +1556,9 @@
       return true;
     }
   }
+  if (opc == Op_ConL && (n->get_long() & 0xFFFFFFFF00000000LL) == 0LL) {
+    return true;
+  }
   return false;
 }
 
@@ -2309,9 +2322,11 @@
   enc_class move_long_big_shift_sign( eRegL dst, immI_32_63 cnt ) %{
     emit_opcode( cbuf, 0x8B ); // Move
     emit_rm(cbuf, 0x3, $dst$$reg, HIGH_FROM_LOW($dst$$reg));
-    emit_d8(cbuf,$primary);
-    emit_rm(cbuf, 0x3, $secondary, $dst$$reg);
-    emit_d8(cbuf,$cnt$$constant-32);
+    if( $cnt$$constant > 32 ) { // Shift, if not by zero
+      emit_d8(cbuf,$primary);
+      emit_rm(cbuf, 0x3, $secondary, $dst$$reg);
+      emit_d8(cbuf,$cnt$$constant-32);
+    }
     emit_d8(cbuf,$primary);
     emit_rm(cbuf, 0x3, $secondary, HIGH_FROM_LOW($dst$$reg));
     emit_d8(cbuf,31);
@@ -8842,6 +8857,144 @@
   ins_pipe( pipe_slow );
 %}
 
+// Divide Register Long (no special case since divisor != -1)
+instruct divL_eReg_imm32( eADXRegL dst, immL32 imm, eRegI tmp, eRegI tmp2, eFlagsReg cr ) %{
+  match(Set dst (DivL dst imm));
+  effect( TEMP tmp, TEMP tmp2, KILL cr );
+  ins_cost(1000);
+  format %{ "MOV    $tmp,abs($imm) # ldiv EDX:EAX,$imm\n\t"
+            "XOR    $tmp2,$tmp2\n\t"
+            "CMP    $tmp,EDX\n\t"
+            "JA,s   fast\n\t"
+            "MOV    $tmp2,EAX\n\t"
+            "MOV    EAX,EDX\n\t"
+            "MOV    EDX,0\n\t"
+            "JLE,s  pos\n\t"
+            "LNEG   EAX : $tmp2\n\t"
+            "DIV    $tmp # unsigned division\n\t"
+            "XCHG   EAX,$tmp2\n\t"
+            "DIV    $tmp\n\t"
+            "LNEG   $tmp2 : EAX\n\t"
+            "JMP,s  done\n"
+    "pos:\n\t"
+            "DIV    $tmp\n\t"
+            "XCHG   EAX,$tmp2\n"
+    "fast:\n\t"
+            "DIV    $tmp\n"
+    "done:\n\t"
+            "MOV    EDX,$tmp2\n\t"
+            "NEG    EDX:EAX # if $imm < 0" %}
+  ins_encode %{
+    int con = (int)$imm$$constant;
+    assert(con != 0 && con != -1 && con != min_jint, "wrong divisor");
+    int pcon = (con > 0) ? con : -con;
+    Label Lfast, Lpos, Ldone;
+
+    __ movl($tmp$$Register, pcon);
+    __ xorl($tmp2$$Register,$tmp2$$Register);
+    __ cmpl($tmp$$Register, HIGH_FROM_LOW($dst$$Register));
+    __ jccb(Assembler::above, Lfast); // result fits into 32 bit
+
+    __ movl($tmp2$$Register, $dst$$Register); // save
+    __ movl($dst$$Register, HIGH_FROM_LOW($dst$$Register));
+    __ movl(HIGH_FROM_LOW($dst$$Register),0); // preserve flags
+    __ jccb(Assembler::lessEqual, Lpos); // result is positive
+
+    // Negative dividend.
+    // convert value to positive to use unsigned division
+    __ lneg($dst$$Register, $tmp2$$Register);
+    __ divl($tmp$$Register);
+    __ xchgl($dst$$Register, $tmp2$$Register);
+    __ divl($tmp$$Register);
+    // revert result back to negative
+    __ lneg($tmp2$$Register, $dst$$Register);
+    __ jmpb(Ldone);
+
+    __ bind(Lpos);
+    __ divl($tmp$$Register); // Use unsigned division
+    __ xchgl($dst$$Register, $tmp2$$Register);
+    // Fallthrow for final divide, tmp2 has 32 bit hi result
+
+    __ bind(Lfast);
+    // fast path: src is positive
+    __ divl($tmp$$Register); // Use unsigned division
+
+    __ bind(Ldone);
+    __ movl(HIGH_FROM_LOW($dst$$Register),$tmp2$$Register);
+    if (con < 0) {
+      __ lneg(HIGH_FROM_LOW($dst$$Register), $dst$$Register);
+    }
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Remainder Register Long (remainder fit into 32 bits)
+instruct modL_eReg_imm32( eADXRegL dst, immL32 imm, eRegI tmp, eRegI tmp2, eFlagsReg cr ) %{
+  match(Set dst (ModL dst imm));
+  effect( TEMP tmp, TEMP tmp2, KILL cr );
+  ins_cost(1000);
+  format %{ "MOV    $tmp,abs($imm) # lrem EDX:EAX,$imm\n\t"
+            "CMP    $tmp,EDX\n\t"
+            "JA,s   fast\n\t"
+            "MOV    $tmp2,EAX\n\t"
+            "MOV    EAX,EDX\n\t"
+            "MOV    EDX,0\n\t"
+            "JLE,s  pos\n\t"
+            "LNEG   EAX : $tmp2\n\t"
+            "DIV    $tmp # unsigned division\n\t"
+            "MOV    EAX,$tmp2\n\t"
+            "DIV    $tmp\n\t"
+            "NEG    EDX\n\t"
+            "JMP,s  done\n"
+    "pos:\n\t"
+            "DIV    $tmp\n\t"
+            "MOV    EAX,$tmp2\n"
+    "fast:\n\t"
+            "DIV    $tmp\n"
+    "done:\n\t"
+            "MOV    EAX,EDX\n\t"
+            "SAR    EDX,31\n\t" %}
+  ins_encode %{
+    int con = (int)$imm$$constant;
+    assert(con != 0 && con != -1 && con != min_jint, "wrong divisor");
+    int pcon = (con > 0) ? con : -con;
+    Label  Lfast, Lpos, Ldone;
+
+    __ movl($tmp$$Register, pcon);
+    __ cmpl($tmp$$Register, HIGH_FROM_LOW($dst$$Register));
+    __ jccb(Assembler::above, Lfast); // src is positive and result fits into 32 bit
+
+    __ movl($tmp2$$Register, $dst$$Register); // save
+    __ movl($dst$$Register, HIGH_FROM_LOW($dst$$Register));
+    __ movl(HIGH_FROM_LOW($dst$$Register),0); // preserve flags
+    __ jccb(Assembler::lessEqual, Lpos); // result is positive
+
+    // Negative dividend.
+    // convert value to positive to use unsigned division
+    __ lneg($dst$$Register, $tmp2$$Register);
+    __ divl($tmp$$Register);
+    __ movl($dst$$Register, $tmp2$$Register);
+    __ divl($tmp$$Register);
+    // revert remainder back to negative
+    __ negl(HIGH_FROM_LOW($dst$$Register));
+    __ jmpb(Ldone);
+
+    __ bind(Lpos);
+    __ divl($tmp$$Register);
+    __ movl($dst$$Register, $tmp2$$Register);
+
+    __ bind(Lfast);
+    // fast path: src is positive
+    __ divl($tmp$$Register);
+
+    __ bind(Ldone);
+    __ movl($dst$$Register, HIGH_FROM_LOW($dst$$Register));
+    __ sarl(HIGH_FROM_LOW($dst$$Register), 31); // result sign
+
+  %}
+  ins_pipe( pipe_slow );
+%}
+
 // Integer Shift Instructions
 // Shift Left by one
 instruct shlI_eReg_1(eRegI dst, immI1 shift, eFlagsReg cr) %{
--- a/src/cpu/x86/vm/x86_64.ad	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/x86/vm/x86_64.ad	Tue Nov 30 18:10:20 2010 -0800
@@ -2065,6 +2065,13 @@
   return can_be_java_arg(reg);
 }
 
+bool Matcher::use_asm_for_ldiv_by_con( jlong divisor ) {
+  // In 64 bit mode a code which use multiply when
+  // devisor is constant is faster than hardware
+  // DIV instruction (it uses MulHiL).
+  return false;
+}
+
 // Register for DIVI projection of divmodI
 RegMask Matcher::divI_proj_mask() {
   return INT_RAX_REG_mask;
--- a/src/cpu/zero/vm/assembler_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/assembler_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,24 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_zero.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/os.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#endif
 
 int AbstractAssembler::code_fill_byte() {
   return 0;
--- a/src/cpu/zero/vm/assembler_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/assembler_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_ASSEMBLER_ZERO_HPP
+#define CPU_ZERO_VM_ASSEMBLER_ZERO_HPP
+
 // In normal, CPU-specific ports of HotSpot these two classes are used
 // for generating assembly language.  We don't do any of this in zero,
 // of course, but we do sneak entry points around in CodeBuffers so we
@@ -62,3 +65,5 @@
 
 address ShouldNotCallThisStub();
 address ShouldNotCallThisEntry();
+
+#endif // CPU_ZERO_VM_ASSEMBLER_ZERO_HPP
--- a/src/cpu/zero/vm/assembler_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/assembler_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,14 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_ASSEMBLER_ZERO_INLINE_HPP
+#define CPU_ZERO_VM_ASSEMBLER_ZERO_INLINE_HPP
+
+#include "asm/assembler.inline.hpp"
+#include "asm/codeBuffer.hpp"
+#include "code/codeCache.hpp"
+#include "runtime/handles.inline.hpp"
+
 // This file is intentionally empty
+
+#endif // CPU_ZERO_VM_ASSEMBLER_ZERO_INLINE_HPP
--- a/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,25 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cppInterpreter_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interp_masm_zero.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/bytecodeInterpreter.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
 
 #ifdef CC_INTERP
 
--- a/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_BYTECODEINTERPRETER_ZERO_HPP
+#define CPU_ZERO_VM_BYTECODEINTERPRETER_ZERO_HPP
+
 // Platform specific for C++ based Interpreter
 
 #if defined(PPC) || defined(SPARC) || defined(IA64)
@@ -146,3 +149,5 @@
                                                   ((VMJavaVal64*)(addr))->d)
 #define SET_LOCALS_LONG_FROM_ADDR(addr, offset) (((VMJavaVal64*)&locals[-((offset)+1)])->l = \
                                                 ((VMJavaVal64*)(addr))->l)
+
+#endif // CPU_ZERO_VM_BYTECODEINTERPRETER_ZERO_HPP
--- a/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_BYTECODEINTERPRETER_ZERO_INLINE_HPP
+#define CPU_ZERO_VM_BYTECODEINTERPRETER_ZERO_INLINE_HPP
+
 // Inline interpreter functions for zero
 
 inline jfloat BytecodeInterpreter::VMfloatAdd(jfloat op1, jfloat op2) {
@@ -299,3 +302,5 @@
 inline jbyte BytecodeInterpreter::VMint2Byte(jint val) {
   return (jbyte) val;
 }
+
+#endif // CPU_ZERO_VM_BYTECODEINTERPRETER_ZERO_INLINE_HPP
--- a/src/cpu/zero/vm/bytecodes_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/bytecodes_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecodes_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodes.hpp"
 
 void Bytecodes::pd_initialize() {
   // No zero specific initialization
--- a/src/cpu/zero/vm/bytecodes_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/bytecodes_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_BYTECODES_ZERO_HPP
+#define CPU_ZERO_VM_BYTECODES_ZERO_HPP
+
 // This file is intentionally empty
+
+#endif // CPU_ZERO_VM_BYTECODES_ZERO_HPP
--- a/src/cpu/zero/vm/bytes_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/bytes_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,11 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_BYTES_ZERO_HPP
+#define CPU_ZERO_VM_BYTES_ZERO_HPP
+
+#include "memory/allocation.hpp"
+
 typedef union unaligned {
   u4 u;
   u2 us;
@@ -160,5 +165,10 @@
 #ifdef VM_LITTLE_ENDIAN
 // The following header contains the implementations of swap_u2,
 // swap_u4, and swap_u8
-#include "incls/_bytes_pd.inline.hpp.incl"
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "bytes_linux_zero.inline.hpp"
+#endif
+
 #endif // VM_LITTLE_ENDIAN
+
+#endif // CPU_ZERO_VM_BYTES_ZERO_HPP
--- a/src/cpu/zero/vm/codeBuffer_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/codeBuffer_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,5 +23,10 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_CODEBUFFER_ZERO_HPP
+#define CPU_ZERO_VM_CODEBUFFER_ZERO_HPP
+
  private:
   void pd_initialize() {}
+
+#endif // CPU_ZERO_VM_CODEBUFFER_ZERO_HPP
--- a/src/cpu/zero/vm/copy_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/copy_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_COPY_ZERO_HPP
+#define CPU_ZERO_VM_COPY_ZERO_HPP
+
 // Inline functions for memory copy and fill.
 
 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
@@ -176,3 +179,5 @@
 static void pd_zero_to_bytes(void* to, size_t count) {
   memset(to, 0, count);
 }
+
+#endif // CPU_ZERO_VM_COPY_ZERO_HPP
--- a/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_CPPINTERPRETERGENERATOR_ZERO_HPP
+#define CPU_ZERO_VM_CPPINTERPRETERGENERATOR_ZERO_HPP
+
  protected:
   MacroAssembler* assembler() const {
     return _masm;
@@ -35,3 +38,5 @@
     entry->set_entry_point(entry_point);
     return (address) entry;
   }
+
+#endif // CPU_ZERO_VM_CPPINTERPRETERGENERATOR_ZERO_HPP
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,33 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cppInterpreter_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/cppInterpreter.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "stack_zero.inline.hpp"
+#include "utilities/debug.hpp"
+#ifdef SHARK
+#include "shark/shark_globals.hpp"
+#endif
 
 #ifdef CC_INTERP
 
--- a/src/cpu/zero/vm/cppInterpreter_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/cppInterpreter_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_CPPINTERPRETER_ZERO_HPP
+#define CPU_ZERO_VM_CPPINTERPRETER_ZERO_HPP
+
  protected:
   // Size of interpreter code
   const static int InterpreterCodeSize = 6 * K;
@@ -41,3 +44,5 @@
  private:
   // Fast result type determination
   static BasicType result_type_of(methodOop method);
+
+#endif // CPU_ZERO_VM_CPPINTERPRETER_ZERO_HPP
--- a/src/cpu/zero/vm/debug_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/debug_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,14 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_debug_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeCache.hpp"
+#include "code/nmethod.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/init.hpp"
+#include "runtime/os.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/top.hpp"
 
 void pd_ps(frame f) {
   ShouldNotCallThis();
--- a/src/cpu/zero/vm/depChecker_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/depChecker_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,9 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "compiler/disassembler.hpp"
+#include "depChecker_zero.hpp"
+#include "runtime/hpi.hpp"
+
 // This file is intentionally empty
--- a/src/cpu/zero/vm/depChecker_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/depChecker_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_DEPCHECKER_ZERO_HPP
+#define CPU_ZERO_VM_DEPCHECKER_ZERO_HPP
+
 // This file is intentionally empty
+
+#endif // CPU_ZERO_VM_DEPCHECKER_ZERO_HPP
--- a/src/cpu/zero/vm/disassembler_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/disassembler_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,6 @@
  *
  */
 
+#include "precompiled.hpp"
+
 // This file is intentionally empty
--- a/src/cpu/zero/vm/disassembler_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/disassembler_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_DISASSEMBLER_ZERO_HPP
+#define CPU_ZERO_VM_DISASSEMBLER_ZERO_HPP
+
   static int pd_instruction_alignment() {
     return 1;
   }
@@ -30,3 +33,5 @@
   static const char* pd_cpu_opts() {
     return "";
   }
+
+#endif // CPU_ZERO_VM_DISASSEMBLER_ZERO_HPP
--- a/src/cpu/zero/vm/dump_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/dump_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_dump_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_zero.inline.hpp"
+#include "memory/compactingPermGenGen.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/space.inline.hpp"
 
 void CompactingPermGenGen::generate_vtable_methods(void** vtbl_list,
                                                    void** vtable,
--- a/src/cpu/zero/vm/entryFrame_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/entryFrame_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_ENTRYFRAME_ZERO_HPP
+#define CPU_ZERO_VM_ENTRYFRAME_ZERO_HPP
+
+#include "runtime/javaCalls.hpp"
+#include "stack_zero.hpp"
+
 // |  ...               |
 // +--------------------+  ------------------
 // | parameter n-1      |       low addresses
@@ -63,3 +69,5 @@
                      char* valuebuf,
                      int   buflen) const;
 };
+
+#endif // CPU_ZERO_VM_ENTRYFRAME_ZERO_HPP
--- a/src/cpu/zero/vm/entry_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/entry_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_ENTRY_ZERO_HPP
+#define CPU_ZERO_VM_ENTRY_ZERO_HPP
+
 class ZeroEntry {
  public:
   ZeroEntry() {
@@ -72,3 +75,5 @@
     return byte_offset_of(ZeroEntry, _entry_point);
   }
 };
+
+#endif // CPU_ZERO_VM_ENTRY_ZERO_HPP
--- a/src/cpu/zero/vm/fakeStubFrame_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/fakeStubFrame_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,11 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_FAKESTUBFRAME_ZERO_HPP
+#define CPU_ZERO_VM_FAKESTUBFRAME_ZERO_HPP
+
+#include "stack_zero.hpp"
+
 // |  ...               |
 // +--------------------+  ------------------
 // | frame_type         |       low addresses
@@ -51,3 +56,5 @@
                      char* valuebuf,
                      int   buflen) const {}
 };
+
+#endif // CPU_ZERO_VM_FAKESTUBFRAME_ZERO_HPP
--- a/src/cpu/zero/vm/frame_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/frame_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,26 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_frame_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "code/scopeDesc.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "vmreg_zero.inline.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#include "runtime/vframeArray.hpp"
+#endif
 
 #ifdef ASSERT
 void RegisterMap::check_location_valid() {
--- a/src/cpu/zero/vm/frame_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/frame_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_FRAME_ZERO_HPP
+#define CPU_ZERO_VM_FRAME_ZERO_HPP
+
+#include "runtime/synchronizer.hpp"
+#include "utilities/top.hpp"
+
 // A frame represents a physical stack frame on the Zero stack.
 
  public:
@@ -72,3 +78,5 @@
                            outputStream* st,
                            char*         buf,
                            int           buflen) const;
+
+#endif // CPU_ZERO_VM_FRAME_ZERO_HPP
--- a/src/cpu/zero/vm/frame_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/frame_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP
+#define CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP
+
 // Constructors
 
 inline frame::frame() {
@@ -149,3 +152,5 @@
   else
     return (intptr_t *) -1;
 }
+
+#endif // CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP
--- a/src/cpu/zero/vm/globalDefinitions_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/globalDefinitions_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_GLOBALDEFINITIONS_ZERO_HPP
+#define CPU_ZERO_VM_GLOBALDEFINITIONS_ZERO_HPP
+
 #include <ffi.h>
+
+#endif // CPU_ZERO_VM_GLOBALDEFINITIONS_ZERO_HPP
--- a/src/cpu/zero/vm/globals_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/globals_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_GLOBALS_ZERO_HPP
+#define CPU_ZERO_VM_GLOBALS_ZERO_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 // Set the default values for platform dependent flags used by the
 // runtime system.  See globals.hpp for details of what they do.
 
@@ -45,3 +51,7 @@
 
 define_pd_global(bool,  RewriteBytecodes,     true);
 define_pd_global(bool,  RewriteFrequentPairs, true);
+
+define_pd_global(bool,  UseMembar,            false);
+
+#endif // CPU_ZERO_VM_GLOBALS_ZERO_HPP
--- a/src/cpu/zero/vm/icBuffer_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/icBuffer_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icBuffer_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_zero.inline.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/resourceArea.hpp"
+#include "nativeInst_zero.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
 
 int InlineCacheBuffer::ic_stub_code_size() {
   // NB set this once the functions below are implemented
--- a/src/cpu/zero/vm/icache_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/icache_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icache_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_zero.inline.hpp"
+#include "runtime/icache.hpp"
 
 void ICacheStubGenerator::generate_icache_flush(
   ICache::flush_icache_stub_t* flush_icache_stub) {
--- a/src/cpu/zero/vm/icache_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/icache_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_ICACHE_ZERO_HPP
+#define CPU_ZERO_VM_ICACHE_ZERO_HPP
+
 // Interface for updating the instruction cache.  Whenever the VM
 // modifies code, part of the processor instruction cache potentially
 // has to be flushed.  This implementation is empty: Zero never deals
@@ -34,3 +37,5 @@
   static void invalidate_word(address addr) {}
   static void invalidate_range(address start, int nbytes) {}
 };
+
+#endif // CPU_ZERO_VM_ICACHE_ZERO_HPP
--- a/src/cpu/zero/vm/interp_masm_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interp_masm_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,22 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "interp_masm_zero.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/sharedRuntime.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+
 // This file is intentionally empty
--- a/src/cpu/zero/vm/interp_masm_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interp_masm_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_INTERP_MASM_ZERO_HPP
+#define CPU_ZERO_VM_INTERP_MASM_ZERO_HPP
+
+#include "assembler_zero.inline.hpp"
+#include "interpreter/invocationCounter.hpp"
+
 // This file specializes the assember with interpreter-specific macros
 
 class InterpreterMacroAssembler : public MacroAssembler {
@@ -36,3 +42,5 @@
     ShouldNotCallThis();
   }
 };
+
+#endif // CPU_ZERO_VM_INTERP_MASM_ZERO_HPP
--- a/src/cpu/zero/vm/interpreterFrame_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interpreterFrame_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,14 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_INTERPRETERFRAME_ZERO_HPP
+#define CPU_ZERO_VM_INTERPRETERFRAME_ZERO_HPP
+
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/thread.hpp"
+#include "stack_zero.hpp"
+
 #ifdef CC_INTERP
 // |  ...               |
 // +--------------------+  ------------------
@@ -71,3 +79,5 @@
                      int   buflen) const;
 };
 #endif // CC_INTERP
+
+#endif // CPU_ZERO_VM_INTERPRETERFRAME_ZERO_HPP
--- a/src/cpu/zero/vm/interpreterGenerator_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interpreterGenerator_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_INTERPRETERGENERATOR_ZERO_HPP
+#define CPU_ZERO_VM_INTERPRETERGENERATOR_ZERO_HPP
+
   // Generation of Interpreter
   //
   friend class AbstractInterpreterGenerator;
@@ -35,3 +38,5 @@
   address generate_empty_entry();
   address generate_accessor_entry();
   address generate_method_handle_entry();
+
+#endif // CPU_ZERO_VM_INTERPRETERGENERATOR_ZERO_HPP
--- a/src/cpu/zero/vm/interpreterRT_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interpreterRT_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreterRT_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/signature.hpp"
+#include "stack_zero.inline.hpp"
 
 void InterpreterRuntime::SignatureHandlerGeneratorBase::pass_int() {
   push(T_INT);
--- a/src/cpu/zero/vm/interpreterRT_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interpreterRT_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,11 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_INTERPRETERRT_ZERO_HPP
+#define CPU_ZERO_VM_INTERPRETERRT_ZERO_HPP
+
+#include "memory/allocation.hpp"
+
 class SignatureHandler {
  public:
   static SignatureHandler *from_handlerAddr(address handlerAddr) {
@@ -125,3 +130,5 @@
     return (SignatureHandler *) cif();
   }
 };
+
+#endif // CPU_ZERO_VM_INTERPRETERRT_ZERO_HPP
--- a/src/cpu/zero/vm/interpreter_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interpreter_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,32 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreter_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 address AbstractInterpreterGenerator::generate_slow_signature_handler() {
   _masm->advance(1);
--- a/src/cpu/zero/vm/interpreter_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/interpreter_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_INTERPRETER_ZERO_HPP
+#define CPU_ZERO_VM_INTERPRETER_ZERO_HPP
+
  public:
   static void invoke_method(methodOop method, address entry_point, TRAPS) {
     ((ZeroEntry *) entry_point)->invoke(method, THREAD);
@@ -47,3 +50,5 @@
     assert(i <= 0, "local direction already negated");
     return stackElementWords * i;
   }
+
+#endif // CPU_ZERO_VM_INTERPRETER_ZERO_HPP
--- a/src/cpu/zero/vm/javaFrameAnchor_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/javaFrameAnchor_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_JAVAFRAMEANCHOR_ZERO_HPP
+#define CPU_ZERO_VM_JAVAFRAMEANCHOR_ZERO_HPP
+
  private:
   ZeroFrame* volatile _last_Java_fp;
 
@@ -89,3 +92,5 @@
   static ByteSize last_Java_fp_offset() {
     return byte_offset_of(JavaFrameAnchor, _last_Java_fp);
   }
+
+#endif // CPU_ZERO_VM_JAVAFRAMEANCHOR_ZERO_HPP
--- a/src/cpu/zero/vm/jniFastGetField_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/jniFastGetField_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_jniFastGetField_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_zero.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm_misc.hpp"
+#include "runtime/safepoint.hpp"
 
 address JNI_FastGetField::generate_fast_get_boolean_field() {
   return (address) -1;
--- a/src/cpu/zero/vm/jniTypes_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/jniTypes_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_JNITYPES_ZERO_HPP
+#define CPU_ZERO_VM_JNITYPES_ZERO_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "prims/jni.h"
+
 // This file holds platform-dependent routines used to write primitive jni
 // types to the array of arguments passed into JavaCalls::call
 
@@ -106,3 +113,5 @@
 #endif
 
 };
+
+#endif // CPU_ZERO_VM_JNITYPES_ZERO_HPP
--- a/src/cpu/zero/vm/jni_zero.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/jni_zero.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
--- a/src/cpu/zero/vm/methodHandles_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/methodHandles_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_methodHandles_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "prims/methodHandles.hpp"
 
 int MethodHandles::adapter_conversion_ops_supported_mask() {
   ShouldNotCallThis();
--- a/src/cpu/zero/vm/nativeInst_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/nativeInst_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_nativeInst_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "assembler_zero.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "nativeInst_zero.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/ostream.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 // This method is called by nmethod::make_not_entrant_or_zombie to
 // insert a jump to SharedRuntime::get_handle_wrong_method_stub()
--- a/src/cpu/zero/vm/nativeInst_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/nativeInst_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,15 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_NATIVEINST_ZERO_HPP
+#define CPU_ZERO_VM_NATIVEINST_ZERO_HPP
+
+#include "asm/assembler.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/os.hpp"
+#include "utilities/top.hpp"
+
 // We have interfaces for the following instructions:
 // - NativeInstruction
 // - - NativeCall
@@ -183,3 +192,5 @@
 inline NativeGeneralJump* nativeGeneralJump_at(address address) {
   ShouldNotCallThis();
 }
+
+#endif // CPU_ZERO_VM_NATIVEINST_ZERO_HPP
--- a/src/cpu/zero/vm/registerMap_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/registerMap_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_REGISTERMAP_ZERO_HPP
+#define CPU_ZERO_VM_REGISTERMAP_ZERO_HPP
+
   // machine-dependent implemention for register maps
   friend class frame;
 
@@ -37,3 +40,5 @@
   void pd_clear() {}
   void pd_initialize() {}
   void pd_initialize_from(const RegisterMap* map) {}
+
+#endif // CPU_ZERO_VM_REGISTERMAP_ZERO_HPP
--- a/src/cpu/zero/vm/register_definitions_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/register_definitions_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,10 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/register.hpp"
+#include "interp_masm_zero.hpp"
+#include "register_zero.hpp"
+
 // This file is intentionally empty
--- a/src/cpu/zero/vm/register_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/register_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_register_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "register_zero.hpp"
 
 const int ConcreteRegisterImpl::max_gpr = RegisterImpl::number_of_registers;
 const int ConcreteRegisterImpl::max_fpr =
--- a/src/cpu/zero/vm/register_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/register_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_REGISTER_ZERO_HPP
+#define CPU_ZERO_VM_REGISTER_ZERO_HPP
+
+#include "asm/register.hpp"
+#include "vm_version_zero.hpp"
+
 class VMRegImpl;
 typedef VMRegImpl* VMReg;
 
@@ -108,3 +114,5 @@
 };
 
 CONSTANT_REGISTER_DECLARATION(Register, noreg, (-1));
+
+#endif // CPU_ZERO_VM_REGISTER_ZERO_HPP
--- a/src/cpu/zero/vm/relocInfo_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/relocInfo_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_relocInfo_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.inline.hpp"
+#include "assembler_zero.inline.hpp"
+#include "code/relocInfo.hpp"
+#include "nativeInst_zero.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/safepoint.hpp"
 
 void Relocation::pd_set_data_value(address x, intptr_t o) {
   ShouldNotCallThis();
--- a/src/cpu/zero/vm/relocInfo_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/relocInfo_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_RELOCINFO_ZERO_HPP
+#define CPU_ZERO_VM_RELOCINFO_ZERO_HPP
+
   // machine-dependent parts of class relocInfo
  private:
   enum {
@@ -30,3 +33,5 @@
     offset_unit  =  1,
     format_width =  1
   };
+
+#endif // CPU_ZERO_VM_RELOCINFO_ZERO_HPP
--- a/src/cpu/zero/vm/sharedRuntime_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/sharedRuntime_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,28 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharedRuntime_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_zero.inline.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/vframeArray.hpp"
+#include "vmreg_zero.inline.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
+#ifdef SHARK
+#include "compiler/compileBroker.hpp"
+#include "shark/sharkCompiler.hpp"
+#endif
 
 DeoptimizationBlob *SharedRuntime::_deopt_blob;
 SafepointBlob      *SharedRuntime::_polling_page_safepoint_handler_blob;
--- a/src/cpu/zero/vm/sharkFrame_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/sharkFrame_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_SHARKFRAME_ZERO_HPP
+#define CPU_ZERO_VM_SHARKFRAME_ZERO_HPP
+
+#include "oops/methodOop.hpp"
+#include "stack_zero.hpp"
+
 // |  ...               |
 // +--------------------+  ------------------
 // | stack slot n-1     |       low addresses
@@ -77,3 +83,5 @@
                      char* valuebuf,
                      int   buflen) const;
 };
+
+#endif // CPU_ZERO_VM_SHARKFRAME_ZERO_HPP
--- a/src/cpu/zero/vm/shark_globals_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/shark_globals_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_SHARK_GLOBALS_ZERO_HPP
+#define CPU_ZERO_VM_SHARK_GLOBALS_ZERO_HPP
+
 // Set the default values for platform dependent flags used by the
 // Shark compiler.  See globals.hpp for details of what they do.
 
@@ -60,3 +63,5 @@
 define_pd_global(bool,     NeverActAsServerClassMachine, true );
 define_pd_global(uint64_t, MaxRAM,                       1ULL*G);
 define_pd_global(bool,     CICompileOSR,                 true );
+
+#endif // CPU_ZERO_VM_SHARK_GLOBALS_ZERO_HPP
--- a/src/cpu/zero/vm/stack_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/stack_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stack_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "stack_zero.hpp"
+#include "stack_zero.inline.hpp"
 
 int ZeroStack::suggest_size(Thread *thread) const {
   assert(needs_setup(), "already set up");
--- a/src/cpu/zero/vm/stack_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/stack_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,11 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_STACK_ZERO_HPP
+#define CPU_ZERO_VM_STACK_ZERO_HPP
+
+#include "utilities/sizes.hpp"
+
 class ZeroStack {
  private:
   intptr_t *_base; // the last available word
@@ -217,3 +222,5 @@
                         char*     fieldbuf,
                         int       buflen) const;
 };
+
+#endif // CPU_ZERO_VM_STACK_ZERO_HPP
--- a/src/cpu/zero/vm/stack_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/stack_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_STACK_ZERO_INLINE_HPP
+#define CPU_ZERO_VM_STACK_ZERO_INLINE_HPP
+
+#include "runtime/thread.hpp"
+#include "stack_zero.hpp"
+
 // This function should match SharkStack::CreateStackOverflowCheck
 inline void ZeroStack::overflow_check(int required_words, TRAPS) {
   // Check the Zero stack
@@ -46,3 +52,5 @@
   int stack_free = thread->stack_size() - stack_used;
   return stack_free - shadow_pages_size();
 }
+
+#endif // CPU_ZERO_VM_STACK_ZERO_INLINE_HPP
--- a/src/cpu/zero/vm/stubGenerator_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/stubGenerator_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,29 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubGenerator_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_zero.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "nativeInst_zero.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "stack_zero.inline.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // Declaration and definition of StubGenerator (no .hpp file).
 // For a more detailed description of the stub routine structure
--- a/src/cpu/zero/vm/stubRoutines_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/stubRoutines_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
 
 #ifdef IA32
 address StubRoutines::x86::_call_stub_compiled_return = NULL;
--- a/src/cpu/zero/vm/stubRoutines_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/stubRoutines_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_STUBROUTINES_ZERO_HPP
+#define CPU_ZERO_VM_STUBROUTINES_ZERO_HPP
+
   // This file holds the platform specific parts of the StubRoutines
   // definition. See stubRoutines.hpp for a description on how to
   // extend it.
@@ -53,3 +56,5 @@
     static address _call_stub_compiled_return;
   };
 #endif // IA32
+
+#endif // CPU_ZERO_VM_STUBROUTINES_ZERO_HPP
--- a/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_TEMPLATEINTERPRETERGENERATOR_ZERO_HPP
+#define CPU_ZERO_VM_TEMPLATEINTERPRETERGENERATOR_ZERO_HPP
+
 // This file is intentionally empty
+
+#endif // CPU_ZERO_VM_TEMPLATEINTERPRETERGENERATOR_ZERO_HPP
--- a/src/cpu/zero/vm/templateInterpreter_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/templateInterpreter_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,27 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+
 // This file is intentionally empty
--- a/src/cpu/zero/vm/templateInterpreter_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/templateInterpreter_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_TEMPLATEINTERPRETER_ZERO_HPP
+#define CPU_ZERO_VM_TEMPLATEINTERPRETER_ZERO_HPP
+
 // This file is intentionally empty
+
+#endif // CPU_ZERO_VM_TEMPLATEINTERPRETER_ZERO_HPP
--- a/src/cpu/zero/vm/templateTable_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/templateTable_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,17 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+
 // This file is intentionally empty
--- a/src/cpu/zero/vm/templateTable_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/templateTable_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_TEMPLATETABLE_ZERO_HPP
+#define CPU_ZERO_VM_TEMPLATETABLE_ZERO_HPP
+
 // This file is intentionally empty
+
+#endif // CPU_ZERO_VM_TEMPLATETABLE_ZERO_HPP
--- a/src/cpu/zero/vm/vmStructs_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/vmStructs_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_VMSTRUCTS_ZERO_HPP
+#define CPU_ZERO_VM_VMSTRUCTS_ZERO_HPP
+
 // These are the CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -50,3 +53,5 @@
   /* NOTE that we do not use the last_entry() macro here; it is used         */
   /* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and must  */
   /* be present there)                                                       */
+
+#endif // CPU_ZERO_VM_VMSTRUCTS_ZERO_HPP
--- a/src/cpu/zero/vm/vm_version_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/vm_version_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,14 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "assembler_zero.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/java.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "vm_version_zero.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+
 // This file is intentionally empty
--- a/src/cpu/zero/vm/vm_version_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/vm_version_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,9 +23,17 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_VM_VERSION_ZERO_HPP
+#define CPU_ZERO_VM_VM_VERSION_ZERO_HPP
+
+#include "runtime/globals_extension.hpp"
+#include "runtime/vm_version.hpp"
+
 class VM_Version : public Abstract_VM_Version {
  public:
   static const char* cpu_features() {
     return "";
   }
 };
+
+#endif // CPU_ZERO_VM_VM_VERSION_ZERO_HPP
--- a/src/cpu/zero/vm/vmreg_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/vmreg_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vmreg_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "code/vmreg.hpp"
 
 void VMRegImpl::set_regName() {
   int i = 0;
--- a/src/cpu/zero/vm/vmreg_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/vmreg_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_VMREG_ZERO_HPP
+#define CPU_ZERO_VM_VMREG_ZERO_HPP
+
   bool is_Register();
   Register as_Register();
 
   bool is_FloatRegister();
   FloatRegister as_FloatRegister();
+
+#endif // CPU_ZERO_VM_VMREG_ZERO_HPP
--- a/src/cpu/zero/vm/vmreg_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/vmreg_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_VMREG_ZERO_INLINE_HPP
+#define CPU_ZERO_VM_VMREG_ZERO_INLINE_HPP
+
 inline VMReg RegisterImpl::as_VMReg() {
   return VMRegImpl::as_VMReg(encoding());
 }
@@ -30,3 +33,5 @@
 inline VMReg FloatRegisterImpl::as_VMReg() {
   return VMRegImpl::as_VMReg(encoding() + ConcreteRegisterImpl::max_gpr);
 }
+
+#endif // CPU_ZERO_VM_VMREG_ZERO_INLINE_HPP
--- a/src/cpu/zero/vm/vtableStubs_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/cpu/zero/vm/vtableStubs_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vtableStubs_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_zero.inline.hpp"
+#include "code/vtableStubs.hpp"
+#include "interp_masm_zero.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassVtable.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "vmreg_zero.inline.hpp"
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 VtableStub* VtableStubs::create_vtable_stub(int vtable_index) {
   ShouldNotCallThis();
--- a/src/os/linux/launcher/java.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/launcher/java.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
--- a/src/os/linux/launcher/java.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/launcher/java.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
--- a/src/os/linux/launcher/java_md.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/launcher/java_md.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
--- a/src/os/linux/launcher/java_md.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/launcher/java_md.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
--- a/src/os/linux/vm/attachListener_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/attachListener_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_attachListener_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/os.hpp"
+#include "services/attachListener.hpp"
+#include "services/dtraceAttacher.hpp"
 
 #include <unistd.h>
 #include <signal.h>
@@ -176,10 +179,10 @@
 
   int n = snprintf(path, UNIX_PATH_MAX, "%s/.java_pid%d",
                    os::get_temp_directory(), os::current_process_id());
-  if (n <= (int)UNIX_PATH_MAX) {
+  if (n < (int)UNIX_PATH_MAX) {
     n = snprintf(initial_path, UNIX_PATH_MAX, "%s.tmp", path);
   }
-  if (n > (int)UNIX_PATH_MAX) {
+  if (n >= (int)UNIX_PATH_MAX) {
     return -1;
   }
 
--- a/src/os/linux/vm/c1_globals_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/c1_globals_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,15 @@
  *
  */
 
+#ifndef OS_LINUX_VM_C1_GLOBALS_LINUX_HPP
+#define OS_LINUX_VM_C1_GLOBALS_LINUX_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 //
 // Sets the default values for operating system dependent flags used by the
 // client compiler. (see c1_globals.hpp)
 //
+
+#endif // OS_LINUX_VM_C1_GLOBALS_LINUX_HPP
--- a/src/os/linux/vm/c2_globals_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/c2_globals_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,15 @@
  *
  */
 
+#ifndef OS_LINUX_VM_C2_GLOBALS_LINUX_HPP
+#define OS_LINUX_VM_C2_GLOBALS_LINUX_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 //
 // Sets the default values for operating system dependent flags used by the
 // server compiler. (see c2_globals.hpp)
 //
+
+#endif // OS_LINUX_VM_C2_GLOBALS_LINUX_HPP
--- a/src/os/linux/vm/chaitin_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/chaitin_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_chaitin_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/machnode.hpp"
 
 void PhaseRegAlloc::pd_preallocate_hook() {
   // no action
--- a/src/os/linux/vm/dtraceJSDT_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/dtraceJSDT_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_dtraceJSDT_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "code/codeBlob.hpp"
+#include "memory/allocation.hpp"
+#include "prims/jvm.h"
+#include "runtime/dtraceJSDT.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/os.hpp"
+#include "runtime/signature.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 int DTraceJSDT::pd_activate(
     void* baseAddress, jstring module,
--- a/src/os/linux/vm/globals_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/globals_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_LINUX_VM_GLOBALS_LINUX_HPP
+#define OS_LINUX_VM_GLOBALS_LINUX_HPP
+
 //
 // Defines Linux specific flags. They are not available on other platforms.
 //
@@ -42,3 +45,5 @@
 define_pd_global(bool, UseLargePagesIndividualAllocation, false);
 define_pd_global(bool, UseOSErrorReporting, false);
 define_pd_global(bool, UseThreadPriorities, true) ;
+
+#endif // OS_LINUX_VM_GLOBALS_LINUX_HPP
--- a/src/os/linux/vm/hpi_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/hpi_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_hpi_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/os.hpp"
 
 # include <sys/param.h>
 # include <dlfcn.h>
--- a/src/os/linux/vm/hpi_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/hpi_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_LINUX_VM_HPI_LINUX_HPP
+#define OS_LINUX_VM_HPI_LINUX_HPP
+
 //
 // Because the interruptible IO has been dropped for HotSpot/Linux,
 // the following HPI interface is very different from HotSparc.
@@ -222,3 +225,5 @@
 // Reconciliation History
 // hpi_solaris.hpp      1.9 99/08/30 16:31:23
 // End
+
+#endif // OS_LINUX_VM_HPI_LINUX_HPP
--- a/src/os/linux/vm/interfaceSupport_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/interfaceSupport_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef OS_LINUX_VM_INTERFACESUPPORT_LINUX_HPP
+#define OS_LINUX_VM_INTERFACESUPPORT_LINUX_HPP
+
 // Contains inlined functions for class InterfaceSupport
 
 static inline void serialize_memory(JavaThread *thread) {
   os::write_memory_serialize_page(thread);
 }
+
+#endif // OS_LINUX_VM_INTERFACESUPPORT_LINUX_HPP
--- a/src/os/linux/vm/jsig.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/jsig.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/src/os/linux/vm/jvm_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/jvm_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_jvm_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jvm.h"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/osThread.hpp"
 
 #include <signal.h>
 
--- a/src/os/linux/vm/jvm_linux.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/jvm_linux.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_LINUX_VM_JVM_LINUX_H
+#define OS_LINUX_VM_JVM_LINUX_H
+
 /*
 // HotSpot integration note:
 //
@@ -95,3 +98,5 @@
 // Reconciliation History
 // jvm_solaris.h        1.6 99/06/22 16:38:47
 // End
+
+#endif // OS_LINUX_VM_JVM_LINUX_H
--- a/src/os/linux/vm/mutex_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/mutex_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_mutex_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "mutex_linux.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutex.hpp"
+#include "thread_linux.inline.hpp"
+#include "utilities/events.hpp"
 
 // put OS-includes here
 # include <signal.h>
--- a/src/os/linux/vm/mutex_linux.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/mutex_linux.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,7 +22,16 @@
  *
  */
 
+#ifndef OS_LINUX_VM_MUTEX_LINUX_INLINE_HPP
+#define OS_LINUX_VM_MUTEX_LINUX_INLINE_HPP
+
+#include "os_linux.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "thread_linux.inline.hpp"
+
 
 // Reconciliation History
 // mutex_solaris.inline.hpp     1.5 99/06/22 16:38:49
 // End
+
+#endif // OS_LINUX_VM_MUTEX_LINUX_INLINE_HPP
--- a/src/os/linux/vm/objectMonitor_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-
-/*
- * Copyright (c) 1999, 2005, 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.
- *
- */
--- a/src/os/linux/vm/objectMonitor_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 1999, 2005, 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.
- *
- */
-
- private:
--- a/src/os/linux/vm/objectMonitor_linux.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 1999, 2005, 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.
- *
- */
--- a/src/os/linux/vm/osThread_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/osThread_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,23 @@
  *
  */
 
-// do not include  precompiled  header file
-# include "incls/_osThread_linux.cpp.incl"
+// no precompiled headers
+#include "runtime/atomic.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.inline.hpp"
+#endif
 
 
 void OSThread::pd_initialize() {
--- a/src/os/linux/vm/osThread_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/osThread_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_LINUX_VM_OSTHREAD_LINUX_HPP
+#define OS_LINUX_VM_OSTHREAD_LINUX_HPP
+
  private:
   int _thread_type;
 
@@ -139,3 +142,5 @@
 // Reconciliation History
 // osThread_solaris.hpp 1.24 99/08/27 13:11:54
 // End
+
+#endif // OS_LINUX_VM_OSTHREAD_LINUX_HPP
--- a/src/os/linux/vm/os_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/os_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -24,8 +24,64 @@
 
 # define __STDC_FORMAT_MACROS
 
-// do not include  precompiled  header file
-# include "incls/_os_linux.cpp.incl"
+// no precompiled headers
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/compileBroker.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_linux.h"
+#include "memory/allocation.inline.hpp"
+#include "memory/filemap.hpp"
+#include "mutex_linux.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "os_share_linux.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/perfMemory.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/statSampler.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/timer.hpp"
+#include "services/attachListener.hpp"
+#include "services/runtimeService.hpp"
+#include "thread_linux.inline.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/events.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/vmError.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.inline.hpp"
+# include "nativeInst_zero.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // put OS-includes here
 # include <sys/types.h>
@@ -827,8 +883,10 @@
 
       switch (thr_type) {
       case os::java_thread:
-        // Java threads use ThreadStackSize which default value can be changed with the flag -Xss
-        if (JavaThread::stack_size_at_create() > 0) stack_size = JavaThread::stack_size_at_create();
+        // Java threads use ThreadStackSize which default value can be
+        // changed with the flag -Xss
+        assert (JavaThread::stack_size_at_create() > 0, "this should be set");
+        stack_size = JavaThread::stack_size_at_create();
         break;
       case os::compiler_thread:
         if (CompilerThreadStackSize > 0) {
@@ -3922,12 +3980,21 @@
   Linux::signal_sets_init();
   Linux::install_signal_handlers();
 
+  // Check minimum allowable stack size for thread creation and to initialize
+  // the java system classes, including StackOverflowError - depends on page
+  // size.  Add a page for compiler2 recursion in main thread.
+  // Add in 2*BytesPerWord times page size to account for VM stack during
+  // class initialization depending on 32 or 64 bit VM.
+  os::Linux::min_stack_allowed = MAX2(os::Linux::min_stack_allowed,
+            (size_t)(StackYellowPages+StackRedPages+StackShadowPages+
+                    2*BytesPerWord COMPILER2_PRESENT(+1)) * Linux::page_size());
+
   size_t threadStackSizeInBytes = ThreadStackSize * K;
   if (threadStackSizeInBytes != 0 &&
-      threadStackSizeInBytes < Linux::min_stack_allowed) {
+      threadStackSizeInBytes < os::Linux::min_stack_allowed) {
         tty->print_cr("\nThe stack size specified is too small, "
                       "Specify at least %dk",
-                      Linux::min_stack_allowed / K);
+                      os::Linux::min_stack_allowed/ K);
         return JNI_ERR;
   }
 
@@ -4839,7 +4906,7 @@
 
   // Next, demultiplex/decode time arguments
   timespec absTime;
-  if (time < 0) { // don't wait at all
+  if (time < 0 || (isAbsolute && time == 0) ) { // don't wait at all
     return;
   }
   if (time > 0) {
--- a/src/os/linux/vm/os_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/os_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_LINUX_VM_OS_LINUX_HPP
+#define OS_LINUX_VM_OS_LINUX_HPP
+
 // Linux_OS defines the interface to Linux operating systems
 
 /* pthread_getattr_np comes with LinuxThreads-0.9-7 on RedHat 7.1 */
@@ -328,3 +331,5 @@
       assert_status(status == 0, status, "mutex_init");
     }
 } ;
+
+#endif // OS_LINUX_VM_OS_LINUX_HPP
--- a/src/os/linux/vm/os_linux.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/os_linux.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,24 @@
  *
  */
 
+#ifndef OS_LINUX_VM_OS_LINUX_INLINE_HPP
+#define OS_LINUX_VM_OS_LINUX_INLINE_HPP
+
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "atomic_linux_x86.inline.hpp"
+# include "orderAccess_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "atomic_linux_sparc.inline.hpp"
+# include "orderAccess_linux_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "atomic_linux_zero.inline.hpp"
+# include "orderAccess_linux_zero.inline.hpp"
+#endif
+
 inline void* os::thread_local_storage_at(int index) {
   return pthread_getspecific((pthread_key_t)index);
 }
@@ -123,3 +141,5 @@
 
 inline bool os::numa_has_static_binding()   { return true; }
 inline bool os::numa_has_group_homing()     { return false;  }
+
+#endif // OS_LINUX_VM_OS_LINUX_INLINE_HPP
--- a/src/os/linux/vm/os_share_linux.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/os_share_linux.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_LINUX_VM_OS_SHARE_LINUX_HPP
+#define OS_LINUX_VM_OS_SHARE_LINUX_HPP
+
 // misc
 void signalHandler(int, siginfo_t*, ucontext_t*);
 void handle_unexpected_exception(Thread* thread, int sig, siginfo_t* info, address pc, address adjusted_pc);
@@ -30,3 +33,5 @@
 #endif
 
 #define PROCFILE_LENGTH 128
+
+#endif // OS_LINUX_VM_OS_SHARE_LINUX_HPP
--- a/src/os/linux/vm/perfMemory_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/perfMemory_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_perfMemory_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "os_linux.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/perfMemory.hpp"
+#include "utilities/exceptions.hpp"
 
 // put OS-includes here
 # include <sys/types.h>
--- a/src/os/linux/vm/stubRoutines_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/stubRoutines_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,5 +22,7 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "runtime/stubRoutines.hpp"
+
--- a/src/os/linux/vm/threadCritical_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/threadCritical_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadCritical_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadCritical.hpp"
+#include "thread_linux.inline.hpp"
 
 // put OS-includes here
 # include <pthread.h>
--- a/src/os/linux/vm/thread_linux.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/thread_linux.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,31 @@
  *
  */
 
+#ifndef OS_LINUX_VM_THREAD_LINUX_INLINE_HPP
+#define OS_LINUX_VM_THREAD_LINUX_INLINE_HPP
+
+#include "runtime/atomic.hpp"
+#include "runtime/prefetch.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "atomic_linux_x86.inline.hpp"
+# include "orderAccess_linux_x86.inline.hpp"
+# include "prefetch_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "atomic_linux_sparc.inline.hpp"
+# include "orderAccess_linux_sparc.inline.hpp"
+# include "prefetch_linux_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "atomic_linux_zero.inline.hpp"
+# include "orderAccess_linux_zero.inline.hpp"
+# include "prefetch_linux_zero.inline.hpp"
+#endif
+
 // Contains inlined functions for class Thread and ThreadLocalStorage
 
 inline void ThreadLocalStorage::pd_invalidate_all() {} // nothing to do
+
+#endif // OS_LINUX_VM_THREAD_LINUX_INLINE_HPP
--- a/src/os/linux/vm/vmError_linux.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/linux/vm/vmError_linux.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmError_linux.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/os.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/vmError.hpp"
 
 #include <sys/types.h>
 #include <sys/wait.h>
--- a/src/os/solaris/dtrace/generateJvmOffsets.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/dtrace/generateJvmOffsets.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -38,9 +38,22 @@
 #define protected public
 
 #include <proc_service.h>
-#include "incls/_precompiled.incl"
-#include "incls/_vmStructs.cpp.incl"
-
+#include "code/codeBlob.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/heap.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/universe.hpp"
+#include "oops/constMethodOop.hpp"
+#include "oops/klass.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/virtualspace.hpp"
+#include "runtime/vmStructs.hpp"
+#include "utilities/accessFlags.hpp"
+#include "utilities/globalDefinitions.hpp"
 #ifdef COMPILER1
 #if defined(DEBUG) || defined(FASTDEBUG)
 
--- a/src/os/solaris/dtrace/generateJvmOffsets.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/dtrace/generateJvmOffsets.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_DTRACE_GENERATEJVMOFFSETS_H
+#define OS_SOLARIS_DTRACE_GENERATEJVMOFFSETS_H
+
 #include <stdio.h>
 #include <strings.h>
 
@@ -36,3 +39,5 @@
         void gen_prologue(GEN_variant gen_var);
         void gen_epilogue(GEN_variant gen_var);
 }
+
+#endif // OS_SOLARIS_DTRACE_GENERATEJVMOFFSETS_H
--- a/src/os/solaris/dtrace/generateJvmOffsetsMain.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/dtrace/generateJvmOffsetsMain.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/src/os/solaris/dtrace/jvm_dtrace.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/dtrace/jvm_dtrace.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/src/os/solaris/dtrace/jvm_dtrace.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/dtrace/jvm_dtrace.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/src/os/solaris/dtrace/libjvm_db.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/dtrace/libjvm_db.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_DTRACE_LIBJVM_DB_H
+#define OS_SOLARIS_DTRACE_LIBJVM_DB_H
+
 #include <proc_service.h>
 
 #ifdef __cplusplus
@@ -61,3 +64,5 @@
 #ifdef __cplusplus
 } /* extern "C" */
 #endif /* __cplusplus */
+
+#endif // OS_SOLARIS_DTRACE_LIBJVM_DB_H
--- a/src/os/solaris/launcher/java.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/launcher/java.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/os/solaris/launcher/java.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/launcher/java.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/os/solaris/launcher/java_md.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/launcher/java_md.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/os/solaris/launcher/java_md.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/launcher/java_md.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/os/solaris/vm/attachListener_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/attachListener_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_attachListener_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/os.hpp"
+#include "services/attachListener.hpp"
+#include "services/dtraceAttacher.hpp"
 
 #include <door.h>
 #include <string.h>
--- a/src/os/solaris/vm/c1_globals_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/c1_globals_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,15 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_C1_GLOBALS_SOLARIS_HPP
+#define OS_SOLARIS_VM_C1_GLOBALS_SOLARIS_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 //
 // Sets the default values for operating system dependent flags used by the
 // client compiler. (see c1_globals.hpp)
 //
+
+#endif // OS_SOLARIS_VM_C1_GLOBALS_SOLARIS_HPP
--- a/src/os/solaris/vm/c2_globals_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/c2_globals_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,15 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_C2_GLOBALS_SOLARIS_HPP
+#define OS_SOLARIS_VM_C2_GLOBALS_SOLARIS_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 //
 // Sets the default values for operating system dependent flags used by the
 // server compiler. (see c2_globals.hpp)
 //
+
+#endif // OS_SOLARIS_VM_C2_GLOBALS_SOLARIS_HPP
--- a/src/os/solaris/vm/chaitin_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/chaitin_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_chaitin_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/machnode.hpp"
 
 void PhaseRegAlloc::pd_preallocate_hook() {
   // no action
--- a/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_dtraceJSDT_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "code/codeBlob.hpp"
+#include "memory/allocation.hpp"
+#include "prims/jvm.h"
+#include "runtime/dtraceJSDT.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/os.hpp"
+#include "runtime/signature.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 #ifdef HAVE_DTRACE_H
 
--- a/src/os/solaris/vm/globals_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/globals_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_GLOBALS_SOLARIS_HPP
+#define OS_SOLARIS_VM_GLOBALS_SOLARIS_HPP
+
 //
 // Defines Solaris specific flags. They are not available on other platforms.
 //
@@ -47,3 +50,5 @@
 define_pd_global(bool, UseLargePagesIndividualAllocation, false);
 define_pd_global(bool, UseOSErrorReporting, false);
 define_pd_global(bool, UseThreadPriorities, false);
+
+#endif // OS_SOLARIS_VM_GLOBALS_SOLARIS_HPP
--- a/src/os/solaris/vm/hpi_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/hpi_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_hpi_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/os.hpp"
 
 # include <sys/param.h>
 # include <dlfcn.h>
--- a/src/os/solaris/vm/hpi_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/hpi_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_HPI_SOLARIS_HPP
+#define OS_SOLARIS_VM_HPI_SOLARIS_HPP
+
 //
 // Parts of the HPI interface for which the HotSparc does not use the
 // HPI (because the interruptible IO mechanims used are different).
@@ -247,3 +250,5 @@
 // 1.3 98/10/21 18:17:14 hpi_win32.hpp
 // 1.6 99/06/28 11:01:36 hpi_win32.hpp
 //End
+
+#endif // OS_SOLARIS_VM_HPI_SOLARIS_HPP
--- a/src/os/solaris/vm/interfaceSupport_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/interfaceSupport_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_INTERFACESUPPORT_SOLARIS_HPP
+#define OS_SOLARIS_VM_INTERFACESUPPORT_SOLARIS_HPP
+
 // Contains inlined functions for class InterfaceSupport
 
 static inline void serialize_memory(JavaThread *thread) {
   os::write_memory_serialize_page(thread);
 }
+
+#endif // OS_SOLARIS_VM_INTERFACESUPPORT_SOLARIS_HPP
--- a/src/os/solaris/vm/jsig.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/jsig.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/src/os/solaris/vm/jvm_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/jvm_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_jvm_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jvm.h"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/osThread.hpp"
 
 #include <signal.h>
 
--- a/src/os/solaris/vm/jvm_solaris.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/jvm_solaris.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_JVM_SOLARIS_H
+#define OS_SOLARIS_VM_JVM_SOLARIS_H
+
 /*
 // HotSpot integration note:
 //
@@ -98,3 +101,5 @@
 #define JSIG_VERSION_1_4_1   0x30140100
 
 #endif /* JVM_MD_H */
+
+#endif // OS_SOLARIS_VM_JVM_SOLARIS_H
--- a/src/os/solaris/vm/mutex_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/mutex_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_mutex_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "mutex_solaris.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutex.hpp"
+#include "thread_solaris.inline.hpp"
+#include "utilities/events.hpp"
 
 // Solaris-specific include, therefore not in includeDB_*
 # include "os_share_solaris.hpp"
--- a/src/os/solaris/vm/mutex_solaris.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/mutex_solaris.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -21,3 +21,12 @@
  * questions.
  *
  */
+
+#ifndef OS_SOLARIS_VM_MUTEX_SOLARIS_INLINE_HPP
+#define OS_SOLARIS_VM_MUTEX_SOLARIS_INLINE_HPP
+
+#include "os_solaris.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "thread_solaris.inline.hpp"
+
+#endif // OS_SOLARIS_VM_MUTEX_SOLARIS_INLINE_HPP
--- a/src/os/solaris/vm/objectMonitor_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 1998, 2005, 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.
- *
- */
--- a/src/os/solaris/vm/objectMonitor_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 1998, 2005, 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.
- *
- */
-
- private:
--- a/src/os/solaris/vm/objectMonitor_solaris.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 1998, 2005, 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.
- *
- */
--- a/src/os/solaris/vm/osThread_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/osThread_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,21 @@
  *
  */
 
-// do not include  precompiled  header file
-# include "incls/_osThread_solaris.cpp.incl"
+// no precompiled headers
+#include "runtime/atomic.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+#endif
+
 # include <signal.h>
 
  // ***************************************************************
--- a/src/os/solaris/vm/osThread_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/osThread_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_OSTHREAD_SOLARIS_HPP
+#define OS_SOLARIS_VM_OSTHREAD_SOLARIS_HPP
+
 // This is embedded via include into the class OSThread
 
  private:
@@ -149,3 +152,5 @@
 
   void pd_initialize();
   void pd_destroy();
+
+#endif // OS_SOLARIS_VM_OSTHREAD_SOLARIS_HPP
--- a/src/os/solaris/vm/os_share_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/os_share_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_OS_SHARE_SOLARIS_HPP
+#define OS_SOLARIS_VM_OS_SHARE_SOLARIS_HPP
+
 // Defines the interfaces to Solaris operating systems that vary across platforms
 
 
@@ -65,3 +68,5 @@
 #endif
 
 #define PROCFILE_LENGTH 128
+
+#endif // OS_SOLARIS_VM_OS_SHARE_SOLARIS_HPP
--- a/src/os/solaris/vm/os_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/os_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,60 @@
  *
  */
 
-// do not include  precompiled  header file
-# include "incls/_os_solaris.cpp.incl"
+// no precompiled headers
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/compileBroker.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_solaris.h"
+#include "memory/allocation.inline.hpp"
+#include "memory/filemap.hpp"
+#include "mutex_solaris.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "os_share_solaris.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/perfMemory.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/statSampler.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/timer.hpp"
+#include "services/attachListener.hpp"
+#include "services/runtimeService.hpp"
+#include "thread_solaris.inline.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/events.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/vmError.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // put OS-includes here
 # include <dlfcn.h>
@@ -3375,7 +3427,12 @@
     // INTERRUPTIBLE_NORESTART_VM_ALWAYS returns res == OS_INTRPT for
     // thread.Interrupt.
 
-    if((res == OS_ERR) && (errno == EINTR)) {
+    // See c/r 6751923. Poll can return 0 before time
+    // has elapsed if time is set via clock_settime (as NTP does).
+    // res == 0 if poll timed out (see man poll RETURN VALUES)
+    // using the logic below checks that we really did
+    // sleep at least "millis" if not we'll sleep again.
+    if( ( res == 0 ) || ((res == OS_ERR) && (errno == EINTR))) {
       newtime = getTimeMillis();
       assert(newtime >= prevtime, "time moving backwards");
     /* Doing prevtime and newtime in microseconds doesn't help precision,
@@ -4878,18 +4935,17 @@
   // Check minimum allowable stack size for thread creation and to initialize
   // the java system classes, including StackOverflowError - depends on page
   // size.  Add a page for compiler2 recursion in main thread.
-  // Add in BytesPerWord times page size to account for VM stack during
+  // Add in 2*BytesPerWord times page size to account for VM stack during
   // class initialization depending on 32 or 64 bit VM.
-  guarantee((Solaris::min_stack_allowed >=
-    (StackYellowPages+StackRedPages+StackShadowPages+BytesPerWord
-     COMPILER2_PRESENT(+1)) * page_size),
-    "need to increase Solaris::min_stack_allowed on this platform");
+  os::Solaris::min_stack_allowed = MAX2(os::Solaris::min_stack_allowed,
+            (size_t)(StackYellowPages+StackRedPages+StackShadowPages+
+                    2*BytesPerWord COMPILER2_PRESENT(+1)) * page_size);
 
   size_t threadStackSizeInBytes = ThreadStackSize * K;
   if (threadStackSizeInBytes != 0 &&
-    threadStackSizeInBytes < Solaris::min_stack_allowed) {
+    threadStackSizeInBytes < os::Solaris::min_stack_allowed) {
     tty->print_cr("\nThe stack size specified is too small, Specify at least %dk",
-                  Solaris::min_stack_allowed/K);
+                  os::Solaris::min_stack_allowed/K);
     return JNI_ERR;
   }
 
@@ -5837,7 +5893,7 @@
 
   // First, demultiplex/decode time arguments
   timespec absTime;
-  if (time < 0) { // don't wait at all
+  if (time < 0 || (isAbsolute && time == 0) ) { // don't wait at all
     return;
   }
   if (time > 0) {
--- a/src/os/solaris/vm/os_solaris.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/os_solaris.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_OS_SOLARIS_HPP
+#define OS_SOLARIS_VM_OS_SOLARIS_HPP
+
 // Solaris_OS defines the interface to Solaris operating systems
 
 class Solaris {
@@ -394,3 +397,5 @@
       assert_status(status == 0, status, "mutex_init");
     }
 } ;
+
+#endif // OS_SOLARIS_VM_OS_SOLARIS_HPP
--- a/src/os/solaris/vm/os_solaris.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/os_solaris.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_OS_SOLARIS_INLINE_HPP
+#define OS_SOLARIS_VM_OS_SOLARIS_INLINE_HPP
+
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "atomic_solaris_x86.inline.hpp"
+# include "orderAccess_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "atomic_solaris_sparc.inline.hpp"
+# include "orderAccess_solaris_sparc.inline.hpp"
+#endif
+
 inline const char* os::file_separator() { return "/"; }
 inline const char* os::line_separator() { return "\n"; }
 inline const char* os::path_separator() { return ":"; }
@@ -207,3 +221,5 @@
 
 inline bool os::numa_has_static_binding()   { return false; }
 inline bool os::numa_has_group_homing()     { return true;  }
+
+#endif // OS_SOLARIS_VM_OS_SOLARIS_INLINE_HPP
--- a/src/os/solaris/vm/perfMemory_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/perfMemory_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_perfMemory_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "os_solaris.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/perfMemory.hpp"
+#include "utilities/exceptions.hpp"
 
 // put OS-includes here
 # include <sys/types.h>
--- a/src/os/solaris/vm/stubRoutines_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/stubRoutines_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,5 +22,7 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "runtime/stubRoutines.hpp"
+
--- a/src/os/solaris/vm/threadCritical_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/threadCritical_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadCritical_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadCritical.hpp"
+#include "thread_solaris.inline.hpp"
 
 // OS-includes here
 #include <thread.h>
--- a/src/os/solaris/vm/thread_solaris.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/thread_solaris.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,24 @@
  *
  */
 
+#ifndef OS_SOLARIS_VM_THREAD_SOLARIS_INLINE_HPP
+#define OS_SOLARIS_VM_THREAD_SOLARIS_INLINE_HPP
+
+#include "runtime/atomic.hpp"
+#include "runtime/prefetch.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "atomic_solaris_x86.inline.hpp"
+# include "orderAccess_solaris_x86.inline.hpp"
+# include "prefetch_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "atomic_solaris_sparc.inline.hpp"
+# include "orderAccess_solaris_sparc.inline.hpp"
+# include "prefetch_solaris_sparc.inline.hpp"
+#endif
+
 // Thread::current is "hot" it's called > 128K times in the 1st 500 msecs of
 // startup.
 // ThreadLocalStorage::thread is warm -- it's called > 16K times in the same
@@ -43,3 +61,5 @@
     return ThreadLocalStorage::get_thread_via_cache_slowly(raw, ix);
   }
 }
+
+#endif // OS_SOLARIS_VM_THREAD_SOLARIS_INLINE_HPP
--- a/src/os/solaris/vm/vmError_solaris.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/solaris/vm/vmError_solaris.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmError_solaris.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/os.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/vmError.hpp"
 
 #include <sys/types.h>
 #include <sys/wait.h>
--- a/src/os/windows/vm/attachListener_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/attachListener_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_attachListener_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/os.hpp"
+#include "services/attachListener.hpp"
+#include "services/dtraceAttacher.hpp"
 
 #include <windows.h>
 #include <signal.h>             // SIGBREAK
--- a/src/os/windows/vm/c1_globals_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/c1_globals_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,15 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_C1_GLOBALS_WINDOWS_HPP
+#define OS_WINDOWS_VM_C1_GLOBALS_WINDOWS_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 //
 // Sets the default values for operating system dependent flags used by the
 // client compiler. (see c1_globals.hpp)
 //
+
+#endif // OS_WINDOWS_VM_C1_GLOBALS_WINDOWS_HPP
--- a/src/os/windows/vm/c2_globals_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/c2_globals_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,15 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_C2_GLOBALS_WINDOWS_HPP
+#define OS_WINDOWS_VM_C2_GLOBALS_WINDOWS_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
 //
 // Sets the default values for operating system dependent flags used by the
 // server compiler. (see c2_globals.hpp)
 //
+
+#endif // OS_WINDOWS_VM_C2_GLOBALS_WINDOWS_HPP
--- a/src/os/windows/vm/chaitin_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/chaitin_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_chaitin_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/machnode.hpp"
 
 // Disallow the use of the frame pointer (EBP) for implicit null exceptions
 // on win95/98.  If we do not do this, the OS gets confused and gives a stack
--- a/src/os/windows/vm/dtraceJSDT_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/dtraceJSDT_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_dtraceJSDT_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "code/codeBlob.hpp"
+#include "memory/allocation.hpp"
+#include "prims/jvm.h"
+#include "runtime/dtraceJSDT.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/os.hpp"
+#include "runtime/signature.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 int DTraceJSDT::pd_activate(
     void* baseAddress, jstring module,
--- a/src/os/windows/vm/globals_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/globals_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_GLOBALS_WINDOWS_HPP
+#define OS_WINDOWS_VM_GLOBALS_WINDOWS_HPP
+
 //
 // Defines Windows specific flags. They are not available on other platforms.
 //
@@ -40,3 +43,5 @@
 define_pd_global(bool, UseLargePagesIndividualAllocation, true);
 define_pd_global(bool, UseOSErrorReporting, false);  // for now.
 define_pd_global(bool, UseThreadPriorities, true) ;
+
+#endif // OS_WINDOWS_VM_GLOBALS_WINDOWS_HPP
--- a/src/os/windows/vm/hpi_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/hpi_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_hpi_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/os.hpp"
 
 typedef jint (JNICALL *init_t)(GetInterfaceFunc *, void *);
 
--- a/src/os/windows/vm/hpi_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/hpi_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_HPI_WINDOWS_HPP
+#define OS_WINDOWS_VM_HPI_WINDOWS_HPP
+
 // Win32 delegates these to the HPI.  Solaris provides its own
 // implementation without using the HPI (for Interrupitble I/O).
 
@@ -168,3 +171,5 @@
         ("name = %p",
          name),
         (name));
+
+#endif // OS_WINDOWS_VM_HPI_WINDOWS_HPP
--- a/src/os/windows/vm/interfaceSupport_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/interfaceSupport_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_INTERFACESUPPORT_WINDOWS_HPP
+#define OS_WINDOWS_VM_INTERFACESUPPORT_WINDOWS_HPP
+
 // Contains inlined functions for class InterfaceSupport
 
 static inline void serialize_memory(JavaThread *thread) {
@@ -39,3 +42,5 @@
               serialize_fault_filter((_EXCEPTION_POINTERS*)_exception_info()))
     {}
 }
+
+#endif // OS_WINDOWS_VM_INTERFACESUPPORT_WINDOWS_HPP
--- a/src/os/windows/vm/jvm_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/jvm_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_jvm_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jvm.h"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/osThread.hpp"
 
 #include <signal.h>
 
--- a/src/os/windows/vm/jvm_windows.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/jvm_windows.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/os/windows/vm/mutex_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/mutex_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_mutex_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "mutex_windows.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutex.hpp"
+#include "thread_windows.inline.hpp"
+#include "utilities/events.hpp"
 
 // put OS-includes here
 # include <windows.h>
--- a/src/os/windows/vm/mutex_windows.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/mutex_windows.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -21,3 +21,12 @@
  * questions.
  *
  */
+
+#ifndef OS_WINDOWS_VM_MUTEX_WINDOWS_INLINE_HPP
+#define OS_WINDOWS_VM_MUTEX_WINDOWS_INLINE_HPP
+
+#include "os_windows.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "thread_windows.inline.hpp"
+
+#endif // OS_WINDOWS_VM_MUTEX_WINDOWS_INLINE_HPP
--- a/src/os/windows/vm/objectMonitor_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 1998, 2005, 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.
- *
- */
-
-#include "incls/_precompiled.incl"
--- a/src/os/windows/vm/objectMonitor_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 1998, 2005, 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.
- *
- */
-
- private:
--- a/src/os/windows/vm/objectMonitor_windows.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 1998, 2005, 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.
- *
- */
--- a/src/os/windows/vm/osThread_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/osThread_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,7 +22,17 @@
  *
  */
 
-#include "incls/_osThread_windows.cpp.incl"
+// no precompiled headers
+#include "runtime/atomic.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+#endif
 
 void OSThread::pd_initialize() {
   set_thread_handle(NULL);
--- a/src/os/windows/vm/osThread_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/osThread_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP
+#define OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP
+
 typedef void* HANDLE;
 
  private:
@@ -64,3 +67,5 @@
  private:
   void pd_initialize();
   void pd_destroy();
+
+#endif // OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP
--- a/src/os/windows/vm/os_share_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/os_share_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,4 +22,9 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_OS_SHARE_WINDOWS_HPP
+#define OS_WINDOWS_VM_OS_SHARE_WINDOWS_HPP
+
 // Defines the interfaces to Windows operating system that vary across platforms
+
+#endif // OS_WINDOWS_VM_OS_SHARE_WINDOWS_HPP
--- a/src/os/windows/vm/os_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/os_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -27,8 +27,56 @@
 #define _WIN32_WINNT 0x500
 #endif
 
-// do not include precompiled header file
-# include "incls/_os_windows.cpp.incl"
+// no precompiled headers
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/compileBroker.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_windows.h"
+#include "memory/allocation.inline.hpp"
+#include "memory/filemap.hpp"
+#include "mutex_windows.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "os_share_windows.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/perfMemory.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/statSampler.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/timer.hpp"
+#include "services/attachListener.hpp"
+#include "services/runtimeService.hpp"
+#include "thread_windows.inline.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/events.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/vmError.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 #ifdef _DEBUG
 #include <crtdbg.h>
@@ -3311,7 +3359,6 @@
   }
 }
 
-
 // this is called _after_ the global arguments have been parsed
 jint os::init_2(void) {
   // Allocate a single page and mark it as readable for safepoint polling
@@ -3390,6 +3437,21 @@
     actual_reserve_size = default_reserve_size;
   }
 
+  // Check minimum allowable stack size for thread creation and to initialize
+  // the java system classes, including StackOverflowError - depends on page
+  // size.  Add a page for compiler2 recursion in main thread.
+  // Add in 2*BytesPerWord times page size to account for VM stack during
+  // class initialization depending on 32 or 64 bit VM.
+  size_t min_stack_allowed =
+            (size_t)(StackYellowPages+StackRedPages+StackShadowPages+
+            2*BytesPerWord COMPILER2_PRESENT(+1)) * os::vm_page_size();
+  if (actual_reserve_size < min_stack_allowed) {
+    tty->print_cr("\nThe stack size specified is too small, "
+                  "Specify at least %dk",
+                  min_stack_allowed / K);
+    return JNI_ERR;
+  }
+
   JavaThread::set_stack_size_at_create(stack_commit_size);
 
   // Calculate theoretical max. size of Threads to guard gainst artifical
@@ -3992,7 +4054,7 @@
   if (time < 0) { // don't wait
     return;
   }
-  else if (time == 0) {
+  else if (time == 0 && !isAbsolute) {
     time = INFINITE;
   }
   else if  (isAbsolute) {
--- a/src/os/windows/vm/os_windows.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/os_windows.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_OS_WINDOWS_HPP
+#define OS_WINDOWS_VM_OS_WINDOWS_HPP
+
 // Win32_OS defines the interface to windows operating systems
 
 class win32 {
@@ -124,3 +127,5 @@
     }
 
 } ;
+
+#endif // OS_WINDOWS_VM_OS_WINDOWS_HPP
--- a/src/os/windows/vm/os_windows.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/os_windows.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP
+#define OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP
+
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "atomic_windows_x86.inline.hpp"
+# include "orderAccess_windows_x86.inline.hpp"
+#endif
+
 inline const char* os::file_separator()                { return "\\"; }
 inline const char* os::line_separator()                { return "\r\n"; }
 inline const char* os::path_separator()                { return ";"; }
@@ -72,3 +82,5 @@
 
 inline bool os::numa_has_static_binding()   { return true;   }
 inline bool os::numa_has_group_homing()     { return false;  }
+
+#endif // OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP
--- a/src/os/windows/vm/perfMemory_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/perfMemory_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_perfMemory_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "os_windows.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/perfMemory.hpp"
+#include "utilities/exceptions.hpp"
 
 #include <windows.h>
 #include <sys/types.h>
@@ -889,6 +896,7 @@
   DWORD newACLsize = aclinfo.AclBytesInUse +
                         (sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD)) * ace_count;
   for (int i = 0; i < ace_count; i++) {
+     assert(aces[i].pSid != 0, "pSid should not be 0");
      newACLsize += GetLengthSid(aces[i].pSid);
   }
 
@@ -1084,6 +1092,9 @@
   aces[0].pSid = get_user_sid(GetCurrentProcess());
   aces[0].mask = umask;
 
+  if (aces[0].pSid == 0)
+    return NULL;
+
   // get the well known SID for BUILTIN\Administrators
   PSID administratorsSid = NULL;
   SID_IDENTIFIER_AUTHORITY SIDAuthAdministrators = SECURITY_NT_AUTHORITY;
--- a/src/os/windows/vm/stubRoutines_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/stubRoutines_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,5 +22,7 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "runtime/stubRoutines.hpp"
+
--- a/src/os/windows/vm/threadCritical_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/threadCritical_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_threadCritical_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadCritical.hpp"
+#include "thread_windows.inline.hpp"
 
 // OS-includes here
 # include <windows.h>
--- a/src/os/windows/vm/thread_windows.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/thread_windows.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef OS_WINDOWS_VM_THREAD_WINDOWS_INLINE_HPP
+#define OS_WINDOWS_VM_THREAD_WINDOWS_INLINE_HPP
+
+#include "runtime/atomic.hpp"
+#include "runtime/prefetch.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "atomic_windows_x86.inline.hpp"
+# include "orderAccess_windows_x86.inline.hpp"
+# include "prefetch_windows_x86.inline.hpp"
+#endif
+
 // Contains inlined functions for class Thread and ThreadLocalStorage
 
 inline void ThreadLocalStorage::pd_invalidate_all()            { return; }
+
+#endif // OS_WINDOWS_VM_THREAD_WINDOWS_INLINE_HPP
--- a/src/os/windows/vm/vmError_windows.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os/windows/vm/vmError_windows.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmError_windows.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/os.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/vmError.hpp"
 
 
 void VMError::show_message_box(char *buf, int buflen) {
--- a/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_linux_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "runtime/os.hpp"
+#include "runtime/threadLocalStorage.hpp"
 
 #include <asm-sparc/traps.h>
 
--- a/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP
+#define OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP
+
+#include "orderAccess_linux_sparc.inline.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_sparc.hpp"
+
 // Implementation of class atomic
 
 inline void Atomic::store    (jbyte    store_value, jbyte*    dest) { *dest = store_value; }
@@ -204,3 +212,5 @@
 inline void*    Atomic::cmpxchg_ptr(void*    exchange_value, volatile void*     dest, void*    compare_value) {
   return (void*)cmpxchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest, (intptr_t)compare_value);
 }
+
+#endif // OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP
--- a/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
+#define OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
+
 //
 // Sets the default values for platform dependent flags used by the
 // runtime system.  (see globals.hpp)
@@ -34,3 +37,5 @@
 define_pd_global(uintx, HeapBaseMinAddress,      4*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions, false);
+
+#endif // OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
--- a/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
+#define OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
+
+#include "runtime/orderAccess.hpp"
+#include "vm_version_sparc.hpp"
+
 // Implementation of class OrderAccess.
 
 // Assume TSO.
@@ -100,3 +106,5 @@
 
 inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); }
 inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { *(void* volatile *)p = v; fence(); }
+
+#endif // OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
--- a/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,9 +22,44 @@
  *
  */
 
-// do not include  precompiled  header file
+// no precompiled headers
+#include "assembler_sparc.inline.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_linux.h"
+#include "memory/allocation.inline.hpp"
+#include "mutex_linux.inline.hpp"
+#include "nativeInst_sparc.hpp"
+#include "os_share_linux.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "thread_linux.inline.hpp"
+#include "utilities/events.hpp"
+#include "utilities/vmError.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
-#include "incls/_os_linux_sparc.cpp.incl"
 
 // Linux/Sparc has rather obscure naming of registers in sigcontext
 // different between 32 and 64 bits
@@ -200,6 +235,18 @@
   sigcontext* sc = (sigcontext*)context;
   st->print_cr("Registers:");
 
+  st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
+               " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
+               SIG_REGS(sc).u_regs[CON_G1],
+               SIG_REGS(sc).u_regs[CON_G2],
+               SIG_REGS(sc).u_regs[CON_G3],
+               SIG_REGS(sc).u_regs[CON_G4]);
+  st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
+               " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
+               SIG_REGS(sc).u_regs[CON_G5],
+               SIG_REGS(sc).u_regs[CON_G6],
+               SIG_REGS(sc).u_regs[CON_G7],
+               SIG_REGS(sc).y);
   st->print_cr(" O0=" INTPTR_FORMAT " O1=" INTPTR_FORMAT
                " O2=" INTPTR_FORMAT " O3=" INTPTR_FORMAT,
                SIG_REGS(sc).u_regs[CON_O0],
@@ -213,18 +260,32 @@
                SIG_REGS(sc).u_regs[CON_O6],
                SIG_REGS(sc).u_regs[CON_O7]);
 
-  st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
-               " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
-               SIG_REGS(sc).u_regs[CON_G1],
-               SIG_REGS(sc).u_regs[CON_G2],
-               SIG_REGS(sc).u_regs[CON_G3],
-               SIG_REGS(sc).u_regs[CON_G4]);
-  st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
-               " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
-               SIG_REGS(sc).u_regs[CON_G5],
-               SIG_REGS(sc).u_regs[CON_G6],
-               SIG_REGS(sc).u_regs[CON_G7],
-               SIG_REGS(sc).y);
+
+  intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
+  st->print_cr(" L0=" INTPTR_FORMAT " L1=" INTPTR_FORMAT
+               " L2=" INTPTR_FORMAT " L3=" INTPTR_FORMAT,
+               sp[L0->sp_offset_in_saved_window()],
+               sp[L1->sp_offset_in_saved_window()],
+               sp[L2->sp_offset_in_saved_window()],
+               sp[L3->sp_offset_in_saved_window()]);
+  st->print_cr(" L4=" INTPTR_FORMAT " L5=" INTPTR_FORMAT
+               " L6=" INTPTR_FORMAT " L7=" INTPTR_FORMAT,
+               sp[L4->sp_offset_in_saved_window()],
+               sp[L5->sp_offset_in_saved_window()],
+               sp[L6->sp_offset_in_saved_window()],
+               sp[L7->sp_offset_in_saved_window()]);
+  st->print_cr(" I0=" INTPTR_FORMAT " I1=" INTPTR_FORMAT
+               " I2=" INTPTR_FORMAT " I3=" INTPTR_FORMAT,
+               sp[I0->sp_offset_in_saved_window()],
+               sp[I1->sp_offset_in_saved_window()],
+               sp[I2->sp_offset_in_saved_window()],
+               sp[I3->sp_offset_in_saved_window()]);
+  st->print_cr(" I4=" INTPTR_FORMAT " I5=" INTPTR_FORMAT
+               " I6=" INTPTR_FORMAT " I7=" INTPTR_FORMAT,
+               sp[I4->sp_offset_in_saved_window()],
+               sp[I5->sp_offset_in_saved_window()],
+               sp[I6->sp_offset_in_saved_window()],
+               sp[I7->sp_offset_in_saved_window()]);
 
   st->print_cr(" PC=" INTPTR_FORMAT " nPC=" INTPTR_FORMAT,
                SIG_PC(sc),
@@ -232,7 +293,6 @@
   st->cr();
   st->cr();
 
-  intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
   st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", sp);
   print_hex_dump(st, (address)sp, (address)(sp + 32), sizeof(intptr_t));
   st->cr();
@@ -242,7 +302,58 @@
   // this at the end, and hope for the best.
   address pc = os::Linux::ucontext_get_pc(uc);
   st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
-  print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
+  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
+}
+
+
+void os::print_register_info(outputStream *st, void *context) {
+  if (context == NULL) return;
+
+  ucontext_t *uc = (ucontext_t*)context;
+  intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
+
+  st->print_cr("Register to memory mapping:");
+  st->cr();
+
+  // this is only for the "general purpose" registers
+  st->print("G1="); print_location(st, SIG_REGS(sc).u_regs[CON__G1]);
+  st->print("G2="); print_location(st, SIG_REGS(sc).u_regs[CON__G2]);
+  st->print("G3="); print_location(st, SIG_REGS(sc).u_regs[CON__G3]);
+  st->print("G4="); print_location(st, SIG_REGS(sc).u_regs[CON__G4]);
+  st->print("G5="); print_location(st, SIG_REGS(sc).u_regs[CON__G5]);
+  st->print("G6="); print_location(st, SIG_REGS(sc).u_regs[CON__G6]);
+  st->print("G7="); print_location(st, SIG_REGS(sc).u_regs[CON__G7]);
+  st->cr();
+
+  st->print("O0="); print_location(st, SIG_REGS(sc).u_regs[CON__O0]);
+  st->print("O1="); print_location(st, SIG_REGS(sc).u_regs[CON__O1]);
+  st->print("O2="); print_location(st, SIG_REGS(sc).u_regs[CON__O2]);
+  st->print("O3="); print_location(st, SIG_REGS(sc).u_regs[CON__O3]);
+  st->print("O4="); print_location(st, SIG_REGS(sc).u_regs[CON__O4]);
+  st->print("O5="); print_location(st, SIG_REGS(sc).u_regs[CON__O5]);
+  st->print("O6="); print_location(st, SIG_REGS(sc).u_regs[CON__O6]);
+  st->print("O7="); print_location(st, SIG_REGS(sc).u_regs[CON__O7]);
+  st->cr();
+
+  st->print("L0="); print_location(st, sp[L0->sp_offset_in_saved_window()]);
+  st->print("L1="); print_location(st, sp[L1->sp_offset_in_saved_window()]);
+  st->print("L2="); print_location(st, sp[L2->sp_offset_in_saved_window()]);
+  st->print("L3="); print_location(st, sp[L3->sp_offset_in_saved_window()]);
+  st->print("L4="); print_location(st, sp[L4->sp_offset_in_saved_window()]);
+  st->print("L5="); print_location(st, sp[L5->sp_offset_in_saved_window()]);
+  st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]);
+  st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]);
+  st->cr();
+
+  st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]);
+  st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]);
+  st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]);
+  st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]);
+  st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]);
+  st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]);
+  st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]);
+  st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]);
+  st->cr();
 }
 
 
--- a/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP
+#define OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP
+
   //
   // NOTE: we are back in class os here, not Linux
   //
@@ -42,3 +45,5 @@
   // Used to register dynamic code cache area with the OS
   // Note: Currently only used in 64 bit Windows implementations
   static bool register_code_area(char *low, char *high) { return true; }
+
+#endif // OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP
--- a/src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP
+#define OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP
+
+#include "runtime/prefetch.hpp"
+
 #if defined(COMPILER2) || defined(_LP64)
 
 inline void Prefetch::read(void *loc, intx interval) {
@@ -38,3 +43,5 @@
 inline void Prefetch::write(void *loc, intx interval) {}
 
 #endif
+
+#endif // OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP
--- a/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadLS_linux_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "thread_linux.inline.hpp"
 
 void ThreadLocalStorage::generate_code_for_get_thread() {
 }
--- a/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,7 +22,12 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP
+#define OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP
+
 public:
   static Thread* thread() {
     return (Thread*) os::thread_local_storage_at(thread_index());
   }
+
+#endif // OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP
--- a/src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_thread_linux_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/frame.inline.hpp"
+#include "thread_linux.inline.hpp"
 
 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is
 // currently interrupted by SIGPROF
--- a/src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP
+#define OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP
+
 private:
 
   void pd_initialize() {
@@ -96,3 +99,5 @@
   static bool register_stack_overflow() { return false; }
   static void enable_register_stack_guard() {}
   static void disable_register_stack_guard() {}
+
+#endif // OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP
--- a/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP
+#define OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP
+
 // These are the OS and CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -67,3 +70,5 @@
                                                                         \
   /* This must be the last entry, and must be present */                \
   last_entry()
+
+#endif // OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP
--- a/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_linux_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_sparc.hpp"
 
 static bool detect_niagara() {
   char cpu[128];
--- a/src/os_cpu/linux_x86/vm/assembler_linux_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/assembler_linux_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_linux_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "runtime/os.hpp"
+#include "runtime/threadLocalStorage.hpp"
 
 #ifndef _LP64
 void MacroAssembler::int3() {
--- a/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP
+#define OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP
+
+#include "orderAccess_linux_x86.inline.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_x86.hpp"
+
 // Implementation of class atomic
 
 inline void Atomic::store    (jbyte    store_value, jbyte*    dest) { *dest = store_value; }
@@ -193,3 +201,5 @@
   return (void*)cmpxchg((jint)exchange_value, (volatile jint*)dest, (jint)compare_value);
 }
 #endif // AMD64
+
+#endif // OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP
--- a/src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP
+#define OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP
+
 #include <byteswap.h>
 
 // Efficient swapping of data bytes from Java byte
@@ -83,3 +86,5 @@
   return swap_u8_base(*(u4*)&x, *(((u4*)&x)+1));
 }
 #endif // !AMD64
+
+#endif // OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP
--- a/src/os_cpu/linux_x86/vm/copy_linux_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/copy_linux_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP
+#define OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP
+
 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
 #ifdef AMD64
   (void)memmove(to, from, count * HeapWordSize);
@@ -302,3 +305,5 @@
   pd_conjoint_oops_atomic((oop*)from, (oop*)to, count);
 #endif // AMD64
 }
+
+#endif // OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP
--- a/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
+#define OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
+
 // Sets the default values for platform dependent flags used by the runtime system.
 // (see globals.hpp)
 
@@ -45,3 +48,5 @@
 define_pd_global(uintx,HeapBaseMinAddress,       2*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
+
+#endif // OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
--- a/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP
+#define OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP
+
+#include "runtime/orderAccess.hpp"
+#include "vm_version_x86.hpp"
+
 // Implementation of class OrderAccess.
 
 inline void OrderAccess::loadload()   { acquire(); }
@@ -204,3 +210,5 @@
   release_store_fence((volatile jint*)p, (jint)v);
 #endif // AMD64
 }
+
+#endif // OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP
--- a/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,43 @@
  *
  */
 
-// do not include  precompiled  header file
-# include "incls/_os_linux_x86.cpp.incl"
+// no precompiled headers
+#include "assembler_x86.inline.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_linux.h"
+#include "memory/allocation.inline.hpp"
+#include "mutex_linux.inline.hpp"
+#include "nativeInst_x86.hpp"
+#include "os_share_linux.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "thread_linux.inline.hpp"
+#include "utilities/events.hpp"
+#include "utilities/vmError.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // put OS-includes here
 # include <sys/types.h>
@@ -718,11 +753,6 @@
 
   ucontext_t *uc = (ucontext_t*)context;
   st->print_cr("Registers:");
-
-  // this is horrendously verbose but the layout of the registers in the
-  // context does not match how we defined our abstract Register set, so
-  // we can't just iterate through the gregs area
-
 #ifdef AMD64
   st->print(  "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
   st->print(", RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
@@ -745,68 +775,11 @@
   st->print(", R15=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R15]);
   st->cr();
   st->print(  "RIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RIP]);
-  st->print(", EFL=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
+  st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
   st->print(", CSGSFS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_CSGSFS]);
   st->print(", ERR=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ERR]);
   st->cr();
   st->print("  TRAPNO=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_TRAPNO]);
-
-  st->cr();
-  st->cr();
-
-  st->print_cr("Register to memory mapping:");
-  st->cr();
-
-  // this is only for the "general purpose" registers
-
-  st->print_cr("RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
-  st->cr();
-  st->print_cr("RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
-  st->cr();
-  st->print_cr("RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
-  st->cr();
-  st->print_cr("RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
-  st->cr();
-  st->print_cr("RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
-  st->cr();
-  st->print_cr("RBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBP]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RBP]);
-  st->cr();
-  st->print_cr("RSI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSI]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
-  st->cr();
-  st->print_cr("RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
-  st->cr();
-  st->print_cr("R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R8]);
-  st->cr();
-  st->print_cr("R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R9]);
-  st->cr();
-  st->print_cr("R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R10]);
-  st->cr();
-  st->print_cr("R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R11]);
-  st->cr();
-  st->print_cr("R12=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R12]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R12]);
-  st->cr();
-  st->print_cr("R13=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R13]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R13]);
-  st->cr();
-  st->print_cr("R14=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R14]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R14]);
-  st->cr();
-  st->print_cr("R15=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R15]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R15]);
-
 #else
   st->print(  "EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EAX]);
   st->print(", EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EBX]);
@@ -819,41 +792,8 @@
   st->print(", EDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EDI]);
   st->cr();
   st->print(  "EIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EIP]);
+  st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
   st->print(", CR2=" INTPTR_FORMAT, uc->uc_mcontext.cr2);
-  st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
-
-  st->cr();
-  st->cr();
-
-  st->print_cr("Register to memory mapping:");
-  st->cr();
-
-  // this is only for the "general purpose" registers
-
-  st->print_cr("EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EAX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_EAX]);
-  st->cr();
-  st->print_cr("EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EBX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_EBX]);
-  st->cr();
-  st->print_cr("ECX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ECX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_ECX]);
-  st->cr();
-  st->print_cr("EDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EDX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_EDX]);
-  st->cr();
-  st->print_cr("ESP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ESP]);
-  print_location(st, uc->uc_mcontext.gregs[REG_ESP]);
-  st->cr();
-  st->print_cr("EBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EBP]);
-  print_location(st, uc->uc_mcontext.gregs[REG_EBP]);
-  st->cr();
-  st->print_cr("ESI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ESI]);
-  print_location(st, uc->uc_mcontext.gregs[REG_ESI]);
-  st->cr();
-  st->print_cr("EDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EDI]);
-  print_location(st, uc->uc_mcontext.gregs[REG_EDI]);
-
 #endif // AMD64
   st->cr();
   st->cr();
@@ -868,7 +808,52 @@
   // this at the end, and hope for the best.
   address pc = os::Linux::ucontext_get_pc(uc);
   st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
-  print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
+  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
+}
+
+void os::print_register_info(outputStream *st, void *context) {
+  if (context == NULL) return;
+
+  ucontext_t *uc = (ucontext_t*)context;
+
+  st->print_cr("Register to memory mapping:");
+  st->cr();
+
+  // this is horrendously verbose but the layout of the registers in the
+  // context does not match how we defined our abstract Register set, so
+  // we can't just iterate through the gregs area
+
+  // this is only for the "general purpose" registers
+
+#ifdef AMD64
+  st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
+  st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
+  st->print("RCX="); print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
+  st->print("RDX="); print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
+  st->print("RSP="); print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
+  st->print("RBP="); print_location(st, uc->uc_mcontext.gregs[REG_RBP]);
+  st->print("RSI="); print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
+  st->print("RDI="); print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
+  st->print("R8 ="); print_location(st, uc->uc_mcontext.gregs[REG_R8]);
+  st->print("R9 ="); print_location(st, uc->uc_mcontext.gregs[REG_R9]);
+  st->print("R10="); print_location(st, uc->uc_mcontext.gregs[REG_R10]);
+  st->print("R11="); print_location(st, uc->uc_mcontext.gregs[REG_R11]);
+  st->print("R12="); print_location(st, uc->uc_mcontext.gregs[REG_R12]);
+  st->print("R13="); print_location(st, uc->uc_mcontext.gregs[REG_R13]);
+  st->print("R14="); print_location(st, uc->uc_mcontext.gregs[REG_R14]);
+  st->print("R15="); print_location(st, uc->uc_mcontext.gregs[REG_R15]);
+#else
+  st->print("EAX="); print_location(st, uc->uc_mcontext.gregs[REG_EAX]);
+  st->print("EBX="); print_location(st, uc->uc_mcontext.gregs[REG_EBX]);
+  st->print("ECX="); print_location(st, uc->uc_mcontext.gregs[REG_ECX]);
+  st->print("EDX="); print_location(st, uc->uc_mcontext.gregs[REG_EDX]);
+  st->print("ESP="); print_location(st, uc->uc_mcontext.gregs[REG_ESP]);
+  st->print("EBP="); print_location(st, uc->uc_mcontext.gregs[REG_EBP]);
+  st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[REG_ESI]);
+  st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[REG_EDI]);
+#endif // AMD64
+
+  st->cr();
 }
 
 void os::setup_fpu() {
--- a/src/os_cpu/linux_x86/vm/os_linux_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/os_linux_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP
+#define OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP
+
   static void setup_fpu();
   static bool supports_sse();
 
@@ -30,3 +33,5 @@
   // Used to register dynamic code cache area with the OS
   // Note: Currently only used in 64 bit Windows implementations
   static bool register_code_area(char *low, char *high) { return true; }
+
+#endif // OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP
--- a/src/os_cpu/linux_x86/vm/prefetch_linux_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/prefetch_linux_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP
+#define OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP
+
+#include "runtime/prefetch.hpp"
+
 
 inline void Prefetch::read (void *loc, intx interval) {
 #ifdef AMD64
@@ -38,3 +43,5 @@
 
 #endif // AMD64
 }
+
+#endif // OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP
--- a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadLS_linux_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "thread_linux.inline.hpp"
 
 // Map stack pointer (%esp) to thread pointer for faster TLS access
 //
--- a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP
+#define OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP
+
   // Processor dependent parts of ThreadLocalStorage
 
 #ifndef AMD64
@@ -47,3 +50,5 @@
     return _sp_map[sp >> PAGE_SHIFT];
 #endif // AMD64
   }
+
+#endif // OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP
--- a/src/os_cpu/linux_x86/vm/thread_linux_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/thread_linux_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_thread_linux_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/frame.inline.hpp"
+#include "thread_linux.inline.hpp"
 
 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is
 // currently interrupted by SIGPROF
--- a/src/os_cpu/linux_x86/vm/thread_linux_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/thread_linux_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP
+#define OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP
+
  private:
   void pd_initialize() {
     _anchor.clear();
@@ -63,3 +66,5 @@
   static bool register_stack_overflow() { return false; }
   static void enable_register_stack_guard() {}
   static void disable_register_stack_guard() {}
+
+#endif // OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP
--- a/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP
+#define OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP
+
 // These are the OS and CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -58,3 +61,5 @@
                                                                         \
   /* This must be the last entry, and must be present */                \
   last_entry()
+
+#endif // OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP
--- a/src/os_cpu/linux_x86/vm/vm_version_linux_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_x86/vm/vm_version_linux_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,5 +22,7 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_linux_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_x86.hpp"
+
--- a/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,10 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_zero.inline.hpp"
+#include "runtime/os.hpp"
+#include "runtime/threadLocalStorage.hpp"
+
 // This file is intentionally empty
--- a/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,14 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP
+#define OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP
+
+#include "orderAccess_linux_zero.inline.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_zero.hpp"
+
 // Implementation of class atomic
 
 #ifdef M68K
@@ -291,3 +299,5 @@
                               (volatile intptr_t*) dest,
                               (intptr_t) compare_value);
 }
+
+#endif // OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP
--- a/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP
+#define OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP
+
 // Efficient swapping of data bytes from Java byte
 // ordering to native byte ordering and vice versa.
 
@@ -38,3 +41,5 @@
 inline u8 Bytes::swap_u8(u8 x) {
   return bswap_64(x);
 }
+
+#endif // OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP
--- a/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
+#define OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
+
 //
 // Set the default values for platform dependent flags used by the
 // runtime system.  See globals.hpp for details of what they do.
@@ -42,3 +45,5 @@
 define_pd_global(bool,  UseVectoredExceptions,   false);
 // Only used on 64 bit platforms
 define_pd_global(uintx, HeapBaseMinAddress,      2*G);
+
+#endif // OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
--- a/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
+#define OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
+
+#include "runtime/orderAccess.hpp"
+#include "vm_version_zero.hpp"
+
 #ifdef ARM
 
 /*
@@ -165,3 +171,5 @@
 
 inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { release_store_ptr(p, v); fence(); }
 inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { release_store_ptr(p, v); fence(); }
+
+#endif // OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
--- a/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,43 @@
  *
  */
 
-// do not include precompiled header file
-#include "incls/_os_linux_zero.cpp.incl"
+// no precompiled headers
+#include "assembler_zero.inline.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_linux.h"
+#include "memory/allocation.inline.hpp"
+#include "mutex_linux.inline.hpp"
+#include "nativeInst_zero.hpp"
+#include "os_share_linux.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "thread_linux.inline.hpp"
+#include "utilities/events.hpp"
+#include "utilities/vmError.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 address os::current_stack_pointer() {
   address dummy = (address) &dummy;
@@ -370,6 +405,10 @@
   ShouldNotCallThis();
 }
 
+void os::print_register_info(outputStream *st, void *context) {
+  ShouldNotCallThis();
+}
+
 /////////////////////////////////////////////////////////////////////////////
 // Stubs for things that would be in linux_zero.s if it existed.
 // You probably want to disassemble these monkeys to check they're ok.
--- a/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP
+#define OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP
+
   static void setup_fpu() {}
 
   static bool is_allocatable(size_t bytes);
@@ -49,3 +52,5 @@
     *(jlong *) dst = *(jlong *) src;
 #endif
   }
+
+#endif // OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP
--- a/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,15 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP
+#define OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP
+
+#include "runtime/prefetch.hpp"
+
 inline void Prefetch::read(void* loc, intx interval) {
 }
 
 inline void Prefetch::write(void* loc, intx interval) {
 }
+
+#endif // OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP
--- a/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadLS_linux_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "thread_linux.inline.hpp"
 
 void ThreadLocalStorage::generate_code_for_get_thread() {
   // nothing to do
--- a/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,9 +22,14 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP
+#define OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP
+
 // Processor dependent parts of ThreadLocalStorage
 
  public:
   static Thread* thread() {
     return (Thread*) os::thread_local_storage_at(thread_index());
   }
+
+#endif // OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP
--- a/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_thread_linux_zero.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/frame.inline.hpp"
+#include "thread_linux.inline.hpp"
 
 void JavaThread::cache_global_variables() {
   // nothing to do
--- a/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
+#define OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
+
  private:
   ZeroStack  _zero_stack;
   ZeroFrame* _top_zero_frame;
@@ -114,3 +117,5 @@
   static bool register_stack_overflow() { return false; }
   static void enable_register_stack_guard() {}
   static void disable_register_stack_guard() {}
+
+#endif // OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
--- a/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP
+#define OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP
+
 // These are the OS and CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -43,3 +46,5 @@
 #define VM_LONG_CONSTANTS_OS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant, last_entry) \
   /* This must be the last entry, and must be present */                \
   last_entry()
+
+#endif // OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP
--- a/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,4 +23,8 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_zero.hpp"
+
 // This file is intentionally empty
--- a/src/os_cpu/solaris_sparc/vm/assembler_solaris_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/assembler_solaris_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_solaris_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "runtime/os.hpp"
+#include "runtime/threadLocalStorage.hpp"
 
 #include <sys/trap.h>          // For trap numbers
 #include <v9/sys/psr_compat.h> // For V8 compatibility
--- a/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP
+
+#include "orderAccess_solaris_sparc.inline.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_sparc.hpp"
+
 // Implementation of class atomic
 
 inline void Atomic::store    (jbyte    store_value, jbyte*    dest) { *dest = store_value; }
@@ -342,3 +350,5 @@
 #endif // _LP64 || COMPILER2
 
 #endif // _GNU_SOURCE
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP
--- a/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP
+
 //
 // Sets the default values for platform dependent flags used by the runtime system.
 // (see globals.hpp)
@@ -36,3 +39,5 @@
 define_pd_global(bool, UseVectoredExceptions,    false);
 
 
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP
--- a/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP
+
+#include "runtime/orderAccess.hpp"
+#include "vm_version_sparc.hpp"
+
 // Implementation of class OrderAccess.
 
 // Assume TSO.
@@ -124,3 +130,5 @@
 
 inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); }
 inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { *(void* volatile *)p = v; fence(); }
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP
--- a/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,12 +22,47 @@
  *
  */
 
-// do not include  precompiled  header file
+// no precompiled headers
+#include "assembler_sparc.inline.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_solaris.h"
+#include "memory/allocation.inline.hpp"
+#include "mutex_solaris.inline.hpp"
+#include "nativeInst_sparc.hpp"
+#include "os_share_solaris.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "thread_solaris.inline.hpp"
+#include "utilities/events.hpp"
+#include "utilities/vmError.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
+
 
 # include <signal.h>        // needed first to avoid name collision for "std" with SC 5.0
 
-# include "incls/_os_solaris_sparc.cpp.incl"
-
 // put OS-includes here
 # include <sys/types.h>
 # include <sys/mman.h>
@@ -540,6 +575,11 @@
     pc = (address) uc->uc_mcontext.gregs[REG_PC];
   }
 
+  // Sometimes the register windows are not properly flushed.
+  if(uc->uc_mcontext.gwins != NULL) {
+    ::handle_unflushed_register_windows(uc->uc_mcontext.gwins);
+  }
+
   // unmask current signal
   sigset_t newset;
   sigemptyset(&newset);
@@ -558,6 +598,18 @@
   ucontext_t *uc = (ucontext_t*)context;
   st->print_cr("Registers:");
 
+  st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
+               " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
+            uc->uc_mcontext.gregs[REG_G1],
+            uc->uc_mcontext.gregs[REG_G2],
+            uc->uc_mcontext.gregs[REG_G3],
+            uc->uc_mcontext.gregs[REG_G4]);
+  st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
+               " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
+            uc->uc_mcontext.gregs[REG_G5],
+            uc->uc_mcontext.gregs[REG_G6],
+            uc->uc_mcontext.gregs[REG_G7],
+            uc->uc_mcontext.gregs[REG_Y]);
   st->print_cr(" O0=" INTPTR_FORMAT " O1=" INTPTR_FORMAT
                " O2=" INTPTR_FORMAT " O3=" INTPTR_FORMAT,
                  uc->uc_mcontext.gregs[REG_O0],
@@ -571,81 +623,39 @@
             uc->uc_mcontext.gregs[REG_O6],
             uc->uc_mcontext.gregs[REG_O7]);
 
-  st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
-               " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
-            uc->uc_mcontext.gregs[REG_G1],
-            uc->uc_mcontext.gregs[REG_G2],
-            uc->uc_mcontext.gregs[REG_G3],
-            uc->uc_mcontext.gregs[REG_G4]);
-  st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
-               " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
-            uc->uc_mcontext.gregs[REG_G5],
-            uc->uc_mcontext.gregs[REG_G6],
-            uc->uc_mcontext.gregs[REG_G7],
-            uc->uc_mcontext.gregs[REG_Y]);
+
+  intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc);
+  st->print_cr(" L0=" INTPTR_FORMAT " L1=" INTPTR_FORMAT
+               " L2=" INTPTR_FORMAT " L3=" INTPTR_FORMAT,
+               sp[L0->sp_offset_in_saved_window()],
+               sp[L1->sp_offset_in_saved_window()],
+               sp[L2->sp_offset_in_saved_window()],
+               sp[L3->sp_offset_in_saved_window()]);
+  st->print_cr(" L4=" INTPTR_FORMAT " L5=" INTPTR_FORMAT
+               " L6=" INTPTR_FORMAT " L7=" INTPTR_FORMAT,
+               sp[L4->sp_offset_in_saved_window()],
+               sp[L5->sp_offset_in_saved_window()],
+               sp[L6->sp_offset_in_saved_window()],
+               sp[L7->sp_offset_in_saved_window()]);
+  st->print_cr(" I0=" INTPTR_FORMAT " I1=" INTPTR_FORMAT
+               " I2=" INTPTR_FORMAT " I3=" INTPTR_FORMAT,
+               sp[I0->sp_offset_in_saved_window()],
+               sp[I1->sp_offset_in_saved_window()],
+               sp[I2->sp_offset_in_saved_window()],
+               sp[I3->sp_offset_in_saved_window()]);
+  st->print_cr(" I4=" INTPTR_FORMAT " I5=" INTPTR_FORMAT
+               " I6=" INTPTR_FORMAT " I7=" INTPTR_FORMAT,
+               sp[I4->sp_offset_in_saved_window()],
+               sp[I5->sp_offset_in_saved_window()],
+               sp[I6->sp_offset_in_saved_window()],
+               sp[I7->sp_offset_in_saved_window()]);
 
   st->print_cr(" PC=" INTPTR_FORMAT " nPC=" INTPTR_FORMAT,
             uc->uc_mcontext.gregs[REG_PC],
             uc->uc_mcontext.gregs[REG_nPC]);
-
   st->cr();
   st->cr();
 
-  st->print_cr("Register to memory mapping:");
-  st->cr();
-
-  // this is only for the "general purpose" registers
-
-  st->print_cr("O0=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O0]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O0]);
-  st->cr();
-  st->print_cr("O1=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O1]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O1]);
-  st->cr();
-  st->print_cr("O2=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O2]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O2]);
-  st->cr();
-  st->print_cr("O3=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O3]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O3]);
-  st->cr();
-  st->print_cr("O4=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O4]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O4]);
-  st->cr();
-  st->print_cr("O5=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O5]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O5]);
-  st->cr();
-  st->print_cr("O6=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O6]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O6]);
-  st->cr();
-  st->print_cr("O7=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O7]);
-  print_location(st, uc->uc_mcontext.gregs[REG_O7]);
-  st->cr();
-
-  st->print_cr("G1=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G1]);
-  print_location(st, uc->uc_mcontext.gregs[REG_G1]);
-  st->cr();
-  st->print_cr("G2=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G2]);
-  print_location(st, uc->uc_mcontext.gregs[REG_G2]);
-  st->cr();
-  st->print_cr("G3=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G3]);
-  print_location(st, uc->uc_mcontext.gregs[REG_G3]);
-  st->cr();
-  st->print_cr("G4=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G4]);
-  print_location(st, uc->uc_mcontext.gregs[REG_G4]);
-  st->cr();
-  st->print_cr("G5=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G5]);
-  print_location(st, uc->uc_mcontext.gregs[REG_G5]);
-  st->cr();
-  st->print_cr("G6=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G6]);
-  print_location(st, uc->uc_mcontext.gregs[REG_G6]);
-  st->cr();
-  st->print_cr("G7=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G7]);
-  print_location(st, uc->uc_mcontext.gregs[REG_G7]);
-
-  st->cr();
-  st->cr();
-
-  intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc);
   st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", sp);
   print_hex_dump(st, (address)sp, (address)(sp + 32), sizeof(intptr_t));
   st->cr();
@@ -656,7 +666,57 @@
   ExtendedPC epc = os::Solaris::ucontext_get_ExtendedPC(uc);
   address pc = epc.pc();
   st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
-  print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
+  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
+}
+
+void os::print_register_info(outputStream *st, void *context) {
+  if (context == NULL) return;
+
+  ucontext_t *uc = (ucontext_t*)context;
+  intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc);
+
+  st->print_cr("Register to memory mapping:");
+  st->cr();
+
+  // this is only for the "general purpose" registers
+  st->print("G1="); print_location(st, uc->uc_mcontext.gregs[REG_G1]);
+  st->print("G2="); print_location(st, uc->uc_mcontext.gregs[REG_G2]);
+  st->print("G3="); print_location(st, uc->uc_mcontext.gregs[REG_G3]);
+  st->print("G4="); print_location(st, uc->uc_mcontext.gregs[REG_G4]);
+  st->print("G5="); print_location(st, uc->uc_mcontext.gregs[REG_G5]);
+  st->print("G6="); print_location(st, uc->uc_mcontext.gregs[REG_G6]);
+  st->print("G7="); print_location(st, uc->uc_mcontext.gregs[REG_G7]);
+  st->cr();
+
+  st->print("O0="); print_location(st, uc->uc_mcontext.gregs[REG_O0]);
+  st->print("O1="); print_location(st, uc->uc_mcontext.gregs[REG_O1]);
+  st->print("O2="); print_location(st, uc->uc_mcontext.gregs[REG_O2]);
+  st->print("O3="); print_location(st, uc->uc_mcontext.gregs[REG_O3]);
+  st->print("O4="); print_location(st, uc->uc_mcontext.gregs[REG_O4]);
+  st->print("O5="); print_location(st, uc->uc_mcontext.gregs[REG_O5]);
+  st->print("O6="); print_location(st, uc->uc_mcontext.gregs[REG_O6]);
+  st->print("O7="); print_location(st, uc->uc_mcontext.gregs[REG_O7]);
+  st->cr();
+
+  st->print("L0="); print_location(st, sp[L0->sp_offset_in_saved_window()]);
+  st->print("L1="); print_location(st, sp[L1->sp_offset_in_saved_window()]);
+  st->print("L2="); print_location(st, sp[L2->sp_offset_in_saved_window()]);
+  st->print("L3="); print_location(st, sp[L3->sp_offset_in_saved_window()]);
+  st->print("L4="); print_location(st, sp[L4->sp_offset_in_saved_window()]);
+  st->print("L5="); print_location(st, sp[L5->sp_offset_in_saved_window()]);
+  st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]);
+  st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]);
+  st->cr();
+
+  st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]);
+  st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]);
+  st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]);
+  st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]);
+  st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]);
+  st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]);
+  st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]);
+  st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]);
+  st->cr();
 }
 
 void os::Solaris::init_thread_fpu_state(void) {
--- a/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP
+
   //
   // NOTE: we are back in class os here, not Solaris
   //
@@ -42,3 +45,5 @@
   // Used to register dynamic code cache area with the OS
   // Note: Currently only used in 64 bit Windows implementations
   static bool register_code_area(char *low, char *high) { return true; }
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP
--- a/src/os_cpu/solaris_sparc/vm/prefetch_solaris_sparc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/prefetch_solaris_sparc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
+
+#include "runtime/prefetch.hpp"
+
 #if defined(COMPILER2) || defined(_LP64)
 
 // For Sun Studio inplementation is in solaris_sparc.il
@@ -56,3 +61,5 @@
 inline void Prefetch::write(void *loc, intx interval) {}
 
 #endif // defined(COMPILER2) || defined(_LP64)
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
--- a/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,13 +22,15 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "thread_solaris.inline.hpp"
+
 // Provides an entry point we can link against and
 // a buffer we can emit code into. The buffer is
 // filled by ThreadLocalStorage::generate_code_for_get_thread
 // and called from ThreadLocalStorage::thread()
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadLS_solaris_sparc.cpp.incl"
 #include <sys/systeminfo.h>
 
 // The portable TLS mechanism (get_thread_via_cache) is enough on SPARC.
--- a/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP
+
 public:
   // Java Thread  - force inlining
   static inline Thread* thread() ;
@@ -64,3 +67,5 @@
     uintptr_t ix = (int) (((raw_id >> 9) ^ (raw_id >> 20)) % _pd_cache_size);
     return ix;
   }
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP
--- a/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_thread_solaris_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/frame.inline.hpp"
+#include "thread_solaris.inline.hpp"
 
 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is
 // currently interrupted by SIGPROF
--- a/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -21,6 +21,9 @@
  * questions.
  *
  */
+
+#ifndef OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP
 private:
 
   void pd_initialize() {
@@ -95,3 +98,5 @@
   static bool register_stack_overflow() { return false; }
   static void enable_register_stack_guard() {}
   static void disable_register_stack_guard() {}
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP
--- a/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP
+#define OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP
+
 // These are the OS and CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -65,3 +68,5 @@
                                                                         \
   /* This must be the last entry, and must be present */                \
   last_entry()
+
+#endif // OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP
--- a/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_solaris_sparc.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_sparc.hpp"
 
 # include <sys/auxv.h>
 # include <sys/auxv_SPARC.h>
@@ -65,10 +66,6 @@
   // getisax(2), SI_ARCHITECTURE_32, and SI_ARCHITECTURE_64 are
   // supported on Solaris 10 and later.
   if (os::Solaris::supports_getisax()) {
-#ifndef PRODUCT
-    if (PrintMiscellaneous && Verbose)
-      tty->print_cr("getisax(2) supported.");
-#endif
 
     // Check 32-bit architecture.
     do_sysinfo(SI_ARCHITECTURE_32, "sparc", &features, v8_instructions_m);
@@ -81,6 +78,11 @@
     uint_t avn = os::Solaris::getisax(&av, 1);
     assert(avn == 1, "should only return one av");
 
+#ifndef PRODUCT
+    if (PrintMiscellaneous && Verbose)
+      tty->print_cr("getisax(2) returned: " PTR32_FORMAT, av);
+#endif
+
     if (av & AV_SPARC_MUL32)  features |= hardware_mul32_m;
     if (av & AV_SPARC_DIV32)  features |= hardware_div32_m;
     if (av & AV_SPARC_FSMULD) features |= hardware_fsmuld_m;
@@ -88,11 +90,22 @@
     if (av & AV_SPARC_POPC)   features |= hardware_popc_m;
     if (av & AV_SPARC_VIS)    features |= vis1_instructions_m;
     if (av & AV_SPARC_VIS2)   features |= vis2_instructions_m;
+
+    // Next values are not defined before Solaris 10
+    // but Solaris 8 is used for jdk6 update builds.
+#ifndef AV_SPARC_ASI_BLK_INIT
+#define AV_SPARC_ASI_BLK_INIT 0x0080  /* ASI_BLK_INIT_xxx ASI */
+#endif
+#ifndef AV_SPARC_FMAF
+#define AV_SPARC_FMAF 0x0100  /* Sparc64 Fused Multiply-Add */
+#endif
+    if (av & AV_SPARC_ASI_BLK_INIT) features |= blk_init_instructions_m;
+    if (av & AV_SPARC_FMAF)         features |= fmaf_instructions_m;
   } else {
     // getisax(2) failed, use the old legacy code.
 #ifndef PRODUCT
     if (PrintMiscellaneous && Verbose)
-      tty->print_cr("getisax(2) not supported.");
+      tty->print_cr("getisax(2) is not supported.");
 #endif
 
     char   tmp;
--- a/src/os_cpu/solaris_x86/vm/assembler_solaris_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/assembler_solaris_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_solaris_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "runtime/os.hpp"
+#include "runtime/threadLocalStorage.hpp"
 
 
 void MacroAssembler::int3() {
--- a/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP
+#define OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP
+
+#include "orderAccess_solaris_x86.inline.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_x86.hpp"
+
 inline void Atomic::store    (jbyte    store_value, jbyte*    dest) { *dest = store_value; }
 inline void Atomic::store    (jshort   store_value, jshort*   dest) { *dest = store_value; }
 inline void Atomic::store    (jint     store_value, jint*     dest) { *dest = store_value; }
@@ -245,3 +253,5 @@
 #undef LOCK_IF_MP
 
 #endif // _GNU_SOURCE
+
+#endif // OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP
--- a/src/os_cpu/solaris_x86/vm/bytes_solaris_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/bytes_solaris_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP
+#define OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP
+
 // For Sun Studio - implementation is in solaris_i486.il.
 // For gcc - implementation is just below.
 extern "C" u2 _raw_swap_u2(u2 x);
@@ -109,3 +112,5 @@
 #endif // AMD64
 }
 #endif  //_GNU_SOURCE
+
+#endif // OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP
--- a/src/os_cpu/solaris_x86/vm/copy_solaris_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/copy_solaris_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP
+#define OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP
+
 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
   (void)memmove(to, from, count * HeapWordSize);
 }
@@ -136,3 +139,5 @@
   _Copy_arrayof_conjoint_jints(from, to, count);
 #endif // AMD64
 }
+
+#endif // OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP
--- a/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
+#define OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
+
 // Sets the default values for platform dependent flags used by the runtime system.
 // (see globals.hpp)
 
@@ -44,3 +47,5 @@
 define_pd_global(uintx,HeapBaseMinAddress,       256*M);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
+
+#endif // OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
--- a/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP
+#define OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP
+
+#include "runtime/orderAccess.hpp"
+#include "vm_version_x86.hpp"
+
 // Implementation of class OrderAccess.
 
 // For Sun Studio - implementation is in solaris_i486.il.
@@ -127,3 +133,5 @@
 
 inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); }
 inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { *(void* volatile *)p = v; fence(); }
+
+#endif // OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP
--- a/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,43 @@
  *
  */
 
-// do not include  precompiled  header file
-# include "incls/_os_solaris_x86.cpp.incl"
+// no precompiled headers
+#include "assembler_x86.inline.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_solaris.h"
+#include "memory/allocation.inline.hpp"
+#include "mutex_solaris.inline.hpp"
+#include "nativeInst_x86.hpp"
+#include "os_share_solaris.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "thread_solaris.inline.hpp"
+#include "utilities/events.hpp"
+#include "utilities/vmError.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // put OS-includes here
 # include <sys/types.h>
@@ -719,11 +754,6 @@
 
   ucontext_t *uc = (ucontext_t*)context;
   st->print_cr("Registers:");
-
-  // this is horrendously verbose but the layout of the registers in the
-  // context does not match how we defined our abstract Register set, so
-  // we can't just iterate through the gregs area
-
 #ifdef AMD64
   st->print(  "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
   st->print(", RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
@@ -735,8 +765,8 @@
   st->print(", RSI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSI]);
   st->print(", RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);
   st->cr();
-  st->print(  "R8=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
-  st->print(", R9=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
+  st->print(  "R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
+  st->print(", R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
   st->print(", R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);
   st->print(", R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);
   st->cr();
@@ -747,63 +777,6 @@
   st->cr();
   st->print(  "RIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RIP]);
   st->print(", RFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RFL]);
-
-  st->cr();
-  st->cr();
-
-  st->print_cr("Register to memory mapping:");
-  st->cr();
-
-  // this is only for the "general purpose" registers
-
-  st->print_cr("RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
-  st->cr();
-  st->print_cr("RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
-  st->cr();
-  st->print_cr("RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
-  st->cr();
-  st->print_cr("RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
-  st->cr();
-  st->print_cr("RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
-  st->cr();
-  st->print_cr("RBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBP]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
-  st->cr();
-  st->print_cr("RSI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSI]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
-  st->cr();
-  st->print_cr("RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);
-  print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
-  st->cr();
-  st->print_cr("R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R8]);
-  st->cr();
-  st->print_cr("R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R9]);
-  st->cr();
-  st->print_cr("R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R10]);
-  st->cr();
-  st->print_cr("R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R11]);
-  st->cr();
-  st->print_cr("R12=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R12]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R12]);
-  st->cr();
-  st->print_cr("R13=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R13]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R13]);
-  st->cr();
-  st->print_cr("R14=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R14]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R14]);
-  st->cr();
-  st->print_cr("R15=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R15]);
-  print_location(st, uc->uc_mcontext.gregs[REG_R15]);
-
 #else
   st->print(  "EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EAX]);
   st->print(", EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EBX]);
@@ -817,39 +790,6 @@
   st->cr();
   st->print(  "EIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EIP]);
   st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EFL]);
-
-  st->cr();
-  st->cr();
-
-  st->print_cr("Register to memory mapping:");
-  st->cr();
-
-  // this is only for the "general purpose" registers
-
-  st->print_cr("EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EAX]);
-  print_location(st, uc->uc_mcontext.gregs[EAX]);
-  st->cr();
-  st->print_cr("EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EBX]);
-  print_location(st, uc->uc_mcontext.gregs[EBX]);
-  st->cr();
-  st->print_cr("ECX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[ECX]);
-  print_location(st, uc->uc_mcontext.gregs[ECX]);
-  st->cr();
-  st->print_cr("EDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EDX]);
-  print_location(st, uc->uc_mcontext.gregs[EDX]);
-  st->cr();
-  st->print_cr("ESP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[UESP]);
-  print_location(st, uc->uc_mcontext.gregs[UESP]);
-  st->cr();
-  st->print_cr("EBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EBP]);
-  print_location(st, uc->uc_mcontext.gregs[EBP]);
-  st->cr();
-  st->print_cr("ESI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[ESI]);
-  print_location(st, uc->uc_mcontext.gregs[ESI]);
-  st->cr();
-  st->print_cr("EDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EDI]);
-  print_location(st, uc->uc_mcontext.gregs[EDI]);
-
 #endif // AMD64
   st->cr();
   st->cr();
@@ -865,7 +805,52 @@
   ExtendedPC epc = os::Solaris::ucontext_get_ExtendedPC(uc);
   address pc = epc.pc();
   st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
-  print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
+  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
+}
+
+void os::print_register_info(outputStream *st, void *context) {
+  if (context == NULL) return;
+
+  ucontext_t *uc = (ucontext_t*)context;
+
+  st->print_cr("Register to memory mapping:");
+  st->cr();
+
+  // this is horrendously verbose but the layout of the registers in the
+  // context does not match how we defined our abstract Register set, so
+  // we can't just iterate through the gregs area
+
+  // this is only for the "general purpose" registers
+
+#ifdef AMD64
+  st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
+  st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
+  st->print("RCX="); print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
+  st->print("RDX="); print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
+  st->print("RSP="); print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
+  st->print("RBP="); print_location(st, uc->uc_mcontext.gregs[REG_RBP]);
+  st->print("RSI="); print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
+  st->print("RDI="); print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
+  st->print("R8 ="); print_location(st, uc->uc_mcontext.gregs[REG_R8]);
+  st->print("R9 ="); print_location(st, uc->uc_mcontext.gregs[REG_R9]);
+  st->print("R10="); print_location(st, uc->uc_mcontext.gregs[REG_R10]);
+  st->print("R11="); print_location(st, uc->uc_mcontext.gregs[REG_R11]);
+  st->print("R12="); print_location(st, uc->uc_mcontext.gregs[REG_R12]);
+  st->print("R13="); print_location(st, uc->uc_mcontext.gregs[REG_R13]);
+  st->print("R14="); print_location(st, uc->uc_mcontext.gregs[REG_R14]);
+  st->print("R15="); print_location(st, uc->uc_mcontext.gregs[REG_R15]);
+#else
+  st->print("EAX="); print_location(st, uc->uc_mcontext.gregs[EAX]);
+  st->print("EBX="); print_location(st, uc->uc_mcontext.gregs[EBX]);
+  st->print("ECX="); print_location(st, uc->uc_mcontext.gregs[ECX]);
+  st->print("EDX="); print_location(st, uc->uc_mcontext.gregs[EDX]);
+  st->print("ESP="); print_location(st, uc->uc_mcontext.gregs[UESP]);
+  st->print("EBP="); print_location(st, uc->uc_mcontext.gregs[EBP]);
+  st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[ESI]);
+  st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[EDI]);
+#endif
+
+  st->cr();
 }
 
 
--- a/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP
+#define OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP
+
   //
   // NOTE: we are back in class os here, not Solaris
   //
@@ -48,3 +51,5 @@
   // Used to register dynamic code cache area with the OS
   // Note: Currently only used in 64 bit Windows implementations
   static bool register_code_area(char *low, char *high) { return true; }
+
+#endif // OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP
--- a/src/os_cpu/solaris_x86/vm/prefetch_solaris_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/prefetch_solaris_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP
+#define OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP
+
+#include "runtime/prefetch.hpp"
+
 extern "C" {
   void _Prefetch_read (void *loc, intx interval);
   void _Prefetch_write(void *loc, intx interval);
@@ -39,3 +44,5 @@
   _Prefetch_write(loc, interval);
 #endif // AMD64
 }
+
+#endif // OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP
--- a/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadLS_solaris_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "thread_solaris.inline.hpp"
 
 #ifdef AMD64
 extern "C" Thread*  fs_load(ptrdiff_t tlsOffset);
--- a/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP
+#define OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP
+
 // Processor dependent parts of ThreadLocalStorage
 
 private:
@@ -78,3 +81,5 @@
 
   // Java Thread
   static inline Thread* thread();
+
+#endif // OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP
--- a/src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_thread_solaris_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/frame.inline.hpp"
+#include "thread_solaris.inline.hpp"
 
 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is
 // currently interrupted by SIGPROF
--- a/src/os_cpu/solaris_x86/vm/thread_solaris_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/thread_solaris_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP
+#define OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP
+
  private:
   void pd_initialize()                           { _anchor.clear(); }
 
@@ -57,3 +60,5 @@
   static bool register_stack_overflow() { return false; }
   static void enable_register_stack_guard() {}
   static void disable_register_stack_guard() {}
+
+#endif // OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP
--- a/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP
+#define OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP
+
 // These are the OS and CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -57,3 +60,5 @@
                                                                         \
   /* This must be the last entry, and must be present */                \
   last_entry()
+
+#endif // OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP
--- a/src/os_cpu/solaris_x86/vm/vm_version_solaris_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/solaris_x86/vm/vm_version_solaris_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,5 +22,7 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_solaris_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_x86.hpp"
+
--- a/src/os_cpu/windows_x86/vm/assembler_windows_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/assembler_windows_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler_windows_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "assembler_x86.inline.hpp"
+#include "runtime/os.hpp"
+#include "runtime/threadLocalStorage.hpp"
 
 
 void MacroAssembler::int3() {
--- a/src/os_cpu/windows_x86/vm/atomic_windows_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/atomic_windows_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP
+#define OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP
+
+#include "orderAccess_windows_x86.inline.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_x86.hpp"
+
 // The following alternative implementations are needed because
 // Windows 95 doesn't support (some of) the corresponding Windows NT
 // calls. Furthermore, these versions allow inlining in the caller.
@@ -249,3 +257,5 @@
 #endif // AMD64
 
 #pragma warning(default: 4035) // Enables warnings reporting missing return statement
+
+#endif // OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP
--- a/src/os_cpu/windows_x86/vm/bytes_windows_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/bytes_windows_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP
+#define OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP
+
 #pragma warning(disable: 4035) // Disable warning 4035: no return value
 
 // Efficient swapping of data bytes from Java byte
@@ -80,3 +83,5 @@
 #endif // AMD64
 
 #pragma warning(default: 4035) // Enable warning 4035: no return value
+
+#endif // OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP
--- a/src/os_cpu/windows_x86/vm/copy_windows_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/copy_windows_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP
+#define OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP
+
 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
   (void)memmove(to, from, count * HeapWordSize);
 }
@@ -164,3 +167,5 @@
 static void pd_arrayof_conjoint_oops(HeapWord* from, HeapWord* to, size_t count) {
   pd_conjoint_oops_atomic((oop*)from, (oop*)to, count);
 }
+
+#endif // OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP
--- a/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
+#define OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
+
 // Sets the default values for platform dependent flags used by the runtime system.
 // (see globals.hpp)
 
@@ -46,3 +49,5 @@
 define_pd_global(uintx, HeapBaseMinAddress,      2*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
+
+#endif // OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
--- a/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP
+#define OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP
+
+#include "runtime/orderAccess.hpp"
+#include "vm_version_x86.hpp"
+
 #pragma warning(disable: 4035) // Disables warnings reporting missing return statement
 
 // Implementation of class OrderAccess.
@@ -208,3 +214,5 @@
 }
 
 #pragma warning(default: 4035) // Enables warnings reporting missing return statement
+
+#endif // OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP
--- a/src/os_cpu/windows_x86/vm/os_windows_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/os_windows_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,44 @@
  *
  */
 
-// do not include  precompiled  header file
-# include "incls/_os_windows_x86.cpp.incl"
+// no precompiled headers
+#include "assembler_x86.inline.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvm_windows.h"
+#include "memory/allocation.inline.hpp"
+#include "mutex_windows.inline.hpp"
+#include "nativeInst_x86.hpp"
+#include "os_share_windows.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "thread_windows.inline.hpp"
+#include "utilities/events.hpp"
+#include "utilities/vmError.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
+
 # include "unwind_windows_x86.hpp"
 #undef REG_SP
 #undef REG_FP
@@ -387,8 +423,8 @@
   st->print(", RSI=" INTPTR_FORMAT, uc->Rsi);
   st->print(", RDI=" INTPTR_FORMAT, uc->Rdi);
   st->cr();
-  st->print(  "R8=" INTPTR_FORMAT,  uc->R8);
-  st->print(", R9=" INTPTR_FORMAT,  uc->R9);
+  st->print(  "R8 =" INTPTR_FORMAT, uc->R8);
+  st->print(", R9 =" INTPTR_FORMAT, uc->R9);
   st->print(", R10=" INTPTR_FORMAT, uc->R10);
   st->print(", R11=" INTPTR_FORMAT, uc->R11);
   st->cr();
@@ -399,62 +435,6 @@
   st->cr();
   st->print(  "RIP=" INTPTR_FORMAT, uc->Rip);
   st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags);
-
-  st->cr();
-  st->cr();
-
-  st->print_cr("Register to memory mapping:");
-  st->cr();
-
-  // this is only for the "general purpose" registers
-
-  st->print_cr("RAX=" INTPTR_FORMAT, uc->Rax);
-  print_location(st, uc->Rax);
-  st->cr();
-  st->print_cr("RBX=" INTPTR_FORMAT, uc->Rbx);
-  print_location(st, uc->Rbx);
-  st->cr();
-  st->print_cr("RCX=" INTPTR_FORMAT, uc->Rcx);
-  print_location(st, uc->Rcx);
-  st->cr();
-  st->print_cr("RDX=" INTPTR_FORMAT, uc->Rdx);
-  print_location(st, uc->Rdx);
-  st->cr();
-  st->print_cr("RSP=" INTPTR_FORMAT, uc->Rsp);
-  print_location(st, uc->Rsp);
-  st->cr();
-  st->print_cr("RBP=" INTPTR_FORMAT, uc->Rbp);
-  print_location(st, uc->Rbp);
-  st->cr();
-  st->print_cr("RSI=" INTPTR_FORMAT, uc->Rsi);
-  print_location(st, uc->Rsi);
-  st->cr();
-  st->print_cr("RDI=" INTPTR_FORMAT, uc->Rdi);
-  print_location(st, uc->Rdi);
-  st->cr();
-  st->print_cr("R8 =" INTPTR_FORMAT, uc->R8);
-  print_location(st, uc->R8);
-  st->cr();
-  st->print_cr("R9 =" INTPTR_FORMAT, uc->R9);
-  print_location(st, uc->R9);
-  st->cr();
-  st->print_cr("R10=" INTPTR_FORMAT, uc->R10);
-  print_location(st, uc->R10);
-  st->cr();
-  st->print_cr("R11=" INTPTR_FORMAT, uc->R11);
-  print_location(st, uc->R11);
-  st->cr();
-  st->print_cr("R12=" INTPTR_FORMAT, uc->R12);
-  print_location(st, uc->R12);
-  st->cr();
-  st->print_cr("R13=" INTPTR_FORMAT, uc->R13);
-  print_location(st, uc->R13);
-  st->cr();
-  st->print_cr("R14=" INTPTR_FORMAT, uc->R14);
-  print_location(st, uc->R14);
-  st->cr();
-  st->print_cr("R15=" INTPTR_FORMAT, uc->R15);
-  print_location(st, uc->R15);
 #else
   st->print(  "EAX=" INTPTR_FORMAT, uc->Eax);
   st->print(", EBX=" INTPTR_FORMAT, uc->Ebx);
@@ -468,38 +448,6 @@
   st->cr();
   st->print(  "EIP=" INTPTR_FORMAT, uc->Eip);
   st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags);
-
-  st->cr();
-  st->cr();
-
-  st->print_cr("Register to memory mapping:");
-  st->cr();
-
-  // this is only for the "general purpose" registers
-
-  st->print_cr("EAX=" INTPTR_FORMAT, uc->Eax);
-  print_location(st, uc->Eax);
-  st->cr();
-  st->print_cr("EBX=" INTPTR_FORMAT, uc->Ebx);
-  print_location(st, uc->Ebx);
-  st->cr();
-  st->print_cr("ECX=" INTPTR_FORMAT, uc->Ecx);
-  print_location(st, uc->Ecx);
-  st->cr();
-  st->print_cr("EDX=" INTPTR_FORMAT, uc->Edx);
-  print_location(st, uc->Edx);
-  st->cr();
-  st->print_cr("ESP=" INTPTR_FORMAT, uc->Esp);
-  print_location(st, uc->Esp);
-  st->cr();
-  st->print_cr("EBP=" INTPTR_FORMAT, uc->Ebp);
-  print_location(st, uc->Ebp);
-  st->cr();
-  st->print_cr("ESI=" INTPTR_FORMAT, uc->Esi);
-  print_location(st, uc->Esi);
-  st->cr();
-  st->print_cr("EDI=" INTPTR_FORMAT, uc->Edi);
-  print_location(st, uc->Edi);
 #endif // AMD64
   st->cr();
   st->cr();
@@ -514,7 +462,49 @@
   // this at the end, and hope for the best.
   address pc = (address)uc->REG_PC;
   st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
-  print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
+  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
+  st->cr();
+}
+
+
+void os::print_register_info(outputStream *st, void *context) {
+  if (context == NULL) return;
+
+  CONTEXT* uc = (CONTEXT*)context;
+
+  st->print_cr("Register to memory mapping:");
+  st->cr();
+
+  // this is only for the "general purpose" registers
+
+#ifdef AMD64
+  st->print("RAX="); print_location(st, uc->Rax);
+  st->print("RBX="); print_location(st, uc->Rbx);
+  st->print("RCX="); print_location(st, uc->Rcx);
+  st->print("RDX="); print_location(st, uc->Rdx);
+  st->print("RSP="); print_location(st, uc->Rsp);
+  st->print("RBP="); print_location(st, uc->Rbp);
+  st->print("RSI="); print_location(st, uc->Rsi);
+  st->print("RDI="); print_location(st, uc->Rdi);
+  st->print("R8 ="); print_location(st, uc->R8);
+  st->print("R9 ="); print_location(st, uc->R9);
+  st->print("R10="); print_location(st, uc->R10);
+  st->print("R11="); print_location(st, uc->R11);
+  st->print("R12="); print_location(st, uc->R12);
+  st->print("R13="); print_location(st, uc->R13);
+  st->print("R14="); print_location(st, uc->R14);
+  st->print("R15="); print_location(st, uc->R15);
+#else
+  st->print("EAX="); print_location(st, uc->Eax);
+  st->print("EBX="); print_location(st, uc->Ebx);
+  st->print("ECX="); print_location(st, uc->Ecx);
+  st->print("EDX="); print_location(st, uc->Edx);
+  st->print("ESP="); print_location(st, uc->Esp);
+  st->print("EBP="); print_location(st, uc->Ebp);
+  st->print("ESI="); print_location(st, uc->Esi);
+  st->print("EDI="); print_location(st, uc->Edi);
+#endif
+
   st->cr();
 }
 
--- a/src/os_cpu/windows_x86/vm/os_windows_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/os_windows_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP
+#define OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP
+
   //
   // NOTE: we are back in class os here, not win32
   //
@@ -56,3 +59,5 @@
   static bool supports_sse() { return true; }
 
   static bool      register_code_area(char *low, char *high);
+
+#endif // OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP
--- a/src/os_cpu/windows_x86/vm/prefetch_windows_x86.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/prefetch_windows_x86.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,5 +22,12 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP
+#define OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP
+
+#include "runtime/prefetch.hpp"
+
 inline void Prefetch::read (void *loc, intx interval) {}
 inline void Prefetch::write(void *loc, intx interval) {}
+
+#endif // OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP
--- a/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,14 +22,15 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "thread_windows.inline.hpp"
+
 // Provides an entry point we can link against and
 // a buffer we can emit code into. The buffer is
 // filled by ThreadLocalStorage::generate_code_for_get_thread
 // and called from ThreadLocalStorage::thread()
 
-#include "incls/_precompiled.incl"
-#include "incls/_threadLS_windows_x86.cpp.incl"
-
 int ThreadLocalStorage::_thread_ptr_offset = 0;
 
 static void call_wrapper_dummy() {}
--- a/src/os_cpu/windows_x86/vm/threadLS_windows_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/threadLS_windows_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP
+#define OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP
+
 // Processor dependent parts of ThreadLocalStorage
 
 protected:
@@ -42,3 +45,5 @@
   static inline void set_thread_ptr_offset( int offset ) { _thread_ptr_offset = offset; }
 
   static inline int get_thread_ptr_offset() { return _thread_ptr_offset; }
+
+#endif // OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP
--- a/src/os_cpu/windows_x86/vm/thread_windows_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/thread_windows_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_thread_windows_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/frame.inline.hpp"
+#include "thread_windows.inline.hpp"
 
 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is
 // currently interrupted by SIGPROF
--- a/src/os_cpu/windows_x86/vm/thread_windows_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/thread_windows_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP
+#define OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP
+
  private:
   void pd_initialize() {
     _anchor.clear();
@@ -60,3 +63,5 @@
   static bool register_stack_overflow() { return false; }
   static void enable_register_stack_guard() {}
   static void disable_register_stack_guard() {}
+
+#endif // OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP
--- a/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP
+#define OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP
+
 
 #ifdef AMD64
 typedef unsigned char UBYTE;
@@ -81,3 +84,5 @@
 #endif
 
 #endif // AMD64
+
+#endif // OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP
--- a/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP
+#define OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP
+
 // These are the OS and CPU-specific fields, types and integer
 // constants required by the Serviceability Agent. This file is
 // referenced by vmStructs.cpp.
@@ -52,3 +55,5 @@
                                                                         \
   /* This must be the last entry, and must be present */                \
   last_entry()
+
+#endif // OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP
--- a/src/os_cpu/windows_x86/vm/vm_version_windows_x86.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/os_cpu/windows_x86/vm/vm_version_windows_x86.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,5 +22,7 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_windows_x86.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "vm_version_x86.hpp"
+
--- a/src/share/tools/MakeDeps/ArgsParser.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2005, 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.
- *
- */
-
-class ArgIterator {
-    String[] args;
-    int i;
-    ArgIterator(String[] args) {
-        this.args = args;
-        this.i = 0;
-    }
-    String get() { return args[i]; }
-    boolean hasMore() { return args != null && i  < args.length; }
-    boolean next() { return ++i < args.length; }
-}
-
-abstract class ArgHandler {
-    public abstract void handle(ArgIterator it);
-
-}
-
-class ArgRule {
-    String arg;
-    ArgHandler handler;
-    ArgRule(String arg, ArgHandler handler) {
-        this.arg = arg;
-        this.handler = handler;
-    }
-
-    boolean process(ArgIterator it) {
-        if (match(it.get(), arg)) {
-            handler.handle(it);
-            return true;
-        }
-        return false;
-    }
-    boolean match(String rule_pattern, String arg) {
-        return arg.equals(rule_pattern);
-    }
-}
-
-class ArgsParser {
-    ArgsParser(String[] args,
-               ArgRule[] rules,
-               ArgHandler defaulter) {
-        ArgIterator ai = new ArgIterator(args);
-        while (ai.hasMore()) {
-            boolean processed = false;
-            for (int i=0; i<rules.length; i++) {
-                processed |= rules[i].process(ai);
-                if (processed) {
-                    break;
-                }
-            }
-            if (!processed) {
-                if (defaulter != null) {
-                    defaulter.handle(ai);
-                } else {
-                    System.err.println("ERROR: unparsed \""+ai.get()+"\"");
-                    ai.next();
-                }
-            }
-        }
-    }
-}
--- a/src/share/tools/MakeDeps/BuildConfig.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,707 +0,0 @@
-/*
- * Copyright (c) 2005, 2009, 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.util.*;
-import java.io.File;
-
-class BuildConfig {
-    Hashtable vars;
-    Vector basicNames, basicPaths;
-    String[] context;
-
-    static CompilerInterface ci;
-    static CompilerInterface getCI() {
-        if (ci == null) {
-            String comp = (String)getField(null, "CompilerVersion");
-            try {
-                ci = (CompilerInterface)Class.forName("CompilerInterface" + comp).newInstance();
-            } catch (Exception cnfe) {
-                System.err.println("Cannot find support for compiler " + comp);
-                throw new RuntimeException(cnfe.toString());
-            }
-        }
-        return ci;
-    }
-
-    protected void initNames(String flavour, String build, String outDll) {
-        if (vars == null) vars = new Hashtable();
-
-        String flavourBuild =  flavour + "_" + build;
-        put("Name", getCI().makeCfgName(flavourBuild));
-        put("Flavour", flavour);
-        put("Build", build);
-
-        // ones mentioned above were needed to expand format
-        String buildBase = expandFormat(getFieldString(null, "BuildBase"));
-        String jdkDir =  getFieldString(null, "JdkTargetRoot");
-        String sourceBase = getFieldString(null, "SourceBase");
-        String outDir = buildBase;
-
-        put("Id", flavourBuild);
-        put("OutputDir", outDir);
-        put("SourceBase", sourceBase);
-        put("BuildBase", buildBase);
-        put("OutputDll", jdkDir + Util.sep + outDll);
-
-        context = new String [] {flavourBuild, flavour, build, null};
-    }
-
-    protected void init(Vector includes, Vector defines) {
-        initDefaultDefines(defines);
-        initDefaultCompilerFlags(includes);
-        initDefaultLinkerFlags();
-        handleDB((String)getFieldInContext("IncludeDB"));
-    }
-
-
-    protected void initDefaultCompilerFlags(Vector includes) {
-        Vector compilerFlags = new Vector();
-
-        compilerFlags.addAll(getCI().getBaseCompilerFlags(getV("Define"),
-                                                          includes,
-                                                          get("OutputDir")));
-
-        put("CompilerFlags", compilerFlags);
-    }
-
-    protected void initDefaultLinkerFlags() {
-        Vector linkerFlags = new Vector();
-
-        linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll")));
-
-        put("LinkerFlags", linkerFlags);
-    }
-
-    DirectoryTree getSourceTree(String sourceBase, String startAt) {
-        DirectoryTree tree = new DirectoryTree();
-
-        tree.addSubdirToIgnore("Codemgr_wsdata");
-        tree.addSubdirToIgnore("deleted_files");
-        tree.addSubdirToIgnore("SCCS");
-        tree.setVerbose(true);
-        if (startAt != null) {
-            tree.readDirectory(sourceBase + File.separator + startAt);
-        } else {
-            tree.readDirectory(sourceBase);
-        }
-
-        return tree;
-    }
-
-
-    Vector getPreferredPaths(Database currentDB) {
-        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 = currentDB.getMacros(); iter.hasNext(); ) {
-            Macro macro = (Macro) iter.next();
-            if (macro.name.equals("os_family") ||
-                macro.name.equals("arch")) {
-                preferredPaths.add(macro.contents);
-            }
-        }
-        // Also prefer "opto" over "adlc" for adlcVMDeps.hpp
-        preferredPaths.add("opto");
-
-        return preferredPaths;
-    }
-
-
-    void handleDB(String dbFile) {
-        WinGammaPlatform platform = (WinGammaPlatform)getField(null, "PlatformObject");
-        Database db = new Database(platform, platform.defaultGrandIncludeThreshold());
-
-        try {
-            File incls = new File(get("OutputDir")+Util.sep+"incls");
-            FileName oldInclTempl = platform.getInclFileTemplate();
-            FileName oldGITempl = platform.getGIFileTemplate();
-            FileName oldGDTempl = platform.getGDFileTemplate();
-
-            platform.setInclFileTemplate(new FileName(platform, incls.getPath()+Util.sep,
-                                                      "_", "", ".incl", "", ""));
-            platform.setGIFileTemplate(new FileName(platform, incls.getPath()+Util.sep,
-                                                    "",  "_precompiled", ".incl", "", ""));
-
-            incls.mkdirs();
-
-            db.get(getFieldString(null, "Platform"), dbFile);
-            db.compute();
-
-            db.put();
-
-            //platform.setInclFileTemplate(oldInclTempl);
-            //platform.setGIFileTemplate(oldInclTempl);
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new RuntimeException("cannot do db: "+e);
-        }
-
-        putSpecificField("AllFilesHash", computeAllFiles(platform, db));
-    }
-
-
-    void addAll(Iterator i, Hashtable hash,
-                WinGammaPlatform platform, DirectoryTree tree,
-                Vector preferredPaths, Vector filesNotFound, Vector filesDuplicate) {
-        for (; i.hasNext(); ) {
-            String fileName = (String) i.next();
-            if (lookupHashFieldInContext("IgnoreFile", fileName) == null) {
-                String prefixedName = platform.envVarPrefixedFileName(fileName,
-                                                                      0, /* ignored */
-                                                                      tree,
-                                                                      preferredPaths,
-                                                                      filesNotFound,
-                                                                      filesDuplicate);
-                if (prefixedName != null) {
-                    addTo(hash, Util.normalize(prefixedName), fileName);
-                }
-            }
-        }
-    }
-
-    void addTo(Hashtable ht, String key, String value) {
-        ht.put(expandFormat(key), expandFormat(value));
-    }
-
-    Hashtable computeAllFiles(WinGammaPlatform platform, Database db) {
-        Hashtable rv = new Hashtable();
-        DirectoryTree tree = getSourceTree(get("SourceBase"), getFieldString(null, "StartAt"));
-        Vector preferredPaths = getPreferredPaths(db);
-
-        // Hold errors until end
-        Vector filesNotFound = new Vector();
-        Vector filesDuplicate = new Vector();
-
-
-        // find all files
-        Vector dbFiles = new Vector();
-        for (Iterator i=db.getAllFiles().iterator(); i.hasNext(); ) {
-            FileList fl = (FileList) i.next();
-            dbFiles.add(fl.getName());
-        }
-        addAll(dbFiles.iterator(), rv,
-               platform, tree,
-               preferredPaths, filesNotFound, filesDuplicate);
-
-        Vector addFiles = new Vector();
-        collectRelevantVectors(addFiles, "AdditionalFile");
-        addAll(addFiles.iterator(), rv,
-               platform, tree,
-               preferredPaths, filesNotFound, filesDuplicate);
-
-        collectRelevantHashes(rv, "AdditionalGeneratedFile");
-
-        if ((filesNotFound.size() != 0) ||
-            (filesDuplicate.size() != 0)) {
-            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.");
-            if (filesNotFound.size() != 0) {
-                System.err.println("Files not found:");
-                for (Iterator iter = filesNotFound.iterator();
-                     iter.hasNext(); ) {
-                    System.err.println("  " + (String) iter.next());
-                }
-            }
-            if (filesDuplicate.size() != 0) {
-                System.err.println("Duplicate files:");
-                for (Iterator iter = filesDuplicate.iterator();
-                     iter.hasNext(); ) {
-                    System.err.println("  " + (String) iter.next());
-                }
-            }
-            throw new RuntimeException();
-        }
-
-        return rv;
-    }
-
-    void initDefaultDefines(Vector defines) {
-        Vector sysDefines = new Vector();
-        sysDefines.add("WIN32");
-        sysDefines.add("_WINDOWS");
-        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\\\"");
-
-        sysDefines.addAll(defines);
-
-        put("Define", sysDefines);
-    }
-
-    String get(String key) {
-        return (String)vars.get(key);
-    }
-
-    Vector getV(String key) {
-        return (Vector)vars.get(key);
-    }
-
-    Object getO(String key) {
-        return vars.get(key);
-    }
-
-    Hashtable getH(String key) {
-        return (Hashtable)vars.get(key);
-    }
-
-    Object getFieldInContext(String field) {
-        for (int i=0; i<context.length; i++) {
-            Object rv = getField(context[i], field);
-            if (rv != null) {
-                return rv;
-            }
-        }
-        return null;
-    }
-
-    Object lookupHashFieldInContext(String field, String key) {
-        for (int i=0; i<context.length; i++) {
-            Hashtable ht = (Hashtable)getField(context[i], field);
-            if (ht != null) {
-                Object rv = ht.get(key);
-                if (rv != null) {
-                    return rv;
-                }
-            }
-        }
-        return null;
-    }
-
-    void put(String key, String value) {
-        vars.put(key, value);
-    }
-
-    void put(String key, Vector vvalue) {
-        vars.put(key, vvalue);
-    }
-
-    void add(String key, Vector vvalue) {
-        getV(key).addAll(vvalue);
-    }
-
-    String flavour() {
-        return get("Flavour");
-    }
-
-    String build() {
-        return get("Build");
-    }
-
-    Object getSpecificField(String field) {
-        return getField(get("Id"), field);
-    }
-
-    void putSpecificField(String field, Object value) {
-        putField(get("Id"), field, value);
-    }
-
-    void collectRelevantVectors(Vector rv, String field) {
-        for (int i = 0; i < context.length; i++) {
-            Vector v = getFieldVector(context[i], field);
-            if (v != null) {
-                for (Iterator j=v.iterator(); j.hasNext(); ) {
-                    String val = (String)j.next();
-                    rv.add(expandFormat(val));
-                }
-            }
-        }
-    }
-
-    void collectRelevantHashes(Hashtable rv, String field) {
-        for (int i = 0; i < context.length; i++) {
-            Hashtable v = (Hashtable)getField(context[i], field);
-            if (v != null) {
-                for (Enumeration e=v.keys(); e.hasMoreElements(); ) {
-                    String key = (String)e.nextElement();
-                    String val =  (String)v.get(key);
-                    addTo(rv, key, val);
-                }
-            }
-        }
-    }
-
-
-    Vector getDefines() {
-        Vector rv = new Vector();
-        collectRelevantVectors(rv, "Define");
-        return rv;
-    }
-
-    Vector getIncludes() {
-        Vector rv = new Vector();
-
-        // for generated includes
-        rv.add(get("OutputDir"));
-
-        collectRelevantVectors(rv, "AbsoluteInclude");
-
-        Vector ri = new Vector();
-        String sourceBase = getFieldString(null, "SourceBase");
-        collectRelevantVectors(ri, "RelativeInclude");
-        for (Iterator i = ri.iterator(); i.hasNext(); ) {
-            String f = (String)i.next();
-            rv.add(sourceBase + Util.sep + f);
-        }
-
-        return rv;
-    }
-
-    static Hashtable cfgData = new Hashtable();
-    static Hashtable globalData = new Hashtable();
-
-    static boolean appliesToTieredBuild(String cfg) {
-        return (cfg != null &&
-                (cfg.startsWith("compiler1") ||
-                 cfg.startsWith("compiler2")));
-    }
-
-    // Filters out the IncludeDB statement, which is the only command-
-    // line argument we explicitly specialize for the tiered build
-    static boolean appliesToTieredBuild(String cfg, String key) {
-        return (appliesToTieredBuild(cfg) &&
-                (key != null &&
-                 !key.equals("IncludeDB")));
-    }
-
-    static String getTieredBuildCfg(String cfg) {
-        assert appliesToTieredBuild(cfg) : "illegal configuration " + cfg;
-        return "tiered" + cfg.substring(9);
-    }
-
-    static Object getField(String cfg, String field) {
-        if (cfg == null) {
-            return globalData.get(field);
-        }
-
-        Hashtable ht =  (Hashtable)cfgData.get(cfg);
-        return ht == null ? null : ht.get(field);
-    }
-
-    static String getFieldString(String cfg, String field) {
-        return (String)getField(cfg, field);
-    }
-
-    static Vector getFieldVector(String cfg, String field) {
-        return (Vector)getField(cfg, field);
-    }
-
-    static void putField(String cfg, String field, Object value) {
-        putFieldImpl(cfg, field, value);
-        if (appliesToTieredBuild(cfg, field)) {
-            putFieldImpl(getTieredBuildCfg(cfg), field, value);
-        }
-    }
-
-    private static void putFieldImpl(String cfg, String field, Object value) {
-        if (cfg == null) {
-            globalData.put(field, value);
-            return;
-        }
-
-        Hashtable ht = (Hashtable)cfgData.get(cfg);
-        if (ht == null) {
-            ht = new Hashtable();
-            cfgData.put(cfg, ht);
-        }
-
-        ht.put(field, value);
-    }
-
-    static Object getFieldHash(String cfg, String field, String name) {
-        Hashtable ht = (Hashtable)getField(cfg, field);
-
-        return ht == null ? null : ht.get(name);
-    }
-
-    static void putFieldHash(String cfg, String field, String name, Object val) {
-        putFieldHashImpl(cfg, field, name, val);
-        if (appliesToTieredBuild(cfg)) {
-            putFieldHashImpl(getTieredBuildCfg(cfg), field, name, val);
-        }
-    }
-
-    private static void putFieldHashImpl(String cfg, String field, String name, Object val) {
-        Hashtable ht = (Hashtable)getField(cfg, field);
-
-        if (ht == null) {
-            ht = new Hashtable();
-            putFieldImpl(cfg, field, ht);
-        }
-
-        ht.put(name, val);
-    }
-
-    static void addFieldVector(String cfg, String field, String element) {
-        addFieldVectorImpl(cfg, field, element);
-        if (appliesToTieredBuild(cfg)) {
-            addFieldVectorImpl(getTieredBuildCfg(cfg), field, element);
-        }
-    }
-
-    private static void addFieldVectorImpl(String cfg, String field, String element) {
-        Vector v = (Vector)getField(cfg, field);
-
-        if (v == null) {
-            v = new Vector();
-            putFieldImpl(cfg, field, v);
-        }
-
-        v.add(element);
-    }
-
-    String expandFormat(String format) {
-        if (format == null) {
-            return null;
-        }
-
-        if (format.indexOf('%') == -1) {
-            return format;
-        }
-
-        StringBuffer sb = new StringBuffer();
-        int len = format.length();
-        for (int i=0; i<len; i++) {
-            char ch = format.charAt(i);
-            if (ch == '%') {
-                char ch1 = format.charAt(i+1);
-                switch (ch1) {
-                case '%':
-                    sb.append(ch1);
-                    break;
-                case 'b':
-                    sb.append(build());
-                    break;
-                case 'f':
-                    sb.append(flavour());
-                    break;
-                default:
-                    sb.append(ch);
-                    sb.append(ch1);
-                }
-                i++;
-            } else {
-                sb.append(ch);
-            }
-        }
-
-        return sb.toString();
-    }
-}
-
-abstract class GenericDebugConfig extends BuildConfig {
-    abstract String getOptFlag();
-
-    protected void init(Vector includes, Vector defines) {
-        defines.add("_DEBUG");
-        defines.add("ASSERT");
-
-        super.init(includes, defines);
-
-        getV("CompilerFlags").addAll(getCI().getDebugCompilerFlags(getOptFlag()));
-        getV("LinkerFlags").addAll(getCI().getDebugLinkerFlags());
-   }
-}
-
-class C1DebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getNoOptFlag();
-    }
-
-    C1DebugConfig() {
-        initNames("compiler1", "debug", "fastdebug\\jre\\bin\\client\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class C1FastDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getOptFlag();
-    }
-
-    C1FastDebugConfig() {
-        initNames("compiler1", "fastdebug", "fastdebug\\jre\\bin\\client\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class C2DebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getNoOptFlag();
-    }
-
-    C2DebugConfig() {
-        initNames("compiler2", "debug", "fastdebug\\jre\\bin\\server\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class C2FastDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getOptFlag();
-    }
-
-    C2FastDebugConfig() {
-        initNames("compiler2", "fastdebug", "fastdebug\\jre\\bin\\server\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class TieredDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getNoOptFlag();
-    }
-
-    TieredDebugConfig() {
-        initNames("tiered", "debug", "fastdebug\\jre\\bin\\server\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class TieredFastDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getOptFlag();
-    }
-
-    TieredFastDebugConfig() {
-        initNames("tiered", "fastdebug", "fastdebug\\jre\\bin\\server\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-
-abstract class ProductConfig extends BuildConfig {
-    protected void init(Vector includes, Vector defines) {
-        defines.add("NDEBUG");
-        defines.add("PRODUCT");
-
-        super.init(includes, defines);
-
-        getV("CompilerFlags").addAll(getCI().getProductCompilerFlags());
-        getV("LinkerFlags").addAll(getCI().getProductLinkerFlags());
-    }
-}
-
-class C1ProductConfig extends ProductConfig {
-    C1ProductConfig() {
-        initNames("compiler1", "product", "jre\\bin\\client\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class C2ProductConfig extends ProductConfig {
-    C2ProductConfig() {
-        initNames("compiler2", "product", "jre\\bin\\server\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class TieredProductConfig extends ProductConfig {
-    TieredProductConfig() {
-        initNames("tiered", "product", "jre\\bin\\server\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-
-class CoreDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getNoOptFlag();
-    }
-
-    CoreDebugConfig() {
-        initNames("core", "debug", "fastdebug\\jre\\bin\\core\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-
-class CoreFastDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getOptFlag();
-    }
-
-    CoreFastDebugConfig() {
-        initNames("core", "fastdebug", "fastdebug\\jre\\bin\\core\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-
-class CoreProductConfig extends ProductConfig {
-    CoreProductConfig() {
-        initNames("core", "product", "jre\\bin\\core\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-class KernelDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getNoOptFlag();
-    }
-
-    KernelDebugConfig() {
-        initNames("kernel", "debug", "fastdebug\\jre\\bin\\kernel\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-
-class KernelFastDebugConfig extends GenericDebugConfig {
-    String getOptFlag() {
-        return getCI().getOptFlag();
-    }
-
-    KernelFastDebugConfig() {
-        initNames("kernel", "fastdebug", "fastdebug\\jre\\bin\\kernel\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-
-
-class KernelProductConfig extends ProductConfig {
-    KernelProductConfig() {
-        initNames("kernel", "product", "jre\\bin\\kernel\\jvm.dll");
-        init(getIncludes(), getDefines());
-    }
-}
-abstract class CompilerInterface {
-    abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir);
-    abstract Vector getBaseLinkerFlags(String outDir, String outDll);
-    abstract Vector getDebugCompilerFlags(String opt);
-    abstract Vector getDebugLinkerFlags();
-    abstract Vector getProductCompilerFlags();
-    abstract Vector getProductLinkerFlags();
-    abstract String getOptFlag();
-    abstract String getNoOptFlag();
-    abstract String makeCfgName(String flavourBuild);
-
-    void addAttr(Vector receiver, String attr, String value) {
-        receiver.add(attr); receiver.add(value);
-    }
-}
--- a/src/share/tools/MakeDeps/Database.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,552 +0,0 @@
-/*
- * Copyright (c) 1999, 2009, 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 Database {
-  private MacroDefinitions macros;
-  // allFiles is kept in lexicographically sorted order. See get().
-  private FileList allFiles;
-  // files that have implicit dependency on platform files
-  // e.g. os.hpp: os_<os_family>.hpp os_<os_arch>.hpp but only
-  // recorded if the platform file was seen.
-  private FileList platformFiles;
-  private FileList outerFiles;
-  private FileList indivIncludes;
-  private FileList grandInclude; // the results for the grand include file
-  private HashMap<String,String> platformDepFiles;
-  private long threshold;
-  private int nOuterFiles;
-  private boolean missingOk;
-  private Platform plat;
-  /** These allow you to specify files not in the include database
-    which are prepended and appended to the file list, allowing
-    you to have well-known functions at the start and end of the
-    text segment (allows us to find out in a portable fashion
-    whether the current PC is in VM code or not upon a crash) */
-  private String firstFile;
-  private String lastFile;
-
-  public Database(Platform plat, long t) {
-    this.plat = plat;
-    macros          = new MacroDefinitions();
-    allFiles        = new FileList("allFiles", plat);
-    platformFiles   = new FileList("platformFiles", plat);
-    outerFiles      = new FileList("outerFiles", plat);
-    indivIncludes   = new FileList("IndivIncludes", plat);
-    grandInclude    = new FileList(plat.getGIFileTemplate().nameOfList(), plat);
-    platformDepFiles = new HashMap<String,String>();
-
-    threshold = t;
-    nOuterFiles = 0;
-    missingOk = false;
-    firstFile = null;
-    lastFile = null;
-  };
-
-  public FileList getAllFiles() {
-    return allFiles;
-  }
-
-  public Iterator getMacros() {
-    return macros.getMacros();
-  }
-
-  public void canBeMissing() {
-    missingOk = true;
-  }
-
-  public boolean hfileIsInGrandInclude(FileList hfile, FileList cfile) {
-    return ((hfile.getCount() >= threshold) && (cfile.getUseGrandInclude()));
-  }
-
-  /** These allow you to specify files not in the include database
-    which are prepended and appended to the file list, allowing
-    you to have well-known functions at the start and end of the
-    text segment (allows us to find out in a portable fashion
-    whether the current PC is in VM code or not upon a crash) */
-  public void setFirstFile(String fileName) {
-    firstFile = fileName;
-  }
-
-  public void setLastFile(String fileName) {
-    lastFile = fileName;
-  }
-
-  public void get(String platFileName, String dbFileName)
-    throws FileFormatException, IOException, FileNotFoundException {
-      macros.readFrom(platFileName, missingOk);
-
-      BufferedReader reader = null;
-      try {
-        reader = new BufferedReader(new FileReader(dbFileName));
-      } catch (FileNotFoundException e) {
-        if (missingOk) {
-          return;
-        } else {
-          throw(e);
-        }
-      }
-      System.out.println("\treading database: " + dbFileName);
-      String line;
-      int lineNo = 0;
-      do {
-        line = reader.readLine();
-        lineNo++;
-        if (line != null) {
-          StreamTokenizer tokenizer =
-            new StreamTokenizer(new StringReader(line));
-          tokenizer.slashSlashComments(true);
-          tokenizer.wordChars('_', '_');
-          tokenizer.wordChars('<', '>');
-          // NOTE: if we didn't have to do this line by line,
-          // we could trivially recognize C-style comments as
-          // well.
-          // tokenizer.slashStarComments(true);
-          int numTok = 0;
-          int res;
-          String unexpandedIncluder = null;
-          String unexpandedIncludee = null;
-          do {
-            res = tokenizer.nextToken();
-            if (res != StreamTokenizer.TT_EOF) {
-              if (numTok == 0) {
-                unexpandedIncluder = tokenizer.sval;
-              } else if (numTok == 1) {
-                unexpandedIncludee = tokenizer.sval;
-              } else {
-                throw new FileFormatException(
-                    "invalid line: \"" + line +
-                    "\". Error position: line " + lineNo
-                    );
-              }
-              numTok++;
-            }
-          } while (res != StreamTokenizer.TT_EOF);
-
-          if ((numTok != 0) && (numTok != 2)) {
-            throw new FileFormatException(
-                "invalid line: \"" + line +
-                "\". Error position: line " + lineNo
-                );
-          }
-
-          if (numTok == 2) {
-            // Non-empty line
-            String includer = macros.expand(unexpandedIncluder);
-            String includee = macros.expand(unexpandedIncludee);
-
-            if (includee.equals(plat.generatePlatformDependentInclude())) {
-              MacroDefinitions localExpander = macros.copy();
-              MacroDefinitions localExpander2 = macros.copy();
-              localExpander.setAllMacroBodiesTo("pd");
-              localExpander2.setAllMacroBodiesTo("");
-
-              // unexpanded_includer e.g. thread_<os_arch>.hpp
-              // thread_solaris_i486.hpp -> _thread_pd.hpp.incl
-
-              FileName pdName =
-                plat.getInclFileTemplate().copyStem(
-                    localExpander.expand(unexpandedIncluder)
-                    );
-
-              // derive generic name from platform specific name
-              // e.g. os_<arch_os>.hpp => os.hpp. We enforce the
-              // restriction (imperfectly) noted in includeDB_core
-              // that platform specific files will have an underscore
-              // preceding the macro invocation.
-
-              // First expand macro as null string.
-
-              String newIncluder_temp =
-                localExpander2.expand(unexpandedIncluder);
-
-              // Now find "_." and remove the underscore.
-
-              String newIncluder = "";
-
-              int len = newIncluder_temp.length();
-              int count = 0;
-
-              for ( int i = 0; i < len - 1 ; i++ ) {
-                if (newIncluder_temp.charAt(i) == '_' && newIncluder_temp.charAt(i+1) == '.') {
-                  count++;
-                } else {
-                  newIncluder += newIncluder_temp.charAt(i);
-                }
-              }
-              newIncluder += newIncluder_temp.charAt(len-1);
-
-              if (count != 1) {
-                throw new FileFormatException(
-                    "Unexpected filename format for platform dependent file.\nline: \"" + line +
-                    "\".\nError position: line " + lineNo
-                    );
-              }
-
-              FileList p = allFiles.listForFile(includer);
-              p.setPlatformDependentInclude(pdName.dirPreStemSuff());
-
-              // Record the implicit include of this file so that the
-              // dependencies for precompiled headers can mention it.
-              platformDepFiles.put(newIncluder, includer);
-
-              // Add an implicit dependency on platform
-              // specific file for the generic file
-
-              p = platformFiles.listForFile(newIncluder);
-
-              // if this list is empty then this is 1st
-              // occurance of a platform dependent file and
-              // we need a new version of the include file.
-              // Otherwise we just append to the current
-              // file.
-
-              PrintWriter pdFile =
-                new PrintWriter(
-                    new FileWriter(pdName.dirPreStemSuff(),
-                      !p.isEmpty())
-                    );
-              pdFile.println("# include \"" + includer + "\"");
-              pdFile.close();
-
-              // Add the platform specific file to the list
-              // for this generic file.
-
-              FileList q = allFiles.listForFile(includer);
-              p.addIfAbsent(q);
-            } else {
-              FileList p = allFiles.listForFile(includer);
-              if (isOuterFile(includer))
-                outerFiles.addIfAbsent(p);
-
-              if (includee.equals(plat.noGrandInclude())) {
-                p.setUseGrandInclude(false);
-              } else {
-                FileList q = allFiles.listForFile(includee);
-                p.addIfAbsent(q);
-              }
-            }
-          }
-        }
-      } while (line != null);
-      reader.close();
-
-      // Keep allFiles in well-known order so we can easily determine
-      // whether the known files are the same
-      allFiles.sortByName();
-
-      // Add first and last files differently to prevent a mistake
-      // in ordering in the include databases from breaking the
-      // error reporting in the VM.
-      if (firstFile != null) {
-        FileList p = allFiles.listForFile(firstFile);
-        allFiles.setFirstFile(p);
-        outerFiles.setFirstFile(p);
-      }
-
-      if (lastFile != null) {
-        FileList p = allFiles.listForFile(lastFile);
-        allFiles.setLastFile(p);
-        outerFiles.setLastFile(p);
-      }
-    }
-
-  public void compute() {
-    System.out.println("\tcomputing closures\n");
-    // build both indiv and grand results
-    for (Iterator iter = outerFiles.iterator(); iter.hasNext(); ) {
-      indivIncludes.add(((FileList) iter.next()).doCFile());
-      ++nOuterFiles;
-    }
-
-    if (!plat.haveGrandInclude())
-      return; // nothing in grand include
-
-    // count how many times each include is included & add em to grand
-    for (Iterator iter = indivIncludes.iterator(); iter.hasNext(); ) {
-      FileList indivInclude = (FileList) iter.next();
-      if (!indivInclude.getUseGrandInclude()) {
-        continue; // do not bump count if my files cannot be
-        // in grand include
-      }
-      indivInclude.doFiles(grandInclude); // put em on
-      // grand_include list
-      for (Iterator incListIter = indivInclude.iterator();
-          incListIter.hasNext(); ) {
-        ((FileList) incListIter.next()).incrementCount();
-      }
-    }
-  }
-
-  // Not sure this is necessary in Java
-  public void verify() {
-    for (Iterator iter = indivIncludes.iterator(); iter.hasNext(); ) {
-      if (iter.next() == null) {
-        plat.abort();
-      }
-    }
-  }
-
-  public void put() throws IOException {
-    writeIndividualIncludes();
-
-    if (plat.haveGrandInclude())
-      writeGrandInclude();
-
-    writeGrandUnixMakefile();
-  }
-
-  private void writeIndividualIncludes() throws IOException {
-    System.out.println("\twriting individual include files\n");
-
-    for (Iterator iter = indivIncludes.iterator(); iter.hasNext(); ) {
-      FileList list = (FileList) iter.next();
-      System.out.println("\tcreating " + list.getName());
-      list.putInclFile(this);
-    }
-  }
-
-  private void writeGrandInclude() throws IOException {
-    System.out.println("\twriting grand include file\n");
-    PrintWriter inclFile =
-      new PrintWriter(new FileWriter(plat.getGIFileTemplate().dirPreStemSuff()));
-    plat.writeGIPragma(inclFile);
-    for (Iterator iter = grandInclude.iterator(); iter.hasNext(); ) {
-      FileList list = (FileList) iter.next();
-      if (list.getCount() >= threshold) {
-        inclFile.println("# include \"" +
-            plat.getGIFileTemplate().getInvDir() +
-            list.getName() +
-            "\"");
-      }
-    }
-    inclFile.println();
-    inclFile.close();
-  }
-
-  private void writeGrandUnixMakefile() throws IOException {
-    if (!plat.writeDeps())
-      return;
-
-    System.out.println("\twriting dependencies file\n");
-    PrintWriter gd =
-      new PrintWriter(new FileWriter(
-            plat.getGDFileTemplate().dirPreStemSuff())
-          );
-    gd.println("# generated by makeDeps");
-    gd.println();
-
-
-    // HACK ALERT. The compilation of ad_<arch> files is very slow.
-    // We want to start compiling them as early as possible. The compilation
-    // order on unix is dependent on the order we emit files here.
-    // By sorting the output before emitting it, we expect
-    // that ad_<arch> will be compiled early.
-    boolean shouldSortObjFiles = true;
-
-    if (shouldSortObjFiles) {
-      ArrayList sortList = new ArrayList();
-
-      // We need to preserve the ordering of the first and last items
-      // in outerFiles.
-      int size = outerFiles.size() - 1;
-      String firstName = removeSuffixFrom(((FileList)outerFiles.get(0)).getName());
-      String lastName = removeSuffixFrom(((FileList)outerFiles.get(size)).getName());
-
-      for (int i=1; i<size; i++) {
-        FileList anOuterFile = (FileList)outerFiles.get(i);
-        String stemName = removeSuffixFrom(anOuterFile.getName());
-        sortList.add(stemName);
-      }
-      Collections.sort(sortList);
-
-      // write Obj_Files = ...
-      gd.println("Obj_Files = \\");
-      gd.println(firstName + plat.objFileSuffix() + " \\");
-      for (Iterator iter = sortList.iterator(); iter.hasNext(); ) {
-        gd.println(iter.next() + plat.objFileSuffix() + " \\");
-      }
-      gd.println(lastName + plat.objFileSuffix() + " \\");
-      gd.println();
-      gd.println();
-    } else {
-      // write Obj_Files = ...
-      gd.println("Obj_Files = \\");
-      for (Iterator iter = outerFiles.iterator(); iter.hasNext(); ) {
-        FileList anOuterFile = (FileList) iter.next();
-
-        String stemName = removeSuffixFrom(anOuterFile.getName());
-        gd.println(stemName + plat.objFileSuffix() + " \\");
-      }
-      gd.println();
-      gd.println();
-    }
-
-    // write Precompiled_Files = ...
-    gd.println("Precompiled_Files = \\");
-    for (Iterator iter = grandInclude.iterator(); iter.hasNext(); ) {
-      FileList list = (FileList) iter.next();
-      if (list.getCount() >= threshold) {
-        gd.println(list.getName() + " \\");
-        String platformDep = platformDepFiles.get(list.getName());
-        if (platformDep != null) {
-          // make sure changes to the platform dependent file will
-          // cause regeneration of the pch file.
-          gd.println(platformDep + " \\");
-        }
-      }
-    }
-    gd.println();
-    gd.println();
-
-    gd.println("DTraced_Files = \\");
-    for (Iterator iter = outerFiles.iterator(); iter.hasNext(); ) {
-      FileList anOuterFile = (FileList) iter.next();
-
-      if (anOuterFile.hasListForFile("dtrace.hpp")) {
-        String stemName = removeSuffixFrom(anOuterFile.getName());
-        gd.println(stemName + plat.objFileSuffix() + " \\");
-      }
-    }
-    gd.println();
-    gd.println();
-
-    {
-      // write each dependency
-
-      for (Iterator iter = indivIncludes.iterator(); iter.hasNext(); ) {
-
-        FileList anII = (FileList) iter.next();
-
-        String stemName = removeSuffixFrom(anII.getName());
-        String inclFileName =
-          plat.getInclFileTemplate().copyStem(anII.getName()).
-          preStemSuff();
-
-        gd.println(stemName + plat.objFileSuffix() + " " +
-            stemName + plat.asmFileSuffix() + ": \\");
-
-        printDependentOn(gd, anII.getName());
-        // this gets the include file that includes all that
-        // this file needs (first level) since nested includes
-        // are skipped to avoid cycles.
-        printDependentOn(gd, inclFileName);
-
-        if ( plat.haveGrandInclude() ) {
-          printDependentOn(gd,
-              plat.getGIFileTemplate().preStemSuff());
-        }
-
-        for (Iterator iiIter = anII.iterator(); iiIter.hasNext(); ) {
-          FileList hfile = (FileList) iiIter.next();
-          if (!hfileIsInGrandInclude(hfile, anII) ||
-              plat.writeDependenciesOnHFilesFromGI()) {
-                printDependentOn(gd, hfile.getName());
-          }
-          if (platformFiles.hasListForFile(hfile.getName())) {
-            FileList p =
-              platformFiles.listForFile(hfile.getName());;
-            for (Iterator hiIter = p.iterator();
-                hiIter.hasNext(); ) {
-              FileList hi2 = (FileList) hiIter.next();
-              if (!hfileIsInGrandInclude(hi2, p)) {
-                printDependentOn(gd, hi2.getName());
-              }
-            }
-          }
-        }
-
-        if (plat.includeGIDependencies()
-            && anII.getUseGrandInclude()) {
-          gd.println("    $(Precompiled_Files) \\");
-        }
-        gd.println();
-        gd.println();
-      }
-    }
-
-    gd.close();
-  }
-
-  public void putDiffs(Database previous) throws IOException {
-    System.out.println("\tupdating output files\n");
-
-    if (!indivIncludes.compareLists(previous.indivIncludes)
-        || !grandInclude.compareLists(previous.grandInclude)) {
-      System.out.println("The order of .c or .s has changed, or " +
-          "the grand include file has changed.");
-      put();
-      return;
-    }
-
-    Iterator curIter = indivIncludes.iterator();
-    Iterator prevIter = previous.indivIncludes.iterator();
-
-    try {
-      while (curIter.hasNext()) {
-        FileList newCFileList = (FileList) curIter.next();
-        FileList prevCFileList = (FileList) prevIter.next();
-        if (!newCFileList.compareLists(prevCFileList)) {
-          System.out.println("\tupdating " + newCFileList.getName());
-          newCFileList.putInclFile(this);
-        }
-      }
-    }
-    catch (Exception e) {
-      throw new InternalError("assertion failure: cur and prev " +
-          "database lists changed unexpectedly.");
-    }
-
-    writeGrandUnixMakefile();
-  }
-
-  private void printDependentOn(PrintWriter gd, String name) {
-    gd.print(" ");
-    gd.print(plat.dependentPrefix() + name);
-  }
-
-  private boolean isOuterFile(String s) {
-    int len = s.length();
-    String[] suffixes = plat.outerSuffixes();
-    for (int i = 0; i < suffixes.length; i++) {
-      String suffix = suffixes[i];
-      int suffLen = suffix.length();
-      if ((len >= suffLen) &&
-          (plat.fileNameStringEquality(s.substring(len - suffLen),
-                                       suffix))) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private String removeSuffixFrom(String s) {
-    int idx = s.lastIndexOf('.');
-    if (idx <= 0)
-      plat.abort();
-    return s.substring(0, idx);
-  }
-}
--- a/src/share/tools/MakeDeps/DirectoryTree.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,257 +0,0 @@
-/*
- * Copyright (c) 1999, 2007, 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.
- *
- */
-
-/** Encapsulates a notion of a directory tree. Designed to allow fast
-    querying of full paths for unique filenames in the hierarchy. */
-
-import java.io.*;
-import java.util.*;
-
-public class DirectoryTree {
-
-    /** The root of the read directoryTree */
-    private Node rootNode;
-
-    /** Subdirs to ignore; Vector of Strings */
-    private Vector subdirsToIgnore;
-
-    /** This maps file names to Lists of nodes. */
-    private Hashtable nameToNodeListTable;
-
-    /** Output "."'s as directories are read. Defaults to false. */
-    private boolean verbose;
-
-    public DirectoryTree() {
-        subdirsToIgnore = new Vector();
-        verbose = false;
-    }
-
-    /** Takes an absolute path to the root directory of this
-        DirectoryTree. Throws IllegalArgumentException if the given
-        string represents a plain file or nonexistent directory. */
-
-    public DirectoryTree(String baseDirectory) {
-        this();
-        readDirectory(baseDirectory);
-    }
-
-    public void addSubdirToIgnore(String subdir) {
-        subdirsToIgnore.add(subdir);
-    }
-
-    /** Output "."'s to System.out as directories are read. Defaults
-        to false. */
-    public void setVerbose(boolean newValue) {
-        verbose = newValue;
-    }
-
-    public boolean getVerbose() {
-        return verbose;
-    }
-
-    public String getRootNodeName() {
-        return rootNode.getName();
-    }
-
-    /** Takes an absolute path to the root directory of this
-        DirectoryTree. Throws IllegalArgumentException if the given
-        string represents a plain file or nonexistent directory. */
-
-    public void readDirectory(String baseDirectory)
-        throws IllegalArgumentException {
-        File root = new File(baseDirectory);
-        if (!root.isDirectory()) {
-            throw new IllegalArgumentException("baseDirectory \"" +
-                                               baseDirectory +
-                                               "\" does not exist or " +
-                                               "is not a directory");
-        }
-        try {
-            root = root.getCanonicalFile();
-        }
-        catch (IOException e) {
-            throw new RuntimeException(e.toString());
-        }
-        rootNode = new Node(root);
-        readDirectory(rootNode, root);
-    }
-
-    /** Queries the DirectoryTree for a file or directory name. Takes
-        only the name of the file or directory itself (i.e., no parent
-        directory information should be in the passed name). Returns a
-        List of DirectoryTreeNodes specifying the full paths of all of
-        the files or directories of this name in the DirectoryTree.
-        Returns null if the directory tree has not been read from disk
-        yet or if the file was not found in the tree. */
-    public List findFile(String name) {
-        if (rootNode == null) {
-            return null;
-        }
-
-        if (nameToNodeListTable == null) {
-            nameToNodeListTable = new Hashtable();
-            try {
-                buildNameToNodeListTable(rootNode);
-            } catch (IOException e) {
-                e.printStackTrace();
-                return null;
-            }
-        }
-
-        return (List) nameToNodeListTable.get(name);
-    }
-
-    private void buildNameToNodeListTable(Node curNode)
-      throws IOException {
-        String fullName = curNode.getName();
-        String parent = curNode.getParent();
-        String separator = System.getProperty("file.separator");
-
-        if (parent != null) {
-          if (!fullName.startsWith(parent)) {
-            throw new RuntimeException(
-                "Internal error: parent of file name \"" + fullName +
-                "\" does not match file name \"" + parent + "\""
-            );
-          }
-
-          int len = parent.length();
-          if (!parent.endsWith(separator)) {
-            len += separator.length();
-          }
-
-          String fileName = fullName.substring(len);
-
-          if (fileName == null) {
-            throw new RuntimeException(
-                "Internal error: file name was empty"
-            );
-          }
-
-          List nodeList = (List) nameToNodeListTable.get(fileName);
-          if (nodeList == null) {
-            nodeList = new Vector();
-            nameToNodeListTable.put(fileName, nodeList);
-          }
-
-          nodeList.add(curNode);
-        } else {
-          if (curNode != rootNode) {
-            throw new RuntimeException(
-                "Internal error: parent of file + \"" + fullName + "\"" +
-                " was null"
-            );
-          }
-        }
-
-        if (curNode.isDirectory()) {
-          Iterator iter = curNode.getChildren();
-          if (iter != null) {
-            while (iter.hasNext()) {
-              buildNameToNodeListTable((Node) iter.next());
-            }
-          }
-        }
-    }
-
-    /** Reads all of the files in the given directory and adds them as
-        children of the directory tree node. Requires that the passed
-        node represents a directory. */
-
-    private void readDirectory(Node parentNode, File parentDir) {
-        File[] children = parentDir.listFiles();
-        if (children == null)
-            return;
-        if (verbose) {
-            System.out.print(".");
-            System.out.flush();
-        }
-        for (int i = 0; i < children.length; i++) {
-            File child = children[i];
-            children[i] = null;
-            boolean isDir = child.isDirectory();
-            boolean mustSkip = false;
-            if (isDir) {
-                for (Iterator iter = subdirsToIgnore.iterator();
-                     iter.hasNext(); ) {
-                    if (child.getName().equals((String) iter.next())) {
-                        mustSkip = true;
-                        break;
-                    }
-                }
-            }
-            if (!mustSkip) {
-                Node childNode = new Node(child);
-                parentNode.addChild(childNode);
-                if (isDir) {
-                    readDirectory(childNode, child);
-                }
-            }
-        }
-    }
-
-    private class Node implements DirectoryTreeNode {
-        private File file;
-        private Vector children;
-
-        /** file must be a canonical file */
-        Node(File file) {
-            this.file = file;
-            children = new Vector();
-        }
-
-        public boolean isFile() {
-            return file.isFile();
-        }
-
-        public boolean isDirectory() {
-            return file.isDirectory();
-        }
-
-        public String getName() {
-            return file.getPath();
-        }
-
-        public String getParent() {
-            return file.getParent();
-        }
-
-        public void addChild(Node n) {
-            children.add(n);
-        }
-
-        public Iterator getChildren() throws IllegalArgumentException {
-            return children.iterator();
-        }
-
-        public int getNumChildren() throws IllegalArgumentException {
-            return children.size();
-        }
-
-        public DirectoryTreeNode getChild(int i)
-            throws IllegalArgumentException, ArrayIndexOutOfBoundsException {
-            return (DirectoryTreeNode) children.get(i);
-        }
-    }
-}
--- a/src/share/tools/MakeDeps/DirectoryTreeNode.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 1999, 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.util.*;
-
-public interface DirectoryTreeNode {
-    public boolean isFile();
-    public boolean isDirectory();
-    public String getName();
-    public String getParent();
-    public Iterator getChildren() throws IllegalArgumentException;
-    public int getNumChildren() throws IllegalArgumentException;
-    public DirectoryTreeNode getChild(int i)
-        throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
-}
--- a/src/share/tools/MakeDeps/FileFormatException.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 1999, 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 FileFormatException extends Exception {
-    public FileFormatException() {
-        super();
-    }
-
-    public FileFormatException(String s) {
-        super(s);
-    }
-}
--- a/src/share/tools/MakeDeps/FileList.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-/*
- * Copyright (c) 1999, 2000, 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.*;
-
-/** This class implements the java.util.List interface as well as
-    providing functionality specific to keeping track of lists of
-    files. See the documentation for the Database class to see how
-    these are used. Each FileList must only contain other FileLists
-    (although that is not currently enforced in the mutators). */
-
-public class FileList extends Vector {
-    private String name; // (also the file name)
-    private boolean beenHere;
-    private boolean mayBeCycle;
-    private boolean isCycle;
-    /** Put in list because a file can refuse to */
-    private boolean useGrandInclude;
-    private String platformDependentInclude;
-    private int count;
-    private Platform plat;
-
-    public FileList(String n, Platform plat) {
-        super();
-        this.plat = plat;
-        beenHere = mayBeCycle = isCycle = false;
-        platformDependentInclude = null;
-        name = n;
-        count = 0;
-        useGrandInclude = plat.haveGrandInclude();
-    }
-
-    // Change definition of equality from AbstractList so remove() works properly
-    public boolean equals(Object o) {
-      return ((Object) this) == o;
-    }
-
-    // Necessary accessors
-    public String getName() {
-        return name;
-    }
-
-    public void setPlatformDependentInclude(String arg) {
-        platformDependentInclude = arg;
-    }
-
-    public String getPlatformDependentInclude() {
-        return platformDependentInclude;
-    }
-
-    public boolean getUseGrandInclude() {
-        return useGrandInclude;
-    }
-
-    public void setUseGrandInclude(boolean arg) {
-        useGrandInclude = arg;
-    }
-
-    public void incrementCount() {
-        count++;
-    }
-
-    public int getCount() {
-        return count;
-    }
-
-    public FileList listForFile(String fileName) {
-        for (Iterator iter = iterator(); iter.hasNext(); ) {
-            FileList fl = (FileList) iter.next();
-            if (plat.fileNameStringEquality(fl.name, fileName)) {
-                plat.fileNamePortabilityCheck(fl.name, fileName);
-                return fl;
-            }
-        }
-        plat.fileNamePortabilityCheck(fileName);
-        FileList newList = new FileList(fileName, plat);
-        add(newList);
-        return newList;
-    }
-
-    public boolean hasListForFile(String fileName) {
-        for (Iterator iter = iterator(); iter.hasNext(); ) {
-            FileList fl = (FileList) iter.next();
-            if (plat.fileNameStringEquality(fl.name, fileName)) {
-                plat.fileNamePortabilityCheck(fl.name, fileName);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public boolean compareLists(FileList s) {
-        Iterator myIter = iterator();
-        Iterator hisIter = s.iterator();
-
-        while (myIter.hasNext() &&
-               hisIter.hasNext()) {
-            // crude: order dependent
-            FileList myElement = (FileList) myIter.next();
-            FileList hisElement = (FileList) hisIter.next();
-            if (!plat.fileNameStringEquality(myElement.name,
-                                             hisElement.name)) {
-                return false;
-            }
-        }
-
-        if (myIter.hasNext() != hisIter.hasNext()) {
-            // One ended earlier
-            return false;
-        }
-
-        return true;
-    }
-
-    public void addIfAbsent(FileList s) {
-        for (Iterator iter = iterator(); iter.hasNext(); ) {
-            if (iter.next() == s) {
-                return;
-            }
-        }
-        add(s);
-    }
-
-    public void sortByName() {
-        Collections.sort(this, new Comparator() {
-                public int compare(Object o1, Object o2) {
-                    FileList fl1 = (FileList) o1;
-                    FileList fl2 = (FileList) o2;
-                    return fl1.getName().compareTo(fl2.getName());
-                }
-            });
-    }
-
-    public void setFirstFile(FileList s) {
-      // Remove the file list if it's already here
-      remove(s);
-      add(0, s);
-    }
-
-    public void setLastFile(FileList s) {
-      // Remove the file list if it's already here
-      remove(s);
-      add(s);
-    }
-
-    public boolean doFiles(FileList s) {
-        boolean result = true;
-        for (Iterator iter = iterator(); iter.hasNext(); ) {
-            FileList h = (FileList) iter.next();
-            if (h.platformDependentInclude != null) {
-                System.err.println("Error: the source for " +
-                                   h.platformDependentInclude +
-                                   " is " + h.name + ".");
-                System.err.println("\tIt shouldn't be included directly by " +
-                                   name + ".");
-                h.platformDependentInclude = null; // report once per file
-                result = false;
-            }
-            h.doHFile(s);
-        }
-        return result;
-    }
-
-    public void traceCycle(FileList s) {
-        if (isCycle) // already traced
-            return;
-        isCycle = true;
-        System.err.println("\ttracing cycle for " + name);
-        // FIXME: must return status in caller routine
-        // exitCode = 1;
-        for (Iterator iter = iterator(); iter.hasNext(); ) {
-            FileList q = (FileList) iter.next();
-            if (q.mayBeCycle) {
-                if (s == q) {
-                    plat.fatalError("\tend of cycle for " + s.getName());
-                } else {
-                    q.traceCycle(s);
-                }
-            }
-        }
-    }
-
-    public void doHFile(FileList s) {
-        if (beenHere) {
-            if (mayBeCycle) {
-                traceCycle(this);
-            }
-            return;
-        }
-        beenHere = true;
-        mayBeCycle = true;
-        doFiles(s);
-        mayBeCycle = false;
-        s.add(this);
-    }
-
-    public FileList doCFile() {
-        FileList s = new FileList(name, plat);
-        s.useGrandInclude = useGrandInclude; // propagate this
-        doFiles(s);
-        for (Iterator iter = s.iterator(); iter.hasNext(); ) {
-            FileList l = (FileList) iter.next();
-            l.beenHere = false;
-        }
-        return s;
-    }
-
-    /** if .h file is included thresh times, put it in the grand
-        include file */
-    public void putInclFile(Database db)
-        throws IOException {
-        boolean needline = true;
-        FileName inclName = plat.getInclFileTemplate().copyStem(name);
-        PrintWriter inclFile =
-            new PrintWriter(new FileWriter(inclName.dirPreStemSuff()));
-        if (plat.haveGrandInclude() && plat.includeGIInEachIncl()) {
-            inclFile.println("# include \"" +
-                             plat.getGIFileTemplate().dirPreStemAltSuff() +
-                             "\"");
-            needline = false;
-        }
-        for (Iterator iter = iterator(); iter.hasNext(); ) {
-            FileList hfile = (FileList) iter.next();
-            if (!db.hfileIsInGrandInclude(hfile, this)) {
-                inclFile.println("# include \"" +
-                                 plat.getInclFileTemplate().getInvDir() +
-                                 hfile.name +
-                                 "\"");
-                needline = false;
-            }
-        }
-
-        // Solaris C++ in strict mode warns about empty files
-
-        if(needline) {
-            inclFile.println();
-        }
-
-        inclFile.close();
-    }
-}
--- a/src/share/tools/MakeDeps/FileName.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 1999, 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 FileName {
-    private String dir;
-    private String prefix;
-    private String stem;
-    private String suffix;
-    private String inverseDir;
-    private String altSuffix;
-
-    private String dpss;
-    private String psa;
-    private String dpsa;
-    private String pss;
-
-    private Platform plat;
-
-    /** None of the passed strings may be null. */
-
-    public FileName(Platform plat, String dir, String prefix,
-                    String stem, String suffix,
-                    String inverseDir, String altSuffix) {
-        if ((dir == null) ||
-            (prefix == null) ||
-            (stem == null) ||
-            (suffix == null) ||
-            (inverseDir == null) ||
-            (altSuffix == null)) {
-            throw new NullPointerException("All arguments must be non-null");
-        }
-
-        this.plat = plat;
-
-        this.dir = dir;
-        this.prefix = prefix;
-        this.stem = stem;
-        this.suffix = suffix;
-        this.inverseDir = inverseDir;
-        this.altSuffix = altSuffix;
-
-        pss = prefix + stem + suffix;
-        dpss = dir + prefix + stem + suffix;
-        psa = prefix + stem + altSuffix;
-        dpsa = dir + prefix + stem + altSuffix;
-
-        checkLength(plat);
-    }
-
-    public void checkLength(Platform p) {
-        int len;
-        String s;
-        int suffLen = suffix.length();
-        int altSuffLen = altSuffix.length();
-        if (suffLen >= altSuffLen) {
-            len = suffLen;
-            s = suffix;
-        } else {
-            len = altSuffLen;
-            s = altSuffix;
-        }
-        len += prefix.length() + stem.length();
-        int lim = p.fileNameLengthLimit();
-        if (len > lim) {
-            p.fatalError(prefix + stem + s + " is too long: " +
-                         len + " >= " + lim);
-        }
-    }
-
-    public String dirPreStemSuff() {
-        return dpss;
-    }
-
-    public String preStemSuff() {
-        return pss;
-    }
-
-    public String dirPreStemAltSuff() {
-        return dpsa;
-    }
-
-    public String preStemAltSuff() {
-        return psa;
-    }
-
-    public FileName copyStem(String newStem) {
-        return new FileName(plat, dir, prefix, newStem,
-                            suffix, inverseDir, altSuffix);
-    }
-
-    String nameOfList() {
-        return stem;
-    }
-
-    String getInvDir() {
-        return inverseDir;
-    }
-}
--- a/src/share/tools/MakeDeps/Macro.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 1999, 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;
-}
--- a/src/share/tools/MakeDeps/MacroDefinitions.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,256 +0,0 @@
-/*
- * Copyright (c) 1999, 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();
-    }
-
-    private String lookup(String name) throws NoSuchElementException {
-        for (Iterator iter = macros.iterator(); iter.hasNext(); ) {
-            Macro macro = (Macro) iter.next();
-            if (macro.name.equals(name)) {
-                return macro.contents;
-            }
-        }
-        throw new NoSuchElementException(name);
-    }
-
-    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();
-    }
-
-    /** Throws IllegalArgumentException if passed token is illegally
-        formatted */
-    public String expand(String token)
-        throws IllegalArgumentException {
-        // the token may contain one or more <macroName>'s
-
-        String out = "";
-
-        // emacs lingo
-        int mark = 0;
-        int point = 0;
-
-        int len = token.length();
-
-        if (len == 0)
-            return out;
-
-        do {
-            // Scan "point" forward until hitting either the end of
-            // the string or the beginning of a macro
-            if (token.charAt(point) == '<') {
-                // Append (point - mark) to out
-                if ((point - mark) != 0) {
-                    out += token.substring(mark, point);
-                }
-                mark = point + 1;
-                // Scan forward from point for right bracket
-                point++;
-                while ((point < len) &&
-                       (token.charAt(point) != '>')) {
-                    point++;
-                }
-                if (point == len) {
-                    throw new IllegalArgumentException(
-                        "Could not find right angle-bracket in token " + token
-                    );
-                }
-                String name = token.substring(mark, point);
-                if (name == null) {
-                    throw new IllegalArgumentException(
-                        "Empty macro in token " + token
-                    );
-                }
-                try {
-                    String contents = lookup(name);
-                    out += contents;
-                    point++;
-                    mark = point;
-                } catch (NoSuchElementException e) {
-                    throw new IllegalArgumentException(
-                        "Unknown macro " + name + " in token " + token
-                    );
-                }
-            } else {
-                point++;
-            }
-        } while (point != len);
-
-        if (mark != point) {
-            out += token.substring(mark, point);
-        }
-
-        return out;
-    }
-
-    public MacroDefinitions copy() {
-        MacroDefinitions ret = new MacroDefinitions();
-        for (Iterator iter = macros.iterator();
-             iter.hasNext(); ) {
-            Macro orig = (Macro) iter.next();
-            Macro macro = new Macro();
-            macro.name = orig.name;
-            macro.contents = orig.contents;
-            ret.macros.add(macro);
-        }
-        return ret;
-    }
-
-    public void setAllMacroBodiesTo(String s) {
-        for (Iterator iter = macros.iterator();
-             iter.hasNext(); ) {
-            Macro macro = (Macro) iter.next();
-            macro.contents = s;
-        }
-    }
-
-    /** 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();
-    }
-
-    private void error(String text) throws FileFormatException {
-        throw new FileFormatException(
-            "Expected \"macroname = value\", but found: " + text
-        );
-    }
-}
--- a/src/share/tools/MakeDeps/MakeDeps.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) 1999, 2001, 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.
- *
- */
-
-// This program reads an include file database.
-// The database should cover each self .c and .h file,
-//   but not files in /usr/include
-// The database consists of pairs of nonblank words, where the first word is
-//   the filename that needs to include the file named by the second word.
-// For each .c file, this program generates a fooIncludes.h file that
-//  the .c file may include to include all the needed files in the right order.
-// It also generates a foo.dep file to include in the makefile.
-// Finally it detects cycles, and can work with two files, an old and a new one.
-// To incrementally write out only needed files after a small change.
-//
-// Based on a suggestion by Roland Conybeare, algorithm suggested by Craig
-//  Chambers, written by David Ungar, 3/1/89.
-//  Added PREFIX, {DEP/INC}_DIR, smaller dep output  10/92  -Urs
-
-// Add something for precompiled headers
-
-// To handle different platforms, I am introducing a platform file.
-// The platform file contains lines like:
-// os = svr4
-//
-// Then, when processing the includeDB file, a token such as <os>
-// gets replaced by svr4. -- dmu 3/25/97
-
-// Modified to centralize Dependencies to speed up make -- dmu 5/97
-
-public class MakeDeps {
-
-    public static void usage() {
-        System.out.println("usage:");
-        System.out.println("\tmakeDeps platform-name     platform-file     database-file [MakeDeps args] [platform args]");
-        System.out.println("\tmakeDeps diffs platform-name old-platform-file old-database-file new-platform-file new-database-file [MakeDeps args] [platform args]");
-        System.out.println("where platform-name is the name of a platform MakeDeps supports");
-        System.out.println("(currently \"WinGammaPlatform\" or \"UnixPlatform\")");
-        System.out.println("MakeDeps options:");
-        System.out.println("  -firstFile [filename]: Specify the first file in link order (i.e.,");
-        System.out.println("   to have a well-known function at the start of the output file)");
-        System.out.println("  -lastFile [filename]: Specify the last file in link order (i.e.,");
-        System.out.println("   to have a well-known function at the end of the output file)");
-        System.err.println("WinGammaPlatform platform-specific options:");
-        System.err.println("  -sourceBase <path to directory (workspace) " +
-                           "containing source files; no trailing slash>");
-        System.err.println("  -dspFileName <full pathname to which .dsp file " +
-                           "will be written; all parent directories must " +
-                           "already exist>");
-        System.err.println("  -envVar <environment variable to be inserted " +
-                           "into .dsp file, substituting for path given in " +
-                           "-sourceBase. Example: HotSpotWorkSpace>");
-        System.err.println("  -dllLoc <path to directory in which to put " +
-                           "jvm.dll and jvm_g.dll; no trailing slash>");
-        System.err.println("  If any of the above are specified, "+
-                           "they must all be.");
-        System.err.println("  Additional, optional arguments, which can be " +
-                           "specified multiple times:");
-        System.err.println("    -absoluteInclude <string containing absolute " +
-                           "path to include directory>");
-        System.err.println("    -relativeInclude <string containing include " +
-                           "directory relative to -envVar>");
-        System.err.println("    -define <preprocessor flag to be #defined " +
-                           "(note: doesn't yet support " +
-                           "#define (flag) (value))>");
-        System.err.println("    -perFileLine <file> <line>");
-        System.err.println("    -conditionalPerFileLine <file> <line for " +
-                           "release build> <line for debug build>");
-        System.err.println("  (NOTE: To work around a bug in nmake, where " +
-                           "you can't have a '#' character in a quoted " +
-                           "string, all of the lines outputted have \"#\"" +
-                           "prepended)");
-        System.err.println("    -startAt <subdir of sourceBase>");
-        System.err.println("    -ignoreFile <file which won't be able to be " +
-                           "found in the sourceBase because it's generated " +
-                           "later>");
-        System.err.println("    -additionalFile <file not in database but " +
-                           "which should show up in .dsp file, like " +
-                           "includeDB_core>");
-        System.err.println("    -additionalGeneratedFile <environment variable of " +
-                           "generated file's location> <relative path to " +
-                           "directory containing file; no trailing slash> " +
-                           "<name of file generated later in the build process>");
-        System.err.println("    -prelink <build> <desc> <cmds>:");
-        System.err.println(" Generate a set of prelink commands for the given BUILD");
-        System.err.println(" (\"Debug\" or \"Release\"). The prelink description and commands");
-        System.err.println(" are both quoted strings.");
-        System.err.println("    Default includes: \".\"");
-        System.err.println("    Default defines: WIN32, _WINDOWS, \"HOTSPOT_BUILD_USER=$(USERNAME)\"");
-    }
-
-    public static void main(String[] args) {
-        try {
-            if (args.length < 3) {
-                usage();
-                System.exit(1);
-            }
-
-            int argc = 0;
-            boolean diffMode = false;
-            if (args[argc].equals("diffs")) {
-                diffMode = true;
-                ++argc;
-            }
-
-            String platformName = args[argc++];
-            Class platformClass = Class.forName(platformName);
-
-            String plat1 = null;
-            String db1 = null;
-            String plat2 = null;
-            String db2 = null;
-
-            String firstFile = null;
-            String lastFile = null;
-
-            int numOptionalArgs =
-                (diffMode ? (args.length - 6) : (args.length - 3));
-            if (numOptionalArgs < 0) {
-                usage();
-                System.exit(1);
-            }
-
-            plat1 = args[argc++];
-            db1   = args[argc++];
-
-            if (diffMode) {
-              plat2 = args[argc++];
-              db2   = args[argc++];
-            }
-
-            // argc now points at start of optional arguments, if any
-
-            try {
-              boolean gotOne = true;
-              while (gotOne && (argc < args.length - 1)) {
-                gotOne = false;
-                String arg = args[argc];
-                if (arg.equals("-firstFile")) {
-                  firstFile = args[argc + 1];
-                  argc += 2;
-                  gotOne = true;
-                } else if (arg.equals("-lastFile")) {
-                  lastFile = args[argc + 1];
-                  argc += 2;
-                  gotOne = true;
-                }
-              }
-            }
-            catch (Exception e) {
-              e.printStackTrace();
-              usage();
-              System.exit(1);
-            }
-
-            Platform platform = (Platform) platformClass.newInstance();
-            platform.setupFileTemplates();
-            long t = platform.defaultGrandIncludeThreshold();
-
-            String[] platformArgs = null;
-            int numPlatformArgs = args.length - argc;
-            if (numPlatformArgs > 0) {
-                platformArgs = new String[numPlatformArgs];
-                int offset = argc;
-                while (argc < args.length) {
-                  platformArgs[argc - offset] = args[argc];
-                  ++argc;
-                }
-            }
-
-            // If you want to change the threshold, change the default
-            // "grand include" threshold in Platform.java, or override
-            // it in the platform-specific file like UnixPlatform.java
-
-            Database previous = new Database(platform, t);
-            Database current = new Database(platform, t);
-
-            previous.canBeMissing();
-
-            if (firstFile != null) {
-              previous.setFirstFile(firstFile);
-              current.setFirstFile(firstFile);
-            }
-            if (lastFile != null) {
-              previous.setLastFile(lastFile);
-              current.setLastFile(lastFile);
-            }
-
-            if (diffMode) {
-                System.out.println("Old database:");
-                previous.get(plat1, db1);
-                previous.compute();
-                System.out.println("New database:");
-                current.get(plat2, db2);
-                current.compute();
-                System.out.println("Deltas:");
-                current.putDiffs(previous);
-            } else {
-                System.out.println("New database:");
-                current.get(plat1, db1);
-                current.compute();
-                current.put();
-            }
-
-            if (platformArgs != null) {
-                // Allow the platform to write platform-specific files
-                platform.writePlatformSpecificFiles(previous, current,
-                                                    platformArgs);
-            }
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-              System.exit(1);
-        }
-    }
-}
--- a/src/share/tools/MakeDeps/MetroWerksMacPlatform.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 1999, 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.*;
-
-public class MetroWerksMacPlatform extends Platform {
-    public void setupFileTemplates() {
-        inclFileTemplate = new FileName(this,
-            ":incls:", "_", "",                  ".incl", "", ""
-        );
-        giFileTemplate = new FileName(this,
-            "",        "",  "precompiledHeader", ".pch",  "", ""
-        );
-        gdFileTemplate = dummyFileTemplate;
-    }
-
-    private static String[] suffixes = { ".cpp", ".c", ".s" };
-
-    public String[] outerSuffixes() {
-        return suffixes;
-    }
-
-    public boolean includeGIInEachIncl() {
-        return true;
-    }
-
-    public int defaultGrandIncludeThreshold() {
-        return 150;
-    }
-
-    public void writeGIPragma(PrintWriter out) {
-        out.println("#pragma precompile_target \"" +
-                    giFileTemplate.preStemAltSuff() +
-                    "\"");
-        out.println();
-    }
-
-    public String objFileSuffix() {
-        throw new RuntimeException("Unimplemented in original makeDeps");
-    }
-
-    public String asmFileSuffix() {
-        throw new RuntimeException("Unimplemented in original makeDeps");
-    }
-
-    public String dependentPrefix() {
-        throw new RuntimeException("Unimplemented in original makeDeps");
-    }
-}
--- a/src/share/tools/MakeDeps/Platform.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 1999, 2005, 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.
- *
- */
-
-/** Defines what must be specified for each platform. This class must
-    have a no-arg constructor. */
-
-import java.io.*;
-
-public abstract class Platform {
-    /** file name templates capture naming conventions */
-    protected FileName dummyFileTemplate =
-        new FileName(this, "", "", "", "", "", "");
-
-    // The next three must be instantiated in subclasses' constructors
-
-    /** An incl file is produced per .c file and contains all the
-        includes it needs */
-    protected FileName inclFileTemplate;
-
-    /** A GI (grand-include) file has any file used more than N times
-        for precompiled headers */
-    protected FileName giFileTemplate;
-
-    /** A GD (grand-dependencies) file that tells Unix make all the
-        .o's needed for linking and the include dependencies */
-    protected FileName gdFileTemplate;
-
-    // Accessors
-    public FileName getInclFileTemplate() {
-        return inclFileTemplate;
-    }
-
-    public FileName getGIFileTemplate() {
-        return giFileTemplate;
-    }
-
-    public FileName getGDFileTemplate() {
-        return gdFileTemplate;
-    }
-
-    // an incl file is the file included by each.c file that includes
-    // all needed header files
-
-    public abstract void setupFileTemplates();
-    public abstract String[] outerSuffixes();
-
-    /** empty file name -> no grand include file */
-    public boolean haveGrandInclude() {
-        return (giFileTemplate.nameOfList().length() > 0);
-    }
-
-    public boolean writeDeps() {
-        return (gdFileTemplate.nameOfList().length() > 0);
-    }
-
-    /** <p> A gi file is the grand-include file. It includes in one
-        file any file that is included more than a certain number of
-        times. </p>
-
-        <p> It is used for precompiled header files. </p>
-
-        <p> It has a source name, that is the file that this program
-        generates, and a compiled name; that is the file that is
-        included by other files. </p>
-
-        <p> Some platforms have this program actually explictly
-        include the preprocessed gi file-- see includeGIInEachIncl().
-        </p>
-
-        <p> Also, some platforms need a pragma in the GI file. </p> */
-    public boolean includeGIInEachIncl() {
-        return false;
-    }
-
-    /** For some platforms, e.g. Solaris, include the grand-include
-        dependencies in the makefile. For others, e.g. Windows, do
-        not. */
-    public boolean includeGIDependencies() {
-        return false;
-    }
-
-    /** Should C/C++ source file be dependent on a file included
-        into the grand-include file. */
-    public boolean writeDependenciesOnHFilesFromGI() {
-        return false;
-    }
-
-    /** Default implementation does nothing */
-    public void writeGIPragma(PrintWriter out) {
-    }
-
-    /** A line with a filename and the noGrandInclude string means
-        that this file cannot use the precompiled header. */
-    public String noGrandInclude() {
-        return "no_precompiled_headers";
-    }
-
-    /** A line with a filename and the
-        generatePlatformDependentInclude means that an include file
-        for the header file must be generated. This file generated include
-        file is directly included by the non-platform dependent include file
-        (e.g os.hpp includes _os_pd.hpp.incl. So while we notice files that
-        are directly dependent on non-platform dependent files from the database
-        we must infer the dependence on platform specific files to generate correct
-        dependences on the platform specific files. */
-    public String generatePlatformDependentInclude() {
-        return "generate_platform_dependent_include";
-    }
-
-    /** Prefix and suffix strings for emitting Makefile rules */
-    public abstract String objFileSuffix();
-    public abstract String asmFileSuffix();
-    public abstract String dependentPrefix();
-
-    // Exit routines:
-
-    /** Abort means an internal error */
-    public void abort() {
-        throw new RuntimeException("Internal error");
-    }
-
-    /** fatalError is used by clients to stop the system */
-    public void fatalError(String msg) {
-        System.err.println(msg);
-        System.exit(1);
-    }
-
-    /** Default implementation performs case-sensitive comparison */
-    public boolean fileNameStringEquality(String s1, String s2) {
-        return s1.equals(s2);
-    }
-
-    public void fileNamePortabilityCheck(String name) {
-        if (Character.isUpperCase(name.charAt(0))) {
-            fatalError("Error: for the sake of portability we have chosen\n" +
-                       "to avoid files starting with an uppercase letter.\n" +
-                       "Please rename " + name + ".");
-        }
-    }
-
-    public void fileNamePortabilityCheck(String name, String matchingName) {
-        if (!name.equals(matchingName)) {
-            fatalError("Error: file " + name + " also appears as " +
-                       matchingName + ".  Case must be consistent for " +
-                       "portability.");
-        }
-    }
-
-    /** max is 31 on mac, so warn */
-    public int fileNameLengthLimit() {
-        return 45;
-    }
-
-    public int defaultGrandIncludeThreshold() {
-        return 30;
-    }
-
-    /** Not very general, but this is a way to get platform-specific
-        files to be written. Default implementation does nothing. */
-    public void writePlatformSpecificFiles(Database previousDB,
-                                           Database currentDB, String[] args)
-        throws IllegalArgumentException, IOException {
-    }
-}
--- a/src/share/tools/MakeDeps/UnixPlatform.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 1999, 2005, 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 UnixPlatform extends Platform {
-    public void setupFileTemplates() {
-        inclFileTemplate = new FileName(this,
-            "incls/", "_", "",             ".incl", "", ""
-        );
-        giFileTemplate = new FileName(this,
-            "incls/", "",  "_precompiled", ".incl", "", ""
-        );
-        gdFileTemplate = new FileName(this,
-            "",       "",  "Dependencies", "",      "", ""
-        );
-    }
-
-    private static String[] suffixes = { ".cpp", ".c", ".s" };
-
-    public String[] outerSuffixes() {
-        return suffixes;
-    }
-
-    public String objFileSuffix() {
-        return ".o";
-    }
-
-    public String asmFileSuffix() {
-        return ".i";
-    }
-
-    public String dependentPrefix() {
-        return "";
-    }
-
-    /** Do not change this; unless you fix things so precompiled
-        header files get translated into make dependencies. - Ungar */
-    public int defaultGrandIncludeThreshold() {
-       if (System.getProperty("USE_PRECOMPILED_HEADER") != null)
-          return 30;
-       else
-          return 1 << 30;
-    }
-
-    /** For Unix make, include the dependencies for precompiled header
-        files. */
-    public boolean includeGIDependencies() {
-        return false;
-    }
-
-    /** Should C/C++ source file be dependent on a file included
-        into the grand-include file.
-        On Unix with precompiled headers we don't want each file to be
-        dependent on grand-include file. Instead each C/C++ source file
-        is depended on each own set of files, and recompiled only when
-        files from this set are changed. */
-    public boolean writeDependenciesOnHFilesFromGI() {
-        return System.getProperty("USE_PRECOMPILED_HEADER") != null;
-    }
-}
--- a/src/share/tools/MakeDeps/Util.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2005, 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.util.*;
-import java.io.File;
-
-public class Util {
-    static String join(String padder, Vector v) {
-        return join(padder, v, false);
-    }
-
-    static String join(String padder, Vector v, boolean quoted) {
-        StringBuffer sb = new StringBuffer();
-
-        for (Iterator iter = v.iterator(); iter.hasNext(); ) {
-            if (quoted) {
-                sb.append('"');
-            }
-            sb.append((String)iter.next());
-            if (quoted) {
-                sb.append('"');
-            }
-            if (iter.hasNext()) sb.append(padder);
-        }
-
-        return sb.toString();
-    }
-
-     static String join(String padder, String v[]) {
-        StringBuffer sb = new StringBuffer();
-
-        for (int i=0; i<v.length; i++) {
-            sb.append(v[i]);
-            if (i < (v.length  - 1)) sb.append(padder);
-        }
-
-        return sb.toString();
-    }
-
-
-
-    static String prefixed_join(String padder, Vector v, boolean quoted) {
-        StringBuffer sb = new StringBuffer();
-
-        for (Iterator iter = v.iterator(); iter.hasNext(); ) {
-            sb.append(padder);
-
-            if (quoted) {
-                sb.append('"');
-            }
-            sb.append((String)iter.next());
-            if (quoted) {
-                sb.append('"');
-            }
-        }
-
-        return sb.toString();
-    }
-
-
-    static String normalize(String file) {
-        return file.replace('\\', '/');
-    }
-
-    static String sep = File.separator;
-    static String os = "Win32"; //System.getProperty("os.name");
-}
--- a/src/share/tools/MakeDeps/WinGammaPlatform.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,765 +0,0 @@
-/*
- * Copyright (c) 1999, 2007, 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.*;
-
-abstract class HsArgHandler extends ArgHandler {
-    static final int STRING = 1;
-    static final int VECTOR = 2;
-    static final int HASH   = 3;
-
-    boolean nextNotKey(ArgIterator it) {
-        if (it.next()) {
-            String s = it.get();
-            return (s.length() == 0) || (s.charAt(0) != '-');
-        } else {
-            return false;
-        }
-    }
-
-    void empty(String key, String message) {
-        if (key != null) {
-            System.err.println("** Error: empty " + key);
-        }
-        if (message != null) {
-            System.err.println(message);
-        }
-        WinGammaPlatform.usage();
-    }
-
-    static String getCfg(String val) {
-        int under = val.indexOf('_');
-        int len = val.length();
-        if (under != -1 && under < len - 1) {
-            return val.substring(under+1, len);
-        } else {
-            return null;
-        }
-    }
-}
-
-class ArgRuleSpecific extends ArgRule {
-    ArgRuleSpecific(String arg, ArgHandler handler) {
-        super(arg, handler);
-    }
-
-    boolean match(String rulePattern, String arg) {
-        return rulePattern.startsWith(arg);
-    }
-}
-
-
-class SpecificHsArgHandler extends HsArgHandler {
-
-    String message, argKey, valKey;
-    int type;
-
-    public void handle(ArgIterator it) {
-        String cfg = getCfg(it.get());
-        if (nextNotKey(it)) {
-            String val = it.get();
-            switch (type) {
-            case VECTOR:
-                BuildConfig.addFieldVector(cfg, valKey, val);
-                break;
-            case HASH:
-                BuildConfig.putFieldHash(cfg, valKey, val, "1");
-                break;
-            case STRING:
-                BuildConfig.putField(cfg, valKey, val);
-                break;
-            default:
-                empty(valKey, "Unknown type: "+type);
-            }
-            it.next();
-
-        } else {
-            empty(argKey, message);
-        }
-    }
-
-    SpecificHsArgHandler(String argKey, String valKey, String message, int type) {
-        this.argKey = argKey;
-        this.valKey = valKey;
-        this.message = message;
-        this.type = type;
-    }
-}
-
-
-class HsArgRule extends ArgRuleSpecific {
-
-    HsArgRule(String argKey, String valKey, String message, int type) {
-        super(argKey, new SpecificHsArgHandler(argKey, valKey, message, type));
-    }
-
-}
-
-public abstract class WinGammaPlatform extends Platform {
-    public void setupFileTemplates() {
-        inclFileTemplate = new FileName(this,
-            "incls\\", "_", "",                      ".incl", "", ""
-        );
-        giFileTemplate = new FileName(this,
-            "incls\\", "",  "_precompiled", ".incl", "", ""
-        );
-        gdFileTemplate = new FileName(this,
-            "", "",  "Dependencies",         "",      "", ""
-        );
-    }
-
-    private static String[] suffixes = { ".cpp", ".c" };
-
-    public String[] outerSuffixes() {
-        return suffixes;
-    }
-
-    public String objFileSuffix() {
-        return ".obj";
-    }
-
-    public String asmFileSuffix() {
-        return ".i";
-    }
-
-    public String dependentPrefix() {
-        return "$(VM_PATH)";
-    }
-
-    public boolean includeGIInEachIncl() {
-        return false;
-    }
-
-    public boolean fileNameStringEquality(String s1, String s2) {
-        return s1.equalsIgnoreCase(s2);
-    }
-
-    static void usage() throws IllegalArgumentException {
-        System.err.println("WinGammaPlatform platform-specific options:");
-        System.err.println("  -sourceBase <path to directory (workspace) " +
-                           "containing source files; no trailing slash>");
-        System.err.println("  -projectFileName <full pathname to which project file " +
-                           "will be written; all parent directories must " +
-                           "already exist>");
-        System.err.println("  If any of the above are specified, "+
-                           "they must all be.");
-        System.err.println("  Additional, optional arguments, which can be " +
-                           "specified multiple times:");
-        System.err.println("    -absoluteInclude <string containing absolute " +
-                           "path to include directory>");
-        System.err.println("    -relativeInclude <string containing include " +
-                           "directory relative to -sourceBase>");
-        System.err.println("    -define <preprocessor flag to be #defined " +
-                           "(note: doesn't yet support " +
-                           "#define (flag) (value))>");
-        System.err.println("    -startAt <subdir of sourceBase>");
-        System.err.println("    -additionalFile <file not in database but " +
-                           "which should show up in project file, like " +
-                           "includeDB_core>");
-        System.err.println("    -additionalGeneratedFile <absolute path to " +
-                           "directory containing file; no trailing slash> " +
-                           "<name of file generated later in the build process>");
-        throw new IllegalArgumentException();
-    }
-
-
-    public void addPerFileLine(Hashtable table,
-                               String fileName,
-                               String line) {
-        Vector v = (Vector) table.get(fileName);
-        if (v != null) {
-            v.add(line);
-        } else {
-            v = new Vector();
-            v.add(line);
-            table.put(fileName, v);
-        }
-    }
-
-    protected static class PerFileCondData {
-        public String releaseString;
-        public String debugString;
-    }
-
-    protected void addConditionalPerFileLine(Hashtable table,
-                                           String fileName,
-                                           String releaseLine,
-                                           String debugLine) {
-        PerFileCondData data = new PerFileCondData();
-        data.releaseString = releaseLine;
-        data.debugString = debugLine;
-        Vector v = (Vector) table.get(fileName);
-        if (v != null) {
-            v.add(data);
-        } else {
-            v = new Vector();
-            v.add(data);
-            table.put(fileName, v);
-        }
-    }
-
-    protected static class PrelinkCommandData {
-      String description;
-      String commands;
-    }
-
-    protected void addPrelinkCommand(Hashtable table,
-                                     String build,
-                                     String description,
-                                     String commands) {
-      PrelinkCommandData data = new PrelinkCommandData();
-      data.description = description;
-      data.commands = commands;
-      table.put(build, data);
-    }
-
-    public boolean findString(Vector v, String s) {
-        for (Iterator iter = v.iterator(); iter.hasNext(); ) {
-            if (((String) iter.next()).equals(s)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /* This returns a String containing the full path to the passed
-       file name, or null if an error occurred. If the file was not
-       found or was a duplicate and couldn't be resolved using the
-       preferred paths, the file name is added to the appropriate
-       Vector of Strings. */
-    private String findFileInDirectory(String fileName,
-                                       DirectoryTree directory,
-                                       Vector preferredPaths,
-                                       Vector filesNotFound,
-                                       Vector filesDuplicate) {
-        List locationsInTree = directory.findFile(fileName);
-        int  rootNameLength = directory.getRootNodeName().length();
-        String name = null;
-        if ((locationsInTree == null) ||
-            (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:
-            {
-                for (Iterator locIter = locationsInTree.iterator();
-                     locIter.hasNext(); ) {
-                    DirectoryTreeNode node =
-                        (DirectoryTreeNode) locIter.next();
-                    String tmpName = node.getName();
-                    for (Iterator prefIter = preferredPaths.iterator();
-                         prefIter.hasNext(); ) {
-                        // We need to make sure the preferred path is
-                        // found from the file path not including the root node name.
-                        if (tmpName.indexOf((String)prefIter.next(),
-                                            rootNameLength) != -1) {
-                            name = tmpName;
-                            break search;
-                        }
-                    }
-                }
-            }
-
-            if (name == null) {
-                filesDuplicate.add(fileName);
-            }
-        } else {
-            name = ((DirectoryTreeNode) locationsInTree.get(0)).getName();
-        }
-
-        return name;
-    }
-
-    protected boolean databaseAllFilesEqual(Database previousDB,
-                                            Database currentDB) {
-        Iterator i1 = previousDB.getAllFiles().iterator();
-        Iterator i2 = currentDB.getAllFiles().iterator();
-
-        while (i1.hasNext() && i2.hasNext()) {
-            FileList fl1 = (FileList) i1.next();
-            FileList fl2 = (FileList) i2.next();
-            if (!fl1.getName().equals(fl2.getName())) {
-                return false;
-            }
-        }
-
-        if (i1.hasNext() != i2.hasNext()) {
-            // Different lengths
-            return false;
-        }
-
-        return true;
-    }
-
-    protected String envVarPrefixedFileName(String fileName,
-                                            int sourceBaseLen,
-                                            DirectoryTree tree,
-                                            Vector preferredPaths,
-                                            Vector filesNotFound,
-                                            Vector filesDuplicate) {
-        String fullName = findFileInDirectory(fileName,
-                                              tree,
-                                              preferredPaths,
-                                              filesNotFound,
-                                              filesDuplicate);
-        return fullName;
-    }
-
-     String getProjectName(String fullPath, String extension)
-        throws IllegalArgumentException, IOException {
-        File file = new File(fullPath).getCanonicalFile();
-        fullPath = file.getCanonicalPath();
-        String parent = file.getParent();
-
-        if (!fullPath.endsWith(extension)) {
-            throw new IllegalArgumentException("project file name \"" +
-                                               fullPath +
-                                               "\" does not end in "+extension);
-        }
-
-        if ((parent != null) &&
-            (!fullPath.startsWith(parent))) {
-            throw new RuntimeException(
-                "Internal error: parent of file name \"" + parent +
-                "\" does not match file name \"" + fullPath + "\""
-            );
-        }
-
-        int len = parent.length();
-        if (!parent.endsWith(Util.sep)) {
-            len += Util.sep.length();
-        }
-
-        int end = fullPath.length() - extension.length();
-
-        if (len == end) {
-            throw new RuntimeException(
-                "Internal error: file name was empty"
-            );
-        }
-
-        return fullPath.substring(len, end);
-    }
-
-    protected abstract String getProjectExt();
-
-    public void writePlatformSpecificFiles(Database previousDB,
-                                           Database currentDB, String[] args)
-        throws IllegalArgumentException, IOException {
-
-        parseArguments(args);
-
-        String projectFileName = BuildConfig.getFieldString(null, "ProjectFileName");
-        String ext = getProjectExt();
-
-        // Compare contents of allFiles of previousDB and includeDB.
-        // If these haven't changed, then skip writing the .vcproj file.
-        if (false && databaseAllFilesEqual(previousDB, currentDB) &&
-            new File(projectFileName).exists()) {
-            System.out.println(
-                               "    Databases unchanged; skipping overwrite of "+ext+" file."
-                               );
-            return;
-        }
-
-        String projectName = getProjectName(projectFileName, ext);
-
-        writeProjectFile(projectFileName, projectName, createAllConfigs());
-    }
-
-    protected void writePrologue(String[] args) {
-        System.err.println("WinGammaPlatform platform-specific arguments:");
-        for (int i = 0; i < args.length; i++) {
-            System.err.print(args[i] + " ");
-        }
-        System.err.println();
-    }
-
-
-    void setInclFileTemplate(FileName val) {
-        this.inclFileTemplate = val;
-    }
-
-    void setGIFileTemplate(FileName val) {
-        this.giFileTemplate = val;
-    }
-
-
-    void parseArguments(String[] args) {
-        new ArgsParser(args,
-                       new ArgRule[]
-            {
-                new HsArgRule("-sourceBase",
-                              "SourceBase",
-                              "   (Did you set the HotSpotWorkSpace environment variable?)",
-                              HsArgHandler.STRING
-                              ),
-
-                new HsArgRule("-buildBase",
-                              "BuildBase",
-                              "   (Did you set the HotSpotBuildSpace environment variable?)",
-                              HsArgHandler.STRING
-                              ),
-
-                new HsArgRule("-projectFileName",
-                              "ProjectFileName",
-                              null,
-                              HsArgHandler.STRING
-                              ),
-
-                new HsArgRule("-jdkTargetRoot",
-                              "JdkTargetRoot",
-                              "   (Did you set the HotSpotJDKDist environment variable?)",
-                              HsArgHandler.STRING
-                              ),
-
-                new HsArgRule("-compiler",
-                              "CompilerVersion",
-                              "   (Did you set the VcVersion correctly?)",
-                              HsArgHandler.STRING
-                              ),
-
-                new HsArgRule("-platform",
-                              "Platform",
-                              null,
-                              HsArgHandler.STRING
-                              ),
-
-                new HsArgRule("-absoluteInclude",
-                              "AbsoluteInclude",
-                              null,
-                              HsArgHandler.VECTOR
-                              ),
-
-                new HsArgRule("-relativeInclude",
-                              "RelativeInclude",
-                              null,
-                              HsArgHandler.VECTOR
-                              ),
-
-                new HsArgRule("-define",
-                              "Define",
-                              null,
-                              HsArgHandler.VECTOR
-                              ),
-
-                new HsArgRule("-useToGeneratePch",
-                              "UseToGeneratePch",
-                              null,
-                              HsArgHandler.STRING
-                              ),
-
-                new ArgRuleSpecific("-perFileLine",
-                            new HsArgHandler() {
-                                public void handle(ArgIterator it) {
-                                    String cfg = getCfg(it.get());
-                                    if (nextNotKey(it)) {
-                                        String fileName = it.get();
-                                        if (nextNotKey(it)) {
-                                            String line = it.get();
-                                            BuildConfig.putFieldHash(cfg, "PerFileLine", fileName, line);
-                                            it.next();
-                                            return;
-                                        }
-                                    }
-                                    empty(null, "** Error: wrong number of args to -perFileLine");
-                                }
-                            }
-                            ),
-
-                new ArgRuleSpecific("-conditionalPerFileLine",
-                            new HsArgHandler() {
-                                public void handle(ArgIterator it) {
-                                    String cfg = getCfg(it.get());
-                                    if (nextNotKey(it)) {
-                                        String fileName = it.get();
-                                        if (nextNotKey(it)) {
-                                            String productLine = it.get();
-                                            if (nextNotKey(it)) {
-                                                String debugLine = it.get();
-                                                BuildConfig.putFieldHash(cfg+"_debug", "CondPerFileLine",
-                                                                         fileName, debugLine);
-                                                BuildConfig.putFieldHash(cfg+"_product", "CondPerFileLine",
-                                                                         fileName, productLine);
-                                                it.next();
-                                                return;
-                                            }
-                                        }
-                                    }
-
-                                    empty(null, "** Error: wrong number of args to -conditionalPerFileLine");
-                                }
-                            }
-                            ),
-
-                new HsArgRule("-disablePch",
-                              "DisablePch",
-                              null,
-                              HsArgHandler.HASH
-                              ),
-
-                new ArgRule("-startAt",
-                            new HsArgHandler() {
-                                public void handle(ArgIterator it) {
-                                    if (BuildConfig.getField(null, "StartAt") != null) {
-                                        empty(null, "** Error: multiple -startAt");
-                                    }
-                                    if (nextNotKey(it)) {
-                                        BuildConfig.putField(null, "StartAt", it.get());
-                                        it.next();
-                                    } else {
-                                        empty("-startAt", null);
-                                    }
-                                }
-                            }
-                            ),
-
-                new HsArgRule("-ignoreFile",
-                                      "IgnoreFile",
-                                      null,
-                                      HsArgHandler.HASH
-                                      ),
-
-                new HsArgRule("-additionalFile",
-                              "AdditionalFile",
-                              null,
-                              HsArgHandler.VECTOR
-                              ),
-
-                new ArgRuleSpecific("-additionalGeneratedFile",
-                            new HsArgHandler() {
-                                public void handle(ArgIterator it) {
-                                    String cfg = getCfg(it.get());
-                                    if (nextNotKey(it)) {
-                                        String dir = it.get();
-                                        if (nextNotKey(it)) {
-                                            String fileName = it.get();
-                                            // we ignore files that we know are generated, so we coudn't
-                                            // find them in sources
-                                            BuildConfig.putFieldHash(cfg, "IgnoreFile",  fileName, "1");
-                                            BuildConfig.putFieldHash(cfg, "AdditionalGeneratedFile",
-                                                                     Util.normalize(dir + Util.sep + fileName),
-                                                                     fileName);
-                                            it.next();
-                                            return;
-                                        }
-                                    }
-                                    empty(null, "** Error: wrong number of args to -additionalGeneratedFile");
-                                }
-                            }
-                            ),
-
-                new HsArgRule("-includeDB",
-                              "IncludeDB",
-                              null,
-                              HsArgHandler.STRING
-                              ),
-
-                new ArgRule("-prelink",
-                            new HsArgHandler() {
-                                public void handle(ArgIterator it) {
-                                    if (nextNotKey(it)) {
-                                        String build = it.get();
-                                        if (nextNotKey(it)) {
-                                            String description = it.get();
-                                            if (nextNotKey(it)) {
-                                                String command = it.get();
-                                                BuildConfig.putField(null, "PrelinkDescription", description);
-                                                BuildConfig.putField(null, "PrelinkCommand", command);
-                                                it.next();
-                                                return;
-                                            }
-                                        }
-                                    }
-
-                                    empty(null,  "** Error: wrong number of args to -prelink");
-                                }
-                            }
-                            )
-            },
-                                       new ArgHandler() {
-                                           public void handle(ArgIterator it) {
-
-                                               throw new RuntimeException("Arg Parser: unrecognized option "+it.get());
-                                           }
-                                       }
-                                       );
-        if (BuildConfig.getField(null, "SourceBase") == null      ||
-            BuildConfig.getField(null, "BuildBase") == null       ||
-            BuildConfig.getField(null, "ProjectFileName") == null ||
-            BuildConfig.getField(null, "CompilerVersion") == null) {
-            usage();
-        }
-
-        if (BuildConfig.getField(null, "UseToGeneratePch") == null) {
-            throw new RuntimeException("ERROR: need to specify one file to compute PCH, with -useToGeneratePch flag");
-        }
-
-        BuildConfig.putField(null, "PlatformObject", this);
-    }
-
-    Vector createAllConfigs() {
-        Vector allConfigs = new Vector();
-
-        allConfigs.add(new C1DebugConfig());
-
-        boolean b = true;
-        if (b) {
-            allConfigs.add(new C1FastDebugConfig());
-            allConfigs.add(new C1ProductConfig());
-
-            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 CoreDebugConfig());
-            allConfigs.add(new CoreFastDebugConfig());
-            allConfigs.add(new CoreProductConfig());
-
-            allConfigs.add(new KernelDebugConfig());
-            allConfigs.add(new KernelFastDebugConfig());
-            allConfigs.add(new KernelProductConfig());
-        }
-
-        return allConfigs;
-    }
-
-    class FileAttribute {
-        int     numConfigs;
-        Vector  configs;
-        String  shortName;
-        boolean noPch, pchRoot;
-
-        FileAttribute(String shortName, BuildConfig cfg, int numConfigs) {
-            this.shortName = shortName;
-            this.noPch =  (cfg.lookupHashFieldInContext("DisablePch", shortName) != null);
-            this.pchRoot = shortName.equals(BuildConfig.getFieldString(null, "UseToGeneratePch"));
-            this.numConfigs = numConfigs;
-
-            configs = new Vector();
-            add(cfg.get("Name"));
-        }
-
-        void add(String confName) {
-            configs.add(confName);
-
-            // if presented in all configs
-            if (configs.size() == numConfigs) {
-                configs = null;
-            }
-        }
-    }
-
-    class FileInfo implements Comparable {
-        String        full;
-        FileAttribute attr;
-
-        FileInfo(String full, FileAttribute  attr) {
-            this.full = full;
-            this.attr = attr;
-        }
-
-        public int compareTo(Object o) {
-            FileInfo oo = (FileInfo)o;
-            // Don't squelch identical short file names where the full
-            // paths are different
-            if (!attr.shortName.equals(oo.attr.shortName))
-              return attr.shortName.compareTo(oo.attr.shortName);
-            return full.compareTo(oo.full);
-        }
-
-        boolean isHeader() {
-            return attr.shortName.endsWith(".h") || attr.shortName.endsWith(".hpp");
-        }
-    }
-
-
-    TreeSet sortFiles(Hashtable allFiles) {
-        TreeSet rv = new TreeSet();
-        Enumeration e = allFiles.keys();
-        while (e.hasMoreElements()) {
-            String fullPath = (String)e.nextElement();
-            rv.add(new FileInfo(fullPath, (FileAttribute)allFiles.get(fullPath)));
-        }
-        return rv;
-    }
-
-    Hashtable computeAttributedFiles(Vector allConfigs) {
-        Hashtable ht = new Hashtable();
-        int numConfigs = allConfigs.size();
-
-        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
-            BuildConfig bc = (BuildConfig)i.next();
-            Hashtable  confFiles = (Hashtable)bc.getSpecificField("AllFilesHash");
-            String confName = bc.get("Name");
-
-            for (Enumeration e=confFiles.keys(); e.hasMoreElements(); ) {
-                String filePath = (String)e.nextElement();
-                FileAttribute fa = (FileAttribute)ht.get(filePath);
-
-                if (fa == null) {
-                    fa = new FileAttribute((String)confFiles.get(filePath), bc, numConfigs);
-                    ht.put(filePath, fa);
-                } else {
-                    fa.add(confName);
-                }
-            }
-        }
-
-        return ht;
-    }
-
-     Hashtable computeAttributedFiles(BuildConfig bc) {
-        Hashtable ht = new Hashtable();
-        Hashtable confFiles = (Hashtable)bc.getSpecificField("AllFilesHash");
-
-        for (Enumeration e = confFiles.keys(); e.hasMoreElements(); ) {
-            String filePath = (String)e.nextElement();
-            ht.put(filePath,  new FileAttribute((String)confFiles.get(filePath), bc, 1));
-        }
-
-        return ht;
-    }
-
-    PrintWriter printWriter;
-
-    public void writeProjectFile(String projectFileName, String projectName,
-                                 Vector allConfigs) throws IOException {
-        throw new RuntimeException("use compiler version specific version");
-    }
-}
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC6.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-/*
- * Copyright (c) 2005, 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 WinGammaPlatformVC6 extends WinGammaPlatform {
-    public void writeProjectFile(String projectFileName, String projectName,
-                                 Vector allConfigs) throws IOException {
-        Vector allConfigNames = new Vector();
-
-        printWriter = new PrintWriter(new FileWriter(projectFileName));
-        String cfg = ((BuildConfig)allConfigs.get(0)).get("Name");
-
-        printWriter.println("# Microsoft Developer Studio Project File - Name=\"" + projectName + "\" - Package Owner=<4>");
-        printWriter.println("# Microsoft Developer Studio Generated Build File, Format Version 6.00");
-        printWriter.println("# ** DO NOT EDIT **");
-        printWriter.println("");
-        printWriter.println("# TARGTYPE \"Win32 (x86) Dynamic-Link Library\" 0x0102");
-        printWriter.println("CFG=" + cfg);
-        printWriter.println("");
-
-        printWriter.println("!MESSAGE This is not a valid makefile. To build this project using NMAKE,");
-        printWriter.println("!MESSAGE use the Export Makefile command and run");
-        printWriter.println("!MESSAGE ");
-        printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\".");
-        printWriter.println("!MESSAGE ");
-        printWriter.println("!MESSAGE You can specify a configuration when running NMAKE");
-        printWriter.println("!MESSAGE by defining the macro CFG on the command line. For example:");
-        printWriter.println("!MESSAGE ");
-        printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\" CFG=\"" + cfg + "\"");
-        printWriter.println("!MESSAGE ");
-        printWriter.println("!MESSAGE Possible choices for configuration are:");
-        printWriter.println("!MESSAGE ");
-        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
-            String name = ((BuildConfig)i.next()).get("Name");
-            printWriter.println("!MESSAGE \""+ name + "\" (based on \"Win32 (x86) Dynamic-Link Library\")");
-            allConfigNames.add(name);
-        }
-        printWriter.println("!MESSAGE ");
-        printWriter.println("");
-
-        printWriter.println("# Begin Project");
-        printWriter.println("# PROP AllowPerConfigDependencies 0");
-        printWriter.println("# PROP Scc_ProjName \"\"");
-        printWriter.println("# PROP Scc_LocalPath \"\"");
-        printWriter.println("CPP=cl.exe");
-        printWriter.println("MTL=midl.exe");
-        printWriter.println("RSC=rc.exe");
-
-
-        String keyword = "!IF";
-        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
-            BuildConfig bcfg = (BuildConfig)i.next();
-            printWriter.println(keyword + "  \"$(CFG)\" == \"" + bcfg.get("Name") + "\"");
-            writeConfigHeader(bcfg);
-            keyword = "!ELSEIF";
-            if (!i.hasNext()) printWriter.println("!ENDIF");
-        }
-
-
-        TreeSet sortedFiles = sortFiles(computeAttributedFiles(allConfigs));
-
-        printWriter.println("# Begin Target");
-
-        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
-            printWriter.println("# Name \"" + ((BuildConfig)i.next()).get("Name") + "\"");
-        }
-        printWriter.println("# Begin Group \"Header Files\"");
-        printWriter.println("# PROP Default_Filter \"h;hpp;hxx;hm;inl;fi;fd\"");
-
-        Iterator i = sortedFiles.iterator();
-
-        while (i.hasNext()) {
-            FileInfo fi = (FileInfo)i.next();
-
-            // skip sources
-            if (!fi.isHeader()) {
-                continue;
-            }
-
-            printFile(fi, allConfigNames);
-        }
-        printWriter.println("# End Group");
-        printWriter.println("");
-
-        printWriter.println("# Begin Group \"Source Files\"");
-        printWriter.println("# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90\"");
-
-        i = sortedFiles.iterator();
-        while (i.hasNext()) {
-            FileInfo fi = (FileInfo)i.next();
-
-            // skip headers
-            if (fi.isHeader()) {
-                continue;
-            }
-
-            printFile(fi, allConfigNames);
-        }
-        printWriter.println("# End Group");
-        printWriter.println("");
-
-
-        printWriter.println("# Begin Group \"Resource Files\"");
-        printWriter.println("# PROP Default_Filter \"ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe\"");
-        printWriter.println("# End Group");
-        printWriter.println("");
-        printWriter.println("# End Target");
-
-        printWriter.println("# End Project");
-
-        printWriter.close();
-    }
-
-
-    void printFile(FileInfo fi, Vector allConfigNames) {
-        printWriter.println("# Begin Source File");
-        printWriter.println("");
-        printWriter.println("SOURCE=\"" + fi.full + "\"");
-        FileAttribute attr = fi.attr;
-
-        if (attr.noPch) {
-            printWriter.println("# SUBTRACT CPP /YX /Yc /Yu");
-        }
-
-        if (attr.pchRoot) {
-            printWriter.println("# ADD CPP /Yc\"incls/_precompiled.incl\"");
-        }
-        if (attr.configs != null) {
-            String keyword = "!IF";
-            for (Iterator j=allConfigNames.iterator(); j.hasNext();) {
-                String cfg = (String)j.next();
-                if (!attr.configs.contains(cfg)) {
-                    printWriter.println(keyword+" \"$(CFG)\" == \"" + cfg +"\"");
-                    printWriter.println("# PROP BASE Exclude_From_Build 1");
-                    printWriter.println("# PROP Exclude_From_Build 1");
-                    keyword = "!ELSEIF";
-                }
-            }
-            printWriter.println("!ENDIF");
-        }
-
-        printWriter.println("# End Source File");
-    }
-
-    void writeConfigHeader(BuildConfig cfg) {
-        printWriter.println("# Begin Special Build Tool");
-        printWriter.println("SOURCE=\"$(InputPath)\"");
-        printWriter.println("PreLink_Desc=" +  BuildConfig.getFieldString(null, "PrelinkDescription"));
-        printWriter.println("PreLink_Cmds=" +
-                            cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand")));
-        printWriter.println("# End Special Build Tool");
-        printWriter.println("");
-
-        for (Iterator i = cfg.getV("CompilerFlags").iterator(); i.hasNext(); ) {
-            printWriter.println("# "+(String)i.next());
-        }
-
-
-        printWriter.println("LINK32=link.exe");
-
-        for (Iterator i = cfg.getV("LinkerFlags").iterator(); i.hasNext(); ) {
-            printWriter.println("# "+(String)i.next());
-        }
-
-        printWriter.println("ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32");
-        printWriter.println("ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32");
-        printWriter.println("ADD BASE RSC /l 0x409 /d \"_DEBUG\"");
-        printWriter.println("ADD RSC /l 0x409 /d \"_DEBUG\"");
-        printWriter.println("BSC32=bscmake.exe");
-        printWriter.println("ADD BASE BSC32 /nologo");
-        printWriter.println("ADD BSC32 /nologo");
-        printWriter.println("");
-    }
-
-    protected String getProjectExt() {
-        return ".dsp";
-    }
-}
-
-
-class CompilerInterfaceVC6  extends CompilerInterface {
-    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
-        Vector rv = new Vector();
-
-        rv.add("PROP BASE Use_MFC 0");
-        rv.add("PROP Use_MFC 0");
-        rv.add("ADD CPP /nologo /MT /W3 /WX /GX /YX /Fr /FD /c");
-        rv.add("PROP BASE Output_Dir \""+outDir+"\"");
-        rv.add("PROP Output_Dir \""+outDir+"\"");
-        rv.add("PROP BASE Intermediate_Dir \""+outDir+"\"");
-        rv.add("PROP Intermediate_Dir \""+outDir+"\"");
-        rv.add("PROP BASE Target_Dir \"\"");
-        rv.add("PROP Target_Dir \"\"");
-        rv.add("ADD BASE CPP "+Util.prefixed_join(" /I ", includes, true));
-        rv.add("ADD CPP "+Util.prefixed_join(" /I ", includes, true));
-        rv.add("ADD BASE CPP "+Util.prefixed_join(" /D ", defines, true));
-        rv.add("ADD CPP "+Util.prefixed_join(" /D ", defines, true));
-        rv.add("ADD CPP /Yu\"incls/_precompiled.incl\"");
-
-        return rv;
-    }
-
-    Vector getBaseLinkerFlags(String outDir, String outDll) {
-        Vector rv = new Vector();
-
-        rv.add("PROP Ignore_Export_Lib 0");
-        rv.add("ADD BASE CPP /MD");
-        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");
-        rv.add("ADD LINK32      /out:\""+outDll+"\" "+
-               "                /nologo /subsystem:windows /machine:I386" +
-               "                /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 "+
-               "                /export:jio_vsnprintf ");
-        rv.add("SUBTRACT LINK32 /pdb:none /map");
-
-        return rv;
-    }
-
-    Vector getDebugCompilerFlags(String opt) {
-        Vector rv = new Vector();
-
-        rv.add("ADD BASE CPP /Gm /Zi /O"+opt);
-
-        return rv;
-    }
-
-    Vector getDebugLinkerFlags() {
-        Vector rv = new Vector();
-
-        rv.add("PROP BASE Use_Debug_Libraries 1");
-        rv.add("PROP Use_Debug_Libraries 1");
-        rv.add("ADD LINK32 /debug");
-
-        return rv;
-    }
-
-    Vector getProductCompilerFlags() {
-        Vector rv = new Vector();
-
-        rv.add("ADD CPP /O"+getOptFlag());
-
-        return rv;
-    }
-
-    Vector getProductLinkerFlags() {
-        Vector rv = new Vector();
-
-        rv.add("PROP BASE Use_Debug_Libraries 0");
-        rv.add("PROP Use_Debug_Libraries 0");
-
-        return rv;
-    }
-
-    String getOptFlag() {
-        return "2";
-    }
-
-    String getNoOptFlag() {
-        return "d";
-    }
-
-    String makeCfgName(String flavourBuild) {
-        return "vm - "+ Util.os + " " + flavourBuild;
-    }
-}
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC7.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,692 +0,0 @@
-/*
- * Copyright (c) 2005, 2009, 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 WinGammaPlatformVC7 extends WinGammaPlatform {
-
-    String projectVersion() {return "7.10";};
-
-    public void writeProjectFile(String projectFileName, String projectName,
-                                 Vector allConfigs) throws IOException {
-        System.out.println();
-        System.out.println("    Writing .vcproj file...");
-        // If we got this far without an error, we're safe to actually
-        // write the .vcproj file
-        printWriter = new PrintWriter(new FileWriter(projectFileName));
-
-        printWriter.println("<?xml version=\"1.0\" encoding=\"windows-1251\"?>");
-        startTag(
-            "VisualStudioProject",
-            new String[] {
-                "ProjectType", "Visual C++",
-                "Version", projectVersion(),
-                "Name", projectName,
-                "ProjectGUID", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}",
-                "SccProjectName", "",
-                "SccLocalPath", ""
-            }
-            );
-
-        startTag("Platforms", null);
-        tag("Platform", new String[] {"Name", Util.os});
-        endTag("Platforms");
-
-        startTag("Configurations", null);
-
-        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
-            writeConfiguration((BuildConfig)i.next());
-        }
-
-        endTag("Configurations");
-
-        tag("References", null);
-
-        writeFiles(allConfigs);
-
-        tag("Globals", null);
-
-        endTag("VisualStudioProject");
-        printWriter.close();
-
-        System.out.println("    Done.");
-    }
-
-
-    abstract class NameFilter {
-        protected String fname;
-
-        abstract boolean match(FileInfo fi);
-
-        String  filterString() { return ""; }
-        String name() { return this.fname;}
-    }
-
-    class DirectoryFilter extends NameFilter {
-        String dir;
-        int baseLen, dirLen;
-
-        DirectoryFilter(String dir, String sbase) {
-            this.dir = dir;
-            this.baseLen = sbase.length();
-            this.dirLen = dir.length();
-            this.fname = dir;
-        }
-
-        DirectoryFilter(String fname, String dir, String sbase) {
-            this.dir = dir;
-            this.baseLen = sbase.length();
-            this.dirLen = dir.length();
-            this.fname = fname;
-        }
-
-
-        boolean match(FileInfo fi) {
-            return fi.full.regionMatches(true, baseLen, dir, 0, dirLen);
-        }
-    }
-
-    class TypeFilter extends NameFilter {
-        String[] exts;
-
-        TypeFilter(String fname, String[] exts) {
-            this.fname = fname;
-            this.exts = exts;
-        }
-
-        boolean match(FileInfo fi) {
-            for (int i=0; i<exts.length; i++) {
-                if (fi.full.endsWith(exts[i])) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        String  filterString() {
-            return Util.join(";", exts);
-        }
-    }
-
-    class TerminatorFilter extends NameFilter {
-        TerminatorFilter(String fname) {
-            this.fname = fname;
-
-        }
-        boolean match(FileInfo fi) {
-            return true;
-        }
-
-    }
-
-    class SpecificNameFilter extends NameFilter {
-        String pats[];
-
-        SpecificNameFilter(String fname, String[] pats) {
-            this.fname = fname;
-            this.pats = pats;
-        }
-
-        boolean match(FileInfo fi) {
-            for (int i=0; i<pats.length; i++) {
-                if (fi.attr.shortName.matches(pats[i])) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-    }
-
-    class ContainerFilter extends NameFilter {
-        Vector children;
-
-        ContainerFilter(String fname) {
-            this.fname = fname;
-            children = new Vector();
-
-        }
-        boolean match(FileInfo fi) {
-            return false;
-        }
-
-        Iterator babies() { return children.iterator(); }
-
-        void add(NameFilter f) {
-            children.add(f);
-        }
-    }
-
-
-    void writeCustomToolConfig(Vector configs, String[] customToolAttrs) {
-        for (Iterator i = configs.iterator(); i.hasNext(); ) {
-            startTag("FileConfiguration",
-                     new String[] {
-                         "Name",  (String)i.next()
-                     }
-                     );
-            tag("Tool", customToolAttrs);
-
-            endTag("FileConfiguration");
-        }
-    }
-
-    // here we define filters, which define layout of what can be seen in 'Solution View' of MSVC
-    // Basically there are two types of entities - container filters and real filters
-    //   - container filter just provides a container to group together real filters
-    //   - real filter can select elements from the set according to some rule, put it into XML
-    //     and remove from the list
-    Vector makeFilters(TreeSet files) {
-        Vector rv = new Vector();
-        String sbase = Util.normalize(BuildConfig.getFieldString(null, "SourceBase")+"/src/");
-
-        ContainerFilter rt = new ContainerFilter("Runtime");
-        rt.add(new DirectoryFilter("share/vm/prims", sbase));
-        rt.add(new DirectoryFilter("share/vm/runtime", sbase));
-        rt.add(new DirectoryFilter("share/vm/oops", sbase));
-        rv.add(rt);
-
-        ContainerFilter gc = new ContainerFilter("GC");
-        gc.add(new DirectoryFilter("share/vm/memory", sbase));
-        gc.add(new DirectoryFilter("share/vm/gc_interface", sbase));
-
-        ContainerFilter gc_impl = new ContainerFilter("Implementations");
-        gc_impl.add(new DirectoryFilter("CMS",
-                                        "share/vm/gc_implementation/concurrentMarkSweep",
-                                        sbase));
-        gc_impl.add(new DirectoryFilter("Parallel Scavenge",
-                                        "share/vm/gc_implementation/parallelScavenge",
-                                        sbase));
-        gc_impl.add(new DirectoryFilter("Shared",
-                                        "share/vm/gc_implementation/shared",
-                                        sbase));
-        // for all leftovers
-        gc_impl.add(new DirectoryFilter("Misc",
-                                        "share/vm/gc_implementation",
-                                        sbase));
-
-        gc.add(gc_impl);
-        rv.add(gc);
-
-        rv.add(new DirectoryFilter("C1", "share/vm/c1", sbase));
-
-        ContainerFilter c2 = new ContainerFilter("C2");
-        //c2.add(new DirectoryFilter("share/vm/adlc", sbase));
-        c2.add(new DirectoryFilter("share/vm/opto", sbase));
-        c2.add(new SpecificNameFilter("Generated", new String[] {"^ad_.+", "^dfa_.+", "^adGlobals.+"}));
-        rv.add(c2);
-
-        ContainerFilter comp = new ContainerFilter("Compiler Common");
-        comp.add(new DirectoryFilter("share/vm/asm", sbase));
-        comp.add(new DirectoryFilter("share/vm/ci", sbase));
-        comp.add(new DirectoryFilter("share/vm/code", sbase));
-        comp.add(new DirectoryFilter("share/vm/compiler", sbase));
-        rv.add(comp);
-
-        rv.add(new DirectoryFilter("Interpreter",
-                                   "share/vm/interpreter",
-                                   sbase));
-
-        ContainerFilter misc = new ContainerFilter("Misc");
-        //misc.add(new DirectoryFilter("share/vm/launch", sbase));
-        misc.add(new DirectoryFilter("share/vm/libadt", sbase));
-        misc.add(new DirectoryFilter("share/vm/services", sbase));
-        misc.add(new DirectoryFilter("share/vm/utilities", sbase));
-        rv.add(misc);
-
-        rv.add(new DirectoryFilter("os_cpu", sbase));
-
-        rv.add(new DirectoryFilter("cpu", sbase));
-
-        rv.add(new DirectoryFilter("os", sbase));
-
-        rv.add(new SpecificNameFilter("JVMTI Generated", new String[] {"^jvmti.+"}));
-
-        rv.add(new SpecificNameFilter("C++ Interpreter Generated", new String[] {"^bytecodeInterpreterWithChecks.+"}));
-
-        rv.add(new SpecificNameFilter("Include DBs", new String[] {"^includeDB_.+"}));
-
-        // this one is to catch files not caught by other filters
-        //rv.add(new TypeFilter("Header Files", new String[] {"h", "hpp", "hxx", "hm", "inl", "fi", "fd"}));
-        rv.add(new TerminatorFilter("Source Files"));
-
-        return rv;
-    }
-
-    void writeFiles(Vector allConfigs) {
-
-        Hashtable allFiles = computeAttributedFiles(allConfigs);
-
-        Vector allConfigNames = new Vector();
-        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
-            allConfigNames.add(((BuildConfig)i.next()).get("Name"));
-        }
-
-        TreeSet sortedFiles = sortFiles(allFiles);
-
-        startTag("Files", null);
-
-        for (Iterator i = makeFilters(sortedFiles).iterator(); i.hasNext(); ) {
-            doWriteFiles(sortedFiles, allConfigNames, (NameFilter)i.next());
-        }
-
-
-        startTag("Filter",
-                 new String[] {
-                     "Name", "Resource Files",
-                     "Filter", "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-                 }
-                 );
-        endTag("Filter");
-
-        endTag("Files");
-    }
-
-    void doWriteFiles(TreeSet allFiles, Vector allConfigNames, NameFilter filter) {
-        startTag("Filter",
-                 new String[] {
-                     "Name",   filter.name(),
-                     "Filter", filter.filterString()
-                 }
-                 );
-
-        if (filter instanceof ContainerFilter) {
-
-            Iterator i = ((ContainerFilter)filter).babies();
-            while (i.hasNext()) {
-                doWriteFiles(allFiles, allConfigNames, (NameFilter)i.next());
-            }
-
-        } else {
-
-            Iterator i = allFiles.iterator();
-            while (i.hasNext()) {
-                FileInfo fi = (FileInfo)i.next();
-
-                if (!filter.match(fi)) {
-                    continue;
-                }
-
-                startTag("File",
-                         new String[] {
-                             "RelativePath", fi.full.replace('/', '\\')
-                         }
-                         );
-
-                FileAttribute a = fi.attr;
-                if (a.pchRoot) {
-                    writeCustomToolConfig(allConfigNames,
-                                          new String[] {
-                                              "Name", "VCCLCompilerTool",
-                                              "UsePrecompiledHeader", "1"
-                                          });
-                }
-
-                if (a.noPch) {
-                    writeCustomToolConfig(allConfigNames,
-                                          new String[] {
-                                              "Name", "VCCLCompilerTool",
-                                              "UsePrecompiledHeader", "0"
-                                          });
-                }
-
-                if (a.configs != null) {
-                    for (Iterator j=allConfigNames.iterator(); j.hasNext();) {
-                        String cfg = (String)j.next();
-                        if (!a.configs.contains(cfg)) {
-                            startTag("FileConfiguration",
-                                     new String[] {
-                                         "Name", cfg,
-                                         "ExcludedFromBuild", "TRUE"
-                                     });
-                            tag("Tool", new String[] {"Name", "VCCLCompilerTool"});
-                            endTag("FileConfiguration");
-
-                        }
-                    }
-                }
-
-                endTag("File");
-
-                // we not gonna look at this file anymore
-                i.remove();
-            }
-        }
-
-        endTag("Filter");
-    }
-
-
-    void writeConfiguration(BuildConfig cfg) {
-        startTag("Configuration",
-                 new String[] {
-                     "Name", cfg.get("Name"),
-                     "OutputDirectory",  cfg.get("OutputDir"),
-                     "IntermediateDirectory",  cfg.get("OutputDir"),
-                     "ConfigurationType", "2",
-                     "UseOfMFC", "0",
-                     "ATLMinimizesCRunTimeLibraryUsage", "FALSE"
-                 }
-                 );
-
-
-
-        tagV("Tool", cfg.getV("CompilerFlags"));
-
-        tag("Tool",
-            new String[] {
-                "Name", "VCCustomBuildTool"
-            }
-            );
-
-        tagV("Tool", cfg.getV("LinkerFlags"));
-
-        tag("Tool",
-            new String[] {
-                "Name", "VCPostBuildEventTool"
-            }
-            );
-
-        tag("Tool",
-            new String[] {
-                "Name", "VCPreBuildEventTool"
-            }
-            );
-
-        tag("Tool",
-            new String[] {
-                "Name", "VCPreLinkEventTool",
-                "Description", BuildConfig.getFieldString(null, "PrelinkDescription"),
-                //Caution: String.replace(String,String) is available from JDK5 onwards only
-                "CommandLine", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace
-                   ("\t", "&#x0D;&#x0A;"))
-            }
-            );
-
-        tag("Tool",
-            new String[] {
-                "Name", "VCResourceCompilerTool",
-                // XXX???
-                "PreprocessorDefinitions", "NDEBUG",
-                "Culture", "1033"
-            }
-            );
-        tag("Tool",
-            new String[] {
-              "Name", "VCWebServiceProxyGeneratorTool"
-            }
-            );
-
-        tag ("Tool",
-             new String[] {
-              "Name", "VCXMLDataGeneratorTool"
-             }
-             );
-
-        tag("Tool",
-            new String[] {
-              "Name", "VCWebDeploymentTool"
-            }
-            );
-        tag("Tool",
-             new String[] {
-            "Name", "VCManagedWrapperGeneratorTool"
-             }
-            );
-        tag("Tool",
-            new String[] {
-              "Name", "VCAuxiliaryManagedWrapperGeneratorTool"
-            }
-            );
-
-        tag("Tool",
-            new String[] {
-                "Name", "VCMIDLTool",
-                "PreprocessorDefinitions", "NDEBUG",
-                "MkTypLibCompatible", "TRUE",
-                "SuppressStartupBanner", "TRUE",
-                "TargetEnvironment", "1",
-                "TypeLibraryName", cfg.get("OutputDir") + Util.sep + "vm.tlb",
-                "HeaderFileName", ""
-            }
-            );
-
-        endTag("Configuration");
-    }
-
-    int indent;
-
-    private void startTagPrim(String name,
-                              String[] attrs,
-                              boolean close) {
-        doIndent();
-        printWriter.print("<"+name);
-        indent++;
-
-        if (attrs != null) {
-            printWriter.println();
-            for (int i=0; i<attrs.length; i+=2) {
-                doIndent();
-                printWriter.println(" " + attrs[i]+"=\""+attrs[i+1]+"\"");
-            }
-        }
-
-        if (close) {
-            indent--;
-            //doIndent();
-            printWriter.println("/>");
-        } else {
-            //doIndent();
-            printWriter.println(">");
-        }
-    }
-
-    void startTag(String name, String[] attrs) {
-        startTagPrim(name, attrs, false);
-    }
-
-    void startTagV(String name, Vector attrs) {
-        String s[] = new String [attrs.size()];
-         for (int i=0; i<attrs.size(); i++) {
-             s[i] = (String)attrs.elementAt(i);
-         }
-        startTagPrim(name, s, false);
-    }
-
-    void endTag(String name) {
-        indent--;
-        doIndent();
-        printWriter.println("</"+name+">");
-    }
-
-    void tag(String name, String[] attrs) {
-        startTagPrim(name, attrs, true);
-    }
-
-     void tagV(String name, Vector attrs) {
-         String s[] = new String [attrs.size()];
-         for (int i=0; i<attrs.size(); i++) {
-             s[i] = (String)attrs.elementAt(i);
-         }
-         startTagPrim(name, s, true);
-    }
-
-
-    void doIndent() {
-        for (int i=0; i<indent; i++) {
-            printWriter.print("    ");
-        }
-    }
-
-    protected String getProjectExt() {
-        return ".vcproj";
-    }
-}
-
-class CompilerInterfaceVC7 extends CompilerInterface {
-    void getBaseCompilerFlags_common(Vector defines, Vector includes, String outDir,Vector rv) {
-
-        // advanced M$ IDE (2003) can only recognize name if it's first or
-        // second attribute in the tag - go guess
-        addAttr(rv, "Name", "VCCLCompilerTool");
-        addAttr(rv, "AdditionalIncludeDirectories", Util.join(",", includes));
-        addAttr(rv, "PreprocessorDefinitions",
-                                Util.join(";", defines).replace("\"","&quot;"));
-        addAttr(rv, "PrecompiledHeaderThrough",
-                                "incls"+Util.sep+"_precompiled.incl");
-        addAttr(rv, "PrecompiledHeaderFile", outDir+Util.sep+"vm.pch");
-        addAttr(rv, "AssemblerListingLocation", outDir);
-        addAttr(rv, "ObjectFile", outDir+Util.sep);
-        addAttr(rv, "ProgramDataBaseFileName", outDir+Util.sep+"vm.pdb");
-        // Set /nologo optin
-        addAttr(rv, "SuppressStartupBanner", "TRUE");
-        // Surpass the default /Tc or /Tp. 0 is compileAsDefault
-        addAttr(rv, "CompileAs", "0");
-        // Set /W3 option. 3 is warningLevel_3
-        addAttr(rv, "WarningLevel", "3");
-        // Set /WX option,
-        addAttr(rv, "WarnAsError", "TRUE");
-        // Set /GS option
-        addAttr(rv, "BufferSecurityCheck", "FALSE");
-        // Set /Zi option. 3 is debugEnabled
-        addAttr(rv, "DebugInformationFormat", "3");
-    }
-    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
-        Vector rv = new Vector();
-
-        getBaseCompilerFlags_common(defines,includes, outDir, rv);
-        // Set /Yu option. 3 is pchUseUsingSpecific
-        // Note: Starting VC8 pchUseUsingSpecific is 2 !!!
-        addAttr(rv, "UsePrecompiledHeader", "3");
-        // Set /EHsc- option
-        addAttr(rv, "ExceptionHandling", "FALSE");
-
-        return rv;
-    }
-
-    Vector getBaseLinkerFlags(String outDir, String outDll) {
-        Vector rv = new Vector();
-
-        addAttr(rv, "Name", "VCLinkerTool");
-        addAttr(rv, "AdditionalOptions",
-                "/export:JNI_GetDefaultJavaVMInitArgs " +
-                "/export:JNI_CreateJavaVM " +
-                "/export:JNI_GetCreatedJavaVMs "+
-                "/export:jio_snprintf /export:jio_printf "+
-                "/export:jio_fprintf /export:jio_vfprintf "+
-                "/export:jio_vsnprintf ");
-        addAttr(rv, "AdditionalDependencies", "Wsock32.lib winmm.lib");
-        addAttr(rv, "OutputFile", outDll);
-        // Set /INCREMENTAL option. 1 is linkIncrementalNo
-        addAttr(rv, "LinkIncremental", "1");
-        addAttr(rv, "SuppressStartupBanner", "TRUE");
-        addAttr(rv, "ModuleDefinitionFile", outDir+Util.sep+"vm.def");
-        addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"vm.pdb");
-        // Set /SUBSYSTEM option. 2 is subSystemWindows
-        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");
-
-        return rv;
-    }
-
-    void  getDebugCompilerFlags_common(String opt,Vector rv) {
-
-        // Set /On option
-        addAttr(rv, "Optimization", opt);
-        // Set /FR option. 1 is brAllInfo
-        addAttr(rv, "BrowseInformation", "1");
-        addAttr(rv, "BrowseInformationFile", "$(IntDir)" + Util.sep);
-        // Set /MD option. 2 is rtMultiThreadedDLL
-        addAttr(rv, "RuntimeLibrary", "2");
-        // Set /Oy- option
-        addAttr(rv, "OmitFramePointers", "FALSE");
-
-    }
-
-    Vector getDebugCompilerFlags(String opt) {
-        Vector rv = new Vector();
-
-        getDebugCompilerFlags_common(opt,rv);
-
-        return rv;
-    }
-
-    Vector getDebugLinkerFlags() {
-        Vector rv = new Vector();
-
-        addAttr(rv, "GenerateDebugInformation", "TRUE"); // == /DEBUG option
-
-        return rv;
-    }
-
-    void getProductCompilerFlags_common(Vector rv) {
-        // Set /O2 option. 2 is optimizeMaxSpeed
-        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.
-        addAttr(rv, "StringPooling", "TRUE");
-        // Set /MD option. 2 is rtMultiThreadedDLL
-        addAttr(rv, "RuntimeLibrary", "2");
-        // Set /Gy option
-        addAttr(rv, "EnableFunctionLevelLinking", "TRUE");
-
-        return rv;
-    }
-
-    Vector getProductLinkerFlags() {
-        Vector rv = new Vector();
-
-        // Set /OPT:REF option. 2 is optReferences
-        addAttr(rv, "OptimizeReferences", "2");
-        // Set /OPT:optFolding option. 2 is optFolding
-        addAttr(rv, "EnableCOMDATFolding", "2");
-
-        return rv;
-    }
-
-    String getOptFlag() {
-        return "2";
-    }
-
-    String getNoOptFlag() {
-        return "0";
-    }
-
-    String makeCfgName(String flavourBuild) {
-        return  flavourBuild + "|" + Util.os;
-    }
-}
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC8.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2005, 2009, 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 WinGammaPlatformVC8 extends WinGammaPlatformVC7 {
-
-    String projectVersion() {return "8.00";};
-
-}
-
-class CompilerInterfaceVC8 extends CompilerInterfaceVC7 {
-
-    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
-        Vector rv = new Vector();
-
-        getBaseCompilerFlags_common(defines,includes, outDir, rv);
-        // Set /Yu option. 2 is pchUseUsingSpecific
-        addAttr(rv, "UsePrecompiledHeader", "2");
-        // Set /EHsc- option. 0 is cppExceptionHandlingNo
-        addAttr(rv, "ExceptionHandling", "0");
-
-        return rv;
-    }
-
-
-    Vector getDebugCompilerFlags(String opt) {
-        Vector rv = new Vector();
-
-        getDebugCompilerFlags_common(opt,rv);
-
-        return rv;
-    }
-
-    Vector getProductCompilerFlags() {
-        Vector rv = new Vector();
-
-        getProductCompilerFlags_common(rv);
-
-        return rv;
-    }
-
-
-}
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC9.java	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2005, 2009, 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 WinGammaPlatformVC9 extends WinGammaPlatformVC8 {
-
-    String projectVersion() {return "9.00";};
-
-}
-
-class CompilerInterfaceVC9 extends CompilerInterfaceVC8 {
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/ArgsParser.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2005, 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.
+ *
+ */
+
+class ArgIterator {
+    String[] args;
+    int i;
+    ArgIterator(String[] args) {
+        this.args = args;
+        this.i = 0;
+    }
+    String get() { return args[i]; }
+    boolean hasMore() { return args != null && i  < args.length; }
+    boolean next() { return ++i < args.length; }
+}
+
+abstract class ArgHandler {
+    public abstract void handle(ArgIterator it);
+
+}
+
+class ArgRule {
+    String arg;
+    ArgHandler handler;
+    ArgRule(String arg, ArgHandler handler) {
+        this.arg = arg;
+        this.handler = handler;
+    }
+
+    boolean process(ArgIterator it) {
+        if (match(it.get(), arg)) {
+            handler.handle(it);
+            return true;
+        }
+        return false;
+    }
+    boolean match(String rule_pattern, String arg) {
+        return arg.equals(rule_pattern);
+    }
+}
+
+class ArgsParser {
+    ArgsParser(String[] args,
+               ArgRule[] rules,
+               ArgHandler defaulter) {
+        ArgIterator ai = new ArgIterator(args);
+        while (ai.hasMore()) {
+            boolean processed = false;
+            for (int i=0; i<rules.length; i++) {
+                processed |= rules[i].process(ai);
+                if (processed) {
+                    break;
+                }
+            }
+            if (!processed) {
+                if (defaulter != null) {
+                    defaulter.handle(ai);
+                } else {
+                    System.err.println("ERROR: unparsed \""+ai.get()+"\"");
+                    ai.next();
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/BuildConfig.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,716 @@
+/*
+ * Copyright (c) 2005, 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.util.*;
+import java.io.File;
+
+class BuildConfig {
+    Hashtable vars;
+    Vector basicNames, basicPaths;
+    String[] context;
+
+    static CompilerInterface ci;
+    static CompilerInterface getCI() {
+        if (ci == null) {
+            String comp = (String)getField(null, "CompilerVersion");
+            try {
+                ci = (CompilerInterface)Class.forName("CompilerInterface" + comp).newInstance();
+            } catch (Exception cnfe) {
+                System.err.println("Cannot find support for compiler " + comp);
+                throw new RuntimeException(cnfe.toString());
+            }
+        }
+        return ci;
+    }
+
+    protected void initNames(String flavour, String build, String outDll) {
+        if (vars == null) vars = new Hashtable();
+
+        String flavourBuild =  flavour + "_" + build;
+        System.out.println();
+        System.out.println(flavourBuild);
+
+        put("Name", getCI().makeCfgName(flavourBuild));
+        put("Flavour", flavour);
+        put("Build", build);
+
+        // ones mentioned above were needed to expand format
+        String buildBase = expandFormat(getFieldString(null, "BuildBase"));
+        String jdkDir =  getFieldString(null, "JdkTargetRoot");
+        String sourceBase = getFieldString(null, "SourceBase");
+        String outDir = buildBase;
+
+        put("Id", flavourBuild);
+        put("OutputDir", outDir);
+        put("SourceBase", sourceBase);
+        put("BuildBase", buildBase);
+        put("OutputDll", jdkDir + Util.sep + outDll);
+
+        context = new String [] {flavourBuild, flavour, build, null};
+    }
+
+    protected void init(Vector includes, Vector defines) {
+        initDefaultDefines(defines);
+        initDefaultCompilerFlags(includes);
+        initDefaultLinkerFlags();
+        handleDB();
+    }
+
+
+    protected void initDefaultCompilerFlags(Vector includes) {
+        Vector compilerFlags = new Vector();
+
+        compilerFlags.addAll(getCI().getBaseCompilerFlags(getV("Define"),
+                                                          includes,
+                                                          get("OutputDir")));
+
+        put("CompilerFlags", compilerFlags);
+    }
+
+    protected void initDefaultLinkerFlags() {
+        Vector linkerFlags = new Vector();
+
+        linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll")));
+
+        put("LinkerFlags", linkerFlags);
+    }
+
+    DirectoryTree getSourceTree(String sourceBase, String startAt) {
+        DirectoryTree tree = new DirectoryTree();
+
+        tree.addSubdirToIgnore("Codemgr_wsdata");
+        tree.addSubdirToIgnore("deleted_files");
+        tree.addSubdirToIgnore("SCCS");
+        tree.setVerbose(true);
+        if (startAt != null) {
+            tree.readDirectory(sourceBase + File.separator + startAt);
+        } else {
+            tree.readDirectory(sourceBase);
+        }
+
+        return tree;
+    }
+
+
+    Vector getPreferredPaths(MacroDefinitions macros) {
+        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);
+            }
+        }
+        // Also prefer "opto" over "adlc" for adlcVMDeps.hpp
+        preferredPaths.add("opto");
+
+        return preferredPaths;
+    }
+
+
+    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));
+    }
+
+
+    private boolean matchesIgnoredPath(String prefixedName) {
+        Vector rv = new Vector();
+        collectRelevantVectors(rv, "IgnorePath");
+        for (Iterator i = rv.iterator(); i.hasNext(); ) {
+            String pathPart = (String) i.next();
+            if (prefixedName.contains(Util.normalize(pathPart)))  {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    void addAll(Iterator i, Hashtable hash,
+                WinGammaPlatform platform, DirectoryTree tree,
+                Vector preferredPaths, Vector filesNotFound, Vector filesDuplicate) {
+        for (; i.hasNext(); ) {
+            String fileName = (String) i.next();
+            if (lookupHashFieldInContext("IgnoreFile", fileName) == null) {
+                String prefixedName = platform.envVarPrefixedFileName(fileName,
+                                                                      0, /* ignored */
+                                                                      tree,
+                                                                      preferredPaths,
+                                                                      filesNotFound,
+                                                                      filesDuplicate);
+                if (prefixedName != null) {
+                    prefixedName = Util.normalize(prefixedName);
+                    if (!matchesIgnoredPath(prefixedName)) {
+                        addTo(hash, prefixedName, fileName);
+                    }
+                }
+            }
+        }
+    }
+
+    void addTo(Hashtable ht, String key, String value) {
+        ht.put(expandFormat(key), expandFormat(value));
+    }
+
+    Hashtable computeAllFiles(WinGammaPlatform platform, MacroDefinitions macros) {
+        Hashtable rv = new Hashtable();
+        DirectoryTree tree = getSourceTree(get("SourceBase"), getFieldString(null, "StartAt"));
+        Vector preferredPaths = getPreferredPaths(macros);
+
+        // Hold errors until end
+        Vector filesNotFound = new Vector();
+        Vector filesDuplicate = new Vector();
+
+        Vector includedFiles = new Vector();
+
+        // find all files
+        Vector dirs = getSourceIncludes();
+        for (Iterator i = dirs.iterator(); i.hasNext(); ) {
+            String dir = (String)i.next();
+            DirectoryTree subtree = getSourceTree(dir, null);
+            for (Iterator fi = subtree.getFileIterator(); fi.hasNext(); ) {
+                String name = ((File)fi.next()).getName();
+                includedFiles.add(name);
+            }
+        }
+        addAll(includedFiles.iterator(), rv,
+               platform, tree,
+               preferredPaths, filesNotFound, filesDuplicate);
+
+        Vector addFiles = new Vector();
+        collectRelevantVectors(addFiles, "AdditionalFile");
+        addAll(addFiles.iterator(), rv,
+               platform, tree,
+               preferredPaths, filesNotFound, filesDuplicate);
+
+        collectRelevantHashes(rv, "AdditionalGeneratedFile");
+
+        if ((filesNotFound.size() != 0) ||
+            (filesDuplicate.size() != 0)) {
+            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.");
+            if (filesNotFound.size() != 0) {
+                System.err.println("Files not found:");
+                for (Iterator iter = filesNotFound.iterator();
+                     iter.hasNext(); ) {
+                    System.err.println("  " + (String) iter.next());
+                }
+            }
+            if (filesDuplicate.size() != 0) {
+                System.err.println("Duplicate files:");
+                for (Iterator iter = filesDuplicate.iterator();
+                     iter.hasNext(); ) {
+                    System.err.println("  " + (String) iter.next());
+                }
+            }
+            throw new RuntimeException();
+        }
+
+        return rv;
+    }
+
+    void initDefaultDefines(Vector defines) {
+        Vector sysDefines = new Vector();
+        sysDefines.add("WIN32");
+        sysDefines.add("_WINDOWS");
+        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\\\"");
+
+        sysDefines.addAll(defines);
+
+        put("Define", sysDefines);
+    }
+
+    String get(String key) {
+        return (String)vars.get(key);
+    }
+
+    Vector getV(String key) {
+        return (Vector)vars.get(key);
+    }
+
+    Object getO(String key) {
+        return vars.get(key);
+    }
+
+    Hashtable getH(String key) {
+        return (Hashtable)vars.get(key);
+    }
+
+    Object getFieldInContext(String field) {
+        for (int i=0; i<context.length; i++) {
+            Object rv = getField(context[i], field);
+            if (rv != null) {
+                return rv;
+            }
+        }
+        return null;
+    }
+
+    Object lookupHashFieldInContext(String field, String key) {
+        for (int i=0; i<context.length; i++) {
+            Hashtable ht = (Hashtable)getField(context[i], field);
+            if (ht != null) {
+                Object rv = ht.get(key);
+                if (rv != null) {
+                    return rv;
+                }
+            }
+        }
+        return null;
+    }
+
+    void put(String key, String value) {
+        vars.put(key, value);
+    }
+
+    void put(String key, Vector vvalue) {
+        vars.put(key, vvalue);
+    }
+
+    void add(String key, Vector vvalue) {
+        getV(key).addAll(vvalue);
+    }
+
+    String flavour() {
+        return get("Flavour");
+    }
+
+    String build() {
+        return get("Build");
+    }
+
+    Object getSpecificField(String field) {
+        return getField(get("Id"), field);
+    }
+
+    void putSpecificField(String field, Object value) {
+        putField(get("Id"), field, value);
+    }
+
+    void collectRelevantVectors(Vector rv, String field) {
+        for (int i = 0; i < context.length; i++) {
+            Vector v = getFieldVector(context[i], field);
+            if (v != null) {
+                for (Iterator j=v.iterator(); j.hasNext(); ) {
+                    String val = (String)j.next();
+                    rv.add(expandFormat(val));
+                }
+            }
+        }
+    }
+
+    void collectRelevantHashes(Hashtable rv, String field) {
+        for (int i = 0; i < context.length; i++) {
+            Hashtable v = (Hashtable)getField(context[i], field);
+            if (v != null) {
+                for (Enumeration e=v.keys(); e.hasMoreElements(); ) {
+                    String key = (String)e.nextElement();
+                    String val =  (String)v.get(key);
+                    addTo(rv, key, val);
+                }
+            }
+        }
+    }
+
+
+    Vector getDefines() {
+        Vector rv = new Vector();
+        collectRelevantVectors(rv, "Define");
+        return rv;
+    }
+
+    Vector getIncludes() {
+        Vector rv = new Vector();
+
+        collectRelevantVectors(rv, "AbsoluteInclude");
+
+        rv.addAll(getSourceIncludes());
+
+        return rv;
+    }
+
+    private Vector getSourceIncludes() {
+        Vector rv = new Vector();
+        Vector ri = new Vector();
+        String sourceBase = getFieldString(null, "SourceBase");
+        collectRelevantVectors(ri, "RelativeInclude");
+        for (Iterator i = ri.iterator(); i.hasNext(); ) {
+            String f = (String)i.next();
+            rv.add(sourceBase + Util.sep + f);
+        }
+        return rv;
+    }
+
+    static Hashtable cfgData = new Hashtable();
+    static Hashtable globalData = new Hashtable();
+
+    static boolean appliesToTieredBuild(String cfg) {
+        return (cfg != null &&
+                (cfg.startsWith("compiler1") ||
+                 cfg.startsWith("compiler2")));
+    }
+
+    // Filters out the IgnoreFile and IgnorePaths since they are
+    // handled specially for tiered builds.
+    static boolean appliesToTieredBuild(String cfg, String key) {
+        return (appliesToTieredBuild(cfg))&& (key != null && !key.startsWith("Ignore"));
+    }
+
+    static String getTieredBuildCfg(String cfg) {
+        assert appliesToTieredBuild(cfg) : "illegal configuration " + cfg;
+        return "tiered" + cfg.substring(9);
+    }
+
+    static Object getField(String cfg, String field) {
+        if (cfg == null) {
+            return globalData.get(field);
+        }
+
+        Hashtable ht =  (Hashtable)cfgData.get(cfg);
+        return ht == null ? null : ht.get(field);
+    }
+
+    static String getFieldString(String cfg, String field) {
+        return (String)getField(cfg, field);
+    }
+
+    static Vector getFieldVector(String cfg, String field) {
+        return (Vector)getField(cfg, field);
+    }
+
+    static void putField(String cfg, String field, Object value) {
+        putFieldImpl(cfg, field, value);
+        if (appliesToTieredBuild(cfg, field)) {
+            putFieldImpl(getTieredBuildCfg(cfg), field, value);
+        }
+    }
+
+    private static void putFieldImpl(String cfg, String field, Object value) {
+        if (cfg == null) {
+            globalData.put(field, value);
+            return;
+        }
+
+        Hashtable ht = (Hashtable)cfgData.get(cfg);
+        if (ht == null) {
+            ht = new Hashtable();
+            cfgData.put(cfg, ht);
+        }
+
+        ht.put(field, value);
+    }
+
+    static Object getFieldHash(String cfg, String field, String name) {
+        Hashtable ht = (Hashtable)getField(cfg, field);
+
+        return ht == null ? null : ht.get(name);
+    }
+
+    static void putFieldHash(String cfg, String field, String name, Object val) {
+        putFieldHashImpl(cfg, field, name, val);
+        if (appliesToTieredBuild(cfg, field)) {
+            putFieldHashImpl(getTieredBuildCfg(cfg), field, name, val);
+        }
+    }
+
+    private static void putFieldHashImpl(String cfg, String field, String name, Object val) {
+        Hashtable ht = (Hashtable)getField(cfg, field);
+
+        if (ht == null) {
+            ht = new Hashtable();
+            putFieldImpl(cfg, field, ht);
+        }
+
+        ht.put(name, val);
+    }
+
+    static void addFieldVector(String cfg, String field, String element) {
+        addFieldVectorImpl(cfg, field, element);
+        if (appliesToTieredBuild(cfg, field)) {
+            addFieldVectorImpl(getTieredBuildCfg(cfg), field, element);
+        }
+    }
+
+    private static void addFieldVectorImpl(String cfg, String field, String element) {
+        Vector v = (Vector)getField(cfg, field);
+
+        if (v == null) {
+            v = new Vector();
+            putFieldImpl(cfg, field, v);
+        }
+
+        v.add(element);
+    }
+
+    String expandFormat(String format) {
+        if (format == null) {
+            return null;
+        }
+
+        if (format.indexOf('%') == -1) {
+            return format;
+        }
+
+        StringBuffer sb = new StringBuffer();
+        int len = format.length();
+        for (int i=0; i<len; i++) {
+            char ch = format.charAt(i);
+            if (ch == '%') {
+                char ch1 = format.charAt(i+1);
+                switch (ch1) {
+                case '%':
+                    sb.append(ch1);
+                    break;
+                case 'b':
+                    sb.append(build());
+                    break;
+                case 'f':
+                    sb.append(flavour());
+                    break;
+                default:
+                    sb.append(ch);
+                    sb.append(ch1);
+                }
+                i++;
+            } else {
+                sb.append(ch);
+            }
+        }
+
+        return sb.toString();
+    }
+}
+
+abstract class GenericDebugConfig extends BuildConfig {
+    abstract String getOptFlag();
+
+    protected void init(Vector includes, Vector defines) {
+        defines.add("_DEBUG");
+        defines.add("ASSERT");
+
+        super.init(includes, defines);
+
+        getV("CompilerFlags").addAll(getCI().getDebugCompilerFlags(getOptFlag()));
+        getV("LinkerFlags").addAll(getCI().getDebugLinkerFlags());
+   }
+}
+
+class C1DebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getNoOptFlag();
+    }
+
+    C1DebugConfig() {
+        initNames("compiler1", "debug", "fastdebug\\jre\\bin\\client\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class C1FastDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getOptFlag();
+    }
+
+    C1FastDebugConfig() {
+        initNames("compiler1", "fastdebug", "fastdebug\\jre\\bin\\client\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class C2DebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getNoOptFlag();
+    }
+
+    C2DebugConfig() {
+        initNames("compiler2", "debug", "fastdebug\\jre\\bin\\server\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class C2FastDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getOptFlag();
+    }
+
+    C2FastDebugConfig() {
+        initNames("compiler2", "fastdebug", "fastdebug\\jre\\bin\\server\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class TieredDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getNoOptFlag();
+    }
+
+    TieredDebugConfig() {
+        initNames("tiered", "debug", "fastdebug\\jre\\bin\\server\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class TieredFastDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getOptFlag();
+    }
+
+    TieredFastDebugConfig() {
+        initNames("tiered", "fastdebug", "fastdebug\\jre\\bin\\server\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+
+abstract class ProductConfig extends BuildConfig {
+    protected void init(Vector includes, Vector defines) {
+        defines.add("NDEBUG");
+        defines.add("PRODUCT");
+
+        super.init(includes, defines);
+
+        getV("CompilerFlags").addAll(getCI().getProductCompilerFlags());
+        getV("LinkerFlags").addAll(getCI().getProductLinkerFlags());
+    }
+}
+
+class C1ProductConfig extends ProductConfig {
+    C1ProductConfig() {
+        initNames("compiler1", "product", "jre\\bin\\client\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class C2ProductConfig extends ProductConfig {
+    C2ProductConfig() {
+        initNames("compiler2", "product", "jre\\bin\\server\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class TieredProductConfig extends ProductConfig {
+    TieredProductConfig() {
+        initNames("tiered", "product", "jre\\bin\\server\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+
+class CoreDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getNoOptFlag();
+    }
+
+    CoreDebugConfig() {
+        initNames("core", "debug", "fastdebug\\jre\\bin\\core\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+
+class CoreFastDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getOptFlag();
+    }
+
+    CoreFastDebugConfig() {
+        initNames("core", "fastdebug", "fastdebug\\jre\\bin\\core\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+
+class CoreProductConfig extends ProductConfig {
+    CoreProductConfig() {
+        initNames("core", "product", "jre\\bin\\core\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+class KernelDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getNoOptFlag();
+    }
+
+    KernelDebugConfig() {
+        initNames("kernel", "debug", "fastdebug\\jre\\bin\\kernel\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+
+class KernelFastDebugConfig extends GenericDebugConfig {
+    String getOptFlag() {
+        return getCI().getOptFlag();
+    }
+
+    KernelFastDebugConfig() {
+        initNames("kernel", "fastdebug", "fastdebug\\jre\\bin\\kernel\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+
+
+class KernelProductConfig extends ProductConfig {
+    KernelProductConfig() {
+        initNames("kernel", "product", "jre\\bin\\kernel\\jvm.dll");
+        init(getIncludes(), getDefines());
+    }
+}
+abstract class CompilerInterface {
+    abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir);
+    abstract Vector getBaseLinkerFlags(String outDir, String outDll);
+    abstract Vector getDebugCompilerFlags(String opt);
+    abstract Vector getDebugLinkerFlags();
+    abstract Vector getProductCompilerFlags();
+    abstract Vector getProductLinkerFlags();
+    abstract String getOptFlag();
+    abstract String getNoOptFlag();
+    abstract String makeCfgName(String flavourBuild);
+
+    void addAttr(Vector receiver, String attr, String value) {
+        receiver.add(attr); receiver.add(value);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/DirectoryTree.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,287 @@
+/*
+ * 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.
+ *
+ */
+
+/** Encapsulates a notion of a directory tree. Designed to allow fast
+    querying of full paths for unique filenames in the hierarchy. */
+
+import java.io.*;
+import java.util.*;
+
+public class DirectoryTree {
+
+    /** The root of the read directoryTree */
+    private Node rootNode;
+
+    /** Subdirs to ignore; Vector of Strings */
+    private Vector subdirsToIgnore;
+
+    /** This maps file names to Lists of nodes. */
+    private Hashtable nameToNodeListTable;
+
+    /** Output "."'s as directories are read. Defaults to false. */
+    private boolean verbose;
+
+    public DirectoryTree() {
+        subdirsToIgnore = new Vector();
+        verbose = false;
+    }
+
+    public void addSubdirToIgnore(String subdir) {
+        subdirsToIgnore.add(subdir);
+    }
+
+    private class FileIterator implements Iterator {
+        private Vector nodes = new Vector();
+
+        public FileIterator(Node rootNode) {
+            nodes.add(rootNode);
+            prune();
+        }
+        public boolean hasNext() {
+            return nodes.size() > 0;
+        }
+        public Object next() {
+            Node last = (Node)nodes.remove(nodes.size() - 1);
+            prune();
+            return new File(last.getName());
+        }
+
+        public void remove() {
+            throw new RuntimeException();
+        }
+
+        private void prune() {
+            while (nodes.size() > 0) {
+                Node last = (Node)nodes.get(nodes.size() - 1);
+
+                if (last.isDirectory()) {
+                    nodes.remove(nodes.size() - 1);
+                    nodes.addAll(last.children);
+                } else {
+                    // Is at file
+                    return;
+                }
+            }
+        }
+    }
+
+    public Iterator getFileIterator() {
+        return new FileIterator(rootNode);
+    }
+
+    /** Output "."'s to System.out as directories are read. Defaults
+        to false. */
+    public void setVerbose(boolean newValue) {
+        verbose = newValue;
+    }
+
+    public boolean getVerbose() {
+        return verbose;
+    }
+
+    public String getRootNodeName() {
+        return rootNode.getName();
+    }
+
+    /** Takes an absolute path to the root directory of this
+        DirectoryTree. Throws IllegalArgumentException if the given
+        string represents a plain file or nonexistent directory. */
+
+    public void readDirectory(String baseDirectory)
+        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");
+        }
+        try {
+            root = root.getCanonicalFile();
+        }
+        catch (IOException e) {
+            throw new RuntimeException(e.toString());
+        }
+        rootNode = new Node(root);
+        readDirectory(rootNode, root);
+    }
+
+    /** Queries the DirectoryTree for a file or directory name. Takes
+        only the name of the file or directory itself (i.e., no parent
+        directory information should be in the passed name). Returns a
+        List of DirectoryTreeNodes specifying the full paths of all of
+        the files or directories of this name in the DirectoryTree.
+        Returns null if the directory tree has not been read from disk
+        yet or if the file was not found in the tree. */
+    public List findFile(String name) {
+        if (rootNode == null) {
+            return null;
+        }
+
+        if (nameToNodeListTable == null) {
+            nameToNodeListTable = new Hashtable();
+            try {
+                buildNameToNodeListTable(rootNode);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+
+        return (List) nameToNodeListTable.get(name);
+    }
+
+    private void buildNameToNodeListTable(Node curNode)
+      throws IOException {
+        String fullName = curNode.getName();
+        String parent = curNode.getParent();
+        String separator = System.getProperty("file.separator");
+
+        if (parent != null) {
+          if (!fullName.startsWith(parent)) {
+            throw new RuntimeException(
+                "Internal error: parent of file name \"" + fullName +
+                "\" does not match file name \"" + parent + "\""
+            );
+          }
+
+          int len = parent.length();
+          if (!parent.endsWith(separator)) {
+            len += separator.length();
+          }
+
+          String fileName = fullName.substring(len);
+
+          if (fileName == null) {
+            throw new RuntimeException(
+                "Internal error: file name was empty"
+            );
+          }
+
+          List nodeList = (List) nameToNodeListTable.get(fileName);
+          if (nodeList == null) {
+            nodeList = new Vector();
+            nameToNodeListTable.put(fileName, nodeList);
+          }
+
+          nodeList.add(curNode);
+        } else {
+          if (curNode != rootNode) {
+            throw new RuntimeException(
+                "Internal error: parent of file + \"" + fullName + "\"" +
+                " was null"
+            );
+          }
+        }
+
+        if (curNode.isDirectory()) {
+          Iterator iter = curNode.getChildren();
+          if (iter != null) {
+            while (iter.hasNext()) {
+              buildNameToNodeListTable((Node) iter.next());
+            }
+          }
+        }
+    }
+
+    /** Reads all of the files in the given directory and adds them as
+        children of the directory tree node. Requires that the passed
+        node represents a directory. */
+
+    private void readDirectory(Node parentNode, File parentDir) {
+        File[] children = parentDir.listFiles();
+        if (children == null)
+            return;
+        if (verbose) {
+            System.out.print(".");
+            System.out.flush();
+        }
+        for (int i = 0; i < children.length; i++) {
+            File child = children[i];
+            children[i] = null;
+            boolean isDir = child.isDirectory();
+            boolean mustSkip = false;
+            if (isDir) {
+                for (Iterator iter = subdirsToIgnore.iterator();
+                     iter.hasNext(); ) {
+                    if (child.getName().equals((String) iter.next())) {
+                        mustSkip = true;
+                        break;
+                    }
+                }
+            }
+            if (!mustSkip) {
+                Node childNode = new Node(child);
+                parentNode.addChild(childNode);
+                if (isDir) {
+                    readDirectory(childNode, child);
+                }
+            }
+        }
+    }
+
+    private class Node implements DirectoryTreeNode {
+        private File file;
+        private Vector children;
+
+        /** file must be a canonical file */
+        Node(File file) {
+            this.file = file;
+            children = new Vector();
+        }
+
+        public boolean isFile() {
+            return file.isFile();
+        }
+
+        public boolean isDirectory() {
+            return file.isDirectory();
+        }
+
+        public String getName() {
+            return file.getPath();
+        }
+
+        public String getParent() {
+            return file.getParent();
+        }
+
+        public void addChild(Node n) {
+            children.add(n);
+        }
+
+        public Iterator getChildren() throws IllegalArgumentException {
+            return children.iterator();
+        }
+
+        public int getNumChildren() throws IllegalArgumentException {
+            return children.size();
+        }
+
+        public DirectoryTreeNode getChild(int i)
+            throws IllegalArgumentException, ArrayIndexOutOfBoundsException {
+            return (DirectoryTreeNode) children.get(i);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/DirectoryTreeNode.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,36 @@
+/*
+ * 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.util.*;
+
+public interface DirectoryTreeNode {
+    public boolean isFile();
+    public boolean isDirectory();
+    public String getName();
+    public String getParent();
+    public Iterator getChildren() throws IllegalArgumentException;
+    public int getNumChildren() throws IllegalArgumentException;
+    public DirectoryTreeNode getChild(int i)
+        throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/FileFormatException.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,33 @@
+/*
+ * 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 FileFormatException extends Exception {
+    public FileFormatException() {
+        super();
+    }
+
+    public FileFormatException(String s) {
+        super(s);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/Macro.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,28 @@
+/*
+ * 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;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/MacroDefinitions.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,154 @@
+/*
+ * 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();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/ProjectCreator.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,98 @@
+/*
+ * 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 ProjectCreator {
+
+    public static void usage() {
+        System.out.println("ProjectCreator options:");
+        System.err.println("WinGammaPlatform platform-specific options:");
+        System.err.println("  -sourceBase <path to directory (workspace) " +
+                           "containing source files; no trailing slash>");
+        System.err.println("  -dspFileName <full pathname to which .dsp file " +
+                           "will be written; all parent directories must " +
+                           "already exist>");
+        System.err.println("  -envVar <environment variable to be inserted " +
+                           "into .dsp file, substituting for path given in " +
+                           "-sourceBase. Example: HotSpotWorkSpace>");
+        System.err.println("  -dllLoc <path to directory in which to put " +
+                           "jvm.dll and jvm_g.dll; no trailing slash>");
+        System.err.println("  If any of the above are specified, "+
+                           "they must all be.");
+        System.err.println("  Additional, optional arguments, which can be " +
+                           "specified multiple times:");
+        System.err.println("    -absoluteInclude <string containing absolute " +
+                           "path to include directory>");
+        System.err.println("    -relativeInclude <string containing include " +
+                           "directory relative to -envVar>");
+        System.err.println("    -define <preprocessor flag to be #defined " +
+                           "(note: doesn't yet support " +
+                           "#define (flag) (value))>");
+        System.err.println("    -perFileLine <file> <line>");
+        System.err.println("    -conditionalPerFileLine <file> <line for " +
+                           "release build> <line for debug build>");
+        System.err.println("  (NOTE: To work around a bug in nmake, where " +
+                           "you can't have a '#' character in a quoted " +
+                           "string, all of the lines outputted have \"#\"" +
+                           "prepended)");
+        System.err.println("    -startAt <subdir of sourceBase>");
+        System.err.println("    -ignoreFile <file which won't be able to be " +
+                           "found in the sourceBase because it's generated " +
+                           "later>");
+        System.err.println("    -additionalFile <file not in database but " +
+                           "which should show up in .dsp file>");
+        System.err.println("    -additionalGeneratedFile <environment variable of " +
+                           "generated file's location> <relative path to " +
+                           "directory containing file; no trailing slash> " +
+                           "<name of file generated later in the build process>");
+        System.err.println("    -prelink <build> <desc> <cmds>:");
+        System.err.println(" Generate a set of prelink commands for the given BUILD");
+        System.err.println(" (\"Debug\" or \"Release\"). The prelink description and commands");
+        System.err.println(" are both quoted strings.");
+        System.err.println("    Default includes: \".\"");
+        System.err.println("    Default defines: WIN32, _WINDOWS, \"HOTSPOT_BUILD_USER=$(USERNAME)\"");
+    }
+
+    public static void main(String[] args) {
+        try {
+            if (args.length < 3) {
+                usage();
+                System.exit(1);
+            }
+
+            String platformName = args[0];
+            Class platformClass = Class.forName(platformName);
+            WinGammaPlatform platform = (WinGammaPlatform) platformClass.newInstance();
+
+            String[] platformArgs = new String[args.length - 1];
+            System.arraycopy(args, 1, platformArgs, 0, platformArgs.length);
+
+            // Allow the platform to write platform-specific files
+            platform.createVcproj(platformArgs);
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+              System.exit(1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/Util.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2005, 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.util.*;
+import java.io.File;
+
+public class Util {
+    static String join(String padder, Vector v) {
+        return join(padder, v, false);
+    }
+
+    static String join(String padder, Vector v, boolean quoted) {
+        StringBuffer sb = new StringBuffer();
+
+        for (Iterator iter = v.iterator(); iter.hasNext(); ) {
+            if (quoted) {
+                sb.append('"');
+            }
+            sb.append((String)iter.next());
+            if (quoted) {
+                sb.append('"');
+            }
+            if (iter.hasNext()) sb.append(padder);
+        }
+
+        return sb.toString();
+    }
+
+     static String join(String padder, String v[]) {
+        StringBuffer sb = new StringBuffer();
+
+        for (int i=0; i<v.length; i++) {
+            sb.append(v[i]);
+            if (i < (v.length  - 1)) sb.append(padder);
+        }
+
+        return sb.toString();
+    }
+
+
+
+    static String prefixed_join(String padder, Vector v, boolean quoted) {
+        StringBuffer sb = new StringBuffer();
+
+        for (Iterator iter = v.iterator(); iter.hasNext(); ) {
+            sb.append(padder);
+
+            if (quoted) {
+                sb.append('"');
+            }
+            sb.append((String)iter.next());
+            if (quoted) {
+                sb.append('"');
+            }
+        }
+
+        return sb.toString();
+    }
+
+
+    static String normalize(String file) {
+        return file.replace('\\', '/');
+    }
+
+    static String sep = File.separator;
+    static String os = "Win32"; //System.getProperty("os.name");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/WinGammaPlatform.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,687 @@
+/*
+ * 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.*;
+
+abstract class HsArgHandler extends ArgHandler {
+    static final int STRING = 1;
+    static final int VECTOR = 2;
+    static final int HASH   = 3;
+
+    boolean nextNotKey(ArgIterator it) {
+        if (it.next()) {
+            String s = it.get();
+            return (s.length() == 0) || (s.charAt(0) != '-');
+        } else {
+            return false;
+        }
+    }
+
+    void empty(String key, String message) {
+        if (key != null) {
+            System.err.println("** Error: empty " + key);
+        }
+        if (message != null) {
+            System.err.println(message);
+        }
+        WinGammaPlatform.usage();
+    }
+
+    static String getCfg(String val) {
+        int under = val.indexOf('_');
+        int len = val.length();
+        if (under != -1 && under < len - 1) {
+            return val.substring(under+1, len);
+        } else {
+            return null;
+        }
+    }
+}
+
+class ArgRuleSpecific extends ArgRule {
+    ArgRuleSpecific(String arg, ArgHandler handler) {
+        super(arg, handler);
+    }
+
+    boolean match(String rulePattern, String arg) {
+        return rulePattern.startsWith(arg);
+    }
+}
+
+
+class SpecificHsArgHandler extends HsArgHandler {
+
+    String message, argKey, valKey;
+    int type;
+
+    public void handle(ArgIterator it) {
+        String cfg = getCfg(it.get());
+        if (nextNotKey(it)) {
+            String val = it.get();
+            switch (type) {
+            case VECTOR:
+                BuildConfig.addFieldVector(cfg, valKey, val);
+                break;
+            case HASH:
+                BuildConfig.putFieldHash(cfg, valKey, val, "1");
+                break;
+            case STRING:
+                BuildConfig.putField(cfg, valKey, val);
+                break;
+            default:
+                empty(valKey, "Unknown type: "+type);
+            }
+            it.next();
+
+        } else {
+            empty(argKey, message);
+        }
+    }
+
+    SpecificHsArgHandler(String argKey, String valKey, String message, int type) {
+        this.argKey = argKey;
+        this.valKey = valKey;
+        this.message = message;
+        this.type = type;
+    }
+}
+
+
+class HsArgRule extends ArgRuleSpecific {
+
+    HsArgRule(String argKey, String valKey, String message, int type) {
+        super(argKey, new SpecificHsArgHandler(argKey, valKey, message, type));
+    }
+
+}
+
+public abstract class WinGammaPlatform {
+
+    public boolean fileNameStringEquality(String s1, String s2) {
+        return s1.equalsIgnoreCase(s2);
+    }
+
+    static void usage() throws IllegalArgumentException {
+        System.err.println("WinGammaPlatform platform-specific options:");
+        System.err.println("  -sourceBase <path to directory (workspace) " +
+                           "containing source files; no trailing slash>");
+        System.err.println("  -projectFileName <full pathname to which project file " +
+                           "will be written; all parent directories must " +
+                           "already exist>");
+        System.err.println("  If any of the above are specified, "+
+                           "they must all be.");
+        System.err.println("  Additional, optional arguments, which can be " +
+                           "specified multiple times:");
+        System.err.println("    -absoluteInclude <string containing absolute " +
+                           "path to include directory>");
+        System.err.println("    -relativeInclude <string containing include " +
+                           "directory relative to -sourceBase>");
+        System.err.println("    -define <preprocessor flag to be #defined " +
+                           "(note: doesn't yet support " +
+                           "#define (flag) (value))>");
+        System.err.println("    -startAt <subdir of sourceBase>");
+        System.err.println("    -additionalFile <file not in database but " +
+                           "which should show up in project file>");
+        System.err.println("    -additionalGeneratedFile <absolute path to " +
+                           "directory containing file; no trailing slash> " +
+                           "<name of file generated later in the build process>");
+        throw new IllegalArgumentException();
+    }
+
+
+    public void addPerFileLine(Hashtable table,
+                               String fileName,
+                               String line) {
+        Vector v = (Vector) table.get(fileName);
+        if (v != null) {
+            v.add(line);
+        } else {
+            v = new Vector();
+            v.add(line);
+            table.put(fileName, v);
+        }
+    }
+
+    protected static class PerFileCondData {
+        public String releaseString;
+        public String debugString;
+    }
+
+    protected void addConditionalPerFileLine(Hashtable table,
+                                           String fileName,
+                                           String releaseLine,
+                                           String debugLine) {
+        PerFileCondData data = new PerFileCondData();
+        data.releaseString = releaseLine;
+        data.debugString = debugLine;
+        Vector v = (Vector) table.get(fileName);
+        if (v != null) {
+            v.add(data);
+        } else {
+            v = new Vector();
+            v.add(data);
+            table.put(fileName, v);
+        }
+    }
+
+    protected static class PrelinkCommandData {
+      String description;
+      String commands;
+    }
+
+    protected void addPrelinkCommand(Hashtable table,
+                                     String build,
+                                     String description,
+                                     String commands) {
+      PrelinkCommandData data = new PrelinkCommandData();
+      data.description = description;
+      data.commands = commands;
+      table.put(build, data);
+    }
+
+    public boolean findString(Vector v, String s) {
+        for (Iterator iter = v.iterator(); iter.hasNext(); ) {
+            if (((String) iter.next()).equals(s)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /* This returns a String containing the full path to the passed
+       file name, or null if an error occurred. If the file was not
+       found or was a duplicate and couldn't be resolved using the
+       preferred paths, the file name is added to the appropriate
+       Vector of Strings. */
+    private String findFileInDirectory(String fileName,
+                                       DirectoryTree directory,
+                                       Vector preferredPaths,
+                                       Vector filesNotFound,
+                                       Vector filesDuplicate) {
+        List locationsInTree = directory.findFile(fileName);
+        int  rootNameLength = directory.getRootNodeName().length();
+        String name = null;
+        if ((locationsInTree == null) ||
+            (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:
+            {
+                for (Iterator locIter = locationsInTree.iterator();
+                     locIter.hasNext(); ) {
+                    DirectoryTreeNode node =
+                        (DirectoryTreeNode) locIter.next();
+                    String tmpName = node.getName();
+                    for (Iterator prefIter = preferredPaths.iterator();
+                         prefIter.hasNext(); ) {
+                        // We need to make sure the preferred path is
+                        // found from the file path not including the root node name.
+                        if (tmpName.indexOf((String)prefIter.next(),
+                                            rootNameLength) != -1) {
+                            name = tmpName;
+                            break search;
+                        }
+                    }
+                }
+            }
+
+            if (name == null) {
+                filesDuplicate.add(fileName);
+            }
+        } else {
+            name = ((DirectoryTreeNode) locationsInTree.get(0)).getName();
+        }
+
+        return name;
+    }
+
+    protected String envVarPrefixedFileName(String fileName,
+                                            int sourceBaseLen,
+                                            DirectoryTree tree,
+                                            Vector preferredPaths,
+                                            Vector filesNotFound,
+                                            Vector filesDuplicate) {
+        String fullName = findFileInDirectory(fileName,
+                                              tree,
+                                              preferredPaths,
+                                              filesNotFound,
+                                              filesDuplicate);
+        return fullName;
+    }
+
+     String getProjectName(String fullPath, String extension)
+        throws IllegalArgumentException, IOException {
+        File file = new File(fullPath).getCanonicalFile();
+        fullPath = file.getCanonicalPath();
+        String parent = file.getParent();
+
+        if (!fullPath.endsWith(extension)) {
+            throw new IllegalArgumentException("project file name \"" +
+                                               fullPath +
+                                               "\" does not end in "+extension);
+        }
+
+        if ((parent != null) &&
+            (!fullPath.startsWith(parent))) {
+            throw new RuntimeException(
+                "Internal error: parent of file name \"" + parent +
+                "\" does not match file name \"" + fullPath + "\""
+            );
+        }
+
+        int len = parent.length();
+        if (!parent.endsWith(Util.sep)) {
+            len += Util.sep.length();
+        }
+
+        int end = fullPath.length() - extension.length();
+
+        if (len == end) {
+            throw new RuntimeException(
+                "Internal error: file name was empty"
+            );
+        }
+
+        return fullPath.substring(len, end);
+    }
+
+    protected abstract String getProjectExt();
+
+    public void createVcproj(String[] args)
+        throws IllegalArgumentException, IOException {
+
+        parseArguments(args);
+
+        String projectFileName = BuildConfig.getFieldString(null, "ProjectFileName");
+        String ext = getProjectExt();
+
+        String projectName = getProjectName(projectFileName, ext);
+
+        writeProjectFile(projectFileName, projectName, createAllConfigs());
+    }
+
+    protected void writePrologue(String[] args) {
+        System.err.println("WinGammaPlatform platform-specific arguments:");
+        for (int i = 0; i < args.length; i++) {
+            System.err.print(args[i] + " ");
+        }
+        System.err.println();
+    }
+
+
+    void parseArguments(String[] args) {
+        new ArgsParser(args,
+                       new ArgRule[]
+            {
+                new HsArgRule("-sourceBase",
+                              "SourceBase",
+                              "   (Did you set the HotSpotWorkSpace environment variable?)",
+                              HsArgHandler.STRING
+                              ),
+
+                new HsArgRule("-buildBase",
+                              "BuildBase",
+                              "   (Did you set the HotSpotBuildSpace environment variable?)",
+                              HsArgHandler.STRING
+                              ),
+
+                new HsArgRule("-projectFileName",
+                              "ProjectFileName",
+                              null,
+                              HsArgHandler.STRING
+                              ),
+
+                new HsArgRule("-jdkTargetRoot",
+                              "JdkTargetRoot",
+                              "   (Did you set the HotSpotJDKDist environment variable?)",
+                              HsArgHandler.STRING
+                              ),
+
+                new HsArgRule("-compiler",
+                              "CompilerVersion",
+                              "   (Did you set the VcVersion correctly?)",
+                              HsArgHandler.STRING
+                              ),
+
+                new HsArgRule("-platform",
+                              "Platform",
+                              null,
+                              HsArgHandler.STRING
+                              ),
+
+                new HsArgRule("-absoluteInclude",
+                              "AbsoluteInclude",
+                              null,
+                              HsArgHandler.VECTOR
+                              ),
+
+                new HsArgRule("-relativeInclude",
+                              "RelativeInclude",
+                              null,
+                              HsArgHandler.VECTOR
+                              ),
+
+                new HsArgRule("-define",
+                              "Define",
+                              null,
+                              HsArgHandler.VECTOR
+                              ),
+
+                new HsArgRule("-useToGeneratePch",
+                              "UseToGeneratePch",
+                              null,
+                              HsArgHandler.STRING
+                              ),
+
+                new ArgRuleSpecific("-perFileLine",
+                            new HsArgHandler() {
+                                public void handle(ArgIterator it) {
+                                    String cfg = getCfg(it.get());
+                                    if (nextNotKey(it)) {
+                                        String fileName = it.get();
+                                        if (nextNotKey(it)) {
+                                            String line = it.get();
+                                            BuildConfig.putFieldHash(cfg, "PerFileLine", fileName, line);
+                                            it.next();
+                                            return;
+                                        }
+                                    }
+                                    empty(null, "** Error: wrong number of args to -perFileLine");
+                                }
+                            }
+                            ),
+
+                new ArgRuleSpecific("-conditionalPerFileLine",
+                            new HsArgHandler() {
+                                public void handle(ArgIterator it) {
+                                    String cfg = getCfg(it.get());
+                                    if (nextNotKey(it)) {
+                                        String fileName = it.get();
+                                        if (nextNotKey(it)) {
+                                            String productLine = it.get();
+                                            if (nextNotKey(it)) {
+                                                String debugLine = it.get();
+                                                BuildConfig.putFieldHash(cfg+"_debug", "CondPerFileLine",
+                                                                         fileName, debugLine);
+                                                BuildConfig.putFieldHash(cfg+"_product", "CondPerFileLine",
+                                                                         fileName, productLine);
+                                                it.next();
+                                                return;
+                                            }
+                                        }
+                                    }
+
+                                    empty(null, "** Error: wrong number of args to -conditionalPerFileLine");
+                                }
+                            }
+                            ),
+
+                new HsArgRule("-disablePch",
+                              "DisablePch",
+                              null,
+                              HsArgHandler.HASH
+                              ),
+
+                new ArgRule("-startAt",
+                            new HsArgHandler() {
+                                public void handle(ArgIterator it) {
+                                    if (BuildConfig.getField(null, "StartAt") != null) {
+                                        empty(null, "** Error: multiple -startAt");
+                                    }
+                                    if (nextNotKey(it)) {
+                                        BuildConfig.putField(null, "StartAt", it.get());
+                                        it.next();
+                                    } else {
+                                        empty("-startAt", null);
+                                    }
+                                }
+                            }
+                            ),
+
+                new HsArgRule("-ignoreFile",
+                                      "IgnoreFile",
+                                      null,
+                                      HsArgHandler.HASH
+                                      ),
+
+                new HsArgRule("-ignorePath",
+                              "IgnorePath",
+                              null,
+                              HsArgHandler.VECTOR
+                              ),
+
+                new HsArgRule("-additionalFile",
+                              "AdditionalFile",
+                              null,
+                              HsArgHandler.VECTOR
+                              ),
+
+                new ArgRuleSpecific("-additionalGeneratedFile",
+                            new HsArgHandler() {
+                                public void handle(ArgIterator it) {
+                                    String cfg = getCfg(it.get());
+                                    if (nextNotKey(it)) {
+                                        String dir = it.get();
+                                        if (nextNotKey(it)) {
+                                            String fileName = it.get();
+                                            BuildConfig.putFieldHash(cfg, "AdditionalGeneratedFile",
+                                                                     Util.normalize(dir + Util.sep + fileName),
+                                                                     fileName);
+                                            it.next();
+                                            return;
+                                        }
+                                    }
+                                    empty(null, "** Error: wrong number of args to -additionalGeneratedFile");
+                                }
+                            }
+                            ),
+
+                new ArgRule("-prelink",
+                            new HsArgHandler() {
+                                public void handle(ArgIterator it) {
+                                    if (nextNotKey(it)) {
+                                        String build = it.get();
+                                        if (nextNotKey(it)) {
+                                            String description = it.get();
+                                            if (nextNotKey(it)) {
+                                                String command = it.get();
+                                                BuildConfig.putField(null, "PrelinkDescription", description);
+                                                BuildConfig.putField(null, "PrelinkCommand", command);
+                                                it.next();
+                                                return;
+                                            }
+                                        }
+                                    }
+
+                                    empty(null,  "** Error: wrong number of args to -prelink");
+                                }
+                            }
+                            )
+            },
+                                       new ArgHandler() {
+                                           public void handle(ArgIterator it) {
+
+                                               throw new RuntimeException("Arg Parser: unrecognized option "+it.get());
+                                           }
+                                       }
+                                       );
+        if (BuildConfig.getField(null, "SourceBase") == null      ||
+            BuildConfig.getField(null, "BuildBase") == null       ||
+            BuildConfig.getField(null, "ProjectFileName") == null ||
+            BuildConfig.getField(null, "CompilerVersion") == null) {
+            usage();
+        }
+
+        if (BuildConfig.getField(null, "UseToGeneratePch") == null) {
+            throw new RuntimeException("ERROR: need to specify one file to compute PCH, with -useToGeneratePch flag");
+        }
+
+        BuildConfig.putField(null, "PlatformObject", this);
+    }
+
+    Vector createAllConfigs() {
+        Vector allConfigs = new Vector();
+
+        allConfigs.add(new C1DebugConfig());
+
+        boolean b = true;
+        if (b) {
+            allConfigs.add(new C1FastDebugConfig());
+            allConfigs.add(new C1ProductConfig());
+
+            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 CoreDebugConfig());
+            allConfigs.add(new CoreFastDebugConfig());
+            allConfigs.add(new CoreProductConfig());
+
+            allConfigs.add(new KernelDebugConfig());
+            allConfigs.add(new KernelFastDebugConfig());
+            allConfigs.add(new KernelProductConfig());
+        }
+
+        return allConfigs;
+    }
+
+    class FileAttribute {
+        int     numConfigs;
+        Vector  configs;
+        String  shortName;
+        boolean noPch, pchRoot;
+
+        FileAttribute(String shortName, BuildConfig cfg, int numConfigs) {
+            this.shortName = shortName;
+            this.noPch =  (cfg.lookupHashFieldInContext("DisablePch", shortName) != null);
+            this.pchRoot = shortName.equals(BuildConfig.getFieldString(null, "UseToGeneratePch"));
+            this.numConfigs = numConfigs;
+
+            configs = new Vector();
+            add(cfg.get("Name"));
+        }
+
+        void add(String confName) {
+            configs.add(confName);
+
+            // if presented in all configs
+            if (configs.size() == numConfigs) {
+                configs = null;
+            }
+        }
+    }
+
+    class FileInfo implements Comparable {
+        String        full;
+        FileAttribute attr;
+
+        FileInfo(String full, FileAttribute  attr) {
+            this.full = full;
+            this.attr = attr;
+        }
+
+        public int compareTo(Object o) {
+            FileInfo oo = (FileInfo)o;
+            // Don't squelch identical short file names where the full
+            // paths are different
+            if (!attr.shortName.equals(oo.attr.shortName))
+              return attr.shortName.compareTo(oo.attr.shortName);
+            return full.compareTo(oo.full);
+        }
+
+        boolean isHeader() {
+            return attr.shortName.endsWith(".h") || attr.shortName.endsWith(".hpp");
+        }
+    }
+
+
+    TreeSet sortFiles(Hashtable allFiles) {
+        TreeSet rv = new TreeSet();
+        Enumeration e = allFiles.keys();
+        while (e.hasMoreElements()) {
+            String fullPath = (String)e.nextElement();
+            rv.add(new FileInfo(fullPath, (FileAttribute)allFiles.get(fullPath)));
+        }
+        return rv;
+    }
+
+    Hashtable computeAttributedFiles(Vector allConfigs) {
+        Hashtable ht = new Hashtable();
+        int numConfigs = allConfigs.size();
+
+        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
+            BuildConfig bc = (BuildConfig)i.next();
+            Hashtable  confFiles = (Hashtable)bc.getSpecificField("AllFilesHash");
+            String confName = bc.get("Name");
+
+            for (Enumeration e=confFiles.keys(); e.hasMoreElements(); ) {
+                String filePath = (String)e.nextElement();
+                FileAttribute fa = (FileAttribute)ht.get(filePath);
+
+                if (fa == null) {
+                    fa = new FileAttribute((String)confFiles.get(filePath), bc, numConfigs);
+                    ht.put(filePath, fa);
+                } else {
+                    fa.add(confName);
+                }
+            }
+        }
+
+        return ht;
+    }
+
+     Hashtable computeAttributedFiles(BuildConfig bc) {
+        Hashtable ht = new Hashtable();
+        Hashtable confFiles = (Hashtable)bc.getSpecificField("AllFilesHash");
+
+        for (Enumeration e = confFiles.keys(); e.hasMoreElements(); ) {
+            String filePath = (String)e.nextElement();
+            ht.put(filePath,  new FileAttribute((String)confFiles.get(filePath), bc, 1));
+        }
+
+        return ht;
+    }
+
+    PrintWriter printWriter;
+
+    public void writeProjectFile(String projectFileName, String projectName,
+                                 Vector allConfigs) throws IOException {
+        throw new RuntimeException("use compiler version specific version");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/WinGammaPlatformVC6.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 2005, 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 WinGammaPlatformVC6 extends WinGammaPlatform {
+    public void writeProjectFile(String projectFileName, String projectName,
+                                 Vector allConfigs) throws IOException {
+        Vector allConfigNames = new Vector();
+
+        printWriter = new PrintWriter(new FileWriter(projectFileName));
+        String cfg = ((BuildConfig)allConfigs.get(0)).get("Name");
+
+        printWriter.println("# Microsoft Developer Studio Project File - Name=\"" + projectName + "\" - Package Owner=<4>");
+        printWriter.println("# Microsoft Developer Studio Generated Build File, Format Version 6.00");
+        printWriter.println("# ** DO NOT EDIT **");
+        printWriter.println("");
+        printWriter.println("# TARGTYPE \"Win32 (x86) Dynamic-Link Library\" 0x0102");
+        printWriter.println("CFG=" + cfg);
+        printWriter.println("");
+
+        printWriter.println("!MESSAGE This is not a valid makefile. To build this project using NMAKE,");
+        printWriter.println("!MESSAGE use the Export Makefile command and run");
+        printWriter.println("!MESSAGE ");
+        printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\".");
+        printWriter.println("!MESSAGE ");
+        printWriter.println("!MESSAGE You can specify a configuration when running NMAKE");
+        printWriter.println("!MESSAGE by defining the macro CFG on the command line. For example:");
+        printWriter.println("!MESSAGE ");
+        printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\" CFG=\"" + cfg + "\"");
+        printWriter.println("!MESSAGE ");
+        printWriter.println("!MESSAGE Possible choices for configuration are:");
+        printWriter.println("!MESSAGE ");
+        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
+            String name = ((BuildConfig)i.next()).get("Name");
+            printWriter.println("!MESSAGE \""+ name + "\" (based on \"Win32 (x86) Dynamic-Link Library\")");
+            allConfigNames.add(name);
+        }
+        printWriter.println("!MESSAGE ");
+        printWriter.println("");
+
+        printWriter.println("# Begin Project");
+        printWriter.println("# PROP AllowPerConfigDependencies 0");
+        printWriter.println("# PROP Scc_ProjName \"\"");
+        printWriter.println("# PROP Scc_LocalPath \"\"");
+        printWriter.println("CPP=cl.exe");
+        printWriter.println("MTL=midl.exe");
+        printWriter.println("RSC=rc.exe");
+
+
+        String keyword = "!IF";
+        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
+            BuildConfig bcfg = (BuildConfig)i.next();
+            printWriter.println(keyword + "  \"$(CFG)\" == \"" + bcfg.get("Name") + "\"");
+            writeConfigHeader(bcfg);
+            keyword = "!ELSEIF";
+            if (!i.hasNext()) printWriter.println("!ENDIF");
+        }
+
+
+        TreeSet sortedFiles = sortFiles(computeAttributedFiles(allConfigs));
+
+        printWriter.println("# Begin Target");
+
+        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
+            printWriter.println("# Name \"" + ((BuildConfig)i.next()).get("Name") + "\"");
+        }
+        printWriter.println("# Begin Group \"Header Files\"");
+        printWriter.println("# PROP Default_Filter \"h;hpp;hxx;hm;inl;fi;fd\"");
+
+        Iterator i = sortedFiles.iterator();
+
+        while (i.hasNext()) {
+            FileInfo fi = (FileInfo)i.next();
+
+            // skip sources
+            if (!fi.isHeader()) {
+                continue;
+            }
+
+            printFile(fi, allConfigNames);
+        }
+        printWriter.println("# End Group");
+        printWriter.println("");
+
+        printWriter.println("# Begin Group \"Source Files\"");
+        printWriter.println("# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90\"");
+
+        i = sortedFiles.iterator();
+        while (i.hasNext()) {
+            FileInfo fi = (FileInfo)i.next();
+
+            // skip headers
+            if (fi.isHeader()) {
+                continue;
+            }
+
+            printFile(fi, allConfigNames);
+        }
+        printWriter.println("# End Group");
+        printWriter.println("");
+
+
+        printWriter.println("# Begin Group \"Resource Files\"");
+        printWriter.println("# PROP Default_Filter \"ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe\"");
+        printWriter.println("# End Group");
+        printWriter.println("");
+        printWriter.println("# End Target");
+
+        printWriter.println("# End Project");
+
+        printWriter.close();
+    }
+
+
+    void printFile(FileInfo fi, Vector allConfigNames) {
+        printWriter.println("# Begin Source File");
+        printWriter.println("");
+        printWriter.println("SOURCE=\"" + fi.full + "\"");
+        FileAttribute attr = fi.attr;
+
+        if (attr.noPch) {
+            printWriter.println("# SUBTRACT CPP /YX /Yc /Yu");
+        }
+
+        if (attr.pchRoot) {
+            printWriter.println("# ADD CPP /Yc\"incls/_precompiled.incl\"");
+        }
+        if (attr.configs != null) {
+            String keyword = "!IF";
+            for (Iterator j=allConfigNames.iterator(); j.hasNext();) {
+                String cfg = (String)j.next();
+                if (!attr.configs.contains(cfg)) {
+                    printWriter.println(keyword+" \"$(CFG)\" == \"" + cfg +"\"");
+                    printWriter.println("# PROP BASE Exclude_From_Build 1");
+                    printWriter.println("# PROP Exclude_From_Build 1");
+                    keyword = "!ELSEIF";
+                }
+            }
+            printWriter.println("!ENDIF");
+        }
+
+        printWriter.println("# End Source File");
+    }
+
+    void writeConfigHeader(BuildConfig cfg) {
+        printWriter.println("# Begin Special Build Tool");
+        printWriter.println("SOURCE=\"$(InputPath)\"");
+        printWriter.println("PreLink_Desc=" +  BuildConfig.getFieldString(null, "PrelinkDescription"));
+        printWriter.println("PreLink_Cmds=" +
+                            cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand")));
+        printWriter.println("# End Special Build Tool");
+        printWriter.println("");
+
+        for (Iterator i = cfg.getV("CompilerFlags").iterator(); i.hasNext(); ) {
+            printWriter.println("# "+(String)i.next());
+        }
+
+
+        printWriter.println("LINK32=link.exe");
+
+        for (Iterator i = cfg.getV("LinkerFlags").iterator(); i.hasNext(); ) {
+            printWriter.println("# "+(String)i.next());
+        }
+
+        printWriter.println("ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32");
+        printWriter.println("ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32");
+        printWriter.println("ADD BASE RSC /l 0x409 /d \"_DEBUG\"");
+        printWriter.println("ADD RSC /l 0x409 /d \"_DEBUG\"");
+        printWriter.println("BSC32=bscmake.exe");
+        printWriter.println("ADD BASE BSC32 /nologo");
+        printWriter.println("ADD BSC32 /nologo");
+        printWriter.println("");
+    }
+
+    protected String getProjectExt() {
+        return ".dsp";
+    }
+}
+
+
+class CompilerInterfaceVC6  extends CompilerInterface {
+    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
+        Vector rv = new Vector();
+
+        rv.add("PROP BASE Use_MFC 0");
+        rv.add("PROP Use_MFC 0");
+        rv.add("ADD CPP /nologo /MT /W3 /WX /GX /YX /Fr /FD /c");
+        rv.add("PROP BASE Output_Dir \""+outDir+"\"");
+        rv.add("PROP Output_Dir \""+outDir+"\"");
+        rv.add("PROP BASE Intermediate_Dir \""+outDir+"\"");
+        rv.add("PROP Intermediate_Dir \""+outDir+"\"");
+        rv.add("PROP BASE Target_Dir \"\"");
+        rv.add("PROP Target_Dir \"\"");
+        rv.add("ADD BASE CPP "+Util.prefixed_join(" /I ", includes, true));
+        rv.add("ADD CPP "+Util.prefixed_join(" /I ", includes, true));
+        rv.add("ADD BASE CPP "+Util.prefixed_join(" /D ", defines, true));
+        rv.add("ADD CPP "+Util.prefixed_join(" /D ", defines, true));
+        rv.add("ADD CPP /Yu\"incls/_precompiled.incl\"");
+
+        return rv;
+    }
+
+    Vector getBaseLinkerFlags(String outDir, String outDll) {
+        Vector rv = new Vector();
+
+        rv.add("PROP Ignore_Export_Lib 0");
+        rv.add("ADD BASE CPP /MD");
+        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");
+        rv.add("ADD LINK32      /out:\""+outDll+"\" "+
+               "                /nologo /subsystem:windows /machine:I386" +
+               "                /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 "+
+               "                /export:jio_vsnprintf ");
+        rv.add("SUBTRACT LINK32 /pdb:none /map");
+
+        return rv;
+    }
+
+    Vector getDebugCompilerFlags(String opt) {
+        Vector rv = new Vector();
+
+        rv.add("ADD BASE CPP /Gm /Zi /O"+opt);
+
+        return rv;
+    }
+
+    Vector getDebugLinkerFlags() {
+        Vector rv = new Vector();
+
+        rv.add("PROP BASE Use_Debug_Libraries 1");
+        rv.add("PROP Use_Debug_Libraries 1");
+        rv.add("ADD LINK32 /debug");
+
+        return rv;
+    }
+
+    Vector getProductCompilerFlags() {
+        Vector rv = new Vector();
+
+        rv.add("ADD CPP /O"+getOptFlag());
+
+        return rv;
+    }
+
+    Vector getProductLinkerFlags() {
+        Vector rv = new Vector();
+
+        rv.add("PROP BASE Use_Debug_Libraries 0");
+        rv.add("PROP Use_Debug_Libraries 0");
+
+        return rv;
+    }
+
+    String getOptFlag() {
+        return "2";
+    }
+
+    String getNoOptFlag() {
+        return "d";
+    }
+
+    String makeCfgName(String flavourBuild) {
+        return "vm - "+ Util.os + " " + flavourBuild;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,730 @@
+/*
+ * Copyright (c) 2005, 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 WinGammaPlatformVC7 extends WinGammaPlatform {
+
+    String projectVersion() {return "7.10";};
+
+    public void writeProjectFile(String projectFileName, String projectName,
+                                 Vector allConfigs) throws IOException {
+        System.out.println();
+        System.out.println("    Writing .vcproj file...");
+        // If we got this far without an error, we're safe to actually
+        // write the .vcproj file
+        printWriter = new PrintWriter(new FileWriter(projectFileName));
+
+        printWriter.println("<?xml version=\"1.0\" encoding=\"windows-1251\"?>");
+        startTag(
+            "VisualStudioProject",
+            new String[] {
+                "ProjectType", "Visual C++",
+                "Version", projectVersion(),
+                "Name", projectName,
+                "ProjectGUID", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}",
+                "SccProjectName", "",
+                "SccLocalPath", ""
+            }
+            );
+
+        startTag("Platforms", null);
+        tag("Platform", new String[] {"Name", Util.os});
+        endTag("Platforms");
+
+        startTag("Configurations", null);
+
+        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
+            writeConfiguration((BuildConfig)i.next());
+        }
+
+        endTag("Configurations");
+
+        tag("References", null);
+
+        writeFiles(allConfigs);
+
+        tag("Globals", null);
+
+        endTag("VisualStudioProject");
+        printWriter.close();
+
+        System.out.println("    Done.");
+    }
+
+
+    abstract class NameFilter {
+        protected String fname;
+
+        abstract boolean match(FileInfo fi);
+
+        String  filterString() { return ""; }
+        String name() { return this.fname;}
+    }
+
+    class DirectoryFilter extends NameFilter {
+        String dir;
+        int baseLen, dirLen;
+
+        DirectoryFilter(String dir, String sbase) {
+            this.dir = dir;
+            this.baseLen = sbase.length();
+            this.dirLen = dir.length();
+            this.fname = dir;
+        }
+
+        DirectoryFilter(String fname, String dir, String sbase) {
+            this.dir = dir;
+            this.baseLen = sbase.length();
+            this.dirLen = dir.length();
+            this.fname = fname;
+        }
+
+
+        boolean match(FileInfo fi) {
+            return fi.full.regionMatches(true, baseLen, dir, 0, dirLen);
+        }
+    }
+
+    class TypeFilter extends NameFilter {
+        String[] exts;
+
+        TypeFilter(String fname, String[] exts) {
+            this.fname = fname;
+            this.exts = exts;
+        }
+
+        boolean match(FileInfo fi) {
+            for (int i=0; i<exts.length; i++) {
+                if (fi.full.endsWith(exts[i])) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        String  filterString() {
+            return Util.join(";", exts);
+        }
+    }
+
+    class TerminatorFilter extends NameFilter {
+        TerminatorFilter(String fname) {
+            this.fname = fname;
+
+        }
+        boolean match(FileInfo fi) {
+            return true;
+        }
+
+    }
+
+    class SpecificNameFilter extends NameFilter {
+        String pats[];
+
+        SpecificNameFilter(String fname, String[] pats) {
+            this.fname = fname;
+            this.pats = pats;
+        }
+
+        boolean match(FileInfo fi) {
+            for (int i=0; i<pats.length; i++) {
+                if (fi.attr.shortName.matches(pats[i])) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+    }
+
+    class SpecificPathFilter extends NameFilter {
+        String pats[];
+
+        SpecificPathFilter(String fname, String[] pats) {
+            this.fname = fname;
+            this.pats = pats;
+        }
+
+        boolean match(FileInfo fi) {
+            for (int i=0; i<pats.length; i++) {
+                if (fi.full.matches(pats[i])) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+    }
+
+    class ContainerFilter extends NameFilter {
+        Vector children;
+
+        ContainerFilter(String fname) {
+            this.fname = fname;
+            children = new Vector();
+
+        }
+        boolean match(FileInfo fi) {
+            return false;
+        }
+
+        Iterator babies() { return children.iterator(); }
+
+        void add(NameFilter f) {
+            children.add(f);
+        }
+    }
+
+
+    void writeCustomToolConfig(Vector configs, String[] customToolAttrs) {
+        for (Iterator i = configs.iterator(); i.hasNext(); ) {
+            startTag("FileConfiguration",
+                     new String[] {
+                         "Name",  (String)i.next()
+                     }
+                     );
+            tag("Tool", customToolAttrs);
+
+            endTag("FileConfiguration");
+        }
+    }
+
+    // here we define filters, which define layout of what can be seen in 'Solution View' of MSVC
+    // Basically there are two types of entities - container filters and real filters
+    //   - container filter just provides a container to group together real filters
+    //   - real filter can select elements from the set according to some rule, put it into XML
+    //     and remove from the list
+    Vector makeFilters(TreeSet files) {
+        Vector rv = new Vector();
+        String sbase = Util.normalize(BuildConfig.getFieldString(null, "SourceBase")+"/src/");
+
+        ContainerFilter rt = new ContainerFilter("Runtime");
+        rt.add(new DirectoryFilter("share/vm/prims", sbase));
+        rt.add(new DirectoryFilter("share/vm/runtime", sbase));
+        rt.add(new DirectoryFilter("share/vm/oops", sbase));
+        rv.add(rt);
+
+        ContainerFilter gc = new ContainerFilter("GC");
+        gc.add(new DirectoryFilter("share/vm/memory", sbase));
+        gc.add(new DirectoryFilter("share/vm/gc_interface", sbase));
+
+        ContainerFilter gc_impl = new ContainerFilter("Implementations");
+        gc_impl.add(new DirectoryFilter("CMS",
+                                        "share/vm/gc_implementation/concurrentMarkSweep",
+                                        sbase));
+        gc_impl.add(new DirectoryFilter("Parallel Scavenge",
+                                        "share/vm/gc_implementation/parallelScavenge",
+                                        sbase));
+        gc_impl.add(new DirectoryFilter("Shared",
+                                        "share/vm/gc_implementation/shared",
+                                        sbase));
+        // for all leftovers
+        gc_impl.add(new DirectoryFilter("Misc",
+                                        "share/vm/gc_implementation",
+                                        sbase));
+
+        gc.add(gc_impl);
+        rv.add(gc);
+
+        rv.add(new DirectoryFilter("C1", "share/vm/c1", sbase));
+
+        rv.add(new DirectoryFilter("C2", "share/vm/opto", sbase));
+
+        ContainerFilter comp = new ContainerFilter("Compiler Common");
+        comp.add(new DirectoryFilter("share/vm/asm", sbase));
+        comp.add(new DirectoryFilter("share/vm/ci", sbase));
+        comp.add(new DirectoryFilter("share/vm/code", sbase));
+        comp.add(new DirectoryFilter("share/vm/compiler", sbase));
+        rv.add(comp);
+
+        rv.add(new DirectoryFilter("Interpreter",
+                                   "share/vm/interpreter",
+                                   sbase));
+
+        ContainerFilter misc = new ContainerFilter("Misc");
+        misc.add(new DirectoryFilter("share/vm/libadt", sbase));
+        misc.add(new DirectoryFilter("share/vm/services", sbase));
+        misc.add(new DirectoryFilter("share/vm/utilities", sbase));
+        misc.add(new DirectoryFilter("share/vm/classfile", sbase));
+        rv.add(misc);
+
+        rv.add(new DirectoryFilter("os_cpu", sbase));
+
+        rv.add(new DirectoryFilter("cpu", sbase));
+
+        rv.add(new DirectoryFilter("os", sbase));
+
+        ContainerFilter generated = new ContainerFilter("Generated");
+        ContainerFilter c1Generated = new ContainerFilter("C1");
+        c1Generated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*compiler1/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
+        c1Generated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*compiler1/generated/jvmtifiles/.*"}));
+        generated.add(c1Generated);
+        ContainerFilter c2Generated = new ContainerFilter("C2");
+        c2Generated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*compiler2/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
+        c2Generated.add(new SpecificPathFilter("adfiles", new String[] {".*compiler2/generated/adfiles/.*"}));
+        c2Generated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*compiler2/generated/jvmtifiles/.*"}));
+        generated.add(c2Generated);
+        ContainerFilter coreGenerated = new ContainerFilter("Core");
+        coreGenerated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*core/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
+        coreGenerated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*core/generated/jvmtifiles/.*"}));
+        generated.add(coreGenerated);
+        ContainerFilter tieredGenerated = new ContainerFilter("Tiered");
+        tieredGenerated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*tiered/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
+        tieredGenerated.add(new SpecificPathFilter("adfiles", new String[] {".*tiered/generated/adfiles/.*"}));
+        tieredGenerated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*tiered/generated/jvmtifiles/.*"}));
+        generated.add(tieredGenerated);
+        ContainerFilter kernelGenerated = new ContainerFilter("Kernel");
+        kernelGenerated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*kernel/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
+        kernelGenerated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*kernel/generated/jvmtifiles/.*"}));
+        generated.add(kernelGenerated);
+        rv.add(generated);
+
+        rv.add(new SpecificNameFilter("Precompiled Header", new String[] {"precompiled.hpp"}));
+
+        // this one is to catch files not caught by other filters
+        //rv.add(new TypeFilter("Header Files", new String[] {"h", "hpp", "hxx", "hm", "inl", "fi", "fd"}));
+        rv.add(new TerminatorFilter("Source Files"));
+
+        return rv;
+    }
+
+    void writeFiles(Vector allConfigs) {
+
+        Hashtable allFiles = computeAttributedFiles(allConfigs);
+
+        Vector allConfigNames = new Vector();
+        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
+            allConfigNames.add(((BuildConfig)i.next()).get("Name"));
+        }
+
+        TreeSet sortedFiles = sortFiles(allFiles);
+
+        startTag("Files", null);
+
+        for (Iterator i = makeFilters(sortedFiles).iterator(); i.hasNext(); ) {
+            doWriteFiles(sortedFiles, allConfigNames, (NameFilter)i.next());
+        }
+
+
+        startTag("Filter",
+                 new String[] {
+                     "Name", "Resource Files",
+                     "Filter", "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+                 }
+                 );
+        endTag("Filter");
+
+        endTag("Files");
+    }
+
+    void doWriteFiles(TreeSet allFiles, Vector allConfigNames, NameFilter filter) {
+        startTag("Filter",
+                 new String[] {
+                     "Name",   filter.name(),
+                     "Filter", filter.filterString()
+                 }
+                 );
+
+        if (filter instanceof ContainerFilter) {
+
+            Iterator i = ((ContainerFilter)filter).babies();
+            while (i.hasNext()) {
+                doWriteFiles(allFiles, allConfigNames, (NameFilter)i.next());
+            }
+
+        } else {
+
+            Iterator i = allFiles.iterator();
+            while (i.hasNext()) {
+                FileInfo fi = (FileInfo)i.next();
+
+                if (!filter.match(fi)) {
+                    continue;
+                }
+
+                startTag("File",
+                         new String[] {
+                             "RelativePath", fi.full.replace('/', '\\')
+                         }
+                         );
+
+                FileAttribute a = fi.attr;
+                if (a.pchRoot) {
+                    writeCustomToolConfig(allConfigNames,
+                                          new String[] {
+                                              "Name", "VCCLCompilerTool",
+                                              "UsePrecompiledHeader", "1"
+                                          });
+                }
+
+                if (a.noPch) {
+                    writeCustomToolConfig(allConfigNames,
+                                          new String[] {
+                                              "Name", "VCCLCompilerTool",
+                                              "UsePrecompiledHeader", "0"
+                                          });
+                }
+
+                if (a.configs != null) {
+                    for (Iterator j=allConfigNames.iterator(); j.hasNext();) {
+                        String cfg = (String)j.next();
+                        if (!a.configs.contains(cfg)) {
+                            startTag("FileConfiguration",
+                                     new String[] {
+                                         "Name", cfg,
+                                         "ExcludedFromBuild", "TRUE"
+                                     });
+                            tag("Tool", new String[] {"Name", "VCCLCompilerTool"});
+                            endTag("FileConfiguration");
+
+                        }
+                    }
+                }
+
+                endTag("File");
+
+                // we not gonna look at this file anymore
+                i.remove();
+            }
+        }
+
+        endTag("Filter");
+    }
+
+
+    void writeConfiguration(BuildConfig cfg) {
+        startTag("Configuration",
+                 new String[] {
+                     "Name", cfg.get("Name"),
+                     "OutputDirectory",  cfg.get("OutputDir"),
+                     "IntermediateDirectory",  cfg.get("OutputDir"),
+                     "ConfigurationType", "2",
+                     "UseOfMFC", "0",
+                     "ATLMinimizesCRunTimeLibraryUsage", "FALSE"
+                 }
+                 );
+
+
+
+        tagV("Tool", cfg.getV("CompilerFlags"));
+
+        tag("Tool",
+            new String[] {
+                "Name", "VCCustomBuildTool"
+            }
+            );
+
+        tagV("Tool", cfg.getV("LinkerFlags"));
+
+        tag("Tool",
+            new String[] {
+                "Name", "VCPostBuildEventTool"
+            }
+            );
+
+        tag("Tool",
+            new String[] {
+                "Name", "VCPreBuildEventTool"
+            }
+            );
+
+        tag("Tool",
+            new String[] {
+                "Name", "VCPreLinkEventTool",
+                "Description", BuildConfig.getFieldString(null, "PrelinkDescription"),
+                //Caution: String.replace(String,String) is available from JDK5 onwards only
+                "CommandLine", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace
+                   ("\t", "&#x0D;&#x0A;"))
+            }
+            );
+
+        tag("Tool",
+            new String[] {
+                "Name", "VCResourceCompilerTool",
+                // XXX???
+                "PreprocessorDefinitions", "NDEBUG",
+                "Culture", "1033"
+            }
+            );
+        tag("Tool",
+            new String[] {
+              "Name", "VCWebServiceProxyGeneratorTool"
+            }
+            );
+
+        tag ("Tool",
+             new String[] {
+              "Name", "VCXMLDataGeneratorTool"
+             }
+             );
+
+        tag("Tool",
+            new String[] {
+              "Name", "VCWebDeploymentTool"
+            }
+            );
+        tag("Tool",
+             new String[] {
+            "Name", "VCManagedWrapperGeneratorTool"
+             }
+            );
+        tag("Tool",
+            new String[] {
+              "Name", "VCAuxiliaryManagedWrapperGeneratorTool"
+            }
+            );
+
+        tag("Tool",
+            new String[] {
+                "Name", "VCMIDLTool",
+                "PreprocessorDefinitions", "NDEBUG",
+                "MkTypLibCompatible", "TRUE",
+                "SuppressStartupBanner", "TRUE",
+                "TargetEnvironment", "1",
+                "TypeLibraryName", cfg.get("OutputDir") + Util.sep + "vm.tlb",
+                "HeaderFileName", ""
+            }
+            );
+
+        endTag("Configuration");
+    }
+
+    int indent;
+
+    private void startTagPrim(String name,
+                              String[] attrs,
+                              boolean close) {
+        doIndent();
+        printWriter.print("<"+name);
+        indent++;
+
+        if (attrs != null) {
+            printWriter.println();
+            for (int i=0; i<attrs.length; i+=2) {
+                doIndent();
+                printWriter.print(" " + attrs[i]+"=\""+attrs[i+1]+"\"");
+                if (i < attrs.length - 2) {
+                    printWriter.println();
+                }
+            }
+        }
+
+        if (close) {
+            indent--;
+            //doIndent();
+            printWriter.println("/>");
+        } else {
+            //doIndent();
+            printWriter.println(">");
+        }
+    }
+
+    void startTag(String name, String[] attrs) {
+        startTagPrim(name, attrs, false);
+    }
+
+    void startTagV(String name, Vector attrs) {
+        String s[] = new String [attrs.size()];
+         for (int i=0; i<attrs.size(); i++) {
+             s[i] = (String)attrs.elementAt(i);
+         }
+        startTagPrim(name, s, false);
+    }
+
+    void endTag(String name) {
+        indent--;
+        doIndent();
+        printWriter.println("</"+name+">");
+    }
+
+    void tag(String name, String[] attrs) {
+        startTagPrim(name, attrs, true);
+    }
+
+     void tagV(String name, Vector attrs) {
+         String s[] = new String [attrs.size()];
+         for (int i=0; i<attrs.size(); i++) {
+             s[i] = (String)attrs.elementAt(i);
+         }
+         startTagPrim(name, s, true);
+    }
+
+
+    void doIndent() {
+        for (int i=0; i<indent; i++) {
+            printWriter.print("    ");
+        }
+    }
+
+    protected String getProjectExt() {
+        return ".vcproj";
+    }
+}
+
+class CompilerInterfaceVC7 extends CompilerInterface {
+    void getBaseCompilerFlags_common(Vector defines, Vector includes, String outDir,Vector rv) {
+
+        // advanced M$ IDE (2003) can only recognize name if it's first or
+        // second attribute in the tag - go guess
+        addAttr(rv, "Name", "VCCLCompilerTool");
+        addAttr(rv, "AdditionalIncludeDirectories", Util.join(",", includes));
+        addAttr(rv, "PreprocessorDefinitions",
+                                Util.join(";", defines).replace("\"","&quot;"));
+        addAttr(rv, "PrecompiledHeaderThrough", "precompiled.hpp");
+        addAttr(rv, "PrecompiledHeaderFile", outDir+Util.sep+"vm.pch");
+        addAttr(rv, "AssemblerListingLocation", outDir);
+        addAttr(rv, "ObjectFile", outDir+Util.sep);
+        addAttr(rv, "ProgramDataBaseFileName", outDir+Util.sep+"vm.pdb");
+        // Set /nologo optin
+        addAttr(rv, "SuppressStartupBanner", "TRUE");
+        // Surpass the default /Tc or /Tp. 0 is compileAsDefault
+        addAttr(rv, "CompileAs", "0");
+        // Set /W3 option. 3 is warningLevel_3
+        addAttr(rv, "WarningLevel", "3");
+        // Set /WX option,
+        addAttr(rv, "WarnAsError", "TRUE");
+        // Set /GS option
+        addAttr(rv, "BufferSecurityCheck", "FALSE");
+        // Set /Zi option. 3 is debugEnabled
+        addAttr(rv, "DebugInformationFormat", "3");
+    }
+    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
+        Vector rv = new Vector();
+
+        getBaseCompilerFlags_common(defines,includes, outDir, rv);
+        // Set /Yu option. 3 is pchUseUsingSpecific
+        // Note: Starting VC8 pchUseUsingSpecific is 2 !!!
+        addAttr(rv, "UsePrecompiledHeader", "3");
+        // Set /EHsc- option
+        addAttr(rv, "ExceptionHandling", "FALSE");
+
+        return rv;
+    }
+
+    Vector getBaseLinkerFlags(String outDir, String outDll) {
+        Vector rv = new Vector();
+
+        addAttr(rv, "Name", "VCLinkerTool");
+        addAttr(rv, "AdditionalOptions",
+                "/export:JNI_GetDefaultJavaVMInitArgs " +
+                "/export:JNI_CreateJavaVM " +
+                "/export:JNI_GetCreatedJavaVMs "+
+                "/export:jio_snprintf /export:jio_printf "+
+                "/export:jio_fprintf /export:jio_vfprintf "+
+                "/export:jio_vsnprintf ");
+        addAttr(rv, "AdditionalDependencies", "Wsock32.lib winmm.lib");
+        addAttr(rv, "OutputFile", outDll);
+        // Set /INCREMENTAL option. 1 is linkIncrementalNo
+        addAttr(rv, "LinkIncremental", "1");
+        addAttr(rv, "SuppressStartupBanner", "TRUE");
+        addAttr(rv, "ModuleDefinitionFile", outDir+Util.sep+"vm.def");
+        addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"vm.pdb");
+        // Set /SUBSYSTEM option. 2 is subSystemWindows
+        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");
+
+        return rv;
+    }
+
+    void  getDebugCompilerFlags_common(String opt,Vector rv) {
+
+        // Set /On option
+        addAttr(rv, "Optimization", opt);
+        // Set /FR option. 1 is brAllInfo
+        addAttr(rv, "BrowseInformation", "1");
+        addAttr(rv, "BrowseInformationFile", "$(IntDir)" + Util.sep);
+        // Set /MD option. 2 is rtMultiThreadedDLL
+        addAttr(rv, "RuntimeLibrary", "2");
+        // Set /Oy- option
+        addAttr(rv, "OmitFramePointers", "FALSE");
+
+    }
+
+    Vector getDebugCompilerFlags(String opt) {
+        Vector rv = new Vector();
+
+        getDebugCompilerFlags_common(opt,rv);
+
+        return rv;
+    }
+
+    Vector getDebugLinkerFlags() {
+        Vector rv = new Vector();
+
+        addAttr(rv, "GenerateDebugInformation", "TRUE"); // == /DEBUG option
+
+        return rv;
+    }
+
+    void getProductCompilerFlags_common(Vector rv) {
+        // Set /O2 option. 2 is optimizeMaxSpeed
+        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.
+        addAttr(rv, "StringPooling", "TRUE");
+        // Set /MD option. 2 is rtMultiThreadedDLL
+        addAttr(rv, "RuntimeLibrary", "2");
+        // Set /Gy option
+        addAttr(rv, "EnableFunctionLevelLinking", "TRUE");
+
+        return rv;
+    }
+
+    Vector getProductLinkerFlags() {
+        Vector rv = new Vector();
+
+        // Set /OPT:REF option. 2 is optReferences
+        addAttr(rv, "OptimizeReferences", "2");
+        // Set /OPT:optFolding option. 2 is optFolding
+        addAttr(rv, "EnableCOMDATFolding", "2");
+
+        return rv;
+    }
+
+    String getOptFlag() {
+        return "2";
+    }
+
+    String getNoOptFlag() {
+        return "0";
+    }
+
+    String makeCfgName(String flavourBuild) {
+        return  flavourBuild + "|" + Util.os;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/WinGammaPlatformVC8.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2005, 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.util.*;
+
+public class WinGammaPlatformVC8 extends WinGammaPlatformVC7 {
+
+    String projectVersion() {return "8.00";};
+
+}
+
+class CompilerInterfaceVC8 extends CompilerInterfaceVC7 {
+
+    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
+        Vector rv = new Vector();
+
+        getBaseCompilerFlags_common(defines,includes, outDir, rv);
+        // Set /Yu option. 2 is pchUseUsingSpecific
+        addAttr(rv, "UsePrecompiledHeader", "2");
+        // Set /EHsc- option. 0 is cppExceptionHandlingNo
+        addAttr(rv, "ExceptionHandling", "0");
+
+        return rv;
+    }
+
+
+    Vector getDebugCompilerFlags(String opt) {
+        Vector rv = new Vector();
+
+        getDebugCompilerFlags_common(opt,rv);
+
+        return rv;
+    }
+
+    Vector getProductCompilerFlags() {
+        Vector rv = new Vector();
+
+        getProductCompilerFlags_common(rv);
+
+        return rv;
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/ProjectCreator/WinGammaPlatformVC9.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2005, 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 WinGammaPlatformVC9 extends WinGammaPlatformVC8 {
+
+    String projectVersion() {return "9.00";};
+
+}
+
+class CompilerInterfaceVC9 extends CompilerInterfaceVC8 {
+}
--- a/src/share/tools/hsdis/hsdis-demo.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/tools/hsdis/hsdis-demo.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -22,6 +22,8 @@
  *
  */
 
+#include "precompiled.hpp"
+
 /* hsdis-demo.c -- dump a range of addresses as native instructions
    This demonstrates the protocol required by the HotSpot PrintAssembly option.
 */
--- a/src/share/tools/hsdis/hsdis.c	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/tools/hsdis/hsdis.c	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -22,6 +22,8 @@
  *
  */
 
+#include "precompiled.hpp"
+
 /* hsdis.c -- dump a range of addresses as native instructions
    This implements the plugin protocol required by the
    HotSpot PrintAssembly option.
--- a/src/share/tools/hsdis/hsdis.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/tools/hsdis/hsdis.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
--- a/src/share/vm/adlc/adlc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/adlc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_ADLC_HPP
+#define SHARE_VM_ADLC_ADLC_HPP
+
 //
 // Standard include file for ADLC parser
 //
@@ -77,18 +80,19 @@
 #define uint32 unsigned int
 #define uint   unsigned int
 
+// VM components
+#include "opto/opcodes.hpp"
+
 // Macros
 // Debugging note:  Put a breakpoint on "abort".
 #undef assert
 #define assert(cond, msg) { if (!(cond)) { fprintf(stderr, "assert fails %s %d: %s\n", __FILE__, __LINE__, msg); abort(); }}
+#undef max
 #define max(a, b)   (((a)>(b)) ? (a) : (b))
 
-// VM components
-#include "opcodes.hpp"
-
 // ADLC components
 #include "arena.hpp"
-#include "adlcVMDeps.hpp"
+#include "opto/adlcVMDeps.hpp"
 #include "filebuff.hpp"
 #include "dict2.hpp"
 #include "forms.hpp"
@@ -101,3 +105,5 @@
 // could have a backpointer to the AD but it's too complicated to pass
 // it everywhere it needs to be available.
 extern ArchDesc* globalAD;
+
+#endif // SHARE_VM_ADLC_ADLC_HPP
--- a/src/share/vm/adlc/adlparse.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/adlparse.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/src/share/vm/adlc/adlparse.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/adlparse.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_ADLPARSE_HPP
+#define SHARE_VM_ADLC_ADLPARSE_HPP
+
 // ADLPARSE.HPP - Definitions for Architecture Description Language Parser
 // Authors: Chris Vick and Mike Paleczny
 
@@ -277,3 +280,5 @@
   static bool equivalent_expressions(const char* str1, const char* str2);
   static void trim(char* &token);  // trim leading & trailing spaces
 };
+
+#endif // SHARE_VM_ADLC_ADLPARSE_HPP
--- a/src/share/vm/adlc/archDesc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/archDesc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1997, 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
@@ -1038,22 +1038,38 @@
   fprintf(fp,"\n");
 }
 
-//---------------------------machineDependentIncludes--------------------------
-// output #include declarations for machine specific files
-void ArchDesc::machineDependentIncludes(ADLFILE &adlfile) {
-  const char *basename = adlfile._name;
-  const char *cp;
-  for (cp = basename; *cp; cp++)
-    if (*cp == '/')  basename = cp+1;
 
+//---------------------------addIncludeGuardStart--------------------------
+// output the start of an include guard.
+void ArchDesc::addIncludeGuardStart(ADLFILE &adlfile, const char* guardString) {
   // Build #include lines
   fprintf(adlfile._fp, "\n");
-  fprintf(adlfile._fp, "#include \"incls/_precompiled.incl\"\n");
-  fprintf(adlfile._fp, "#include \"incls/_%s.incl\"\n",basename);
+  fprintf(adlfile._fp, "#ifndef %s\n", guardString);
+  fprintf(adlfile._fp, "#define %s\n", guardString);
   fprintf(adlfile._fp, "\n");
 
 }
 
+//---------------------------addIncludeGuardEnd--------------------------
+// output the end of an include guard.
+void ArchDesc::addIncludeGuardEnd(ADLFILE &adlfile, const char* guardString) {
+  // Build #include lines
+  fprintf(adlfile._fp, "\n");
+  fprintf(adlfile._fp, "#endif // %s\n", guardString);
+
+}
+
+//---------------------------addInclude--------------------------
+// output the #include line for this file.
+void ArchDesc::addInclude(ADLFILE &adlfile, const char* fileName) {
+  fprintf(adlfile._fp, "#include \"%s\"\n", fileName);
+
+}
+
+void ArchDesc::addInclude(ADLFILE &adlfile, const char* includeDir, const char* fileName) {
+  fprintf(adlfile._fp, "#include \"%s/%s\"\n", includeDir, fileName);
+
+}
 
 //---------------------------addPreprocessorChecks-----------------------------
 // Output C preprocessor code to verify the backend compilation environment.
--- a/src/share/vm/adlc/archDesc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/archDesc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_ARCHDESC_HPP
+#define SHARE_VM_ADLC_ARCHDESC_HPP
+
 // Definitions for Error Flags
 #define  WARN   0
 #define  SYNERR 1
@@ -274,8 +277,13 @@
 
   // output SUN copyright info
   void addSunCopyright(char* legal, int size, FILE *fp);
-  // output #include declarations for machine specific files
-  void machineDependentIncludes(ADLFILE &adlfile);
+  // output the start of an include guard.
+  void addIncludeGuardStart(ADLFILE &adlfile, const char* guardString);
+  // output the end of an include guard.
+  void addIncludeGuardEnd(ADLFILE &adlfile, const char* guardString);
+  // output the #include line for this file.
+  void addInclude(ADLFILE &adlfile, const char* fileName);
+  void addInclude(ADLFILE &adlfile, const char* includeDir, const char* fileName);
   // Output C preprocessor code to verify the backend compilation environment.
   void addPreprocessorChecks(FILE *fp);
   // Output C source and header (source_hpp) blocks.
@@ -387,3 +395,5 @@
   // Allow derived class to output name and position specific info
   virtual void record_position(OutputMap::position place, int index) {}
 };
+
+#endif // SHARE_VM_ADLC_ARCHDESC_HPP
--- a/src/share/vm/adlc/arena.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/arena.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/share/vm/adlc/arena.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/arena.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_ARENA_HPP
+#define SHARE_VM_ADLC_ARENA_HPP
+
 // All classes in the virtual machine must be subclassed
 // by one of the following allocation classes:
 //
@@ -155,3 +158,5 @@
   size_t size_in_bytes() const         {  return _size_in_bytes; }
   void   set_size_in_bytes(size_t size)  { _size_in_bytes = size;   }
 };
+
+#endif // SHARE_VM_ADLC_ARENA_HPP
--- a/src/share/vm/adlc/dfa.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/dfa.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/src/share/vm/adlc/dict2.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/dict2.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/share/vm/adlc/dict2.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/dict2.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#ifndef _DICT_
-#define _DICT_
+#ifndef SHARE_VM_ADLC_DICT2_HPP
+#define SHARE_VM_ADLC_DICT2_HPP
+
 // Dictionaries - An Abstract Data Type
 
 
@@ -117,4 +118,4 @@
   int test(void) { return _i<_d->_size;} // Test for end of iteration
 };
 
-#endif // _DICT_
+#endif // SHARE_VM_ADLC_DICT2_HPP
--- a/src/share/vm/adlc/filebuff.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/filebuff.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/src/share/vm/adlc/filebuff.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/filebuff.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_FILEBUFF_HPP
+#define SHARE_VM_ADLC_FILEBUFF_HPP
+
 // FILEBUFF.HPP - Definitions for parser file buffering routines
 #include <iostream>
 
@@ -99,3 +102,5 @@
   void print(ostream&);
   friend ostream& operator<< (ostream&, FileBuffRegion&);
 };
+
+#endif // SHARE_VM_ADLC_FILEBUFF_HPP
--- a/src/share/vm/adlc/forms.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/forms.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/src/share/vm/adlc/forms.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/forms.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_FORMS_HPP
+#define SHARE_VM_ADLC_FORMS_HPP
+
 // FORMS.HPP - ADL Parser Generic and Utility Forms Classes
 
 #define TRUE 1
@@ -588,3 +591,5 @@
   void print_asserts(FILE *fp);
   void dump();
 };
+
+#endif // SHARE_VM_ADLC_FORMS_HPP
--- a/src/share/vm/adlc/formsopt.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/formsopt.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/share/vm/adlc/formsopt.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/formsopt.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_FORMSOPT_HPP
+#define SHARE_VM_ADLC_FORMSOPT_HPP
+
 // FORMSOPT.HPP - ADL Parser Target Specific Optimization Forms Classes
 
 // Class List
@@ -546,3 +549,5 @@
   void dump();
   void output(FILE *fp);
 };
+
+#endif // SHARE_VM_ADLC_FORMSOPT_HPP
--- a/src/share/vm/adlc/formssel.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/formssel.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_ADLC_FORMSSEL_HPP
+#define SHARE_VM_ADLC_FORMSSEL_HPP
+
 // FORMSSEL.HPP - ADL Parser Instruction Selection Forms Classes
 
 // Class List
@@ -1062,3 +1065,5 @@
   void dump();
   void output(FILE *fp);
 };
+
+#endif // SHARE_VM_ADLC_FORMSSEL_HPP
--- a/src/share/vm/adlc/main.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/adlc/main.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -34,6 +34,17 @@
 
 ArchDesc* globalAD = NULL;      // global reference to Architecture Description object
 
+const char* get_basename(const char* filename) {
+  const char *basename = filename;
+  const char *cp;
+  for (cp = basename; *cp; cp++) {
+    if (*cp == '/') {
+      basename = cp+1;
+    }
+  }
+  return basename;
+}
+
 //------------------------------main-------------------------------------------
 int main(int argc, char *argv[])
 {
@@ -193,16 +204,69 @@
   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_PIPELINE_file._fp);  // .cpp
   AD.addSunCopyright(legal_text, legal_sz, AD._VM_file._fp);            // .hpp
   AD.addSunCopyright(legal_text, legal_sz, AD._DFA_file._fp);           // .cpp
+  // Add include guards for all .hpp files
+  AD.addIncludeGuardStart(AD._HPP_file, "GENERATED_ADFILES_AD_HPP");        // .hpp
+  AD.addIncludeGuardStart(AD._VM_file, "GENERATED_ADFILES_ADGLOBALS_HPP");  // .hpp
+  // Add includes
+  AD.addInclude(AD._CPP_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_file, "adfiles", get_basename(AD._VM_file._name));
+  AD.addInclude(AD._CPP_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._CPP_file, "memory/allocation.inline.hpp");
+  AD.addInclude(AD._CPP_file, "asm/assembler.hpp");
+  AD.addInclude(AD._CPP_file, "code/vmreg.hpp");
+  AD.addInclude(AD._CPP_file, "gc_interface/collectedHeap.inline.hpp");
+  AD.addInclude(AD._CPP_file, "oops/compiledICHolderOop.hpp");
+  AD.addInclude(AD._CPP_file, "oops/markOop.hpp");
+  AD.addInclude(AD._CPP_file, "oops/methodOop.hpp");
+  AD.addInclude(AD._CPP_file, "oops/oop.inline.hpp");
+  AD.addInclude(AD._CPP_file, "oops/oop.inline2.hpp");
+  AD.addInclude(AD._CPP_file, "opto/cfgnode.hpp");
+  AD.addInclude(AD._CPP_file, "opto/locknode.hpp");
+  AD.addInclude(AD._CPP_file, "opto/opcodes.hpp");
+  AD.addInclude(AD._CPP_file, "opto/regalloc.hpp");
+  AD.addInclude(AD._CPP_file, "opto/regmask.hpp");
+  AD.addInclude(AD._CPP_file, "opto/runtime.hpp");
+  AD.addInclude(AD._CPP_file, "runtime/biasedLocking.hpp");
+  AD.addInclude(AD._CPP_file, "runtime/sharedRuntime.hpp");
+  AD.addInclude(AD._CPP_file, "runtime/stubRoutines.hpp");
+  AD.addInclude(AD._CPP_file, "utilities/growableArray.hpp");
+#ifdef TARGET_ARCH_x86
+  AD.addInclude(AD._CPP_file, "assembler_x86.inline.hpp");
+  AD.addInclude(AD._CPP_file, "nativeInst_x86.hpp");
+  AD.addInclude(AD._CPP_file, "vmreg_x86.inline.hpp");
+#endif
+#ifdef TARGET_ARCH_sparc
+  AD.addInclude(AD._CPP_file, "assembler_sparc.inline.hpp");
+  AD.addInclude(AD._CPP_file, "nativeInst_sparc.hpp");
+  AD.addInclude(AD._CPP_file, "vmreg_sparc.inline.hpp");
+#endif
+  AD.addInclude(AD._HPP_file, "memory/allocation.hpp");
+  AD.addInclude(AD._HPP_file, "opto/machnode.hpp");
+  AD.addInclude(AD._HPP_file, "opto/node.hpp");
+  AD.addInclude(AD._HPP_file, "opto/regalloc.hpp");
+  AD.addInclude(AD._HPP_file, "opto/subnode.hpp");
+  AD.addInclude(AD._CPP_CLONE_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_CLONE_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._CPP_EXPAND_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_EXPAND_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._CPP_FORMAT_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_FORMAT_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._CPP_GEN_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_GEN_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._CPP_GEN_file, "opto/cfgnode.hpp");
+  AD.addInclude(AD._CPP_GEN_file, "opto/locknode.hpp");
+  AD.addInclude(AD._CPP_MISC_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_MISC_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._CPP_PEEPHOLE_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_PEEPHOLE_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._CPP_PIPELINE_file, "precompiled.hpp");
+  AD.addInclude(AD._CPP_PIPELINE_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._DFA_file, "precompiled.hpp");
+  AD.addInclude(AD._DFA_file, "adfiles", get_basename(AD._HPP_file._name));
+  AD.addInclude(AD._DFA_file, "opto/matcher.hpp");
+  AD.addInclude(AD._DFA_file, "opto/opcodes.hpp");
   // Make sure each .cpp file starts with include lines:
   // files declaring and defining generators for Mach* Objects (hpp,cpp)
-  AD.machineDependentIncludes(AD._CPP_file);      // .cpp
-  AD.machineDependentIncludes(AD._CPP_CLONE_file);     // .cpp
-  AD.machineDependentIncludes(AD._CPP_EXPAND_file);    // .cpp
-  AD.machineDependentIncludes(AD._CPP_FORMAT_file);    // .cpp
-  AD.machineDependentIncludes(AD._CPP_GEN_file);       // .cpp
-  AD.machineDependentIncludes(AD._CPP_MISC_file);      // .cpp
-  AD.machineDependentIncludes(AD._CPP_PEEPHOLE_file);  // .cpp
-  AD.machineDependentIncludes(AD._CPP_PIPELINE_file);  // .cpp
   // Generate the result files:
   // enumerations, class definitions, object generators, and the DFA
   // file containing enumeration of machine operands & instructions (hpp)
@@ -244,8 +308,10 @@
   AD.addPreprocessorChecks(AD._CPP_PIPELINE_file._fp);  // .cpp
 
   // define the finite automata that selects lowest cost production
-  AD.machineDependentIncludes(AD._DFA_file);      // .cpp
   AD.buildDFA(AD._DFA_file._fp);
+  // Add include guards for all .hpp files
+  AD.addIncludeGuardEnd(AD._HPP_file, "GENERATED_ADFILES_AD_HPP");        // .hpp
+  AD.addIncludeGuardEnd(AD._VM_file, "GENERATED_ADFILES_ADGLOBALS_HPP");  // .hpp
 
   AD.close_files(0);               // Close all input/output files
 
--- a/src/share/vm/asm/assembler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/asm/assembler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_assembler.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "asm/codeBuffer.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/os.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.inline.hpp"
+#endif
 
 
 // Implementation of AbstractAssembler
--- a/src/share/vm/asm/assembler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/asm/assembler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,28 @@
  *
  */
 
+#ifndef SHARE_VM_ASM_ASSEMBLER_HPP
+#define SHARE_VM_ASM_ASSEMBLER_HPP
+
+#include "code/oopRecorder.hpp"
+#include "code/relocInfo.hpp"
+#include "memory/allocation.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_ARCH_x86
+# include "register_x86.hpp"
+# include "vm_version_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "register_sparc.hpp"
+# include "vm_version_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "register_zero.hpp"
+# include "vm_version_zero.hpp"
+#endif
+
 // This file contains platform-independent assembler declarations.
 
 class CodeBuffer;
@@ -348,4 +370,15 @@
 #endif // PRODUCT
 };
 
-#include "incls/_assembler_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.hpp"
+#endif
+
+
+#endif // SHARE_VM_ASM_ASSEMBLER_HPP
--- a/src/share/vm/asm/assembler.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/asm/assembler.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_ASM_ASSEMBLER_INLINE_HPP
+#define SHARE_VM_ASM_ASSEMBLER_INLINE_HPP
+
+#include "asm/assembler.hpp"
+#include "asm/codeBuffer.hpp"
+#include "compiler/disassembler.hpp"
+#include "runtime/threadLocalStorage.hpp"
+
 inline void AbstractAssembler::sync() {
   CodeSection* cs = code_section();
   guarantee(cs->start() == _code_begin, "must not shift code buffer");
@@ -133,3 +141,5 @@
   }
   return ptr;
 }
+
+#endif // SHARE_VM_ASM_ASSEMBLER_INLINE_HPP
--- a/src/share/vm/asm/codeBuffer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/asm/codeBuffer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_codeBuffer.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/codeBuffer.hpp"
+#include "compiler/disassembler.hpp"
+#include "utilities/copy.hpp"
 
 // The structure of a CodeSection:
 //
--- a/src/share/vm/asm/codeBuffer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/asm/codeBuffer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_ASM_CODEBUFFER_HPP
+#define SHARE_VM_ASM_CODEBUFFER_HPP
+
+#include "asm/assembler.hpp"
+#include "code/oopRecorder.hpp"
+#include "code/relocInfo.hpp"
+
 class  CodeComments;
 class  AbstractAssembler;
 class  MacroAssembler;
@@ -550,7 +557,16 @@
 
 
   // The following header contains architecture-specific implementations
-  #include "incls/_codeBuffer_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "codeBuffer_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "codeBuffer_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "codeBuffer_zero.hpp"
+#endif
+
 };
 
 
@@ -562,3 +578,5 @@
   if (remaining() < amount) { _outer->expand(this, amount); return true; }
   return false;
 }
+
+#endif // SHARE_VM_ASM_CODEBUFFER_HPP
--- a/src/share/vm/asm/register.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/asm/register.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_register.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/register.hpp"
 
 
 // Intentionally left blank
--- a/src/share/vm/asm/register.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/asm/register.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_ASM_REGISTER_HPP
+#define SHARE_VM_ASM_REGISTER_HPP
+
+#include "utilities/top.hpp"
+
 // Use AbstractRegister as shortcut
 class AbstractRegisterImpl;
 typedef AbstractRegisterImpl* AbstractRegister;
@@ -209,3 +214,5 @@
     "registers must be different"
   );
 }
+
+#endif // SHARE_VM_ASM_REGISTER_HPP
--- a/src/share/vm/c1/c1_CFGPrinter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_CFGPrinter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_CFGPrinter.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_CFGPrinter.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_LIR.hpp"
+#include "c1/c1_LinearScan.hpp"
+#include "c1/c1_ValueStack.hpp"
 
 #ifndef PRODUCT
 
--- a/src/share/vm/c1/c1_CFGPrinter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_CFGPrinter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_CFGPRINTER_HPP
+#define SHARE_VM_C1_C1_CFGPRINTER_HPP
+
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_Instruction.hpp"
+
 #ifndef PRODUCT
 
 // This is a utility class used for recording the results of a
@@ -44,3 +50,5 @@
 };
 
 #endif
+
+#endif // SHARE_VM_C1_C1_CFGPRINTER_HPP
--- a/src/share/vm/c1/c1_Canonicalizer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Canonicalizer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Canonicalizer.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Canonicalizer.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciArray.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 
 class PrintValueVisitor: public ValueVisitor {
--- a/src/share/vm/c1/c1_Canonicalizer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Canonicalizer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_CANONICALIZER_HPP
+#define SHARE_VM_C1_C1_CANONICALIZER_HPP
+
+#include "c1/c1_Instruction.hpp"
+
 class Canonicalizer: InstructionVisitor {
  private:
   Compilation *_compilation;
@@ -98,3 +103,5 @@
   virtual void do_ProfileCall    (ProfileCall*     x);
   virtual void do_ProfileInvoke  (ProfileInvoke*   x);
 };
+
+#endif // SHARE_VM_C1_C1_CANONICALIZER_HPP
--- a/src/share/vm/c1/c1_CodeStubs.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_CodeStubs.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_CODESTUBS_HPP
+#define SHARE_VM_C1_C1_CODESTUBS_HPP
+
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LIR.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "utilities/array.hpp"
+
 class CodeEmitInfo;
 class LIR_Assembler;
 class LIR_OpVisitState;
@@ -586,3 +596,5 @@
 
 #endif // SERIALGC
 //////////////////////////////////////////////////////////////////////////////////////////
+
+#endif // SHARE_VM_C1_C1_CODESTUBS_HPP
--- a/src/share/vm/c1/c1_Compilation.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Compilation.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Compilation.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_CFGPrinter.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_LinearScan.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_ValueMap.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "code/debugInfoRec.hpp"
 
 
 typedef enum {
@@ -471,7 +479,14 @@
   _exception_info_list = new ExceptionInfoList();
   _implicit_exception_table.set_size(0);
   compile_method();
-  if (is_profiling() && _would_profile) {
+  if (bailed_out()) {
+    _env->record_method_not_compilable(bailout_msg(), !TieredCompilation);
+    if (is_profiling()) {
+      // Compilation failed, create MDO, which would signal the interpreter
+      // to start profiling on its own.
+      _method->build_method_data();
+    }
+  } else if (is_profiling() && _would_profile) {
     ciMethodData *md = method->method_data();
     assert (md != NULL, "Should have MDO");
     md->set_would_profile(_would_profile);
--- a/src/share/vm/c1/c1_Compilation.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Compilation.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_COMPILATION_HPP
+#define SHARE_VM_C1_C1_COMPILATION_HPP
+
+#include "ci/ciEnv.hpp"
+#include "code/exceptionHandlerTable.hpp"
+#include "memory/resourceArea.hpp"
+
 class CompilationResourceObj;
 class XHandlers;
 class ExceptionInfo;
@@ -178,15 +185,11 @@
     return (int) NMethodSizeLimit;  // default 256K or 512K
 #else
     // conditional branches on PPC are restricted to 16 bit signed
-    return MAX2((unsigned int)NMethodSizeLimit,32*K);
+    return MIN2((unsigned int)NMethodSizeLimit,32*K);
 #endif
   }
   static int desired_max_constant_size() {
-#ifndef PPC
-    return (int) NMethodSizeLimit / 10;  // about 25K
-#else
-    return (MAX2((unsigned int)NMethodSizeLimit, 32*K)) / 10;
-#endif
+    return desired_max_code_buffer_size() / 10;
   }
 
   static void setup_code_buffer(CodeBuffer* cb, int call_stub_estimate);
@@ -289,3 +292,5 @@
   int pco()                                      { return _pco; }
   XHandlers* exception_handlers()                { return _exception_handlers; }
 };
+
+#endif // SHARE_VM_C1_C1_COMPILATION_HPP
--- a/src/share/vm/c1/c1_Compiler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Compiler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,25 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Compiler.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_Compiler.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_GraphBuilder.hpp"
+#include "c1/c1_LinearScan.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "c1/c1_ValueType.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 volatile int Compiler::_runtimes = uninitialized;
 
--- a/src/share/vm/c1/c1_Compiler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Compiler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_COMPILER_HPP
+#define SHARE_VM_C1_C1_COMPILER_HPP
+
+#include "compiler/abstractCompiler.hpp"
+
 // There is one instance of the Compiler per CompilerThread.
 
 class Compiler: public AbstractCompiler {
@@ -61,3 +66,5 @@
   // Print compilation timers and statistics
   virtual void print_timers();
 };
+
+#endif // SHARE_VM_C1_C1_COMPILER_HPP
--- a/src/share/vm/c1/c1_Defs.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Defs.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,5 +22,6 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Defs.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Defs.hpp"
+
--- a/src/share/vm/c1/c1_Defs.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Defs.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_DEFS_HPP
+#define SHARE_VM_C1_C1_DEFS_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_ARCH_x86
+# include "register_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "register_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "register_zero.hpp"
+#endif
+
 // set frame size and return address offset to these values in blobs
 // (if the compiled frame uses ebp as link pointer on IA; otherwise,
 // the frame size must be fixed)
@@ -30,7 +44,13 @@
 };
 
 
-# include "incls/_c1_Defs_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "c1_Defs_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_Defs_sparc.hpp"
+#endif
+
 
 // native word offsets from memory address
 enum {
@@ -49,3 +69,5 @@
 enum {
   float_saved_as_double = pd_float_saved_as_double
 };
+
+#endif // SHARE_VM_C1_C1_DEFS_HPP
--- a/src/share/vm/c1/c1_FpuStackSim.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_FpuStackSim.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,22 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_FPUSTACKSIM_HPP
+#define SHARE_VM_C1_C1_FPUSTACKSIM_HPP
+
+#include "c1/c1_FrameMap.hpp"
+#include "memory/allocation.hpp"
+
 // Provides location for forward declaration of this class, which is
 // only implemented on Intel
 class FpuStackSim;
 
-# include "incls/_c1_FpuStackSim_pd.hpp.incl"  // platform dependent declarations
+#ifdef TARGET_ARCH_x86
+# include "c1_FpuStackSim_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_FpuStackSim_sparc.hpp"
+#endif
+
+
+#endif // SHARE_VM_C1_C1_FPUSTACKSIM_HPP
--- a/src/share/vm/c1/c1_FrameMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_FrameMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_FrameMap.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_LIR.hpp"
+#include "runtime/sharedRuntime.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vmreg_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vmreg_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vmreg_zero.inline.hpp"
+#endif
 
 
 
--- a/src/share/vm/c1/c1_FrameMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_FrameMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_FRAMEMAP_HPP
+#define SHARE_VM_C1_C1_FRAMEMAP_HPP
+
+#include "asm/assembler.hpp"
+#include "c1/c1_Defs.hpp"
+#include "c1/c1_LIR.hpp"
+#include "code/vmreg.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/synchronizer.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 class ciMethod;
 class CallingConvention;
 class BasicTypeArray;
@@ -70,7 +82,13 @@
     spill_slot_size_in_bytes = 4
   };
 
-# include "incls/_c1_FrameMap_pd.hpp.incl"  // platform dependent declarations
+#ifdef TARGET_ARCH_x86
+# include "c1_FrameMap_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_FrameMap_sparc.hpp"
+#endif
+
 
   friend class LIR_OprDesc;
 
@@ -266,3 +284,5 @@
   }
 #endif // PRODUCT
 };
+
+#endif // SHARE_VM_C1_C1_FRAMEMAP_HPP
--- a/src/share/vm/c1/c1_GraphBuilder.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_GraphBuilder.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_GraphBuilder.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_CFGPrinter.hpp"
+#include "c1/c1_Canonicalizer.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_GraphBuilder.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciKlass.hpp"
+#include "interpreter/bytecode.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "utilities/bitMap.inline.hpp"
 
 class BlockListBuilder VALUE_OBJ_CLASS_SPEC {
  private:
--- a/src/share/vm/c1/c1_GraphBuilder.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_GraphBuilder.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_GRAPHBUILDER_HPP
+#define SHARE_VM_C1_C1_GRAPHBUILDER_HPP
+
+#include "c1/c1_IR.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_ValueMap.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciMethodData.hpp"
+#include "ci/ciStreams.hpp"
+
 class MemoryBuffer;
 
 class GraphBuilder VALUE_OBJ_CLASS_SPEC {
@@ -378,3 +388,5 @@
 
   BlockBegin* start() const                      { return _start; }
 };
+
+#endif // SHARE_VM_C1_C1_GRAPHBUILDER_HPP
--- a/src/share/vm/c1/c1_IR.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_IR.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_IR.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_GraphBuilder.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_Optimizer.hpp"
+#include "utilities/bitMap.inline.hpp"
 
 
 // Implementation of XHandlers
@@ -321,7 +327,7 @@
   void visit(Value* n) {
     // Local instructions and Phis for expression stack values at the
     // start of basic blocks are not added to the instruction list
-    if (!(*n)->is_linked()&& (*n)->can_be_linked()) {
+    if (!(*n)->is_linked() && (*n)->can_be_linked()) {
       assert(false, "a node was not appended to the graph");
       Compilation::current()->bailout("a node was not appended to the graph");
     }
--- a/src/share/vm/c1/c1_IR.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_IR.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_IR_HPP
+#define SHARE_VM_C1_C1_IR_HPP
+
+#include "c1/c1_Instruction.hpp"
+#include "ci/ciExceptionHandler.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciStreams.hpp"
+#include "memory/allocation.hpp"
+
 // An XHandler is a C1 internal description for an exception handler
 
 class XHandler: public CompilationResourceObj {
@@ -337,3 +346,5 @@
 
   virtual void block_do(BlockBegin* block);
 };
+
+#endif // SHARE_VM_C1_C1_IR_HPP
--- a/src/share/vm/c1/c1_Instruction.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Instruction.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Instruction.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
 
 
 // Implementation of Instruction
@@ -415,28 +420,26 @@
   return false;
 }
 
-
-BlockBegin* Constant::compare(Instruction::Condition cond, Value right,
-                              BlockBegin* true_sux, BlockBegin* false_sux) {
+Constant::CompareResult Constant::compare(Instruction::Condition cond, Value right) const {
   Constant* rc = right->as_Constant();
   // other is not a constant
-  if (rc == NULL) return NULL;
+  if (rc == NULL) return not_comparable;
 
   ValueType* lt = type();
   ValueType* rt = rc->type();
   // different types
-  if (lt->base() != rt->base()) return NULL;
+  if (lt->base() != rt->base()) return not_comparable;
   switch (lt->tag()) {
   case intTag: {
     int x = lt->as_IntConstant()->value();
     int y = rt->as_IntConstant()->value();
     switch (cond) {
-    case If::eql: return x == y ? true_sux : false_sux;
-    case If::neq: return x != y ? true_sux : false_sux;
-    case If::lss: return x <  y ? true_sux : false_sux;
-    case If::leq: return x <= y ? true_sux : false_sux;
-    case If::gtr: return x >  y ? true_sux : false_sux;
-    case If::geq: return x >= y ? true_sux : false_sux;
+    case If::eql: return x == y ? cond_true : cond_false;
+    case If::neq: return x != y ? cond_true : cond_false;
+    case If::lss: return x <  y ? cond_true : cond_false;
+    case If::leq: return x <= y ? cond_true : cond_false;
+    case If::gtr: return x >  y ? cond_true : cond_false;
+    case If::geq: return x >= y ? cond_true : cond_false;
     }
     break;
   }
@@ -444,12 +447,12 @@
     jlong x = lt->as_LongConstant()->value();
     jlong y = rt->as_LongConstant()->value();
     switch (cond) {
-    case If::eql: return x == y ? true_sux : false_sux;
-    case If::neq: return x != y ? true_sux : false_sux;
-    case If::lss: return x <  y ? true_sux : false_sux;
-    case If::leq: return x <= y ? true_sux : false_sux;
-    case If::gtr: return x >  y ? true_sux : false_sux;
-    case If::geq: return x >= y ? true_sux : false_sux;
+    case If::eql: return x == y ? cond_true : cond_false;
+    case If::neq: return x != y ? cond_true : cond_false;
+    case If::lss: return x <  y ? cond_true : cond_false;
+    case If::leq: return x <= y ? cond_true : cond_false;
+    case If::gtr: return x >  y ? cond_true : cond_false;
+    case If::geq: return x >= y ? cond_true : cond_false;
     }
     break;
   }
@@ -459,14 +462,14 @@
     assert(xvalue != NULL && yvalue != NULL, "not constants");
     if (xvalue->is_loaded() && yvalue->is_loaded()) {
       switch (cond) {
-      case If::eql: return xvalue == yvalue ? true_sux : false_sux;
-      case If::neq: return xvalue != yvalue ? true_sux : false_sux;
+      case If::eql: return xvalue == yvalue ? cond_true : cond_false;
+      case If::neq: return xvalue != yvalue ? cond_true : cond_false;
       }
     }
     break;
   }
   }
-  return NULL;
+  return not_comparable;
 }
 
 
--- a/src/share/vm/c1/c1_Instruction.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Instruction.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_INSTRUCTION_HPP
+#define SHARE_VM_C1_C1_INSTRUCTION_HPP
+
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_LIR.hpp"
+#include "c1/c1_ValueType.hpp"
+#include "ci/ciField.hpp"
+
 // Predefined classes
 class ciField;
 class ValueStack;
@@ -443,7 +451,7 @@
 
   // generic
   virtual Instruction*      as_Instruction()     { return this; } // to satisfy HASHING1 macro
-  virtual Phi*           as_Phi()          { return NULL; }
+  virtual Phi*              as_Phi()             { return NULL; }
   virtual Local*            as_Local()           { return NULL; }
   virtual Constant*         as_Constant()        { return NULL; }
   virtual AccessField*      as_AccessField()     { return NULL; }
@@ -650,8 +658,24 @@
   virtual intx hash() const;
   virtual bool is_equal(Value v) const;
 
-  virtual BlockBegin* compare(Instruction::Condition condition, Value right,
-                              BlockBegin* true_sux, BlockBegin* false_sux);
+
+  enum CompareResult { not_comparable = -1, cond_false, cond_true };
+
+  virtual CompareResult compare(Instruction::Condition condition, Value right) const;
+  BlockBegin* compare(Instruction::Condition cond, Value right,
+                      BlockBegin* true_sux, BlockBegin* false_sux) const {
+    switch (compare(cond, right)) {
+    case not_comparable:
+      return NULL;
+    case cond_false:
+      return false_sux;
+    case cond_true:
+      return true_sux;
+    default:
+      ShouldNotReachHere();
+      return NULL;
+    }
+  }
 };
 
 
@@ -2287,3 +2311,5 @@
 inline void        BlockBegin::add_successor(BlockBegin* sux)   { assert(_end == NULL, "Would create mismatch with successors of BlockEnd");         _successors.append(sux); }
 
 #undef ASSERT_VALUES
+
+#endif // SHARE_VM_C1_C1_INSTRUCTION_HPP
--- a/src/share/vm/c1/c1_InstructionPrinter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_InstructionPrinter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_InstructionPrinter.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciArray.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciObject.hpp"
 
 
 #ifndef PRODUCT
--- a/src/share/vm/c1/c1_InstructionPrinter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_InstructionPrinter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_INSTRUCTIONPRINTER_HPP
+#define SHARE_VM_C1_C1_INSTRUCTIONPRINTER_HPP
+
+#include "c1/c1_IR.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_Runtime1.hpp"
+
 #ifndef PRODUCT
 class InstructionPrinter: public InstructionVisitor {
  private:
@@ -126,3 +133,5 @@
   virtual void do_ProfileInvoke  (ProfileInvoke*   x);
 };
 #endif // PRODUCT
+
+#endif // SHARE_VM_C1_C1_INSTRUCTIONPRINTER_HPP
--- a/src/share/vm/c1/c1_LIR.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LIR.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_LIR.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_LIR.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciInstance.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 Register LIR_OprDesc::as_register() const {
   return FrameMap::cpu_rnr2reg(cpu_regnr());
--- a/src/share/vm/c1/c1_LIR.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LIR.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_LIR_HPP
+#define SHARE_VM_C1_C1_LIR_HPP
+
+#include "c1/c1_ValueType.hpp"
+
 class BlockBegin;
 class BlockList;
 class LIR_Assembler;
@@ -2282,3 +2287,5 @@
 
 
 inline LIR_Opr LIR_OprDesc::illegalOpr()   { return LIR_OprFact::illegalOpr; };
+
+#endif // SHARE_VM_C1_C1_LIR_HPP
--- a/src/share/vm/c1/c1_LIRAssembler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LIRAssembler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,26 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_LIRAssembler.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciInstance.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+# include "vmreg_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+# include "vmreg_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+# include "vmreg_zero.inline.hpp"
+#endif
 
 
 void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) {
--- a/src/share/vm/c1/c1_LIRAssembler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LIRAssembler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_LIRASSEMBLER_HPP
+#define SHARE_VM_C1_C1_LIRASSEMBLER_HPP
+
+#include "c1/c1_CodeStubs.hpp"
+#include "ci/ciMethodData.hpp"
+#include "oops/methodDataOop.hpp"
+#include "utilities/top.hpp"
+
 class Compilation;
 class ScopeValue;
 class BarrierSet;
@@ -236,5 +244,13 @@
 
   void verify_oop_map(CodeEmitInfo* info);
 
-  #include "incls/_c1_LIRAssembler_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "c1_LIRAssembler_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_LIRAssembler_sparc.hpp"
+#endif
+
 };
+
+#endif // SHARE_VM_C1_C1_LIRASSEMBLER_HPP
--- a/src/share/vm/c1/c1_LIRGenerator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LIRGenerator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_LIRGenerator.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_LIRGenerator.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "ci/ciArrayKlass.hpp"
+#include "ci/ciCPCache.hpp"
+#include "ci/ciInstance.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/bitMap.inline.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/heapRegion.hpp"
+#endif
 
 #ifdef ASSERT
 #define __ gen()->lir(__FILE__, __LINE__)->
@@ -1350,7 +1364,6 @@
     addr = ptr;
   }
   assert(addr->is_register(), "must be a register at this point");
-  assert(addr->type() == T_OBJECT, "addr should point to an object");
 
   LIR_Opr xor_res = new_pointer_register();
   LIR_Opr xor_shift_res = new_pointer_register();
--- a/src/share/vm/c1/c1_LIRGenerator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LIRGenerator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_LIRGENERATOR_HPP
+#define SHARE_VM_C1_C1_LIRGENERATOR_HPP
+
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LIR.hpp"
+#include "ci/ciMethodData.hpp"
+#include "utilities/sizes.hpp"
+
 // The classes responsible for code emission and register allocation
 
 
@@ -596,3 +604,5 @@
   jdouble   get_jdouble_constant() const;
   jint      get_address_constant() const;
 };
+
+#endif // SHARE_VM_C1_C1_LIRGENERATOR_HPP
--- a/src/share/vm/c1/c1_LinearScan.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LinearScan.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,25 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_LinearScan.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_CFGPrinter.hpp"
+#include "c1/c1_CodeStubs.hpp"
+#include "c1/c1_Compilation.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_LIRGenerator.hpp"
+#include "c1/c1_LinearScan.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "utilities/bitMap.inline.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vmreg_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vmreg_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vmreg_zero.inline.hpp"
+#endif
 
 
 #ifndef PRODUCT
--- a/src/share/vm/c1/c1_LinearScan.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_LinearScan.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_LINEARSCAN_HPP
+#define SHARE_VM_C1_C1_LINEARSCAN_HPP
+
+#include "c1/c1_FpuStackSim.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_LIR.hpp"
+#include "c1/c1_LIRGenerator.hpp"
+
 class DebugInfoCache;
 class FpuStackAllocator;
 class IRScopeDebugInfo;
@@ -955,4 +965,12 @@
 
 
 // Pick up platform-dependent implementation details
-# include "incls/_c1_LinearScan_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "c1_LinearScan_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_LinearScan_sparc.hpp"
+#endif
+
+
+#endif // SHARE_VM_C1_C1_LINEARSCAN_HPP
--- a/src/share/vm/c1/c1_MacroAssembler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_MacroAssembler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_MACROASSEMBLER_HPP
+#define SHARE_VM_C1_C1_MACROASSEMBLER_HPP
+
+#include "asm/assembler.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.inline.hpp"
+#endif
+
 class CodeEmitInfo;
 
 class C1_MacroAssembler: public MacroAssembler {
@@ -41,7 +55,13 @@
   void verify_stack_oop(int offset) PRODUCT_RETURN;
   void verify_not_null_oop(Register r)  PRODUCT_RETURN;
 
-#include "incls/_c1_MacroAssembler_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "c1_MacroAssembler_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_MacroAssembler_sparc.hpp"
+#endif
+
 };
 
 
@@ -80,3 +100,5 @@
   int call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2);
   int call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2, Register arg3);
 };
+
+#endif // SHARE_VM_C1_C1_MACROASSEMBLER_HPP
--- a/src/share/vm/c1/c1_Optimizer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Optimizer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Optimizer.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Canonicalizer.hpp"
+#include "c1/c1_Optimizer.hpp"
+#include "c1/c1_ValueMap.hpp"
+#include "c1/c1_ValueSet.hpp"
+#include "c1/c1_ValueStack.hpp"
+#include "utilities/bitMap.inline.hpp"
 
 define_array(ValueSetArray, ValueSet*);
 define_stack(ValueSetList, ValueSetArray);
@@ -38,18 +43,20 @@
  private:
   IR* _hir;
   int _cee_count;                                // the number of CEs successfully eliminated
+  int _ifop_count;                               // the number of IfOps successfully simplified
   int _has_substitution;
 
  public:
-  CE_Eliminator(IR* hir) : _cee_count(0), _hir(hir) {
+  CE_Eliminator(IR* hir) : _cee_count(0), _ifop_count(0), _hir(hir) {
     _has_substitution = false;
     _hir->iterate_preorder(this);
     if (_has_substitution) {
-      // substituted some phis so resolve the substitution
+      // substituted some ifops/phis, so resolve the substitution
       SubstitutionResolver sr(_hir);
     }
   }
   int cee_count() const                          { return _cee_count; }
+  int ifop_count() const                         { return _ifop_count; }
 
   void adjust_exception_edges(BlockBegin* block, BlockBegin* sux) {
     int e = sux->number_of_exception_handlers();
@@ -68,156 +75,214 @@
     }
   }
 
-  virtual void block_do(BlockBegin* block) {
-    // 1) find conditional expression
-    // check if block ends with an If
-    If* if_ = block->end()->as_If();
-    if (if_ == NULL) return;
+  virtual void block_do(BlockBegin* block);
+
+ private:
+  Value make_ifop(Value x, Instruction::Condition cond, Value y, Value tval, Value fval);
+};
 
-    // check if If works on int or object types
-    // (we cannot handle If's working on long, float or doubles yet,
-    // since IfOp doesn't support them - these If's show up if cmp
-    // operations followed by If's are eliminated)
-    ValueType* if_type = if_->x()->type();
-    if (!if_type->is_int() && !if_type->is_object()) return;
+void CE_Eliminator::block_do(BlockBegin* block) {
+  // 1) find conditional expression
+  // check if block ends with an If
+  If* if_ = block->end()->as_If();
+  if (if_ == NULL) return;
 
-    BlockBegin* t_block = if_->tsux();
-    BlockBegin* f_block = if_->fsux();
-    Instruction* t_cur = t_block->next();
-    Instruction* f_cur = f_block->next();
+  // check if If works on int or object types
+  // (we cannot handle If's working on long, float or doubles yet,
+  // since IfOp doesn't support them - these If's show up if cmp
+  // operations followed by If's are eliminated)
+  ValueType* if_type = if_->x()->type();
+  if (!if_type->is_int() && !if_type->is_object()) return;
 
-    // one Constant may be present between BlockBegin and BlockEnd
-    Value t_const = NULL;
-    Value f_const = NULL;
-    if (t_cur->as_Constant() != NULL && !t_cur->can_trap()) {
-      t_const = t_cur;
-      t_cur = t_cur->next();
-    }
-    if (f_cur->as_Constant() != NULL && !f_cur->can_trap()) {
-      f_const = f_cur;
-      f_cur = f_cur->next();
-    }
+  BlockBegin* t_block = if_->tsux();
+  BlockBegin* f_block = if_->fsux();
+  Instruction* t_cur = t_block->next();
+  Instruction* f_cur = f_block->next();
 
-    // check if both branches end with a goto
-    Goto* t_goto = t_cur->as_Goto();
-    if (t_goto == NULL) return;
-    Goto* f_goto = f_cur->as_Goto();
-    if (f_goto == NULL) return;
+  // one Constant may be present between BlockBegin and BlockEnd
+  Value t_const = NULL;
+  Value f_const = NULL;
+  if (t_cur->as_Constant() != NULL && !t_cur->can_trap()) {
+    t_const = t_cur;
+    t_cur = t_cur->next();
+  }
+  if (f_cur->as_Constant() != NULL && !f_cur->can_trap()) {
+    f_const = f_cur;
+    f_cur = f_cur->next();
+  }
 
-    // check if both gotos merge into the same block
-    BlockBegin* sux = t_goto->default_sux();
-    if (sux != f_goto->default_sux()) return;
+  // check if both branches end with a goto
+  Goto* t_goto = t_cur->as_Goto();
+  if (t_goto == NULL) return;
+  Goto* f_goto = f_cur->as_Goto();
+  if (f_goto == NULL) return;
 
-    // check if at least one word was pushed on sux_state
-    ValueStack* sux_state = sux->state();
-    if (sux_state->stack_size() <= if_->state()->stack_size()) return;
+  // check if both gotos merge into the same block
+  BlockBegin* sux = t_goto->default_sux();
+  if (sux != f_goto->default_sux()) return;
 
-    // check if phi function is present at end of successor stack and that
-    // only this phi was pushed on the stack
-    Value sux_phi = sux_state->stack_at(if_->state()->stack_size());
-    if (sux_phi == NULL || sux_phi->as_Phi() == NULL || sux_phi->as_Phi()->block() != sux) return;
-    if (sux_phi->type()->size() != sux_state->stack_size() - if_->state()->stack_size()) return;
-
-    // get the values that were pushed in the true- and false-branch
-    Value t_value = t_goto->state()->stack_at(if_->state()->stack_size());
-    Value f_value = f_goto->state()->stack_at(if_->state()->stack_size());
+  // check if at least one word was pushed on sux_state
+  ValueStack* sux_state = sux->state();
+  if (sux_state->stack_size() <= if_->state()->stack_size()) return;
 
-    // backend does not support floats
-    assert(t_value->type()->base() == f_value->type()->base(), "incompatible types");
-    if (t_value->type()->is_float_kind()) return;
+  // check if phi function is present at end of successor stack and that
+  // only this phi was pushed on the stack
+  Value sux_phi = sux_state->stack_at(if_->state()->stack_size());
+  if (sux_phi == NULL || sux_phi->as_Phi() == NULL || sux_phi->as_Phi()->block() != sux) return;
+  if (sux_phi->type()->size() != sux_state->stack_size() - if_->state()->stack_size()) return;
 
-    // check that successor has no other phi functions but sux_phi
-    // this can happen when t_block or f_block contained additonal stores to local variables
-    // that are no longer represented by explicit instructions
-    for_each_phi_fun(sux, phi,
-                     if (phi != sux_phi) return;
-                     );
-    // true and false blocks can't have phis
-    for_each_phi_fun(t_block, phi, return; );
-    for_each_phi_fun(f_block, phi, return; );
+  // get the values that were pushed in the true- and false-branch
+  Value t_value = t_goto->state()->stack_at(if_->state()->stack_size());
+  Value f_value = f_goto->state()->stack_at(if_->state()->stack_size());
+
+  // backend does not support floats
+  assert(t_value->type()->base() == f_value->type()->base(), "incompatible types");
+  if (t_value->type()->is_float_kind()) return;
 
-    // 2) substitute conditional expression
-    //    with an IfOp followed by a Goto
-    // cut if_ away and get node before
-    Instruction* cur_end = if_->prev(block);
+  // check that successor has no other phi functions but sux_phi
+  // this can happen when t_block or f_block contained additonal stores to local variables
+  // that are no longer represented by explicit instructions
+  for_each_phi_fun(sux, phi,
+                   if (phi != sux_phi) return;
+                   );
+  // true and false blocks can't have phis
+  for_each_phi_fun(t_block, phi, return; );
+  for_each_phi_fun(f_block, phi, return; );
+
+  // 2) substitute conditional expression
+  //    with an IfOp followed by a Goto
+  // cut if_ away and get node before
+  Instruction* cur_end = if_->prev(block);
 
-    // append constants of true- and false-block if necessary
-    // clone constants because original block must not be destroyed
-    assert((t_value != f_const && f_value != t_const) || t_const == f_const, "mismatch");
-    if (t_value == t_const) {
-      t_value = new Constant(t_const->type());
-      NOT_PRODUCT(t_value->set_printable_bci(if_->printable_bci()));
-      cur_end = cur_end->set_next(t_value);
-    }
-    if (f_value == f_const) {
-      f_value = new Constant(f_const->type());
-      NOT_PRODUCT(f_value->set_printable_bci(if_->printable_bci()));
-      cur_end = cur_end->set_next(f_value);
-    }
+  // append constants of true- and false-block if necessary
+  // clone constants because original block must not be destroyed
+  assert((t_value != f_const && f_value != t_const) || t_const == f_const, "mismatch");
+  if (t_value == t_const) {
+    t_value = new Constant(t_const->type());
+    NOT_PRODUCT(t_value->set_printable_bci(if_->printable_bci()));
+    cur_end = cur_end->set_next(t_value);
+  }
+  if (f_value == f_const) {
+    f_value = new Constant(f_const->type());
+    NOT_PRODUCT(f_value->set_printable_bci(if_->printable_bci()));
+    cur_end = cur_end->set_next(f_value);
+  }
 
-    // it is very unlikely that the condition can be statically decided
-    // (this was checked previously by the Canonicalizer), so always
-    // append IfOp
-    Value result = new IfOp(if_->x(), if_->cond(), if_->y(), t_value, f_value);
+  Value result = make_ifop(if_->x(), if_->cond(), if_->y(), t_value, f_value);
+  assert(result != NULL, "make_ifop must return a non-null instruction");
+  if (!result->is_linked() && result->can_be_linked()) {
     NOT_PRODUCT(result->set_printable_bci(if_->printable_bci()));
     cur_end = cur_end->set_next(result);
+  }
 
-    // append Goto to successor
-    ValueStack* state_before = if_->is_safepoint() ? if_->state_before() : NULL;
-    Goto* goto_ = new Goto(sux, state_before, if_->is_safepoint() || t_goto->is_safepoint() || f_goto->is_safepoint());
+  // append Goto to successor
+  ValueStack* state_before = if_->is_safepoint() ? if_->state_before() : NULL;
+  Goto* goto_ = new Goto(sux, state_before, if_->is_safepoint() || t_goto->is_safepoint() || f_goto->is_safepoint());
+
+  // prepare state for Goto
+  ValueStack* goto_state = if_->state();
+  while (sux_state->scope() != goto_state->scope()) {
+    goto_state = goto_state->caller_state();
+    assert(goto_state != NULL, "states do not match up");
+  }
+  goto_state = goto_state->copy(ValueStack::StateAfter, goto_state->bci());
+  goto_state->push(result->type(), result);
+  assert(goto_state->is_same(sux_state), "states must match now");
+  goto_->set_state(goto_state);
+
+  cur_end = cur_end->set_next(goto_, goto_state->bci());
+
+  // Adjust control flow graph
+  BlockBegin::disconnect_edge(block, t_block);
+  BlockBegin::disconnect_edge(block, f_block);
+  if (t_block->number_of_preds() == 0) {
+    BlockBegin::disconnect_edge(t_block, sux);
+  }
+  adjust_exception_edges(block, t_block);
+  if (f_block->number_of_preds() == 0) {
+    BlockBegin::disconnect_edge(f_block, sux);
+  }
+  adjust_exception_edges(block, f_block);
+
+  // update block end
+  block->set_end(goto_);
+
+  // substitute the phi if possible
+  if (sux_phi->as_Phi()->operand_count() == 1) {
+    assert(sux_phi->as_Phi()->operand_at(0) == result, "screwed up phi");
+    sux_phi->set_subst(result);
+    _has_substitution = true;
+  }
+
+  // 3) successfully eliminated a conditional expression
+  _cee_count++;
+  if (PrintCEE) {
+    tty->print_cr("%d. CEE in B%d (B%d B%d)", cee_count(), block->block_id(), t_block->block_id(), f_block->block_id());
+    tty->print_cr("%d. IfOp in B%d", ifop_count(), block->block_id());
+  }
 
-    // prepare state for Goto
-    ValueStack* goto_state = if_->state();
-    while (sux_state->scope() != goto_state->scope()) {
-      goto_state = goto_state->caller_state();
-      assert(goto_state != NULL, "states do not match up");
-    }
-    goto_state = goto_state->copy(ValueStack::StateAfter, goto_state->bci());
-    goto_state->push(result->type(), result);
-    assert(goto_state->is_same(sux_state), "states must match now");
-    goto_->set_state(goto_state);
+  _hir->verify();
+}
+
+Value CE_Eliminator::make_ifop(Value x, Instruction::Condition cond, Value y, Value tval, Value fval) {
+  if (!OptimizeIfOps) {
+    return new IfOp(x, cond, y, tval, fval);
+  }
+
+  tval = tval->subst();
+  fval = fval->subst();
+  if (tval == fval) {
+    _ifop_count++;
+    return tval;
+  }
+
+  x = x->subst();
+  y = y->subst();
+
+  Constant* y_const = y->as_Constant();
+  if (y_const != NULL) {
+    IfOp* x_ifop = x->as_IfOp();
+    if (x_ifop != NULL) {                 // x is an ifop, y is a constant
+      Constant* x_tval_const = x_ifop->tval()->subst()->as_Constant();
+      Constant* x_fval_const = x_ifop->fval()->subst()->as_Constant();
 
-    cur_end = cur_end->set_next(goto_, goto_state->bci());
+      if (x_tval_const != NULL && x_fval_const != NULL) {
+        Instruction::Condition x_ifop_cond = x_ifop->cond();
+
+        Constant::CompareResult t_compare_res = x_tval_const->compare(cond, y_const);
+        Constant::CompareResult f_compare_res = x_fval_const->compare(cond, y_const);
+
+        guarantee(t_compare_res != Constant::not_comparable && f_compare_res != Constant::not_comparable, "incomparable constants in IfOp");
+
+        Value new_tval = t_compare_res == Constant::cond_true ? tval : fval;
+        Value new_fval = f_compare_res == Constant::cond_true ? tval : fval;
 
-    // Adjust control flow graph
-    BlockBegin::disconnect_edge(block, t_block);
-    BlockBegin::disconnect_edge(block, f_block);
-    if (t_block->number_of_preds() == 0) {
-      BlockBegin::disconnect_edge(t_block, sux);
+        _ifop_count++;
+        if (new_tval == new_fval) {
+          return new_tval;
+        } else {
+          return new IfOp(x_ifop->x(), x_ifop_cond, x_ifop->y(), new_tval, new_fval);
+        }
+      }
+    } else {
+      Constant* x_const = x->as_Constant();
+      if (x_const != NULL) {         // x and y are constants
+        Constant::CompareResult x_compare_res = x_const->compare(cond, y_const);
+        guarantee(x_compare_res != Constant::not_comparable, "incomparable constants in IfOp");
+
+        _ifop_count++;
+        return x_compare_res == Constant::cond_true ? tval : fval;
+      }
     }
-    adjust_exception_edges(block, t_block);
-    if (f_block->number_of_preds() == 0) {
-      BlockBegin::disconnect_edge(f_block, sux);
-    }
-    adjust_exception_edges(block, f_block);
-
-    // update block end
-    block->set_end(goto_);
-
-    // substitute the phi if possible
-    if (sux_phi->as_Phi()->operand_count() == 1) {
-      assert(sux_phi->as_Phi()->operand_at(0) == result, "screwed up phi");
-      sux_phi->set_subst(result);
-      _has_substitution = true;
-    }
-
-    // 3) successfully eliminated a conditional expression
-    _cee_count++;
-    if (PrintCEE) {
-      tty->print_cr("%d. CEE in B%d (B%d B%d)", cee_count(), block->block_id(), t_block->block_id(), f_block->block_id());
-    }
-
-    _hir->verify();
   }
-};
-
+  return new IfOp(x, cond, y, tval, fval);
+}
 
 void Optimizer::eliminate_conditional_expressions() {
   // find conditional expressions & replace them with IfOps
   CE_Eliminator ce(ir());
 }
 
-
 class BlockMerger: public BlockClosure {
  private:
   IR* _hir;
--- a/src/share/vm/c1/c1_Optimizer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Optimizer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_OPTIMIZER_HPP
+#define SHARE_VM_C1_C1_OPTIMIZER_HPP
+
+#include "c1/c1_IR.hpp"
+#include "c1/c1_Instruction.hpp"
+#include "memory/allocation.hpp"
+
 class Optimizer VALUE_OBJ_CLASS_SPEC {
  private:
   IR* _ir;
@@ -35,3 +42,5 @@
   void eliminate_blocks();
   void eliminate_null_checks();
 };
+
+#endif // SHARE_VM_C1_C1_OPTIMIZER_HPP
--- a/src/share/vm/c1/c1_Runtime1.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Runtime1.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,41 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_Runtime1.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/codeBuffer.hpp"
+#include "c1/c1_CodeStubs.hpp"
+#include "c1/c1_Defs.hpp"
+#include "c1/c1_FrameMap.hpp"
+#include "c1/c1_LIRAssembler.hpp"
+#include "c1/c1_MacroAssembler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeBlob.hpp"
+#include "code/compiledIC.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/disassembler.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/barrierSet.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/events.hpp"
 
 
 // Implementation of StubAssembler
@@ -107,7 +140,6 @@
     RegisterMap reg_map(thread, false);
     frame runtime_frame = thread->last_frame();
     frame caller_frame = runtime_frame.sender(&reg_map);
-    // bypass VM_DeoptimizeFrame and deoptimize the frame directly
     Deoptimization::deoptimize_frame(thread, caller_frame.id());
     assert(caller_is_deopted(), "Must be deoptimized");
   }
@@ -368,8 +400,7 @@
     if (osr_nm != NULL) {
       RegisterMap map(thread, false);
       frame fr =  thread->last_frame().sender(&map);
-      VM_DeoptimizeFrame deopt(thread, fr.id());
-      VMThread::execute(&deopt);
+      Deoptimization::deoptimize_frame(thread, fr.id());
     }
   JRT_BLOCK_END
   return NULL;
@@ -441,8 +472,8 @@
     // We don't really want to deoptimize the nmethod itself since we
     // can actually continue in the exception handler ourselves but I
     // don't see an easy way to have the desired effect.
-    VM_DeoptimizeFrame deopt(thread, caller_frame.id());
-    VMThread::execute(&deopt);
+    Deoptimization::deoptimize_frame(thread, caller_frame.id());
+    assert(caller_is_deopted(), "Must be deoptimized");
 
     return SharedRuntime::deopt_blob()->unpack_with_exception_in_tls();
   }
@@ -835,8 +866,7 @@
       nm->make_not_entrant();
     }
 
-    VM_DeoptimizeFrame deopt(thread, caller_frame.id());
-    VMThread::execute(&deopt);
+    Deoptimization::deoptimize_frame(thread, caller_frame.id());
 
     // Return to the now deoptimized frame.
   }
--- a/src/share/vm/c1/c1_Runtime1.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_Runtime1.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_RUNTIME1_HPP
+#define SHARE_VM_C1_C1_RUNTIME1_HPP
+
+#include "c1/c1_FrameMap.hpp"
+#include "code/stubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/deoptimization.hpp"
+
 class StubAssembler;
 
 // The Runtime1 holds all assembly stubs and VM
@@ -174,3 +183,5 @@
 
   static void print_statistics()                 PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_C1_C1_RUNTIME1_HPP
--- a/src/share/vm/c1/c1_ValueMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_ValueMap.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_Canonicalizer.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_ValueMap.hpp"
+#include "utilities/bitMap.inline.hpp"
 
 
 #ifndef PRODUCT
--- a/src/share/vm/c1/c1_ValueMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_VALUEMAP_HPP
+#define SHARE_VM_C1_C1_VALUEMAP_HPP
+
+#include "c1/c1_Instruction.hpp"
+#include "c1/c1_ValueSet.hpp"
+#include "memory/allocation.hpp"
+
 class ValueMapEntry: public CompilationResourceObj {
  private:
   intx           _hash;
@@ -226,3 +233,5 @@
   // main entry point that performs global value numbering
   GlobalValueNumbering(IR* ir);
 };
+
+#endif // SHARE_VM_C1_C1_VALUEMAP_HPP
--- a/src/share/vm/c1/c1_ValueSet.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueSet.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,5 +22,6 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_ValueSet.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_ValueSet.hpp"
+
--- a/src/share/vm/c1/c1_ValueSet.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueSet.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_VALUESET_HPP
+#define SHARE_VM_C1_C1_VALUESET_HPP
+
+#include "c1/c1_Instruction.hpp"
+#include "memory/allocation.hpp"
+#include "utilities/bitMap.inline.hpp"
+
 // A ValueSet is a simple abstraction on top of a BitMap representing
 // a set of Instructions. Currently it assumes that the number of
 // instructions is fixed during its lifetime; should make it
@@ -93,3 +100,5 @@
 inline bool ValueSet::equals(ValueSet* other) {
   return _map.is_same(other->_map);
 }
+
+#endif // SHARE_VM_C1_C1_VALUESET_HPP
--- a/src/share/vm/c1/c1_ValueStack.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueStack.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c1_ValueStack.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_IR.hpp"
+#include "c1/c1_InstructionPrinter.hpp"
+#include "c1/c1_ValueStack.hpp"
 
 
 // Implementation of ValueStack
--- a/src/share/vm/c1/c1_ValueStack.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueStack.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_VALUESTACK_HPP
+#define SHARE_VM_C1_C1_VALUESTACK_HPP
+
+#include "c1/c1_Instruction.hpp"
+
 class ValueStack: public CompilationResourceObj {
  public:
   enum Kind {
@@ -322,3 +327,5 @@
     }                                                                                          \
   }                                                                                            \
 }
+
+#endif // SHARE_VM_C1_C1_VALUESTACK_HPP
--- a/src/share/vm/c1/c1_ValueType.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueType.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_ValueType.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_ValueType.hpp"
+#include "ci/ciArray.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciNullObject.hpp"
 
 
 // predefined types
--- a/src/share/vm/c1/c1_ValueType.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_ValueType.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_VALUETYPE_HPP
+#define SHARE_VM_C1_C1_VALUETYPE_HPP
+
+#include "c1/c1_Compilation.hpp"
+#include "ci/ciConstant.hpp"
+
 // type hierarchy
 class ValueType;
 class   VoidType;
@@ -419,3 +425,5 @@
 BasicType  as_BasicType(ValueType* type);
 
 inline ValueType* as_ValueType(ciType* type) { return as_ValueType(type->basic_type()); }
+
+#endif // SHARE_VM_C1_C1_VALUETYPE_HPP
--- a/src/share/vm/c1/c1_globals.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_globals.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,7 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c1_globals.cpp.incl"
+#include "precompiled.hpp"
+#include "c1/c1_globals.hpp"
 
 C1_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, MATERIALIZE_NOTPRODUCT_FLAG)
--- a/src/share/vm/c1/c1_globals.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/c1/c1_globals.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,26 @@
  *
  */
 
+#ifndef SHARE_VM_C1_C1_GLOBALS_HPP
+#define SHARE_VM_C1_C1_GLOBALS_HPP
+
+#include "runtime/globals.hpp"
+#ifdef TARGET_ARCH_x86
+# include "c1_globals_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_globals_sparc.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "c1_globals_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "c1_globals_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "c1_globals_windows.hpp"
+#endif
+
 //
 // Defines all global flags used by the client compiler.
 //
@@ -75,6 +95,9 @@
   develop(bool, SelectivePhiFunctions, true,                                \
           "create phi functions at loop headers only when necessary")       \
                                                                             \
+  develop(bool, OptimizeIfOps, true,                                        \
+          "Optimize multiple IfOps")                                        \
+                                                                            \
   develop(bool, DoCEE, true,                                                \
           "Do Conditional Expression Elimination to simplify CFG")          \
                                                                             \
@@ -300,6 +323,7 @@
 
 
 // Read default values for c1 globals
-// #include "incls/_c1_globals_pd.hpp.incl"
 
 C1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_NOTPRODUCT_FLAG)
+
+#endif // SHARE_VM_C1_C1_GLOBALS_HPP
--- a/src/share/vm/ci/bcEscapeAnalyzer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/bcEscapeAnalyzer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,9 +22,15 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "ci/bcEscapeAnalyzer.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciMethodBlocks.hpp"
+#include "ci/ciStreams.hpp"
+#include "interpreter/bytecode.hpp"
+#include "utilities/bitMap.inline.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_bcEscapeAnalyzer.cpp.incl"
 
 
 #ifndef PRODUCT
--- a/src/share/vm/ci/bcEscapeAnalyzer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/bcEscapeAnalyzer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_CI_BCESCAPEANALYZER_HPP
+#define SHARE_VM_CI_BCESCAPEANALYZER_HPP
+
+#ifdef COMPILER2
+#include "ci/ciMethod.hpp"
+#include "ci/ciMethodData.hpp"
+#include "code/dependencies.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.hpp"
+#include "utilities/growableArray.hpp"
+#endif
+
 // This class implements a fast, conservative analysis of effect of methods
 // on the escape state of their arguments.  The analysis is at the bytecode
 // level.
@@ -147,3 +159,5 @@
   void dump();
 #endif
 };
+
+#endif // SHARE_VM_CI_BCESCAPEANALYZER_HPP
--- a/src/share/vm/ci/ciArray.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciArray.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2000, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciArray.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciArray.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciArray
 //
--- a/src/share/vm/ci/ciArray.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciArray.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIARRAY_HPP
+#define SHARE_VM_CI_CIARRAY_HPP
+
+#include "ci/ciObject.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/typeArrayOop.hpp"
+
 // ciArray
 //
 // This class represents an arrayOop in the HotSpot virtual
@@ -50,3 +58,5 @@
   bool is_array()        { return true; }
   bool is_java_object()  { return true; }
 };
+
+#endif // SHARE_VM_CI_CIARRAY_HPP
--- a/src/share/vm/ci/ciArrayKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciArrayKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciArrayKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciArrayKlass.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciArrayKlass
 //
--- a/src/share/vm/ci/ciArrayKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciArrayKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIARRAYKLASS_HPP
+#define SHARE_VM_CI_CIARRAYKLASS_HPP
+
+#include "ci/ciKlass.hpp"
+
 // ciArrayKlass
 //
 // This class, and its subclasses represent klassOops in the
@@ -57,3 +62,5 @@
 
   static ciArrayKlass* make(ciType* element_type);
 };
+
+#endif // SHARE_VM_CI_CIARRAYKLASS_HPP
--- a/src/share/vm/ci/ciArrayKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciArrayKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIARRAYKLASSKLASS_HPP
+#define SHARE_VM_CI_CIARRAYKLASSKLASS_HPP
+
+#include "ci/ciKlassKlass.hpp"
+
 // ciArrayKlassKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -41,3 +46,5 @@
   // What kind of ciObject is this?
   bool is_array_klass_klass() { return true; }
 };
+
+#endif // SHARE_VM_CI_CIARRAYKLASSKLASS_HPP
--- a/src/share/vm/ci/ciCPCache.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciCPCache.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciCPCache.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciCPCache.hpp"
+#include "ci/ciUtilities.hpp"
+#include "oops/cpCacheOop.hpp"
 
 // ciCPCache
 
--- a/src/share/vm/ci/ciCPCache.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciCPCache.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CICPCACHE_HPP
+#define SHARE_VM_CI_CICPCACHE_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciObject.hpp"
+#include "oops/cpCacheOop.hpp"
+
 // ciCPCache
 //
 // This class represents a constant pool cache.
@@ -57,3 +64,5 @@
 
   void print();
 };
+
+#endif // SHARE_VM_CI_CICPCACHE_HPP
--- a/src/share/vm/ci/ciCallProfile.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciCallProfile.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CICALLPROFILE_HPP
+#define SHARE_VM_CI_CICALLPROFILE_HPP
+
+#include "ci/ciClassList.hpp"
+
 // ciCallProfile
 //
 // This class is used to determine the frequently called method
@@ -73,3 +78,5 @@
     return _receiver[i];
   }
 };
+
+#endif // SHARE_VM_CI_CICALLPROFILE_HPP
--- a/src/share/vm/ci/ciCallSite.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciCallSite.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciCallSite.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciCallSite.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciCallSite
 
--- a/src/share/vm/ci/ciCallSite.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciCallSite.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CICALLSITE_HPP
+#define SHARE_VM_CI_CICALLSITE_HPP
+
+#include "ci/ciInstance.hpp"
+
 // ciCallSite
 //
 // The class represents a java.dyn.CallSite object.
@@ -37,3 +42,5 @@
 
   void print();
 };
+
+#endif // SHARE_VM_CI_CICALLSITE_HPP
--- a/src/share/vm/ci/ciClassList.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciClassList.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CICLASSLIST_HPP
+#define SHARE_VM_CI_CICLASSLIST_HPP
+
 class ciEnv;
 class ciObjectFactory;
 class ciConstantPoolCache;
@@ -118,3 +121,5 @@
 friend class ciArrayKlassKlass;        \
 friend class ciObjArrayKlassKlass;     \
 friend class ciTypeArrayKlassKlass;
+
+#endif // SHARE_VM_CI_CICLASSLIST_HPP
--- a/src/share/vm/ci/ciConstant.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciConstant.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciConstant.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciUtilities.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
 
 // ciConstant
 //
--- a/src/share/vm/ci/ciConstant.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciConstant.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CICONSTANT_HPP
+#define SHARE_VM_CI_CICONSTANT_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciNullObject.hpp"
+
 // ciConstant
 //
 // This class represents a constant value.
@@ -110,3 +116,5 @@
   // Debugging output
   void print();
 };
+
+#endif // SHARE_VM_CI_CICONSTANT_HPP
--- a/src/share/vm/ci/ciConstantPoolCache.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciConstantPoolCache.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciConstantPoolCache.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciConstantPoolCache.hpp"
+#include "ci/ciUtilities.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
 
 // ciConstantPoolCache
 //
--- a/src/share/vm/ci/ciConstantPoolCache.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciConstantPoolCache.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2000, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CICONSTANTPOOLCACHE_HPP
+#define SHARE_VM_CI_CICONSTANTPOOLCACHE_HPP
+
+#include "memory/resourceArea.hpp"
+#include "utilities/growableArray.hpp"
+
 // ciConstantPoolCache
 //
 // The class caches indexed constant pool lookups.
@@ -45,3 +51,5 @@
 
   void print();
 };
+
+#endif // SHARE_VM_CI_CICONSTANTPOOLCACHE_HPP
--- a/src/share/vm/ci/ciEnv.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciEnv.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,44 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciEnv.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciEnv.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciInstanceKlassKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciNullObject.hpp"
+#include "ci/ciObjArrayKlassKlass.hpp"
+#include "ci/ciTypeArrayKlassKlass.hpp"
+#include "ci/ciUtilities.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/scopeDesc.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/compileLog.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/init.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "utilities/dtrace.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 // ciEnv
 //
--- a/src/share/vm/ci/ciEnv.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciEnv.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIENV_HPP
+#define SHARE_VM_CI_CIENV_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciObjectFactory.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/dependencies.hpp"
+#include "code/exceptionHandlerTable.hpp"
+#include "compiler/oopMap.hpp"
+#include "runtime/thread.hpp"
+
 class CompileTask;
 
 // ciEnv
@@ -384,3 +396,5 @@
   void record_method_not_compilable(const char* reason, bool all_tiers = true);
   void record_out_of_memory_failure();
 };
+
+#endif // SHARE_VM_CI_CIENV_HPP
--- a/src/share/vm/ci/ciExceptionHandler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciExceptionHandler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciExceptionHandler.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciExceptionHandler.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciExceptionHandler
 //
--- a/src/share/vm/ci/ciExceptionHandler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciExceptionHandler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIEXCEPTIONHANDLER_HPP
+#define SHARE_VM_CI_CIEXCEPTIONHANDLER_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciInstanceKlass.hpp"
+
 // ciExceptionHandler
 //
 // This class represents an exception handler for a method.
@@ -73,3 +79,5 @@
 
   void      print();
 };
+
+#endif // SHARE_VM_CI_CIEXCEPTIONHANDLER_HPP
--- a/src/share/vm/ci/ciField.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciField.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciField.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciUtilities.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/fieldDescriptor.hpp"
 
 // ciField
 //
--- a/src/share/vm/ci/ciField.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciField.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIFIELD_HPP
+#define SHARE_VM_CI_CIFIELD_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciFlags.hpp"
+#include "ci/ciInstance.hpp"
+
 // ciField
 //
 // This class represents the result of a field lookup in the VM.
@@ -174,3 +182,5 @@
   void print();
   void print_name_on(outputStream* st);
 };
+
+#endif // SHARE_VM_CI_CIFIELD_HPP
--- a/src/share/vm/ci/ciFlags.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciFlags.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciFlags.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciFlags.hpp"
 
 // ciFlags
 //
--- a/src/share/vm/ci/ciFlags.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciFlags.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIFLAGS_HPP
+#define SHARE_VM_CI_CIFLAGS_HPP
+
+#include "ci/ciClassList.hpp"
+#include "memory/allocation.hpp"
+#include "prims/jvm.h"
+#include "utilities/accessFlags.hpp"
+
 // ciFlags
 //
 // This class represents klass or method flags.
@@ -59,3 +67,5 @@
   void print_member_flags(outputStream* st = tty);
   void print(outputStream* st = tty);
 };
+
+#endif // SHARE_VM_CI_CIFLAGS_HPP
--- a/src/share/vm/ci/ciInstance.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciInstance.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,14 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciInstance.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciUtilities.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "oops/oop.inline.hpp"
 
 // ciInstance
 //
--- a/src/share/vm/ci/ciInstance.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciInstance.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIINSTANCE_HPP
+#define SHARE_VM_CI_CIINSTANCE_HPP
+
+#include "ci/ciObject.hpp"
+#include "oops/instanceOop.hpp"
+
 // ciInstance
 //
 // This class represents an instanceOop in the HotSpot virtual
@@ -59,3 +65,5 @@
   // Constant value of a field at the specified offset.
   ciConstant field_value_by_offset(int field_offset);
 };
+
+#endif // SHARE_VM_CI_CIINSTANCE_HPP
--- a/src/share/vm/ci/ciInstanceKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciInstanceKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciInstanceKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciUtilities.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/fieldDescriptor.hpp"
 
 // ciInstanceKlass
 //
@@ -564,7 +572,7 @@
 // This is OK, since any dependencies we decide to assert
 // will be checked later under the Compile_lock.
 ciInstanceKlass* ciInstanceKlass::implementor(int n) {
-  if (n > implementors_limit) {
+  if (n >= implementors_limit) {
     return NULL;
   }
   ciInstanceKlass* impl = _implementors[n];
--- a/src/share/vm/ci/ciInstanceKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciInstanceKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIINSTANCEKLASS_HPP
+#define SHARE_VM_CI_CIINSTANCEKLASS_HPP
+
+#include "ci/ciConstantPoolCache.hpp"
+#include "ci/ciFlags.hpp"
+#include "ci/ciInstanceKlassKlass.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciSymbol.hpp"
+
 // ciInstanceKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -215,3 +224,5 @@
   bool is_instance_klass() { return true; }
   bool is_java_klass()     { return true; }
 };
+
+#endif // SHARE_VM_CI_CIINSTANCEKLASS_HPP
--- a/src/share/vm/ci/ciInstanceKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciInstanceKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciInstanceKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciInstanceKlassKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciInstanceKlassKlass
 //
--- a/src/share/vm/ci/ciInstanceKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciInstanceKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIINSTANCEKLASSKLASS_HPP
+#define SHARE_VM_CI_CIINSTANCEKLASSKLASS_HPP
+
+#include "ci/ciKlassKlass.hpp"
+
 // ciInstanceKlassKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -48,3 +53,5 @@
   // Return the distinguished ciInstanceKlassKlass instance.
   static ciInstanceKlassKlass* make();
 };
+
+#endif // SHARE_VM_CI_CIINSTANCEKLASSKLASS_HPP
--- a/src/share/vm/ci/ciKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciUtilities.hpp"
+#include "oops/oop.inline.hpp"
 
 // ciKlass
 //
--- a/src/share/vm/ci/ciKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIKLASS_HPP
+#define SHARE_VM_CI_CIKLASS_HPP
+
+#include "ci/ciType.hpp"
+#include "oops/klassOop.hpp"
+
 // ciKlass
 //
 // This class and its subclasses represent klassOops in the
@@ -117,3 +123,5 @@
 
   void print_name_on(outputStream* st);
 };
+
+#endif // SHARE_VM_CI_CIKLASS_HPP
--- a/src/share/vm/ci/ciKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciKlassKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciKlassKlass
 //
--- a/src/share/vm/ci/ciKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIKLASSKLASS_HPP
+#define SHARE_VM_CI_CIKLASSKLASS_HPP
+
+#include "ci/ciKlass.hpp"
+#include "ci/ciSymbol.hpp"
+
 // ciKlassKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -49,3 +55,5 @@
   // Return the distinguished ciKlassKlass instance.
   static ciKlassKlass* make();
 };
+
+#endif // SHARE_VM_CI_CIKLASSKLASS_HPP
--- a/src/share/vm/ci/ciMethod.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethod.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,41 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciMethod.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciCallProfile.hpp"
+#include "ci/ciExceptionHandler.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciMethodBlocks.hpp"
+#include "ci/ciMethodData.hpp"
+#include "ci/ciMethodKlass.hpp"
+#include "ci/ciStreams.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciUtilities.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "compiler/abstractCompiler.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "compiler/methodLiveness.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/generateOopMap.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/deoptimization.hpp"
+#include "utilities/bitMap.inline.hpp"
+#include "utilities/xmlstream.hpp"
+#ifdef COMPILER2
+#include "ci/bcEscapeAnalyzer.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "oops/methodOop.hpp"
+#endif
+#ifdef SHARK
+#include "ci/ciTypeFlow.hpp"
+#include "oops/methodOop.hpp"
+#endif
 
 // ciMethod
 //
--- a/src/share/vm/ci/ciMethod.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethod.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIMETHOD_HPP
+#define SHARE_VM_CI_CIMETHOD_HPP
+
+#include "ci/ciFlags.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciObject.hpp"
+#include "ci/ciSignature.hpp"
+#include "compiler/methodLiveness.hpp"
+#include "prims/methodHandles.hpp"
+#include "utilities/bitMap.hpp"
+
 class ciMethodBlocks;
 class MethodLiveness;
 class BitMap;
@@ -269,3 +280,5 @@
     return MethodHandles::decode_method(get_oop(), receiver_limit_oop, flags);
   }
 };
+
+#endif // SHARE_VM_CI_CIMETHOD_HPP
--- a/src/share/vm/ci/ciMethodBlocks.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodBlocks.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciMethodBlocks.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethodBlocks.hpp"
+#include "ci/ciStreams.hpp"
+#include "interpreter/bytecode.hpp"
+#include "utilities/copy.hpp"
 
 // ciMethodBlocks
 
--- a/src/share/vm/ci/ciMethodBlocks.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodBlocks.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIMETHODBLOCKS_HPP
+#define SHARE_VM_CI_CIMETHODBLOCKS_HPP
+
+#include "ci/ciMethod.hpp"
+#include "memory/resourceArea.hpp"
+#include "utilities/growableArray.hpp"
+
 
 class ciBlock;
 
@@ -121,3 +128,5 @@
   void print_on(outputStream* st) const  PRODUCT_RETURN;
 #endif
 };
+
+#endif // SHARE_VM_CI_CIMETHODBLOCKS_HPP
--- a/src/share/vm/ci/ciMethodData.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodData.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciMethodData.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethodData.hpp"
+#include "ci/ciUtilities.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/deoptimization.hpp"
+#include "utilities/copy.hpp"
 
 // ciMethodData
 
--- a/src/share/vm/ci/ciMethodData.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodData.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIMETHODDATA_HPP
+#define SHARE_VM_CI_CIMETHODDATA_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciObject.hpp"
+#include "ci/ciUtilities.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/oop.inline.hpp"
+
 class ciBitData;
 class ciCounterData;
 class ciJumpData;
@@ -311,3 +321,5 @@
   void print_data_on(outputStream* st);
 #endif
 };
+
+#endif // SHARE_VM_CI_CIMETHODDATA_HPP
--- a/src/share/vm/ci/ciMethodHandle.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodHandle.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciMethodHandle.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciClassList.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciMethodHandle.hpp"
+#include "ci/ciUtilities.hpp"
+#include "prims/methodHandleWalk.hpp"
+#include "prims/methodHandles.hpp"
 
 // ciMethodHandle
 
--- a/src/share/vm/ci/ciMethodHandle.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodHandle.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIMETHODHANDLE_HPP
+#define SHARE_VM_CI_CIMETHODHANDLE_HPP
+
+#include "prims/methodHandles.hpp"
+
 // ciMethodHandle
 //
 // The class represents a java.dyn.MethodHandle object.
@@ -54,3 +59,5 @@
     return get_adapter(true);
   }
 };
+
+#endif // SHARE_VM_CI_CIMETHODHANDLE_HPP
--- a/src/share/vm/ci/ciMethodKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciMethodKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethodKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciMethodKlass
 //
--- a/src/share/vm/ci/ciMethodKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciMethodKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIMETHODKLASS_HPP
+#define SHARE_VM_CI_CIMETHODKLASS_HPP
+
+#include "ci/ciKlass.hpp"
+#include "ci/ciSymbol.hpp"
+
 // ciMethodKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -46,3 +52,5 @@
   // Return the distinguished ciMethodKlass instance.
   static ciMethodKlass* make();
 };
+
+#endif // SHARE_VM_CI_CIMETHODKLASS_HPP
--- a/src/share/vm/ci/ciNullObject.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciNullObject.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciNullObject.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciNullObject.hpp"
 
 // ciNullObject
 //
--- a/src/share/vm/ci/ciNullObject.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciNullObject.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2000, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CINULLOBJECT_HPP
+#define SHARE_VM_CI_CINULLOBJECT_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciObject.hpp"
+#include "ci/ciUtilities.hpp"
+
 // ciNullObject
 //
 // This class represents a null reference in the VM.
@@ -47,3 +54,5 @@
   // Get the distinguished instance of this klass.
   static ciNullObject* make();
 };
+
+#endif // SHARE_VM_CI_CINULLOBJECT_HPP
--- a/src/share/vm/ci/ciObjArray.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjArray.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciObjArray.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciNullObject.hpp"
+#include "ci/ciObjArray.hpp"
+#include "ci/ciUtilities.hpp"
+#include "oops/objArrayOop.hpp"
 
 // ciObjArray
 //
--- a/src/share/vm/ci/ciObjArray.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjArray.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIOBJARRAY_HPP
+#define SHARE_VM_CI_CIOBJARRAY_HPP
+
+#include "ci/ciArray.hpp"
+#include "ci/ciClassList.hpp"
+#include "oops/objArrayOop.hpp"
+
 // ciObjArray
 //
 // This class represents a ObjArrayOop in the HotSpot virtual
@@ -46,3 +53,5 @@
 
   ciObject* obj_at(int index);
 };
+
+#endif // SHARE_VM_CI_CIOBJARRAY_HPP
--- a/src/share/vm/ci/ciObjArrayKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjArrayKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciObjArrayKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciObjArrayKlassKlass.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciUtilities.hpp"
+#include "oops/objArrayKlass.hpp"
 
 // ciObjArrayKlass
 //
--- a/src/share/vm/ci/ciObjArrayKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjArrayKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIOBJARRAYKLASS_HPP
+#define SHARE_VM_CI_CIOBJARRAYKLASS_HPP
+
+#include "ci/ciArrayKlass.hpp"
+
 // ciObjArrayKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -69,3 +74,5 @@
 
   static ciObjArrayKlass* make(ciKlass* element_klass);
 };
+
+#endif // SHARE_VM_CI_CIOBJARRAYKLASS_HPP
--- a/src/share/vm/ci/ciObjArrayKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjArrayKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciObjArrayKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciObjArrayKlassKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciObjArrayKlassKlass
 //
--- a/src/share/vm/ci/ciObjArrayKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjArrayKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIOBJARRAYKLASSKLASS_HPP
+#define SHARE_VM_CI_CIOBJARRAYKLASSKLASS_HPP
+
+#include "ci/ciArrayKlassKlass.hpp"
+
 // ciObjArrayKlassKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -48,3 +53,5 @@
   // Return the distinguished ciObjArrayKlassKlass instance.
   static ciObjArrayKlassKlass* make();
 };
+
+#endif // SHARE_VM_CI_CIOBJARRAYKLASSKLASS_HPP
--- a/src/share/vm/ci/ciObject.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObject.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciObject.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciObject.hpp"
+#include "ci/ciUtilities.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "oops/oop.inline2.hpp"
 
 // ciObject
 //
--- a/src/share/vm/ci/ciObject.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObject.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIOBJECT_HPP
+#define SHARE_VM_CI_CIOBJECT_HPP
+
+#include "ci/ciClassList.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/jniHandles.hpp"
+
 // ciObject
 //
 // This class represents an oop in the HotSpot virtual machine.
@@ -291,3 +299,5 @@
   // Print debugging output about the oop this ciObject represents.
   void print_oop(outputStream* st = tty);
 };
+
+#endif // SHARE_VM_CI_CIOBJECT_HPP
--- a/src/share/vm/ci/ciObjectFactory.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjectFactory.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,33 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciObjectFactory.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciCPCache.hpp"
+#include "ci/ciCallSite.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciInstanceKlassKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciMethodData.hpp"
+#include "ci/ciMethodHandle.hpp"
+#include "ci/ciMethodKlass.hpp"
+#include "ci/ciNullObject.hpp"
+#include "ci/ciObjArray.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciObjArrayKlassKlass.hpp"
+#include "ci/ciObjectFactory.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciSymbolKlass.hpp"
+#include "ci/ciTypeArray.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
+#include "ci/ciTypeArrayKlassKlass.hpp"
+#include "ci/ciUtilities.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/fieldType.hpp"
 
 // ciObjectFactory
 //
--- a/src/share/vm/ci/ciObjectFactory.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciObjectFactory.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIOBJECTFACTORY_HPP
+#define SHARE_VM_CI_CIOBJECTFACTORY_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciObject.hpp"
+#include "utilities/growableArray.hpp"
+
 // ciObjectFactory
 //
 // This class handles requests for the creation of new instances
@@ -123,3 +130,5 @@
   void print_contents();
   void print();
 };
+
+#endif // SHARE_VM_CI_CIOBJECTFACTORY_HPP
--- a/src/share/vm/ci/ciSignature.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciSignature.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciSignature.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciSignature.hpp"
+#include "ci/ciUtilities.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/signature.hpp"
 
 // ciSignature
 //
--- a/src/share/vm/ci/ciSignature.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciSignature.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2000, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CISIGNATURE_HPP
+#define SHARE_VM_CI_CISIGNATURE_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciSymbol.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/growableArray.hpp"
+
 // ciSignature
 //
 // This class represents the signature of a method.
@@ -54,3 +62,5 @@
   void print_signature();
   void print();
 };
+
+#endif // SHARE_VM_CI_CISIGNATURE_HPP
--- a/src/share/vm/ci/ciStreams.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciStreams.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciStreams.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciCPCache.hpp"
+#include "ci/ciCallSite.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciStreams.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciExceptionHandlerStream
 //
--- a/src/share/vm/ci/ciStreams.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciStreams.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CISTREAMS_HPP
+#define SHARE_VM_CI_CISTREAMS_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciExceptionHandler.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "interpreter/bytecode.hpp"
+
 // ciBytecodeStream
 //
 // The class is used to iterate over the bytecodes of a method.
@@ -397,3 +406,5 @@
     return _method->_exception_handlers[_pos];
   }
 };
+
+#endif // SHARE_VM_CI_CISTREAMS_HPP
--- a/src/share/vm/ci/ciSymbol.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciSymbol.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciSymbol.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciUtilities.hpp"
+#include "memory/oopFactory.hpp"
 
 // ------------------------------------------------------------------
 // ciSymbol::ciSymbol
--- a/src/share/vm/ci/ciSymbol.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciSymbol.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CISYMBOL_HPP
+#define SHARE_VM_CI_CISYMBOL_HPP
+
+#include "ci/ciObject.hpp"
+#include "ci/ciObjectFactory.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "oops/symbolOop.hpp"
+
 // ciSymbol
 //
 // This class represents a symbolOop in the HotSpot virtual
@@ -89,3 +97,5 @@
   VM_SYMBOLS_DO(CI_SYMBOL_DECLARE, CI_SYMBOL_DECLARE)
 #undef CI_SYMBOL_DECLARE
 };
+
+#endif // SHARE_VM_CI_CISYMBOL_HPP
--- a/src/share/vm/ci/ciSymbolKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciSymbolKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciSymbolKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciSymbolKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciSymbolKlass
 //
--- a/src/share/vm/ci/ciSymbolKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciSymbolKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CISYMBOLKLASS_HPP
+#define SHARE_VM_CI_CISYMBOLKLASS_HPP
+
+#include "ci/ciKlass.hpp"
+#include "ci/ciSymbol.hpp"
+
 // ciSymbolKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -50,3 +56,5 @@
   // Return the distinguished ciSymbolKlass instance.
   static ciSymbolKlass* make();
 };
+
+#endif // SHARE_VM_CI_CISYMBOLKLASS_HPP
--- a/src/share/vm/ci/ciType.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciType.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciType.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciType.hpp"
+#include "ci/ciUtilities.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "oops/oop.inline.hpp"
 
 ciType* ciType::_basic_types[T_CONFLICT+1];
 
--- a/src/share/vm/ci/ciType.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciType.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CITYPE_HPP
+#define SHARE_VM_CI_CITYPE_HPP
+
+#include "ci/ciObject.hpp"
+#include "oops/klassOop.hpp"
+
 // ciType
 //
 // This class represents either a class (T_OBJECT), array (T_ARRAY),
@@ -106,3 +112,5 @@
 
   static ciReturnAddress* make(int bci);
 };
+
+#endif // SHARE_VM_CI_CITYPE_HPP
--- a/src/share/vm/ci/ciTypeArray.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeArray.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciTypeArray.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciTypeArray.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciTypeArray
 //
--- a/src/share/vm/ci/ciTypeArray.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeArray.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CITYPEARRAY_HPP
+#define SHARE_VM_CI_CITYPEARRAY_HPP
+
+#include "ci/ciArray.hpp"
+#include "ci/ciClassList.hpp"
+#include "oops/typeArrayOop.hpp"
+
 // ciTypeArray
 //
 // This class represents a typeArrayOop in the HotSpot virtual
@@ -50,3 +57,5 @@
   jchar char_at(int index);
 
 };
+
+#endif // SHARE_VM_CI_CITYPEARRAY_HPP
--- a/src/share/vm/ci/ciTypeArrayKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeArrayKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciTypeArrayKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciTypeArrayKlass
 //
--- a/src/share/vm/ci/ciTypeArrayKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeArrayKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CITYPEARRAYKLASS_HPP
+#define SHARE_VM_CI_CITYPEARRAYKLASS_HPP
+
+#include "ci/ciArrayKlass.hpp"
+
 // ciTypeArrayKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -53,3 +58,5 @@
   // Make an array klass corresponding to the specified primitive type.
   static ciTypeArrayKlass* make(BasicType type);
 };
+
+#endif // SHARE_VM_CI_CITYPEARRAYKLASS_HPP
--- a/src/share/vm/ci/ciTypeArrayKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeArrayKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciTypeArrayKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciTypeArrayKlassKlass.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciTypeArrayKlassKlass
 //
--- a/src/share/vm/ci/ciTypeArrayKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeArrayKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CITYPEARRAYKLASSKLASS_HPP
+#define SHARE_VM_CI_CITYPEARRAYKLASSKLASS_HPP
+
+#include "ci/ciArrayKlassKlass.hpp"
+
 // ciTypeArrayKlassKlass
 //
 // This class represents a klassOop in the HotSpot virtual machine
@@ -49,3 +54,5 @@
   // Return the distinguished ciTypeArrayKlassKlass instance.
   static ciTypeArrayKlassKlass* make();
 };
+
+#endif // SHARE_VM_CI_CITYPEARRAYKLASSKLASS_HPP
--- a/src/share/vm/ci/ciTypeFlow.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeFlow.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciTypeFlow.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciMethodData.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciStreams.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "compiler/compileLog.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/deoptimization.hpp"
+#include "utilities/growableArray.hpp"
 
 // ciTypeFlow::JsrSet
 //
--- a/src/share/vm/ci/ciTypeFlow.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciTypeFlow.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CITYPEFLOW_HPP
+#define SHARE_VM_CI_CITYPEFLOW_HPP
+
+#ifdef COMPILER2
+#include "ci/ciEnv.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciMethodBlocks.hpp"
+#endif
+#ifdef SHARK
+#include "ci/ciEnv.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciMethodBlocks.hpp"
+#endif
+
 
 class ciTypeFlow : public ResourceObj {
 private:
@@ -924,3 +938,5 @@
 
   void rpo_print_on(outputStream* st) const PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_CI_CITYPEFLOW_HPP
--- a/src/share/vm/ci/ciUtilities.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciUtilities.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2000, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ciUtilities.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciUtilities.hpp"
 
 // ciUtilities
 //
--- a/src/share/vm/ci/ciUtilities.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/ciUtilities.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CI_CIUTILITIES_HPP
+#define SHARE_VM_CI_CIUTILITIES_HPP
+
+#include "ci/ciEnv.hpp"
+#include "runtime/interfaceSupport.hpp"
+
 // The following routines and definitions are used internally in the
 // compiler interface.
 
@@ -104,3 +110,5 @@
 
 const char* basictype_to_str(BasicType t);
 const char  basictype_to_char(BasicType t);
+
+#endif // SHARE_VM_CI_CIUTILITIES_HPP
--- a/src/share/vm/ci/compilerInterface.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/ci/compilerInterface.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,5 +22,39 @@
  *
  */
 
+#ifndef SHARE_VM_CI_COMPILERINTERFACE_HPP
+#define SHARE_VM_CI_COMPILERINTERFACE_HPP
+
+#include "ci/ciArray.hpp"
+#include "ci/ciArrayKlass.hpp"
+#include "ci/ciArrayKlassKlass.hpp"
+#include "ci/ciCallProfile.hpp"
+#include "ci/ciConstant.hpp"
+#include "ci/ciEnv.hpp"
+#include "ci/ciExceptionHandler.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciFlags.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciInstanceKlassKlass.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciKlassKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciMethodKlass.hpp"
+#include "ci/ciNullObject.hpp"
+#include "ci/ciObjArray.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciObjArrayKlassKlass.hpp"
+#include "ci/ciObject.hpp"
+#include "ci/ciSignature.hpp"
+#include "ci/ciStreams.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciSymbolKlass.hpp"
+#include "ci/ciTypeArray.hpp"
+#include "ci/ciTypeArrayKlass.hpp"
+#include "ci/ciTypeArrayKlassKlass.hpp"
+
 // This is a dummy file used for including the complete
 // compiler interface.
+
+#endif // SHARE_VM_CI_COMPILERINTERFACE_HPP
--- a/src/share/vm/classfile/classFileError.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/classFileError.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_classFileError.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classFileParser.hpp"
+#include "classfile/stackMapTable.hpp"
+#include "classfile/verifier.hpp"
 
 // Keep these in a separate file to prevent inlining
 
--- a/src/share/vm/classfile/classFileParser.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/classFileParser.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,34 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_classFileParser.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classFileParser.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/verificationType.hpp"
+#include "classfile/verifier.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klass.inline.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/klassVtable.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/perfData.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/timer.hpp"
+#include "services/classLoadingService.hpp"
+#include "services/threadService.hpp"
 
 // We generally try to create the oops directly when parsing, rather than
 // allocating temporary data structures and copying the bytes twice. A
@@ -73,6 +99,12 @@
   unsigned int hashValues[SymbolTable::symbol_alloc_batch_size];
   int names_count = 0;
 
+  // Side buffer for operands of variable-sized (InvokeDynamic) entries.
+  GrowableArray<int>* operands = NULL;
+#ifdef ASSERT
+  GrowableArray<int>* indy_instructions = new GrowableArray<int>(THREAD, 10);
+#endif
+
   // parsing  Index 0 is unused
   for (int index = 1; index < length; index++) {
     // Each of the following case guarantees one more byte in the stream
@@ -141,6 +173,7 @@
           ShouldNotReachHere();
         }
         break;
+      case JVM_CONSTANT_InvokeDynamicTrans :  // this tag appears only in old classfiles
       case JVM_CONSTANT_InvokeDynamic :
         {
           if (!EnableInvokeDynamic ||
@@ -151,10 +184,36 @@
                "Class file version does not support constant tag %u in class file %s"),
               tag, CHECK);
           }
-          cfs->guarantee_more(5, CHECK);  // bsm_index, name_and_type_index, tag/access_flags
+          if (!AllowTransitionalJSR292 && tag == JVM_CONSTANT_InvokeDynamicTrans) {
+            classfile_parse_error(
+                "This JVM does not support transitional InvokeDynamic tag %u in class file %s",
+                tag, CHECK);
+          }
+          bool trans_no_argc = AllowTransitionalJSR292 && (tag == JVM_CONSTANT_InvokeDynamicTrans);
+          cfs->guarantee_more(7, CHECK);  // bsm_index, nt, argc, ..., tag/access_flags
           u2 bootstrap_method_index = cfs->get_u2_fast();
           u2 name_and_type_index = cfs->get_u2_fast();
-          cp->invoke_dynamic_at_put(index, bootstrap_method_index, name_and_type_index);
+          int argument_count = trans_no_argc ? 0 : cfs->get_u2_fast();
+          cfs->guarantee_more(2*argument_count + 1, CHECK);  // argv[argc]..., tag/access_flags
+          int argv_offset = constantPoolOopDesc::_indy_argv_offset;
+          int op_count = argv_offset + argument_count;  // bsm, nt, argc, argv[]...
+          int op_base = start_operand_group(operands, op_count, CHECK);
+          assert(argv_offset == 3, "else adjust next 3 assignments");
+          operands->at_put(op_base + constantPoolOopDesc::_indy_bsm_offset, bootstrap_method_index);
+          operands->at_put(op_base + constantPoolOopDesc::_indy_nt_offset, name_and_type_index);
+          operands->at_put(op_base + constantPoolOopDesc::_indy_argc_offset, argument_count);
+          for (int arg_i = 0; arg_i < argument_count; arg_i++) {
+            int arg = cfs->get_u2_fast();
+            operands->at_put(op_base + constantPoolOopDesc::_indy_argv_offset + arg_i, arg);
+          }
+          cp->invoke_dynamic_at_put(index, op_base, op_count);
+#ifdef ASSERT
+          // Record the steps just taken for later checking.
+          indy_instructions->append(index);
+          indy_instructions->append(bootstrap_method_index);
+          indy_instructions->append(name_and_type_index);
+          indy_instructions->append(argument_count);
+#endif //ASSERT
         }
         break;
       case JVM_CONSTANT_Integer :
@@ -257,6 +316,23 @@
     oopFactory::new_symbols(cp, names_count, names, lengths, indices, hashValues, CHECK);
   }
 
+  if (operands != NULL && operands->length() > 0) {
+    store_operand_array(operands, cp, CHECK);
+  }
+#ifdef ASSERT
+  // Re-assert the indy structures, now that assertion checking can work.
+  for (int indy_i = 0; indy_i < indy_instructions->length(); ) {
+    int index                  = indy_instructions->at(indy_i++);
+    int bootstrap_method_index = indy_instructions->at(indy_i++);
+    int name_and_type_index    = indy_instructions->at(indy_i++);
+    int argument_count         = indy_instructions->at(indy_i++);
+    assert(cp->check_invoke_dynamic_at(index,
+                                       bootstrap_method_index, name_and_type_index,
+                                       argument_count),
+           "indy structure is OK");
+  }
+#endif //ASSERT
+
   // Copy _current pointer of local copy back to stream().
 #ifdef ASSERT
   assert(cfs0->current() == old_current, "non-exclusive use of stream()");
@@ -264,6 +340,41 @@
   cfs0->set_current(cfs1.current());
 }
 
+int ClassFileParser::start_operand_group(GrowableArray<int>* &operands, int op_count, TRAPS) {
+  if (operands == NULL) {
+    operands = new GrowableArray<int>(THREAD, 100);
+    int fillp_offset = constantPoolOopDesc::_multi_operand_buffer_fill_pointer_offset;
+    while (operands->length() <= fillp_offset)
+      operands->append(0);  // force op_base > 0, for an error check
+    DEBUG_ONLY(operands->at_put(fillp_offset, (int)badHeapWordVal));
+  }
+  int cnt_pos = operands->append(op_count);
+  int arg_pos = operands->length();
+  operands->at_grow(arg_pos + op_count - 1);  // grow to include the operands
+  assert(operands->length() == arg_pos + op_count, "");
+  int op_base = cnt_pos - constantPoolOopDesc::_multi_operand_count_offset;
+  return op_base;
+}
+
+void ClassFileParser::store_operand_array(GrowableArray<int>* operands, constantPoolHandle cp, TRAPS) {
+  // Collect the buffer of operands from variable-sized entries into a permanent array.
+  int arraylen = operands->length();
+  int fillp_offset = constantPoolOopDesc::_multi_operand_buffer_fill_pointer_offset;
+  assert(operands->at(fillp_offset) == (int)badHeapWordVal, "value unused so far");
+  operands->at_put(fillp_offset, arraylen);
+  cp->multi_operand_buffer_grow(arraylen, CHECK);
+  typeArrayOop operands_oop = cp->operands();
+  assert(operands_oop->length() == arraylen, "");
+  for (int i = 0; i < arraylen; i++) {
+    operands_oop->int_at_put(i, operands->at(i));
+  }
+  cp->set_operands(operands_oop);
+  // The fill_pointer is used only by constantPoolOop::copy_entry_to and friends,
+  // when constant pools need to be merged.  Make sure it is sane now.
+  assert(cp->multi_operand_buffer_fill_pointer() == arraylen, "");
+}
+
+
 bool inline valid_cp_range(int index, int length) { return (index > 0 && index < length); }
 
 constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) {
@@ -431,6 +542,8 @@
               ref_index, CHECK_(nullHandle));
         }
         break;
+      case JVM_CONSTANT_InvokeDynamicTrans :
+        ShouldNotReachHere();  // this tag does not appear in the heap
       case JVM_CONSTANT_InvokeDynamic :
         {
           int bootstrap_method_ref_index = cp->invoke_dynamic_bootstrap_method_ref_index_at(index);
@@ -438,7 +551,7 @@
           check_property((bootstrap_method_ref_index == 0 && AllowTransitionalJSR292)
                          ||
                          (valid_cp_range(bootstrap_method_ref_index, length) &&
-                          cp->tag_at(bootstrap_method_ref_index).is_method_handle()),
+                          (cp->tag_at(bootstrap_method_ref_index).is_method_handle())),
                          "Invalid constant pool index %u in class file %s",
                          bootstrap_method_ref_index,
                          CHECK_(nullHandle));
@@ -447,6 +560,18 @@
                          "Invalid constant pool index %u in class file %s",
                          name_and_type_ref_index,
                          CHECK_(nullHandle));
+          int argc = cp->invoke_dynamic_argument_count_at(index);
+          for (int arg_i = 0; arg_i < argc; arg_i++) {
+            int arg = cp->invoke_dynamic_argument_index_at(index, arg_i);
+            check_property(valid_cp_range(arg, length) &&
+                           cp->tag_at(arg).is_loadable_constant() ||
+                           // temporary early forms of string and class:
+                           cp->tag_at(arg).is_klass_index() ||
+                           cp->tag_at(arg).is_string_index(),
+                           "Invalid constant pool index %u in class file %s",
+                           arg,
+                           CHECK_(nullHandle));
+          }
           break;
         }
       default:
@@ -2516,18 +2641,6 @@
   // field.  If it is not present, artifically create a field for it.
   // This allows this VM to run on early JDK where the field is not
   // present.
-
-  //
-  // Increment fac.nonstatic_oop_count so that the start of the
-  // next type of non-static oops leaves room for the fake oop.
-  // Do not increment next_nonstatic_oop_offset so that the
-  // fake oop is place after the java.lang.ref.Reference oop
-  // fields.
-  //
-  // Check the fields in java.lang.ref.Reference for the "discovered"
-  // field.  If it is not present, artifically create a field for it.
-  // This allows this VM to run on early JDK where the field is not
-  // present.
   int reference_sig_index = 0;
   int reference_name_index = 0;
   int reference_index = 0;
@@ -2663,7 +2776,7 @@
 // Force MethodHandle.vmentry to be an unmanaged pointer.
 // There is no way for a classfile to express this, so we must help it.
 void ClassFileParser::java_dyn_MethodHandle_fix_pre(constantPoolHandle cp,
-                                                    typeArrayHandle* fields_ptr,
+                                                    typeArrayHandle fields,
                                                     FieldAllocationCount *fac_ptr,
                                                     TRAPS) {
   // Add fake fields for java.dyn.MethodHandle instances
@@ -2687,41 +2800,45 @@
     THROW_MSG(vmSymbols::java_lang_VirtualMachineError(),
               "missing I or J signature (for vmentry) in java.dyn.MethodHandle");
 
+  // Find vmentry field and change the signature.
   bool found_vmentry = false;
-
-  const int n = (*fields_ptr)()->length();
-  for (int i = 0; i < n; i += instanceKlass::next_offset) {
-    int name_index = (*fields_ptr)->ushort_at(i + instanceKlass::name_index_offset);
-    int sig_index  = (*fields_ptr)->ushort_at(i + instanceKlass::signature_index_offset);
-    int acc_flags  = (*fields_ptr)->ushort_at(i + instanceKlass::access_flags_offset);
+  for (int i = 0; i < fields->length(); i += instanceKlass::next_offset) {
+    int name_index = fields->ushort_at(i + instanceKlass::name_index_offset);
+    int sig_index  = fields->ushort_at(i + instanceKlass::signature_index_offset);
+    int acc_flags  = fields->ushort_at(i + instanceKlass::access_flags_offset);
     symbolOop f_name = cp->symbol_at(name_index);
     symbolOop f_sig  = cp->symbol_at(sig_index);
-    if (f_sig == vmSymbols::byte_signature() &&
-        f_name == vmSymbols::vmentry_name() &&
-        (acc_flags & JVM_ACC_STATIC) == 0) {
-      // Adjust the field type from byte to an unmanaged pointer.
-      assert(fac_ptr->nonstatic_byte_count > 0, "");
-      fac_ptr->nonstatic_byte_count -= 1;
-
-      (*fields_ptr)->ushort_at_put(i + instanceKlass::signature_index_offset, word_sig_index);
-      assert(wordSize == longSize || wordSize == jintSize, "ILP32 or LP64");
-      if (wordSize == longSize)  fac_ptr->nonstatic_double_count += 1;
-      else                       fac_ptr->nonstatic_word_count   += 1;
-
-      FieldAllocationType atype = (FieldAllocationType) (*fields_ptr)->ushort_at(i + instanceKlass::low_offset);
-      assert(atype == NONSTATIC_BYTE, "");
-      FieldAllocationType new_atype = (wordSize == longSize) ? NONSTATIC_DOUBLE : NONSTATIC_WORD;
-      (*fields_ptr)->ushort_at_put(i + instanceKlass::low_offset, new_atype);
-
-      found_vmentry = true;
-      break;
+
+    if (f_name == vmSymbols::vmentry_name() && (acc_flags & JVM_ACC_STATIC) == 0) {
+      if (f_sig == vmSymbols::machine_word_signature()) {
+        // If the signature of vmentry is already changed, we're done.
+        found_vmentry = true;
+        break;
+      }
+      else if (f_sig == vmSymbols::byte_signature()) {
+        // Adjust the field type from byte to an unmanaged pointer.
+        assert(fac_ptr->nonstatic_byte_count > 0, "");
+        fac_ptr->nonstatic_byte_count -= 1;
+
+        fields->ushort_at_put(i + instanceKlass::signature_index_offset, word_sig_index);
+        assert(wordSize == longSize || wordSize == jintSize, "ILP32 or LP64");
+        if (wordSize == longSize)  fac_ptr->nonstatic_double_count += 1;
+        else                       fac_ptr->nonstatic_word_count   += 1;
+
+        FieldAllocationType atype = (FieldAllocationType) fields->ushort_at(i + instanceKlass::low_offset);
+        assert(atype == NONSTATIC_BYTE, "");
+        FieldAllocationType new_atype = (wordSize == longSize) ? NONSTATIC_DOUBLE : NONSTATIC_WORD;
+        fields->ushort_at_put(i + instanceKlass::low_offset, new_atype);
+
+        found_vmentry = true;
+        break;
+      }
     }
   }
 
   if (!found_vmentry)
     THROW_MSG(vmSymbols::java_lang_VirtualMachineError(),
               "missing vmentry byte field in java.dyn.MethodHandle");
-
 }
 
 
@@ -3082,7 +3199,7 @@
 
     // adjust the vmentry field declaration in java.dyn.MethodHandle
     if (EnableMethodHandles && class_name() == vmSymbols::sun_dyn_MethodHandleImpl() && class_loader.is_null()) {
-      java_dyn_MethodHandle_fix_pre(cp, &fields, &fac, CHECK_(nullHandle));
+      java_dyn_MethodHandle_fix_pre(cp, fields, &fac, CHECK_(nullHandle));
     }
 
     // Add a fake "discovered" field if it is not present
@@ -4309,20 +4426,21 @@
 }
 
 
-// Unqualified names may not contain the characters '.', ';', or '/'.
-// Method names also may not contain the characters '<' or '>', unless <init> or <clinit>.
-// Note that method names may not be <init> or <clinit> in this method.
-// Because these names have been checked as special cases before calling this method
-// in verify_legal_method_name.
-bool ClassFileParser::verify_unqualified_name(char* name, unsigned int length, int type) {
+// Unqualified names may not contain the characters '.', ';', '[', or '/'.
+// Method names also may not contain the characters '<' or '>', unless <init>
+// or <clinit>.  Note that method names may not be <init> or <clinit> in this
+// method.  Because these names have been checked as special cases before
+// calling this method in verify_legal_method_name.
+bool ClassFileParser::verify_unqualified_name(
+    char* name, unsigned int length, int type) {
   jchar ch;
 
   for (char* p = name; p != name + length; ) {
     ch = *p;
     if (ch < 128) {
       p++;
-      if (ch == '.' || ch == ';') {
-        return false;   // do not permit '.' or ';'
+      if (ch == '.' || ch == ';' || ch == '[' ) {
+        return false;   // do not permit '.', ';', or '['
       }
       if (type != LegalClass && ch == '/') {
         return false;   // do not permit '/' unless it's class name
--- a/src/share/vm/classfile/classFileParser.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/classFileParser.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_CLASSFILEPARSER_HPP
+#define SHARE_VM_CLASSFILE_CLASSFILEPARSER_HPP
+
+#include "classfile/classFileStream.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/accessFlags.hpp"
+
 // Parser for for .class files
 //
 // The bytes describing the class file structure is read from a Stream object
@@ -56,6 +66,9 @@
 
   constantPoolHandle parse_constant_pool(TRAPS);
 
+  static int start_operand_group(GrowableArray<int>* &operands, int op_count, TRAPS);
+  static void store_operand_array(GrowableArray<int>* operands, constantPoolHandle cp, TRAPS);
+
   // Interface parsing
   objArrayHandle parse_interfaces(constantPoolHandle cp,
                                   int length,
@@ -151,7 +164,7 @@
   // Adjust the field allocation counts for java.dyn.MethodHandle to add
   // a fake address (void*) field.
   void java_dyn_MethodHandle_fix_pre(constantPoolHandle cp,
-                                     typeArrayHandle* fields_ptr,
+                                     typeArrayHandle fields,
                                      FieldAllocationCount *fac_ptr, TRAPS);
 
   // Format checker methods
@@ -283,3 +296,5 @@
   static void check_final_method_override(instanceKlassHandle this_klass, TRAPS);
   static void check_illegal_static_method(instanceKlassHandle this_klass, TRAPS);
 };
+
+#endif // SHARE_VM_CLASSFILE_CLASSFILEPARSER_HPP
--- a/src/share/vm/classfile/classFileStream.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/classFileStream.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_classFileStream.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classFileStream.hpp"
+#include "classfile/vmSymbols.hpp"
 
 void ClassFileStream::truncated_file_error(TRAPS) {
   THROW_MSG(vmSymbols::java_lang_ClassFormatError(), "Truncated class file");
--- a/src/share/vm/classfile/classFileStream.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/classFileStream.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP
+#define SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP
+
+#include "utilities/top.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 // Input stream for reading .class file
 //
 // The entire input stream is present in a buffer allocated by the caller.
@@ -116,3 +130,5 @@
   // Tells whether eos is reached
   bool at_eos() const          { return _current == _buffer_end; }
 };
+
+#endif // SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP
--- a/src/share/vm/classfile/classLoader.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/classLoader.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,56 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_classLoader.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classFileParser.hpp"
+#include "classfile/classFileStream.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/generation.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/constantPoolKlass.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvm_misc.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/timer.hpp"
+#include "services/management.hpp"
+#include "services/threadService.hpp"
+#include "utilities/events.hpp"
+#include "utilities/hashtable.hpp"
+#include "utilities/hashtable.inline.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "hpi_linux.hpp"
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "hpi_solaris.hpp"
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "hpi_windows.hpp"
+# include "os_windows.inline.hpp"
+#endif
 
 
 // Entry points in zip.dll for loading zip/jar file entries
--- a/src/share/vm/classfile/classLoader.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/classLoader.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_CLASSLOADER_HPP
+#define SHARE_VM_CLASSFILE_CLASSLOADER_HPP
+
+#include "classfile/classFileParser.hpp"
+#include "runtime/perfData.hpp"
+
 // The VM class loader.
 #include <sys/stat.h>
 
@@ -456,3 +462,5 @@
     }
 };
 
+
+#endif // SHARE_VM_CLASSFILE_CLASSLOADER_HPP
--- a/src/share/vm/classfile/dictionary.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/dictionary.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dictionary.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/dictionary.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "services/classLoadingService.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 
 DictionaryEntry*  Dictionary::_current_class_entry = NULL;
--- a/src/share/vm/classfile/dictionary.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/dictionary.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_DICTIONARY_HPP
+#define SHARE_VM_CLASSFILE_DICTIONARY_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.hpp"
+#include "utilities/hashtable.hpp"
+
 class DictionaryEntry;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -336,3 +344,5 @@
   void verify();
 };
 
+
+#endif // SHARE_VM_CLASSFILE_DICTIONARY_HPP
--- a/src/share/vm/classfile/javaAssertions.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/javaAssertions.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,15 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_javaAssertions.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaAssertions.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
 
 bool                            JavaAssertions::_userDefault = false;
 bool                            JavaAssertions::_sysDefault = false;
--- a/src/share/vm/classfile/javaAssertions.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/javaAssertions.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_JAVAASSERTIONS_HPP
+#define SHARE_VM_CLASSFILE_JAVAASSERTIONS_HPP
+
+#include "oops/objArrayOop.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/ostream.hpp"
+
 class JavaAssertions: AllStatic {
 public:
   static inline bool userClassDefault();
@@ -95,3 +103,5 @@
     tty->print_cr("JavaAssertions::setSystemClassDefault(%d)", enabled);
   _sysDefault = enabled;
 }
+
+#endif // SHARE_VM_CLASSFILE_JAVAASSERTIONS_HPP
--- a/src/share/vm/classfile/javaClasses.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/javaClasses.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,39 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_javaClasses.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/debugInfo.hpp"
+#include "code/pcDesc.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/symbolOop.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/vframe.hpp"
+#include "utilities/preserveException.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 static bool find_field(instanceKlass* ik,
                        symbolOop name_symbol, symbolOop signature_symbol,
--- a/src/share/vm/classfile/javaClasses.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/javaClasses.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_JAVACLASSES_HPP
+#define SHARE_VM_CLASSFILE_JAVACLASSES_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "jvmtifiles/jvmti.h"
+#include "oops/oop.hpp"
+#include "runtime/os.hpp"
+#include "utilities/utf8.hpp"
+
 // Interface for manipulating the basic Java classes.
 //
 // All dependencies on layout of actual Java classes should be kept here.
@@ -1271,3 +1280,5 @@
   static void compute_offsets();
   static void check_offsets() PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_CLASSFILE_JAVACLASSES_HPP
--- a/src/share/vm/classfile/loaderConstraints.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/loaderConstraints.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_loaderConstraints.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/loaderConstraints.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/safepoint.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 LoaderConstraintTable::LoaderConstraintTable(int nof_buckets)
   : Hashtable(nof_buckets, sizeof(LoaderConstraintEntry)) {};
--- a/src/share/vm/classfile/loaderConstraints.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/loaderConstraints.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_LOADERCONSTRAINTS_HPP
+#define SHARE_VM_CLASSFILE_LOADERCONSTRAINTS_HPP
+
+#include "classfile/dictionary.hpp"
+#include "classfile/placeholders.hpp"
+#include "utilities/hashtable.hpp"
+
 class LoaderConstraintEntry;
 
 class LoaderConstraintTable : public Hashtable {
@@ -130,3 +137,5 @@
   void set_loader(int i, oop p) { _loaders[i] = p; }
 
 };
+
+#endif // SHARE_VM_CLASSFILE_LOADERCONSTRAINTS_HPP
--- a/src/share/vm/classfile/placeholders.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/placeholders.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_placeholders.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/placeholders.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/fieldType.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 // Placeholder methods
 
--- a/src/share/vm/classfile/placeholders.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/placeholders.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_PLACEHOLDERS_HPP
+#define SHARE_VM_CLASSFILE_PLACEHOLDERS_HPP
+
+#include "utilities/hashtable.hpp"
+
 class PlaceholderEntry;
 
 // Placeholder objects. These represent classes currently
@@ -329,3 +334,5 @@
   void print() const  PRODUCT_RETURN;
   void verify() const;
 };
+
+#endif // SHARE_VM_CLASSFILE_PLACEHOLDERS_HPP
--- a/src/share/vm/classfile/resolutionErrors.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/resolutionErrors.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_resolutionErrors.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/resolutionErrors.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/safepoint.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 // add new entry to the table
 void ResolutionErrorTable::add_entry(int index, unsigned int hash,
--- a/src/share/vm/classfile/resolutionErrors.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/resolutionErrors.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_RESOLUTIONERRORS_HPP
+#define SHARE_VM_CLASSFILE_RESOLUTIONERRORS_HPP
+
+#include "oops/constantPoolOop.hpp"
+#include "utilities/hashtable.hpp"
+
 class ResolutionErrorEntry;
 
 // ResolutionError objects are used to record errors encountered during
@@ -97,3 +103,5 @@
   // GC support
   void oops_do(OopClosure* blk);
 };
+
+#endif // SHARE_VM_CLASSFILE_RESOLUTIONERRORS_HPP
--- a/src/share/vm/classfile/stackMapFrame.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/stackMapFrame.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_stackMapFrame.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/stackMapFrame.hpp"
+#include "classfile/verifier.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 StackMapFrame::StackMapFrame(u2 max_locals, u2 max_stack, ClassVerifier* v) :
                       _offset(0), _locals_size(0), _stack_size(0), _flags(0),
--- a/src/share/vm/classfile/stackMapFrame.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/stackMapFrame.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_STACKMAPFRAME_HPP
+#define SHARE_VM_CLASSFILE_STACKMAPFRAME_HPP
+
+#include "classfile/verificationType.hpp"
+#include "classfile/verifier.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/signature.hpp"
+#include "utilities/exceptions.hpp"
+
 // A StackMapFrame represents one frame in the stack map attribute.
 
 enum {
@@ -224,3 +234,5 @@
   // Debugging
   void print() const PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_CLASSFILE_STACKMAPFRAME_HPP
--- a/src/share/vm/classfile/stackMapTable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/stackMapTable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_stackMapTable.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/stackMapTable.hpp"
+#include "classfile/verifier.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/fieldType.hpp"
+#include "runtime/handles.inline.hpp"
 
 StackMapTable::StackMapTable(StackMapReader* reader, StackMapFrame* init_frame,
                              u2 max_locals, u2 max_stack,
--- a/src/share/vm/classfile/stackMapTable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/stackMapTable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,24 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_STACKMAPTABLE_HPP
+#define SHARE_VM_CLASSFILE_STACKMAPTABLE_HPP
+
+#include "classfile/stackMapFrame.hpp"
+#include "memory/allocation.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/methodOop.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 class StackMapReader;
 
 // StackMapTable class is the StackMap table used by type checker
@@ -159,3 +177,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_CLASSFILE_STACKMAPTABLE_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/classfile/stackMapTableFormat.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,923 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+#ifndef SHARE_VM_CLASSFILE_STACKMAPTABLEFORMAT_HPP
+#define SHARE_VM_CLASSFILE_STACKMAPTABLEFORMAT_HPP
+
+#include "classfile/verificationType.hpp"
+
+// These classes represent the stack-map substructures described in the JVMS
+// (hence the non-conforming naming scheme).
+
+// These classes work with the types in their compressed form in-place (as they
+// would appear in the classfile).  No virtual methods or fields allowed.
+
+class verification_type_info {
+ private:
+  // u1 tag
+  // u2 cpool_index || u2 bci (for ITEM_Object & ITEM_Uninitailized only)
+
+  address tag_addr() const { return (address)this; }
+  address cpool_index_addr() const { return tag_addr() + sizeof(u1); }
+  address bci_addr() const { return cpool_index_addr(); }
+
+ protected:
+  // No constructors  - should be 'private', but GCC issues a warning if it is
+  verification_type_info() {}
+  verification_type_info(const verification_type_info&) {}
+
+ public:
+
+  static verification_type_info* at(address addr) {
+    return (verification_type_info*)addr;
+  }
+
+  static verification_type_info* create_at(address addr, u1 tag) {
+    verification_type_info* vti = (verification_type_info*)addr;
+    vti->set_tag(tag);
+    return vti;
+  }
+
+  static verification_type_info* create_object_at(address addr, u2 cp_idx) {
+    verification_type_info* vti = (verification_type_info*)addr;
+    vti->set_tag(ITEM_Object);
+    vti->set_cpool_index(cp_idx);
+    return vti;
+  }
+
+  static verification_type_info* create_uninit_at(address addr, u2 bci) {
+    verification_type_info* vti = (verification_type_info*)addr;
+    vti->set_tag(ITEM_Uninitialized);
+    vti->set_bci(bci);
+    return vti;
+  }
+
+  static size_t calculate_size(u1 tag) {
+    if (tag == ITEM_Object || tag == ITEM_Uninitialized) {
+      return sizeof(u1) + sizeof(u2);
+    } else {
+      return sizeof(u1);
+    }
+  }
+
+  static size_t max_size() { return sizeof(u1) + sizeof(u2); }
+
+  u1 tag() const { return *(u1*)tag_addr(); }
+  void set_tag(u1 tag) { *((u1*)tag_addr()) = tag; }
+
+  bool is_object() const { return tag() == ITEM_Object; }
+  bool is_uninitialized() const { return tag() == ITEM_Uninitialized; }
+
+  u2 cpool_index() const {
+    assert(is_object(), "This type has no cp_index");
+    return Bytes::get_Java_u2(cpool_index_addr());
+  }
+  void set_cpool_index(u2 idx) {
+    assert(is_object(), "This type has no cp_index");
+    Bytes::put_Java_u2(cpool_index_addr(), idx);
+  }
+
+  u2 bci() const {
+    assert(is_uninitialized(), "This type has no bci");
+    return Bytes::get_Java_u2(bci_addr());
+  }
+
+  void set_bci(u2 bci) {
+    assert(is_uninitialized(), "This type has no bci");
+    Bytes::put_Java_u2(bci_addr(), bci);
+  }
+
+  void copy_from(verification_type_info* from) {
+    set_tag(from->tag());
+    if (from->is_object()) {
+      set_cpool_index(from->cpool_index());
+    } else if (from->is_uninitialized()) {
+      set_bci(from->bci());
+    }
+  }
+
+  size_t size() const {
+    return calculate_size(tag());
+  }
+
+  verification_type_info* next() {
+    return (verification_type_info*)((address)this + size());
+  }
+
+  // This method is used when reading unverified data in order to ensure
+  // that we don't read past a particular memory limit.  It returns false
+  // if any part of the data structure is outside the specified memory bounds.
+  bool verify(address start, address end) {
+    return ((address)this >= start &&
+            (address)this < end &&
+            (bci_addr() + sizeof(u2) <= end ||
+                !is_object() && !is_uninitialized()));
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) {
+    switch (tag()) {
+      case ITEM_Top: st->print("Top"); break;
+      case ITEM_Integer: st->print("Integer"); break;
+      case ITEM_Float: st->print("Float"); break;
+      case ITEM_Double: st->print("Double"); break;
+      case ITEM_Long: st->print("Long"); break;
+      case ITEM_Null: st->print("Null"); break;
+      case ITEM_UninitializedThis:
+        st->print("UninitializedThis"); break;
+      case ITEM_Uninitialized:
+        st->print("Uninitialized[#%d]", bci()); break;
+      case ITEM_Object:
+        st->print("Object[#%d]", cpool_index()); break;
+      default:
+        assert(false, "Bad verification_type_info");
+    }
+  }
+#endif
+};
+
+#define FOR_EACH_STACKMAP_FRAME_TYPE(macro, arg1, arg2) \
+  macro(same_frame, arg1, arg2) \
+  macro(same_frame_extended, arg1, arg2) \
+  macro(same_frame_1_stack_item_frame, arg1, arg2) \
+  macro(same_frame_1_stack_item_extended, arg1, arg2) \
+  macro(chop_frame, arg1, arg2) \
+  macro(append_frame, arg1, arg2) \
+  macro(full_frame, arg1, arg2)
+
+#define SM_FORWARD_DECL(type, arg1, arg2) class type;
+FOR_EACH_STACKMAP_FRAME_TYPE(SM_FORWARD_DECL, x, x)
+#undef SM_FORWARD_DECL
+
+class stack_map_frame {
+ protected:
+  address frame_type_addr() const { return (address)this; }
+
+  // No constructors  - should be 'private', but GCC issues a warning if it is
+  stack_map_frame() {}
+  stack_map_frame(const stack_map_frame&) {}
+
+ public:
+
+  static stack_map_frame* at(address addr) {
+    return (stack_map_frame*)addr;
+  }
+
+  stack_map_frame* next() const {
+    return at((address)this + size());
+  }
+
+  u1 frame_type() const { return *(u1*)frame_type_addr(); }
+  void set_frame_type(u1 type) { *((u1*)frame_type_addr()) = type; }
+
+  // pseudo-virtual methods
+  inline size_t size() const;
+  inline int offset_delta() const;
+  inline void set_offset_delta(int offset_delta);
+  inline int number_of_types() const; // number of types contained in the frame
+  inline verification_type_info* types() const; // pointer to first type
+  inline bool is_valid_offset(int offset_delta) const;
+
+  // This method must be used when reading unverified data in order to ensure
+  // that we don't read past a particular memory limit.  It returns false
+  // if any part of the data structure is outside the specified memory bounds.
+  inline bool verify(address start, address end) const;
+#ifdef ASSERT
+  inline void print_on(outputStream* st) const;
+#endif
+
+  // Create as_xxx and is_xxx methods for the subtypes
+#define FRAME_TYPE_DECL(stackmap_frame_type, arg1, arg2) \
+  inline stackmap_frame_type* as_##stackmap_frame_type() const; \
+  bool is_##stackmap_frame_type() { \
+    return as_##stackmap_frame_type() != NULL; \
+  }
+
+  FOR_EACH_STACKMAP_FRAME_TYPE(FRAME_TYPE_DECL, x, x)
+#undef FRAME_TYPE_DECL
+};
+
+class same_frame : public stack_map_frame {
+ private:
+  static int frame_type_to_offset_delta(u1 frame_type) {
+      return frame_type + 1; }
+  static u1 offset_delta_to_frame_type(int offset_delta) {
+      return (u1)(offset_delta - 1); }
+
+ public:
+
+  static bool is_frame_type(u1 tag) {
+    return tag < 64;
+  }
+
+  static same_frame* at(address addr) {
+    assert(is_frame_type(*addr), "Wrong frame id");
+    return (same_frame*)addr;
+  }
+
+  static same_frame* create_at(address addr, int offset_delta) {
+    same_frame* sm = (same_frame*)addr;
+    sm->set_offset_delta(offset_delta);
+    return sm;
+  }
+
+  static size_t calculate_size() { return sizeof(u1); }
+
+  size_t size() const { return calculate_size(); }
+  int offset_delta() const { return frame_type_to_offset_delta(frame_type()); }
+
+  void set_offset_delta(int offset_delta) {
+    assert(offset_delta <= 64, "Offset too large for same_frame");
+    set_frame_type(offset_delta_to_frame_type(offset_delta));
+  }
+
+  int number_of_types() const { return 0; }
+  verification_type_info* types() const { return NULL; }
+
+  bool is_valid_offset(int offset_delta) const {
+    return is_frame_type(offset_delta_to_frame_type(offset_delta));
+  }
+
+  bool verify_subtype(address start, address end) const {
+    return true;
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) const {
+    st->print("same_frame(%d)", offset_delta());
+  }
+#endif
+};
+
+class same_frame_extended : public stack_map_frame {
+ private:
+  enum { _frame_id = 251 };
+  address offset_delta_addr() const { return frame_type_addr() + sizeof(u1); }
+
+ public:
+  static bool is_frame_type(u1 tag) {
+    return tag == _frame_id;
+  }
+
+  static same_frame_extended* at(address addr) {
+    assert(is_frame_type(*addr), "Wrong frame type");
+    return (same_frame_extended*)addr;
+  }
+
+  static same_frame_extended* create_at(address addr, u2 offset_delta) {
+    same_frame_extended* sm = (same_frame_extended*)addr;
+    sm->set_frame_type(_frame_id);
+    sm->set_offset_delta(offset_delta);
+    return sm;
+  }
+
+  static size_t calculate_size() { return sizeof(u1) + sizeof(u2); }
+
+  size_t size() const { return calculate_size(); }
+  int offset_delta() const {
+    return Bytes::get_Java_u2(offset_delta_addr()) + 1;
+  }
+
+  void set_offset_delta(int offset_delta) {
+    Bytes::put_Java_u2(offset_delta_addr(), offset_delta - 1);
+  }
+
+  int number_of_types() const { return 0; }
+  verification_type_info* types() const { return NULL; }
+  bool is_valid_offset(int offset) const { return true; }
+
+  bool verify_subtype(address start, address end) const {
+    return frame_type_addr() + size() <= end;
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) const {
+    st->print("same_frame_extended(%d)", offset_delta());
+  }
+#endif
+};
+
+class same_frame_1_stack_item_frame : public stack_map_frame {
+ private:
+  address type_addr() const { return frame_type_addr() + sizeof(u1); }
+
+  static int frame_type_to_offset_delta(u1 frame_type) {
+      return frame_type - 63; }
+  static u1 offset_delta_to_frame_type(int offset_delta) {
+      return (u1)(offset_delta + 63); }
+
+ public:
+  static bool is_frame_type(u1 tag) {
+    return tag >= 64 && tag < 128;
+  }
+
+  static same_frame_1_stack_item_frame* at(address addr) {
+    assert(is_frame_type(*addr), "Wrong frame id");
+    return (same_frame_1_stack_item_frame*)addr;
+  }
+
+  static same_frame_1_stack_item_frame* create_at(
+      address addr, int offset_delta, verification_type_info* vti) {
+    same_frame_1_stack_item_frame* sm = (same_frame_1_stack_item_frame*)addr;
+    sm->set_offset_delta(offset_delta);
+    if (vti != NULL) {
+      sm->set_type(vti);
+    }
+    return sm;
+  }
+
+  static size_t calculate_size(verification_type_info* vti) {
+    return sizeof(u1) + vti->size();
+  }
+
+  static size_t max_size() {
+    return sizeof(u1) + verification_type_info::max_size();
+  }
+
+  size_t size() const { return calculate_size(types()); }
+  int offset_delta() const { return frame_type_to_offset_delta(frame_type()); }
+
+  void set_offset_delta(int offset_delta) {
+    assert(offset_delta > 0 && offset_delta <= 64,
+           "Offset too large for this frame type");
+    set_frame_type(offset_delta_to_frame_type(offset_delta));
+  }
+
+  void set_type(verification_type_info* vti) {
+    verification_type_info* cur = types();
+    cur->copy_from(vti);
+  }
+
+  int number_of_types() const { return 1; }
+  verification_type_info* types() const {
+    return verification_type_info::at(type_addr());
+  }
+
+  bool is_valid_offset(int offset_delta) const {
+    return is_frame_type(offset_delta_to_frame_type(offset_delta));
+  }
+
+  bool verify_subtype(address start, address end) const {
+    return types()->verify(start, end);
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) const {
+    st->print("same_frame_1_stack_item_frame(%d,", offset_delta());
+    types()->print_on(st);
+    st->print(")");
+  }
+#endif
+};
+
+class same_frame_1_stack_item_extended : public stack_map_frame {
+ private:
+  address offset_delta_addr() const { return frame_type_addr() + sizeof(u1); }
+  address type_addr() const { return offset_delta_addr() + sizeof(u2); }
+
+  enum { _frame_id = 247 };
+
+ public:
+  static bool is_frame_type(u1 tag) {
+    return tag == _frame_id;
+  }
+
+  static same_frame_1_stack_item_extended* at(address addr) {
+    assert(is_frame_type(*addr), "Wrong frame id");
+    return (same_frame_1_stack_item_extended*)addr;
+  }
+
+  static same_frame_1_stack_item_extended* create_at(
+      address addr, int offset_delta, verification_type_info* vti) {
+    same_frame_1_stack_item_extended* sm =
+       (same_frame_1_stack_item_extended*)addr;
+    sm->set_frame_type(_frame_id);
+    sm->set_offset_delta(offset_delta);
+    if (vti != NULL) {
+      sm->set_type(vti);
+    }
+    return sm;
+  }
+
+  static size_t calculate_size(verification_type_info* vti) {
+    return sizeof(u1) + sizeof(u2) + vti->size();
+  }
+
+  size_t size() const { return calculate_size(types()); }
+  int offset_delta() const {
+    return Bytes::get_Java_u2(offset_delta_addr()) + 1;
+  }
+
+  void set_offset_delta(int offset_delta) {
+    Bytes::put_Java_u2(offset_delta_addr(), offset_delta - 1);
+  }
+
+  void set_type(verification_type_info* vti) {
+    verification_type_info* cur = types();
+    cur->copy_from(vti);
+  }
+
+  int number_of_types() const { return 1; }
+  verification_type_info* types() const {
+    return verification_type_info::at(type_addr());
+  }
+  bool is_valid_offset(int offset) { return true; }
+
+  bool verify_subtype(address start, address end) const {
+    return type_addr() < end && types()->verify(start, end);
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) const {
+    st->print("same_frame_1_stack_item_extended(%d,", offset_delta());
+    types()->print_on(st);
+    st->print(")");
+  }
+#endif
+};
+
+class chop_frame : public stack_map_frame {
+ private:
+  address offset_delta_addr() const { return frame_type_addr() + sizeof(u1); }
+
+  static int frame_type_to_chops(u1 frame_type) {
+    int chop = 251 - frame_type;
+    return chop;
+  }
+
+  static u1 chops_to_frame_type(int chop) {
+    return 251 - chop;
+  }
+
+ public:
+  static bool is_frame_type(u1 tag) {
+    return frame_type_to_chops(tag) > 0 && frame_type_to_chops(tag) < 4;
+  }
+
+  static chop_frame* at(address addr) {
+    assert(is_frame_type(*addr), "Wrong frame id");
+    return (chop_frame*)addr;
+  }
+
+  static chop_frame* create_at(address addr, int offset_delta, int chops) {
+    chop_frame* sm = (chop_frame*)addr;
+    sm->set_chops(chops);
+    sm->set_offset_delta(offset_delta);
+    return sm;
+  }
+
+  static size_t calculate_size() {
+    return sizeof(u1) + sizeof(u2);
+  }
+
+  size_t size() const { return calculate_size(); }
+  int offset_delta() const {
+    return Bytes::get_Java_u2(offset_delta_addr()) + 1;
+  }
+  void set_offset_delta(int offset_delta) {
+    Bytes::put_Java_u2(offset_delta_addr(), offset_delta - 1);
+  }
+
+  int chops() const {
+    int chops = frame_type_to_chops(frame_type());
+    assert(chops > 0 && chops < 4, "Invalid number of chops in frame");
+    return chops;
+  }
+  void set_chops(int chops) {
+    assert(chops > 0 && chops <= 3, "Bad number of chops");
+    set_frame_type(chops_to_frame_type(chops));
+  }
+
+  int number_of_types() const { return 0; }
+  verification_type_info* types() const { return NULL; }
+  bool is_valid_offset(int offset) { return true; }
+
+  bool verify_subtype(address start, address end) const {
+    return frame_type_addr() + size() <= end;
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) const {
+    st->print("chop_frame(%d,%d)", offset_delta(), chops());
+  }
+#endif
+};
+
+class append_frame : public stack_map_frame {
+ private:
+  address offset_delta_addr() const { return frame_type_addr() + sizeof(u1); }
+  address types_addr() const { return offset_delta_addr() + sizeof(u2); }
+
+  static int frame_type_to_appends(u1 frame_type) {
+    int append = frame_type - 251;
+    return append;
+  }
+
+  static u1 appends_to_frame_type(int appends) {
+    assert(appends > 0 && appends < 4, "Invalid append amount");
+    return 251 + appends;
+  }
+
+ public:
+  static bool is_frame_type(u1 tag) {
+    return frame_type_to_appends(tag) > 0 && frame_type_to_appends(tag) < 4;
+  }
+
+  static append_frame* at(address addr) {
+    assert(is_frame_type(*addr), "Wrong frame id");
+    return (append_frame*)addr;
+  }
+
+  static append_frame* create_at(
+      address addr, int offset_delta, int appends,
+      verification_type_info* types) {
+    append_frame* sm = (append_frame*)addr;
+    sm->set_appends(appends);
+    sm->set_offset_delta(offset_delta);
+    if (types != NULL) {
+      verification_type_info* cur = sm->types();
+      for (int i = 0; i < appends; ++i) {
+        cur->copy_from(types);
+        cur = cur->next();
+        types = types->next();
+      }
+    }
+    return sm;
+  }
+
+  static size_t calculate_size(int appends, verification_type_info* types) {
+    size_t sz = sizeof(u1) + sizeof(u2);
+    for (int i = 0; i < appends; ++i) {
+      sz += types->size();
+      types = types->next();
+    }
+    return sz;
+  }
+
+  static size_t max_size() {
+    return sizeof(u1) + sizeof(u2) + 3 * verification_type_info::max_size();
+  }
+
+  size_t size() const { return calculate_size(number_of_types(), types()); }
+  int offset_delta() const {
+    return Bytes::get_Java_u2(offset_delta_addr()) + 1;
+  }
+
+  void set_offset_delta(int offset_delta) {
+    Bytes::put_Java_u2(offset_delta_addr(), offset_delta - 1);
+  }
+
+  void set_appends(int appends) {
+    assert(appends > 0 && appends < 4, "Bad number of appends");
+    set_frame_type(appends_to_frame_type(appends));
+  }
+
+  int number_of_types() const {
+    int appends = frame_type_to_appends(frame_type());
+    assert(appends > 0 && appends < 4, "Invalid number of appends in frame");
+    return appends;
+  }
+  verification_type_info* types() const {
+    return verification_type_info::at(types_addr());
+  }
+  bool is_valid_offset(int offset) const { return true; }
+
+  bool verify_subtype(address start, address end) const {
+    verification_type_info* vti = types();
+    if ((address)vti < end && vti->verify(start, end)) {
+      int nof = number_of_types();
+      vti = vti->next();
+      if (nof < 2 || vti->verify(start, end)) {
+        vti = vti->next();
+        if (nof < 3 || vti->verify(start, end)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) const {
+    st->print("append_frame(%d,", offset_delta());
+    verification_type_info* vti = types();
+    for (int i = 0; i < number_of_types(); ++i) {
+      vti->print_on(st);
+      if (i != number_of_types() - 1) {
+        st->print(",");
+      }
+      vti = vti->next();
+    }
+    st->print(")");
+  }
+#endif
+};
+
+class full_frame : public stack_map_frame {
+ private:
+  address offset_delta_addr() const { return frame_type_addr() + sizeof(u1); }
+  address num_locals_addr() const { return offset_delta_addr() + sizeof(u2); }
+  address locals_addr() const { return num_locals_addr() + sizeof(u2); }
+  address stack_slots_addr(address end_of_locals) const {
+      return end_of_locals; }
+  address stack_addr(address end_of_locals) const {
+      return stack_slots_addr(end_of_locals) + sizeof(u2); }
+
+  enum { _frame_id = 255 };
+
+ public:
+  static bool is_frame_type(u1 tag) {
+    return tag == _frame_id;
+  }
+
+  static full_frame* at(address addr) {
+    assert(is_frame_type(*addr), "Wrong frame id");
+    return (full_frame*)addr;
+  }
+
+  static full_frame* create_at(
+      address addr, int offset_delta, int num_locals,
+      verification_type_info* locals,
+      int stack_slots, verification_type_info* stack) {
+    full_frame* sm = (full_frame*)addr;
+    sm->set_frame_type(_frame_id);
+    sm->set_offset_delta(offset_delta);
+    sm->set_num_locals(num_locals);
+    if (locals != NULL) {
+      verification_type_info* cur = sm->locals();
+      for (int i = 0; i < num_locals; ++i) {
+        cur->copy_from(locals);
+        cur = cur->next();
+        locals = locals->next();
+      }
+      address end_of_locals = (address)cur;
+      sm->set_stack_slots(end_of_locals, stack_slots);
+      cur = sm->stack(end_of_locals);
+      for (int i = 0; i < stack_slots; ++i) {
+        cur->copy_from(stack);
+        cur = cur->next();
+        stack = stack->next();
+      }
+    }
+    return sm;
+  }
+
+  static size_t calculate_size(
+      int num_locals, verification_type_info* locals,
+      int stack_slots, verification_type_info* stack) {
+    size_t sz = sizeof(u1) + sizeof(u2) + sizeof(u2) + sizeof(u2);
+    verification_type_info* vti = locals;
+    for (int i = 0; i < num_locals; ++i) {
+      sz += vti->size();
+      vti = vti->next();
+    }
+    vti = stack;
+    for (int i = 0; i < stack_slots; ++i) {
+      sz += vti->size();
+      vti = vti->next();
+    }
+    return sz;
+  }
+
+  static size_t max_size(int locals, int stack) {
+    return sizeof(u1) + 3 * sizeof(u2) +
+        (locals + stack) * verification_type_info::max_size();
+  }
+
+  size_t size() const {
+    address eol = end_of_locals();
+    return calculate_size(num_locals(), locals(), stack_slots(eol), stack(eol));
+  }
+
+  int offset_delta() const {
+    return Bytes::get_Java_u2(offset_delta_addr()) + 1;
+  }
+  int num_locals() const { return Bytes::get_Java_u2(num_locals_addr()); }
+  verification_type_info* locals() const {
+    return verification_type_info::at(locals_addr());
+  }
+  address end_of_locals() const {
+    verification_type_info* vti = locals();
+    for (int i = 0; i < num_locals(); ++i) {
+      vti = vti->next();
+    }
+    return (address)vti;
+  }
+  int stack_slots(address end_of_locals) const {
+    return Bytes::get_Java_u2(stack_slots_addr(end_of_locals));
+  }
+  verification_type_info* stack(address end_of_locals) const {
+    return verification_type_info::at(stack_addr(end_of_locals));
+  }
+
+  void set_offset_delta(int offset_delta) {
+    Bytes::put_Java_u2(offset_delta_addr(), offset_delta - 1);
+  }
+  void set_num_locals(int num_locals) {
+    Bytes::put_Java_u2(num_locals_addr(), num_locals);
+  }
+  void set_stack_slots(address end_of_locals, int stack_slots) {
+    Bytes::put_Java_u2(stack_slots_addr(end_of_locals), stack_slots);
+  }
+
+  // These return only the locals.  Extra processing is required for stack
+  // types of full frames.
+  int number_of_types() const { return num_locals(); }
+  verification_type_info* types() const { return locals(); }
+  bool is_valid_offset(int offset) { return true; }
+
+  bool verify_subtype(address start, address end) const {
+    verification_type_info* vti = types();
+    if ((address)vti >= end) {
+      return false;
+    }
+    int count = number_of_types();
+    for (int i = 0; i < count; ++i) {
+      if (!vti->verify(start, end)) {
+        return false;
+      }
+      vti = vti->next();
+    }
+    address eol = (address)vti;
+    if (eol + sizeof(u2) > end) {
+      return false;
+    }
+    count = stack_slots(eol);
+    vti = stack(eol);
+    for (int i = 0; i < stack_slots(eol); ++i) {
+      if (!vti->verify(start, end)) {
+        return false;
+      }
+      vti = vti->next();
+    }
+    return true;
+  }
+
+#ifdef ASSERT
+  void print_on(outputStream* st) const {
+    st->print("full_frame(%d,{", offset_delta());
+    verification_type_info* vti = locals();
+    for (int i = 0; i < num_locals(); ++i) {
+      vti->print_on(st);
+      if (i != num_locals() - 1) {
+        st->print(",");
+      }
+      vti = vti->next();
+    }
+    st->print("},{");
+    address end_of_locals = (address)vti;
+    vti = stack(end_of_locals);
+    int ss = stack_slots(end_of_locals);
+    for (int i = 0; i < ss; ++i) {
+      vti->print_on(st);
+      if (i != ss - 1) {
+        st->print(",");
+      }
+      vti = vti->next();
+    }
+    st->print("})");
+  }
+#endif
+};
+
+#define VIRTUAL_DISPATCH(stack_frame_type, func_name, args) \
+  stack_frame_type* item_##stack_frame_type = as_##stack_frame_type(); \
+  if (item_##stack_frame_type != NULL) { \
+    return item_##stack_frame_type->func_name args;  \
+  }
+
+#define VOID_VIRTUAL_DISPATCH(stack_frame_type, func_name, args) \
+  stack_frame_type* item_##stack_frame_type = as_##stack_frame_type(); \
+  if (item_##stack_frame_type != NULL) { \
+    item_##stack_frame_type->func_name args;  \
+    return; \
+  }
+
+size_t stack_map_frame::size() const {
+  FOR_EACH_STACKMAP_FRAME_TYPE(VIRTUAL_DISPATCH, size, ());
+  return 0;
+}
+
+int stack_map_frame::offset_delta() const {
+  FOR_EACH_STACKMAP_FRAME_TYPE(VIRTUAL_DISPATCH, offset_delta, ());
+  return 0;
+}
+
+void stack_map_frame::set_offset_delta(int offset_delta) {
+  FOR_EACH_STACKMAP_FRAME_TYPE(
+      VOID_VIRTUAL_DISPATCH, set_offset_delta, (offset_delta));
+}
+
+int stack_map_frame::number_of_types() const {
+  FOR_EACH_STACKMAP_FRAME_TYPE(VIRTUAL_DISPATCH, number_of_types, ());
+  return 0;
+}
+
+verification_type_info* stack_map_frame::types() const {
+  FOR_EACH_STACKMAP_FRAME_TYPE(VIRTUAL_DISPATCH, types, ());
+  return NULL;
+}
+
+bool stack_map_frame::is_valid_offset(int offset) const {
+  FOR_EACH_STACKMAP_FRAME_TYPE(VIRTUAL_DISPATCH, is_valid_offset, (offset));
+  return true;
+}
+
+bool stack_map_frame::verify(address start, address end) const {
+  if (frame_type_addr() >= start && frame_type_addr() < end) {
+    FOR_EACH_STACKMAP_FRAME_TYPE(
+       VIRTUAL_DISPATCH, verify_subtype, (start, end));
+  }
+  return false;
+}
+
+#ifdef ASSERT
+void stack_map_frame::print_on(outputStream* st) const {
+  FOR_EACH_STACKMAP_FRAME_TYPE(VOID_VIRTUAL_DISPATCH, print_on, (st));
+}
+#endif
+
+#undef VIRTUAL_DISPATCH
+#undef VOID_VIRTUAL_DISPATCH
+
+#define AS_SUBTYPE_DEF(stack_frame_type, arg1, arg2) \
+stack_frame_type* stack_map_frame::as_##stack_frame_type() const { \
+  if (stack_frame_type::is_frame_type(frame_type())) { \
+    return (stack_frame_type*)this; \
+  } else { \
+    return NULL; \
+  } \
+}
+
+FOR_EACH_STACKMAP_FRAME_TYPE(AS_SUBTYPE_DEF, x, x)
+#undef AS_SUBTYPE_DEF
+
+class stack_map_table_attribute {
+ private:
+  address name_index_addr() const {
+      return (address)this; }
+  address attribute_length_addr() const {
+      return name_index_addr() + sizeof(u2); }
+  address number_of_entries_addr() const {
+      return attribute_length_addr() + sizeof(u4); }
+  address entries_addr() const {
+      return number_of_entries_addr() + sizeof(u2); }
+
+ protected:
+  // No constructors  - should be 'private', but GCC issues a warning if it is
+  stack_map_table_attribute() {}
+  stack_map_table_attribute(const stack_map_table_attribute&) {}
+
+ public:
+
+  static stack_map_table_attribute* at(address addr) {
+    return (stack_map_table_attribute*)addr;
+  }
+
+  u2 name_index() const {
+       return Bytes::get_Java_u2(name_index_addr()); }
+  u4 attribute_length() const {
+      return Bytes::get_Java_u4(attribute_length_addr()); }
+  u2 number_of_entries() const {
+      return Bytes::get_Java_u2(number_of_entries_addr()); }
+  stack_map_frame* entries() const {
+    return stack_map_frame::at(entries_addr());
+  }
+
+  static size_t header_size() {
+      return sizeof(u2) + sizeof(u4);
+  }
+
+  void set_name_index(u2 idx) {
+    Bytes::put_Java_u2(name_index_addr(), idx);
+  }
+  void set_attribute_length(u4 len) {
+    Bytes::put_Java_u4(attribute_length_addr(), len);
+  }
+  void set_number_of_entries(u2 num) {
+    Bytes::put_Java_u2(number_of_entries_addr(), num);
+  }
+};
+
+#endif // SHARE_VM_CLASSFILE_STACKMAPTABLEFORMAT_HPP
--- a/src/share/vm/classfile/symbolTable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/symbolTable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_symbolTable.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/filemap.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/symbolKlass.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 // --------------------------------------------------------------------------
 
--- a/src/share/vm/classfile/symbolTable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/symbolTable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_SYMBOLTABLE_HPP
+#define SHARE_VM_CLASSFILE_SYMBOLTABLE_HPP
+
+#include "memory/allocation.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "utilities/hashtable.hpp"
+
 // The symbol table holds all symbolOops and corresponding interned strings.
 // symbolOops and literal strings should be canonicalized.
 //
@@ -222,3 +229,5 @@
     ((BasicHashtable*)the_table())->reverse();
   }
 };
+
+#endif // SHARE_VM_CLASSFILE_SYMBOLTABLE_HPP
--- a/src/share/vm/classfile/systemDictionary.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/systemDictionary.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,16 +22,45 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_systemDictionary.cpp.incl"
-
-
-Dictionary*       SystemDictionary::_dictionary = NULL;
-PlaceholderTable* SystemDictionary::_placeholders = NULL;
-Dictionary*       SystemDictionary::_shared_dictionary = NULL;
-LoaderConstraintTable* SystemDictionary::_loader_constraints = NULL;
-ResolutionErrorTable* SystemDictionary::_resolution_errors = NULL;
-SymbolPropertyTable* SystemDictionary::_invoke_method_table = NULL;
+#include "precompiled.hpp"
+#include "classfile/dictionary.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/loaderConstraints.hpp"
+#include "classfile/placeholders.hpp"
+#include "classfile/resolutionErrors.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/klass.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "prims/jvmtiEnvBase.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/fieldType.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/signature.hpp"
+#include "services/classLoadingService.hpp"
+#include "services/threadService.hpp"
+
+
+Dictionary*            SystemDictionary::_dictionary          = NULL;
+PlaceholderTable*      SystemDictionary::_placeholders        = NULL;
+Dictionary*            SystemDictionary::_shared_dictionary   = NULL;
+LoaderConstraintTable* SystemDictionary::_loader_constraints  = NULL;
+ResolutionErrorTable*  SystemDictionary::_resolution_errors   = NULL;
+SymbolPropertyTable*   SystemDictionary::_invoke_method_table = NULL;
 
 
 int         SystemDictionary::_number_of_modifications = 0;
@@ -1727,8 +1756,7 @@
   placeholders_do(blk);
 
   // Visit extra methods
-  if (invoke_method_table() != NULL)
-    invoke_method_table()->oops_do(blk);
+  invoke_method_table()->oops_do(blk);
 
   // Loader constraints. We must keep the symbolOop used in the name alive.
   constraints()->always_strong_classes_do(blk);
@@ -1766,8 +1794,7 @@
   dictionary()->oops_do(f);
 
   // Visit extra methods
-  if (invoke_method_table() != NULL)
-    invoke_method_table()->oops_do(f);
+  invoke_method_table()->oops_do(f);
 
   // Partially loaded classes
   placeholders()->oops_do(f);
@@ -1841,8 +1868,7 @@
 
 void SystemDictionary::methods_do(void f(methodOop)) {
   dictionary()->methods_do(f);
-  if (invoke_method_table() != NULL)
-    invoke_method_table()->methods_do(f);
+  invoke_method_table()->methods_do(f);
 }
 
 // ----------------------------------------------------------------------------
@@ -1870,12 +1896,12 @@
   // Allocate arrays
   assert(dictionary() == NULL,
          "SystemDictionary should only be initialized once");
-  _dictionary = new Dictionary(_nof_buckets);
-  _placeholders = new PlaceholderTable(_nof_buckets);
+  _dictionary          = new Dictionary(_nof_buckets);
+  _placeholders        = new PlaceholderTable(_nof_buckets);
   _number_of_modifications = 0;
-  _loader_constraints = new LoaderConstraintTable(_loader_constraint_size);
-  _resolution_errors = new ResolutionErrorTable(_resolution_error_size);
-  // _invoke_method_table is allocated lazily in find_method_handle_invoke()
+  _loader_constraints  = new LoaderConstraintTable(_loader_constraint_size);
+  _resolution_errors   = new ResolutionErrorTable(_resolution_error_size);
+  _invoke_method_table = new SymbolPropertyTable(_invoke_method_size);
 
   // Allocate private object used as system class loader lock
   _system_loader_lock_obj = oopFactory::new_system_objArray(0, CHECK);
@@ -2346,10 +2372,6 @@
                                                       KlassHandle accessing_klass,
                                                       TRAPS) {
   if (!EnableMethodHandles)  return NULL;
-  if (invoke_method_table() == NULL) {
-    // create this side table lazily
-    _invoke_method_table = new SymbolPropertyTable(_invoke_method_size);
-  }
   vmSymbols::SID name_id = vmSymbols::find_sid(name());
   assert(name_id != vmSymbols::NO_SID, "must be a known name");
   unsigned int hash  = invoke_method_table()->compute_hash(signature, name_id);
@@ -2562,7 +2584,9 @@
 }
 
 Handle SystemDictionary::find_bootstrap_method(methodHandle caller_method, int caller_bci,
-                                               int cache_index, TRAPS) {
+                                               int cache_index,
+                                               Handle& argument_info_result,
+                                               TRAPS) {
   Handle empty;
 
   constantPoolHandle pool;
@@ -2576,7 +2600,7 @@
   constantTag tag = pool->tag_at(constant_pool_index);
 
   if (tag.is_invoke_dynamic()) {
-    // JVM_CONSTANT_InvokeDynamic is an ordered pair of [bootm, name&type]
+    // JVM_CONSTANT_InvokeDynamic is an ordered pair of [bootm, name&type], plus optional arguments
     // The bootm, being a JVM_CONSTANT_MethodHandle, has its own cache entry.
     int bsm_index = pool->invoke_dynamic_bootstrap_method_ref_index_at(constant_pool_index);
     if (bsm_index != 0) {
@@ -2592,9 +2616,38 @@
         tty->print_cr("bootstrap method for "PTR_FORMAT" at %d retrieved as "PTR_FORMAT":",
                       (intptr_t) caller_method(), caller_bci, (intptr_t) bsm_oop);
       }
-      assert(bsm_oop->is_oop()
-             && java_dyn_MethodHandle::is_instance(bsm_oop), "must be sane");
-      return Handle(THREAD, bsm_oop);
+      assert(bsm_oop->is_oop(), "must be sane");
+      // caller must verify that it is of type MethodHandle
+      Handle bsm(THREAD, bsm_oop);
+      bsm_oop = NULL;  // safety
+
+      // Extract the optional static arguments.
+      Handle argument_info;  // either null, or one arg, or Object[]{arg...}
+      int argc = pool->invoke_dynamic_argument_count_at(constant_pool_index);
+      if (TraceInvokeDynamic) {
+        tty->print_cr("find_bootstrap_method: [%d/%d] CONSTANT_InvokeDynamic: %d[%d]",
+                      constant_pool_index, cache_index, bsm_index, argc);
+      }
+      if (argc > 0) {
+        objArrayHandle arg_array;
+        if (argc > 1) {
+          objArrayOop arg_array_oop = oopFactory::new_objArray(SystemDictionary::Object_klass(), argc, CHECK_(empty));
+          arg_array = objArrayHandle(THREAD, arg_array_oop);
+          argument_info = arg_array;
+        }
+        for (int arg_i = 0; arg_i < argc; arg_i++) {
+          int arg_index = pool->invoke_dynamic_argument_index_at(constant_pool_index, arg_i);
+          oop arg_oop = pool->resolve_possibly_cached_constant_at(arg_index, CHECK_(empty));
+          if (arg_array.is_null()) {
+            argument_info = Handle(THREAD, arg_oop);
+          } else {
+            arg_array->obj_at_put(arg_i, arg_oop);
+          }
+        }
+      }
+
+      argument_info_result = argument_info;  // return argument_info to caller
+      return bsm;
     }
     // else null BSM; fall through
   } else if (tag.is_name_and_type()) {
@@ -2607,14 +2660,14 @@
   // Fall through to pick up the per-class bootstrap method.
   // This mechanism may go away in the PFD.
   assert(AllowTransitionalJSR292, "else the verifier should have stopped us already");
+  argument_info_result = empty;  // return no argument_info to caller
   oop bsm_oop = instanceKlass::cast(caller_method->method_holder())->bootstrap_method();
   if (bsm_oop != NULL) {
     if (TraceMethodHandles) {
       tty->print_cr("bootstrap method for "PTR_FORMAT" registered as "PTR_FORMAT":",
                     (intptr_t) caller_method(), (intptr_t) bsm_oop);
     }
-    assert(bsm_oop->is_oop()
-           && java_dyn_MethodHandle::is_instance(bsm_oop), "must be sane");
+    assert(bsm_oop->is_oop(), "must be sane");
     return Handle(THREAD, bsm_oop);
   }
 
--- a/src/share/vm/classfile/systemDictionary.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/systemDictionary.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
+#define SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
+
+#include "classfile/classFileStream.hpp"
+#include "classfile/classLoader.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/java.hpp"
+#include "runtime/reflectionUtils.hpp"
+#include "utilities/hashtable.hpp"
+
 // The system dictionary stores all loaded classes and maps:
 //
 //   [class name,class loader] -> class   i.e.  [symbolOop,oop] -> klassOop
@@ -496,6 +507,7 @@
   static Handle    find_bootstrap_method(methodHandle caller_method,
                                          int caller_bci,  // N.B. must be an invokedynamic
                                          int cache_index, // must be corresponding main_entry
+                                         Handle &argument_info_result, // static BSM arguments, if any
                                          TRAPS);
 
   // Utility for printing loader "name" as part of tracing constraints
@@ -671,3 +683,5 @@
 
   static KlassHandle box_klass(BasicType t);
 };
+
+#endif // SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
--- a/src/share/vm/classfile/verificationType.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/verificationType.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_verificationType.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/verificationType.hpp"
 
 VerificationType VerificationType::from_tag(u1 tag) {
   switch (tag) {
--- a/src/share/vm/classfile/verificationType.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/verificationType.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_VERIFICATIONTYPE_HPP
+#define SHARE_VM_CLASSFILE_VERIFICATIONTYPE_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "memory/allocation.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/signature.hpp"
+
 enum {
   // As specifed in the JVM spec
   ITEM_Top = 0,
@@ -303,3 +314,5 @@
   bool is_reference_assignable_from(
     const VerificationType&, instanceKlassHandle, TRAPS) const;
 };
+
+#endif // SHARE_VM_CLASSFILE_VERIFICATIONTYPE_HPP
--- a/src/share/vm/classfile/verifier.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/verifier.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,36 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_verifier.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classFileStream.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/stackMapTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/verifier.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "prims/jvm.h"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/orderAccess.hpp"
+#include "runtime/os.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
 
 #define NOFAILOVER_MAJOR_VERSION 51
 
@@ -247,6 +275,10 @@
 ClassVerifier::~ClassVerifier() {
 }
 
+VerificationType ClassVerifier::object_type() const {
+  return VerificationType::reference_type(vmSymbols::java_lang_Object());
+}
+
 void ClassVerifier::verify_class(TRAPS) {
   if (_verify_verbose) {
     tty->print_cr("Verifying class %s with new format",
@@ -726,8 +758,7 @@
           }
           no_control_flow = false; break;
         case Bytecodes::_aastore :
-          type = current_frame.pop_stack(
-            VerificationType::reference_check(), CHECK_VERIFY(this));
+          type = current_frame.pop_stack(object_type(), CHECK_VERIFY(this));
           type2 = current_frame.pop_stack(
             VerificationType::integer_type(), CHECK_VERIFY(this));
           atype = current_frame.pop_stack(
@@ -1232,8 +1263,7 @@
         {
           index = bcs.get_index_u2();
           verify_cp_class_type(index, cp, CHECK_VERIFY(this));
-          current_frame.pop_stack(
-            VerificationType::reference_check(), CHECK_VERIFY(this));
+          current_frame.pop_stack(object_type(), CHECK_VERIFY(this));
           VerificationType klass_type = cp_index_to_type(
             index, cp, CHECK_VERIFY(this));
           current_frame.push_stack(klass_type, CHECK_VERIFY(this));
@@ -1242,8 +1272,7 @@
         case Bytecodes::_instanceof : {
           index = bcs.get_index_u2();
           verify_cp_class_type(index, cp, CHECK_VERIFY(this));
-          current_frame.pop_stack(
-            VerificationType::reference_check(), CHECK_VERIFY(this));
+          current_frame.pop_stack(object_type(), CHECK_VERIFY(this));
           current_frame.push_stack(
             VerificationType::integer_type(), CHECK_VERIFY(this));
           no_control_flow = false; break;
@@ -1610,9 +1639,7 @@
     verify_cp_type(index, cp, types, CHECK_VERIFY(this));
   }
   if (tag.is_string() && cp->is_pseudo_string_at(index)) {
-    current_frame->push_stack(
-      VerificationType::reference_type(
-        vmSymbols::java_lang_Object()), CHECK_VERIFY(this));
+    current_frame->push_stack(object_type(), CHECK_VERIFY(this));
   } else if (tag.is_string() || tag.is_unresolved_string()) {
     current_frame->push_stack(
       VerificationType::reference_type(
@@ -1909,7 +1936,7 @@
   unsigned int types = (opcode == Bytecodes::_invokeinterface
                                 ? 1 << JVM_CONSTANT_InterfaceMethodref
                       : opcode == Bytecodes::_invokedynamic
-                                ? (1 << JVM_CONSTANT_NameAndType
+                                ? ((AllowTransitionalJSR292 ? 1 << JVM_CONSTANT_NameAndType : 0)
                                   |1 << JVM_CONSTANT_InvokeDynamic)
                                 : 1 << JVM_CONSTANT_Methodref);
   verify_cp_type(index, cp, types, CHECK_VERIFY(this));
--- a/src/share/vm/classfile/verifier.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/verifier.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_VERIFIER_HPP
+#define SHARE_VM_CLASSFILE_VERIFIER_HPP
+
+#include "classfile/verificationType.hpp"
+#include "memory/gcLocker.hpp"
+#include "oops/klass.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/exceptions.hpp"
+
 // The verifier class
 class Verifier : AllStatic {
  public:
@@ -157,6 +167,8 @@
 
   bool name_in_supers(symbolOop ref_name, instanceKlassHandle current);
 
+  VerificationType object_type() const;
+
   instanceKlassHandle _klass;  // the class being verified
   methodHandle        _method; // current method being verified
   VerificationType    _this_type; // the verification type of the current class
@@ -252,3 +264,5 @@
       return 1;
   }
 }
+
+#endif // SHARE_VM_CLASSFILE_VERIFIER_HPP
--- a/src/share/vm/classfile/vmSymbols.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/vmSymbols.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmSymbols.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/xmlstream.hpp"
 
 
 symbolOop vmSymbols::_symbols[vmSymbols::SID_LIMIT];
--- a/src/share/vm/classfile/vmSymbols.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/classfile/vmSymbols.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CLASSFILE_VMSYMBOLS_HPP
+#define SHARE_VM_CLASSFILE_VMSYMBOLS_HPP
+
+#include "oops/symbolOop.hpp"
+
 // The classes vmSymbols and vmSymbolHandles are a name spaces for fast lookup of
 // symbols commonly used in the VM. The first class return a symbolOop, while the
 // second class returns a SymbolHandle. The underlying data structure is shared
@@ -1112,3 +1117,5 @@
   // Raw conversion:
   static ID for_raw_conversion(BasicType src, BasicType dest);
 };
+
+#endif // SHARE_VM_CLASSFILE_VMSYMBOLS_HPP
--- a/src/share/vm/code/codeBlob.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/codeBlob.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,35 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_codeBlob.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeBlob.hpp"
+#include "code/codeCache.hpp"
+#include "code/relocInfo.hpp"
+#include "compiler/disassembler.hpp"
+#include "interpreter/bytecode.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/heap.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/forte.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/vframe.hpp"
+#include "services/memoryService.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
 
 unsigned int align_code_offset(int offset) {
   // align the size to CodeEntryAlignment
--- a/src/share/vm/code/codeBlob.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/codeBlob.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_CODEBLOB_HPP
+#define SHARE_VM_CODE_CODEBLOB_HPP
+
+#include "asm/codeBuffer.hpp"
+#include "compiler/oopMap.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/handles.hpp"
+
 // CodeBlob - superclass for all entries in the CodeCache.
 //
 // Suptypes are:
@@ -499,3 +507,5 @@
   // Typing
   bool is_safepoint_stub() const                 { return true; }
 };
+
+#endif // SHARE_VM_CODE_CODEBLOB_HPP
--- a/src/share/vm/code/codeCache.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/codeCache.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,26 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_codeCache.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeBlob.hpp"
+#include "code/codeCache.hpp"
+#include "code/dependencies.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "gc_implementation/shared/markSweep.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/iterator.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/java.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/xmlstream.hpp"
 
 // Helper class for printing in CodeCache
 
@@ -914,3 +932,14 @@
 }
 
 #endif // PRODUCT
+
+void CodeCache::print_bounds(outputStream* st) {
+  st->print_cr("Code Cache  [" INTPTR_FORMAT ", " INTPTR_FORMAT ", " INTPTR_FORMAT ")",
+               _heap->low_boundary(),
+               _heap->high(),
+               _heap->high_boundary());
+  st->print_cr(" total_blobs=" UINT32_FORMAT " nmethods=" UINT32_FORMAT
+               " adapters=" UINT32_FORMAT " free_code_cache=" SIZE_FORMAT,
+               CodeCache::nof_blobs(), CodeCache::nof_nmethods(),
+               CodeCache::nof_adapters(), CodeCache::unallocated_capacity());
+}
--- a/src/share/vm/code/codeCache.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/codeCache.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_CODECACHE_HPP
+#define SHARE_VM_CODE_CODECACHE_HPP
+
+#include "code/codeBlob.hpp"
+#include "memory/allocation.hpp"
+#include "memory/heap.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oopsHierarchy.hpp"
+
 // The CodeCache implements the code cache for various pieces of generated
 // code, e.g., compiled java methods, runtime stubs, transition frames, etc.
 // The entries in the CodeCache are all CodeBlob's.
@@ -137,6 +146,7 @@
   static void print_internals();
   static void verify();                          // verifies the code cache
   static void print_trace(const char* event, CodeBlob* cb, int size = 0) PRODUCT_RETURN;
+  static void print_bounds(outputStream* st);    // Prints a summary of the bounds of the code cache
 
   // The full limits of the codeCache
   static address  low_bound()                    { return (address) _heap->low_boundary(); }
@@ -172,3 +182,5 @@
     // tells how many nmethods have dependencies
   static int number_of_nmethods_with_dependencies();
 };
+
+#endif // SHARE_VM_CODE_CODECACHE_HPP
--- a/src/share/vm/code/compiledIC.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/compiledIC.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,23 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_compiledIC.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "code/compiledIC.hpp"
+#include "code/icBuffer.hpp"
+#include "code/nmethod.hpp"
+#include "code/vtableStubs.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "utilities/events.hpp"
 
 
 // Every time a compiled IC is changed or its type is being accessed,
--- a/src/share/vm/code/compiledIC.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/compiledIC.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,23 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_COMPILEDIC_HPP
+#define SHARE_VM_CODE_COMPILEDIC_HPP
+
+#include "interpreter/linkResolver.hpp"
+#include "oops/compiledICHolderKlass.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "oops/klassOop.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+#endif
+
 //-----------------------------------------------------------------------------
 // The CompiledIC represents a compiled inline cache.
 //
@@ -239,3 +256,5 @@
 inline CompiledStaticCall* compiledStaticCall_at(Relocation* call_site) {
   return compiledStaticCall_at(call_site->addr());
 }
+
+#endif // SHARE_VM_CODE_COMPILEDIC_HPP
--- a/src/share/vm/code/compressedStream.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/compressedStream.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_compressedStream.cpp.incl"
+#include "precompiled.hpp"
+#include "code/compressedStream.hpp"
+#include "utilities/ostream.hpp"
 
 // 32-bit one-to-one sign encoding taken from Pack200
 // converts leading sign bits into leading zeroes with trailing sign bit
--- a/src/share/vm/code/compressedStream.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/compressedStream.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_COMPRESSEDSTREAM_HPP
+#define SHARE_VM_CODE_COMPRESSEDSTREAM_HPP
+
+#include "memory/allocation.hpp"
+
 // Simple interface for filing out and filing in basic types
 // Used for writing out and reading in debugging information.
 
@@ -118,3 +123,5 @@
   void write_double(jdouble value);    // write_int(reverse_int(<low,high>))
   void write_long(jlong value);        // write_signed_int(<low,high>)
 };
+
+#endif // SHARE_VM_CODE_COMPRESSEDSTREAM_HPP
--- a/src/share/vm/code/debugInfo.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/debugInfo.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_debugInfo.cpp.incl"
+#include "precompiled.hpp"
+#include "code/debugInfo.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/nmethod.hpp"
+#include "runtime/handles.inline.hpp"
 
 // Comstructors
 
--- a/src/share/vm/code/debugInfo.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/debugInfo.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_DEBUGINFO_HPP
+#define SHARE_VM_CODE_DEBUGINFO_HPP
+
+#include "code/compressedStream.hpp"
+#include "code/location.hpp"
+#include "code/nmethod.hpp"
+#include "code/oopRecorder.hpp"
+#include "runtime/stackValue.hpp"
+#include "utilities/growableArray.hpp"
+
 // Classes used for serializing debugging information.
 // These abstractions are introducted to provide symmetric
 // read and write operations.
@@ -270,3 +280,5 @@
   void write_handle(jobject h);
   void write_bci(int bci) { write_int(bci - InvocationEntryBci); }
 };
+
+#endif // SHARE_VM_CODE_DEBUGINFO_HPP
--- a/src/share/vm/code/debugInfoRec.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/debugInfoRec.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_debugInfoRec.cpp.incl"
+#include "precompiled.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/scopeDesc.hpp"
+#include "prims/jvmtiExport.hpp"
 
 // Private definition.
 // There is one DIR_Chunk for each scope and values array.
--- a/src/share/vm/code/debugInfoRec.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/debugInfoRec.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,19 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_DEBUGINFOREC_HPP
+#define SHARE_VM_CODE_DEBUGINFOREC_HPP
+
+#include "ci/ciClassList.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "code/debugInfo.hpp"
+#include "code/location.hpp"
+#include "code/pcDesc.hpp"
+#include "compiler/oopMap.hpp"
+#include "oops/oop.hpp"
+#include "utilities/growableArray.hpp"
+
 //** The DebugInformationRecorder collects debugging information
 //   for a compiled method.
 //   Debugging information is used for:
@@ -183,3 +196,5 @@
  public:
   enum { serialized_null = 0 };
 };
+
+#endif // SHARE_VM_CODE_DEBUGINFOREC_HPP
--- a/src/share/vm/code/dependencies.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/dependencies.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dependencies.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciArrayKlass.hpp"
+#include "ci/ciEnv.hpp"
+#include "ci/ciKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "code/dependencies.hpp"
+#include "compiler/compileLog.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/copy.hpp"
 
 
 #ifdef ASSERT
--- a/src/share/vm/code/dependencies.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/dependencies.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_DEPENDENCIES_HPP
+#define SHARE_VM_CODE_DEPENDENCIES_HPP
+
+#include "ci/ciKlass.hpp"
+#include "code/compressedStream.hpp"
+#include "code/nmethod.hpp"
+#include "utilities/growableArray.hpp"
+
 //** Dependencies represent assertions (approximate invariants) within
 // the class hierarchy.  An example is an assertion that a given
 // method is not overridden; another example is that a type has only
@@ -550,3 +558,5 @@
 
   void print();
 };
+
+#endif // SHARE_VM_CODE_DEPENDENCIES_HPP
--- a/src/share/vm/code/exceptionHandlerTable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/exceptionHandlerTable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_exceptionHandlerTable.cpp.incl"
+#include "precompiled.hpp"
+#include "code/exceptionHandlerTable.hpp"
+#include "code/nmethod.hpp"
+#include "memory/allocation.inline.hpp"
 
 void ExceptionHandlerTable::add_entry(HandlerTableEntry entry) {
   _nesting.check();
--- a/src/share/vm/code/exceptionHandlerTable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/exceptionHandlerTable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_EXCEPTIONHANDLERTABLE_HPP
+#define SHARE_VM_CODE_EXCEPTIONHANDLERTABLE_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/methodOop.hpp"
+
 // A HandlerTableEntry describes an individual entry of a subtable
 // of ExceptionHandlerTable. An entry consists of a pair(bci, pco),
 // where bci is the exception handler bci, and pco is the pc offset
@@ -154,3 +160,5 @@
   void print(address base) const;
   void verify(nmethod *nm) const;
 };
+
+#endif // SHARE_VM_CODE_EXCEPTIONHANDLERTABLE_HPP
--- a/src/share/vm/code/icBuffer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/icBuffer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,30 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icBuffer.cpp.incl"
+#include "precompiled.hpp"
+#include "code/compiledIC.hpp"
+#include "code/icBuffer.hpp"
+#include "code/nmethod.hpp"
+#include "code/scopeDesc.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.inline.hpp"
+#endif
 
 
 DEF_STUB_INTERFACE(ICStub);
--- a/src/share/vm/code/icBuffer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/icBuffer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_ICBUFFER_HPP
+#define SHARE_VM_CODE_ICBUFFER_HPP
+
+#include "code/stubs.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+
 //
 // For CompiledIC's:
 //
@@ -126,3 +133,5 @@
   static address ic_destination_for(CompiledIC *ic);
   static oop     cached_oop_for(CompiledIC *ic);
 };
+
+#endif // SHARE_VM_CODE_ICBUFFER_HPP
--- a/src/share/vm/code/location.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/location.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_location.cpp.incl"
+#include "precompiled.hpp"
+#include "code/debugInfo.hpp"
+#include "code/location.hpp"
 
 void Location::print_on(outputStream* st) const {
   if(type() == invalid) {
--- a/src/share/vm/code/location.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/location.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_LOCATION_HPP
+#define SHARE_VM_CODE_LOCATION_HPP
+
+#include "asm/assembler.hpp"
+#include "code/vmreg.hpp"
+#include "memory/allocation.hpp"
+
 // A Location describes a concrete machine variable location
 // (such as integer or floating point register or a stack-held
 // variable). Used when generating debug-information for nmethods.
@@ -113,3 +120,5 @@
   // check
   static bool legal_offset_in_bytes(int offset_in_bytes);
 };
+
+#endif // SHARE_VM_CODE_LOCATION_HPP
--- a/src/share/vm/code/nmethod.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/nmethod.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,26 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_nmethod.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeCache.hpp"
+#include "code/compiledIC.hpp"
+#include "code/nmethod.hpp"
+#include "code/scopeDesc.hpp"
+#include "compiler/abstractCompiler.hpp"
+#include "compiler/compileLog.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "compiler/disassembler.hpp"
+#include "interpreter/bytecode.hpp"
+#include "oops/methodDataOop.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/sweeper.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/events.hpp"
+#include "utilities/xmlstream.hpp"
+#ifdef SHARK
+#include "shark/sharkCompiler.hpp"
+#endif
 
 #ifdef DTRACE_ENABLED
 
--- a/src/share/vm/code/nmethod.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/nmethod.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_NMETHOD_HPP
+#define SHARE_VM_CODE_NMETHOD_HPP
+
+#include "code/codeBlob.hpp"
+#include "code/pcDesc.hpp"
+
 // This class is used internally by nmethods, to cache
 // exception/pc/handler information.
 
@@ -704,3 +710,5 @@
     lock_nmethod(_nm);
   }
 };
+
+#endif // SHARE_VM_CODE_NMETHOD_HPP
--- a/src/share/vm/code/oopRecorder.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/oopRecorder.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_oopRecorder.cpp.incl"
+#include "precompiled.hpp"
+#include "code/oopRecorder.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
 
 #ifdef ASSERT
 int OopRecorder::_find_index_calls = 0;
--- a/src/share/vm/code/oopRecorder.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/oopRecorder.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_OOPRECORDER_HPP
+#define SHARE_VM_CODE_OOPRECORDER_HPP
+
+#include "runtime/handles.hpp"
+#include "utilities/growableArray.hpp"
+
 // Recording and retrieval of oop relocations in compiled code.
 
 class CodeBlob;
@@ -134,3 +140,5 @@
   static int _find_index_calls, _hit_indexes, _missed_indexes;
 #endif
 };
+
+#endif // SHARE_VM_CODE_OOPRECORDER_HPP
--- a/src/share/vm/code/pcDesc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/pcDesc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_pcDesc.cpp.incl"
+#include "precompiled.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "memory/resourceArea.hpp"
 
 PcDesc::PcDesc(int pc_offset, int scope_decode_offset, int obj_decode_offset) {
   assert(sizeof(PcDescFlags) <= 4, "occupies more than a word");
--- a/src/share/vm/code/pcDesc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/pcDesc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_PCDESC_HPP
+#define SHARE_VM_CODE_PCDESC_HPP
+
+#include "memory/allocation.hpp"
+
 // PcDescs map a physical PC (given as offset from start of nmethod) to
 // the corresponding source scope and byte code index.
 
@@ -86,3 +91,5 @@
   void print(nmethod* code);
   bool verify(nmethod* code);
 };
+
+#endif // SHARE_VM_CODE_PCDESC_HPP
--- a/src/share/vm/code/relocInfo.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/relocInfo.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,25 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_relocInfo.cpp.incl"
+#include "precompiled.hpp"
+#include "code/compiledIC.hpp"
+#include "code/nmethod.hpp"
+#include "code/relocInfo.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "utilities/copy.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.inline.hpp"
+# include "nativeInst_zero.hpp"
+#endif
 
 
 const RelocationHolder RelocationHolder::none; // its type is relocInfo::none
--- a/src/share/vm/code/relocInfo.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/relocInfo.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_RELOCINFO_HPP
+#define SHARE_VM_CODE_RELOCINFO_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/top.hpp"
+
 // Types in this file:
 //    relocInfo
 //      One element of an array of halfwords encoding compressed relocations.
@@ -415,7 +421,16 @@
   static void remove_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type);
 
   // Machine dependent stuff
-  #include "incls/_relocInfo_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "relocInfo_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "relocInfo_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "relocInfo_zero.hpp"
+#endif
+
 
  protected:
   // Derived constant, based on format_width which is PD:
@@ -1325,3 +1340,5 @@
 
   ~PatchingRelocIterator()                           { postpass(); }
 };
+
+#endif // SHARE_VM_CODE_RELOCINFO_HPP
--- a/src/share/vm/code/scopeDesc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/scopeDesc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_scopeDesc.cpp.incl"
+#include "precompiled.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
 
 
 ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool return_oop) {
--- a/src/share/vm/code/scopeDesc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/scopeDesc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_SCOPEDESC_HPP
+#define SHARE_VM_CODE_SCOPEDESC_HPP
+
+#include "code/debugInfo.hpp"
+#include "code/pcDesc.hpp"
+#include "oops/methodOop.hpp"
+#include "utilities/growableArray.hpp"
+
 // SimpleScopeDesc is used when all you need to extract from
 // a given pc,nmethod pair is a methodOop and a bci. This is
 // quite a bit faster than allocating a full ScopeDesc, but
@@ -125,3 +133,5 @@
   void print_value_on(outputStream* st) const;
 #endif
 };
+
+#endif // SHARE_VM_CODE_SCOPEDESC_HPP
--- a/src/share/vm/code/stubs.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/stubs.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubs.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeBlob.hpp"
+#include "code/stubs.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/mutexLocker.hpp"
 
 
 // Implementation of StubQueue
--- a/src/share/vm/code/stubs.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/stubs.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_STUBS_HPP
+#define SHARE_VM_CODE_STUBS_HPP
+
+#include "memory/allocation.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
+
 // The classes in this file provide a simple framework for the
 // management of little pieces of machine code - or stubs -
 // created on the fly and frequently discarded. In this frame-
@@ -206,3 +220,5 @@
   void  verify();                                // verifies the stub queue
   void  print();                                 // prints information about the stub queue
 };
+
+#endif // SHARE_VM_CODE_STUBS_HPP
--- a/src/share/vm/code/vmreg.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/vmreg.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vmreg.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "code/vmreg.hpp"
 
 // First VMReg value that could refer to a stack slot
 VMReg VMRegImpl::stack0 = (VMReg)(intptr_t)((ConcreteRegisterImpl::number_of_registers + 1) & ~1);
--- a/src/share/vm/code/vmreg.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/vmreg.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,37 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_VMREG_HPP
+#define SHARE_VM_CODE_VMREG_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_ARCH_x86
+# include "register_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "register_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "register_zero.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/adlcVMDeps.hpp"
+#include "utilities/ostream.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/adGlobals_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/adGlobals_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/adGlobals_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/adGlobals_zero.hpp"
+#endif
+#endif
+
 //------------------------------VMReg------------------------------------------
 // The VM uses 'unwarped' stack slots; the compiler uses 'warped' stack slots.
 // Register numbers below VMRegImpl::stack0 are the same for both.  Register
@@ -124,7 +155,16 @@
 
   static void set_regName();
 
-#include "incls/_vmreg_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "vmreg_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vmreg_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vmreg_zero.hpp"
+#endif
+
 
 };
 
@@ -181,3 +221,5 @@
   VMRegPair(VMReg f) { _second = VMRegImpl::Bad(); _first = f; }
   VMRegPair() { _second = VMRegImpl::Bad(); _first = VMRegImpl::Bad(); }
 };
+
+#endif // SHARE_VM_CODE_VMREG_HPP
--- a/src/share/vm/code/vtableStubs.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/vtableStubs.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,22 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vtableStubs.cpp.incl"
+#include "precompiled.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/disassembler.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassVtable.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/forte.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/sharedRuntime.hpp"
+#ifdef COMPILER2
+#include "opto/matcher.hpp"
+#endif
 
 // -----------------------------------------------------------------------------------------
 // Implementation of VtableStub
--- a/src/share/vm/code/vtableStubs.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/code/vtableStubs.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_CODE_VTABLESTUBS_HPP
+#define SHARE_VM_CODE_VTABLESTUBS_HPP
+
+#include "memory/allocation.hpp"
+
 // A VtableStub holds an individual code stub for a pair (vtable index, #args) for either itables or vtables
 // There's a one-to-one relationship between a VtableStub and such a pair.
 
@@ -121,3 +126,5 @@
   static int         number_of_vtable_stubs() { return _number_of_vtable_stubs; }
   static void        initialize();
 };
+
+#endif // SHARE_VM_CODE_VTABLESTUBS_HPP
--- a/src/share/vm/compiler/abstractCompiler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/abstractCompiler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2007, 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
@@ -21,9 +21,10 @@
 // questions.
 //
 
-#include "incls/_precompiled.incl"
-#include "incls/_abstractCompiler.cpp.incl"
 
+#include "precompiled.hpp"
+#include "compiler/abstractCompiler.hpp"
+#include "runtime/mutexLocker.hpp"
 void AbstractCompiler::initialize_runtimes(initializer f, volatile int* state) {
   if (*state != initialized) {
 
--- a/src/share/vm/compiler/abstractCompiler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/abstractCompiler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_COMPILER_ABSTRACTCOMPILER_HPP
+#define SHARE_VM_COMPILER_ABSTRACTCOMPILER_HPP
+
+#include "ci/compilerInterface.hpp"
+
 typedef void (*initializer)(void);
 
 class AbstractCompiler : public CHeapObj {
@@ -88,3 +93,5 @@
     ShouldNotReachHere();
   }
 };
+
+#endif // SHARE_VM_COMPILER_ABSTRACTCOMPILER_HPP
--- a/src/share/vm/compiler/compileBroker.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/compileBroker.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,37 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_compileBroker.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeCache.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/compileLog.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/os.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/sweeper.hpp"
+#include "utilities/dtrace.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Compiler.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/c2compiler.hpp"
+#endif
+#ifdef SHARK
+#include "shark/sharkCompiler.hpp"
+#endif
 
 #ifdef DTRACE_ENABLED
 
@@ -522,6 +551,7 @@
 void CompileBroker::compilation_init() {
   _last_method_compiled[0] = '\0';
 
+#ifndef SHARK
   // Set the interface to the current compiler(s).
   int c1_count = CompilationPolicy::policy()->compiler_count(CompLevel_simple);
   int c2_count = CompilationPolicy::policy()->compiler_count(CompLevel_full_optimization);
@@ -537,13 +567,12 @@
   }
 #endif // COMPILER2
 
-#ifdef SHARK
-#if defined(COMPILER1) || defined(COMPILER2)
-#error "Can't use COMPILER1 or COMPILER2 with shark"
-#endif
-  _compilers[0] = new SharkCompiler();
-  _compilers[1] = _compilers[0];
-#endif
+#else // SHARK
+  int c1_count = 0;
+  int c2_count = 1;
+
+  _compilers[1] = new SharkCompiler();
+#endif // SHARK
 
   // Initialize the CompileTask free list
   _task_free_list = NULL;
@@ -1535,7 +1564,7 @@
       //assert(false, "compiler should always document failure");
       // The compiler elected, without comment, not to register a result.
       // Do not attempt further compilations of this method.
-      ci_env.record_method_not_compilable("compile failed");
+      ci_env.record_method_not_compilable("compile failed", !TieredCompilation);
     }
 
     if (ci_env.failing()) {
@@ -1544,15 +1573,8 @@
       if (PrintCompilation) {
         const char* reason = ci_env.failure_reason();
         if (compilable == ciEnv::MethodCompilable_not_at_tier) {
-          if (is_highest_tier_compile(ci_env.comp_level())) {
-            // Already at highest tier, promote to not compilable.
-            compilable = ciEnv::MethodCompilable_never;
-          } else {
             tty->print_cr("%3d   COMPILE SKIPPED: %s (retry at different tier)", compile_id, reason);
-          }
-        }
-
-        if (compilable == ciEnv::MethodCompilable_never) {
+        } else if (compilable == ciEnv::MethodCompilable_never) {
           tty->print_cr("%3d   COMPILE SKIPPED: %s (not retryable)", compile_id, reason);
         } else if (compilable == ciEnv::MethodCompilable) {
           tty->print_cr("%3d   COMPILE SKIPPED: %s", compile_id, reason);
--- a/src/share/vm/compiler/compileBroker.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/compileBroker.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_COMPILER_COMPILEBROKER_HPP
+#define SHARE_VM_COMPILER_COMPILEBROKER_HPP
+
+#include "ci/compilerInterface.hpp"
+#include "compiler/abstractCompiler.hpp"
+#include "runtime/perfData.hpp"
+
 class nmethod;
 class nmethodLocker;
 
@@ -380,3 +387,5 @@
 
   static void print_compiler_threads_on(outputStream* st);
 };
+
+#endif // SHARE_VM_COMPILER_COMPILEBROKER_HPP
--- a/src/share/vm/compiler/compileLog.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/compileLog.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_compileLog.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethod.hpp"
+#include "compiler/compileLog.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
 
 CompileLog* CompileLog::_first = NULL;
 
--- a/src/share/vm/compiler/compileLog.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/compileLog.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_COMPILER_COMPILELOG_HPP
+#define SHARE_VM_COMPILER_COMPILELOG_HPP
+
+#include "utilities/xmlstream.hpp"
+
 class ciObject;
 class ciSymbol;
 
@@ -75,3 +80,5 @@
   static void finish_log(outputStream* out);
   static void finish_log_on_error(outputStream* out, char *buf, int buflen);
 };
+
+#endif // SHARE_VM_COMPILER_COMPILELOG_HPP
--- a/src/share/vm/compiler/compilerOracle.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/compilerOracle.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_compilerOracle.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/klass.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/jniHandles.hpp"
 
 class MethodMatcher : public CHeapObj {
  public:
--- a/src/share/vm/compiler/compilerOracle.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/compilerOracle.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_COMPILER_COMPILERORACLE_HPP
+#define SHARE_VM_COMPILER_COMPILERORACLE_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oopsHierarchy.hpp"
+
 // CompilerOracle is an interface for turning on and off compilation
 // for some methods
 
@@ -66,3 +72,5 @@
   static void append_comment_to_file(const char* message);
   static void append_exclude_to_file(methodHandle method);
 };
+
+#endif // SHARE_VM_COMPILER_COMPILERORACLE_HPP
--- a/src/share/vm/compiler/disassembler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/disassembler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,29 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_disassembler.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "code/codeCache.hpp"
+#include "compiler/disassembler.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_ARCH_x86
+# include "depChecker_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "depChecker_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "depChecker_zero.hpp"
+#endif
+#ifdef SHARK
+#include "shark/sharkEntry.hpp"
+#endif
 
 void*       Disassembler::_library               = NULL;
 bool        Disassembler::_tried_to_load_library = false;
--- a/src/share/vm/compiler/disassembler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/disassembler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_COMPILER_DISASSEMBLER_HPP
+#define SHARE_VM_COMPILER_DISASSEMBLER_HPP
+
+#include "runtime/globals.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
+
 class decode_env;
 
 // The disassembler prints out assembly code annotated
@@ -47,7 +61,16 @@
   static bool load_library();
 
   // Machine dependent stuff
-  #include "incls/_disassembler_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "disassembler_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "disassembler_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "disassembler_zero.hpp"
+#endif
+
 
  public:
   static bool can_decode() {
@@ -57,3 +80,5 @@
   static void decode(nmethod* nm,                outputStream* st = NULL);
   static void decode(address begin, address end, outputStream* st = NULL);
 };
+
+#endif // SHARE_VM_COMPILER_DISASSEMBLER_HPP
--- a/src/share/vm/compiler/methodLiveness.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/methodLiveness.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciMethodBlocks.hpp"
+#include "ci/ciStreams.hpp"
+#include "compiler/methodLiveness.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.inline.hpp"
+#include "utilities/bitMap.inline.hpp"
+
 // The MethodLiveness class performs a simple liveness analysis on a method
 // in order to decide which locals are live (that is, will be used again) at
 // a particular bytecode index (bci).
@@ -60,9 +70,6 @@
 //    analysis.
 
 
-# include "incls/_precompiled.incl"
-# include "incls/_methodLiveness.cpp.incl"
-
 //--------------------------------------------------------------------------
 // The BitCounter class is used for counting the number of bits set in
 // some BitMap.  It is only used when collecting liveness statistics.
--- a/src/share/vm/compiler/methodLiveness.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/methodLiveness.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_COMPILER_METHODLIVENESS_HPP
+#define SHARE_VM_COMPILER_METHODLIVENESS_HPP
+
+#include "utilities/bitMap.hpp"
+#include "utilities/growableArray.hpp"
+
 class ciMethod;
 
 class MethodLivenessResult : public BitMap {
@@ -269,3 +275,5 @@
 
   static void print_times() PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_COMPILER_METHODLIVENESS_HPP
--- a/src/share/vm/compiler/oopMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/oopMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_oopMap.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeBlob.hpp"
+#include "code/codeCache.hpp"
+#include "code/nmethod.hpp"
+#include "code/scopeDesc.hpp"
+#include "compiler/oopMap.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/signature.hpp"
+#ifdef COMPILER1
+#include "c1/c1_Defs.hpp"
+#endif
 
 // OopMapStream
 
--- a/src/share/vm/compiler/oopMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/compiler/oopMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_COMPILER_OOPMAP_HPP
+#define SHARE_VM_COMPILER_OOPMAP_HPP
+
+#include "code/compressedStream.hpp"
+#include "code/vmreg.hpp"
+#include "memory/allocation.hpp"
+#include "utilities/growableArray.hpp"
+
 // Interface for generating the frame map for compiled code.  A frame map
 // describes for a specific pc whether each register and frame stack slot is:
 //   Oop         - A GC root for current frame
@@ -315,3 +323,5 @@
   }
 };
 #endif // COMPILER2
+
+#endif // SHARE_VM_COMPILER_OOPMAP_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_binaryTreeDictionary.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp"
+#include "gc_implementation/shared/allocationStats.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/space.inline.hpp"
+#include "runtime/globals.hpp"
+#include "utilities/ostream.hpp"
 
 ////////////////////////////////////////////////////////////////////////////////
 // A binary tree based search structure for free blocks.
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_BINARYTREEDICTIONARY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_BINARYTREEDICTIONARY_HPP
+
+#include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeList.hpp"
+
 /*
  * A binary tree based search structure for free blocks.
  * This is currently used in the Concurrent Mark&Sweep implementation.
@@ -286,3 +292,5 @@
 
   void       verify() const;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_BINARYTREEDICTIONARY_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -21,9 +21,22 @@
  * questions.
  *
  */
-#include "incls/_precompiled.incl"
-#include "incls/_cmsAdaptiveSizePolicy.cpp.incl"
 
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp"
+#include "gc_implementation/shared/gcStats.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "runtime/thread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 elapsedTimer CMSAdaptiveSizePolicy::_concurrent_timer;
 elapsedTimer CMSAdaptiveSizePolicy::_STW_timer;
 
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSADAPTIVESIZEPOLICY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSADAPTIVESIZEPOLICY_HPP
+
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+#include "runtime/timer.hpp"
+
 // This class keeps statistical information and computes the
 // size of the heap for the concurrent mark sweep collector.
 //
@@ -467,3 +473,5 @@
   // Printing support
   virtual bool print_adaptive_size_policy_on(outputStream* st) const;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSADAPTIVESIZEPOLICY_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,34 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_cmsCollectorPolicy.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp"
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/space.hpp"
+#include "memory/universe.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/globals_extension.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 //
 // ConcurrentMarkSweepPolicy methods
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSCOLLECTORPOLICY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSCOLLECTORPOLICY_HPP
+
+#include "memory/collectorPolicy.hpp"
+
 class ConcurrentMarkSweepPolicy : public TwoGenerationCollectorPolicy {
  protected:
   void initialize_generations();
@@ -55,3 +60,5 @@
     return CollectorPolicy::ASConcurrentMarkSweepPolicyKind;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSCOLLECTORPOLICY_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_cmsGCAdaptivePolicyCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp"
+#include "memory/resourceArea.hpp"
 
 CMSGCAdaptivePolicyCounters::CMSGCAdaptivePolicyCounters(const char* name_arg,
                                         int collectors,
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSGCADAPTIVEPOLICYCOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSGCADAPTIVEPOLICYCOUNTERS_HPP
+
+#include "gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp"
+#include "gc_implementation/shared/gcAdaptivePolicyCounters.hpp"
+#include "gc_implementation/shared/gcStats.hpp"
+#include "runtime/perfData.hpp"
+
 // CMSGCAdaptivePolicyCounters is a holder class for performance counters
 // that track the data and decisions for the ergonomics policy for the
 // concurrent mark sweep collector
@@ -298,3 +306,5 @@
     return GCPolicyCounters::CMSGCAdaptivePolicyCountersKind;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSGCADAPTIVEPOLICYCOUNTERS_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_cmsLockVerifier.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsLockVerifier.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "runtime/vmThread.hpp"
 
 ///////////// Locking verification specific to CMS //////////////
 // Much like "assert_lock_strong()", except that it relaxes the
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSLOCKVERIFIER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSLOCKVERIFIER_HPP
+
+#include "runtime/mutex.hpp"
+
 ///////////// Locking verification specific to CMS //////////////
 // Much like "assert_lock_strong()", except
 // that it relaxes the assertion somewhat for the parallel GC case, where
@@ -38,3 +43,5 @@
     assert_locked(lock, NULL);
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSLOCKVERIFIER_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_HPP
+
+#include "memory/genOopClosures.hpp"
+
 /////////////////////////////////////////////////////////////////
 // Closures used by ConcurrentMarkSweepGeneration's collector
 /////////////////////////////////////////////////////////////////
@@ -427,3 +432,5 @@
   inline void do_oop_nv(oop* p)       { CMSParKeepAliveClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { CMSParKeepAliveClosure::do_oop_work(p); }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_INLINE_HPP
+
+#include "gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+
 // Trim our work_queue so its length is below max at return
 inline void Par_MarkRefsIntoAndScanClosure::trim_queue(uint max) {
   while (_work_queue->size() > max) {
@@ -74,3 +80,5 @@
 inline void Par_PushOrMarkClosure::do_yield_check() {
   _parent->do_yield_check();
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_INLINE_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cmsPermGen.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc_implementation/shared/cSpaceCounters.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/compactPermGen.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/permGen.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 CMSPermGen::CMSPermGen(ReservedSpace rs, size_t initial_byte_size,
              CardTableRS* ct,
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSPERMGEN_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSPERMGEN_HPP
+
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "memory/permGen.hpp"
+
 class CardTableRS;   // fwd decl
 class ConcurrentMarkSweepGeneration;
 
@@ -75,3 +81,5 @@
   bool must_be_youngest() const { return false; }
   bool must_be_oldest() const { return false; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSPERMGEN_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,25 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_compactibleFreeListSpace.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsLockVerifier.hpp"
+#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/shared/liveRange.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/java.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/copy.hpp"
 
 /////////////////////////////////////////////////////////////////////////
 //// CompactibleFreeListSpace
@@ -1093,7 +1110,9 @@
 // perm_gen_verify_bit_map where we store the "deadness" information if
 // we did not sweep the perm gen in the most recent previous GC cycle.
 bool CompactibleFreeListSpace::obj_is_alive(const HeapWord* p) const {
-  assert (block_is_obj(p), "The address should point to an object");
+  assert(SafepointSynchronize::is_at_safepoint() || !is_init_completed(),
+         "Else races are possible");
+  assert(block_is_obj(p), "The address should point to an object");
 
   // If we're sweeping, we use object liveness information from the main bit map
   // for both perm gen and old gen.
@@ -1102,9 +1121,14 @@
   // main marking bit map (live_map below) is locked,
   // OR we're in other phases and perm_gen_verify_bit_map (dead_map below)
   // is stable, because it's mutated only in the sweeping phase.
+  // NOTE: This method is also used by jmap where, if class unloading is
+  // off, the results can return "false" for legitimate perm objects,
+  // when we are not in the midst of a sweeping phase, which can result
+  // in jmap not reporting certain perm gen objects. This will be moot
+  // if/when the perm gen goes away in the future.
   if (_collector->abstract_state() == CMSCollector::Sweeping) {
     CMSBitMap* live_map = _collector->markBitMap();
-    return live_map->isMarked((HeapWord*) p);
+    return live_map->par_isMarked((HeapWord*) p);
   } else {
     // If we're not currently sweeping and we haven't swept the perm gen in
     // the previous concurrent cycle then we may have dead but unswept objects
@@ -2266,7 +2290,7 @@
 }
 
 void CompactibleFreeListSpace::print() const {
-  Space::print_on(tty);
+  print_on(tty);
 }
 
 void CompactibleFreeListSpace::prepare_for_verify() {
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_COMPACTIBLEFREELISTSPACE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_COMPACTIBLEFREELISTSPACE_HPP
+
+#include "gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeList.hpp"
+#include "gc_implementation/concurrentMarkSweep/promotionInfo.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/space.hpp"
+
 // Classes in support of keeping track of promotions into a non-Contiguous
 // space, in this case a CompactibleFreeListSpace.
 
@@ -646,3 +655,5 @@
                                    * CMSSpoolBlockSize);
   return CompactibleFreeListSpace::adjustObjectSize(sz);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_COMPACTIBLEFREELISTSPACE_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,39 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_concurrentMarkSweepGeneration.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp"
+#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp"
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genMarkSweep.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/iterator.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/globals_extension.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/vmThread.hpp"
+#include "services/memoryService.hpp"
+#include "services/runtimeService.hpp"
 
 // statics
 CMSCollector* ConcurrentMarkSweepGeneration::_collector = NULL;
@@ -354,12 +385,8 @@
 double CMSStats::time_until_cms_gen_full() const {
   size_t cms_free = _cms_gen->cmsSpace()->free();
   GenCollectedHeap* gch = GenCollectedHeap::heap();
-  size_t expected_promotion = gch->get_gen(0)->capacity();
-  if (HandlePromotionFailure) {
-    expected_promotion = MIN2(
-        (size_t) _cms_gen->gc_stats()->avg_promoted()->padded_average(),
-        expected_promotion);
-  }
+  size_t expected_promotion = MIN2(gch->get_gen(0)->capacity(),
+                                   (size_t) _cms_gen->gc_stats()->avg_promoted()->padded_average());
   if (cms_free > expected_promotion) {
     // Start a cms collection if there isn't enough space to promote
     // for the next minor collection.  Use the padded average as
@@ -865,57 +892,18 @@
   return free() + _virtual_space.uncommitted_size();
 }
 
-bool ConcurrentMarkSweepGeneration::promotion_attempt_is_safe(
-    size_t max_promotion_in_bytes,
-    bool younger_handles_promotion_failure) const {
-
-  // This is the most conservative test.  Full promotion is
-  // guaranteed if this is used. The multiplicative factor is to
-  // account for the worst case "dilatation".
-  double adjusted_max_promo_bytes = _dilatation_factor * max_promotion_in_bytes;
-  if (adjusted_max_promo_bytes > (double)max_uintx) { // larger than size_t
-    adjusted_max_promo_bytes = (double)max_uintx;
-  }
-  bool result = (max_contiguous_available() >= (size_t)adjusted_max_promo_bytes);
-
-  if (younger_handles_promotion_failure && !result) {
-    // Full promotion is not guaranteed because fragmentation
-    // of the cms generation can prevent the full promotion.
-    result = (max_available() >= (size_t)adjusted_max_promo_bytes);
-
-    if (!result) {
-      // With promotion failure handling the test for the ability
-      // to support the promotion does not have to be guaranteed.
-      // Use an average of the amount promoted.
-      result = max_available() >= (size_t)
-        gc_stats()->avg_promoted()->padded_average();
-      if (PrintGC && Verbose && result) {
-        gclog_or_tty->print_cr(
-          "\nConcurrentMarkSweepGeneration::promotion_attempt_is_safe"
-          " max_available: " SIZE_FORMAT
-          " avg_promoted: " SIZE_FORMAT,
-          max_available(), (size_t)
-          gc_stats()->avg_promoted()->padded_average());
-      }
-    } else {
-      if (PrintGC && Verbose) {
-        gclog_or_tty->print_cr(
-          "\nConcurrentMarkSweepGeneration::promotion_attempt_is_safe"
-          " max_available: " SIZE_FORMAT
-          " adj_max_promo_bytes: " SIZE_FORMAT,
-          max_available(), (size_t)adjusted_max_promo_bytes);
-      }
-    }
-  } else {
-    if (PrintGC && Verbose) {
-      gclog_or_tty->print_cr(
-        "\nConcurrentMarkSweepGeneration::promotion_attempt_is_safe"
-        " contiguous_available: " SIZE_FORMAT
-        " adj_max_promo_bytes: " SIZE_FORMAT,
-        max_contiguous_available(), (size_t)adjusted_max_promo_bytes);
-    }
-  }
-  return result;
+bool ConcurrentMarkSweepGeneration::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const {
+  size_t available = max_available();
+  size_t av_promo  = (size_t)gc_stats()->avg_promoted()->padded_average();
+  bool   res = (available >= av_promo) || (available >= max_promotion_in_bytes);
+  if (PrintGC && Verbose) {
+    gclog_or_tty->print_cr(
+      "CMS: promo attempt is%s safe: available("SIZE_FORMAT") %s av_promo("SIZE_FORMAT"),"
+      "max_promo("SIZE_FORMAT")",
+      res? "":" not", available, res? ">=":"<",
+      av_promo, max_promotion_in_bytes);
+  }
+  return res;
 }
 
 // At a promotion failure dump information on block layout in heap
@@ -6091,23 +6079,14 @@
   assert(_collectorState == Resizing, "Change of collector state to"
     " Resizing must be done under the freelistLocks (plural)");
 
-  // Now that sweeping has been completed, if the GCH's
-  // incremental_collection_will_fail flag is set, clear it,
+  // Now that sweeping has been completed, we clear
+  // the incremental_collection_failed flag,
   // thus inviting a younger gen collection to promote into
   // this generation. If such a promotion may still fail,
   // the flag will be set again when a young collection is
   // attempted.
-  // I think the incremental_collection_will_fail flag's use
-  // is specific to a 2 generation collection policy, so i'll
-  // assert that that's the configuration we are operating within.
-  // The use of the flag can and should be generalized appropriately
-  // in the future to deal with a general n-generation system.
-
   GenCollectedHeap* gch = GenCollectedHeap::heap();
-  assert(gch->collector_policy()->is_two_generation_policy(),
-         "Resetting of incremental_collection_will_fail flag"
-         " may be incorrect otherwise");
-  gch->clear_incremental_collection_will_fail();
+  gch->clear_incremental_collection_failed();  // Worth retrying as fresh space may have been freed up
   gch->update_full_collections_completed(_collection_count_start);
 }
 
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,22 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP
+
+#include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
+#include "gc_implementation/shared/gSpaceCounters.hpp"
+#include "gc_implementation/shared/gcStats.hpp"
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "memory/generation.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/virtualspace.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/bitMap.inline.hpp"
+#include "utilities/stack.inline.hpp"
+#include "utilities/taskqueue.hpp"
+#include "utilities/yieldingWorkgroup.hpp"
+
 // ConcurrentMarkSweepGeneration is in support of a concurrent
 // mark-sweep old generation in the Detlefs-Printezis--Boehm-Demers-Schenker
 // style. We assume, for now, that this generation is always the
@@ -1185,8 +1201,7 @@
   virtual void par_promote_alloc_done(int thread_num);
   virtual void par_oop_since_save_marks_iterate_done(int thread_num);
 
-  virtual bool promotion_attempt_is_safe(size_t promotion_in_bytes,
-    bool younger_handles_promotion_failure) const;
+  virtual bool promotion_attempt_is_safe(size_t promotion_in_bytes) const;
 
   // Inform this (non-young) generation that a promotion failure was
   // encountered during a collection of a younger generation that
@@ -1883,3 +1898,5 @@
   TraceCMSMemoryManagerStats();
 };
 
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_INLINE_HPP
+
+#include "gc_implementation/concurrentMarkSweep/cmsLockVerifier.hpp"
+#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "memory/defNewGeneration.hpp"
+
 inline void CMSBitMap::clear_all() {
   assert_locked();
   // CMS bitmaps are usually cover large memory regions
@@ -505,3 +515,5 @@
                  CardTableModRefBS::card_size /* bytes */));
   _t->par_mark_range(mr2);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_INLINE_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_concurrentMarkSweepThread.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/vmThread.hpp"
 
 // ======= Concurrent Mark Sweep Thread ========
 
@@ -272,12 +284,16 @@
   }
 }
 
-// Wait until the next synchronous GC or a timeout, whichever is earlier.
-void ConcurrentMarkSweepThread::wait_on_cms_lock(long t) {
+// Wait until the next synchronous GC, a concurrent full gc request,
+// or a timeout, whichever is earlier.
+void ConcurrentMarkSweepThread::wait_on_cms_lock(long t_millis) {
   MutexLockerEx x(CGC_lock,
                   Mutex::_no_safepoint_check_flag);
+  if (_should_terminate || _collector->_full_gc_requested) {
+    return;
+  }
   set_CMS_flag(CMS_cms_wants_token);   // to provoke notifies
-  CGC_lock->wait(Mutex::_no_safepoint_check_flag, t);
+  CGC_lock->wait(Mutex::_no_safepoint_check_flag, t_millis);
   clear_CMS_flag(CMS_cms_wants_token);
   assert(!CMS_flag_is_set(CMS_cms_has_token | CMS_cms_wants_token),
          "Should not be set");
@@ -289,7 +305,8 @@
       icms_wait();
       return;
     } else {
-      // Wait until the next synchronous GC or a timeout, whichever is earlier
+      // Wait until the next synchronous GC, a concurrent full gc
+      // request or a timeout, whichever is earlier.
       wait_on_cms_lock(CMSWaitDuration);
     }
     // Check if we should start a CMS collection cycle
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPTHREAD_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPTHREAD_HPP
+
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "gc_implementation/shared/concurrentGCThread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 class ConcurrentMarkSweepGeneration;
 class CMSCollector;
 
@@ -120,8 +135,10 @@
   }
 
   // Wait on CMS lock until the next synchronous GC
-  // or given timeout, whichever is earlier.
-  void    wait_on_cms_lock(long t); // milliseconds
+  // or given timeout, whichever is earlier. A timeout value
+  // of 0 indicates that there is no upper bound on the wait time.
+  // A concurrent full gc request terminates the wait.
+  void wait_on_cms_lock(long t_millis);
 
   // The CMS thread will yield during the work portion of its cycle
   // only when requested to.  Both synchronous and asychronous requests
@@ -249,3 +266,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPTHREAD_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_freeBlockDictionary.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 #ifndef PRODUCT
 Mutex* FreeBlockDictionary::par_lock() const {
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREEBLOCKDICTIONARY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREEBLOCKDICTIONARY_HPP
+
+#include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "runtime/mutex.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/ostream.hpp"
+
 // A FreeBlockDictionary is an abstract superclass that will allow
 // a number of alternative implementations in the future.
 class FreeBlockDictionary: public CHeapObj {
@@ -88,3 +99,5 @@
   void   set_par_lock(Mutex* lock)       PRODUCT_RETURN;
   void   verify_par_locked()       const PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREEBLOCKDICTIONARY_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_freeChunk.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
+#include "utilities/copy.hpp"
 
 #ifndef PRODUCT
 
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREECHUNK_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREECHUNK_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "oops/markOop.hpp"
+#include "runtime/mutex.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/ostream.hpp"
+
 //
 // Free block maintenance for Concurrent Mark Sweep Generation
 //
@@ -141,3 +152,5 @@
 
 extern size_t MinChunkSize;
 
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREECHUNK_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_freeList.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeList.hpp"
+#include "memory/sharedHeap.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/vmThread.hpp"
 
 // Free list.  A FreeList is used to access a linked list of chunks
 // of space in the heap.  The head and tail are maintained so that
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREELIST_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREELIST_HPP
+
+#include "gc_implementation/shared/allocationStats.hpp"
+
 class CompactibleFreeListSpace;
 
 // A class for maintaining a free list of FreeChunk's.  The FreeList
@@ -326,3 +331,5 @@
   static void print_labels_on(outputStream* st, const char* c);
   void print_on(outputStream* st, const char* c = NULL) const;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_FREELIST_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_promotionInfo.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+#include "gc_implementation/concurrentMarkSweep/promotionInfo.hpp"
+#include "oops/markOop.inline.hpp"
+#include "oops/oop.inline.hpp"
 
 /////////////////////////////////////////////////////////////////////////
 //// PromotionInfo
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_PROMOTIONINFO_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_PROMOTIONINFO_HPP
+
+#include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
+#include "memory/allocation.hpp"
+
 // Forward declarations
 class CompactibleFreeListSpace;
 
@@ -204,3 +210,5 @@
   void print_statistics(uint worker_id) const;
 };
 
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_PROMOTIONINFO_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -21,9 +21,15 @@
  * questions.
  *
  */
-# include "incls/_precompiled.incl"
-# include "incls/_vmCMSOperations.cpp.incl"
 
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "utilities/dtrace.hpp"
 HS_DTRACE_PROBE_DECL(hs_private, cms__initmark__begin);
 HS_DTRACE_PROBE_DECL(hs_private, cms__initmark__end);
 
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMCMSOPERATIONS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMCMSOPERATIONS_HPP
+
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "gc_interface/gcCause.hpp"
+#include "runtime/vm_operations.hpp"
+
 // The VM_CMS_Operation is slightly different from
 // a VM_GC_Operation -- and would not have subclassed easily
 // to VM_GC_Operation without several changes to VM_GC_Operation.
@@ -136,3 +144,5 @@
   virtual bool is_cheap_allocated() const { return false; }
   virtual bool evaluate_at_safepoint() const;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMCMSOPERATIONS_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMSTRUCTS_CMS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMSTRUCTS_CMS_HPP
+
 #define VM_STRUCTS_CMS(nonstatic_field, \
                    volatile_nonstatic_field, \
                    static_field) \
@@ -78,3 +81,5 @@
 #define VM_INT_CONSTANTS_CMS(declare_constant)                            \
   declare_constant(Generation::ConcurrentMarkSweep)                       \
   declare_constant(PermGen::ConcurrentMarkSweep)
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMSTRUCTS_CMS_HPP
--- a/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_BUFFERINGOOPCLOSURE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_BUFFERINGOOPCLOSURE_HPP
+
+#include "memory/genOopClosures.hpp"
+#include "memory/generation.hpp"
+#include "runtime/os.hpp"
+#include "utilities/taskqueue.hpp"
+
 // A BufferingOops closure tries to separate out the cost of finding roots
 // from the cost of applying closures to them.  It maintains an array of
 // ref-containing locations.  Until the array is full, applying the closure
@@ -201,3 +209,5 @@
     _hr_curr(_hr_buffer),
     _closure_app_seconds(0.0) { }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_BUFFERINGOOPCLOSURE_HPP
--- a/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_collectionSetChooser.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/collectionSetChooser.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "memory/space.inline.hpp"
 
 CSetChooserCache::CSetChooserCache() {
   for (int i = 0; i < CacheLength; ++i)
--- a/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_COLLECTIONSETCHOOSER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_COLLECTIONSETCHOOSER_HPP
+
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "utilities/growableArray.hpp"
+
 // We need to sort heap regions by collection desirability.
 
 class CSetChooserCache VALUE_OBJ_CLASS_SPEC {
@@ -136,3 +142,5 @@
 #endif
 
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_COLLECTIONSETCHOOSER_HPP
--- a/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_concurrentG1Refine.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/concurrentG1Refine.hpp"
+#include "gc_implementation/g1/concurrentG1RefineThread.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/g1RemSet.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "memory/space.inline.hpp"
+#include "runtime/atomic.hpp"
+#include "utilities/copy.hpp"
 
 // Possible sizes for the card counts cache: odd primes that roughly double in size.
 // (See jvmtiTagMap.cpp).
--- a/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINE_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // Forward decl
 class ConcurrentG1RefineThread;
 class G1RemSet;
@@ -223,3 +231,5 @@
 
   int thread_threshold_step() const { return _thread_threshold_step; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINE_HPP
--- a/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,14 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_concurrentG1RefineThread.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/concurrentG1Refine.hpp"
+#include "gc_implementation/g1/concurrentG1RefineThread.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
 
 ConcurrentG1RefineThread::
 ConcurrentG1RefineThread(ConcurrentG1Refine* cg1r, ConcurrentG1RefineThread *next,
--- a/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINETHREAD_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINETHREAD_HPP
+
+#include "gc_implementation/shared/concurrentGCThread.hpp"
+
 // Forward Decl.
 class ConcurrentG1Refine;
 
@@ -84,3 +89,5 @@
   // shutdown
   void stop();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINETHREAD_HPP
--- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_concurrentMark.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/g1RemSet.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
 
 //
 // CMS Bit Map Wrapper
@@ -2418,6 +2431,8 @@
   for (int i = 0; i < (int)_max_task_num; ++i) {
     OopTaskQueue* queue = _task_queues->queue(i);
     queue->set_empty();
+    // Clear any partial regions from the CMTasks
+    _tasks[i]->clear_aborted_region();
   }
 }
 
@@ -2706,7 +2721,6 @@
   clear_marking_state();
   for (int i = 0; i < (int)_max_task_num; ++i) {
     _tasks[i]->clear_region_fields();
-    _tasks[i]->clear_aborted_region();
   }
   _has_aborted = true;
 
@@ -2985,7 +2999,7 @@
 
   _nextMarkBitMap                = nextMarkBitMap;
   clear_region_fields();
-  clear_aborted_region();
+  assert(_aborted_region.is_empty(), "should have been cleared");
 
   _calls                         = 0;
   _elapsed_time_ms               = 0.0;
--- a/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
+
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "utilities/taskqueue.hpp"
+
 class G1CollectedHeap;
 class CMTask;
 typedef GenericTaskQueue<oop>            CMTaskQueue;
@@ -1120,3 +1126,5 @@
   void increase_objs_found_on_bitmap() { ++_objs_found_on_bitmap; }
 #endif // _MARKING_STATS_
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
--- a/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,14 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_concurrentMarkThread.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/g1MMUTracker.hpp"
+#include "gc_implementation/g1/vm_operations_g1.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/vmThread.hpp"
 
 // ======= Concurrent Mark Thread ========
 
--- a/src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARKTHREAD_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARKTHREAD_HPP
+
+#include "gc_implementation/shared/concurrentGCThread.hpp"
+
 // The Concurrent Mark GC Thread (could be several in the future).
 // This is copied from the Concurrent Mark Sweep GC Thread
 // Still under construction.
@@ -93,3 +98,5 @@
   // shutdown
   void stop();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARKTHREAD_HPP
--- a/src/share/vm/gc_implementation/g1/concurrentMarkThread.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentMarkThread.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARKTHREAD_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARKTHREAD_INLINE_HPP
+
+#include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/concurrentMarkThread.hpp"
+
   // Total virtual time so far.
 inline double ConcurrentMarkThread::vtime_accum() {
   return _vtime_accum + _cm->all_task_accum_vtime();
@@ -31,3 +37,5 @@
 inline double ConcurrentMarkThread::vtime_mark_accum() {
   return _vtime_mark_accum + _cm->all_task_accum_vtime();
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARKTHREAD_INLINE_HPP
--- a/src/share/vm/gc_implementation/g1/concurrentZFThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentZFThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_concurrentZFThread.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/concurrentZFThread.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "memory/space.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "utilities/copy.hpp"
 
 // ======= Concurrent Zero-Fill Thread ========
 
--- a/src/share/vm/gc_implementation/g1/concurrentZFThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/concurrentZFThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTZFTHREAD_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTZFTHREAD_HPP
+
+#include "gc_implementation/shared/concurrentGCThread.hpp"
+
 // The Concurrent ZF Thread.  Performs concurrent zero-filling.
 
 class ConcurrentZFThread: public ConcurrentGCThread {
@@ -82,3 +87,5 @@
 
   static void print_summary_info();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTZFTHREAD_HPP
--- a/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,23 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dirtyCardQueue.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/dirtyCardQueue.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/workgroup.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 bool DirtyCardQueue::apply_closure(CardTableEntryClosure* cl,
                                    bool consume,
--- a/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_DIRTYCARDQUEUE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_DIRTYCARDQUEUE_HPP
+
+#include "gc_implementation/g1/ptrQueue.hpp"
+#include "memory/allocation.hpp"
+
 class FreeIdSet;
 
 // A closure class for processing card table entries.  Note that we don't
@@ -168,3 +174,5 @@
   }
 
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_DIRTYCARDQUEUE_HPP
--- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1BlockOffsetTable.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp"
+#include "memory/space.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 //////////////////////////////////////////////////////////////////////
 // G1BlockOffsetSharedArray
@@ -175,7 +178,7 @@
   }
   assert(start_card > _array->index_for(_bottom), "Cannot be first card");
   assert(_array->offset_array(start_card-1) <= N_words,
-    "Offset card has an unexpected value");
+         "Offset card has an unexpected value");
   size_t start_card_for_region = start_card;
   u_char offset = max_jubyte;
   for (int i = 0; i < BlockOffsetArray::N_powers; i++) {
@@ -577,6 +580,16 @@
 #endif
 }
 
+void
+G1BlockOffsetArray::set_for_starts_humongous(HeapWord* new_end) {
+  assert(_end ==  new_end, "_end should have already been updated");
+
+  // The first BOT entry should have offset 0.
+  _array->set_offset_array(_array->index_for(_bottom), 0);
+  // The rest should point to the first one.
+  set_remainder_to_point_to_start(_bottom + N_words, new_end);
+}
+
 //////////////////////////////////////////////////////////////////////
 // G1BlockOffsetArrayContigSpace
 //////////////////////////////////////////////////////////////////////
@@ -626,3 +639,12 @@
          "Precondition of call");
   _array->set_offset_array(bottom_index, 0);
 }
+
+void
+G1BlockOffsetArrayContigSpace::set_for_starts_humongous(HeapWord* new_end) {
+  G1BlockOffsetArray::set_for_starts_humongous(new_end);
+
+  // Make sure _next_offset_threshold and _next_offset_index point to new_end.
+  _next_offset_threshold = new_end;
+  _next_offset_index     = _array->index_for(new_end);
+}
--- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1BLOCKOFFSETTABLE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1BLOCKOFFSETTABLE_HPP
+
+#include "memory/memRegion.hpp"
+#include "runtime/virtualspace.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // The CollectedHeap type requires subtypes to implement a method
 // "block_start".  For some subtypes, notably generational
 // systems using card-table-based write barriers, the efficiency of this
@@ -436,6 +443,8 @@
   }
 
   void check_all_cards(size_t left_card, size_t right_card) const;
+
+  virtual void set_for_starts_humongous(HeapWord* new_end);
 };
 
 // A subtype of BlockOffsetArray that takes advantage of the fact
@@ -484,4 +493,8 @@
 
   HeapWord* block_start_unsafe(const void* addr);
   HeapWord* block_start_unsafe_const(const void* addr) const;
+
+  virtual void set_for_starts_humongous(HeapWord* new_end);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1BLOCKOFFSETTABLE_HPP
--- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1BLOCKOFFSETTABLE_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1BLOCKOFFSETTABLE_INLINE_HPP
+
+#include "gc_implementation/g1/g1BlockOffsetTable.hpp"
+#include "memory/space.hpp"
+
 inline HeapWord* G1BlockOffsetTable::block_start(const void* addr) {
   if (addr >= _bottom && addr < _end) {
     return block_start_unsafe(addr);
@@ -151,3 +157,5 @@
 inline void G1BlockOffsetArray::freed(HeapWord* blk, size_t size) {
   freed(blk, blk + size);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1BLOCKOFFSETTABLE_INLINE_HPP
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,29 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1CollectedHeap.cpp.incl"
+#include "precompiled.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_implementation/g1/bufferingOopClosure.hpp"
+#include "gc_implementation/g1/concurrentG1Refine.hpp"
+#include "gc_implementation/g1/concurrentG1RefineThread.hpp"
+#include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
+#include "gc_implementation/g1/concurrentZFThread.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/g1MarkSweep.hpp"
+#include "gc_implementation/g1/g1OopClosures.inline.hpp"
+#include "gc_implementation/g1/g1RemSet.inline.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "gc_implementation/g1/vm_operations_g1.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/generationSpec.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#include "runtime/aprofiler.hpp"
+#include "runtime/vmThread.hpp"
 
 size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0;
 
@@ -791,10 +812,11 @@
   int                _worker_i;
 public:
   RebuildRSOutOfRegionClosure(G1CollectedHeap* g1, int worker_i = 0) :
-    _cl(g1->g1_rem_set()->as_HRInto_G1RemSet(), worker_i),
+    _cl(g1->g1_rem_set(), worker_i),
     _worker_i(worker_i),
     _g1h(g1)
   { }
+
   bool doHeapRegion(HeapRegion* r) {
     if (!r->continuesHumongous()) {
       _cl.set_from(r);
@@ -890,7 +912,7 @@
     abandon_cur_alloc_region();
     abandon_gc_alloc_regions();
     assert(_cur_alloc_region == NULL, "Invariant.");
-    g1_rem_set()->as_HRInto_G1RemSet()->cleanupHRRS();
+    g1_rem_set()->cleanupHRRS();
     tear_down_region_lists();
     set_used_regions_to_need_zero_fill();
 
@@ -1506,15 +1528,11 @@
   }
 
   // Also create a G1 rem set.
-  if (G1UseHRIntoRS) {
-    if (mr_bs()->is_a(BarrierSet::CardTableModRef)) {
-      _g1_rem_set = new HRInto_G1RemSet(this, (CardTableModRefBS*)mr_bs());
-    } else {
-      vm_exit_during_initialization("G1 requires a cardtable mod ref bs.");
-      return JNI_ENOMEM;
-    }
+  if (mr_bs()->is_a(BarrierSet::CardTableModRef)) {
+    _g1_rem_set = new G1RemSet(this, (CardTableModRefBS*)mr_bs());
   } else {
-    _g1_rem_set = new StupidG1RemSet(this);
+    vm_exit_during_initialization("G1 requires a cardtable mod ref bs.");
+    return JNI_ENOMEM;
   }
 
   // Carve out the G1 part of the heap.
@@ -2706,8 +2724,7 @@
 }
 
 size_t G1CollectedHeap::cards_scanned() {
-  HRInto_G1RemSet* g1_rset = (HRInto_G1RemSet*) g1_rem_set();
-  return g1_rset->cardsScanned();
+  return g1_rem_set()->cardsScanned();
 }
 
 void
@@ -3850,6 +3867,54 @@
                undo_waste() * HeapWordSize / K);
 }
 
+#ifdef ASSERT
+bool G1ParScanThreadState::verify_ref(narrowOop* ref) const {
+  assert(ref != NULL, "invariant");
+  assert(UseCompressedOops, "sanity");
+  assert(!has_partial_array_mask(ref), err_msg("ref=" PTR_FORMAT, ref));
+  oop p = oopDesc::load_decode_heap_oop(ref);
+  assert(_g1h->is_in_g1_reserved(p),
+         err_msg("ref=" PTR_FORMAT " p=" PTR_FORMAT, ref, intptr_t(p)));
+  return true;
+}
+
+bool G1ParScanThreadState::verify_ref(oop* ref) const {
+  assert(ref != NULL, "invariant");
+  if (has_partial_array_mask(ref)) {
+    // Must be in the collection set--it's already been copied.
+    oop p = clear_partial_array_mask(ref);
+    assert(_g1h->obj_in_cs(p),
+           err_msg("ref=" PTR_FORMAT " p=" PTR_FORMAT, ref, intptr_t(p)));
+  } else {
+    oop p = oopDesc::load_decode_heap_oop(ref);
+    assert(_g1h->is_in_g1_reserved(p),
+           err_msg("ref=" PTR_FORMAT " p=" PTR_FORMAT, ref, intptr_t(p)));
+  }
+  return true;
+}
+
+bool G1ParScanThreadState::verify_task(StarTask ref) const {
+  if (ref.is_narrow()) {
+    return verify_ref((narrowOop*) ref);
+  } else {
+    return verify_ref((oop*) ref);
+  }
+}
+#endif // ASSERT
+
+void G1ParScanThreadState::trim_queue() {
+  StarTask ref;
+  do {
+    // Drain the overflow stack first, so other threads can steal.
+    while (refs()->pop_overflow(ref)) {
+      deal_with_reference(ref);
+    }
+    while (refs()->pop_local(ref)) {
+      deal_with_reference(ref);
+    }
+  } while (!refs()->is_empty());
+}
+
 G1ParClosureSuper::G1ParClosureSuper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state) :
   _g1(g1), _g1_rem(_g1->g1_rem_set()), _cm(_g1->concurrent_mark()),
   _par_scan_state(par_scan_state) { }
@@ -4052,38 +4117,43 @@
     : _g1h(g1h), _par_scan_state(par_scan_state),
       _queues(queues), _terminator(terminator) {}
 
-  void do_void() {
-    G1ParScanThreadState* pss = par_scan_state();
-    while (true) {
+  void do_void();
+
+private:
+  inline bool offer_termination();
+};
+
+bool G1ParEvacuateFollowersClosure::offer_termination() {
+  G1ParScanThreadState* const pss = par_scan_state();
+  pss->start_term_time();
+  const bool res = terminator()->offer_termination();
+  pss->end_term_time();
+  return res;
+}
+
+void G1ParEvacuateFollowersClosure::do_void() {
+  StarTask stolen_task;
+  G1ParScanThreadState* const pss = par_scan_state();
+  pss->trim_queue();
+
+  do {
+    while (queues()->steal(pss->queue_num(), pss->hash_seed(), stolen_task)) {
+      assert(pss->verify_task(stolen_task), "sanity");
+      if (stolen_task.is_narrow()) {
+        pss->deal_with_reference((narrowOop*) stolen_task);
+      } else {
+        pss->deal_with_reference((oop*) stolen_task);
+      }
+
+      // We've just processed a reference and we might have made
+      // available new entries on the queues. So we have to make sure
+      // we drain the queues as necessary.
       pss->trim_queue();
-
-      StarTask stolen_task;
-      if (queues()->steal(pss->queue_num(), pss->hash_seed(), stolen_task)) {
-        // slightly paranoid tests; I'm trying to catch potential
-        // problems before we go into push_on_queue to know where the
-        // problem is coming from
-        assert((oop*)stolen_task != NULL, "Error");
-        if (stolen_task.is_narrow()) {
-          assert(UseCompressedOops, "Error");
-          narrowOop* p = (narrowOop*) stolen_task;
-          assert(has_partial_array_mask(p) ||
-                 _g1h->is_in_g1_reserved(oopDesc::load_decode_heap_oop(p)), "Error");
-          pss->push_on_queue(p);
-        } else {
-          oop* p = (oop*) stolen_task;
-          assert(has_partial_array_mask(p) || _g1h->is_in_g1_reserved(*p), "Error");
-          pss->push_on_queue(p);
-        }
-        continue;
-      }
-      pss->start_term_time();
-      if (terminator()->offer_termination()) break;
-      pss->end_term_time();
     }
-    pss->end_term_time();
-    pss->retire_alloc_buffers();
-  }
-};
+  } while (!offer_termination());
+
+  pss->retire_alloc_buffers();
+}
 
 class G1ParTask : public AbstractGangTask {
 protected:
@@ -4182,8 +4252,7 @@
       pss.print_termination_stats(i);
     }
 
-    assert(pss.refs_to_scan() == 0, "Task queue should be empty");
-    assert(pss.overflowed_refs_to_scan() == 0, "Overflow queue should be empty");
+    assert(pss.refs()->is_empty(), "should be empty");
     double end_time_ms = os::elapsedTime() * 1000.0;
     _g1h->g1_policy()->record_gc_worker_end_time(i, end_time_ms);
   }
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_HPP
+
+#include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/g1RemSet.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "gc_implementation/parNew/parGCAllocBuffer.hpp"
+#include "memory/barrierSet.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/sharedHeap.hpp"
+
 // A "G1CollectedHeap" is an implementation of a java heap for HotSpot.
 // It uses the "Garbage First" heap organization and algorithm, which
 // may combine concurrent marking with parallel, incremental compaction of
@@ -1651,49 +1662,17 @@
   size_t alloc_buffer_waste() const              { return _alloc_buffer_waste; }
   size_t undo_waste() const                      { return _undo_waste; }
 
+#ifdef ASSERT
+  bool verify_ref(narrowOop* ref) const;
+  bool verify_ref(oop* ref) const;
+  bool verify_task(StarTask ref) const;
+#endif // ASSERT
+
   template <class T> void push_on_queue(T* ref) {
-    assert(ref != NULL, "invariant");
-    assert(has_partial_array_mask(ref) ||
-           _g1h->is_in_g1_reserved(oopDesc::load_decode_heap_oop(ref)), "invariant");
-#ifdef ASSERT
-    if (has_partial_array_mask(ref)) {
-      oop p = clear_partial_array_mask(ref);
-      // Verify that we point into the CS
-      assert(_g1h->obj_in_cs(p), "Should be in CS");
-    }
-#endif
+    assert(verify_ref(ref), "sanity");
     refs()->push(ref);
   }
 
-  void pop_from_queue(StarTask& ref) {
-    if (refs()->pop_local(ref)) {
-      assert((oop*)ref != NULL, "pop_local() returned true");
-      assert(UseCompressedOops || !ref.is_narrow(), "Error");
-      assert(has_partial_array_mask((oop*)ref) ||
-             _g1h->is_in_g1_reserved(ref.is_narrow() ? oopDesc::load_decode_heap_oop((narrowOop*)ref)
-                                                     : oopDesc::load_decode_heap_oop((oop*)ref)),
-              "invariant");
-    } else {
-      StarTask null_task;
-      ref = null_task;
-    }
-  }
-
-  void pop_from_overflow_queue(StarTask& ref) {
-    StarTask new_ref;
-    refs()->pop_overflow(new_ref);
-    assert((oop*)new_ref != NULL, "pop() from a local non-empty stack");
-    assert(UseCompressedOops || !new_ref.is_narrow(), "Error");
-    assert(has_partial_array_mask((oop*)new_ref) ||
-           _g1h->is_in_g1_reserved(new_ref.is_narrow() ? oopDesc::load_decode_heap_oop((narrowOop*)new_ref)
-                                                       : oopDesc::load_decode_heap_oop((oop*)new_ref)),
-           "invariant");
-    ref = new_ref;
-  }
-
-  int refs_to_scan()            { return (int)refs()->size(); }
-  int overflowed_refs_to_scan() { return (int)refs()->overflow_stack()->size(); }
-
   template <class T> void update_rs(HeapRegion* from, T* p, int tid) {
     if (G1DeferredRSUpdate) {
       deferred_rs_update(from, p, tid);
@@ -1804,7 +1783,6 @@
     }
   }
 
-private:
   template <class T> void deal_with_reference(T* ref_to_scan) {
     if (has_partial_array_mask(ref_to_scan)) {
       _partial_scan_cl->do_oop_nv(ref_to_scan);
@@ -1818,59 +1796,17 @@
     }
   }
 
-public:
-  void trim_queue() {
-    // I've replicated the loop twice, first to drain the overflow
-    // queue, second to drain the task queue. This is better than
-    // having a single loop, which checks both conditions and, inside
-    // it, either pops the overflow queue or the task queue, as each
-    // loop is tighter. Also, the decision to drain the overflow queue
-    // first is not arbitrary, as the overflow queue is not visible
-    // to the other workers, whereas the task queue is. So, we want to
-    // drain the "invisible" entries first, while allowing the other
-    // workers to potentially steal the "visible" entries.
-
-    while (refs_to_scan() > 0 || overflowed_refs_to_scan() > 0) {
-      while (overflowed_refs_to_scan() > 0) {
-        StarTask ref_to_scan;
-        assert((oop*)ref_to_scan == NULL, "Constructed above");
-        pop_from_overflow_queue(ref_to_scan);
-        // We shouldn't have pushed it on the queue if it was not
-        // pointing into the CSet.
-        assert((oop*)ref_to_scan != NULL, "Follows from inner loop invariant");
-        if (ref_to_scan.is_narrow()) {
-          assert(UseCompressedOops, "Error");
-          narrowOop* p = (narrowOop*)ref_to_scan;
-          assert(!has_partial_array_mask(p) &&
-                 _g1h->is_in_g1_reserved(oopDesc::load_decode_heap_oop(p)), "sanity");
-          deal_with_reference(p);
-        } else {
-          oop* p = (oop*)ref_to_scan;
-          assert((has_partial_array_mask(p) && _g1h->is_in_g1_reserved(clear_partial_array_mask(p))) ||
-                 _g1h->is_in_g1_reserved(oopDesc::load_decode_heap_oop(p)), "sanity");
-          deal_with_reference(p);
-        }
-      }
-
-      while (refs_to_scan() > 0) {
-        StarTask ref_to_scan;
-        assert((oop*)ref_to_scan == NULL, "Constructed above");
-        pop_from_queue(ref_to_scan);
-        if ((oop*)ref_to_scan != NULL) {
-          if (ref_to_scan.is_narrow()) {
-            assert(UseCompressedOops, "Error");
-            narrowOop* p = (narrowOop*)ref_to_scan;
-            assert(!has_partial_array_mask(p) &&
-                    _g1h->is_in_g1_reserved(oopDesc::load_decode_heap_oop(p)), "sanity");
-            deal_with_reference(p);
-          } else {
-            oop* p = (oop*)ref_to_scan;
-            assert((has_partial_array_mask(p) && _g1h->obj_in_cs(clear_partial_array_mask(p))) ||
-                   _g1h->is_in_g1_reserved(oopDesc::load_decode_heap_oop(p)), "sanity");
-            deal_with_reference(p);
-          }
-        }
-      }
+  void deal_with_reference(StarTask ref) {
+    assert(verify_task(ref), "sanity");
+    if (ref.is_narrow()) {
+      deal_with_reference((narrowOop*)ref);
+    } else {
+      deal_with_reference((oop*)ref);
     }
   }
+
+public:
+  void trim_queue();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_HPP
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_INLINE_HPP
+
+#include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.hpp"
+#include "gc_implementation/g1/heapRegionSeq.hpp"
+#include "utilities/taskqueue.hpp"
+
 // Inline functions for G1CollectedHeap
 
 inline HeapRegion*
@@ -94,3 +102,5 @@
 inline bool G1CollectedHeap::isMarkedNext(oop obj) const {
   return _cm->nextMarkBitMap()->isMarked((HeapWord *)obj);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_INLINE_HPP
--- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1CollectorPolicy.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/concurrentG1Refine.hpp"
+#include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/java.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "utilities/debug.hpp"
 
 #define PREDICTIONS_VERBOSE 0
 
--- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTORPOLICY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTORPOLICY_HPP
+
+#include "gc_implementation/g1/collectionSetChooser.hpp"
+#include "gc_implementation/g1/g1MMUTracker.hpp"
+#include "memory/collectorPolicy.hpp"
+
 // A G1CollectorPolicy makes policy decisions that determine the
 // characteristics of the collector.  Examples include:
 //   * choice of collection set.
@@ -1287,3 +1294,5 @@
 // Local Variables: ***
 // c-indentation-style: gnu ***
 // End: ***
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTORPOLICY_HPP
--- a/src/share/vm/gc_implementation/g1/g1MMUTracker.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1MMUTracker.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1MMUTracker.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1MMUTracker.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "utilities/ostream.hpp"
 
 #define _DISABLE_MMU                             0
 
--- a/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1MMUTRACKER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1MMUTRACKER_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/debug.hpp"
+
 // Keeps track of the GC work and decides when it is OK to do GC work
 // and for how long so that the MMU invariants are maintained.
 
@@ -127,3 +133,5 @@
   virtual double longest_pause(double current_time);
   virtual double when_sec(double current_time, double pause_time);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1MMUTRACKER_HPP
--- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,30 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1MarkSweep.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeCache.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_implementation/g1/g1MarkSweep.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/modRefBarrierSet.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/space.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/aprofiler.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/events.hpp"
 
 class HeapRegion;
 
--- a/src/share/vm/gc_implementation/g1/g1MarkSweep.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,19 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1MARKSWEEP_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1MARKSWEEP_HPP
+
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "memory/genMarkSweep.hpp"
+#include "memory/generation.hpp"
+#include "memory/universe.hpp"
+#include "oops/markOop.hpp"
+#include "oops/oop.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/growableArray.hpp"
+
 class ReferenceProcessor;
 
 // G1MarkSweep takes care of global mark-compact garbage collection for a
@@ -55,3 +68,5 @@
 
   static void allocate_stacks();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1MARKSWEEP_HPP
--- a/src/share/vm/gc_implementation/g1/g1OopClosures.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1OopClosures.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,11 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP
+
 class HeapRegion;
 class G1CollectedHeap;
 class G1RemSet;
-class HRInto_G1RemSet;
-class G1RemSet;
 class ConcurrentMark;
 class DirtyCardToOopClosure;
 class CMBitMap;
@@ -212,3 +213,5 @@
   bool do_header() { return false; }
   int out_of_region() { return _out_of_region; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP
--- a/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_INLINE_HPP
+
+#include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.hpp"
+#include "gc_implementation/g1/g1OopClosures.hpp"
+#include "gc_implementation/g1/g1RemSet.hpp"
+
 /*
  * This really ought to be an inline function, but apparently the C++
  * compiler sometimes sees fit to ignore inline declarations.  Sigh.
@@ -121,3 +129,5 @@
   }
 }
 
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_INLINE_HPP
--- a/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1RemSet.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/bufferingOopClosure.hpp"
+#include "gc_implementation/g1/concurrentG1Refine.hpp"
+#include "gc_implementation/g1/concurrentG1RefineThread.hpp"
+#include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/g1OopClosures.inline.hpp"
+#include "gc_implementation/g1/g1RemSet.inline.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "memory/iterator.hpp"
+#include "oops/oop.inline.hpp"
+#include "utilities/intHisto.hpp"
 
 #define CARD_REPEAT_HISTO 0
 
@@ -97,13 +108,6 @@
   }
 };
 
-void
-StupidG1RemSet::oops_into_collection_set_do(OopsInHeapRegionClosure* oc,
-                                            int worker_i) {
-  IntoCSRegionClosure rc(_g1, oc);
-  _g1->heap_region_iterate(&rc);
-}
-
 class VerifyRSCleanCardOopClosure: public OopClosure {
   G1CollectedHeap* _g1;
 public:
@@ -119,10 +123,10 @@
   }
 };
 
-HRInto_G1RemSet::HRInto_G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs)
-  : G1RemSet(g1), _ct_bs(ct_bs), _g1p(_g1->g1_policy()),
+G1RemSet::G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs)
+  : _g1(g1), _conc_refine_cards(0),
+    _ct_bs(ct_bs), _g1p(_g1->g1_policy()),
     _cg1r(g1->concurrent_g1_refine()),
-    _traversal_in_progress(false),
     _cset_rs_update_cl(NULL),
     _cards_scanned(NULL), _total_cards_scanned(0)
 {
@@ -134,7 +138,7 @@
   }
 }
 
-HRInto_G1RemSet::~HRInto_G1RemSet() {
+G1RemSet::~G1RemSet() {
   delete _seq_task;
   for (uint i = 0; i < n_workers(); i++) {
     assert(_cset_rs_update_cl[i] == NULL, "it should be");
@@ -277,7 +281,7 @@
 //          p threads
 // Then thread t will start at region t * floor (n/p)
 
-HeapRegion* HRInto_G1RemSet::calculateStartRegion(int worker_i) {
+HeapRegion* G1RemSet::calculateStartRegion(int worker_i) {
   HeapRegion* result = _g1p->collection_set();
   if (ParallelGCThreads > 0) {
     size_t cs_size = _g1p->collection_set_size();
@@ -290,7 +294,7 @@
   return result;
 }
 
-void HRInto_G1RemSet::scanRS(OopsInHeapRegionClosure* oc, int worker_i) {
+void G1RemSet::scanRS(OopsInHeapRegionClosure* oc, int worker_i) {
   double rs_time_start = os::elapsedTime();
   HeapRegion *startRegion = calculateStartRegion(worker_i);
 
@@ -340,7 +344,7 @@
   }
 };
 
-void HRInto_G1RemSet::updateRS(DirtyCardQueue* into_cset_dcq, int worker_i) {
+void G1RemSet::updateRS(DirtyCardQueue* into_cset_dcq, int worker_i) {
   double start = os::elapsedTime();
   // Apply the given closure to all remaining log entries.
   RefineRecordRefsIntoCSCardTableEntryClosure into_cset_update_rs_cl(_g1, into_cset_dcq);
@@ -439,12 +443,11 @@
   }
 };
 
-void HRInto_G1RemSet::cleanupHRRS() {
+void G1RemSet::cleanupHRRS() {
   HeapRegionRemSet::cleanup();
 }
 
-void
-HRInto_G1RemSet::oops_into_collection_set_do(OopsInHeapRegionClosure* oc,
+void G1RemSet::oops_into_collection_set_do(OopsInHeapRegionClosure* oc,
                                              int worker_i) {
 #if CARD_REPEAT_HISTO
   ct_freq_update_histo_and_reset();
@@ -508,8 +511,7 @@
   _cset_rs_update_cl[worker_i] = NULL;
 }
 
-void HRInto_G1RemSet::
-prepare_for_oops_into_collection_set_do() {
+void G1RemSet::prepare_for_oops_into_collection_set_do() {
 #if G1_REM_SET_LOGGING
   PrintRSClosure cl;
   _g1->collection_set_iterate(&cl);
@@ -520,8 +522,6 @@
   DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
   dcqs.concatenate_logs();
 
-  assert(!_traversal_in_progress, "Invariant between iterations.");
-  set_traversal(true);
   if (ParallelGCThreads > 0) {
     _seq_task->set_n_threads((int)n_workers());
   }
@@ -547,9 +547,6 @@
 // through the oops which coincide with that card. It scans the reference
 // fields in each oop; when it finds an oop that points into the collection
 // set, the RSet for the region containing the referenced object is updated.
-// Note: _par_traversal_in_progress in the G1RemSet must be FALSE; otherwise
-// the UpdateRSetImmediate closure will cause cards to be enqueued on to
-// the DCQS that we're iterating over, causing an infinite loop.
 class UpdateRSetCardTableEntryIntoCSetClosure: public CardTableEntryClosure {
   G1CollectedHeap* _g1;
   CardTableModRefBS* _ct_bs;
@@ -581,7 +578,7 @@
     //   RSet updating,
     // * the post-write barrier shouldn't be logging updates to young
     //   regions (but there is a situation where this can happen - see
-    //   the comment in HRInto_G1RemSet::concurrentRefineOneCard below -
+    //   the comment in G1RemSet::concurrentRefineOneCard below -
     //   that should not be applicable here), and
     // * during actual RSet updating, the filtering of cards in young
     //   regions in HeapRegion::oops_on_card_seq_iterate_careful is
@@ -601,7 +598,7 @@
   }
 };
 
-void HRInto_G1RemSet::cleanup_after_oops_into_collection_set_do() {
+void G1RemSet::cleanup_after_oops_into_collection_set_do() {
   guarantee( _cards_scanned != NULL, "invariant" );
   _total_cards_scanned = 0;
   for (uint i = 0; i < n_workers(); ++i)
@@ -619,8 +616,6 @@
   // Set all cards back to clean.
   _g1->cleanUpCardTable();
 
-  set_traversal(false);
-
   DirtyCardQueueSet& into_cset_dcqs = _g1->into_cset_dirty_card_queue_set();
   int into_cset_n_buffers = into_cset_dcqs.completed_buffers_num();
 
@@ -653,21 +648,8 @@
   assert(_g1->into_cset_dirty_card_queue_set().completed_buffers_num() == 0,
          "all buffers should be freed");
   _g1->into_cset_dirty_card_queue_set().clear_n_completed_buffers();
-
-  assert(!_traversal_in_progress, "Invariant between iterations.");
 }
 
-class UpdateRSObjectClosure: public ObjectClosure {
-  UpdateRSOopClosure* _update_rs_oop_cl;
-public:
-  UpdateRSObjectClosure(UpdateRSOopClosure* update_rs_oop_cl) :
-    _update_rs_oop_cl(update_rs_oop_cl) {}
-  void do_object(oop obj) {
-    obj->oop_iterate(_update_rs_oop_cl);
-  }
-
-};
-
 class ScrubRSClosure: public HeapRegionClosure {
   G1CollectedHeap* _g1h;
   BitMap* _region_bm;
@@ -692,12 +674,12 @@
   }
 };
 
-void HRInto_G1RemSet::scrub(BitMap* region_bm, BitMap* card_bm) {
+void G1RemSet::scrub(BitMap* region_bm, BitMap* card_bm) {
   ScrubRSClosure scrub_cl(region_bm, card_bm);
   _g1->heap_region_iterate(&scrub_cl);
 }
 
-void HRInto_G1RemSet::scrub_par(BitMap* region_bm, BitMap* card_bm,
+void G1RemSet::scrub_par(BitMap* region_bm, BitMap* card_bm,
                                 int worker_num, int claim_val) {
   ScrubRSClosure scrub_cl(region_bm, card_bm);
   _g1->heap_region_par_iterate_chunked(&scrub_cl, worker_num, claim_val);
@@ -741,7 +723,7 @@
   virtual void do_oop(narrowOop* p)  { do_oop_nv(p); }
 };
 
-bool HRInto_G1RemSet::concurrentRefineOneCard_impl(jbyte* card_ptr, int worker_i,
+bool G1RemSet::concurrentRefineOneCard_impl(jbyte* card_ptr, int worker_i,
                                                    bool check_for_refs_into_cset) {
   // Construct the region representing the card.
   HeapWord* start = _ct_bs->addr_for(card_ptr);
@@ -757,7 +739,12 @@
   ct_freq_note_card(_ct_bs->index_for(start));
 #endif
 
-  UpdateRSOopClosure update_rs_oop_cl(this, worker_i);
+  assert(!check_for_refs_into_cset || _cset_rs_update_cl[worker_i] != NULL, "sanity");
+  UpdateRSOrPushRefOopClosure update_rs_oop_cl(_g1,
+                                               _g1->g1_rem_set(),
+                                               _cset_rs_update_cl[worker_i],
+                                               check_for_refs_into_cset,
+                                               worker_i);
   update_rs_oop_cl.set_from(r);
 
   TriggerClosure trigger_cl;
@@ -820,7 +807,7 @@
   return trigger_cl.value();
 }
 
-bool HRInto_G1RemSet::concurrentRefineOneCard(jbyte* card_ptr, int worker_i,
+bool G1RemSet::concurrentRefineOneCard(jbyte* card_ptr, int worker_i,
                                               bool check_for_refs_into_cset) {
   // If the card is no longer dirty, nothing to do.
   if (*card_ptr != CardTableModRefBS::dirty_card_val()) {
@@ -995,7 +982,7 @@
   }
 };
 
-void HRInto_G1RemSet::print_summary_info() {
+void G1RemSet::print_summary_info() {
   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 
 #if CARD_REPEAT_HISTO
@@ -1029,30 +1016,26 @@
   g1->concurrent_g1_refine()->threads_do(&p);
   gclog_or_tty->print_cr("");
 
-  if (G1UseHRIntoRS) {
-    HRRSStatsIter blk;
-    g1->heap_region_iterate(&blk);
-    gclog_or_tty->print_cr("  Total heap region rem set sizes = " SIZE_FORMAT "K."
-                           "  Max = " SIZE_FORMAT "K.",
-                           blk.total_mem_sz()/K, blk.max_mem_sz()/K);
-    gclog_or_tty->print_cr("  Static structures = " SIZE_FORMAT "K,"
-                           " free_lists = " SIZE_FORMAT "K.",
-                           HeapRegionRemSet::static_mem_size()/K,
-                           HeapRegionRemSet::fl_mem_size()/K);
-    gclog_or_tty->print_cr("    %d occupied cards represented.",
-                           blk.occupied());
-    gclog_or_tty->print_cr("    Max sz region = [" PTR_FORMAT ", " PTR_FORMAT " )"
-                           ", cap = " SIZE_FORMAT "K, occ = " SIZE_FORMAT "K.",
-                           blk.max_mem_sz_region()->bottom(), blk.max_mem_sz_region()->end(),
-                           (blk.max_mem_sz_region()->rem_set()->mem_size() + K - 1)/K,
-                           (blk.max_mem_sz_region()->rem_set()->occupied() + K - 1)/K);
-    gclog_or_tty->print_cr("    Did %d coarsenings.",
-                  HeapRegionRemSet::n_coarsenings());
-
-  }
+  HRRSStatsIter blk;
+  g1->heap_region_iterate(&blk);
+  gclog_or_tty->print_cr("  Total heap region rem set sizes = " SIZE_FORMAT "K."
+                         "  Max = " SIZE_FORMAT "K.",
+                         blk.total_mem_sz()/K, blk.max_mem_sz()/K);
+  gclog_or_tty->print_cr("  Static structures = " SIZE_FORMAT "K,"
+                         " free_lists = " SIZE_FORMAT "K.",
+                         HeapRegionRemSet::static_mem_size()/K,
+                         HeapRegionRemSet::fl_mem_size()/K);
+  gclog_or_tty->print_cr("    %d occupied cards represented.",
+                         blk.occupied());
+  gclog_or_tty->print_cr("    Max sz region = [" PTR_FORMAT ", " PTR_FORMAT " )"
+                         ", cap = " SIZE_FORMAT "K, occ = " SIZE_FORMAT "K.",
+                         blk.max_mem_sz_region()->bottom(), blk.max_mem_sz_region()->end(),
+                         (blk.max_mem_sz_region()->rem_set()->mem_size() + K - 1)/K,
+                         (blk.max_mem_sz_region()->rem_set()->occupied() + K - 1)/K);
+  gclog_or_tty->print_cr("    Did %d coarsenings.", HeapRegionRemSet::n_coarsenings());
 }
 
-void HRInto_G1RemSet::prepare_for_verify() {
+void G1RemSet::prepare_for_verify() {
   if (G1HRRSFlushLogBuffersOnVerify &&
       (VerifyBeforeGC || VerifyAfterGC)
       &&  !_g1->full_collection()) {
--- a/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,112 +22,26 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_HPP
+
 // A G1RemSet provides ways of iterating over pointers into a selected
 // collection set.
 
 class G1CollectedHeap;
 class CardTableModRefBarrierSet;
-class HRInto_G1RemSet;
 class ConcurrentG1Refine;
 
+// A G1RemSet in which each heap region has a rem set that records the
+// external heap references into it.  Uses a mod ref bs to track updates,
+// so that they can be used to update the individual region remsets.
+
 class G1RemSet: public CHeapObj {
 protected:
   G1CollectedHeap* _g1;
   unsigned _conc_refine_cards;
   size_t n_workers();
 
-public:
-  G1RemSet(G1CollectedHeap* g1) :
-    _g1(g1), _conc_refine_cards(0)
-  {}
-
-  // Invoke "blk->do_oop" on all pointers into the CS in object in regions
-  // outside the CS (having invoked "blk->set_region" to set the "from"
-  // region correctly beforehand.) The "worker_i" param is for the
-  // parallel case where the number of the worker thread calling this
-  // function can be helpful in partitioning the work to be done. It
-  // should be the same as the "i" passed to the calling thread's
-  // work(i) function. In the sequential case this param will be ingored.
-  virtual void oops_into_collection_set_do(OopsInHeapRegionClosure* blk,
-                                           int worker_i) = 0;
-
-  // Prepare for and cleanup after an oops_into_collection_set_do
-  // call.  Must call each of these once before and after (in sequential
-  // code) any threads call oops into collection set do.  (This offers an
-  // opportunity to sequential setup and teardown of structures needed by a
-  // parallel iteration over the CS's RS.)
-  virtual void prepare_for_oops_into_collection_set_do() = 0;
-  virtual void cleanup_after_oops_into_collection_set_do() = 0;
-
-  // If "this" is of the given subtype, return "this", else "NULL".
-  virtual HRInto_G1RemSet* as_HRInto_G1RemSet() { return NULL; }
-
-  // Record, if necessary, the fact that *p (where "p" is in region "from",
-  // and is, a fortiori, required to be non-NULL) has changed to its new value.
-  virtual void write_ref(HeapRegion* from, oop* p) = 0;
-  virtual void write_ref(HeapRegion* from, narrowOop* p) = 0;
-  virtual void par_write_ref(HeapRegion* from, oop* p, int tid) = 0;
-  virtual void par_write_ref(HeapRegion* from, narrowOop* p, int tid) = 0;
-
-  // Requires "region_bm" and "card_bm" to be bitmaps with 1 bit per region
-  // or card, respectively, such that a region or card with a corresponding
-  // 0 bit contains no part of any live object.  Eliminates any remembered
-  // set entries that correspond to dead heap ranges.
-  virtual void scrub(BitMap* region_bm, BitMap* card_bm) = 0;
-  // Like the above, but assumes is called in parallel: "worker_num" is the
-  // parallel thread id of the current thread, and "claim_val" is the
-  // value that should be used to claim heap regions.
-  virtual void scrub_par(BitMap* region_bm, BitMap* card_bm,
-                         int worker_num, int claim_val) = 0;
-
-  // Refine the card corresponding to "card_ptr".  If "sts" is non-NULL,
-  // join and leave around parts that must be atomic wrt GC.  (NULL means
-  // being done at a safepoint.)
-  // With some implementations of this routine, when check_for_refs_into_cset
-  // is true, a true result may be returned if the given card contains oops
-  // that have references into the current collection set.
-  virtual bool concurrentRefineOneCard(jbyte* card_ptr, int worker_i,
-                                       bool check_for_refs_into_cset) {
-    return false;
-  }
-
-  // Print any relevant summary info.
-  virtual void print_summary_info() {}
-
-  // Prepare remebered set for verification.
-  virtual void prepare_for_verify() {};
-};
-
-
-// The simplest possible G1RemSet: iterates over all objects in non-CS
-// regions, searching for pointers into the CS.
-class StupidG1RemSet: public G1RemSet {
-public:
-  StupidG1RemSet(G1CollectedHeap* g1) : G1RemSet(g1) {}
-
-  void oops_into_collection_set_do(OopsInHeapRegionClosure* blk,
-                                   int worker_i);
-
-  void prepare_for_oops_into_collection_set_do() {}
-  void cleanup_after_oops_into_collection_set_do() {}
-
-  // Nothing is necessary in the version below.
-  void write_ref(HeapRegion* from, oop* p) {}
-  void write_ref(HeapRegion* from, narrowOop* p) {}
-  void par_write_ref(HeapRegion* from, oop* p, int tid) {}
-  void par_write_ref(HeapRegion* from, narrowOop* p, int tid) {}
-
-  void scrub(BitMap* region_bm, BitMap* card_bm) {}
-  void scrub_par(BitMap* region_bm, BitMap* card_bm,
-                 int worker_num, int claim_val) {}
-
-};
-
-// A G1RemSet in which each heap region has a rem set that records the
-// external heap references into it.  Uses a mod ref bs to track updates,
-// so that they can be used to update the individual region remsets.
-
-class HRInto_G1RemSet: public G1RemSet {
 protected:
   enum SomePrivateConstants {
     UpdateRStoMergeSync  = 0,
@@ -148,11 +62,6 @@
   size_t*             _cards_scanned;
   size_t              _total_cards_scanned;
 
-  // _traversal_in_progress is "true" iff a traversal is in progress.
-
-  bool _traversal_in_progress;
-  void set_traversal(bool b) { _traversal_in_progress = b; }
-
   // Used for caching the closure that is responsible for scanning
   // references into the collection set.
   OopsInHeapRegionClosure** _cset_rs_update_cl;
@@ -165,71 +74,71 @@
   bool concurrentRefineOneCard_impl(jbyte* card_ptr, int worker_i,
                                     bool check_for_refs_into_cset);
 
-protected:
-  template <class T> void write_ref_nv(HeapRegion* from, T* p);
-  template <class T> void par_write_ref_nv(HeapRegion* from, T* p, int tid);
-
 public:
   // This is called to reset dual hash tables after the gc pause
   // is finished and the initial hash table is no longer being
   // scanned.
   void cleanupHRRS();
 
-  HRInto_G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs);
-  ~HRInto_G1RemSet();
+  G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs);
+  ~G1RemSet();
 
+  // Invoke "blk->do_oop" on all pointers into the CS in objects in regions
+  // outside the CS (having invoked "blk->set_region" to set the "from"
+  // region correctly beforehand.) The "worker_i" param is for the
+  // parallel case where the number of the worker thread calling this
+  // function can be helpful in partitioning the work to be done. It
+  // should be the same as the "i" passed to the calling thread's
+  // work(i) function. In the sequential case this param will be ingored.
   void oops_into_collection_set_do(OopsInHeapRegionClosure* blk,
                                    int worker_i);
 
+  // Prepare for and cleanup after an oops_into_collection_set_do
+  // call.  Must call each of these once before and after (in sequential
+  // code) any threads call oops_into_collection_set_do.  (This offers an
+  // opportunity to sequential setup and teardown of structures needed by a
+  // parallel iteration over the CS's RS.)
   void prepare_for_oops_into_collection_set_do();
   void cleanup_after_oops_into_collection_set_do();
+
   void scanRS(OopsInHeapRegionClosure* oc, int worker_i);
-  template <class T> void scanNewRefsRS_work(OopsInHeapRegionClosure* oc, int worker_i);
-  void scanNewRefsRS(OopsInHeapRegionClosure* oc, int worker_i) {
-    if (UseCompressedOops) {
-      scanNewRefsRS_work<narrowOop>(oc, worker_i);
-    } else {
-      scanNewRefsRS_work<oop>(oc, worker_i);
-    }
-  }
   void updateRS(DirtyCardQueue* into_cset_dcq, int worker_i);
+
   HeapRegion* calculateStartRegion(int i);
 
-  HRInto_G1RemSet* as_HRInto_G1RemSet() { return this; }
-
   CardTableModRefBS* ct_bs() { return _ct_bs; }
   size_t cardsScanned() { return _total_cards_scanned; }
 
   // Record, if necessary, the fact that *p (where "p" is in region "from",
   // which is required to be non-NULL) has changed to a new non-NULL value.
-  // [Below the virtual version calls a non-virtual protected
-  // workhorse that is templatified for narrow vs wide oop.]
-  inline void write_ref(HeapRegion* from, oop* p) {
-    write_ref_nv(from, p);
-  }
-  inline void write_ref(HeapRegion* from, narrowOop* p) {
-    write_ref_nv(from, p);
-  }
-  inline void par_write_ref(HeapRegion* from, oop* p, int tid) {
-    par_write_ref_nv(from, p, tid);
-  }
-  inline void par_write_ref(HeapRegion* from, narrowOop* p, int tid) {
-    par_write_ref_nv(from, p, tid);
-  }
+  template <class T> void write_ref(HeapRegion* from, T* p);
+  template <class T> void par_write_ref(HeapRegion* from, T* p, int tid);
 
-  bool self_forwarded(oop obj);
+  // Requires "region_bm" and "card_bm" to be bitmaps with 1 bit per region
+  // or card, respectively, such that a region or card with a corresponding
+  // 0 bit contains no part of any live object.  Eliminates any remembered
+  // set entries that correspond to dead heap ranges.
+  void scrub(BitMap* region_bm, BitMap* card_bm);
 
-  void scrub(BitMap* region_bm, BitMap* card_bm);
+  // Like the above, but assumes is called in parallel: "worker_num" is the
+  // parallel thread id of the current thread, and "claim_val" is the
+  // value that should be used to claim heap regions.
   void scrub_par(BitMap* region_bm, BitMap* card_bm,
                  int worker_num, int claim_val);
 
-  // If check_for_refs_into_cset is true then a true result is returned
-  // if the card contains oops that have references into the current
-  // collection set.
+  // Refine the card corresponding to "card_ptr".  If "sts" is non-NULL,
+  // join and leave around parts that must be atomic wrt GC.  (NULL means
+  // being done at a safepoint.)
+  // If check_for_refs_into_cset is true, a true result is returned
+  // if the given card contains oops that have references into the
+  // current collection set.
   virtual bool concurrentRefineOneCard(jbyte* card_ptr, int worker_i,
                                        bool check_for_refs_into_cset);
 
+  // Print any relevant summary info.
   virtual void print_summary_info();
+
+  // Prepare remembered set for verification.
   virtual void prepare_for_verify();
 };
 
@@ -250,16 +159,15 @@
 
 class UpdateRSOopClosure: public OopClosure {
   HeapRegion* _from;
-  HRInto_G1RemSet* _rs;
+  G1RemSet* _rs;
   int _worker_i;
 
   template <class T> void do_oop_work(T* p);
 
 public:
-  UpdateRSOopClosure(HRInto_G1RemSet* rs, int worker_i = 0) :
-    _from(NULL), _rs(rs), _worker_i(worker_i) {
-    guarantee(_rs != NULL, "Requires an HRIntoG1RemSet");
-  }
+  UpdateRSOopClosure(G1RemSet* rs, int worker_i = 0) :
+    _from(NULL), _rs(rs), _worker_i(worker_i)
+  {}
 
   void set_from(HeapRegion* from) {
     assert(from != NULL, "from region must be non-NULL");
@@ -286,3 +194,45 @@
   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
   virtual void do_oop(      oop* p) { do_oop_work(p); }
 };
+
+class UpdateRSOrPushRefOopClosure: public OopClosure {
+  G1CollectedHeap* _g1;
+  G1RemSet* _g1_rem_set;
+  HeapRegion* _from;
+  OopsInHeapRegionClosure* _push_ref_cl;
+  bool _record_refs_into_cset;
+  int _worker_i;
+
+  template <class T> void do_oop_work(T* p);
+
+public:
+  UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h,
+                              G1RemSet* rs,
+                              OopsInHeapRegionClosure* push_ref_cl,
+                              bool record_refs_into_cset,
+                              int worker_i = 0) :
+    _g1(g1h),
+    _g1_rem_set(rs),
+    _from(NULL),
+    _record_refs_into_cset(record_refs_into_cset),
+    _push_ref_cl(push_ref_cl),
+    _worker_i(worker_i) { }
+
+  void set_from(HeapRegion* from) {
+    assert(from != NULL, "from region must be non-NULL");
+    _from = from;
+  }
+
+  bool self_forwarded(oop obj) {
+    bool result = (obj->is_forwarded() && (obj->forwardee()== obj));
+    return result;
+  }
+
+  virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+  virtual void do_oop(oop* p)       { do_oop_work(p); }
+
+  bool apply_to_weak_ref_discovered_field() { return true; }
+};
+
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_HPP
--- a/src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_INLINE_HPP
+
+#include "gc_implementation/g1/g1RemSet.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "oops/oop.inline.hpp"
+
 inline size_t G1RemSet::n_workers() {
   if (_g1->workers() != NULL) {
     return _g1->workers()->total_workers();
@@ -30,16 +37,13 @@
   }
 }
 
-template <class T> inline void HRInto_G1RemSet::write_ref_nv(HeapRegion* from, T* p) {
-  par_write_ref_nv(from, p, 0);
+template <class T>
+inline void G1RemSet::write_ref(HeapRegion* from, T* p) {
+  par_write_ref(from, p, 0);
 }
 
-inline bool HRInto_G1RemSet::self_forwarded(oop obj) {
-  bool result =  (obj->is_forwarded() && (obj->forwardee()== obj));
-  return result;
-}
-
-template <class T> inline void HRInto_G1RemSet::par_write_ref_nv(HeapRegion* from, T* p, int tid) {
+template <class T>
+inline void G1RemSet::par_write_ref(HeapRegion* from, T* p, int tid) {
   oop obj = oopDesc::load_decode_heap_oop(p);
 #ifdef ASSERT
   // can't do because of races
@@ -60,43 +64,26 @@
   assert(from == NULL || from->is_in_reserved(p), "p is not in from");
 
   HeapRegion* to = _g1->heap_region_containing(obj);
-  // The test below could be optimized by applying a bit op to to and from.
-  if (to != NULL && from != NULL && from != to) {
-    // The _traversal_in_progress flag is true during the collection pause,
-    // false during the evacuation failure handling. This should avoid a
-    // potential loop if we were to add the card containing 'p' to the DCQS
-    // that's used to regenerate the remembered sets for the collection set,
-    // in the event of an evacuation failure, here. The UpdateRSImmediate
-    // closure will eventally call this routine.
-    if (_traversal_in_progress &&
-        to->in_collection_set() && !self_forwarded(obj)) {
-
-      assert(_cset_rs_update_cl[tid] != NULL, "should have been set already");
-      _cset_rs_update_cl[tid]->do_oop(p);
-
-      // Deferred updates to the CSet are either discarded (in the normal case),
-      // or processed (if an evacuation failure occurs) at the end
-      // of the collection.
-      // See HRInto_G1RemSet::cleanup_after_oops_into_collection_set_do().
-    } else {
+  if (to != NULL && from != to) {
 #if G1_REM_SET_LOGGING
-      gclog_or_tty->print_cr("Adding " PTR_FORMAT " (" PTR_FORMAT ") to RS"
-                             " for region [" PTR_FORMAT ", " PTR_FORMAT ")",
-                             p, obj,
-                             to->bottom(), to->end());
+    gclog_or_tty->print_cr("Adding " PTR_FORMAT " (" PTR_FORMAT ") to RS"
+                           " for region [" PTR_FORMAT ", " PTR_FORMAT ")",
+                           p, obj,
+                           to->bottom(), to->end());
 #endif
-      assert(to->rem_set() != NULL, "Need per-region 'into' remsets.");
-      to->rem_set()->add_reference(p, tid);
-    }
+    assert(to->rem_set() != NULL, "Need per-region 'into' remsets.");
+    to->rem_set()->add_reference(p, tid);
   }
 }
 
-template <class T> inline void UpdateRSOopClosure::do_oop_work(T* p) {
+template <class T>
+inline void UpdateRSOopClosure::do_oop_work(T* p) {
   assert(_from != NULL, "from region must be non-NULL");
   _rs->par_write_ref(_from, p, _worker_i);
 }
 
-template <class T> inline void UpdateRSetImmediate::do_oop_work(T* p) {
+template <class T>
+inline void UpdateRSetImmediate::do_oop_work(T* p) {
   assert(_from->is_in_reserved(p), "paranoia");
   T heap_oop = oopDesc::load_heap_oop(p);
   if (!oopDesc::is_null(heap_oop) && !_from->is_survivor()) {
@@ -104,3 +91,66 @@
   }
 }
 
+template <class T>
+inline void UpdateRSOrPushRefOopClosure::do_oop_work(T* p) {
+  oop obj = oopDesc::load_decode_heap_oop(p);
+#ifdef ASSERT
+  // can't do because of races
+  // assert(obj == NULL || obj->is_oop(), "expected an oop");
+
+  // Do the safe subset of is_oop
+  if (obj != NULL) {
+#ifdef CHECK_UNHANDLED_OOPS
+    oopDesc* o = obj.obj();
+#else
+    oopDesc* o = obj;
+#endif // CHECK_UNHANDLED_OOPS
+    assert((intptr_t)o % MinObjAlignmentInBytes == 0, "not oop aligned");
+    assert(Universe::heap()->is_in_reserved(obj), "must be in heap");
+  }
+#endif // ASSERT
+
+  assert(_from != NULL, "from region must be non-NULL");
+
+  HeapRegion* to = _g1->heap_region_containing(obj);
+  if (to != NULL && _from != to) {
+    // The _record_refs_into_cset flag is true during the RSet
+    // updating part of an evacuation pause. It is false at all
+    // other times:
+    //  * rebuilding the rembered sets after a full GC
+    //  * during concurrent refinement.
+    //  * updating the remembered sets of regions in the collection
+    //    set in the event of an evacuation failure (when deferred
+    //    updates are enabled).
+
+    if (_record_refs_into_cset && to->in_collection_set()) {
+      // We are recording references that point into the collection
+      // set and this particular reference does exactly that...
+      // If the referenced object has already been forwarded
+      // to itself, we are handling an evacuation failure and
+      // we have already visited/tried to copy this object
+      // there is no need to retry.
+      if (!self_forwarded(obj)) {
+        assert(_push_ref_cl != NULL, "should not be null");
+        // Push the reference in the refs queue of the G1ParScanThreadState
+        // instance for this worker thread.
+        _push_ref_cl->do_oop(p);
+      }
+
+      // Deferred updates to the CSet are either discarded (in the normal case),
+      // or processed (if an evacuation failure occurs) at the end
+      // of the collection.
+      // See G1RemSet::cleanup_after_oops_into_collection_set_do().
+    } else {
+      // We either don't care about pushing references that point into the
+      // collection set (i.e. we're not during an evacuation pause) _or_
+      // the reference doesn't point into the collection set. Either way
+      // we add the reference directly to the RSet of the region containing
+      // the referenced object.
+      _g1_rem_set->par_write_ref(_from, p, _worker_i);
+    }
+  }
+}
+
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_INLINE_HPP
--- a/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1SATBCardTableModRefBS.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "gc_implementation/g1/satbQueue.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/thread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 G1SATBCardTableModRefBS::G1SATBCardTableModRefBS(MemRegion whole_heap,
                                                  int max_covered_regions) :
--- a/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1SATBCARDTABLEMODREFBS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1SATBCARDTABLEMODREFBS_HPP
+
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/memRegion.hpp"
+#include "oops/oop.inline.hpp"
+
 #ifndef SERIALGC
 
 class DirtyCardQueueSet;
@@ -115,3 +122,5 @@
 
 
 #endif // SERIALGC
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1SATBCARDTABLEMODREFBS_HPP
--- a/src/share/vm/gc_implementation/g1/g1_globals.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1_globals.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_g1_globals.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1_globals.hpp"
 
 G1_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, \
          MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG,     \
--- a/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP
+
+#include "runtime/globals.hpp"
+
 //
 // Defines all globals flags used by the garbage-first compiler.
 //
@@ -40,9 +45,6 @@
   develop(intx, G1PolicyVerbose, 0,                                         \
           "The verbosity level on G1 policy decisions")                     \
                                                                             \
-  develop(bool, G1UseHRIntoRS, true,                                        \
-          "Determines whether the 'advanced' HR Into rem set is used.")     \
-                                                                            \
   develop(intx, G1MarkingVerboseLevel, 0,                                   \
           "Level (0-4) of verboseness of the marking code")                 \
                                                                             \
@@ -285,3 +287,5 @@
           " controls whether G1 allows the RICM optimization")
 
 G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG)
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP
--- a/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP
+
 // The following OopClosure types get specialized versions of
 // "oop_oop_iterate" that invoke the closures' do_oop methods
 // non-virtually, using a mechanism defined in this file.  Extend these
@@ -63,3 +66,5 @@
 #endif
 
 #define FURTHER_SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(f)
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_heapRegion.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/concurrentZFThread.hpp"
+#include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1OopClosures.inline.hpp"
+#include "gc_implementation/g1/heapRegion.inline.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/iterator.hpp"
+#include "oops/oop.inline.hpp"
 
 int HeapRegion::LogOfHRGrainBytes = 0;
 int HeapRegion::LogOfHRGrainWords = 0;
@@ -377,10 +386,26 @@
 }
 // </PREDICTION>
 
-void HeapRegion::set_startsHumongous() {
+void HeapRegion::set_startsHumongous(HeapWord* new_end) {
+  assert(end() == _orig_end,
+         "Should be normal before the humongous object allocation");
+  assert(top() == bottom(), "should be empty");
+
   _humongous_type = StartsHumongous;
   _humongous_start_region = this;
-  assert(end() == _orig_end, "Should be normal before alloc.");
+
+  set_end(new_end);
+  _offsets.set_for_starts_humongous(new_end);
+}
+
+void HeapRegion::set_continuesHumongous(HeapRegion* start) {
+  assert(end() == _orig_end,
+         "Should be normal before the humongous object allocation");
+  assert(top() == bottom(), "should be empty");
+  assert(start->startsHumongous(), "pre-condition");
+
+  _humongous_type = ContinuesHumongous;
+  _humongous_start_region = start;
 }
 
 bool HeapRegion::claimHeapRegion(jint claimValue) {
@@ -500,23 +525,6 @@
   return blk.result();
 }
 
-void HeapRegion::set_continuesHumongous(HeapRegion* start) {
-  // The order is important here.
-  start->add_continuingHumongousRegion(this);
-  _humongous_type = ContinuesHumongous;
-  _humongous_start_region = start;
-}
-
-void HeapRegion::add_continuingHumongousRegion(HeapRegion* cont) {
-  // Must join the blocks of the current H region seq with the block of the
-  // added region.
-  offsets()->join_blocks(bottom(), cont->bottom());
-  arrayOop obj = (arrayOop)(bottom());
-  obj->set_length((int) (obj->length() + cont->capacity()/jintSize));
-  set_end(cont->end());
-  set_top(cont->end());
-}
-
 void HeapRegion::save_marks() {
   set_saved_mark();
 }
--- a/src/share/vm/gc_implementation/g1/heapRegion.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegion.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_HPP
+
+#include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp"
+#include "gc_implementation/g1/g1_specialized_oop_closures.hpp"
+#include "gc_implementation/g1/survRateGroup.hpp"
+#include "gc_implementation/shared/ageTable.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/space.inline.hpp"
+#include "memory/watermark.hpp"
+
 #ifndef SERIALGC
 
 // A HeapRegion is the smallest piece of a G1CollectedHeap that
@@ -395,14 +406,12 @@
 
   // Causes the current region to represent a humongous object spanning "n"
   // regions.
-  virtual void set_startsHumongous();
+  void set_startsHumongous(HeapWord* new_end);
 
   // The regions that continue a humongous sequence should be added using
   // this method, in increasing address order.
   void set_continuesHumongous(HeapRegion* start);
 
-  void add_continuingHumongousRegion(HeapRegion* cont);
-
   // If the region has a remembered set, return a pointer to it.
   HeapRegionRemSet* rem_set() const {
     return _rem_set;
@@ -733,13 +742,6 @@
                                    FilterOutOfRegionClosure* cl,
                                    bool filter_young);
 
-  // The region "mr" is entirely in "this", and starts and ends at block
-  // boundaries. The caller declares that all the contained blocks are
-  // coalesced into one.
-  void declare_filled_region_to_BOT(MemRegion mr) {
-    _offsets.single_block(mr.start(), mr.end());
-  }
-
   // A version of block start that is guaranteed to find *some* block
   // boundary at or before "p", but does not object iteration, and may
   // therefore be used safely when the heap is unparseable.
@@ -954,3 +956,5 @@
 // End: ***
 
 #endif // SERIALGC
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_HPP
--- a/src/share/vm/gc_implementation/g1/heapRegion.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegion.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_INLINE_HPP
+
 inline HeapWord* G1OffsetTableContigSpace::allocate(size_t size) {
   HeapWord* res = ContiguousSpace::allocate(size);
   if (res != NULL) {
@@ -58,3 +61,5 @@
 G1OffsetTableContigSpace::block_start_const(const void* p) const {
   return _offsets.block_start_const(p);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_INLINE_HPP
--- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_heapRegionRemSet.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/concurrentG1Refine.hpp"
+#include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "memory/allocation.hpp"
+#include "memory/space.inline.hpp"
+#include "utilities/bitMap.inline.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 #define HRRS_VERBOSE 0
 
@@ -1159,9 +1167,7 @@
   _hrrs(NULL),
   _g1h(G1CollectedHeap::heap()),
   _bosa(NULL),
-  _sparse_iter(size_t(G1CollectedHeap::heap()->reserved_region().start())
-               >> CardTableModRefBS::card_shift)
-{}
+  _sparse_iter() { }
 
 void HeapRegionRemSetIterator::initialize(const HeapRegionRemSet* hrrs) {
   _hrrs = hrrs;
--- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONREMSET_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONREMSET_HPP
+
+#include "gc_implementation/g1/sparsePRT.hpp"
+
 // Remembered set for a heap region.  Represent a set of "cards" that
 // contain pointers into the owner heap region.  Cards are defined somewhat
 // abstractly, in terms of what the "BlockOffsetTable" in use can parse.
@@ -426,3 +431,5 @@
 };
 
 #endif
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONREMSET_HPP
--- a/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_heapRegionSeq.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/heapRegionSeq.hpp"
+#include "memory/allocation.hpp"
 
 // Local to this file.
 
@@ -91,34 +93,118 @@
   }
   if (sumSizes >= word_size) {
     _alloc_search_start = cur;
-    // Mark the allocated regions as allocated.
+
+    // We need to initialize the region(s) we just discovered. This is
+    // a bit tricky given that it can happen concurrently with
+    // refinement threads refining cards on these regions and
+    // potentially wanting to refine the BOT as they are scanning
+    // those cards (this can happen shortly after a cleanup; see CR
+    // 6991377). So we have to set up the region(s) carefully and in
+    // a specific order.
+
+    // Currently, allocs_are_zero_filled() returns false. The zero
+    // filling infrastructure will be going away soon (see CR 6977804).
+    // So no need to do anything else here.
     bool zf = G1CollectedHeap::heap()->allocs_are_zero_filled();
+    assert(!zf, "not supported");
+
+    // This will be the "starts humongous" region.
     HeapRegion* first_hr = _regions.at(first);
-    for (int i = first; i < cur; i++) {
-      HeapRegion* hr = _regions.at(i);
-      if (zf)
-        hr->ensure_zero_filled();
+    {
+      MutexLockerEx x(ZF_mon, Mutex::_no_safepoint_check_flag);
+      first_hr->set_zero_fill_allocated();
+    }
+    // The header of the new object will be placed at the bottom of
+    // the first region.
+    HeapWord* new_obj = first_hr->bottom();
+    // This will be the new end of the first region in the series that
+    // should also match the end of the last region in the seriers.
+    // (Note: sumSizes = "region size" x "number of regions we found").
+    HeapWord* new_end = new_obj + sumSizes;
+    // This will be the new top of the first region that will reflect
+    // this allocation.
+    HeapWord* new_top = new_obj + word_size;
+
+    // First, we need to zero the header of the space that we will be
+    // allocating. When we update top further down, some refinement
+    // threads might try to scan the region. By zeroing the header we
+    // ensure that any thread that will try to scan the region will
+    // come across the zero klass word and bail out.
+    //
+    // NOTE: It would not have been correct to have used
+    // CollectedHeap::fill_with_object() and make the space look like
+    // an int array. The thread that is doing the allocation will
+    // later update the object header to a potentially different array
+    // type and, for a very short period of time, the klass and length
+    // fields will be inconsistent. This could cause a refinement
+    // thread to calculate the object size incorrectly.
+    Copy::fill_to_words(new_obj, oopDesc::header_size(), 0);
+
+    // We will set up the first region as "starts humongous". This
+    // will also update the BOT covering all the regions to reflect
+    // that there is a single object that starts at the bottom of the
+    // first region.
+    first_hr->set_startsHumongous(new_end);
+
+    // Then, if there are any, we will set up the "continues
+    // humongous" regions.
+    HeapRegion* hr = NULL;
+    for (int i = first + 1; i < cur; ++i) {
+      hr = _regions.at(i);
       {
         MutexLockerEx x(ZF_mon, Mutex::_no_safepoint_check_flag);
         hr->set_zero_fill_allocated();
       }
-      size_t sz = hr->capacity() / HeapWordSize;
-      HeapWord* tmp = hr->allocate(sz);
-      assert(tmp != NULL, "Humongous allocation failure");
-      MemRegion mr = MemRegion(tmp, sz);
-      CollectedHeap::fill_with_object(mr);
-      hr->declare_filled_region_to_BOT(mr);
-      if (i == first) {
-        first_hr->set_startsHumongous();
+      hr->set_continuesHumongous(first_hr);
+    }
+    // If we have "continues humongous" regions (hr != NULL), then the
+    // end of the last one should match new_end.
+    assert(hr == NULL || hr->end() == new_end, "sanity");
+
+    // Up to this point no concurrent thread would have been able to
+    // do any scanning on any region in this series. All the top
+    // fields still point to bottom, so the intersection between
+    // [bottom,top] and [card_start,card_end] will be empty. Before we
+    // update the top fields, we'll do a storestore to make sure that
+    // no thread sees the update to top before the zeroing of the
+    // object header and the BOT initialization.
+    OrderAccess::storestore();
+
+    // Now that the BOT and the object header have been initialized,
+    // we can update top of the "starts humongous" region.
+    assert(first_hr->bottom() < new_top && new_top <= first_hr->end(),
+           "new_top should be in this region");
+    first_hr->set_top(new_top);
+
+    // Now, we will update the top fields of the "continues humongous"
+    // regions. The reason we need to do this is that, otherwise,
+    // these regions would look empty and this will confuse parts of
+    // G1. For example, the code that looks for a consecutive number
+    // of empty regions will consider them empty and try to
+    // re-allocate them. We can extend is_empty() to also include
+    // !continuesHumongous(), but it is easier to just update the top
+    // fields here.
+    hr = NULL;
+    for (int i = first + 1; i < cur; ++i) {
+      hr = _regions.at(i);
+      if ((i + 1) == cur) {
+        // last continues humongous region
+        assert(hr->bottom() < new_top && new_top <= hr->end(),
+               "new_top should fall on this region");
+        hr->set_top(new_top);
       } else {
-        assert(i > first, "sanity");
-        hr->set_continuesHumongous(first_hr);
+        // not last one
+        assert(new_top > hr->end(), "new_top should be above this region");
+        hr->set_top(hr->end());
       }
     }
-    HeapWord* first_hr_bot = first_hr->bottom();
-    HeapWord* obj_end = first_hr_bot + word_size;
-    first_hr->set_top(obj_end);
-    return first_hr_bot;
+    // If we have continues humongous regions (hr != NULL), then the
+    // end of the last one should match new_end and its top should
+    // match new_top.
+    assert(hr == NULL ||
+           (hr->end() == new_end && hr->top() == new_top), "sanity");
+
+    return new_obj;
   } else {
     // If we started from the beginning, we want to know why we can't alloc.
     return NULL;
--- a/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_HPP
+
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "utilities/growableArray.hpp"
+
 class HeapRegion;
 class HeapRegionClosure;
 
@@ -108,3 +114,5 @@
   void print_empty_runs();
 
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_HPP
--- a/src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP
+
+#include "gc_implementation/g1/heapRegionSeq.hpp"
+
 inline HeapRegion* HeapRegionSeq::addr_to_region(const void* addr) {
   assert(_seq_bottom != NULL, "bad _seq_bottom in addr_to_region");
   if ((char*) addr >= _seq_bottom) {
@@ -38,3 +43,5 @@
   }
   return NULL;
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP
--- a/src/share/vm/gc_implementation/g1/ptrQueue.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/ptrQueue.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_ptrQueue.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/ptrQueue.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/mutexLocker.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 PtrQueue::PtrQueue(PtrQueueSet* qset_, bool perm, bool active) :
   _qset(qset_), _buf(NULL), _index(0), _active(active),
--- a/src/share/vm/gc_implementation/g1/ptrQueue.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/ptrQueue.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_PTRQUEUE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_PTRQUEUE_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/sizes.hpp"
+
 // There are various techniques that require threads to be able to log
 // addresses.  For example, a generational write barrier might log
 // the addresses of modified old-generation objects.  This type supports
@@ -293,3 +299,5 @@
   // Notify the consumer if the number of buffers crossed the threshold
   void notify_if_necessary();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_PTRQUEUE_HPP
--- a/src/share/vm/gc_implementation/g1/satbQueue.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/satbQueue.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_satbQueue.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/satbQueue.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/sharedHeap.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/thread.hpp"
 
 void ObjPtrQueue::apply_closure(ObjectClosure* cl) {
   if (_buf != NULL) {
--- a/src/share/vm/gc_implementation/g1/satbQueue.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/satbQueue.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_SATBQUEUE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_SATBQUEUE_HPP
+
+#include "gc_implementation/g1/ptrQueue.hpp"
+
 class ObjectClosure;
 class JavaThread;
 
@@ -113,3 +118,5 @@
   void abandon_partial_marking();
 
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_SATBQUEUE_HPP
--- a/src/share/vm/gc_implementation/g1/sparsePRT.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/sparsePRT.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,14 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sparsePRT.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "gc_implementation/g1/heapRegionRemSet.hpp"
+#include "gc_implementation/g1/sparsePRT.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/space.inline.hpp"
+#include "runtime/mutexLocker.hpp"
 
 #define SPARSE_PRT_VERBOSE 0
 
@@ -308,7 +314,7 @@
   assert(e2->num_valid_cards() > 0, "Postcondition.");
 }
 
-CardIdx_t /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
+CardIdx_t RSHashTableIter::find_first_card_in_list() {
   CardIdx_t res;
   while (_bl_ind != RSHashTable::NullEntry) {
     res = _rsht->entry(_bl_ind)->card(0);
@@ -322,14 +328,11 @@
   return SparsePRTEntry::NullEntry;
 }
 
-size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(CardIdx_t ci) {
-  return
-    _heap_bot_card_ind
-    + (_rsht->entry(_bl_ind)->r_ind() * HeapRegion::CardsPerRegion)
-    + ci;
+size_t RSHashTableIter::compute_card_ind(CardIdx_t ci) {
+  return (_rsht->entry(_bl_ind)->r_ind() * HeapRegion::CardsPerRegion) + ci;
 }
 
-bool /* RSHashTable:: */ RSHashTableIter::has_next(size_t& card_index) {
+bool RSHashTableIter::has_next(size_t& card_index) {
   _card_ind++;
   CardIdx_t ci;
   if (_card_ind < SparsePRTEntry::cards_num() &&
--- a/src/share/vm/gc_implementation/g1/sparsePRT.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/sparsePRT.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_SPARSEPRT_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_SPARSEPRT_HPP
+
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "memory/allocation.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "runtime/mutex.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // Sparse remembered set for a heap region (the "owning" region).  Maps
 // indices of other regions to short sequences of cards in the other region
 // that might contain pointers into the owner region.
@@ -169,7 +179,6 @@
   int _bl_ind;          // [-1, 0.._rsht->_capacity)
   short _card_ind;      // [0..SparsePRTEntry::cards_num())
   RSHashTable* _rsht;
-  size_t _heap_bot_card_ind;
 
   // If the bucket list pointed to by _bl_ind contains a card, sets
   // _bl_ind to the index of that entry, and returns the card.
@@ -183,13 +192,11 @@
   size_t compute_card_ind(CardIdx_t ci);
 
 public:
-  RSHashTableIter(size_t heap_bot_card_ind) :
+  RSHashTableIter() :
     _tbl_ind(RSHashTable::NullEntry),
     _bl_ind(RSHashTable::NullEntry),
     _card_ind((SparsePRTEntry::cards_num() - 1)),
-    _rsht(NULL),
-    _heap_bot_card_ind(heap_bot_card_ind)
-  {}
+    _rsht(NULL) {}
 
   void init(RSHashTable* rsht) {
     _rsht = rsht;
@@ -280,20 +287,11 @@
   bool contains_card(RegionIdx_t region_id, CardIdx_t card_index) const {
     return _next->contains_card(region_id, card_index);
   }
-
-#if 0
-  void verify_is_cleared();
-  void print();
-#endif
 };
 
 
-class SparsePRTIter: public /* RSHashTable:: */RSHashTableIter {
+class SparsePRTIter: public RSHashTableIter {
 public:
-  SparsePRTIter(size_t heap_bot_card_ind) :
-    /* RSHashTable:: */RSHashTableIter(heap_bot_card_ind)
-  {}
-
   void init(const SparsePRT* sprt) {
     RSHashTableIter::init(sprt->cur());
   }
@@ -301,3 +299,5 @@
     return RSHashTableIter::has_next(card_index);
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_SPARSEPRT_HPP
--- a/src/share/vm/gc_implementation/g1/survRateGroup.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/survRateGroup.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_survRateGroup.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "gc_implementation/g1/survRateGroup.hpp"
+#include "memory/allocation.hpp"
 
 SurvRateGroup::SurvRateGroup(G1CollectorPolicy* g1p,
                              const char* name,
--- a/src/share/vm/gc_implementation/g1/survRateGroup.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/survRateGroup.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_SURVRATEGROUP_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_SURVRATEGROUP_HPP
+
+#include "utilities/numberSeq.hpp"
+
 class G1CollectorPolicy;
 
 class SurvRateGroup : public CHeapObj {
@@ -92,3 +97,5 @@
   void print_surv_rate_summary();
 #endif // PRODUCT
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_SURVRATEGROUP_HPP
--- a/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vm_operations_g1.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/vm_operations_g1.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "runtime/interfaceSupport.hpp"
 
 void VM_G1CollectForAllocation::doit() {
   JvmtiGCForAllocationMarker jgcm;
--- a/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_VM_OPERATIONS_G1_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_VM_OPERATIONS_G1_HPP
+
+#include "gc_implementation/shared/vmGCOperations.hpp"
+
 // VM_operations for the G1 collector.
 // VM_GC_Operation:
 //   - VM_CGC_Operation
@@ -114,3 +119,5 @@
     return "concurrent gc";
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_VM_OPERATIONS_G1_HPP
--- a/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-//
-// Copyright (c) 2004, 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.
-//  
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-binaryTreeDictionary.cpp                allocationStats.hpp
-binaryTreeDictionary.cpp                binaryTreeDictionary.hpp
-binaryTreeDictionary.cpp                globals.hpp
-binaryTreeDictionary.cpp                ostream.hpp
-binaryTreeDictionary.cpp                space.inline.hpp
-binaryTreeDictionary.cpp                spaceDecorator.hpp
-
-binaryTreeDictionary.hpp                freeBlockDictionary.hpp
-binaryTreeDictionary.hpp                freeList.hpp
-
-blockOffsetTable.inline.hpp             concurrentMarkSweepGeneration.hpp
-
-cmsAdaptiveSizePolicy.cpp		cmsAdaptiveSizePolicy.hpp
-cmsAdaptiveSizePolicy.cpp		defNewGeneration.hpp
-cmsAdaptiveSizePolicy.cpp		gcStats.hpp
-cmsAdaptiveSizePolicy.cpp		genCollectedHeap.hpp
-cmsAdaptiveSizePolicy.cpp		thread.hpp
-cmsAdaptiveSizePolicy.cpp		os_<os_family>.inline.hpp
-
-cmsAdaptiveSizePolicy.hpp		adaptiveSizePolicy.hpp
-cmsAdaptiveSizePolicy.hpp		timer.hpp
-
-cmsCollectorPolicy.cpp                  arguments.hpp
-cmsCollectorPolicy.cpp                  cardTableRS.hpp
-cmsCollectorPolicy.cpp                  cmsAdaptiveSizePolicy.hpp
-cmsCollectorPolicy.cpp                  cmsGCAdaptivePolicyCounters.hpp
-cmsCollectorPolicy.cpp                  cmsCollectorPolicy.hpp
-cmsCollectorPolicy.cpp                  collectorPolicy.hpp
-cmsCollectorPolicy.cpp                  gcLocker.inline.hpp
-cmsCollectorPolicy.cpp                  genCollectedHeap.hpp
-cmsCollectorPolicy.cpp                  gcPolicyCounters.hpp
-cmsCollectorPolicy.cpp                  generationSpec.hpp
-cmsCollectorPolicy.cpp                  globals_extension.hpp
-cmsCollectorPolicy.cpp                  handles.inline.hpp
-cmsCollectorPolicy.cpp                  java.hpp
-cmsCollectorPolicy.cpp                  parNewGeneration.hpp
-cmsCollectorPolicy.cpp                  space.hpp
-cmsCollectorPolicy.cpp                  thread_<os_family>.inline.hpp
-cmsCollectorPolicy.cpp                  universe.hpp
-cmsCollectorPolicy.cpp                  vmGCOperations.hpp
-cmsCollectorPolicy.cpp                  vmThread.hpp
-
-cmsCollectorPolicy.hpp                  collectorPolicy.hpp
-
-cmsGCAdaptivePolicyCounters.cpp		cmsGCAdaptivePolicyCounters.hpp
-cmsGCAdaptivePolicyCounters.cpp		resourceArea.hpp
-
-cmsGCAdaptivePolicyCounters.hpp		cmsAdaptiveSizePolicy.hpp
-cmsGCAdaptivePolicyCounters.hpp		gcAdaptivePolicyCounters.hpp
-cmsGCAdaptivePolicyCounters.hpp		gcStats.hpp
-cmsGCAdaptivePolicyCounters.hpp		perfData.hpp
-
-cmsLockVerifier.cpp                     cmsLockVerifier.hpp
-cmsLockVerifier.cpp                     concurrentMarkSweepThread.hpp
-cmsLockVerifier.cpp                     vmThread.hpp
-
-cmsLockVerifier.hpp                     mutex.hpp
-
-cmsOopClosures.hpp                      genOopClosures.hpp
-
-cmsOopClosures.inline.hpp               cmsOopClosures.hpp
-cmsOopClosures.inline.hpp               concurrentMarkSweepGeneration.hpp
-
-cmsPermGen.cpp                          blockOffsetTable.inline.hpp
-cmsPermGen.cpp                          cSpaceCounters.hpp
-cmsPermGen.cpp                          cmsPermGen.hpp
-cmsPermGen.cpp                          collectedHeap.inline.hpp
-cmsPermGen.cpp                          compactPermGen.hpp
-cmsPermGen.cpp                          concurrentMarkSweepGeneration.inline.hpp
-cmsPermGen.cpp                          genCollectedHeap.hpp
-cmsPermGen.cpp                          generation.inline.hpp
-cmsPermGen.cpp                          java.hpp
-cmsPermGen.cpp                          oop.inline.hpp
-cmsPermGen.cpp                          permGen.hpp
-cmsPermGen.cpp                          universe.hpp
-
-cmsPermGen.hpp                          concurrentMarkSweepGeneration.hpp
-cmsPermGen.hpp                          permGen.hpp
-
-compactibleFreeListSpace.cpp            allocation.inline.hpp
-compactibleFreeListSpace.cpp            blockOffsetTable.inline.hpp
-compactibleFreeListSpace.cpp            cmsLockVerifier.hpp
-compactibleFreeListSpace.cpp            collectedHeap.hpp
-compactibleFreeListSpace.cpp            compactibleFreeListSpace.hpp
-compactibleFreeListSpace.cpp            concurrentMarkSweepGeneration.inline.hpp
-compactibleFreeListSpace.cpp            concurrentMarkSweepThread.hpp
-compactibleFreeListSpace.cpp            copy.hpp
-compactibleFreeListSpace.cpp            globals.hpp
-compactibleFreeListSpace.cpp            handles.inline.hpp
-compactibleFreeListSpace.cpp            init.hpp
-compactibleFreeListSpace.cpp            java.hpp
-compactibleFreeListSpace.cpp            liveRange.hpp
-compactibleFreeListSpace.cpp            oop.inline.hpp
-compactibleFreeListSpace.cpp            resourceArea.hpp
-compactibleFreeListSpace.cpp            spaceDecorator.hpp
-compactibleFreeListSpace.cpp            universe.inline.hpp
-compactibleFreeListSpace.cpp            vmThread.hpp
-
-compactibleFreeListSpace.hpp            binaryTreeDictionary.hpp
-compactibleFreeListSpace.hpp            blockOffsetTable.inline.hpp
-compactibleFreeListSpace.hpp            freeList.hpp
-compactibleFreeListSpace.hpp            promotionInfo.hpp
-compactibleFreeListSpace.hpp            space.hpp
-
-compactingPermGenGen.cpp                concurrentMarkSweepGeneration.inline.hpp
-
-concurrentMarkSweepGeneration.cpp       cardTableRS.hpp
-concurrentMarkSweepGeneration.cpp       cmsAdaptiveSizePolicy.hpp
-concurrentMarkSweepGeneration.cpp       cmsCollectorPolicy.hpp
-concurrentMarkSweepGeneration.cpp       cmsGCAdaptivePolicyCounters.hpp
-concurrentMarkSweepGeneration.cpp       cmsOopClosures.inline.hpp
-concurrentMarkSweepGeneration.cpp       codeCache.hpp
-concurrentMarkSweepGeneration.cpp       collectedHeap.inline.hpp
-concurrentMarkSweepGeneration.cpp       collectorCounters.hpp
-concurrentMarkSweepGeneration.cpp       collectorPolicy.hpp
-concurrentMarkSweepGeneration.cpp       compactibleFreeListSpace.hpp
-concurrentMarkSweepGeneration.cpp       concurrentMarkSweepGeneration.inline.hpp
-concurrentMarkSweepGeneration.cpp       concurrentMarkSweepThread.hpp
-concurrentMarkSweepGeneration.cpp       gcLocker.inline.hpp
-concurrentMarkSweepGeneration.cpp       genCollectedHeap.hpp
-concurrentMarkSweepGeneration.cpp       genMarkSweep.hpp
-concurrentMarkSweepGeneration.cpp       genOopClosures.inline.hpp
-concurrentMarkSweepGeneration.cpp       globals_extension.hpp
-concurrentMarkSweepGeneration.cpp       handles.inline.hpp
-concurrentMarkSweepGeneration.cpp       isGCActiveMark.hpp
-concurrentMarkSweepGeneration.cpp       iterator.hpp
-concurrentMarkSweepGeneration.cpp       java.hpp
-concurrentMarkSweepGeneration.cpp       jvmtiExport.hpp
-concurrentMarkSweepGeneration.cpp       memoryService.hpp
-concurrentMarkSweepGeneration.cpp       oop.inline.hpp
-concurrentMarkSweepGeneration.cpp       parNewGeneration.hpp
-concurrentMarkSweepGeneration.cpp       referencePolicy.hpp
-concurrentMarkSweepGeneration.cpp       resourceArea.hpp
-concurrentMarkSweepGeneration.cpp       runtimeService.hpp
-concurrentMarkSweepGeneration.cpp       symbolTable.hpp
-concurrentMarkSweepGeneration.cpp       systemDictionary.hpp
-concurrentMarkSweepGeneration.cpp       vmCMSOperations.hpp
-concurrentMarkSweepGeneration.cpp       vmThread.hpp
-
-concurrentMarkSweepGeneration.hpp       bitMap.inline.hpp
-concurrentMarkSweepGeneration.hpp       freeBlockDictionary.hpp
-concurrentMarkSweepGeneration.hpp       gSpaceCounters.hpp
-concurrentMarkSweepGeneration.hpp       gcStats.hpp
-concurrentMarkSweepGeneration.hpp       generation.hpp
-concurrentMarkSweepGeneration.hpp       generationCounters.hpp
-concurrentMarkSweepGeneration.hpp       memoryService.hpp
-concurrentMarkSweepGeneration.hpp       mutexLocker.hpp
-concurrentMarkSweepGeneration.hpp       stack.inline.hpp
-concurrentMarkSweepGeneration.hpp       taskqueue.hpp
-concurrentMarkSweepGeneration.hpp       virtualspace.hpp
-concurrentMarkSweepGeneration.hpp       yieldingWorkgroup.hpp
-
-concurrentMarkSweepGeneration.inline.hpp cmsLockVerifier.hpp
-concurrentMarkSweepGeneration.inline.hpp compactibleFreeListSpace.hpp
-concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepGeneration.hpp
-concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepThread.hpp
-concurrentMarkSweepGeneration.inline.hpp defNewGeneration.hpp
-concurrentMarkSweepGeneration.inline.hpp gcUtil.hpp
-
-concurrentMarkSweepThread.cpp           concurrentMarkSweepGeneration.inline.hpp
-concurrentMarkSweepThread.cpp           concurrentMarkSweepThread.hpp
-concurrentMarkSweepThread.cpp           genCollectedHeap.hpp
-concurrentMarkSweepThread.cpp           init.hpp
-concurrentMarkSweepThread.cpp           instanceRefKlass.hpp
-concurrentMarkSweepThread.cpp           interfaceSupport.hpp
-concurrentMarkSweepThread.cpp           java.hpp
-concurrentMarkSweepThread.cpp           javaCalls.hpp
-concurrentMarkSweepThread.cpp           mutexLocker.hpp
-concurrentMarkSweepThread.cpp           oop.inline.hpp
-concurrentMarkSweepThread.cpp           os.hpp
-concurrentMarkSweepThread.cpp           systemDictionary.hpp
-concurrentMarkSweepThread.cpp           vmThread.hpp
-
-concurrentMarkSweepThread.hpp           concurrentGCThread.hpp
-concurrentMarkSweepThread.hpp           concurrentMarkSweepGeneration.hpp
-concurrentMarkSweepThread.hpp           thread_<os_family>.inline.hpp
-
-freeBlockDictionary.cpp                 freeBlockDictionary.hpp
-freeBlockDictionary.cpp                 thread_<os_family>.inline.hpp
-
-freeBlockDictionary.hpp                 allocation.hpp
-freeBlockDictionary.hpp                 debug.hpp
-freeBlockDictionary.hpp                 freeChunk.hpp
-freeBlockDictionary.hpp                 globalDefinitions.hpp
-freeBlockDictionary.hpp                 memRegion.hpp
-freeBlockDictionary.hpp                 mutex.hpp
-freeBlockDictionary.hpp                 ostream.hpp
-
-freeChunk.cpp                           copy.hpp
-freeChunk.cpp                           freeBlockDictionary.hpp
-
-freeChunk.hpp                           allocation.hpp
-freeChunk.hpp                           debug.hpp
-freeChunk.hpp                           globalDefinitions.hpp
-freeChunk.hpp                           markOop.hpp
-freeChunk.hpp                           memRegion.hpp
-freeChunk.hpp                           mutex.hpp
-freeChunk.hpp                           ostream.hpp
-
-freeList.cpp                            freeBlockDictionary.hpp
-freeList.cpp                            freeList.hpp
-freeList.cpp                            globals.hpp
-freeList.cpp                            mutex.hpp
-freeList.cpp                            sharedHeap.hpp
-freeList.cpp                            vmThread.hpp
-
-freeList.hpp                            allocationStats.hpp
-
-promotionInfo.cpp                       compactibleFreeListSpace.hpp
-promotionInfo.cpp                       markOop.inline.hpp
-promotionInfo.cpp                       oop.inline.hpp
-promotionInfo.cpp                       promotionInfo.hpp
-
-promotionInfo.hpp                       allocation.hpp
-promotionInfo.hpp                       freeChunk.hpp
-
-vmCMSOperations.cpp			concurrentMarkSweepGeneration.inline.hpp
-vmCMSOperations.cpp			concurrentMarkSweepThread.hpp
-vmCMSOperations.cpp			dtrace.hpp
-vmCMSOperations.cpp			gcLocker.inline.hpp
-vmCMSOperations.cpp			isGCActiveMark.hpp
-vmCMSOperations.cpp			interfaceSupport.hpp
-vmCMSOperations.cpp			vmCMSOperations.hpp
-
-vmCMSOperations.hpp			concurrentMarkSweepGeneration.hpp
-vmCMSOperations.hpp			gcCause.hpp
-vmCMSOperations.hpp			vm_operations.hpp
-vmCMSOperations.hpp			vmGCOperations.hpp
-
-yieldingWorkgroup.cpp                   yieldingWorkgroup.hpp
-
-yieldingWorkgroup.hpp                   workgroup.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_g1	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,373 +0,0 @@
-//
-// Copyright (c) 2004, 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.
-//
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-bufferingOopClosure.hpp			genOopClosures.hpp
-bufferingOopClosure.hpp			generation.hpp
-bufferingOopClosure.hpp			os.hpp
-bufferingOopClosure.hpp			taskqueue.hpp
-
-cardTableRS.cpp				concurrentMark.hpp
-cardTableRS.cpp				g1SATBCardTableModRefBS.hpp
-
-collectionSetChooser.cpp		g1CollectedHeap.inline.hpp
-collectionSetChooser.cpp		g1CollectorPolicy.hpp
-collectionSetChooser.cpp		collectionSetChooser.hpp
-collectionSetChooser.cpp		space.inline.hpp
-
-collectionSetChooser.hpp		heapRegion.hpp
-collectionSetChooser.hpp                growableArray.hpp
-
-concurrentG1Refine.cpp			atomic.hpp
-concurrentG1Refine.cpp			concurrentG1Refine.hpp
-concurrentG1Refine.cpp			concurrentG1RefineThread.hpp
-concurrentG1Refine.cpp			copy.hpp
-concurrentG1Refine.cpp			g1CollectedHeap.inline.hpp
-concurrentG1Refine.cpp                  g1CollectorPolicy.hpp
-concurrentG1Refine.cpp			g1RemSet.hpp
-concurrentG1Refine.cpp			space.inline.hpp
-concurrentG1Refine.cpp                  heapRegionSeq.inline.hpp
-
-concurrentG1Refine.hpp			globalDefinitions.hpp
-concurrentG1Refine.hpp			allocation.hpp
-concurrentG1Refine.hpp                  cardTableModRefBS.hpp
-concurrentG1Refine.hpp			thread.hpp
-
-concurrentG1RefineThread.cpp		concurrentG1Refine.hpp
-concurrentG1RefineThread.cpp		concurrentG1RefineThread.hpp
-concurrentG1RefineThread.cpp		g1CollectedHeap.inline.hpp
-concurrentG1RefineThread.cpp            g1CollectorPolicy.hpp
-concurrentG1RefineThread.cpp		handles.inline.hpp
-concurrentG1RefineThread.cpp		mutexLocker.hpp
-concurrentG1RefineThread.cpp		resourceArea.hpp
-
-concurrentG1RefineThread.hpp		concurrentGCThread.hpp
-
-concurrentMark.cpp			concurrentMark.hpp
-concurrentMark.cpp			concurrentMarkThread.inline.hpp
-concurrentMark.cpp			g1CollectedHeap.inline.hpp
-concurrentMark.cpp                      g1CollectorPolicy.hpp
-concurrentMark.cpp                      g1RemSet.hpp
-concurrentMark.cpp		        genOopClosures.inline.hpp
-concurrentMark.cpp                      heapRegionRemSet.hpp
-concurrentMark.cpp                      heapRegionSeq.inline.hpp
-concurrentMark.cpp                      handles.inline.hpp
-concurrentMark.cpp			java.hpp
-concurrentMark.cpp			oop.inline.hpp
-concurrentMark.cpp                      referencePolicy.hpp
-concurrentMark.cpp			resourceArea.hpp
-concurrentMark.cpp			symbolTable.hpp
-
-concurrentMark.hpp			heapRegion.hpp
-concurrentMark.hpp			taskqueue.hpp
-
-concurrentMarkThread.cpp		concurrentMarkThread.inline.hpp
-concurrentMarkThread.cpp		g1CollectedHeap.inline.hpp
-concurrentMarkThread.cpp		g1CollectorPolicy.hpp
-concurrentMarkThread.cpp                g1MMUTracker.hpp
-concurrentMarkThread.cpp		resourceArea.hpp
-concurrentMarkThread.cpp		vm_operations_g1.hpp
-concurrentMarkThread.cpp                vmThread.hpp
-
-concurrentMarkThread.hpp		concurrentGCThread.hpp
-
-concurrentMarkThread.inline.hpp		concurrentMark.hpp
-concurrentMarkThread.inline.hpp		concurrentMarkThread.hpp
-
-concurrentZFThread.cpp			concurrentZFThread.hpp
-concurrentZFThread.cpp			heapRegion.hpp
-concurrentZFThread.cpp			g1CollectedHeap.inline.hpp
-concurrentZFThread.cpp			copy.hpp
-concurrentZFThread.cpp			mutexLocker.hpp
-concurrentZFThread.cpp			space.inline.hpp
-
-concurrentZFThread.hpp			concurrentGCThread.hpp
-
-dirtyCardQueue.cpp                      atomic.hpp
-dirtyCardQueue.cpp                      dirtyCardQueue.hpp
-dirtyCardQueue.cpp			heapRegionRemSet.hpp
-dirtyCardQueue.cpp                      mutexLocker.hpp
-dirtyCardQueue.cpp                      safepoint.hpp
-dirtyCardQueue.cpp                      thread.hpp
-dirtyCardQueue.cpp                      thread_<os_family>.inline.hpp
-dirtyCardQueue.cpp                      workgroup.hpp
-
-dirtyCardQueue.hpp                      allocation.hpp
-dirtyCardQueue.hpp                      ptrQueue.hpp
-
-g1BlockOffsetTable.cpp			g1BlockOffsetTable.inline.hpp
-g1BlockOffsetTable.cpp			java.hpp
-g1BlockOffsetTable.cpp			oop.inline.hpp
-g1BlockOffsetTable.cpp			space.hpp
-
-g1BlockOffsetTable.hpp			globalDefinitions.hpp
-g1BlockOffsetTable.hpp			memRegion.hpp
-g1BlockOffsetTable.hpp			virtualspace.hpp
-
-g1BlockOffsetTable.inline.hpp		g1BlockOffsetTable.hpp
-g1BlockOffsetTable.inline.hpp		space.hpp
-
-g1CollectedHeap.cpp                     aprofiler.hpp
-g1CollectedHeap.cpp                     bufferingOopClosure.hpp
-g1CollectedHeap.cpp                     concurrentG1Refine.hpp
-g1CollectedHeap.cpp                     concurrentG1RefineThread.hpp
-g1CollectedHeap.cpp			concurrentMarkThread.inline.hpp
-g1CollectedHeap.cpp                     concurrentZFThread.hpp
-g1CollectedHeap.cpp                     g1CollectedHeap.inline.hpp
-g1CollectedHeap.cpp                     g1CollectorPolicy.hpp
-g1CollectedHeap.cpp                     g1MarkSweep.hpp
-g1CollectedHeap.cpp                     g1RemSet.inline.hpp
-g1CollectedHeap.cpp                     g1OopClosures.inline.hpp
-g1CollectedHeap.cpp                     genOopClosures.inline.hpp
-g1CollectedHeap.cpp                     gcLocker.inline.hpp
-g1CollectedHeap.cpp                     generationSpec.hpp
-g1CollectedHeap.cpp                     heapRegionRemSet.hpp
-g1CollectedHeap.cpp                     heapRegionSeq.inline.hpp
-g1CollectedHeap.cpp                     icBuffer.hpp
-g1CollectedHeap.cpp                     isGCActiveMark.hpp
-g1CollectedHeap.cpp			oop.inline.hpp
-g1CollectedHeap.cpp			oop.pcgc.inline.hpp
-g1CollectedHeap.cpp                     vm_operations_g1.hpp
-g1CollectedHeap.cpp                     vmThread.hpp
-
-g1CollectedHeap.hpp                     barrierSet.hpp
-g1CollectedHeap.hpp                     g1RemSet.hpp
-g1CollectedHeap.hpp                     heapRegion.hpp
-g1CollectedHeap.hpp                     memRegion.hpp
-g1CollectedHeap.hpp			parGCAllocBuffer.hpp
-g1CollectedHeap.hpp                     sharedHeap.hpp
-
-g1CollectedHeap.inline.hpp              concurrentMark.hpp
-g1CollectedHeap.inline.hpp              g1CollectedHeap.hpp
-g1CollectedHeap.inline.hpp              heapRegionSeq.hpp
-g1CollectedHeap.inline.hpp		taskqueue.hpp
-
-g1CollectorPolicy.cpp			arguments.hpp
-g1CollectorPolicy.cpp			concurrentG1Refine.hpp
-g1CollectorPolicy.cpp			concurrentMark.hpp
-g1CollectorPolicy.cpp			concurrentMarkThread.inline.hpp
-g1CollectorPolicy.cpp			debug.hpp
-g1CollectorPolicy.cpp			java.hpp
-g1CollectorPolicy.cpp                   g1CollectedHeap.inline.hpp
-g1CollectorPolicy.cpp                   g1CollectorPolicy.hpp
-g1CollectorPolicy.cpp                   heapRegionRemSet.hpp
-g1CollectorPolicy.cpp			mutexLocker.hpp
-g1CollectorPolicy.cpp			gcPolicyCounters.hpp
-
-g1CollectorPolicy.hpp                   collectorPolicy.hpp
-g1CollectorPolicy.hpp                   collectionSetChooser.hpp
-g1CollectorPolicy.hpp			g1MMUTracker.hpp
-
-g1_globals.cpp				g1_globals.hpp
-
-g1_globals.hpp                          globals.hpp
-
-globals.cpp                             g1_globals.hpp
-top.hpp                                 g1_globals.hpp
-
-g1MarkSweep.cpp                         aprofiler.hpp
-g1MarkSweep.cpp                         biasedLocking.hpp
-g1MarkSweep.cpp                         codeCache.hpp
-g1MarkSweep.cpp                         events.hpp
-g1MarkSweep.cpp                         fprofiler.hpp
-g1MarkSweep.hpp                         g1CollectedHeap.inline.hpp
-g1MarkSweep.cpp                         g1MarkSweep.hpp
-g1MarkSweep.cpp                         gcLocker.hpp
-g1MarkSweep.cpp                         genCollectedHeap.hpp
-g1MarkSweep.hpp                         heapRegion.hpp
-g1MarkSweep.cpp                         icBuffer.hpp
-g1MarkSweep.cpp                         instanceRefKlass.hpp
-g1MarkSweep.cpp                         javaClasses.hpp
-g1MarkSweep.cpp				jvmtiExport.hpp
-g1MarkSweep.cpp                         copy.hpp
-g1MarkSweep.cpp                         modRefBarrierSet.hpp
-g1MarkSweep.cpp                         oop.inline.hpp
-g1MarkSweep.cpp                         referencePolicy.hpp
-g1MarkSweep.cpp                         space.hpp
-g1MarkSweep.cpp                         symbolTable.hpp
-g1MarkSweep.cpp                         synchronizer.hpp
-g1MarkSweep.cpp                         systemDictionary.hpp
-g1MarkSweep.cpp                         thread.hpp
-g1MarkSweep.cpp                         vmSymbols.hpp
-g1MarkSweep.cpp                         vmThread.hpp
-
-g1MarkSweep.hpp                         generation.hpp
-g1MarkSweep.hpp                         growableArray.hpp
-g1MarkSweep.hpp                         markOop.hpp
-g1MarkSweep.hpp                         genMarkSweep.hpp
-g1MarkSweep.hpp                         oop.hpp
-g1MarkSweep.hpp                         timer.hpp
-g1MarkSweep.hpp                         universe.hpp
-
-g1MemoryPool.cpp                        heapRegion.hpp
-g1MemoryPool.cpp                        g1CollectedHeap.inline.hpp
-g1MemoryPool.cpp                        g1CollectedHeap.hpp
-g1MemoryPool.cpp                        g1CollectorPolicy.hpp
-g1MemoryPool.cpp                        g1MemoryPool.hpp
-
-g1MemoryPool.hpp                        memoryUsage.hpp
-g1MemoryPool.hpp                        memoryPool.hpp
-
-g1OopClosures.inline.hpp		concurrentMark.hpp
-g1OopClosures.inline.hpp		g1OopClosures.hpp
-g1OopClosures.inline.hpp		g1CollectedHeap.hpp
-g1OopClosures.inline.hpp		g1RemSet.hpp
-
-g1MMUTracker.cpp			g1MMUTracker.hpp
-g1MMUTracker.cpp			ostream.hpp
-g1MMUTracker.cpp			mutexLocker.hpp
-
-g1MMUTracker.hpp			debug.hpp
-g1MMUTracker.hpp			allocation.hpp
-
-g1RemSet.cpp				bufferingOopClosure.hpp
-g1RemSet.cpp				concurrentG1Refine.hpp
-g1RemSet.cpp				concurrentG1RefineThread.hpp
-g1RemSet.cpp				g1BlockOffsetTable.inline.hpp
-g1RemSet.cpp				g1CollectedHeap.inline.hpp
-g1RemSet.cpp				g1CollectorPolicy.hpp
-g1RemSet.cpp				g1RemSet.inline.hpp
-g1RemSet.cpp				g1OopClosures.inline.hpp
-g1RemSet.cpp				heapRegionSeq.inline.hpp
-g1RemSet.cpp				intHisto.hpp
-g1RemSet.cpp				iterator.hpp
-g1RemSet.cpp				oop.inline.hpp
-
-g1RemSet.inline.hpp			oop.inline.hpp
-g1RemSet.inline.hpp			g1RemSet.hpp
-g1RemSet.inline.hpp			heapRegionRemSet.hpp
-
-g1SATBCardTableModRefBS.cpp		g1SATBCardTableModRefBS.hpp
-g1SATBCardTableModRefBS.cpp		heapRegion.hpp
-g1SATBCardTableModRefBS.cpp		mutexLocker.hpp
-g1SATBCardTableModRefBS.cpp		thread.hpp
-g1SATBCardTableModRefBS.cpp		thread_<os_family>.inline.hpp
-g1SATBCardTableModRefBS.cpp		satbQueue.hpp
-
-g1SATBCardTableModRefBS.hpp		oop.inline.hpp
-g1SATBCardTableModRefBS.hpp		cardTableModRefBS.hpp
-g1SATBCardTableModRefBS.hpp		memRegion.hpp
-
-heapRegion.cpp                          concurrentZFThread.hpp
-heapRegion.cpp                          g1BlockOffsetTable.inline.hpp
-heapRegion.cpp                          g1CollectedHeap.inline.hpp
-heapRegion.cpp                          g1OopClosures.inline.hpp
-heapRegion.cpp                          genOopClosures.inline.hpp
-heapRegion.cpp                          heapRegion.inline.hpp
-heapRegion.cpp                          heapRegionRemSet.hpp
-heapRegion.cpp                          heapRegionSeq.inline.hpp
-heapRegion.cpp                          iterator.hpp
-heapRegion.cpp                          oop.inline.hpp
-
-heapRegion.hpp                          space.inline.hpp
-heapRegion.hpp                          spaceDecorator.hpp
-heapRegion.hpp                          g1BlockOffsetTable.inline.hpp
-heapRegion.hpp                          watermark.hpp
-heapRegion.hpp				g1_specialized_oop_closures.hpp
-heapRegion.hpp				survRateGroup.hpp
-heapRegion.hpp				ageTable.hpp
-
-heapRegionRemSet.hpp			sparsePRT.hpp
-
-heapRegionRemSet.cpp                    allocation.hpp
-heapRegionRemSet.cpp                    bitMap.inline.hpp
-heapRegionRemSet.cpp                    concurrentG1Refine.hpp
-heapRegionRemSet.cpp                    g1BlockOffsetTable.inline.hpp
-heapRegionRemSet.cpp                    g1CollectedHeap.inline.hpp
-heapRegionRemSet.cpp                    heapRegionRemSet.hpp
-heapRegionRemSet.cpp			heapRegionSeq.inline.hpp
-heapRegionRemSet.cpp                    globalDefinitions.hpp
-heapRegionRemSet.cpp                    space.inline.hpp
-
-heapRegionSeq.cpp                       allocation.hpp
-heapRegionSeq.cpp                       g1CollectedHeap.inline.hpp
-heapRegionSeq.cpp                       heapRegionSeq.hpp
-
-heapRegionSeq.hpp                       growableArray.hpp
-heapRegionSeq.hpp                       heapRegion.hpp
-
-heapRegionSeq.inline.hpp                heapRegionSeq.hpp
-
-klass.hpp				g1OopClosures.hpp
-
-memoryService.cpp                       g1MemoryPool.hpp
-
-ptrQueue.cpp                            allocation.hpp
-ptrQueue.cpp                            allocation.inline.hpp
-ptrQueue.cpp                            mutex.hpp
-ptrQueue.cpp                            mutexLocker.hpp
-ptrQueue.cpp                            ptrQueue.hpp
-ptrQueue.cpp                            thread_<os_family>.inline.hpp
-
-ptrQueue.hpp                            allocation.hpp
-ptrQueue.hpp                            sizes.hpp
-
-ptrQueue.inline.hpp                     ptrQueue.hpp
-
-satbQueue.cpp                           allocation.inline.hpp
-satbQueue.cpp                           mutexLocker.hpp
-satbQueue.cpp                           satbQueue.hpp
-satbQueue.cpp                           sharedHeap.hpp
-satbQueue.cpp                           thread.hpp
-
-satbQueue.hpp                           ptrQueue.hpp
-
-sparsePRT.cpp				allocation.inline.hpp
-sparsePRT.cpp				cardTableModRefBS.hpp
-sparsePRT.cpp				heapRegion.hpp
-sparsePRT.cpp				heapRegionRemSet.hpp
-sparsePRT.cpp				mutexLocker.hpp
-sparsePRT.cpp				sparsePRT.hpp
-sparsePRT.cpp				space.inline.hpp
-
-sparsePRT.hpp				allocation.hpp
-sparsePRT.hpp				cardTableModRefBS.hpp
-sparsePRT.hpp				globalDefinitions.hpp
-sparsePRT.hpp                           g1CollectedHeap.inline.hpp
-sparsePRT.hpp				heapRegion.hpp
-sparsePRT.hpp				mutex.hpp
-
-specialized_oop_closures.hpp		g1_specialized_oop_closures.hpp
-
-survRateGroup.hpp			numberSeq.hpp
-
-survRateGroup.cpp			allocation.hpp
-survRateGroup.cpp			g1CollectedHeap.inline.hpp
-survRateGroup.cpp			g1CollectorPolicy.hpp
-survRateGroup.cpp			heapRegion.hpp
-survRateGroup.cpp			survRateGroup.hpp
-
-thread.cpp				concurrentMarkThread.inline.hpp
-
-universe.cpp                            g1CollectedHeap.inline.hpp
-universe.cpp                            g1CollectorPolicy.hpp
-
-vm_operations_g1.hpp			vmGCOperations.hpp
-
-vm_operations_g1.cpp			vm_operations_g1.hpp
-vm_operations_g1.cpp                    g1CollectedHeap.inline.hpp
-vm_operations_g1.cpp                    g1CollectorPolicy.hpp
-vm_operations_g1.cpp                    interfaceSupport.hpp
-vm_operations_g1.cpp                    isGCActiveMark.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_parNew	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-//
-// Copyright (c) 2007, 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.
-//
-//
-
-asParNewGeneration.hpp                  adaptiveSizePolicy.hpp
-asParNewGeneration.hpp                  parNewGeneration.hpp
-
-asParNewGeneration.cpp                  asParNewGeneration.hpp
-asParNewGeneration.cpp                  cmsAdaptiveSizePolicy.hpp
-asParNewGeneration.cpp                  cmsGCAdaptivePolicyCounters.hpp
-asParNewGeneration.cpp                  defNewGeneration.inline.hpp
-asParNewGeneration.cpp                  markOop.inline.hpp
-asParNewGeneration.cpp                  markSweep.inline.hpp
-asParNewGeneration.cpp                  oop.pcgc.inline.hpp
-asParNewGeneration.cpp                  parNewGeneration.hpp
-asParNewGeneration.cpp                  referencePolicy.hpp
-asParNewGeneration.cpp                  spaceDecorator.hpp
-
-parCardTableModRefBS.cpp                allocation.inline.hpp
-parCardTableModRefBS.cpp                cardTableModRefBS.hpp
-parCardTableModRefBS.cpp                cardTableRS.hpp
-parCardTableModRefBS.cpp                java.hpp
-parCardTableModRefBS.cpp                mutexLocker.hpp
-parCardTableModRefBS.cpp                sharedHeap.hpp
-parCardTableModRefBS.cpp                space.inline.hpp
-parCardTableModRefBS.cpp                universe.hpp
-parCardTableModRefBS.cpp                virtualspace.hpp
-
-parGCAllocBuffer.cpp                    arrayOop.hpp
-parGCAllocBuffer.cpp                    oop.inline.hpp
-parGCAllocBuffer.cpp                    parGCAllocBuffer.hpp
-parGCAllocBuffer.cpp                    sharedHeap.hpp
-
-parGCAllocBuffer.hpp                    allocation.hpp
-parGCAllocBuffer.hpp                    globalDefinitions.hpp
-parGCAllocBuffer.hpp                    threadLocalAllocBuffer.hpp
-
-parNewGeneration.cpp                    adaptiveSizePolicy.hpp
-parNewGeneration.cpp                    ageTable.hpp
-parNewGeneration.cpp                    concurrentMarkSweepGeneration.hpp
-parNewGeneration.cpp                    copy.hpp
-parNewGeneration.cpp                    defNewGeneration.inline.hpp
-parNewGeneration.cpp                    genCollectedHeap.hpp
-parNewGeneration.cpp                    genOopClosures.inline.hpp
-parNewGeneration.cpp                    generation.hpp
-parNewGeneration.cpp                    generation.inline.hpp
-parNewGeneration.cpp                    globalDefinitions.hpp
-parNewGeneration.cpp                    handles.hpp
-parNewGeneration.cpp                    handles.inline.hpp
-parNewGeneration.cpp                    java.hpp
-parNewGeneration.cpp                    objArrayOop.hpp
-parNewGeneration.cpp                    oop.inline.hpp
-parNewGeneration.cpp                    oop.pcgc.inline.hpp
-parNewGeneration.cpp                    parGCAllocBuffer.hpp
-parNewGeneration.cpp                    parNewGeneration.hpp
-parNewGeneration.cpp                    parOopClosures.inline.hpp
-parNewGeneration.cpp                    referencePolicy.hpp
-parNewGeneration.cpp                    resourceArea.hpp
-parNewGeneration.cpp                    sharedHeap.hpp
-parNewGeneration.cpp                    space.hpp
-parNewGeneration.cpp                    spaceDecorator.hpp
-parNewGeneration.cpp                    thread.hpp
-parNewGeneration.cpp                    workgroup.hpp
-
-parNewGeneration.hpp                    defNewGeneration.hpp
-parNewGeneration.hpp                    parGCAllocBuffer.hpp
-parNewGeneration.hpp                    taskqueue.hpp
-
-parOopClosures.hpp                      genOopClosures.hpp
-
-parOopClosures.inline.hpp               parNewGeneration.hpp
-parOopClosures.inline.hpp               parOopClosures.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,466 +0,0 @@
-//
-// Copyright (c) 2001, 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.
-//
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-
-adjoiningGenerations.hpp		adjoiningVirtualSpaces.hpp
-adjoiningGenerations.hpp		asPSOldGen.hpp
-adjoiningGenerations.hpp		asPSYoungGen.hpp
-adjoiningGenerations.hpp                psPermGen.hpp
-
-adjoiningGenerations.cpp		adjoiningGenerations.hpp
-adjoiningGenerations.cpp		adjoiningVirtualSpaces.hpp
-adjoiningGenerations.cpp		parallelScavengeHeap.hpp
-adjoiningGenerations.cpp                psPermGen.hpp
-
-adjoiningVirtualSpaces.hpp		psVirtualspace.hpp
-
-adjoiningVirtualSpaces.cpp		java.hpp
-adjoiningVirtualSpaces.cpp		adjoiningVirtualSpaces.hpp
-
-asPSOldGen.hpp                          generationCounters.hpp
-asPSOldGen.hpp                          mutableSpace.hpp
-asPSOldGen.hpp                          objectStartArray.hpp
-asPSOldGen.hpp                          psVirtualspace.hpp
-asPSOldGen.hpp                          spaceCounters.hpp
-asPSOldGen.hpp				psOldGen.hpp
-
-asPSOldGen.cpp                          psAdaptiveSizePolicy.hpp
-asPSOldGen.cpp                          cardTableModRefBS.hpp
-asPSOldGen.cpp                          java.hpp
-asPSOldGen.cpp                          oop.inline.hpp
-asPSOldGen.cpp                          parallelScavengeHeap.hpp
-asPSOldGen.cpp                          psMarkSweepDecorator.hpp
-asPSOldGen.cpp                          asPSOldGen.hpp
-
-asPSYoungGen.hpp                        generationCounters.hpp
-asPSYoungGen.hpp                        mutableSpace.hpp
-asPSYoungGen.hpp                        objectStartArray.hpp
-asPSYoungGen.hpp                        spaceCounters.hpp
-asPSYoungGen.hpp                        psVirtualspace.hpp
-asPSYoungGen.hpp                        psYoungGen.hpp
-asPSYoungGen.hpp                        spaceDecorator.hpp
-
-asPSYoungGen.cpp                        gcUtil.hpp
-asPSYoungGen.cpp                        java.hpp
-asPSYoungGen.cpp                        oop.inline.hpp
-asPSYoungGen.cpp                        parallelScavengeHeap.hpp
-asPSYoungGen.cpp                        psMarkSweepDecorator.hpp
-asPSYoungGen.cpp                        psScavenge.hpp
-asPSYoungGen.cpp                        asPSYoungGen.hpp
-asPSYoungGen.cpp                        psYoungGen.hpp
-asPSYoungGen.cpp                        spaceDecorator.hpp
-
-cardTableExtension.cpp                  cardTableExtension.hpp
-cardTableExtension.cpp                  gcTaskManager.hpp
-cardTableExtension.cpp                  oop.inline.hpp
-cardTableExtension.cpp                  oop.psgc.inline.hpp
-cardTableExtension.cpp                  parallelScavengeHeap.hpp
-cardTableExtension.cpp                  psTasks.hpp
-cardTableExtension.cpp                  psYoungGen.hpp
-
-cardTableExtension.hpp                  cardTableModRefBS.hpp
-
-gcTaskManager.hpp                       mutex.hpp
-gcTaskManager.hpp                       growableArray.hpp
-
-gcTaskManager.cpp                       allocation.hpp
-gcTaskManager.cpp                       allocation.inline.hpp
-gcTaskManager.cpp                       gcTaskManager.hpp
-gcTaskManager.cpp                       gcTaskThread.hpp
-gcTaskManager.cpp                       mutex.hpp
-gcTaskManager.cpp                       mutexLocker.hpp
-
-gcTaskThread.hpp                        thread.hpp
-
-gcTaskThread.cpp                        allocation.hpp
-gcTaskThread.cpp                        allocation.inline.hpp
-gcTaskThread.cpp                        gcTaskManager.hpp
-gcTaskThread.cpp                        gcTaskThread.hpp
-gcTaskThread.cpp                        handles.hpp
-gcTaskThread.cpp                        handles.inline.hpp
-gcTaskThread.cpp                        os.hpp
-gcTaskThread.cpp                        resourceArea.hpp
-gcTaskThread.cpp                        thread.hpp
-
-generationSizer.hpp                     collectorPolicy.hpp
-
-objectStartArray.cpp                    allocation.inline.hpp
-objectStartArray.cpp                    cardTableModRefBS.hpp
-objectStartArray.cpp                    java.hpp
-objectStartArray.cpp                    objectStartArray.hpp
-objectStartArray.cpp                    oop.inline.hpp
-
-objectStartArray.hpp                    allocation.hpp
-objectStartArray.hpp                    memRegion.hpp
-objectStartArray.hpp                    oop.hpp
-objectStartArray.hpp                    psVirtualspace.hpp
-
-parallelScavengeHeap.cpp                adjoiningGenerations.hpp
-parallelScavengeHeap.cpp                adjoiningVirtualSpaces.hpp
-parallelScavengeHeap.cpp                cardTableExtension.hpp
-parallelScavengeHeap.cpp                gcLocker.inline.hpp
-parallelScavengeHeap.cpp                gcTaskManager.hpp
-parallelScavengeHeap.cpp                generationSizer.hpp
-parallelScavengeHeap.cpp                handles.inline.hpp
-parallelScavengeHeap.cpp                java.hpp
-parallelScavengeHeap.cpp                oop.inline.hpp
-parallelScavengeHeap.cpp                parallelScavengeHeap.inline.hpp
-parallelScavengeHeap.cpp                psAdaptiveSizePolicy.hpp
-parallelScavengeHeap.cpp                psMarkSweep.hpp
-parallelScavengeHeap.cpp                psParallelCompact.hpp
-parallelScavengeHeap.cpp                psPromotionManager.hpp
-parallelScavengeHeap.cpp                psScavenge.hpp
-parallelScavengeHeap.cpp                vmThread.hpp
-parallelScavengeHeap.cpp                vmPSOperations.hpp
-
-parallelScavengeHeap.inline.hpp		parallelScavengeHeap.hpp
-parallelScavengeHeap.inline.hpp		psMarkSweep.hpp
-parallelScavengeHeap.inline.hpp		psParallelCompact.hpp
-parallelScavengeHeap.inline.hpp		psScavenge.hpp
-
-parallelScavengeHeap.hpp                collectedHeap.inline.hpp
-parallelScavengeHeap.hpp                objectStartArray.hpp
-parallelScavengeHeap.hpp                gcPolicyCounters.hpp
-parallelScavengeHeap.hpp                psGCAdaptivePolicyCounters.hpp
-parallelScavengeHeap.hpp                psOldGen.hpp
-parallelScavengeHeap.hpp                psPermGen.hpp
-parallelScavengeHeap.hpp                psYoungGen.hpp
-parallelScavengeHeap.hpp                ostream.hpp
-
-parMarkBitMap.cpp			bitMap.inline.hpp
-parMarkBitMap.cpp			oop.inline.hpp
-parMarkBitMap.cpp			os.hpp
-parMarkBitMap.cpp			os_<os_family>.inline.hpp
-parMarkBitMap.cpp			parMarkBitMap.hpp
-parMarkBitMap.cpp			parMarkBitMap.inline.hpp
-parMarkBitMap.cpp                       psParallelCompact.hpp
-
-parMarkBitMap.hpp			bitMap.inline.hpp
-parMarkBitMap.hpp			psVirtualspace.hpp
-
-psAdaptiveSizePolicy.cpp                collectorPolicy.hpp
-psAdaptiveSizePolicy.cpp                gcPolicyCounters.hpp
-psAdaptiveSizePolicy.cpp		gcCause.hpp
-psAdaptiveSizePolicy.cpp                generationSizer.hpp
-psAdaptiveSizePolicy.cpp                psAdaptiveSizePolicy.hpp
-psAdaptiveSizePolicy.cpp                psGCAdaptivePolicyCounters.hpp
-psAdaptiveSizePolicy.cpp                psScavenge.hpp
-psAdaptiveSizePolicy.cpp                timer.hpp
-psAdaptiveSizePolicy.cpp                top.hpp
-
-psAdaptiveSizePolicy.hpp                gcCause.hpp
-psAdaptiveSizePolicy.hpp		gcStats.hpp
-psAdaptiveSizePolicy.hpp                gcUtil.hpp
-psAdaptiveSizePolicy.hpp		adaptiveSizePolicy.hpp
-
-psCompactionManager.cpp                 gcTaskManager.hpp
-psCompactionManager.cpp                 objArrayKlass.inline.hpp
-psCompactionManager.cpp                 objectStartArray.hpp
-psCompactionManager.cpp                 oop.hpp
-psCompactionManager.cpp                 oop.inline.hpp
-psCompactionManager.cpp                 oop.pcgc.inline.hpp
-psCompactionManager.cpp                 parallelScavengeHeap.hpp
-psCompactionManager.cpp                 parMarkBitMap.hpp
-psCompactionManager.cpp                 psParallelCompact.hpp
-psCompactionManager.cpp                 psCompactionManager.hpp
-psCompactionManager.cpp                 psOldGen.hpp
-psCompactionManager.cpp                 stack.inline.hpp
-psCompactionManager.cpp                 systemDictionary.hpp
-
-psCompactionManager.hpp                 allocation.hpp
-psCompactionManager.hpp                 stack.hpp
-psCompactionManager.hpp                 taskqueue.hpp
-
-psCompactionManager.inline.hpp		psCompactionManager.hpp
-psCompactionManager.inline.hpp		psParallelCompact.hpp
-
-psGCAdaptivePolicyCounters.hpp		gcAdaptivePolicyCounters.hpp
-psGCAdaptivePolicyCounters.hpp          gcPolicyCounters.hpp
-psGCAdaptivePolicyCounters.hpp          psAdaptiveSizePolicy.hpp
-
-psGCAdaptivePolicyCounters.cpp          arguments.hpp
-psGCAdaptivePolicyCounters.cpp          resourceArea.hpp
-psGCAdaptivePolicyCounters.cpp          psGCAdaptivePolicyCounters.hpp
-
-psGenerationCounters.cpp                psGenerationCounters.hpp
-psGenerationCounters.cpp                resourceArea.hpp
-
-psGenerationCounters.hpp                generationCounters.hpp
-psGenerationCounters.hpp                perfData.hpp
-psGenerationCounters.hpp                psVirtualspace.hpp
-
-psMarkSweep.cpp                         psAdaptiveSizePolicy.hpp
-psMarkSweep.cpp                         biasedLocking.hpp
-psMarkSweep.cpp                         codeCache.hpp
-psMarkSweep.cpp                         events.hpp
-psMarkSweep.cpp                         fprofiler.hpp
-psMarkSweep.cpp                         gcCause.hpp
-psMarkSweep.cpp                         gcLocker.inline.hpp
-psMarkSweep.cpp                         generationSizer.hpp
-psMarkSweep.cpp                         isGCActiveMark.hpp
-psMarkSweep.cpp                         oop.inline.hpp
-psMarkSweep.cpp                         memoryService.hpp
-psMarkSweep.cpp                         management.hpp
-psMarkSweep.cpp                         parallelScavengeHeap.hpp
-psMarkSweep.cpp                         psMarkSweep.hpp
-psMarkSweep.cpp                         psMarkSweepDecorator.hpp
-psMarkSweep.cpp                         psOldGen.hpp
-psMarkSweep.cpp                         psPermGen.hpp
-psMarkSweep.cpp                         psScavenge.hpp
-psMarkSweep.cpp                         psYoungGen.hpp
-psMarkSweep.cpp                         referencePolicy.hpp
-psMarkSweep.cpp                         referenceProcessor.hpp
-psMarkSweep.cpp                         safepoint.hpp
-psMarkSweep.cpp                         spaceDecorator.hpp
-psMarkSweep.cpp                         stack.inline.hpp
-psMarkSweep.cpp                         symbolTable.hpp
-psMarkSweep.cpp                         systemDictionary.hpp
-psMarkSweep.cpp                         vmThread.hpp
-
-psMarkSweep.hpp                         markSweep.inline.hpp
-psMarkSweep.hpp                         collectorCounters.hpp
-psMarkSweep.hpp                         stack.hpp
-
-psMarkSweepDecorator.cpp                liveRange.hpp
-psMarkSweepDecorator.cpp                markSweep.inline.hpp
-psMarkSweepDecorator.cpp                objectStartArray.hpp
-psMarkSweepDecorator.cpp                oop.inline.hpp
-psMarkSweepDecorator.cpp                parallelScavengeHeap.hpp
-psMarkSweepDecorator.cpp                psMarkSweep.hpp
-psMarkSweepDecorator.cpp                psMarkSweepDecorator.hpp
-psMarkSweepDecorator.cpp                spaceDecorator.hpp
-psMarkSweepDecorator.cpp                systemDictionary.hpp
-
-psMarkSweepDecorator.hpp                mutableSpace.hpp
-
-psParallelCompact.cpp			psAdaptiveSizePolicy.hpp
-psParallelCompact.cpp			codeCache.hpp
-psParallelCompact.cpp			events.hpp
-psParallelCompact.cpp			fprofiler.hpp
-psParallelCompact.cpp			gcCause.hpp
-psParallelCompact.cpp			gcLocker.inline.hpp
-psParallelCompact.cpp                   gcTaskManager.hpp
-psParallelCompact.cpp                   generationSizer.hpp
-psParallelCompact.cpp			isGCActiveMark.hpp
-psParallelCompact.cpp			management.hpp
-psParallelCompact.cpp			memoryService.hpp
-psParallelCompact.cpp			methodDataOop.hpp
-psParallelCompact.cpp			oop.inline.hpp
-psParallelCompact.cpp			oop.pcgc.inline.hpp
-psParallelCompact.cpp			parallelScavengeHeap.inline.hpp
-psParallelCompact.cpp			pcTasks.hpp
-psParallelCompact.cpp			psMarkSweep.hpp
-psParallelCompact.cpp			psMarkSweepDecorator.hpp
-psParallelCompact.cpp			psCompactionManager.inline.hpp
-psParallelCompact.cpp                   psPromotionManager.inline.hpp
-psParallelCompact.cpp			psOldGen.hpp
-psParallelCompact.cpp			psParallelCompact.hpp
-psParallelCompact.cpp			psPermGen.hpp
-psParallelCompact.cpp			psScavenge.hpp
-psParallelCompact.cpp			psYoungGen.hpp
-psParallelCompact.cpp			referencePolicy.hpp
-psParallelCompact.cpp			referenceProcessor.hpp
-psParallelCompact.cpp			safepoint.hpp
-psParallelCompact.cpp			stack.inline.hpp
-psParallelCompact.cpp			symbolTable.hpp
-psParallelCompact.cpp			systemDictionary.hpp
-psParallelCompact.cpp			vmThread.hpp
-
-psParallelCompact.hpp			collectorCounters.hpp
-psParallelCompact.hpp			markSweep.hpp
-psParallelCompact.hpp			mutableSpace.hpp
-psParallelCompact.hpp                   objectStartArray.hpp
-psParallelCompact.hpp			oop.hpp
-psParallelCompact.hpp			parMarkBitMap.hpp
-psParallelCompact.hpp			psCompactionManager.hpp
-psParallelCompact.hpp			sharedHeap.hpp
-
-psOldGen.cpp                            psAdaptiveSizePolicy.hpp
-psOldGen.cpp                            cardTableModRefBS.hpp
-psOldGen.cpp                            gcLocker.inline.hpp
-psOldGen.cpp                            java.hpp
-psOldGen.cpp                            oop.inline.hpp
-psOldGen.cpp                            parallelScavengeHeap.hpp
-psOldGen.cpp                            psMarkSweepDecorator.hpp
-psOldGen.cpp                            psOldGen.hpp
-psOldGen.cpp                            spaceDecorator.hpp
-
-psOldGen.hpp                            psGenerationCounters.hpp
-psOldGen.hpp                            mutableSpace.hpp
-psOldGen.hpp                            objectStartArray.hpp
-psOldGen.hpp                            psVirtualspace.hpp
-psOldGen.hpp                         	safepoint.hpp
-psOldGen.hpp                            spaceCounters.hpp
-
-psPermGen.cpp                           gcUtil.hpp
-psPermGen.cpp                           markOop.inline.hpp
-psPermGen.cpp                           markSweep.inline.hpp
-psPermGen.cpp                           parallelScavengeHeap.hpp
-psPermGen.cpp                           psMarkSweepDecorator.hpp
-psPermGen.cpp                           psParallelCompact.hpp
-psPermGen.cpp                           psPermGen.hpp
-
-psPermGen.hpp                           psOldGen.hpp
-
-psPromotionManager.cpp                  memRegion.hpp
-psPromotionManager.cpp                  mutableSpace.hpp
-psPromotionManager.cpp                  oop.inline.hpp
-psPromotionManager.cpp                  oop.psgc.inline.hpp
-psPromotionManager.cpp                  parallelScavengeHeap.hpp
-psPromotionManager.cpp                  psOldGen.hpp
-psPromotionManager.cpp                  psPromotionManager.inline.hpp
-psPromotionManager.cpp                  psScavenge.inline.hpp
-
-psPromotionManager.hpp                  allocation.hpp
-psPromotionManager.hpp                  psPromotionLAB.hpp
-psPromotionManager.hpp                  taskqueue.hpp
-
-psPromotionManager.inline.hpp           psPromotionManager.hpp
-psPromotionManager.inline.hpp           psScavenge.hpp
-
-psPromotionLAB.cpp                      mutableSpace.hpp
-psPromotionLAB.cpp                      oop.inline.hpp
-psPromotionLAB.cpp                      parallelScavengeHeap.hpp
-psPromotionLAB.cpp                      psPromotionLAB.hpp
-
-psPromotionLAB.hpp                      allocation.hpp
-psPromotionLAB.hpp                      objectStartArray.hpp
-
-psScavenge.cpp                          psAdaptiveSizePolicy.hpp
-psScavenge.cpp                          biasedLocking.hpp
-psScavenge.cpp                          cardTableExtension.hpp
-psScavenge.cpp                          collectorPolicy.hpp
-psScavenge.cpp                          fprofiler.hpp
-psScavenge.cpp                          gcCause.hpp
-psScavenge.cpp                          gcLocker.inline.hpp
-psScavenge.cpp                          gcTaskManager.hpp
-psScavenge.cpp                          generationSizer.hpp
-psScavenge.cpp                          handles.inline.hpp
-psScavenge.cpp                          isGCActiveMark.hpp
-psScavenge.cpp                          oop.inline.hpp
-psScavenge.cpp                          oop.psgc.inline.hpp
-psScavenge.cpp                          memoryService.hpp
-psScavenge.cpp                          parallelScavengeHeap.hpp
-psScavenge.cpp                          psMarkSweep.hpp
-psScavenge.cpp                          psParallelCompact.hpp
-psScavenge.cpp                          psScavenge.inline.hpp
-psScavenge.cpp                          psTasks.hpp
-psScavenge.cpp                          referencePolicy.hpp
-psScavenge.cpp                          referenceProcessor.hpp
-psScavenge.cpp                          resourceArea.hpp
-psScavenge.cpp                          spaceDecorator.hpp
-psScavenge.cpp                          stack.inline.hpp
-psScavenge.cpp                          threadCritical.hpp
-psScavenge.cpp                          vmThread.hpp
-psScavenge.cpp                          vm_operations.hpp
-
-psScavenge.hpp                          allocation.hpp
-psScavenge.hpp                          cardTableExtension.hpp
-psScavenge.hpp                          collectorCounters.hpp
-psScavenge.hpp                          oop.hpp
-psScavenge.hpp                          psVirtualspace.hpp
-psScavenge.hpp                          stack.hpp
-
-psScavenge.inline.hpp                   cardTableExtension.hpp
-psScavenge.inline.hpp                   parallelScavengeHeap.hpp
-psScavenge.inline.hpp                   psPromotionManager.hpp
-psScavenge.inline.hpp                   psScavenge.hpp
-
-pcTasks.cpp                             codeCache.hpp
-pcTasks.cpp                             collectedHeap.hpp
-pcTasks.cpp                             fprofiler.hpp
-pcTasks.cpp                             jniHandles.hpp
-pcTasks.cpp                             jvmtiExport.hpp
-pcTasks.cpp                             management.hpp
-pcTasks.cpp                             objArrayKlass.inline.hpp
-pcTasks.cpp                             psParallelCompact.hpp
-pcTasks.cpp                             pcTasks.hpp
-pcTasks.cpp                             oop.inline.hpp
-pcTasks.cpp                             oop.pcgc.inline.hpp
-pcTasks.cpp                             systemDictionary.hpp
-pcTasks.cpp                             thread.hpp
-pcTasks.cpp                             universe.hpp
-pcTasks.cpp                             vmThread.hpp
-
-pcTasks.hpp				gcTaskManager.hpp
-pcTasks.hpp				psTasks.hpp
-
-psTasks.cpp                             cardTableExtension.hpp
-psTasks.cpp                             codeCache.hpp
-psTasks.cpp                             fprofiler.hpp
-psTasks.cpp                             gcTaskManager.hpp
-psTasks.cpp                             iterator.hpp
-psTasks.cpp                             management.hpp
-psTasks.cpp                             oop.inline.hpp
-psTasks.cpp                             oop.psgc.inline.hpp
-psTasks.cpp                             psMarkSweep.hpp
-psTasks.cpp                             psPromotionManager.hpp
-psTasks.cpp                             psPromotionManager.inline.hpp
-psTasks.cpp                             psScavenge.hpp
-psTasks.cpp                             psTasks.hpp
-psTasks.cpp                             systemDictionary.hpp
-psTasks.cpp                             taskqueue.hpp
-psTasks.cpp                             thread.hpp
-psTasks.cpp                             universe.hpp
-psTasks.cpp                             vmThread.hpp
-
-psTasks.hpp                             allocation.hpp
-psTasks.hpp                             growableArray.hpp
-
-psVirtualspace.hpp			virtualspace.hpp
-
-psVirtualspace.cpp			os.hpp
-psVirtualspace.cpp                      os_<os_family>.inline.hpp
-psVirtualspace.cpp                      psVirtualspace.hpp
-psVirtualspace.cpp                      virtualspace.hpp
-
-psYoungGen.cpp                          gcUtil.hpp
-psYoungGen.cpp                          java.hpp
-psYoungGen.cpp                          oop.inline.hpp
-psYoungGen.cpp                          parallelScavengeHeap.hpp
-psYoungGen.cpp                          psMarkSweepDecorator.hpp
-psYoungGen.cpp                          psScavenge.hpp
-psYoungGen.cpp                          psYoungGen.hpp
-psYoungGen.cpp                          mutableNUMASpace.hpp
-psYoungGen.cpp                          spaceDecorator.hpp
-
-psYoungGen.hpp                          psGenerationCounters.hpp
-psYoungGen.hpp                          mutableSpace.hpp
-psYoungGen.hpp                          objectStartArray.hpp
-psYoungGen.hpp                          spaceCounters.hpp
-psYoungGen.hpp                          psVirtualspace.hpp
-
-vmPSOperations.cpp                      dtrace.hpp
-vmPSOperations.cpp                      parallelScavengeHeap.inline.hpp
-vmPSOperations.cpp                      gcLocker.inline.hpp
-vmPSOperations.cpp                      psMarkSweep.hpp
-vmPSOperations.cpp                      psScavenge.hpp
-vmPSOperations.cpp                      psScavenge.inline.hpp
-vmPSOperations.cpp                      vmPSOperations.hpp
-
-vmPSOperations.hpp                      gcCause.hpp
-vmPSOperations.hpp                      parallelScavengeHeap.hpp
-vmPSOperations.hpp                      vmGCOperations.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_serial	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-//
-// Copyright (c) 2007, 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.
-//  
-//
-
-adaptiveSizePolicy.hpp			collectedHeap.hpp
-adaptiveSizePolicy.hpp			gcCause.hpp
-adaptiveSizePolicy.hpp			gcUtil.hpp
-adaptiveSizePolicy.hpp			allocation.hpp
-adaptiveSizePolicy.hpp			universe.hpp
-
-adaptiveSizePolicy.cpp			adaptiveSizePolicy.hpp
-adaptiveSizePolicy.cpp			collectorPolicy.hpp
-adaptiveSizePolicy.cpp			gcCause.hpp
-adaptiveSizePolicy.cpp			ostream.hpp
-adaptiveSizePolicy.cpp			timer.hpp
-
-ageTable.cpp                            ageTable.hpp
-ageTable.cpp				collectorPolicy.hpp
-ageTable.cpp                            copy.hpp
-ageTable.cpp                            gcPolicyCounters.hpp
-ageTable.cpp                            resourceArea.hpp
-ageTable.cpp                            sharedHeap.hpp
-
-ageTable.hpp                            markOop.hpp
-ageTable.hpp                            oop.hpp
-ageTable.hpp                            perfData.hpp
-
-collectorCounters.cpp                   collectorCounters.hpp
-collectorCounters.cpp                   resourceArea.hpp
-
-collectorCounters.hpp                   perfData.hpp
-
-cSpaceCounters.cpp                      resourceArea.hpp
-cSpaceCounters.cpp                      cSpaceCounters.hpp
-
-cSpaceCounters.hpp                      space.inline.hpp
-cSpaceCounters.hpp                      perfData.hpp
-cSpaceCounters.hpp                      generationCounters.hpp
-
-gcPolicyCounters.cpp                    resourceArea.hpp
-gcPolicyCounters.cpp                    gcPolicyCounters.hpp
-
-gcPolicyCounters.hpp                    perfData.hpp
-
-gcStats.cpp				gcStats.hpp
-gcStats.cpp				gcUtil.hpp
-
-gcStats.hpp				gcUtil.hpp
-
-gcUtil.cpp                              gcUtil.hpp
-
-gcUtil.hpp                              allocation.hpp
-gcUtil.hpp                              debug.hpp
-gcUtil.hpp                              globalDefinitions.hpp
-gcUtil.hpp                              ostream.hpp
-gcUtil.hpp				timer.hpp
-
-generationCounters.cpp                  generationCounters.hpp
-generationCounters.cpp                  resourceArea.hpp
-
-generationCounters.hpp                  perfData.hpp
-generationCounters.hpp                  virtualspace.hpp
-
-immutableSpace.hpp                      iterator.hpp
-
-liveRange.hpp                           copy.hpp
-liveRange.hpp                           memRegion.hpp
-
-markSweep.cpp                           collectedHeap.inline.hpp
-markSweep.cpp                           markSweep.inline.hpp
-markSweep.cpp                           oop.inline.hpp
-
-markSweep.hpp                           growableArray.hpp
-markSweep.hpp                           markOop.hpp
-markSweep.hpp                           oop.hpp
-markSweep.hpp                           stack.hpp
-markSweep.hpp                           timer.hpp
-markSweep.hpp                           universe.hpp
-
-markSweep.inline.hpp                    collectedHeap.hpp
-markSweep.inline.hpp                    markSweep.hpp
-markSweep.inline.hpp                    stack.inline.hpp
-
-mutableSpace.hpp                        immutableSpace.hpp
-mutableSpace.hpp                        memRegion.hpp
-mutableSpace.hpp                        copy.hpp
-
-vmGCOperations.cpp                      vmGCOperations.hpp
-vmGCOperations.cpp                      dtrace.hpp
-vmGCOperations.cpp                      classLoader.hpp
-vmGCOperations.cpp                      gcLocker.inline.hpp
-vmGCOperations.cpp                      genCollectedHeap.hpp
-vmGCOperations.cpp                      handles.inline.hpp
-vmGCOperations.cpp                      init.hpp
-vmGCOperations.cpp                      instanceKlass.hpp
-vmGCOperations.cpp                      instanceRefKlass.hpp
-vmGCOperations.cpp                      interfaceSupport.hpp
-vmGCOperations.cpp                      javaClasses.hpp
-vmGCOperations.cpp                      jvmtiExport.hpp
-vmGCOperations.cpp                      oopFactory.hpp
-vmGCOperations.cpp                      preserveException.hpp
-
-vmGCOperations.hpp                      vm_operations.hpp
-vmGCOperations.hpp                      heapInspection.hpp
-vmGCOperations.hpp                      handles.hpp
-vmGCOperations.hpp                      jniHandles.hpp
-vmGCOperations.hpp                      synchronizer.hpp
--- a/src/share/vm/gc_implementation/includeDB_gc_shared	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-//
-// Copyright (c) 2001, 2009, 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.
-//
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-concurrentGCThread.cpp                  concurrentGCThread.hpp
-concurrentGCThread.cpp                  init.hpp
-concurrentGCThread.cpp                  instanceRefKlass.hpp
-concurrentGCThread.cpp                  interfaceSupport.hpp
-concurrentGCThread.cpp                  java.hpp
-concurrentGCThread.cpp                  javaCalls.hpp
-concurrentGCThread.cpp                  oop.inline.hpp
-concurrentGCThread.cpp                  systemDictionary.hpp
-
-concurrentGCThread.hpp                  thread.hpp
-
-allocationStats.cpp                     allocationStats.hpp
-allocationStats.cpp                     ostream.hpp
-
-allocationStats.hpp                     allocation.hpp
-allocationStats.hpp                     gcUtil.hpp
-allocationStats.hpp                     globalDefinitions.hpp
-
-gcAdaptivePolicyCounters.hpp            adaptiveSizePolicy.hpp
-gcAdaptivePolicyCounters.hpp            gcPolicyCounters.hpp
-
-gcAdaptivePolicyCounters.cpp            resourceArea.hpp
-gcAdaptivePolicyCounters.cpp            gcAdaptivePolicyCounters.hpp
-
-gSpaceCounters.cpp                      generation.hpp
-gSpaceCounters.cpp                      resourceArea.hpp
-gSpaceCounters.cpp                      gSpaceCounters.hpp
-
-gSpaceCounters.hpp                      generation.hpp
-gSpaceCounters.hpp                      perfData.hpp
-gSpaceCounters.hpp                      generationCounters.hpp
-
-immutableSpace.cpp                      immutableSpace.hpp
-immutableSpace.cpp                      oop.inline.hpp
-immutableSpace.cpp                      universe.hpp
-
-isGCActiveMark.hpp                      parallelScavengeHeap.hpp
-
-markSweep.inline.hpp                    psParallelCompact.hpp
-
-mutableNUMASpace.cpp                    mutableNUMASpace.hpp
-mutableNUMASpace.cpp                    oop.inline.hpp
-mutableNUMASpace.cpp                    sharedHeap.hpp
-mutableNUMASpace.cpp                    spaceDecorator.hpp
-mutableNUMASpace.cpp                    thread_<os_family>.inline.hpp
-
-mutableNUMASpace.hpp                    mutableSpace.hpp
-mutableNUMASpace.hpp                    gcUtil.hpp
-
-mutableSpace.cpp                        mutableSpace.hpp
-mutableSpace.cpp                        oop.inline.hpp
-mutableSpace.cpp                        safepoint.hpp
-mutableSpace.cpp                        spaceDecorator.hpp
-mutableSpace.cpp                        thread.hpp
-
-spaceCounters.cpp                       resourceArea.hpp
-spaceCounters.cpp                       spaceCounters.hpp
-
-spaceCounters.hpp                       immutableSpace.hpp
-spaceCounters.hpp                       mutableSpace.hpp
-spaceCounters.hpp                       perfData.hpp
-spaceCounters.hpp                       generationCounters.hpp
-
-vmGCOperations.cpp                      g1CollectedHeap.inline.hpp
--- a/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_asParNewGeneration.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp"
+#include "gc_implementation/parNew/asParNewGeneration.hpp"
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/defNewGeneration.inline.hpp"
+#include "memory/referencePolicy.hpp"
+#include "oops/markOop.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
 
 ASParNewGeneration::ASParNewGeneration(ReservedSpace rs,
                                        size_t initial_byte_size,
--- a/src/share/vm/gc_implementation/parNew/asParNewGeneration.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/asParNewGeneration.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_ASPARNEWGENERATION_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_ASPARNEWGENERATION_HPP
+
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+
 // A Generation that does parallel young-gen collection extended
 // for adaptive size policy.
 
@@ -88,3 +94,5 @@
   // Space boundary invariant checker
   void space_invariants() PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARNEW_ASPARNEWGENERATION_HPP
--- a/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_parCardTableModRefBS.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/sharedHeap.hpp"
+#include "memory/space.inline.hpp"
+#include "memory/universe.hpp"
+#include "runtime/java.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/virtualspace.hpp"
 
 void CardTableModRefBS::par_non_clean_card_iterate_work(Space* sp, MemRegion mr,
                                                         DirtyCardToOopClosure* dcto_cl,
--- a/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_parGCAllocBuffer.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parNew/parGCAllocBuffer.hpp"
+#include "memory/sharedHeap.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/oop.inline.hpp"
 
 ParGCAllocBuffer::ParGCAllocBuffer(size_t desired_plab_sz_) :
   _word_sz(desired_plab_sz_), _bottom(NULL), _top(NULL),
--- a/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARGCALLOCBUFFER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARGCALLOCBUFFER_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/threadLocalAllocBuffer.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // Forward decl.
 
 class PLABStats;
@@ -237,3 +244,5 @@
     return MemRegion(_top, _true_end);
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARGCALLOCBUFFER_HPP
--- a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,33 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_parNewGeneration.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "gc_implementation/parNew/parGCAllocBuffer.hpp"
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+#include "gc_implementation/shared/ageTable.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/defNewGeneration.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/generation.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/sharedHeap.hpp"
+#include "memory/space.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/workgroup.hpp"
 
 #ifdef _MSC_VER
 #pragma warning( push )
@@ -846,7 +871,7 @@
   // from this generation, pass on collection; let the next generation
   // do it.
   if (!collection_attempt_is_safe()) {
-    gch->set_incremental_collection_will_fail();
+    gch->set_incremental_collection_failed();  // slight lie, in that we did not even attempt one
     return;
   }
   assert(to()->is_empty(), "Else not collection_attempt_is_safe");
@@ -935,8 +960,6 @@
 
     assert(to()->is_empty(), "to space should be empty now");
   } else {
-    assert(HandlePromotionFailure,
-      "Should only be here if promotion failure handling is on");
     assert(_promo_failure_scan_stack.is_empty(), "post condition");
     _promo_failure_scan_stack.clear(true); // Clear cached segments.
 
@@ -947,7 +970,7 @@
     // All the spaces are in play for mark-sweep.
     swap_spaces();  // Make life simpler for CMS || rescan; see 6483690.
     from()->set_next_compaction_space(to());
-    gch->set_incremental_collection_will_fail();
+    gch->set_incremental_collection_failed();
     // Inform the next generation that a promotion failure occurred.
     _next_gen->promotion_failure_occurred();
 
@@ -1092,11 +1115,6 @@
                                        old, m, sz);
 
     if (new_obj == NULL) {
-      if (!HandlePromotionFailure) {
-        // A failed promotion likely means the MaxLiveObjectEvacuationRatio flag
-        // is incorrectly set. In any case, its seriously wrong to be here!
-        vm_exit_out_of_memory(sz*wordSize, "promotion");
-      }
       // promotion failed, forward to self
       _promotion_failed = true;
       new_obj = old;
@@ -1206,12 +1224,6 @@
                                        old, m, sz);
 
     if (new_obj == NULL) {
-      if (!HandlePromotionFailure) {
-        // A failed promotion likely means the MaxLiveObjectEvacuationRatio
-        // flag is incorrectly set. In any case, its seriously wrong to be
-        // here!
-        vm_exit_out_of_memory(sz*wordSize, "promotion");
-      }
       // promotion failed, forward to self
       forward_ptr = old->forward_to_atomic(old);
       new_obj = old;
--- a/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARNEWGENERATION_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARNEWGENERATION_HPP
+
+#include "gc_implementation/parNew/parGCAllocBuffer.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "utilities/taskqueue.hpp"
+
 class ChunkArray;
 class ParScanWithoutBarrierClosure;
 class ParScanWithBarrierClosure;
@@ -422,3 +429,5 @@
 
   DEBUG_ONLY(static bool is_legal_forward_ptr(oop p);)
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARNEWGENERATION_HPP
--- a/src/share/vm/gc_implementation/parNew/parOopClosures.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/parOopClosures.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_PAROOPCLOSURES_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_PAROOPCLOSURES_HPP
+
+#include "memory/genOopClosures.hpp"
+
 // Closures for ParNewGeneration
 
 class ParScanThreadState;
@@ -141,3 +146,5 @@
     ParallelTaskTerminator* terminator_);
   virtual void do_void();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARNEW_PAROOPCLOSURES_HPP
--- a/src/share/vm/gc_implementation/parNew/parOopClosures.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/parOopClosures.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_PAROOPCLOSURES_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_PAROOPCLOSURES_INLINE_HPP
+
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/parNew/parOopClosures.hpp"
+#include "memory/cardTableRS.hpp"
+
 template <class T> inline void ParScanWeakRefClosure::do_oop_work(T* p) {
   assert (!oopDesc::is_null(*p), "null weak reference?");
   oop obj = oopDesc::load_decode_heap_oop_not_null(p);
@@ -107,3 +114,5 @@
 
 inline void ParScanWithoutBarrierClosure::do_oop_nv(oop* p)       { ParScanClosure::do_oop_work(p, false, false); }
 inline void ParScanWithoutBarrierClosure::do_oop_nv(narrowOop* p) { ParScanClosure::do_oop_work(p, false, false); }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARNEW_PAROOPCLOSURES_INLINE_HPP
--- a/src/share/vm/gc_implementation/parNew/vmStructs_parNew.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parNew/vmStructs_parNew.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_VMSTRUCTS_PARNEW_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_VMSTRUCTS_PARNEW_HPP
+
 #define VM_TYPES_PARNEW(declare_type)                                     \
            declare_type(ParNewGeneration,             DefNewGeneration)
 
 #define VM_INT_CONSTANTS_PARNEW(declare_constant)                         \
   declare_constant(Generation::ParNew)
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARNEW_VMSTRUCTS_PARNEW_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_adjoiningGenerations.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
+#include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 
 // If boundary moving is being used, create the young gen and old
 // gen with ASPSYoungGen and ASPSOldGen, respectively.  Revert to
--- a/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ADJOININGGENERATIONS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ADJOININGGENERATIONS_HPP
+
+#include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
+#include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
+#include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+
 
 // Contains two generations that both use an AdjoiningVirtualSpaces.
 // The two generations are adjacent in the reserved space for the
@@ -75,3 +83,5 @@
   // for the adjoining generations.
   size_t reserved_byte_size();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ADJOININGGENERATIONS_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_adjoiningVirtualSpaces.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
+#include "runtime/java.hpp"
 
 AdjoiningVirtualSpaces::AdjoiningVirtualSpaces(ReservedSpace rs,
                                                size_t min_low_byte_size,
--- a/src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ADJOININGVIRTUALSPACES_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ADJOININGVIRTUALSPACES_HPP
+
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+
 
 // Contains two virtual spaces that each can individually span
 // most of the reserved region but committed parts of which
@@ -106,3 +111,5 @@
                   size_t init_low_byte_size,
                   size_t init_high_byte_size);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ADJOININGVIRTUALSPACES_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_asPSOldGen.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 // Whereas PSOldGen takes the maximum size of the generation
 // (which doesn't change in the case of PSOldGen) as a parameter,
--- a/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ASPSOLDGEN_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ASPSOLDGEN_HPP
+
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "gc_implementation/shared/spaceCounters.hpp"
+
 class ASPSOldGen : public PSOldGen {
   friend class VMStructs;
   size_t _gen_size_limit;  // Largest size the generation's reserved size
@@ -55,3 +65,5 @@
   // Debugging support
   virtual const char* short_name() const { return "ASPSOldGen"; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ASPSOLDGEN_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_asPSYoungGen.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 ASPSYoungGen::ASPSYoungGen(size_t init_byte_size,
                            size_t minimum_byte_size,
--- a/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ASPSYOUNGGEN_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ASPSYOUNGGEN_HPP
+
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "gc_implementation/shared/spaceCounters.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+
 class ASPSYoungGen : public PSYoungGen {
   friend class VMStructs;
  private:
@@ -62,3 +73,5 @@
   // Printing support
   virtual const char* short_name() const { return "ASPSYoungGen"; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_ASPSYOUNGGEN_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_cardTableExtension.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psTasks.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.psgc.inline.hpp"
 
 // Checks an individual oop for missing precise marks. Mark
 // may be either dirty or newgen.
--- a/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_CARDTABLEEXTENSION_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_CARDTABLEEXTENSION_HPP
+
+#include "memory/cardTableModRefBS.hpp"
+
 class MutableSpace;
 class ObjectStartArray;
 class PSPromotionManager;
@@ -108,3 +113,5 @@
 
 #endif // ASSERT
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_CARDTABLEEXTENSION_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_gcTaskManager.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskThread.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/mutexLocker.hpp"
 
 //
 // GCTask
--- a/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GCTASKMANAGER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GCTASKMANAGER_HPP
+
+#include "runtime/mutex.hpp"
+#include "utilities/growableArray.hpp"
+
 //
 // The GCTaskManager is a queue of GCTasks, and accessors
 // to allow the queue to be accessed from many threads.
@@ -636,3 +642,5 @@
     return _freelist;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GCTASKMANAGER_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -23,8 +23,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_gcTaskThread.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskThread.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/os.hpp"
+#include "runtime/thread.hpp"
 
 GCTaskThread::GCTaskThread(GCTaskManager* manager,
                            uint           which,
--- a/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GCTASKTHREAD_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GCTASKTHREAD_HPP
+
+#include "runtime/thread.hpp"
+
 // Forward declarations of classes defined here.
 class GCTaskThread;
 class GCTaskTimeStamp;
@@ -97,3 +102,5 @@
   void set_exit_time(jlong time)  { _exit_time = time; }
   void set_name(char* name)       { _name = name; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GCTASKTHREAD_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP
+
+#include "memory/collectorPolicy.hpp"
+
 // There is a nice batch of tested generation sizing code in
 // TwoGenerationCollectorPolicy. Lets reuse it!
 
@@ -67,3 +72,5 @@
   size_t perm_gen_size()      { return PermSize; }
   size_t max_perm_gen_size()  { return MaxPermSize; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_objectStartArray.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 void ObjectStartArray::initialize(MemRegion reserved_region) {
   // We're based on the assumption that we use the same
--- a/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_OBJECTSTARTARRAY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_OBJECTSTARTARRAY_HPP
+
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "oops/oop.hpp"
+
 //
 // This class can be used to locate the beginning of an object in the
 // covered region.
@@ -160,3 +168,5 @@
   // "start", the method will return true.
   bool object_starts_in_range(HeapWord* start_addr, HeapWord* end_addr) const;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_OBJECTSTARTARRAY_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_parMarkBitMap.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/parMarkBitMap.hpp"
+#include "gc_implementation/parallelScavenge/parMarkBitMap.inline.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/os.hpp"
+#include "utilities/bitMap.inline.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 bool
 ParMarkBitMap::initialize(MemRegion covered_region)
--- a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARMARKBITMAP_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARMARKBITMAP_HPP
+
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "utilities/bitMap.inline.hpp"
+
 class oopDesc;
 class ParMarkBitMapClosure;
 
@@ -426,3 +432,5 @@
   assert(addr <= region_start() + region_size(), "addr too big");
 }
 #endif  // #ifdef ASSERT
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARMARKBITMAP_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARMARKBITMAP_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARMARKBITMAP_INLINE_HPP
+
 inline bool
 ParMarkBitMap::mark_obj(oop obj)
 {
  return mark_obj(obj, obj->size());
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARMARKBITMAP_INLINE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,25 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_parallelScavengeHeap.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
+#include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
+#include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp"
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/vmPSOperations.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/vmError.hpp"
 
 PSYoungGen*  ParallelScavengeHeap::_young_gen = NULL;
 PSOldGen*    ParallelScavengeHeap::_old_gen = NULL;
@@ -805,7 +822,8 @@
   if (young_gen()->is_in_reserved(addr)) {
     assert(young_gen()->is_in(addr),
            "addr should be in allocated part of young gen");
-    if (Debugging)  return NULL;  // called from find() in debug.cpp
+    // called from os::print_location by find or VMError
+    if (Debugging || VMError::fatal_error_in_progress())  return NULL;
     Unimplemented();
   } else if (old_gen()->is_in_reserved(addr)) {
     assert(old_gen()->is_in(addr),
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP
+
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "utilities/ostream.hpp"
+
 class AdjoiningGenerations;
 class GCTaskManager;
 class PSAdaptiveSizePolicy;
@@ -263,3 +275,5 @@
   var = round_to(val, intra_heap_alignment());
   return var;
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_INLINE_HPP
+
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+
 inline size_t ParallelScavengeHeap::total_invocations()
 {
   return UseParallelOldGC ? PSParallelCompact::total_invocations() :
@@ -49,3 +57,5 @@
 inline bool ParallelScavengeHeap::is_in_old_or_perm(oop p) {
   return old_gen()->is_in_reserved(p) || perm_gen()->is_in_reserved(p);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_INLINE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_pcTasks.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "gc_implementation/parallelScavenge/pcTasks.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/universe.hpp"
+#include "oops/objArrayKlass.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vmThread.hpp"
+#include "services/management.hpp"
 
 //
 // ThreadRootsMarkingTask
--- a/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PCTASKS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PCTASKS_HPP
+
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psTasks.hpp"
+
 
 // Tasks for parallel compaction of the old generation
 //
@@ -250,3 +257,5 @@
   char* name() { return (char *)"drain-region-task"; }
   virtual void do_it(GCTaskManager* manager, uint which);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PCTASKS_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psAdaptiveSizePolicy.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "gc_interface/gcCause.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/top.hpp"
 
 #include <math.h>
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSADAPTIVESIZEPOLICY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSADAPTIVESIZEPOLICY_HPP
+
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+#include "gc_implementation/shared/gcStats.hpp"
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "gc_interface/gcCause.hpp"
+
 // This class keeps statistical information and computes the
 // optimal free space for both the young and old generation
 // based on current application characteristics (based on gc cost
@@ -384,3 +392,5 @@
   // Printing support
   virtual bool print_adaptive_size_policy_on(outputStream* st) const;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSADAPTIVESIZEPOLICY_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psCompactionManager.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/parMarkBitMap.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psCompactionManager.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "oops/objArrayKlass.inline.hpp"
+#include "oops/oop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#include "utilities/stack.inline.hpp"
 
 PSOldGen*            ParCompactionManager::_old_gen = NULL;
 ParCompactionManager**  ParCompactionManager::_manager_array = NULL;
--- a/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/stack.hpp"
+#include "utilities/taskqueue.hpp"
+
 // Move to some global location
 #define HAS_BEEN_MOVED 0x1501d01d
 // End move to some global location
@@ -167,3 +174,5 @@
 bool ParCompactionManager::marking_stacks_empty() const {
   return _marking_stack.is_empty() && _objarray_stack.is_empty();
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_INLINE_HPP
+
+#include "gc_implementation/parallelScavenge/psCompactionManager.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+
 void ParCompactionManager::push_objarray(oop obj, size_t index)
 {
   ObjArrayTask task(obj, index);
@@ -39,3 +45,5 @@
 #endif
   region_stack()->push(index);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_INLINE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_psGCAdaptivePolicyCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/arguments.hpp"
 
 
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSGCADAPTIVEPOLICYCOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSGCADAPTIVEPOLICYCOUNTERS_HPP
+
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/shared/gcAdaptivePolicyCounters.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+
 // PSGCAdaptivePolicyCounters is a holder class for performance counters
 // that track the data and decisions for the ergonomics policy for the
 // parallel scavenge collector.
@@ -200,3 +207,5 @@
     return GCPolicyCounters::PSGCAdaptivePolicyCountersKind;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSGCADAPTIVEPOLICYCOUNTERS_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -23,8 +23,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_psGenerationCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/psGenerationCounters.hpp"
+#include "memory/resourceArea.hpp"
 
 
 PSGenerationCounters::PSGenerationCounters(const char* name,
--- a/src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -23,6 +23,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSGENERATIONCOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSGENERATIONCOUNTERS_HPP
+
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "runtime/perfData.hpp"
+
 // A PSGenerationCounter is a holder class for performance counters
 // that track a generation
 
@@ -41,3 +48,5 @@
     _current_size->set_value(_ps_virtual_space->committed_size());
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSGENERATIONCOUNTERS_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,34 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psMarkSweep.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "gc_interface/gcCause.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/referenceProcessor.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/vmThread.hpp"
+#include "services/management.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/events.hpp"
+#include "utilities/stack.inline.hpp"
 
 elapsedTimer        PSMarkSweep::_accumulated_time;
 unsigned int        PSMarkSweep::_total_invocations = 0;
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSMARKSWEEP_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSMARKSWEEP_HPP
+
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "utilities/stack.hpp"
+
 class PSAdaptiveSizePolicy;
 class PSYoungGen;
 class PSOldGen;
@@ -83,3 +90,5 @@
   // Time since last full gc (in milliseconds)
   static jlong millis_since_last_gc();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSMARKSWEEP_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_psMarkSweepDecorator.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "gc_implementation/shared/liveRange.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "oops/oop.inline.hpp"
 
 PSMarkSweepDecorator* PSMarkSweepDecorator::_destination_decorator = NULL;
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSMARKSWEEPDECORATOR_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSMARKSWEEPDECORATOR_HPP
+
+#include "gc_implementation/shared/mutableSpace.hpp"
+
 //
 // A PSMarkSweepDecorator is used to add "ParallelScavenge" style mark sweep operations
 // to a MutableSpace.
@@ -73,3 +78,5 @@
   void precompact();
   void compact(bool mangle_free_space);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSMARKSWEEPDECORATOR_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_psOldGen.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 inline const char* PSOldGen::select_name() {
   return UseParallelOldGC ? "ParOldGen" : "PSOldGen";
--- a/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSOLDGEN_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSOLDGEN_HPP
+
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/psGenerationCounters.hpp"
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "gc_implementation/shared/spaceCounters.hpp"
+#include "runtime/safepoint.hpp"
+
 class PSMarkSweepDecorator;
 
 class PSOldGen : public CHeapObj {
@@ -190,3 +200,5 @@
   // Save the tops of all spaces for later use during mangling.
   void record_spaces_top() PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSOLDGEN_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,39 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psParallelCompact.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp"
+#include "gc_implementation/parallelScavenge/pcTasks.hpp"
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/parallelScavenge/psCompactionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "gc_interface/gcCause.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/referenceProcessor.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/vmThread.hpp"
+#include "services/management.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/events.hpp"
+#include "utilities/stack.inline.hpp"
 
 #include <math.h>
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPARALLELCOMPACT_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPARALLELCOMPACT_HPP
+
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/parMarkBitMap.hpp"
+#include "gc_implementation/parallelScavenge/psCompactionManager.hpp"
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "gc_implementation/shared/markSweep.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "memory/sharedHeap.hpp"
+#include "oops/oop.hpp"
+
 class ParallelScavengeHeap;
 class PSAdaptiveSizePolicy;
 class PSYoungGen;
@@ -1514,3 +1526,5 @@
 private:
   ObjectStartArray* const _start_array;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPARALLELCOMPACT_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_psPermGen.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "oops/markOop.inline.hpp"
 
 PSPermGen::PSPermGen(ReservedSpace rs, size_t alignment,
                      size_t initial_size, size_t min_size, size_t max_size,
--- a/src/share/vm/gc_implementation/parallelScavenge/psPermGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPermGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPERMGEN_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPERMGEN_HPP
+
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+
 class AdaptivePaddedAverage;
 
 class PSPermGen : public PSOldGen {
@@ -51,3 +56,5 @@
 
   virtual const char* name() const { return "PSPermGen"; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPERMGEN_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psPromotionLAB.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionLAB.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "oops/oop.inline.hpp"
 
 size_t PSPromotionLAB::filler_header_size;
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONLAB_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONLAB_HPP
+
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "memory/allocation.hpp"
+
 //
 // PSPromotionLAB is a parallel scavenge promotion lab. This class acts very
 // much like a MutableSpace. We couldn't embed a MutableSpace, though, as
@@ -140,3 +146,5 @@
 
   debug_only(virtual bool lab_is_valid(MemRegion lab));
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONLAB_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,15 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psPromotionManager.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "memory/memRegion.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.psgc.inline.hpp"
 
 PSPromotionManager**         PSPromotionManager::_manager_array = NULL;
 OopStarTaskQueueSet*         PSPromotionManager::_stack_array_depth = NULL;
--- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_HPP
+
+#include "gc_implementation/parallelScavenge/psPromotionLAB.hpp"
+#include "memory/allocation.hpp"
+#include "utilities/taskqueue.hpp"
+
 //
 // psPromotionManager is used by a single thread to manage object survival
 // during a scavenge. The promotion manager contains thread local data only.
@@ -191,3 +198,5 @@
 
   TASKQUEUE_STATS_ONLY(inline void record_steal(StarTask& p);)
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_INLINE_HPP
+
+#include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+
 inline PSPromotionManager* PSPromotionManager::manager_array(int index) {
   assert(_manager_array != NULL, "access of NULL manager_array");
   assert(index >= 0 && index <= (int)ParallelGCThreads, "out of range manager_array access");
@@ -77,3 +83,5 @@
   }
 }
 #endif // TASKQUEUE_STATS
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_INLINE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,9 +22,35 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "gc_implementation/parallelScavenge/psTasks.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "gc_interface/gcCause.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/referenceProcessor.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.psgc.inline.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/stack.inline.hpp"
 
-# include "incls/_precompiled.incl"
-# include "incls/_psScavenge.cpp.incl"
 
 HeapWord*                  PSScavenge::_to_space_top_before_gc = NULL;
 int                        PSScavenge::_consecutive_skipped_scavenges = 0;
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_HPP
+
+#include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "utilities/stack.hpp"
+
 class GCTaskManager;
 class GCTaskQueue;
 class OopStack;
@@ -135,3 +145,5 @@
     return result;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_INLINE_HPP
+
+#include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+
 inline void PSScavenge::save_to_space_top_before_gc() {
   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
   _to_space_top_before_gc = heap->young_gen()->to_space()->top();
@@ -77,3 +85,5 @@
     }
   }
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_INLINE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,25 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psTasks.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
+#include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psTasks.hpp"
+#include "memory/iterator.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.psgc.inline.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vmThread.hpp"
+#include "services/management.hpp"
+#include "utilities/taskqueue.hpp"
 
 //
 // ScavengeRootsTask
--- a/src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSTASKS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSTASKS_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/growableArray.hpp"
+
 //
 // psTasks.hpp is a collection of GCTasks used by the
 // parallelScavenge collector.
@@ -144,3 +150,5 @@
 
   virtual void do_it(GCTaskManager* manager, uint which);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSTASKS_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_psVirtualspace.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "runtime/os.hpp"
+#include "runtime/virtualspace.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 // PSVirtualSpace
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSVIRTUALSPACE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSVIRTUALSPACE_HPP
+
+#include "runtime/virtualspace.hpp"
+
 // VirtualSpace for the parallel scavenge collector.
 //
 // VirtualSpace is data structure for committing a previously reserved address
@@ -173,3 +178,5 @@
   _committed_low_addr = low_addr;
   _committed_high_addr = high_addr;
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSVIRTUALSPACE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_psYoungGen.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "gc_implementation/shared/mutableNUMASpace.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 PSYoungGen::PSYoungGen(size_t        initial_size,
                        size_t        min_size,
--- a/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSYOUNGGEN_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSYOUNGGEN_HPP
+
+#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+#include "gc_implementation/parallelScavenge/psGenerationCounters.hpp"
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "gc_implementation/shared/spaceCounters.hpp"
+
 class PSMarkSweepDecorator;
 
 class PSYoungGen : public CHeapObj {
@@ -188,3 +197,5 @@
 
   void record_spaces_top() PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSYOUNGGEN_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmPSOperations.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp"
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "gc_implementation/parallelScavenge/vmPSOperations.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "utilities/dtrace.hpp"
 
 // The following methods are used by the parallel scavenge collector
 VM_ParallelGCFailedAllocation::VM_ParallelGCFailedAllocation(size_t size,
--- a/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMPSOPERATIONS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMPSOPERATIONS_HPP
+
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "gc_interface/gcCause.hpp"
+
 class VM_ParallelGCFailedAllocation: public VM_GC_Operation {
  private:
   size_t    _size;
@@ -63,3 +70,5 @@
   virtual VMOp_Type type() const { return VMOp_ParallelGCSystemGC; }
   virtual void doit();
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMPSOPERATIONS_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMSTRUCTS_PARALLELGC_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMSTRUCTS_PARALLELGC_HPP
+
 #define VM_STRUCTS_PARALLELGC(nonstatic_field, \
                    static_field) \
                                                                                                                                      \
@@ -93,3 +96,5 @@
   declare_toplevel_type(ASPSOldGen*)                                      \
   declare_toplevel_type(PSPermGen*)                                       \
   declare_toplevel_type(ParallelScavengeHeap*)
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMSTRUCTS_PARALLELGC_HPP
--- a/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -21,9 +21,13 @@
  * questions.
  *
  */
-#include "incls/_precompiled.incl"
-#include "incls/_adaptiveSizePolicy.cpp.incl"
 
+#include "precompiled.hpp"
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+#include "gc_interface/gcCause.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/ostream.hpp"
 elapsedTimer AdaptiveSizePolicy::_minor_timer;
 elapsedTimer AdaptiveSizePolicy::_major_timer;
 
--- a/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_ADAPTIVESIZEPOLICY_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_ADAPTIVESIZEPOLICY_HPP
+
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/gcCause.hpp"
+#include "memory/allocation.hpp"
+#include "memory/universe.hpp"
+
 // This class keeps statistical information and computes the
 // size of the heap.
 
@@ -503,3 +512,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_ADAPTIVESIZEPOLICY_HPP
--- a/src/share/vm/gc_implementation/shared/ageTable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/ageTable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,12 +22,17 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "gc_implementation/shared/ageTable.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/sharedHeap.hpp"
+#include "utilities/copy.hpp"
+
 /* Copyright (c) 1992-2009 Oracle and/or its affiliates, and Stanford University.
    See the LICENSE file for license information. */
 
-# include "incls/_precompiled.incl"
-# include "incls/_ageTable.cpp.incl"
-
 ageTable::ageTable(bool global) {
 
   clear();
--- a/src/share/vm/gc_implementation/shared/ageTable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/ageTable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_AGETABLE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_AGETABLE_HPP
+
+#include "oops/markOop.hpp"
+#include "oops/oop.hpp"
+#include "runtime/perfData.hpp"
+
 /* Copyright (c) 1992-2009 Oracle and/or its affiliates, and Stanford University.
    See the LICENSE file for license information. */
 
@@ -64,3 +71,5 @@
  private:
   PerfVariable* _perf_sizes[table_size];
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_AGETABLE_HPP
--- a/src/share/vm/gc_implementation/shared/allocationStats.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/allocationStats.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_allocationStats.cpp.incl"
+#include "precompiled.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/shared/allocationStats.hpp"
+#include "utilities/ostream.hpp"
+#endif
 
 // Technically this should be derived from machine speed, and
 // ideally it would be dynamically adjusted.
--- a/src/share/vm/gc_implementation/shared/allocationStats.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/allocationStats.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_ALLOCATIONSTATS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_ALLOCATIONSTATS_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "memory/allocation.hpp"
+#include "utilities/globalDefinitions.hpp"
+#endif
+
 class AllocationStats VALUE_OBJ_CLASS_SPEC {
   // A duration threshold (in ms) used to filter
   // possibly unreliable samples.
@@ -157,3 +166,5 @@
     void set_returnedBytes(size_t v) { _returnedBytes = v; }
   )
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_ALLOCATIONSTATS_HPP
--- a/src/share/vm/gc_implementation/shared/cSpaceCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/cSpaceCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_cSpaceCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/cSpaceCounters.hpp"
+#include "memory/resourceArea.hpp"
 
 CSpaceCounters::CSpaceCounters(const char* name, int ordinal, size_t max_size,
                                ContiguousSpace* s, GenerationCounters* gc) :
--- a/src/share/vm/gc_implementation/shared/cSpaceCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/cSpaceCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_CSPACECOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_CSPACECOUNTERS_HPP
+
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "memory/space.inline.hpp"
+#include "runtime/perfData.hpp"
+
 // A CSpaceCounters is a holder class for performance counters
 // that track a space;
 
@@ -75,3 +82,5 @@
       return _space->used();
     }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_CSPACECOUNTERS_HPP
--- a/src/share/vm/gc_implementation/shared/collectorCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/collectorCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_collectorCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "memory/resourceArea.hpp"
 
 CollectorCounters::CollectorCounters(const char* name, int ordinal) {
 
--- a/src/share/vm/gc_implementation/shared/collectorCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/collectorCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_COLLECTORCOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_COLLECTORCOUNTERS_HPP
+
+#include "runtime/perfData.hpp"
+
 // CollectorCounters is a holder class for performance counters
 // that track a collector
 
@@ -78,3 +83,5 @@
       if (UsePerfData) _c->last_exit_counter()->set_value(os::elapsed_counter());
     }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_COLLECTORCOUNTERS_HPP
--- a/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,10 +22,17 @@
  *
  */
 
-// CopyrightVersion 1.2
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/concurrentGCThread.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
 
-# include "incls/_precompiled.incl"
-# include "incls/_concurrentGCThread.cpp.incl"
+// CopyrightVersion 1.2
 
 int  ConcurrentGCThread::_CGC_flag            = CGC_nil;
 
--- a/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_CONCURRENTGCTHREAD_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_CONCURRENTGCTHREAD_HPP
+
+#ifndef SERIALGC
+#include "runtime/thread.hpp"
+#endif
+
 class VoidClosure;
 
 // A SuspendibleThreadSet is (obviously) a set of threads that can be
@@ -165,3 +172,5 @@
   void manipulatePLL(SLT_msg_type msg);
 
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_CONCURRENTGCTHREAD_HPP
--- a/src/share/vm/gc_implementation/shared/gSpaceCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gSpaceCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_gSpaceCounters.cpp.incl"
+#include "precompiled.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/shared/gSpaceCounters.hpp"
+#include "memory/generation.hpp"
+#include "memory/resourceArea.hpp"
+#endif
 
 GSpaceCounters::GSpaceCounters(const char* name, int ordinal, size_t max_size,
                                Generation* g, GenerationCounters* gc,
--- a/src/share/vm/gc_implementation/shared/gSpaceCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gSpaceCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GSPACECOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_GSPACECOUNTERS_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "memory/generation.hpp"
+#include "runtime/perfData.hpp"
+#endif
+
 // A GSpaceCounter is a holder class for performance counters
 // that track a space;
 
@@ -100,3 +109,5 @@
       return _gen->used();
     }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_GSPACECOUNTERS_HPP
--- a/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_gcAdaptivePolicyCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/gcAdaptivePolicyCounters.hpp"
+#include "memory/resourceArea.hpp"
 
 // This class keeps statistical information and computes the
 // size of the heap.
--- a/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GCADAPTIVEPOLICYCOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_GCADAPTIVEPOLICYCOUNTERS_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#endif
+
 // This class keeps statistical information and computes the
 // size of the heap.
 
@@ -222,3 +230,5 @@
     return GCPolicyCounters::GCAdaptivePolicyCountersKind;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_GCADAPTIVEPOLICYCOUNTERS_HPP
--- a/src/share/vm/gc_implementation/shared/gcPolicyCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcPolicyCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_gcPolicyCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "memory/resourceArea.hpp"
 
 GCPolicyCounters::GCPolicyCounters(const char* name, int collectors,
                                    int generations) {
--- a/src/share/vm/gc_implementation/shared/gcPolicyCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcPolicyCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GCPOLICYCOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_GCPOLICYCOUNTERS_HPP
+
+#include "runtime/perfData.hpp"
+
 // GCPolicyCounters is a holder class for performance counters
 // that track a generation
 
@@ -69,3 +74,5 @@
       return GCPolicyCounters::GCPolicyCountersKind;
     }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_GCPOLICYCOUNTERS_HPP
--- a/src/share/vm/gc_implementation/shared/gcStats.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcStats.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_gcStats.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/gcStats.hpp"
+#include "gc_implementation/shared/gcUtil.hpp"
 
 GCStats::GCStats() {
     _avg_promoted       = new AdaptivePaddedNoZeroDevAverage(
--- a/src/share/vm/gc_implementation/shared/gcStats.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcStats.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GCSTATS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_GCSTATS_HPP
+
+#include "gc_implementation/shared/gcUtil.hpp"
+
 class GCStats : public CHeapObj {
  protected:
   // Avg amount promoted; used for avoiding promotion undo
@@ -61,3 +66,5 @@
     return CMSGCStatsKind;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_GCSTATS_HPP
--- a/src/share/vm/gc_implementation/shared/gcUtil.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcUtil.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,8 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_gcUtil.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/gcUtil.hpp"
 
 // Catch-all file for utility classes
 
--- a/src/share/vm/gc_implementation/shared/gcUtil.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/gcUtil.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GCUTIL_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_GCUTIL_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/ostream.hpp"
+
 // Catch-all file for utility classes
 
 // A weighted average maintains a running, weighted average
@@ -206,3 +215,5 @@
     _timer->start();
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_GCUTIL_HPP
--- a/src/share/vm/gc_implementation/shared/generationCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/generationCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_generationCounters.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "memory/resourceArea.hpp"
 
 
 GenerationCounters::GenerationCounters(const char* name,
--- a/src/share/vm/gc_implementation/shared/generationCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/generationCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GENERATIONCOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_GENERATIONCOUNTERS_HPP
+
+#include "runtime/perfData.hpp"
+#include "runtime/virtualspace.hpp"
+
 // A GenerationCounter is a holder class for performance counters
 // that track a generation
 
@@ -60,3 +66,5 @@
 
   const char* name_space() const        { return _name_space; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_GENERATIONCOUNTERS_HPP
--- a/src/share/vm/gc_implementation/shared/immutableSpace.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/immutableSpace.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_immutableSpace.cpp.incl"
+#include "precompiled.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/shared/immutableSpace.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#endif
 
 void ImmutableSpace::initialize(MemRegion mr) {
   HeapWord* bottom = mr.start();
--- a/src/share/vm/gc_implementation/shared/immutableSpace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/immutableSpace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP
+
+#include "memory/iterator.hpp"
+
 // An ImmutableSpace is a viewport into a contiguous range
 // (or subrange) of previously allocated objects.
 
@@ -62,3 +67,5 @@
   virtual void print_short() const      PRODUCT_RETURN;
   virtual void verify(bool allow_dirty);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP
--- a/src/share/vm/gc_implementation/shared/isGCActiveMark.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/isGCActiveMark.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_ISGCACTIVEMARK_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_ISGCACTIVEMARK_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#endif
+
 // This class provides a method for block structured setting of the
 // _is_gc_active state without requiring accessors in CollectedHeap
 
@@ -39,3 +46,5 @@
     heap->_is_gc_active = false;
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_ISGCACTIVEMARK_HPP
--- a/src/share/vm/gc_implementation/shared/liveRange.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/liveRange.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_LIVERANGE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_LIVERANGE_HPP
+
+#include "memory/memRegion.hpp"
+#include "utilities/copy.hpp"
+
 // This is a shared helper class used during phase 3 and 4 to move all the objects
 // Dead regions in a Space are linked together to keep track of the live regions
 // so that the live data can be traversed quickly without having to look at each
@@ -46,3 +52,5 @@
     Copy::aligned_conjoint_words(start(), destination, word_size());
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_LIVERANGE_HPP
--- a/src/share/vm/gc_implementation/shared/markSweep.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/markSweep.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_markSweep.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.inline.hpp"
+#include "oops/oop.inline.hpp"
 
 Stack<oop>              MarkSweep::_marking_stack;
 Stack<DataLayout*>      MarkSweep::_revisit_mdo_stack;
--- a/src/share/vm/gc_implementation/shared/markSweep.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/markSweep.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_MARKSWEEP_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_MARKSWEEP_HPP
+
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/universe.hpp"
+#include "oops/markOop.hpp"
+#include "oops/oop.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/stack.hpp"
+#include "utilities/taskqueue.hpp"
+
 class ReferenceProcessor;
 class DataLayout;
 
@@ -248,3 +260,5 @@
     _obj->set_mark(_mark);
   }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_MARKSWEEP_HPP
--- a/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_MARKSWEEP_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_MARKSWEEP_INLINE_HPP
+
+#include "gc_implementation/shared/markSweep.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "utilities/stack.inline.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#endif
+
 inline void MarkSweep::mark_object(oop obj) {
   // some marks may contain information we need to preserve so we store them away
   // and overwrite the mark.  We'll restore it at the end of markSweep.
@@ -115,3 +125,5 @@
 #endif
   mark_and_push(p);
 }
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_MARKSWEEP_INLINE_HPP
--- a/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -23,8 +23,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_mutableNUMASpace.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/mutableNUMASpace.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/sharedHeap.hpp"
+#include "oops/oop.inline.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 MutableNUMASpace::MutableNUMASpace(size_t alignment) : MutableSpace(alignment) {
--- a/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLENUMASPACE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLENUMASPACE_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#endif
+
 /*
  *    The NUMA-aware allocator (MutableNUMASpace) is basically a modification
  * of MutableSpace which preserves interfaces but implements different
@@ -221,3 +229,5 @@
 
   virtual void set_top(HeapWord* value);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLENUMASPACE_HPP
--- a/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_mutableSpace.cpp.incl"
+#include "precompiled.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/thread.hpp"
+#endif
 
 MutableSpace::MutableSpace(size_t alignment): ImmutableSpace(), _top(NULL), _alignment(alignment) {
   assert(MutableSpace::alignment() >= 0 &&
--- a/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLESPACE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLESPACE_HPP
+
+#include "gc_implementation/shared/immutableSpace.hpp"
+#include "memory/memRegion.hpp"
+#include "utilities/copy.hpp"
+
 // A MutableSpace is a subtype of ImmutableSpace that supports the
 // concept of allocation. This includes the concepts that a space may
 // be only partially full, and the querry methods that go with such
@@ -136,3 +143,5 @@
   virtual void print_short_on(outputStream* st) const;
   virtual void verify(bool allow_dirty);
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLESPACE_HPP
--- a/src/share/vm/gc_implementation/shared/spaceCounters.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/spaceCounters.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_spaceCounters.cpp.incl"
+#include "precompiled.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/shared/spaceCounters.hpp"
+#include "memory/resourceArea.hpp"
+#endif
 
 SpaceCounters::SpaceCounters(const char* name, int ordinal, size_t max_size,
                              MutableSpace* m, GenerationCounters* gc) :
--- a/src/share/vm/gc_implementation/shared/spaceCounters.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/spaceCounters.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_SPACECOUNTERS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_SPACECOUNTERS_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "gc_implementation/shared/immutableSpace.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "runtime/perfData.hpp"
+#endif
+
 // A SpaceCounter is a holder class for performance counters
 // that track a space;
 
@@ -75,3 +85,5 @@
       return _m->used_in_bytes();
     }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_SPACECOUNTERS_HPP
--- a/src/share/vm/gc_implementation/shared/spaceDecorator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/spaceDecorator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_spaceDecorator.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/space.inline.hpp"
+#include "utilities/copy.hpp"
 
 // Catch-all file for utility classes
 
--- a/src/share/vm/gc_implementation/shared/spaceDecorator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/spaceDecorator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_SPACEDECORATOR_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_SPACEDECORATOR_HPP
+
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "memory/space.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 class SpaceDecorator: public AllStatic {
  public:
   // Initialization flags.
@@ -139,3 +146,5 @@
  public:
   MutableSpaceMangler(MutableSpace* sp) : SpaceMangler(), _sp(sp) {}
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_SPACEDECORATOR_HPP
--- a/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -21,9 +21,25 @@
  * questions.
  *
  */
-# include "incls/_precompiled.incl"
-# include "incls/_vmGCOperations.cpp.incl"
 
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/preserveException.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#endif
 HS_DTRACE_PROBE_DECL1(hotspot, gc__begin, bool);
 HS_DTRACE_PROBE_DECL(hotspot, gc__end);
 
--- a/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_VMGCOPERATIONS_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_SHARED_VMGCOPERATIONS_HPP
+
+#include "memory/heapInspection.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vm_operations.hpp"
+
 // The following class hierarchy represents
 // a set of operations (VM_Operation) related to GC.
 //
@@ -199,3 +208,5 @@
   virtual void doit();
   HeapWord* result() const       { return _res; }
 };
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_VMGCOPERATIONS_HPP
--- a/src/share/vm/gc_interface/collectedHeap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_interface/collectedHeap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,23 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_collectedHeap.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/init.hpp"
+#include "services/heapDumper.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 #ifdef ASSERT
--- a/src/share/vm/gc_interface/collectedHeap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_interface/collectedHeap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_GC_INTERFACE_COLLECTEDHEAP_HPP
+#define SHARE_VM_GC_INTERFACE_COLLECTEDHEAP_HPP
+
+#include "gc_interface/gcCause.hpp"
+#include "memory/allocation.hpp"
+#include "memory/barrierSet.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/perfData.hpp"
+#include "runtime/safepoint.hpp"
+
 // A "CollectedHeap" is an implementation of a java heap for HotSpot.  This
 // is an abstract class: there may be many different kinds of heaps.  This
 // class defines the functions that a heap must implement, and contains
@@ -644,3 +654,5 @@
     _heap->set_gc_cause(_previous_cause);
   }
 };
+
+#endif // SHARE_VM_GC_INTERFACE_COLLECTEDHEAP_HPP
--- a/src/share/vm/gc_interface/collectedHeap.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_interface/collectedHeap.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,28 @@
  *
  */
 
+#ifndef SHARE_VM_GC_INTERFACE_COLLECTEDHEAP_INLINE_HPP
+#define SHARE_VM_GC_INTERFACE_COLLECTEDHEAP_INLINE_HPP
+
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/threadLocalAllocBuffer.inline.hpp"
+#include "memory/universe.hpp"
+#include "oops/arrayOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/thread.hpp"
+#include "services/lowMemoryDetector.hpp"
+#include "utilities/copy.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // Inline allocation implementations.
 
 void CollectedHeap::post_allocation_setup_common(KlassHandle klass,
@@ -368,3 +390,5 @@
   reset_promotion_should_fail(&_promotion_failure_alot_count);
 }
 #endif  // #ifndef PRODUCT
+
+#endif // SHARE_VM_GC_INTERFACE_COLLECTEDHEAP_INLINE_HPP
--- a/src/share/vm/gc_interface/gcCause.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_interface/gcCause.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,8 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_gcCause.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/gcCause.hpp"
 
 const char* GCCause::to_string(GCCause::Cause cause) {
   switch (cause) {
--- a/src/share/vm/gc_interface/gcCause.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/gc_interface/gcCause.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_GC_INTERFACE_GCCAUSE_HPP
+#define SHARE_VM_GC_INTERFACE_GCCAUSE_HPP
+
+#include "memory/allocation.hpp"
+
 //
 // This class exposes implementation details of the various
 // collector(s), and we need to be very careful with it. If
@@ -83,3 +88,5 @@
   // Return true if the GCCause is for a full collection.
   static bool is_for_full_collection(GCCause::Cause cause) PRODUCT_RETURN0;
 };
+
+#endif // SHARE_VM_GC_INTERFACE_GCCAUSE_HPP
--- a/src/share/vm/includeDB_compiler1	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +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.
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-allocation.hpp                          c1_globals.hpp
-
-c1_CFGPrinter.cpp                       c1_CFGPrinter.hpp
-c1_CFGPrinter.cpp                       c1_IR.hpp
-c1_CFGPrinter.cpp                       c1_InstructionPrinter.hpp
-c1_CFGPrinter.cpp                       c1_LIR.hpp
-c1_CFGPrinter.cpp                       c1_LinearScan.hpp
-c1_CFGPrinter.cpp                       c1_ValueStack.hpp
-
-c1_CFGPrinter.hpp                       c1_Compilation.hpp
-c1_CFGPrinter.hpp                       c1_Instruction.hpp
-
-cardTableModRefBS.cpp			c1_LIR.hpp
-cardTableModRefBS.cpp			c1_LIRGenerator.hpp
-
-c1_Canonicalizer.cpp                    c1_Canonicalizer.hpp
-c1_Canonicalizer.cpp                    c1_InstructionPrinter.hpp
-c1_Canonicalizer.cpp                    ciArray.hpp
-c1_Canonicalizer.cpp                    sharedRuntime.hpp
-
-c1_Canonicalizer.hpp                    c1_Instruction.hpp
-
-c1_CodeStubs.hpp                        array.hpp
-c1_CodeStubs.hpp                        c1_FrameMap.hpp
-c1_CodeStubs.hpp                        c1_IR.hpp
-c1_CodeStubs.hpp                        c1_Instruction.hpp
-c1_CodeStubs.hpp                        c1_LIR.hpp
-c1_CodeStubs.hpp                        c1_Runtime1.hpp
-
-c1_CodeStubs_<arch>.cpp                 c1_CodeStubs.hpp
-c1_CodeStubs_<arch>.cpp                 c1_FrameMap.hpp
-c1_CodeStubs_<arch>.cpp                 c1_LIRAssembler.hpp
-c1_CodeStubs_<arch>.cpp                 c1_MacroAssembler.hpp
-c1_CodeStubs_<arch>.cpp                 c1_Runtime1.hpp
-c1_CodeStubs_<arch>.cpp                 g1SATBCardTableModRefBS.hpp
-c1_CodeStubs_<arch>.cpp                 nativeInst_<arch>.hpp
-c1_CodeStubs_<arch>.cpp                 sharedRuntime.hpp
-c1_CodeStubs_<arch>.cpp                 vmreg_<arch>.inline.hpp
-
-c1_Compilation.cpp                      c1_CFGPrinter.hpp
-c1_Compilation.cpp                      c1_Compilation.hpp
-c1_Compilation.cpp                      c1_IR.hpp
-c1_Compilation.cpp                      c1_LIRAssembler.hpp
-c1_Compilation.cpp                      c1_LinearScan.hpp
-c1_Compilation.cpp                      c1_MacroAssembler.hpp
-c1_Compilation.cpp                      c1_ValueMap.hpp
-c1_Compilation.cpp                      c1_ValueStack.hpp
-c1_Compilation.cpp                      debugInfoRec.hpp
-c1_Compilation.hpp                      ciEnv.hpp
-c1_Compilation.hpp                      exceptionHandlerTable.hpp
-c1_Compilation.hpp                      resourceArea.hpp
-
-c1_Compiler.cpp                         allocation.hpp
-c1_Compiler.cpp                         allocation.inline.hpp
-c1_Compiler.cpp                         arguments.hpp
-c1_Compiler.cpp                         c1_Compilation.hpp
-c1_Compiler.cpp                         c1_Compiler.hpp
-c1_Compiler.cpp                         c1_FrameMap.hpp
-c1_Compiler.cpp                         c1_GraphBuilder.hpp
-c1_Compiler.cpp                         c1_LinearScan.hpp
-c1_Compiler.cpp                         c1_MacroAssembler.hpp
-c1_Compiler.cpp                         c1_Runtime1.hpp
-c1_Compiler.cpp                         c1_ValueType.hpp
-c1_Compiler.cpp                         compileBroker.hpp
-c1_Compiler.cpp                         compilerOracle.hpp
-c1_Compiler.cpp                         interfaceSupport.hpp
-c1_Compiler.cpp                         linkResolver.hpp
-c1_Compiler.cpp                         nativeLookup.hpp
-c1_Compiler.cpp                         resourceArea.hpp
-c1_Compiler.cpp                         sharedRuntime.hpp
-
-c1_Compiler.hpp                         abstractCompiler.hpp
-
-c1_Defs.cpp                             c1_Defs.hpp
-
-c1_Defs.hpp                             globalDefinitions.hpp
-c1_Defs.hpp                             register_<arch>.hpp
-
-c1_Defs_<arch>.hpp                      generate_platform_dependent_include
-
-c1_FpuStackSim.hpp                      allocation.hpp
-c1_FpuStackSim.hpp                      c1_FrameMap.hpp
-
-c1_FpuStackSim_<arch>.cpp               array.hpp
-c1_FpuStackSim_<arch>.cpp               c1_FpuStackSim.hpp
-c1_FpuStackSim_<arch>.cpp               c1_FrameMap.hpp
-c1_FpuStackSim_<arch>.cpp               ostream.hpp
-
-c1_FpuStackSim_<arch>.hpp               generate_platform_dependent_include
-
-c1_FrameMap.cpp                         c1_FrameMap.hpp
-c1_FrameMap.cpp                         c1_LIR.hpp
-c1_FrameMap.cpp                         sharedRuntime.hpp
-c1_FrameMap.cpp                         vmreg_<arch>.inline.hpp
-
-c1_FrameMap.hpp                         allocation.hpp
-c1_FrameMap.hpp                         assembler.hpp
-c1_FrameMap.hpp                         c1_Defs.hpp
-c1_FrameMap.hpp                         c1_LIR.hpp
-c1_FrameMap.hpp                         frame.hpp
-c1_FrameMap.hpp                         globalDefinitions.hpp
-c1_FrameMap.hpp                         synchronizer.hpp
-c1_FrameMap.hpp                         vmreg.hpp
-
-c1_FrameMap_<arch>.cpp                  c1_FrameMap.hpp
-c1_FrameMap_<arch>.cpp                  c1_LIR.hpp
-c1_FrameMap_<arch>.cpp                  sharedRuntime.hpp
-c1_FrameMap_<arch>.cpp                  vmreg_<arch>.inline.hpp
-
-c1_FrameMap_<arch>.hpp                  generate_platform_dependent_include
-
-c1_globals.cpp                          c1_globals.hpp
-
-c1_globals.hpp                          c1_globals_<arch>.hpp
-c1_globals.hpp                          c1_globals_<os_family>.hpp
-c1_globals.hpp                          globals.hpp
-
-c1_globals_<arch>.hpp                   globalDefinitions.hpp
-c1_globals_<arch>.hpp                   macros.hpp
-
-c1_globals_<os_family>.hpp              globalDefinitions.hpp
-c1_globals_<os_family>.hpp              macros.hpp
-
-c1_GraphBuilder.cpp                     bitMap.inline.hpp
-c1_GraphBuilder.cpp                     bytecode.hpp
-c1_GraphBuilder.cpp                     c1_CFGPrinter.hpp
-c1_GraphBuilder.cpp                     c1_Canonicalizer.hpp
-c1_GraphBuilder.cpp                     c1_Compilation.hpp
-c1_GraphBuilder.cpp                     c1_GraphBuilder.hpp
-c1_GraphBuilder.cpp                     c1_InstructionPrinter.hpp
-c1_GraphBuilder.cpp                     ciField.hpp
-c1_GraphBuilder.cpp                     ciKlass.hpp
-c1_GraphBuilder.cpp                     sharedRuntime.hpp
-
-c1_GraphBuilder.hpp                     c1_IR.hpp
-c1_GraphBuilder.hpp                     c1_Instruction.hpp
-c1_GraphBuilder.hpp                     c1_ValueMap.hpp
-c1_GraphBuilder.hpp                     c1_ValueStack.hpp
-c1_GraphBuilder.hpp                     ciMethodData.hpp
-c1_GraphBuilder.hpp                     ciStreams.hpp
-
-c1_IR.cpp                               bitMap.inline.hpp
-c1_IR.cpp                               c1_Compilation.hpp
-c1_IR.cpp                               c1_FrameMap.hpp
-c1_IR.cpp                               c1_GraphBuilder.hpp
-c1_IR.cpp                               c1_IR.hpp
-c1_IR.cpp                               c1_InstructionPrinter.hpp
-c1_IR.cpp                               c1_Optimizer.hpp
-
-c1_IR.hpp                               allocation.hpp
-c1_IR.hpp                               c1_Instruction.hpp
-c1_IR.hpp                               ciExceptionHandler.hpp
-c1_IR.hpp                               ciMethod.hpp
-c1_IR.hpp                               ciStreams.hpp
-
-c1_Instruction.cpp                      c1_IR.hpp
-c1_Instruction.cpp                      c1_Instruction.hpp
-c1_Instruction.cpp                      c1_InstructionPrinter.hpp
-c1_Instruction.cpp                      c1_ValueStack.hpp
-c1_Instruction.cpp                      ciObjArrayKlass.hpp
-c1_Instruction.cpp                      ciTypeArrayKlass.hpp
-
-c1_Instruction.hpp                      c1_Compilation.hpp
-c1_Instruction.hpp                      c1_LIR.hpp
-c1_Instruction.hpp                      c1_ValueType.hpp
-c1_Instruction.hpp                      ciField.hpp
-
-c1_InstructionPrinter.cpp               c1_InstructionPrinter.hpp
-c1_InstructionPrinter.cpp               c1_ValueStack.hpp
-c1_InstructionPrinter.cpp               ciArray.hpp
-c1_InstructionPrinter.cpp               ciInstance.hpp
-c1_InstructionPrinter.cpp               ciObject.hpp
-
-c1_InstructionPrinter.hpp               c1_IR.hpp
-c1_InstructionPrinter.hpp               c1_Instruction.hpp
-c1_InstructionPrinter.hpp               c1_Runtime1.hpp
-
-c1_LIR.cpp                              c1_InstructionPrinter.hpp
-c1_LIR.cpp                              c1_LIR.hpp
-c1_LIR.cpp                              c1_LIRAssembler.hpp
-c1_LIR.cpp                              ciInstance.hpp
-c1_LIR.cpp                              sharedRuntime.hpp
-
-c1_LIR.hpp                              c1_ValueType.hpp
-
-c1_LIRAssembler.cpp                     c1_Compilation.hpp
-c1_LIRAssembler.cpp                     c1_Instruction.hpp
-c1_LIRAssembler.cpp                     c1_InstructionPrinter.hpp
-c1_LIRAssembler.cpp                     c1_LIRAssembler.hpp
-c1_LIRAssembler.cpp                     c1_MacroAssembler.hpp
-c1_LIRAssembler.cpp                     c1_ValueStack.hpp
-c1_LIRAssembler.cpp                     ciInstance.hpp
-c1_LIRAssembler.cpp                     nativeInst_<arch>.hpp
-c1_LIRAssembler.cpp                     vmreg_<arch>.inline.hpp
-
-c1_LIRAssembler.hpp                     c1_CodeStubs.hpp
-c1_LIRAssembler.hpp                     ciMethodData.hpp
-c1_LIRAssembler.hpp                     methodDataOop.hpp
-c1_LIRAssembler.hpp                     top.hpp
-
-c1_LIRAssembler_<arch>.cpp              barrierSet.hpp
-c1_LIRAssembler_<arch>.cpp              c1_Compilation.hpp
-c1_LIRAssembler_<arch>.cpp              c1_LIRAssembler.hpp
-c1_LIRAssembler_<arch>.cpp              c1_MacroAssembler.hpp
-c1_LIRAssembler_<arch>.cpp              c1_Runtime1.hpp
-c1_LIRAssembler_<arch>.cpp              c1_ValueStack.hpp
-c1_LIRAssembler_<arch>.cpp              cardTableModRefBS.hpp
-c1_LIRAssembler_<arch>.cpp              ciArrayKlass.hpp
-c1_LIRAssembler_<arch>.cpp              ciInstance.hpp
-c1_LIRAssembler_<arch>.cpp              collectedHeap.hpp
-c1_LIRAssembler_<arch>.cpp              nativeInst_<arch>.hpp
-c1_LIRAssembler_<arch>.cpp              objArrayKlass.hpp
-c1_LIRAssembler_<arch>.cpp              sharedRuntime.hpp
-
-c1_LIRAssembler_<arch>.hpp              generate_platform_dependent_include
-
-c1_LIRGenerator.cpp                     bitMap.inline.hpp
-c1_LIRGenerator.cpp                     c1_Compilation.hpp
-c1_LIRGenerator.cpp                     c1_FrameMap.hpp
-c1_LIRGenerator.cpp                     c1_Instruction.hpp
-c1_LIRGenerator.cpp                     c1_LIRAssembler.hpp
-c1_LIRGenerator.cpp                     c1_LIRGenerator.hpp
-c1_LIRGenerator.cpp                     c1_ValueStack.hpp
-c1_LIRGenerator.cpp                     ciArrayKlass.hpp
-c1_LIRGenerator.cpp                     ciCPCache.hpp
-c1_LIRGenerator.cpp                     ciInstance.hpp
-c1_LIRGenerator.cpp                     heapRegion.hpp
-c1_LIRGenerator.cpp                     sharedRuntime.hpp
-c1_LIRGenerator.cpp                     stubRoutines.hpp
-
-c1_LIRGenerator.hpp                     c1_Instruction.hpp
-c1_LIRGenerator.hpp                     c1_LIR.hpp
-c1_LIRGenerator.hpp                     ciMethodData.hpp
-c1_LIRGenerator.hpp                     sizes.hpp
-
-c1_LIRGenerator_<arch>.cpp             c1_Compilation.hpp
-c1_LIRGenerator_<arch>.cpp             c1_FrameMap.hpp
-c1_LIRGenerator_<arch>.cpp             c1_Instruction.hpp
-c1_LIRGenerator_<arch>.cpp             c1_LIRAssembler.hpp
-c1_LIRGenerator_<arch>.cpp             c1_LIRGenerator.hpp
-c1_LIRGenerator_<arch>.cpp             c1_Runtime1.hpp
-c1_LIRGenerator_<arch>.cpp             c1_ValueStack.hpp
-c1_LIRGenerator_<arch>.cpp             ciArray.hpp
-c1_LIRGenerator_<arch>.cpp             ciObjArrayKlass.hpp
-c1_LIRGenerator_<arch>.cpp             ciTypeArrayKlass.hpp
-c1_LIRGenerator_<arch>.cpp             sharedRuntime.hpp
-c1_LIRGenerator_<arch>.cpp             vmreg_<arch>.inline.hpp
-c1_LIRGenerator_<arch>.cpp             stubRoutines.hpp
-
-
-c1_LinearScan.cpp                       bitMap.inline.hpp
-c1_LinearScan.cpp                       c1_CFGPrinter.hpp
-c1_LinearScan.cpp                       c1_CodeStubs.hpp
-c1_LinearScan.cpp                       c1_Compilation.hpp
-c1_LinearScan.cpp                       c1_FrameMap.hpp
-c1_LinearScan.cpp                       c1_IR.hpp
-c1_LinearScan.cpp                       c1_LIRGenerator.hpp
-c1_LinearScan.cpp                       c1_LinearScan.hpp
-c1_LinearScan.cpp                       c1_ValueStack.hpp
-c1_LinearScan.cpp                       vmreg_<arch>.inline.hpp
-
-c1_LinearScan.hpp                       c1_FpuStackSim.hpp
-c1_LinearScan.hpp                       c1_FrameMap.hpp
-c1_LinearScan.hpp                       c1_IR.hpp
-c1_LinearScan.hpp                       c1_Instruction.hpp
-c1_LinearScan.hpp                       c1_LIR.hpp
-c1_LinearScan.hpp                       c1_LIRGenerator.hpp
-
-c1_LinearScan_<arch>.cpp                bitMap.inline.hpp
-c1_LinearScan_<arch>.cpp                c1_Instruction.hpp
-c1_LinearScan_<arch>.cpp                c1_LinearScan.hpp
-
-c1_LinearScan_<arch>.hpp                generate_platform_dependent_include
-
-c1_MacroAssembler.hpp                   assembler.hpp
-c1_MacroAssembler.hpp                   assembler_<arch>.inline.hpp
-
-c1_MacroAssembler_<arch>.cpp            arrayOop.hpp
-c1_MacroAssembler_<arch>.cpp            biasedLocking.hpp
-c1_MacroAssembler_<arch>.cpp            c1_MacroAssembler.hpp
-c1_MacroAssembler_<arch>.cpp            c1_Runtime1.hpp
-c1_MacroAssembler_<arch>.cpp            collectedHeap.hpp
-c1_MacroAssembler_<arch>.cpp            interpreter.hpp
-c1_MacroAssembler_<arch>.cpp            markOop.hpp
-c1_MacroAssembler_<arch>.cpp            os.hpp
-c1_MacroAssembler_<arch>.cpp            stubRoutines.hpp
-c1_MacroAssembler_<arch>.cpp            synchronizer.hpp
-c1_MacroAssembler_<arch>.cpp            systemDictionary.hpp
-
-c1_MacroAssembler_<arch>.hpp            generate_platform_dependent_include
-
-c1_Optimizer.cpp                        bitMap.inline.hpp
-c1_Optimizer.cpp                        c1_Canonicalizer.hpp
-c1_Optimizer.cpp                        c1_Optimizer.hpp
-c1_Optimizer.cpp                        c1_ValueMap.hpp
-c1_Optimizer.cpp                        c1_ValueSet.hpp
-c1_Optimizer.cpp                        c1_ValueStack.hpp
-
-c1_Optimizer.hpp                        allocation.hpp
-c1_Optimizer.hpp                        c1_IR.hpp
-c1_Optimizer.hpp                        c1_Instruction.hpp
-
-c1_Runtime1.cpp                         allocation.inline.hpp
-c1_Runtime1.cpp                         barrierSet.hpp
-c1_Runtime1.cpp                         biasedLocking.hpp
-c1_Runtime1.cpp                         bytecode.hpp
-c1_Runtime1.cpp                         c1_CodeStubs.hpp
-c1_Runtime1.cpp                         c1_Defs.hpp
-c1_Runtime1.cpp                         c1_FrameMap.hpp
-c1_Runtime1.cpp                         c1_LIRAssembler.hpp
-c1_Runtime1.cpp                         c1_MacroAssembler.hpp
-c1_Runtime1.cpp                         c1_Runtime1.hpp
-c1_Runtime1.cpp                         codeBlob.hpp
-c1_Runtime1.cpp                         codeBuffer.hpp
-c1_Runtime1.cpp                         collectedHeap.hpp
-c1_Runtime1.cpp                         compilationPolicy.hpp
-c1_Runtime1.cpp                         compiledIC.hpp
-c1_Runtime1.cpp                         copy.hpp
-c1_Runtime1.cpp                         disassembler.hpp
-c1_Runtime1.cpp                         events.hpp
-c1_Runtime1.cpp                         interfaceSupport.hpp
-c1_Runtime1.cpp                         interpreter.hpp
-c1_Runtime1.cpp                         javaCalls.hpp
-c1_Runtime1.cpp                         objArrayKlass.hpp
-c1_Runtime1.cpp                         oop.inline.hpp
-c1_Runtime1.cpp                         oopFactory.hpp
-c1_Runtime1.cpp                         pcDesc.hpp
-c1_Runtime1.cpp                         resourceArea.hpp
-c1_Runtime1.cpp                         scopeDesc.hpp
-c1_Runtime1.cpp                         sharedRuntime.hpp
-c1_Runtime1.cpp                         systemDictionary.hpp
-c1_Runtime1.cpp                         threadCritical.hpp
-c1_Runtime1.cpp                         vframe.hpp
-c1_Runtime1.cpp                         vframeArray.hpp
-c1_Runtime1.cpp                         vmSymbols.hpp
-c1_Runtime1.cpp                         vtableStubs.hpp
-
-c1_Runtime1.hpp                         allocation.hpp
-c1_Runtime1.hpp                         c1_FrameMap.hpp
-c1_Runtime1.hpp                         deoptimization.hpp
-c1_Runtime1.hpp                         interpreter.hpp
-c1_Runtime1.hpp                         stubs.hpp
-
-c1_Runtime1_<arch>.cpp                  c1_Defs.hpp
-c1_Runtime1_<arch>.cpp                  c1_MacroAssembler.hpp
-c1_Runtime1_<arch>.cpp                  c1_Runtime1.hpp
-c1_Runtime1_<arch>.cpp                  compiledICHolderOop.hpp
-c1_Runtime1_<arch>.cpp                  interpreter.hpp
-c1_Runtime1_<arch>.cpp                  jvmtiExport.hpp
-c1_Runtime1_<arch>.cpp                  nativeInst_<arch>.hpp
-c1_Runtime1_<arch>.cpp                  oop.inline.hpp
-c1_Runtime1_<arch>.cpp                  register_<arch>.hpp
-c1_Runtime1_<arch>.cpp                  sharedRuntime.hpp
-c1_Runtime1_<arch>.cpp                  signature.hpp
-c1_Runtime1_<arch>.cpp                  vframeArray.hpp
-c1_Runtime1_<arch>.cpp                  vmreg_<arch>.inline.hpp
-
-c1_ValueMap.cpp                         bitMap.inline.hpp
-c1_ValueMap.cpp                         c1_Canonicalizer.hpp
-c1_ValueMap.cpp                         c1_IR.hpp
-c1_ValueMap.cpp                         c1_ValueMap.hpp
-
-c1_ValueMap.hpp                         allocation.hpp
-c1_ValueMap.hpp                         c1_Instruction.hpp
-c1_ValueMap.hpp                         c1_ValueSet.hpp
-
-c1_ValueSet.cpp                         c1_ValueSet.hpp
-
-c1_ValueSet.hpp                         allocation.hpp
-c1_ValueSet.hpp                         bitMap.inline.hpp
-c1_ValueSet.hpp                         c1_Instruction.hpp
-
-c1_ValueStack.cpp                       c1_IR.hpp
-c1_ValueStack.cpp                       c1_InstructionPrinter.hpp
-c1_ValueStack.cpp                       c1_ValueStack.hpp
-
-c1_ValueStack.hpp                       c1_Instruction.hpp
-c1_ValueType.cpp                        c1_ValueType.hpp
-c1_ValueType.cpp                        ciArray.hpp
-c1_ValueType.cpp                        ciInstance.hpp
-c1_ValueType.cpp                        ciNullObject.hpp
-
-c1_ValueType.hpp                        c1_Compilation.hpp
-c1_ValueType.hpp                        ciConstant.hpp
-
-ciEnv.cpp                               c1_Runtime1.hpp
-
-codeBlob.cpp                            c1_Runtime1.hpp
-
-compileBroker.cpp                       c1_Compiler.hpp
-
-frame_<arch>.cpp                        c1_Runtime1.hpp
-frame_<arch>.cpp                        vframeArray.hpp
-
-globals.cpp                             c1_globals.hpp
-
-globals.hpp                             c1_globals_<arch>.hpp
-globals.hpp                             c1_globals_<os_family>.hpp
-
-instanceKlass.cpp                       c1_Compiler.hpp
-
-interpreter_<arch_model>.cpp            c1_Runtime1.hpp
-
-java.cpp                                c1_Compiler.hpp
-java.cpp                                c1_Runtime1.hpp
-
-nativeInst_<arch>.cpp                   c1_Runtime1.hpp
-
-oopMap.cpp                              c1_Defs.hpp
-
-os_<os_family>.cpp                      c1_Runtime1.hpp
-
-os_<os_arch>.cpp                        c1_Runtime1.hpp
-
-safepoint.cpp                           c1_globals.hpp
-
-sharedRuntime.cpp                       c1_Runtime1.hpp
-
-sharedRuntime_<arch_model>.cpp          c1_Runtime1.hpp
-
-thread.cpp                              c1_Compiler.hpp
-
-top.hpp                                 c1_globals.hpp
-
-vmStructs.hpp                           c1_Runtime1.hpp
-
-c1_Canonicalizer.cpp                    c1_ValueStack.hpp
-
-c1_LIR.cpp                              c1_ValueStack.hpp
--- a/src/share/vm/includeDB_compiler2	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1164 +0,0 @@
-//
-// Copyright (c) 2000, 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.
-//
-//
-
-ad_<arch_model>.cpp                     adGlobals_<arch_model>.hpp
-ad_<arch_model>.cpp                     ad_<arch_model>.hpp
-ad_<arch_model>.cpp                     allocation.inline.hpp
-ad_<arch_model>.cpp                     assembler.hpp
-ad_<arch_model>.cpp                     assembler_<arch>.inline.hpp
-ad_<arch_model>.cpp                     biasedLocking.hpp
-ad_<arch_model>.cpp                     cfgnode.hpp
-ad_<arch_model>.cpp                     collectedHeap.inline.hpp
-ad_<arch_model>.cpp                     compiledICHolderOop.hpp
-ad_<arch_model>.cpp                     growableArray.hpp
-ad_<arch_model>.cpp                     locknode.hpp
-ad_<arch_model>.cpp                     markOop.hpp
-ad_<arch_model>.cpp                     methodOop.hpp
-ad_<arch_model>.cpp                     nativeInst_<arch>.hpp
-ad_<arch_model>.cpp                     oop.inline.hpp
-ad_<arch_model>.cpp                     oop.inline2.hpp
-ad_<arch_model>.cpp                     opcodes.hpp
-ad_<arch_model>.cpp                     regalloc.hpp
-ad_<arch_model>.cpp                     regmask.hpp
-ad_<arch_model>.cpp                     runtime.hpp
-ad_<arch_model>.cpp                     sharedRuntime.hpp
-ad_<arch_model>.cpp                     stubRoutines.hpp
-ad_<arch_model>.cpp                     vmreg.hpp
-ad_<arch_model>.cpp                     vmreg_<arch>.inline.hpp
-
-ad_<arch_model>.hpp                     addnode.hpp
-ad_<arch_model>.hpp                     machnode.hpp
-ad_<arch_model>.hpp                     matcher.hpp
-ad_<arch_model>.hpp                     opcodes.hpp
-ad_<arch_model>.hpp                     regalloc.hpp
-ad_<arch_model>.hpp                     resourceArea.hpp
-ad_<arch_model>.hpp                     subnode.hpp
-ad_<arch_model>.hpp                     vectornode.hpp
-
-ad_<arch_model>_clone.cpp               ad_<arch_model>.hpp
-
-ad_<arch_model>_expand.cpp              ad_<arch_model>.hpp
-
-ad_<arch_model>_format.cpp              ad_<arch_model>.hpp
-
-ad_<arch_model>_gen.cpp                 ad_<arch_model>.hpp
-ad_<arch_model>_gen.cpp                 cfgnode.hpp
-ad_<arch_model>_gen.cpp                 locknode.hpp
-
-ad_<arch_model>_misc.cpp                ad_<arch_model>.hpp
-
-ad_<arch_model>_peephole.cpp            ad_<arch_model>.hpp
-
-ad_<arch_model>_pipeline.cpp            ad_<arch_model>.hpp
-
-addnode.cpp                             addnode.hpp
-addnode.cpp                             allocation.inline.hpp
-addnode.cpp                             cfgnode.hpp
-addnode.cpp                             connode.hpp
-addnode.cpp                             machnode.hpp
-addnode.cpp                             mulnode.hpp
-addnode.cpp                             phaseX.hpp
-addnode.cpp                             subnode.hpp
-
-addnode.hpp                             node.hpp
-addnode.hpp                             opcodes.hpp
-addnode.hpp                             type.hpp
-
-adlcVMDeps.hpp                          allocation.hpp
-
-allocation.hpp                          c2_globals.hpp
-
-bcEscapeAnalyzer.cpp                    bcEscapeAnalyzer.hpp
-bcEscapeAnalyzer.cpp                    bitMap.inline.hpp
-bcEscapeAnalyzer.cpp                    bytecode.hpp
-bcEscapeAnalyzer.cpp                    ciConstant.hpp
-bcEscapeAnalyzer.cpp                    ciField.hpp
-bcEscapeAnalyzer.cpp                    ciMethodBlocks.hpp
-bcEscapeAnalyzer.cpp                    ciStreams.hpp
-
-bcEscapeAnalyzer.hpp                    allocation.hpp
-bcEscapeAnalyzer.hpp                    ciMethod.hpp
-bcEscapeAnalyzer.hpp                    ciMethodData.hpp
-bcEscapeAnalyzer.hpp                    dependencies.hpp
-bcEscapeAnalyzer.hpp                    growableArray.hpp
-bcEscapeAnalyzer.hpp                    vectset.hpp
-
-block.cpp                               allocation.inline.hpp
-block.cpp                               block.hpp
-block.cpp                               cfgnode.hpp
-block.cpp                               chaitin.hpp
-block.cpp                               copy.hpp
-block.cpp                               loopnode.hpp
-block.cpp                               machnode.hpp
-block.cpp                               matcher.hpp
-block.cpp                               opcodes.hpp
-block.cpp                               rootnode.hpp
-block.cpp                               vectset.hpp
-
-block.hpp                               multnode.hpp
-block.hpp                               node.hpp
-block.hpp                               phase.hpp
-
-buildOopMap.cpp                         addnode.hpp
-buildOopMap.cpp                         callnode.hpp
-buildOopMap.cpp                         compile.hpp
-buildOopMap.cpp                         machnode.hpp
-buildOopMap.cpp                         matcher.hpp
-buildOopMap.cpp                         oopMap.hpp
-buildOopMap.cpp                         phase.hpp
-buildOopMap.cpp                         regalloc.hpp
-buildOopMap.cpp                         rootnode.hpp
-buildOopMap.cpp                         vmreg_<arch>.inline.hpp
-
-bytecodeInfo.cpp                        callGenerator.hpp
-bytecodeInfo.cpp                        compileLog.hpp
-bytecodeInfo.cpp                        handles.inline.hpp
-bytecodeInfo.cpp                        linkResolver.hpp
-bytecodeInfo.cpp                        objArrayKlass.hpp
-bytecodeInfo.cpp                        parse.hpp
-bytecodeInfo.cpp                        systemDictionary.hpp
-bytecodeInfo.cpp                        vmSymbols.hpp
-
-bytecodeInterpreter.hpp                 methodDataOop.hpp
-
-c2_globals.cpp                          c2_globals.hpp
-
-c2_globals.hpp                          c2_globals_<arch>.hpp
-c2_globals.hpp                          c2_globals_<os_family>.hpp
-c2_globals.hpp                          globals.hpp
-
-c2_globals_<arch>.hpp                   globalDefinitions.hpp
-c2_globals_<arch>.hpp                   macros.hpp
-
-c2_globals_<os_family>.hpp              globalDefinitions.hpp
-c2_globals_<os_family>.hpp              macros.hpp
-
-c2_init_<arch>.cpp                      compile.hpp
-c2_init_<arch>.cpp                      node.hpp
-
-c2compiler.cpp                          ad_<arch_model>.hpp
-c2compiler.cpp                          c2compiler.hpp
-c2compiler.cpp                          runtime.hpp
-
-c2compiler.hpp                          abstractCompiler.hpp
-
-callGenerator.cpp                       addnode.hpp
-callGenerator.cpp                       bcEscapeAnalyzer.hpp
-callGenerator.cpp                       callGenerator.hpp
-callGenerator.cpp                       callnode.hpp
-callGenerator.cpp                       cfgnode.hpp
-callGenerator.cpp                       compileLog.hpp
-callGenerator.cpp                       connode.hpp
-callGenerator.cpp                       ciCPCache.hpp
-callGenerator.cpp                       ciMethodHandle.hpp
-callGenerator.cpp                       javaClasses.hpp
-callGenerator.cpp                       parse.hpp
-callGenerator.cpp                       rootnode.hpp
-callGenerator.cpp                       runtime.hpp
-callGenerator.cpp                       subnode.hpp
-
-callGenerator.hpp                       callnode.hpp
-callGenerator.hpp                       compile.hpp
-callGenerator.hpp                       deoptimization.hpp
-callGenerator.hpp                       type.hpp
-
-callnode.cpp                            callnode.hpp
-callnode.cpp                            bcEscapeAnalyzer.hpp
-callnode.cpp                            escape.hpp
-callnode.cpp                            locknode.hpp
-callnode.cpp                            machnode.hpp
-callnode.cpp                            matcher.hpp
-callnode.cpp                            oopMap.hpp
-callnode.cpp                            parse.hpp
-callnode.cpp                            regalloc.hpp
-callnode.cpp                            regmask.hpp
-callnode.cpp                            rootnode.hpp
-callnode.cpp                            runtime.hpp
-
-callnode.hpp                            connode.hpp
-callnode.hpp                            mulnode.hpp
-callnode.hpp                            multnode.hpp
-callnode.hpp                            opcodes.hpp
-callnode.hpp                            phaseX.hpp
-callnode.hpp                            type.hpp
-
-cfgnode.cpp                             addnode.hpp
-cfgnode.cpp                             allocation.inline.hpp
-cfgnode.cpp                             cfgnode.hpp
-cfgnode.cpp                             connode.hpp
-cfgnode.cpp                             loopnode.hpp
-cfgnode.cpp                             machnode.hpp
-cfgnode.cpp                             mulnode.hpp
-cfgnode.cpp                             objArrayKlass.hpp
-cfgnode.cpp                             phaseX.hpp
-cfgnode.cpp                             regmask.hpp
-cfgnode.cpp                             runtime.hpp
-cfgnode.cpp                             subnode.hpp
-cfgnode.cpp                             systemDictionary.hpp
-
-cfgnode.hpp                             multnode.hpp
-cfgnode.hpp                             node.hpp
-cfgnode.hpp                             opcodes.hpp
-cfgnode.hpp                             type.hpp
-
-chaitin.cpp                             addnode.hpp
-chaitin.cpp                             allocation.inline.hpp
-chaitin.cpp                             block.hpp
-chaitin.cpp                             callnode.hpp
-chaitin.cpp                             cfgnode.hpp
-chaitin.cpp                             chaitin.hpp
-chaitin.cpp                             coalesce.hpp
-chaitin.cpp                             compileLog.hpp
-chaitin.cpp                             connode.hpp
-chaitin.cpp                             indexSet.hpp
-chaitin.cpp                             machnode.hpp
-chaitin.cpp                             memnode.hpp
-chaitin.cpp                             oopMap.hpp
-chaitin.cpp                             opcodes.hpp
-chaitin.cpp                             rootnode.hpp
-
-chaitin.hpp                             connode.hpp
-chaitin.hpp                             live.hpp
-chaitin.hpp                             matcher.hpp
-chaitin.hpp                             phase.hpp
-chaitin.hpp                             port.hpp
-chaitin.hpp                             regalloc.hpp
-chaitin.hpp                             regmask.hpp
-chaitin.hpp                             resourceArea.hpp
-chaitin.hpp                             vmreg.hpp
-
-chaitin_<os_family>.cpp                 chaitin.hpp
-chaitin_<os_family>.cpp                 machnode.hpp
-
-ciEnv.cpp                               compileLog.hpp
-ciEnv.cpp                               runtime.hpp
-
-ciMethod.cpp                            bcEscapeAnalyzer.hpp
-ciMethod.cpp                            ciTypeFlow.hpp
-ciMethod.cpp                            methodOop.hpp
-
-ciTypeFlow.cpp                          allocation.inline.hpp
-ciTypeFlow.cpp                          bytecode.hpp
-ciTypeFlow.cpp                          bytecodes.hpp
-ciTypeFlow.cpp                          ciConstant.hpp
-ciTypeFlow.cpp                          ciField.hpp
-ciTypeFlow.cpp                          ciMethod.hpp
-ciTypeFlow.cpp                          ciMethodData.hpp
-ciTypeFlow.cpp                          ciObjArrayKlass.hpp
-ciTypeFlow.cpp                          ciStreams.hpp
-ciTypeFlow.cpp                          ciTypeArrayKlass.hpp
-ciTypeFlow.cpp                          ciTypeFlow.hpp
-ciTypeFlow.cpp                          compileLog.hpp
-ciTypeFlow.cpp                          deoptimization.hpp
-ciTypeFlow.cpp                          growableArray.hpp
-
-ciTypeFlow.hpp                          ciEnv.hpp
-ciTypeFlow.hpp                          ciKlass.hpp
-ciTypeFlow.hpp                          ciMethodBlocks.hpp
-
-classes.cpp                             addnode.hpp
-classes.cpp                             callnode.hpp
-classes.cpp                             cfgnode.hpp
-classes.cpp                             connode.hpp
-classes.cpp                             divnode.hpp
-classes.cpp                             locknode.hpp
-classes.cpp                             loopnode.hpp
-classes.cpp                             machnode.hpp
-classes.cpp                             memnode.hpp
-classes.cpp                             mulnode.hpp
-classes.cpp                             multnode.hpp
-classes.cpp                             node.hpp
-classes.cpp                             rootnode.hpp
-classes.cpp                             subnode.hpp
-classes.cpp                             vectornode.hpp
-
-classes.hpp                             top.hpp
-
-coalesce.cpp                            allocation.inline.hpp
-coalesce.cpp                            block.hpp
-coalesce.cpp                            cfgnode.hpp
-coalesce.cpp                            chaitin.hpp
-coalesce.cpp                            coalesce.hpp
-coalesce.cpp                            connode.hpp
-coalesce.cpp                            indexSet.hpp
-coalesce.cpp                            machnode.hpp
-coalesce.cpp                            matcher.hpp
-coalesce.cpp                            regmask.hpp
-
-coalesce.hpp                            phase.hpp
-
-compile.cpp                             ad_<arch_model>.hpp
-compile.cpp                             addnode.hpp
-compile.cpp                             arguments.hpp
-compile.cpp                             assembler.hpp
-compile.cpp                             block.hpp
-compile.cpp                             c2compiler.hpp
-compile.cpp                             callGenerator.hpp
-compile.cpp                             callnode.hpp
-compile.cpp                             cfgnode.hpp
-compile.cpp                             chaitin.hpp
-compile.cpp                             compile.hpp
-compile.cpp                             compileLog.hpp
-compile.cpp                             connode.hpp
-compile.cpp                             copy.hpp
-compile.cpp                             divnode.hpp
-compile.cpp                             escape.hpp
-compile.cpp                             exceptionHandlerTable.hpp
-compile.cpp                             loopnode.hpp
-compile.cpp                             machnode.hpp
-compile.cpp                             macro.hpp
-compile.cpp                             matcher.hpp
-compile.cpp                             memnode.hpp
-compile.cpp                             mulnode.hpp
-compile.cpp                             nmethod.hpp
-compile.cpp                             node.hpp
-compile.cpp                             oopMap.hpp
-compile.cpp                             opcodes.hpp
-compile.cpp                             output.hpp
-compile.cpp                             parse.hpp
-compile.cpp                             phaseX.hpp
-compile.cpp                             rootnode.hpp
-compile.cpp                             runtime.hpp
-compile.cpp                             signature.hpp
-compile.cpp                             stringopts.hpp
-compile.cpp                             stubRoutines.hpp
-compile.cpp                             systemDictionary.hpp
-compile.cpp                             timer.hpp
-compile.cpp                             type.hpp
-compile.cpp                             vectornode.hpp
-
-compile.hpp                             codeBuffer.hpp
-compile.hpp                             compilerInterface.hpp
-compile.hpp                             compilerOracle.hpp
-compile.hpp                             debugInfoRec.hpp
-compile.hpp                             deoptimization.hpp
-compile.hpp                             dict.hpp
-compile.hpp                             exceptionHandlerTable.hpp
-compile.hpp                             idealGraphPrinter.hpp
-compile.hpp                             phase.hpp
-compile.hpp                             port.hpp
-compile.hpp                             regmask.hpp
-compile.hpp                             resourceArea.hpp
-compile.hpp                             vectset.hpp
-compile.hpp                             vmThread.hpp
-
-compileBroker.cpp                       c2compiler.hpp
-
-connode.cpp                             addnode.hpp
-connode.cpp                             allocation.inline.hpp
-connode.cpp                             compile.hpp
-connode.cpp                             connode.hpp
-connode.cpp                             machnode.hpp
-connode.cpp                             matcher.hpp
-connode.cpp                             memnode.hpp
-connode.cpp                             phaseX.hpp
-connode.cpp                             sharedRuntime.hpp
-connode.cpp                             subnode.hpp
-
-connode.hpp                             node.hpp
-connode.hpp                             opcodes.hpp
-connode.hpp                             type.hpp
-
-deoptimization.cpp                      ad_<arch_model>.hpp
-
-dfa_<arch_model>.cpp                    ad_<arch_model>.hpp
-dfa_<arch_model>.cpp                    matcher.hpp
-dfa_<arch_model>.cpp                    opcodes.hpp
-
-dict.cpp                                allocation.inline.hpp
-dict.cpp                                dict.hpp
-dict.cpp                                resourceArea.hpp
-dict.cpp                                thread.hpp
-
-dict.hpp                                port.hpp
-
-divnode.cpp                             addnode.hpp
-divnode.cpp                             allocation.inline.hpp
-divnode.cpp                             connode.hpp
-divnode.cpp                             divnode.hpp
-divnode.cpp                             machnode.hpp
-divnode.cpp                             matcher.hpp
-divnode.cpp                             mulnode.hpp
-divnode.cpp                             phaseX.hpp
-divnode.cpp                             subnode.hpp
-
-divnode.hpp                             multnode.hpp
-divnode.hpp                             node.hpp
-divnode.hpp                             opcodes.hpp
-divnode.hpp                             type.hpp
-
-doCall.cpp                              addnode.hpp
-doCall.cpp                              callGenerator.hpp
-doCall.cpp                              ciCallSite.hpp
-doCall.cpp                              ciCPCache.hpp
-doCall.cpp                              ciMethodHandle.hpp
-doCall.cpp                              cfgnode.hpp
-doCall.cpp                              compileLog.hpp
-doCall.cpp                              linkResolver.hpp
-doCall.cpp                              mulnode.hpp
-doCall.cpp                              nativeLookup.hpp
-doCall.cpp                              parse.hpp
-doCall.cpp                              rootnode.hpp
-doCall.cpp                              runtime.hpp
-doCall.cpp                              sharedRuntime.hpp
-doCall.cpp                              subnode.hpp
-doCall.cpp                              vmSymbols.hpp
-
-domgraph.cpp                            allocation.hpp
-domgraph.cpp                            block.hpp
-domgraph.cpp                            machnode.hpp
-domgraph.cpp                            phaseX.hpp
-domgraph.cpp                            rootnode.hpp
-domgraph.cpp                            vectset.hpp
-
-escape.cpp                              allocation.hpp
-escape.cpp                              bcEscapeAnalyzer.hpp
-escape.cpp                              c2compiler.hpp
-escape.cpp                              callnode.hpp
-escape.cpp                              cfgnode.hpp
-escape.cpp                              compile.hpp
-escape.cpp                              escape.hpp
-escape.cpp                              phaseX.hpp
-escape.cpp                              rootnode.hpp
-escape.cpp                              vectset.hpp
-
-escape.hpp                              addnode.hpp
-escape.hpp                              growableArray.hpp
-escape.hpp                              node.hpp
-
-frame.hpp                               adGlobals_<arch_model>.hpp
-
-gcm.cpp                                 ad_<arch_model>.hpp
-gcm.cpp                                 allocation.inline.hpp
-gcm.cpp                                 block.hpp
-gcm.cpp                                 c2compiler.hpp
-gcm.cpp                                 callnode.hpp
-gcm.cpp                                 cfgnode.hpp
-gcm.cpp                                 deoptimization.hpp
-gcm.cpp                                 machnode.hpp
-gcm.cpp                                 opcodes.hpp
-gcm.cpp                                 phaseX.hpp
-gcm.cpp                                 rootnode.hpp
-gcm.cpp                                 runtime.hpp
-gcm.cpp                                 vectset.hpp
-
-generateOptoStub.cpp                    addnode.hpp
-generateOptoStub.cpp                    callnode.hpp
-generateOptoStub.cpp                    cfgnode.hpp
-generateOptoStub.cpp                    compile.hpp
-generateOptoStub.cpp                    connode.hpp
-generateOptoStub.cpp                    locknode.hpp
-generateOptoStub.cpp                    memnode.hpp
-generateOptoStub.cpp                    mulnode.hpp
-generateOptoStub.cpp                    node.hpp
-generateOptoStub.cpp                    parse.hpp
-generateOptoStub.cpp                    phaseX.hpp
-generateOptoStub.cpp                    rootnode.hpp
-generateOptoStub.cpp                    runtime.hpp
-generateOptoStub.cpp                    type.hpp
-
-globals.hpp                             c2_globals_<arch>.hpp
-globals.hpp                             c2_globals_<os_family>.hpp
-
-globals.cpp                             c2_globals.hpp
-
-graphKit.cpp                            addnode.hpp
-graphKit.cpp                            barrierSet.hpp
-graphKit.cpp                            cardTableModRefBS.hpp
-graphKit.cpp                            g1SATBCardTableModRefBS.hpp
-graphKit.cpp                            collectedHeap.hpp
-graphKit.cpp                            compileLog.hpp
-graphKit.cpp                            deoptimization.hpp
-graphKit.cpp                            graphKit.hpp
-graphKit.cpp                            heapRegion.hpp
-graphKit.cpp                            idealKit.hpp
-graphKit.cpp                            locknode.hpp
-graphKit.cpp                            machnode.hpp
-graphKit.cpp                            parse.hpp
-graphKit.cpp                            rootnode.hpp
-graphKit.cpp                            runtime.hpp
-graphKit.cpp                            sharedRuntime.hpp
-
-graphKit.hpp                            addnode.hpp
-graphKit.hpp                            callnode.hpp
-graphKit.hpp                            cfgnode.hpp
-graphKit.hpp                            ciEnv.hpp
-graphKit.hpp                            ciMethodData.hpp
-graphKit.hpp                            divnode.hpp
-graphKit.hpp                            compile.hpp
-graphKit.hpp                            deoptimization.hpp
-graphKit.hpp                            phaseX.hpp
-graphKit.hpp                            mulnode.hpp
-graphKit.hpp                            subnode.hpp
-graphKit.hpp                            type.hpp
-
-idealKit.cpp                            addnode.hpp
-idealKit.cpp                            callnode.hpp
-idealKit.cpp                            cfgnode.hpp
-idealKit.cpp                            idealKit.hpp
-idealKit.cpp				runtime.hpp
-
-idealKit.hpp                            addnode.hpp
-idealKit.hpp                            cfgnode.hpp
-idealKit.hpp                            connode.hpp
-idealKit.hpp                            divnode.hpp
-idealKit.hpp                            mulnode.hpp
-idealKit.hpp                            phaseX.hpp
-idealKit.hpp                            subnode.hpp
-idealKit.hpp                            type.hpp
-
-ifg.cpp                                 addnode.hpp
-ifg.cpp                                 allocation.inline.hpp
-ifg.cpp                                 block.hpp
-ifg.cpp                                 callnode.hpp
-ifg.cpp                                 cfgnode.hpp
-ifg.cpp                                 chaitin.hpp
-ifg.cpp                                 coalesce.hpp
-ifg.cpp                                 connode.hpp
-ifg.cpp                                 indexSet.hpp
-ifg.cpp                                 machnode.hpp
-ifg.cpp                                 memnode.hpp
-ifg.cpp                                 oopMap.hpp
-ifg.cpp                                 opcodes.hpp
-
-ifnode.cpp                              addnode.hpp
-ifnode.cpp                              allocation.inline.hpp
-ifnode.cpp                              cfgnode.hpp
-ifnode.cpp                              connode.hpp
-ifnode.cpp                              phaseX.hpp
-ifnode.cpp                              runtime.hpp
-ifnode.cpp                              subnode.hpp
-
-indexSet.cpp                            allocation.inline.hpp
-indexSet.cpp                            chaitin.hpp
-indexSet.cpp                            compile.hpp
-indexSet.cpp                            indexSet.hpp
-indexSet.cpp                            regmask.hpp
-
-indexSet.hpp                            allocation.hpp
-indexSet.hpp                            compile.hpp
-indexSet.hpp                            regmask.hpp
-indexSet.hpp                            resourceArea.hpp
-
-interpreterRuntime.cpp                  runtime.hpp
-
-java.cpp                                compile.hpp
-java.cpp                                compiledIC.hpp
-java.cpp                                indexSet.hpp
-java.cpp                                methodLiveness.hpp
-java.cpp                                runtime.hpp
-
-lcm.cpp                                 ad_<arch_model>.hpp
-lcm.cpp                                 allocation.inline.hpp
-lcm.cpp                                 block.hpp
-lcm.cpp                                 c2compiler.hpp
-lcm.cpp                                 callnode.hpp
-lcm.cpp                                 cfgnode.hpp
-lcm.cpp                                 machnode.hpp
-lcm.cpp                                 runtime.hpp
-
-library_call.cpp                        addnode.hpp
-library_call.cpp                        callGenerator.hpp
-library_call.cpp                        cfgnode.hpp
-library_call.cpp                        compileLog.hpp
-library_call.cpp                        idealKit.hpp
-library_call.cpp                        mulnode.hpp
-library_call.cpp                        nativeLookup.hpp
-library_call.cpp                        objArrayKlass.hpp
-library_call.cpp                        parse.hpp
-library_call.cpp                        runtime.hpp
-library_call.cpp                        sharedRuntime.hpp
-library_call.cpp                        subnode.hpp
-library_call.cpp                        systemDictionary.hpp
-library_call.cpp                        vmSymbols.hpp
-
-live.cpp                                allocation.inline.hpp
-live.cpp                                callnode.hpp
-live.cpp                                chaitin.hpp
-live.cpp                                live.hpp
-live.cpp                                machnode.hpp
-
-live.hpp                                block.hpp
-live.hpp                                indexSet.hpp
-live.hpp                                phase.hpp
-live.hpp                                port.hpp
-live.hpp                                regmask.hpp
-live.hpp                                vectset.hpp
-
-locknode.cpp                            locknode.hpp
-locknode.cpp                            parse.hpp
-locknode.cpp                            rootnode.hpp
-locknode.cpp                            runtime.hpp
-
-locknode.hpp                            ad_<arch_model>.hpp
-locknode.hpp                            node.hpp
-locknode.hpp                            opcodes.hpp
-locknode.hpp                            subnode.hpp
-
-loopTransform.cpp                       addnode.hpp
-loopTransform.cpp                       allocation.inline.hpp
-loopTransform.cpp                       callnode.hpp
-loopTransform.cpp                       connode.hpp
-loopTransform.cpp                       compileLog.hpp
-loopTransform.cpp                       divnode.hpp
-loopTransform.cpp                       loopnode.hpp
-loopTransform.cpp                       mulnode.hpp
-loopTransform.cpp                       rootnode.hpp
-loopTransform.cpp                       runtime.hpp
-loopTransform.cpp                       subnode.hpp
-
-loopUnswitch.cpp                        allocation.inline.hpp
-loopUnswitch.cpp                        connode.hpp
-loopUnswitch.cpp                        loopnode.hpp
-loopUnswitch.cpp                        rootnode.hpp
-
-loopnode.cpp                            addnode.hpp
-loopnode.cpp                            allocation.inline.hpp
-loopnode.cpp                            callnode.hpp
-loopnode.cpp                            ciMethodData.hpp
-loopnode.cpp                            compileLog.hpp
-loopnode.cpp                            connode.hpp
-loopnode.cpp                            divnode.hpp
-loopnode.cpp                            loopnode.hpp
-loopnode.cpp                            mulnode.hpp
-loopnode.cpp                            rootnode.hpp
-loopnode.cpp                            superword.hpp
-loopnode.cpp                            vectset.hpp
-
-loopnode.hpp                            cfgnode.hpp
-loopnode.hpp                            multnode.hpp
-loopnode.hpp                            phaseX.hpp
-loopnode.hpp                            subnode.hpp
-loopnode.hpp                            type.hpp
-
-loopopts.cpp                            addnode.hpp
-loopopts.cpp                            allocation.inline.hpp
-loopopts.cpp                            connode.hpp
-loopopts.cpp                            divnode.hpp
-loopopts.cpp                            loopnode.hpp
-loopopts.cpp                            mulnode.hpp
-loopopts.cpp                            rootnode.hpp
-loopopts.cpp                            subnode.hpp
-
-machnode.cpp                            collectedHeap.hpp
-machnode.cpp                            machnode.hpp
-machnode.cpp                            regalloc.hpp
-
-machnode.hpp                            callnode.hpp
-machnode.hpp                            matcher.hpp
-machnode.hpp                            multnode.hpp
-machnode.hpp                            node.hpp
-machnode.hpp                            regmask.hpp
-
-macro.cpp                               addnode.hpp
-macro.cpp                               callnode.hpp
-macro.cpp                               cfgnode.hpp
-macro.cpp                               compile.hpp
-macro.cpp                              compileLog.hpp
-macro.cpp                               connode.hpp
-macro.cpp                               locknode.hpp
-macro.cpp                               loopnode.hpp
-macro.cpp                               macro.hpp
-macro.cpp                               memnode.hpp
-macro.cpp                               node.hpp
-macro.cpp                               phaseX.hpp
-macro.cpp                               rootnode.hpp
-macro.cpp                               runtime.hpp
-macro.cpp                               sharedRuntime.hpp
-macro.cpp                               subnode.hpp
-macro.cpp                               type.hpp
-macro.cpp                               vectset.hpp
-macro.hpp                               phase.hpp
-
-matcher.cpp                             ad_<arch_model>.hpp
-matcher.cpp                             addnode.hpp
-matcher.cpp                             allocation.inline.hpp
-matcher.cpp                             atomic.hpp
-matcher.cpp                             callnode.hpp
-matcher.cpp                             connode.hpp
-matcher.cpp                             hpi.hpp
-matcher.cpp                             matcher.hpp
-matcher.cpp                             memnode.hpp
-matcher.cpp                             opcodes.hpp
-matcher.cpp                             os.hpp
-matcher.cpp                             regmask.hpp
-matcher.cpp                             rootnode.hpp
-matcher.cpp                             runtime.hpp
-matcher.cpp                             type.hpp
-
-matcher.hpp                             node.hpp
-matcher.hpp                             phaseX.hpp
-matcher.hpp                             regmask.hpp
-matcher.hpp                             resourceArea.hpp
-matcher.hpp                             vectset.hpp
-
-memnode.cpp                             addnode.hpp
-memnode.cpp                             allocation.inline.hpp
-memnode.cpp                             cfgnode.hpp
-memnode.cpp                             compile.hpp
-memnode.cpp                             compileLog.hpp
-memnode.cpp                             connode.hpp
-memnode.cpp                             loopnode.hpp
-memnode.cpp                             machnode.hpp
-memnode.cpp                             matcher.hpp
-memnode.cpp                             memnode.hpp
-memnode.cpp                             mulnode.hpp
-memnode.cpp                             objArrayKlass.hpp
-memnode.cpp                             phaseX.hpp
-memnode.cpp                             regmask.hpp
-memnode.cpp                             systemDictionary.hpp
-
-memnode.hpp                             multnode.hpp
-memnode.hpp                             node.hpp
-memnode.hpp                             opcodes.hpp
-memnode.hpp                             type.hpp
-
-methodLiveness.cpp                      allocation.inline.hpp
-methodLiveness.cpp                      bytecode.hpp
-methodLiveness.cpp                      bytecodes.hpp
-methodLiveness.cpp                      ciStreams.hpp
-methodLiveness.cpp                      methodLiveness.hpp
-
-methodLiveness.hpp                      bitMap.hpp
-methodLiveness.hpp                      growableArray.hpp
-
-mulnode.cpp                             addnode.hpp
-mulnode.cpp                             allocation.inline.hpp
-mulnode.cpp                             connode.hpp
-mulnode.cpp                             memnode.hpp
-mulnode.cpp                             mulnode.hpp
-mulnode.cpp                             phaseX.hpp
-mulnode.cpp                             subnode.hpp
-
-mulnode.hpp                             node.hpp
-mulnode.hpp                             opcodes.hpp
-mulnode.hpp                             type.hpp
-
-multnode.cpp                            matcher.hpp
-multnode.cpp                            multnode.hpp
-multnode.cpp                            opcodes.hpp
-multnode.cpp                            phaseX.hpp
-multnode.cpp                            regmask.hpp
-multnode.cpp                            type.hpp
-
-multnode.hpp                            node.hpp
-
-node.cpp                                allocation.inline.hpp
-node.cpp                                cfgnode.hpp
-node.cpp                                connode.hpp
-node.cpp                                copy.hpp
-node.cpp                                machnode.hpp
-node.cpp                                matcher.hpp
-node.cpp                                node.hpp
-node.cpp                                opcodes.hpp
-node.cpp                                regmask.hpp
-node.cpp                                type.hpp
-node.cpp                                vectset.hpp
-
-node.hpp                                compile.hpp
-node.hpp                                port.hpp
-node.hpp                                type.hpp
-node.hpp                                vectset.hpp
-
-opcodes.cpp                             classes.hpp
-opcodes.cpp                             globalDefinitions.hpp
-opcodes.cpp                             no_precompiled_headers
-
-os_<os_arch>.cpp                        runtime.hpp
-
-os_<os_family>.cpp                      runtime.hpp
-
-output.cpp                              allocation.inline.hpp
-output.cpp                              assembler.inline.hpp
-output.cpp                              callnode.hpp
-output.cpp                              cfgnode.hpp
-output.cpp                              compileBroker.hpp
-output.cpp                              debugInfo.hpp
-output.cpp                              debugInfoRec.hpp
-output.cpp                              handles.inline.hpp
-output.cpp                              locknode.hpp
-output.cpp                              machnode.hpp
-output.cpp                              oopMap.hpp
-output.cpp                              output.hpp
-output.cpp                              regalloc.hpp
-output.cpp                              runtime.hpp
-output.cpp                              subnode.hpp
-output.cpp                              type.hpp
-output.cpp                              xmlstream.hpp
-
-output.hpp                              ad_<arch_model>.hpp
-output.hpp                              block.hpp
-output.hpp                              node.hpp
-
-parse.hpp                               ciMethodData.hpp
-parse.hpp                               ciTypeFlow.hpp
-parse.hpp                               generateOopMap.hpp
-parse.hpp                               graphKit.hpp
-parse.hpp                               methodLiveness.hpp
-parse.hpp                               subnode.hpp
-parse.hpp                               vectset.hpp
-
-parse1.cpp                              addnode.hpp
-parse1.cpp                              arguments.hpp
-parse1.cpp                              compileLog.hpp
-parse1.cpp                              copy.hpp
-parse1.cpp                              handles.inline.hpp
-parse1.cpp                              linkResolver.hpp
-parse1.cpp                              locknode.hpp
-parse1.cpp                              memnode.hpp
-parse1.cpp                              methodOop.hpp
-parse1.cpp                              parse.hpp
-parse1.cpp                              rootnode.hpp
-parse1.cpp                              runtime.hpp
-parse1.cpp                              sharedRuntime.hpp
-
-parse2.cpp                              addnode.hpp
-parse2.cpp                              ciMethodData.hpp
-parse2.cpp                              compileLog.hpp
-parse2.cpp                              deoptimization.hpp
-parse2.cpp                              divnode.hpp
-parse2.cpp                              linkResolver.hpp
-parse2.cpp                              matcher.hpp
-parse2.cpp                              memnode.hpp
-parse2.cpp                              mulnode.hpp
-parse2.cpp                              parse.hpp
-parse2.cpp                              runtime.hpp
-parse2.cpp                              sharedRuntime.hpp
-parse2.cpp                              systemDictionary.hpp
-parse2.cpp                              universe.inline.hpp
-parse2.cpp                              vmSymbols.hpp
-
-parse3.cpp                              addnode.hpp
-parse3.cpp                              compileLog.hpp
-parse3.cpp                              deoptimization.hpp
-parse3.cpp                              handles.inline.hpp
-parse3.cpp                              linkResolver.hpp
-parse3.cpp                              memnode.hpp
-parse3.cpp                              objArrayKlass.hpp
-parse3.cpp                              parse.hpp
-parse3.cpp                              rootnode.hpp
-parse3.cpp                              runtime.hpp
-parse3.cpp                              subnode.hpp
-parse3.cpp                              universe.inline.hpp
-
-parseHelper.cpp                         addnode.hpp
-parseHelper.cpp                         compileLog.hpp
-parseHelper.cpp                         memnode.hpp
-parseHelper.cpp                         mulnode.hpp
-parseHelper.cpp                         objArrayKlass.hpp
-parseHelper.cpp                         parse.hpp
-parseHelper.cpp                         rootnode.hpp
-parseHelper.cpp                         runtime.hpp
-parseHelper.cpp                         sharedRuntime.hpp
-parseHelper.cpp                         systemDictionary.hpp
-
-phase.cpp                               compile.hpp
-phase.cpp                               compileBroker.hpp
-phase.cpp                               nmethod.hpp
-phase.cpp                               node.hpp
-phase.cpp                               phase.hpp
-
-phase.hpp                               port.hpp
-phase.hpp                               timer.hpp
-
-phaseX.cpp                              allocation.inline.hpp
-phaseX.cpp                              block.hpp
-phaseX.cpp                              callnode.hpp
-phaseX.cpp                              cfgnode.hpp
-phaseX.cpp                              connode.hpp
-phaseX.cpp                              loopnode.hpp
-phaseX.cpp                              machnode.hpp
-phaseX.cpp                              opcodes.hpp
-phaseX.cpp                              phaseX.hpp
-phaseX.cpp                              regalloc.hpp
-phaseX.cpp                              rootnode.hpp
-
-phaseX.hpp                              dict.hpp
-phaseX.hpp                              memnode.hpp
-phaseX.hpp                              node.hpp
-phaseX.hpp                              phase.hpp
-phaseX.hpp                              resourceArea.hpp
-phaseX.hpp                              type.hpp
-phaseX.hpp                              vectset.hpp
-
-port.cpp                                port.hpp
-
-port.hpp                                top.hpp
-
-postaloc.cpp                            allocation.inline.hpp
-postaloc.cpp                            chaitin.hpp
-postaloc.cpp                            machnode.hpp
-
-reg_split.cpp                           addnode.hpp
-reg_split.cpp                           allocation.inline.hpp
-reg_split.cpp                           callnode.hpp
-reg_split.cpp                           c2compiler.hpp
-reg_split.cpp                           cfgnode.hpp
-reg_split.cpp                           chaitin.hpp
-reg_split.cpp                           loopnode.hpp
-reg_split.cpp                           machnode.hpp
-reg_split.cpp                           vectset.hpp
-
-regalloc.cpp                            regalloc.hpp
-
-regalloc.hpp                            block.hpp
-regalloc.hpp                            matcher.hpp
-regalloc.hpp                            phase.hpp
-regalloc.hpp                            vmreg.hpp
-
-regmask.cpp                             ad_<arch_model>.hpp
-regmask.cpp                             compile.hpp
-regmask.cpp                             regmask.hpp
-
-regmask.hpp                             adGlobals_<arch_model>.hpp
-regmask.hpp                             optoreg.hpp
-regmask.hpp                             port.hpp
-regmask.hpp                             vmreg.hpp
-
-rootnode.cpp                            allocation.inline.hpp
-rootnode.cpp                            callnode.hpp
-rootnode.cpp                            cfgnode.hpp
-rootnode.cpp                            phaseX.hpp
-rootnode.cpp                            regmask.hpp
-rootnode.cpp                            rootnode.hpp
-rootnode.cpp                            subnode.hpp
-rootnode.cpp                            type.hpp
-
-rootnode.hpp                            loopnode.hpp
-
-runtime.cpp                             ad_<arch_model>.hpp
-runtime.cpp                             addnode.hpp
-runtime.cpp                             barrierSet.hpp
-runtime.cpp                             bytecode.hpp
-runtime.cpp                             callnode.hpp
-runtime.cpp                             cfgnode.hpp
-runtime.cpp                             collectedHeap.hpp
-runtime.cpp                             compileBroker.hpp
-runtime.cpp                             compiledIC.hpp
-runtime.cpp                             compilerOracle.hpp
-runtime.cpp                             connode.hpp
-runtime.cpp                             copy.hpp
-runtime.cpp                             fprofiler.hpp
-runtime.cpp                             g1SATBCardTableModRefBS.hpp
-runtime.cpp                             gcLocker.inline.hpp
-runtime.cpp                             graphKit.hpp
-runtime.cpp                             handles.inline.hpp
-runtime.cpp                             heapRegion.hpp
-runtime.cpp                             icBuffer.hpp
-runtime.cpp                             interfaceSupport.hpp
-runtime.cpp                             interpreter.hpp
-runtime.cpp                             javaCalls.hpp
-runtime.cpp                             linkResolver.hpp
-runtime.cpp                             machnode.hpp
-runtime.cpp                             matcher.hpp
-runtime.cpp                             memnode.hpp
-runtime.cpp                             mulnode.hpp
-runtime.cpp                             nmethod.hpp
-runtime.cpp                             objArrayKlass.hpp
-runtime.cpp                             oop.inline.hpp
-runtime.cpp                             oopFactory.hpp
-runtime.cpp                             oopMap.hpp
-runtime.cpp                             pcDesc.hpp
-runtime.cpp                             preserveException.hpp
-runtime.cpp                             runtime.hpp
-runtime.cpp                             scopeDesc.hpp
-runtime.cpp                             sharedRuntime.hpp
-runtime.cpp                             signature.hpp
-runtime.cpp                             subnode.hpp
-runtime.cpp                             systemDictionary.hpp
-runtime.cpp                             threadCritical.hpp
-runtime.cpp                             vframe.hpp
-runtime.cpp                             vframeArray.hpp
-runtime.cpp                             vframe_hp.hpp
-runtime.cpp                             vmSymbols.hpp
-runtime.cpp                             vtableStubs.hpp
-
-runtime.hpp                             biasedLocking.hpp
-runtime.hpp                             codeBlob.hpp
-runtime.hpp                             deoptimization.hpp
-runtime.hpp                             machnode.hpp
-runtime.hpp                             type.hpp
-runtime.hpp                             vframe.hpp
-
-runtime_<arch_model>.cpp                adGlobals_<arch_model>.hpp
-runtime_<arch_model>.cpp                ad_<arch_model>.hpp
-runtime_<arch_model>.cpp                assembler.hpp
-runtime_<arch_model>.cpp                assembler_<arch>.inline.hpp
-runtime_<arch_model>.cpp                globalDefinitions.hpp
-runtime_<arch_model>.cpp                interfaceSupport.hpp
-runtime_<arch_model>.cpp                interpreter.hpp
-runtime_<arch_model>.cpp                nativeInst_<arch>.hpp
-runtime_<arch_model>.cpp                runtime.hpp
-runtime_<arch_model>.cpp                sharedRuntime.hpp
-runtime_<arch_model>.cpp                stubRoutines.hpp
-runtime_<arch_model>.cpp                systemDictionary.hpp
-runtime_<arch_model>.cpp                vframeArray.hpp
-runtime_<arch_model>.cpp                vmreg.hpp
-runtime_<arch_model>.cpp                vmreg_<arch>.inline.hpp
-
-set.cpp                                 allocation.inline.hpp
-set.cpp                                 set.hpp
-
-set.hpp                                 allocation.hpp
-set.hpp                                 port.hpp
-
-sharedRuntime_<arch_model>.cpp          runtime.hpp
-
-split_if.cpp                            allocation.inline.hpp
-split_if.cpp                            callnode.hpp
-split_if.cpp                            connode.hpp
-split_if.cpp                            loopnode.hpp
-
-stringopts.hpp                          phaseX.hpp
-stringopts.hpp                          node.hpp
-
-stringopts.cpp                          addnode.hpp
-stringopts.cpp                          callnode.hpp
-stringopts.cpp                          callGenerator.hpp
-stringopts.cpp                          compileLog.hpp
-stringopts.cpp                          divnode.hpp
-stringopts.cpp                          idealKit.hpp
-stringopts.cpp                          graphKit.hpp
-stringopts.cpp                          rootnode.hpp
-stringopts.cpp                          runtime.hpp
-stringopts.cpp                          subnode.hpp
-stringopts.cpp                          stringopts.hpp
-
-stubGenerator_<arch_model>.cpp          runtime.hpp
-
-stubRoutines.cpp                        runtime.hpp
-
-subnode.cpp                             addnode.hpp
-subnode.cpp                             allocation.inline.hpp
-subnode.cpp                             callnode.hpp
-subnode.cpp                             cfgnode.hpp
-subnode.cpp                             compileLog.hpp
-subnode.cpp                             connode.hpp
-subnode.cpp                             loopnode.hpp
-subnode.cpp                             matcher.hpp
-subnode.cpp                             mulnode.hpp
-subnode.cpp                             opcodes.hpp
-subnode.cpp                             phaseX.hpp
-subnode.cpp                             sharedRuntime.hpp
-subnode.cpp                             subnode.hpp
-
-subnode.hpp                             node.hpp
-subnode.hpp                             opcodes.hpp
-subnode.hpp                             type.hpp
-
-superword.cpp                           addnode.hpp
-superword.cpp                           allocation.inline.hpp
-superword.cpp                           callnode.hpp
-superword.cpp                           compileLog.hpp
-superword.cpp                           divnode.hpp
-superword.cpp                           matcher.hpp
-superword.cpp                           memnode.hpp
-superword.cpp                           mulnode.hpp
-superword.cpp                           opcodes.hpp
-superword.cpp                           superword.hpp
-superword.cpp                           vectornode.hpp
-superword.cpp                           vectset.hpp
-
-superword.hpp                           connode.hpp
-superword.hpp                           growableArray.hpp
-superword.hpp                           loopnode.hpp
-superword.hpp                           node.hpp
-superword.hpp                           phaseX.hpp
-superword.hpp                           vectornode.hpp
-
-thread.cpp                              c2compiler.hpp
-
-top.hpp                                 c2_globals.hpp
-
-type.cpp                                ciTypeFlow.hpp
-type.cpp                                compileLog.hpp
-type.cpp                                dict.hpp
-type.cpp                                gcLocker.hpp
-type.cpp                                instanceKlass.hpp
-type.cpp                                klassKlass.hpp
-type.cpp                                matcher.hpp
-type.cpp                                node.hpp
-type.cpp                                objArrayKlass.hpp
-type.cpp                                oopFactory.hpp
-type.cpp                                opcodes.hpp
-type.cpp                                resourceArea.hpp
-type.cpp                                symbolTable.hpp
-type.cpp                                systemDictionary.hpp
-type.cpp                                type.hpp
-type.cpp                                typeArrayKlass.hpp
-
-type.hpp                                adlcVMDeps.hpp
-type.hpp                                handles.hpp
-type.hpp                                port.hpp
-
-vectornode.cpp                          allocation.inline.hpp
-vectornode.cpp                          connode.hpp
-vectornode.cpp                          vectornode.hpp
-
-vectornode.hpp                          matcher.hpp
-vectornode.hpp                          memnode.hpp
-vectornode.hpp                          node.hpp
-vectornode.hpp                          opcodes.hpp
-
-vectset.cpp                             allocation.inline.hpp
-vectset.cpp                             vectset.hpp
-
-vectset.hpp                             set.hpp
-
-vframeArray.cpp                         runtime.hpp
-
-vframe_hp.cpp                           matcher.hpp
-
-vmStructs.cpp                           adGlobals_<arch_model>.hpp
-vmStructs.cpp                           matcher.hpp
-
-vmreg.hpp                               adGlobals_<arch_model>.hpp
-vmreg.hpp                               adlcVMDeps.hpp
-vmreg.hpp                               ostream.hpp
-
-vtableStubs.cpp                         matcher.hpp
-
-vtableStubs_<arch_model>.cpp            ad_<arch_model>.hpp
-vtableStubs_<arch_model>.cpp            runtime.hpp
-
-idealGraphPrinter.hpp                   dict.hpp
-idealGraphPrinter.hpp                   vectset.hpp
-idealGraphPrinter.hpp                   growableArray.hpp
-idealGraphPrinter.hpp                   ostream.hpp
-idealGraphPrinter.hpp                   xmlstream.hpp
-
-idealGraphPrinter.cpp                   idealGraphPrinter.hpp
-idealGraphPrinter.cpp                   chaitin.hpp
-idealGraphPrinter.cpp                   machnode.hpp
-idealGraphPrinter.cpp                   parse.hpp
-idealGraphPrinter.cpp                   threadCritical.hpp
-
-compile.cpp                             idealGraphPrinter.hpp
-thread.cpp                              idealGraphPrinter.hpp
-phaseX.cpp                              idealGraphPrinter.hpp
-parse2.cpp                              idealGraphPrinter.hpp
-parse1.cpp                              idealGraphPrinter.hpp
-matcher.cpp                             idealGraphPrinter.hpp
-loopnode.cpp                            idealGraphPrinter.hpp
-chaitin.cpp                             idealGraphPrinter.hpp
--- a/src/share/vm/includeDB_core	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4767 +0,0 @@
-//
-// Copyright (c) 1997, 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.
-//
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-
-// includeDB format:
-// a comment starts with '// ' and goes to the end of the line
-// anything else is a pair of filenames.  The line "x.cpp y.hpp" means
-// "x.cpp must include y.hpp".  Similarly, "y.hpp z.hpp" means "any file including
-// y.hpp must also include z.hpp, and z.hpp must be included before y.hpp".
-//
-// Style hint: we try to keep the entries ordered alphabetically, both
-// globally (left-hand sides) and within a given file (right-hand sides)
-//
-// To avoid unnecessary conflicts with the work of other programmers,
-// do not delete, move, or reformat pre-existing lines.  Do not attempt
-// to "optimize" this file incrementally.
-//
-// ============ Platform dependent include files ===========
-//
-// Some header files occur in clusters.  Header files which depend
-// on the token "generate_platform_dependent_include" are included
-// directly by other header files, and should not be explicitly declared
-// as dependencies.  Header files named H.inline.hpp generally contain
-// bodies for inline functions declared in H.hpp.
-//
-// NOTE: Files that use the token "generate_platform_dependent_include"
-// are expected to contain macro references like <os>, <arch_model>, ... and
-// makedeps has a dependency on these platform files looking like:
-// foo_<macro>.trailing_string
-// (where "trailing_string" can be any legal filename strings but typically
-// is "hpp" or "inline.hpp").
-//
-// The dependency in makedeps (and enforced) is that an underscore
-// will precedure the macro invocation. Note that this restriction
-// is only enforced on filenames that have the dependency token
-// "generate_platform_dependent_include" so other files using macro
-// expansion (typically .cpp files) have no requirement to have
-// an underscore precede the macro although this is encouraged for
-// readibility.
-//
-// ======= Circular dependencies and inline functions ==========
-//
-// (Sometimes, circular dependencies prevent complex function bodies
-// from being defined directly in H.hpp.  In such cases, a client S.cpp
-// of H.hpp must always declare a dependency on H.inline.hpp, which in
-// turn will declare a dependency on H.hpp.  If by some mischance S.cpp
-// declares a dependency on H.hpp, the compiler may complain about missing
-// inline function bodies, or (perhaps) the program may fail to link.
-// The solution is to have S.cpp depend on H.inline.hpp instead of H.hpp.
-//
-// Generally, if in response to a source code change the compiler
-// issues an error in a file F (which may be either a header or a
-// source file), you should consider if the error arises from a missing
-// class definition C.  If that is the case, find the header file H which
-// contains C (often, H=C.hpp, but you may have to search for C's definition).
-// Then, add a line to the includeDB file as appropriate.
-//
-//
-// Here are some typical compiler errors that may require changes to includeDB.
-// (Messages are taken from Sun's SPARC compiler.)
-//
-//   "klassVtable.cpp", line 96: Error: No_GC_Verifier is not defined.
-// Source code:
-//   No_GC_Verifier no_gc;
-//
-// The problem is that the class name No_GC_Verifier is not declared,
-// so the compiler is confused by the syntax.  The solution:
-//   klassVtable.cpp                    gcLocker.hpp
-//
-// Sometimes the compiler has only partial knowledge about a class:
-//   "privilegedStack.cpp", line 60: Error: cast is not a member of instanceKlass.
-// Source code:
-//   if (_protection_domain != instanceKlass::cast(method->method_holder())->protection_domain()) return false;
-//
-// Here, instanceKlass is known to the compiler as a type, because of a
-// forward declaration somewhere ("class instanceKlass;").  The problem
-// is that the compiler has not seen the body of instanceKlass, and so it
-// complains that it does not know about "instanceKlass::cast".  Solution:
-//   privilegedStack.cpp             instanceKlass.hpp
-//
-// Here's another example of a missing declaration:
-//   "privilegedStack.cpp", line 111: Error: The function AllocateHeap must have a prototype.
-// Source code:
-//   _array = NEW_C_HEAP_ARRAY(PrivilegedElement, initial_size);
-//
-// The problem is that the macro call expands to use a heap function
-// which is defined (for technical reasons) in a different file.  Solution:
-//   privilegedStack.cpp             allocation.inline.hpp
-// The macro is defined in allocation.hpp, while the function is
-// defined (as an inline) in allocation.inline.hpp.  Generally, if you
-// find you need a header H.hpp, and there is also a header
-// H.inline.hpp use the latter, because it contains inline definitions
-// you will require.
-
-abstractCompiler.cpp                    abstractCompiler.hpp
-abstractCompiler.cpp                    mutexLocker.hpp
-
-abstractCompiler.hpp                    compilerInterface.hpp
-
-abstractInterpreter.hpp                 bytecodes.hpp
-abstractInterpreter.hpp                 interp_masm_<arch_model>.hpp
-abstractInterpreter.hpp                 stubs.hpp
-abstractInterpreter.hpp                 thread_<os_family>.inline.hpp
-abstractInterpreter.hpp                 top.hpp
-abstractInterpreter.hpp                 vmThread.hpp
-
-accessFlags.cpp                         accessFlags.hpp
-accessFlags.cpp                         oop.inline.hpp
-accessFlags.cpp                         os_<os_family>.inline.hpp
-
-accessFlags.hpp                         jvm.h
-accessFlags.hpp                         top.hpp
-
-allocation.cpp                          allocation.hpp
-allocation.cpp                          allocation.inline.hpp
-allocation.cpp                          os.hpp
-allocation.cpp                          os_<os_family>.inline.hpp
-allocation.cpp                          ostream.hpp
-allocation.cpp                          resourceArea.hpp
-allocation.cpp                          task.hpp
-allocation.cpp                          threadCritical.hpp
-
-allocation.hpp                          globalDefinitions.hpp
-allocation.hpp                          globals.hpp
-
-allocation.inline.hpp                   os.hpp
-
-aprofiler.cpp                           aprofiler.hpp
-aprofiler.cpp                           collectedHeap.inline.hpp
-aprofiler.cpp                           oop.inline.hpp
-aprofiler.cpp                           oop.inline2.hpp
-aprofiler.cpp                           permGen.hpp
-aprofiler.cpp                           resourceArea.hpp
-aprofiler.cpp                           space.hpp
-aprofiler.cpp                           systemDictionary.hpp
-
-aprofiler.hpp                           allocation.hpp
-aprofiler.hpp                           klass.hpp
-aprofiler.hpp                           klassOop.hpp
-aprofiler.hpp                           top.hpp
-aprofiler.hpp                           universe.hpp
-
-arguments.cpp                           allocation.inline.hpp
-arguments.cpp                           arguments.hpp
-arguments.cpp                           cardTableRS.hpp
-arguments.cpp                           compilerOracle.hpp
-arguments.cpp                           defaultStream.hpp
-arguments.cpp                           globals_extension.hpp
-arguments.cpp                           java.hpp
-arguments.cpp                           javaAssertions.hpp
-arguments.cpp                           jvmtiExport.hpp
-arguments.cpp                           management.hpp
-arguments.cpp                           oop.inline.hpp
-arguments.cpp                           os_<os_family>.inline.hpp
-arguments.cpp                           referenceProcessor.hpp
-arguments.cpp                           taskqueue.hpp
-arguments.cpp                           universe.inline.hpp
-arguments.cpp                           vm_version_<arch>.hpp
-
-arguments.hpp                           java.hpp
-arguments.hpp                           perfData.hpp
-arguments.hpp                           top.hpp
-
-array.cpp                               array.hpp
-array.cpp                               resourceArea.hpp
-array.cpp                               thread_<os_family>.inline.hpp
-
-array.hpp                               allocation.hpp
-array.hpp                               allocation.inline.hpp
-
-arrayKlass.cpp                          arrayKlass.hpp
-arrayKlass.cpp                          arrayKlassKlass.hpp
-arrayKlass.cpp                          arrayOop.hpp
-arrayKlass.cpp                          collectedHeap.inline.hpp
-arrayKlass.cpp                          gcLocker.hpp
-arrayKlass.cpp                          instanceKlass.hpp
-arrayKlass.cpp                          javaClasses.hpp
-arrayKlass.cpp                          jvmti.h
-arrayKlass.cpp                          objArrayOop.hpp
-arrayKlass.cpp                          oop.inline.hpp
-arrayKlass.cpp                          systemDictionary.hpp
-arrayKlass.cpp                          universe.inline.hpp
-arrayKlass.cpp                          vmSymbols.hpp
-
-arrayKlass.hpp                          klass.hpp
-arrayKlass.hpp                          klassOop.hpp
-arrayKlass.hpp                          klassVtable.hpp
-arrayKlass.hpp                          universe.hpp
-
-arrayKlassKlass.cpp                     arrayKlassKlass.hpp
-arrayKlassKlass.cpp                     handles.inline.hpp
-arrayKlassKlass.cpp                     javaClasses.hpp
-arrayKlassKlass.cpp                     markSweep.inline.hpp
-arrayKlassKlass.cpp                     oop.inline.hpp
-
-arrayKlassKlass.hpp                     arrayKlass.hpp
-arrayKlassKlass.hpp                     klassKlass.hpp
-
-arrayOop.cpp                            arrayOop.hpp
-arrayOop.cpp                            objArrayOop.hpp
-arrayOop.cpp                            oop.inline.hpp
-arrayOop.cpp                            symbolOop.hpp
-
-arrayOop.hpp                            oop.hpp
-arrayOop.hpp                            universe.inline.hpp
-
-assembler.cpp                           assembler.hpp
-assembler.cpp                           assembler.inline.hpp
-assembler.cpp                           assembler_<arch>.inline.hpp
-assembler.cpp                           codeBuffer.hpp
-assembler.cpp                           icache.hpp
-assembler.cpp                           os.hpp
-
-assembler.hpp                           allocation.hpp
-assembler.hpp                           debug.hpp
-assembler.hpp                           growableArray.hpp
-assembler.hpp                           oopRecorder.hpp
-assembler.hpp                           register_<arch>.hpp
-assembler.hpp                           relocInfo.hpp
-assembler.hpp                           top.hpp
-assembler.hpp                           vm_version_<arch>.hpp
-
-assembler.inline.hpp                    assembler.hpp
-assembler.inline.hpp                    codeBuffer.hpp
-assembler.inline.hpp                    disassembler.hpp
-assembler.inline.hpp                    threadLocalStorage.hpp
-
-assembler_<arch>.cpp              assembler_<arch>.inline.hpp
-assembler_<arch>.cpp              biasedLocking.hpp
-assembler_<arch>.cpp              cardTableModRefBS.hpp
-assembler_<arch>.cpp              collectedHeap.inline.hpp
-assembler_<arch>.cpp              interfaceSupport.hpp
-assembler_<arch>.cpp              interpreter.hpp
-assembler_<arch>.cpp              methodHandles.hpp
-assembler_<arch>.cpp              objectMonitor.hpp
-assembler_<arch>.cpp              os.hpp
-assembler_<arch>.cpp              resourceArea.hpp
-assembler_<arch>.cpp              sharedRuntime.hpp
-assembler_<arch>.cpp              stubRoutines.hpp
-
-assembler_<arch>.hpp              generate_platform_dependent_include
-
-assembler_<arch>.inline.hpp       assembler.inline.hpp
-assembler_<arch>.inline.hpp       codeBuffer.hpp
-assembler_<arch>.inline.hpp       codeCache.hpp
-assembler_<arch>.inline.hpp       handles.inline.hpp
-
-assembler_<os_arch>.cpp           assembler.hpp
-assembler_<os_arch>.cpp           assembler_<arch>.inline.hpp
-assembler_<os_arch>.cpp           os.hpp
-assembler_<os_arch>.cpp           threadLocalStorage.hpp
-
-atomic.cpp                              atomic.hpp
-atomic.cpp                              atomic_<os_arch>.inline.hpp
-atomic.cpp                              os_<os_family>.inline.hpp
-
-atomic.hpp                              allocation.hpp
-
-atomic_<os_arch>.inline.hpp             atomic.hpp
-atomic_<os_arch>.inline.hpp             os.hpp
-atomic_<os_arch>.inline.hpp             vm_version_<arch>.hpp
-atomic_<os_arch>.inline.hpp             orderAccess_<os_arch>.inline.hpp
-
-// attachListener is jck optional, put cpp deps in includeDB_features
-
-attachListener.hpp                      allocation.hpp
-attachListener.hpp                      debug.hpp
-attachListener.hpp                      ostream.hpp
-
-barrierSet.cpp				barrierSet.inline.hpp
-barrierSet.cpp			        collectedHeap.hpp
-barrierSet.cpp				universe.hpp
-
-barrierSet.hpp                          memRegion.hpp
-barrierSet.hpp                          oopsHierarchy.hpp
-
-barrierSet.inline.hpp                   barrierSet.hpp
-barrierSet.inline.hpp                   cardTableModRefBS.hpp
-
-biasedLocking.cpp                       biasedLocking.hpp
-biasedLocking.cpp                       klass.inline.hpp
-biasedLocking.cpp                       markOop.hpp
-biasedLocking.cpp                       synchronizer.hpp
-biasedLocking.cpp                       task.hpp
-biasedLocking.cpp                       vframe.hpp
-biasedLocking.cpp                       vmThread.hpp
-biasedLocking.cpp                       vm_operations.hpp
-
-biasedLocking.hpp                       growableArray.hpp
-biasedLocking.hpp                       handles.hpp
-
-bitMap.cpp                              allocation.inline.hpp
-bitMap.cpp                              bitMap.inline.hpp
-bitMap.cpp                              copy.hpp
-bitMap.cpp                              os_<os_family>.inline.hpp
-
-bitMap.hpp                              allocation.hpp
-bitMap.hpp                              top.hpp
-
-bitMap.inline.hpp                       atomic.hpp
-bitMap.inline.hpp                       bitMap.hpp
-
-blockOffsetTable.cpp                    blockOffsetTable.inline.hpp
-blockOffsetTable.cpp                    collectedHeap.inline.hpp
-blockOffsetTable.cpp                    iterator.hpp
-blockOffsetTable.cpp                    java.hpp
-blockOffsetTable.cpp                    oop.inline.hpp
-blockOffsetTable.cpp                    space.inline.hpp
-blockOffsetTable.cpp                    universe.hpp
-
-blockOffsetTable.hpp                    globalDefinitions.hpp
-blockOffsetTable.hpp                    memRegion.hpp
-blockOffsetTable.hpp                    virtualspace.hpp
-
-blockOffsetTable.inline.hpp             blockOffsetTable.hpp
-blockOffsetTable.inline.hpp             safepoint.hpp
-blockOffsetTable.inline.hpp             space.hpp
-
-bytecode.cpp                            bytecode.hpp
-bytecode.cpp                            constantPoolOop.hpp
-bytecode.cpp                            fieldType.hpp
-bytecode.cpp                            handles.inline.hpp
-bytecode.cpp                            linkResolver.hpp
-bytecode.cpp                            oop.inline.hpp
-bytecode.cpp                            safepoint.hpp
-bytecode.cpp                            signature.hpp
-
-bytecode.hpp                            allocation.hpp
-bytecode.hpp                            bytecodes.hpp
-bytecode.hpp                            bytes_<arch>.hpp
-bytecode.hpp                            methodOop.hpp
-
-bytecodeHistogram.cpp                   bytecodeHistogram.hpp
-bytecodeHistogram.cpp                   growableArray.hpp
-bytecodeHistogram.cpp                   os.hpp
-bytecodeHistogram.cpp                   resourceArea.hpp
-
-bytecodeHistogram.hpp                   allocation.hpp
-bytecodeHistogram.hpp                   bytecodes.hpp
-
-bytecodeInterpreter.cpp                 no_precompiled_headers
-bytecodeInterpreter.cpp                 bytecodeHistogram.hpp
-bytecodeInterpreter.cpp                 bytecodeInterpreter.hpp
-bytecodeInterpreter.cpp                 bytecodeInterpreter.inline.hpp
-bytecodeInterpreter.cpp                 cardTableModRefBS.hpp
-bytecodeInterpreter.cpp                 collectedHeap.hpp
-bytecodeInterpreter.cpp                 exceptions.hpp
-bytecodeInterpreter.cpp                 frame.inline.hpp
-bytecodeInterpreter.cpp                 handles.inline.hpp
-bytecodeInterpreter.cpp                 interfaceSupport.hpp
-bytecodeInterpreter.cpp                 interpreterRuntime.hpp
-bytecodeInterpreter.cpp                 interpreter.hpp
-bytecodeInterpreter.cpp                 jvmtiExport.hpp
-bytecodeInterpreter.cpp                 objArrayKlass.hpp
-bytecodeInterpreter.cpp                 oop.inline.hpp
-bytecodeInterpreter.cpp                 orderAccess_<os_arch>.inline.hpp
-bytecodeInterpreter.cpp                 resourceArea.hpp
-bytecodeInterpreter.cpp                 sharedRuntime.hpp
-bytecodeInterpreter.cpp                 threadCritical.hpp
-bytecodeInterpreter.cpp                 vmSymbols.hpp
-
-bytecodeInterpreter_<arch>.cpp          assembler.hpp
-bytecodeInterpreter_<arch>.cpp          bytecodeInterpreter.hpp
-bytecodeInterpreter_<arch>.cpp          bytecodeInterpreter.inline.hpp
-bytecodeInterpreter_<arch>.cpp          debug.hpp
-bytecodeInterpreter_<arch>.cpp          deoptimization.hpp
-bytecodeInterpreter_<arch>.cpp          frame.inline.hpp
-bytecodeInterpreter_<arch>.cpp          interp_masm_<arch_model>.hpp
-bytecodeInterpreter_<arch>.cpp          interpreterRuntime.hpp
-bytecodeInterpreter_<arch>.cpp          interpreter.hpp
-bytecodeInterpreter_<arch>.cpp          jvmtiExport.hpp
-bytecodeInterpreter_<arch>.cpp          jvmtiThreadState.hpp
-bytecodeInterpreter_<arch>.cpp          methodDataOop.hpp
-bytecodeInterpreter_<arch>.cpp          methodOop.hpp
-bytecodeInterpreter_<arch>.cpp          oop.inline.hpp
-bytecodeInterpreter_<arch>.cpp          sharedRuntime.hpp
-bytecodeInterpreter_<arch>.cpp          stubRoutines.hpp
-bytecodeInterpreter_<arch>.cpp          synchronizer.hpp
-bytecodeInterpreter_<arch>.cpp          vframeArray.hpp
-
-bytecodeInterpreterWithChecks.cpp       bytecodeInterpreter.cpp
-
-bytecodeInterpreter.hpp                 allocation.hpp
-bytecodeInterpreter.hpp                 bytes_<arch>.hpp
-bytecodeInterpreter.hpp                 frame.hpp
-bytecodeInterpreter.hpp                 globalDefinitions.hpp
-bytecodeInterpreter.hpp                 globals.hpp
-bytecodeInterpreter.hpp                 methodDataOop.hpp
-bytecodeInterpreter.hpp                 methodOop.hpp
-bytecodeInterpreter.hpp                 synchronizer.hpp
-
-bytecodeInterpreter.inline.hpp          bytecodeInterpreter.hpp
-bytecodeInterpreter.inline.hpp          stubRoutines.hpp
-
-bytecodeInterpreter_<arch>.hpp          generate_platform_dependent_include
-
-bytecodeInterpreter_<arch>.inline.hpp   generate_platform_dependent_include
-
-bytecodeStream.cpp                      bytecodeStream.hpp
-bytecodeStream.cpp                      bytecodes.hpp
-
-bytecodeStream.hpp                      allocation.hpp
-bytecodeStream.hpp                      bytecode.hpp
-bytecodeStream.hpp                      bytes_<arch>.hpp
-bytecodeStream.hpp                      methodOop.hpp
-
-bytecodeTracer.cpp                      bytecodeHistogram.hpp
-bytecodeTracer.cpp                      bytecodeTracer.hpp
-bytecodeTracer.cpp                      bytecodes.hpp
-bytecodeTracer.cpp                      interpreter.hpp
-bytecodeTracer.cpp                      interpreterRuntime.hpp
-bytecodeTracer.cpp                      methodDataOop.hpp
-bytecodeTracer.cpp                      methodOop.hpp
-bytecodeTracer.cpp                      mutexLocker.hpp
-bytecodeTracer.cpp                      resourceArea.hpp
-bytecodeTracer.cpp                      timer.hpp
-
-bytecodeTracer.hpp                      allocation.hpp
-
-bytecodes.cpp                           bytecodes.hpp
-bytecodes.cpp                           bytes_<arch>.hpp
-bytecodes.cpp                           methodOop.hpp
-bytecodes.cpp                           resourceArea.hpp
-
-bytecodes.hpp                           allocation.hpp
-bytecodes.hpp                           top.hpp
-
-bytecodes_<arch>.cpp                    bytecodes.hpp
-
-bytecodes_<arch>.hpp                    generate_platform_dependent_include
-
-bytes_<arch>.hpp                        allocation.hpp
-
-bytes_<os_arch>.inline.hpp              generate_platform_dependent_include
-
-cardTableModRefBS.cpp                   allocation.inline.hpp
-cardTableModRefBS.cpp                   cardTableModRefBS.hpp
-cardTableModRefBS.cpp                   cardTableRS.hpp
-cardTableModRefBS.cpp                   java.hpp
-cardTableModRefBS.cpp                   mutexLocker.hpp
-cardTableModRefBS.cpp                   sharedHeap.hpp
-cardTableModRefBS.cpp                   space.hpp
-cardTableModRefBS.cpp                   space.inline.hpp
-cardTableModRefBS.cpp                   universe.hpp
-cardTableModRefBS.cpp                   virtualspace.hpp
-
-cardTableModRefBS.hpp                   modRefBarrierSet.hpp
-cardTableModRefBS.hpp                   oop.hpp
-cardTableModRefBS.hpp                   oop.inline2.hpp
-
-cardTableRS.cpp                         allocation.inline.hpp
-cardTableRS.cpp                         cardTableRS.hpp
-cardTableRS.cpp                         genCollectedHeap.hpp
-cardTableRS.cpp                         generation.hpp
-cardTableRS.cpp                         java.hpp
-cardTableRS.cpp                         oop.inline.hpp
-cardTableRS.cpp                         os.hpp
-cardTableRS.cpp                         space.hpp
-
-cardTableRS.hpp                         cardTableModRefBS.hpp
-cardTableRS.hpp                         genRemSet.hpp
-cardTableRS.hpp                         memRegion.hpp
-
-ciArray.cpp                             ciArray.hpp
-ciArray.cpp                             ciKlass.hpp
-ciArray.cpp                             ciUtilities.hpp
-
-ciArray.hpp                             arrayOop.hpp
-ciArray.hpp                             ciObject.hpp
-ciArray.hpp                             objArrayOop.hpp
-ciArray.hpp                             typeArrayOop.hpp
-
-ciArrayKlass.cpp                        ciArrayKlass.hpp
-ciArrayKlass.cpp                        ciObjArrayKlass.hpp
-ciArrayKlass.cpp                        ciTypeArrayKlass.hpp
-ciArrayKlass.cpp                        ciUtilities.hpp
-
-ciArrayKlass.hpp                        ciKlass.hpp
-
-ciArrayKlassKlass.hpp                   ciKlassKlass.hpp
-
-ciCallProfile.hpp                       ciClassList.hpp
-
-ciCallSite.cpp                          ciCallSite.hpp
-ciCallSite.cpp                          ciUtilities.hpp
-
-ciCallSite.hpp                          ciInstance.hpp
-
-ciConstant.cpp                          allocation.hpp
-ciConstant.cpp                          allocation.inline.hpp
-ciConstant.cpp                          ciConstant.hpp
-ciConstant.cpp                          ciUtilities.hpp
-
-ciConstant.hpp                          ciClassList.hpp
-ciConstant.hpp                          ciNullObject.hpp
-
-ciConstantPoolCache.cpp                 allocation.hpp
-ciConstantPoolCache.cpp                 allocation.inline.hpp
-ciConstantPoolCache.cpp                 ciConstantPoolCache.hpp
-ciConstantPoolCache.cpp                 ciUtilities.hpp
-
-ciConstantPoolCache.hpp                 growableArray.hpp
-ciConstantPoolCache.hpp                 resourceArea.hpp
-
-ciCPCache.cpp                           cpCacheOop.hpp
-ciCPCache.cpp                           ciCPCache.hpp
-ciCPCache.cpp                           ciUtilities.hpp
-
-ciCPCache.hpp                           ciClassList.hpp
-ciCPCache.hpp                           ciObject.hpp
-ciCPCache.hpp                           cpCacheOop.hpp
-
-ciEnv.cpp                               allocation.inline.hpp
-ciEnv.cpp                               ciConstant.hpp
-ciEnv.cpp                               ciEnv.hpp
-ciEnv.cpp                               ciField.hpp
-ciEnv.cpp                               ciInstance.hpp
-ciEnv.cpp                               ciInstanceKlass.hpp
-ciEnv.cpp                               ciInstanceKlassKlass.hpp
-ciEnv.cpp                               ciMethod.hpp
-ciEnv.cpp                               ciNullObject.hpp
-ciEnv.cpp                               ciObjArrayKlassKlass.hpp
-ciEnv.cpp                               ciTypeArrayKlassKlass.hpp
-ciEnv.cpp                               ciUtilities.hpp
-ciEnv.cpp                               collectedHeap.inline.hpp
-ciEnv.cpp                               compileBroker.hpp
-ciEnv.cpp                               compileLog.hpp
-ciEnv.cpp                               compilerOracle.hpp
-ciEnv.cpp                               dtrace.hpp
-ciEnv.cpp                               init.hpp
-ciEnv.cpp                               jvmtiExport.hpp
-ciEnv.cpp                               linkResolver.hpp
-ciEnv.cpp                               methodDataOop.hpp
-ciEnv.cpp                               objArrayKlass.hpp
-ciEnv.cpp                               oop.inline.hpp
-ciEnv.cpp                               oop.inline2.hpp
-ciEnv.cpp                               oopFactory.hpp
-ciEnv.cpp                               reflection.hpp
-ciEnv.cpp                               scopeDesc.hpp
-ciEnv.cpp                               sharedRuntime.hpp
-ciEnv.cpp                               systemDictionary.hpp
-ciEnv.cpp                               universe.inline.hpp
-ciEnv.cpp                               vmSymbols.hpp
-
-ciEnv.hpp                               ciClassList.hpp
-ciEnv.hpp                               ciObjectFactory.hpp
-ciEnv.hpp                               debugInfoRec.hpp
-ciEnv.hpp                               dependencies.hpp
-ciEnv.hpp                               exceptionHandlerTable.hpp
-ciEnv.hpp                               oopMap.hpp
-ciEnv.hpp                               systemDictionary.hpp
-ciEnv.hpp                               thread.hpp
-
-ciExceptionHandler.cpp                  ciExceptionHandler.hpp
-ciExceptionHandler.cpp                  ciUtilities.hpp
-
-ciExceptionHandler.hpp                  ciClassList.hpp
-ciExceptionHandler.hpp                  ciInstanceKlass.hpp
-
-ciField.cpp                             ciField.hpp
-ciField.cpp                             ciInstanceKlass.hpp
-ciField.cpp                             ciUtilities.hpp
-ciField.cpp                             collectedHeap.inline.hpp
-ciField.cpp                             fieldDescriptor.hpp
-ciField.cpp                             linkResolver.hpp
-ciField.cpp                             oop.inline.hpp
-ciField.cpp                             oop.inline2.hpp
-ciField.cpp                             systemDictionary.hpp
-ciField.cpp                             universe.inline.hpp
-
-ciField.hpp                             ciClassList.hpp
-ciField.hpp                             ciConstant.hpp
-ciField.hpp                             ciFlags.hpp
-ciField.hpp                             ciInstance.hpp
-
-ciFlags.cpp                             ciFlags.hpp
-
-ciFlags.hpp                             accessFlags.hpp
-ciFlags.hpp                             allocation.hpp
-ciFlags.hpp                             ciClassList.hpp
-ciFlags.hpp                             jvm.h
-
-ciInstance.cpp                          ciConstant.hpp
-ciInstance.cpp                          ciField.hpp
-ciInstance.cpp                          ciInstance.hpp
-ciInstance.cpp                          ciInstanceKlass.hpp
-ciInstance.cpp                          ciUtilities.hpp
-ciInstance.cpp                          oop.inline.hpp
-ciInstance.cpp                          systemDictionary.hpp
-
-ciInstance.hpp                          ciObject.hpp
-ciInstance.hpp                          instanceOop.hpp
-
-ciInstanceKlass.cpp                     allocation.hpp
-ciInstanceKlass.cpp                     allocation.inline.hpp
-ciInstanceKlass.cpp                     ciField.hpp
-ciInstanceKlass.cpp                     ciInstance.hpp
-ciInstanceKlass.cpp                     ciInstanceKlass.hpp
-ciInstanceKlass.cpp                     ciUtilities.hpp
-ciInstanceKlass.cpp                     fieldDescriptor.hpp
-ciInstanceKlass.cpp                     oop.inline.hpp
-ciInstanceKlass.cpp                     systemDictionary.hpp
-
-ciInstanceKlass.hpp                     ciConstantPoolCache.hpp
-ciInstanceKlass.hpp                     ciFlags.hpp
-ciInstanceKlass.hpp                     ciInstanceKlassKlass.hpp
-ciInstanceKlass.hpp                     ciKlass.hpp
-ciInstanceKlass.hpp                     ciSymbol.hpp
-
-ciInstanceKlassKlass.cpp                ciInstanceKlassKlass.hpp
-ciInstanceKlassKlass.cpp                ciUtilities.hpp
-
-ciInstanceKlassKlass.hpp                ciKlassKlass.hpp
-
-ciKlass.cpp                             ciKlass.hpp
-ciKlass.cpp                             ciSymbol.hpp
-ciKlass.cpp                             ciUtilities.hpp
-ciKlass.cpp                             oop.inline.hpp
-
-ciKlass.hpp                             ciType.hpp
-ciKlass.hpp                             klassOop.hpp
-
-ciKlassKlass.cpp                        ciKlassKlass.hpp
-ciKlassKlass.cpp                        ciUtilities.hpp
-
-ciKlassKlass.hpp                        ciKlass.hpp
-ciKlassKlass.hpp                        ciSymbol.hpp
-
-ciMethod.cpp                            abstractCompiler.hpp
-ciMethod.cpp                            allocation.inline.hpp
-ciMethod.cpp                            bitMap.inline.hpp
-ciMethod.cpp                            ciCallProfile.hpp
-ciMethod.cpp                            ciExceptionHandler.hpp
-ciMethod.cpp                            ciInstanceKlass.hpp
-ciMethod.cpp                            ciMethod.hpp
-ciMethod.cpp                            ciMethodBlocks.hpp
-ciMethod.cpp                            ciMethodData.hpp
-ciMethod.cpp                            ciMethodKlass.hpp
-ciMethod.cpp                            ciStreams.hpp
-ciMethod.cpp                            ciSymbol.hpp
-ciMethod.cpp                            ciUtilities.hpp
-ciMethod.cpp                            compilerOracle.hpp
-ciMethod.cpp                            deoptimization.hpp
-ciMethod.cpp                            generateOopMap.hpp
-ciMethod.cpp                            interpreter.hpp
-ciMethod.cpp                            linkResolver.hpp
-ciMethod.cpp                            methodLiveness.hpp
-ciMethod.cpp                            nativeLookup.hpp
-ciMethod.cpp                            oop.inline.hpp
-ciMethod.cpp                            oopMapCache.hpp
-ciMethod.cpp                            resourceArea.hpp
-ciMethod.cpp                            systemDictionary.hpp
-ciMethod.cpp                            xmlstream.hpp
-
-ciMethod.hpp                            bitMap.hpp
-ciMethod.hpp                            ciFlags.hpp
-ciMethod.hpp                            ciInstanceKlass.hpp
-ciMethod.hpp                            ciObject.hpp
-ciMethod.hpp                            ciSignature.hpp
-ciMethod.hpp                            methodHandles.hpp
-ciMethod.hpp                            methodLiveness.hpp
-
-ciMethodBlocks.cpp                      bytecode.hpp
-ciMethodBlocks.cpp                      ciMethodBlocks.hpp
-ciMethodBlocks.cpp                      ciStreams.hpp
-ciMethodBlocks.cpp                      copy.hpp
-
-ciMethodBlocks.hpp                      ciMethod.hpp
-ciMethodBlocks.hpp                      growableArray.hpp
-ciMethodBlocks.hpp                      resourceArea.hpp
-
-ciMethodData.cpp                        allocation.inline.hpp
-ciMethodData.cpp                        ciMethodData.hpp
-ciMethodData.cpp                        ciUtilities.hpp
-ciMethodData.cpp                        copy.hpp
-ciMethodData.cpp                        deoptimization.hpp
-ciMethodData.cpp                        resourceArea.hpp
-
-ciMethodData.hpp                        ciClassList.hpp
-ciMethodData.hpp                        ciKlass.hpp
-ciMethodData.hpp                        ciObject.hpp
-ciMethodData.hpp                        ciUtilities.hpp
-ciMethodData.hpp                        methodDataOop.hpp
-ciMethodData.hpp                        oop.inline.hpp
-
-ciMethodKlass.cpp                       ciMethodKlass.hpp
-ciMethodKlass.cpp                       ciUtilities.hpp
-
-ciMethodKlass.hpp                       ciKlass.hpp
-ciMethodKlass.hpp                       ciSymbol.hpp
-
-ciMethodHandle.cpp                      ciClassList.hpp
-ciMethodHandle.cpp                      ciInstance.hpp
-ciMethodHandle.cpp                      ciMethodHandle.hpp
-ciMethodHandle.cpp                      ciUtilities.hpp
-ciMethodHandle.cpp                      methodHandles.hpp
-ciMethodHandle.cpp                      methodHandleWalk.hpp
-
-ciMethodHandle.hpp                      methodHandles.hpp
-
-ciNullObject.cpp                        ciNullObject.hpp
-
-ciNullObject.hpp                        ciClassList.hpp
-ciNullObject.hpp                        ciObject.hpp
-ciNullObject.hpp                        ciUtilities.hpp
-
-ciObjArray.hpp                          ciArray.hpp
-ciObjArray.hpp                          ciClassList.hpp
-ciObjArray.hpp                          objArrayOop.hpp
-
-ciObjArray.cpp                          ciObjArray.hpp
-ciObjArray.cpp                          ciNullObject.hpp
-ciObjArray.cpp                          ciUtilities.hpp
-ciObjArray.cpp                          objArrayOop.hpp
-
-ciObjArray.cpp                          ciObjArray.hpp
-ciObjArray.cpp                          ciNullObject.hpp
-ciObjArray.cpp                          ciUtilities.hpp
-ciObjArray.cpp                          objArrayOop.hpp
-
-ciObjArrayKlass.cpp                     ciInstanceKlass.hpp
-ciObjArrayKlass.cpp                     ciObjArrayKlass.hpp
-ciObjArrayKlass.cpp                     ciObjArrayKlassKlass.hpp
-ciObjArrayKlass.cpp                     ciSymbol.hpp
-ciObjArrayKlass.cpp                     ciUtilities.hpp
-ciObjArrayKlass.cpp                     objArrayKlass.hpp
-
-ciObjArrayKlass.hpp                     ciArrayKlass.hpp
-
-ciObjArrayKlassKlass.cpp                ciObjArrayKlassKlass.hpp
-ciObjArrayKlassKlass.cpp                ciUtilities.hpp
-
-ciObjArrayKlassKlass.hpp                ciArrayKlassKlass.hpp
-
-ciObject.cpp                            ciObject.hpp
-ciObject.cpp                            ciUtilities.hpp
-ciObject.cpp                            collectedHeap.inline.hpp
-ciObject.cpp                            oop.inline2.hpp
-
-ciObject.hpp                            allocation.hpp
-ciObject.hpp                            ciClassList.hpp
-ciObject.hpp                            handles.hpp
-ciObject.hpp                            jniHandles.hpp
-
-ciObjectFactory.cpp                     allocation.inline.hpp
-ciObjectFactory.cpp                     ciCallSite.hpp
-ciObjectFactory.cpp                     ciCPCache.hpp
-ciObjectFactory.cpp                     ciInstance.hpp
-ciObjectFactory.cpp                     ciInstanceKlass.hpp
-ciObjectFactory.cpp                     ciInstanceKlassKlass.hpp
-ciObjectFactory.cpp                     ciMethod.hpp
-ciObjectFactory.cpp                     ciMethodData.hpp
-ciObjectFactory.cpp                     ciMethodHandle.hpp
-ciObjectFactory.cpp                     ciMethodKlass.hpp
-ciObjectFactory.cpp                     ciNullObject.hpp
-ciObjectFactory.cpp                     ciObjArray.hpp
-ciObjectFactory.cpp                     ciObjArrayKlass.hpp
-ciObjectFactory.cpp                     ciObjArrayKlassKlass.hpp
-ciObjectFactory.cpp                     ciObjectFactory.hpp
-ciObjectFactory.cpp                     ciSymbol.hpp
-ciObjectFactory.cpp                     ciSymbolKlass.hpp
-ciObjectFactory.cpp                     ciTypeArray.hpp
-ciObjectFactory.cpp                     ciTypeArrayKlass.hpp
-ciObjectFactory.cpp                     ciTypeArrayKlassKlass.hpp
-ciObjectFactory.cpp                     ciUtilities.hpp
-ciObjectFactory.cpp                     collectedHeap.inline.hpp
-ciObjectFactory.cpp                     fieldType.hpp
-ciObjectFactory.cpp                     oop.inline.hpp
-ciObjectFactory.cpp                     oop.inline2.hpp
-ciObjectFactory.cpp                     systemDictionary.hpp
-
-ciObjectFactory.hpp                     ciClassList.hpp
-ciObjectFactory.hpp                     ciObject.hpp
-ciObjectFactory.hpp                     growableArray.hpp
-
-ciSignature.cpp                         allocation.inline.hpp
-ciSignature.cpp                         ciSignature.hpp
-ciSignature.cpp                         ciUtilities.hpp
-ciSignature.cpp                         oop.inline.hpp
-ciSignature.cpp                         signature.hpp
-
-ciSignature.hpp                         ciClassList.hpp
-ciSignature.hpp                         ciSymbol.hpp
-ciSignature.hpp                         globalDefinitions.hpp
-ciSignature.hpp                         growableArray.hpp
-
-ciStreams.cpp                           ciCallSite.hpp
-ciStreams.cpp                           ciConstant.hpp
-ciStreams.cpp                           ciCPCache.hpp
-ciStreams.cpp                           ciField.hpp
-ciStreams.cpp                           ciStreams.hpp
-ciStreams.cpp                           ciUtilities.hpp
-
-ciStreams.hpp                           bytecode.hpp
-ciStreams.hpp                           ciClassList.hpp
-ciStreams.hpp                           ciExceptionHandler.hpp
-ciStreams.hpp                           ciInstanceKlass.hpp
-ciStreams.hpp                           ciMethod.hpp
-
-ciSymbol.cpp                            ciSymbol.hpp
-ciSymbol.cpp                            ciUtilities.hpp
-ciSymbol.cpp                            oopFactory.hpp
-
-ciSymbol.hpp                            ciObject.hpp
-ciSymbol.hpp                            ciObjectFactory.hpp
-ciSymbol.hpp                            symbolOop.hpp
-ciSymbol.hpp                            vmSymbols.hpp
-
-ciSymbolKlass.cpp                       ciSymbolKlass.hpp
-ciSymbolKlass.cpp                       ciUtilities.hpp
-
-ciSymbolKlass.hpp                       ciKlass.hpp
-ciSymbolKlass.hpp                       ciSymbol.hpp
-
-ciType.cpp                              ciType.hpp
-ciType.cpp                              ciUtilities.hpp
-ciType.cpp                              oop.inline.hpp
-ciType.cpp                              systemDictionary.hpp
-
-ciType.hpp                              ciObject.hpp
-ciType.hpp                              klassOop.hpp
-
-ciTypeArray.cpp                         ciTypeArray.hpp
-ciTypeArray.cpp                         ciUtilities.hpp
-
-ciTypeArray.hpp                         ciArray.hpp
-ciTypeArray.hpp                         ciClassList.hpp
-ciTypeArray.hpp                         typeArrayOop.hpp
-
-ciTypeArrayKlass.cpp                    ciTypeArrayKlass.hpp
-ciTypeArrayKlass.cpp                    ciUtilities.hpp
-
-ciTypeArrayKlass.hpp                    ciArrayKlass.hpp
-
-ciTypeArrayKlassKlass.cpp               ciTypeArrayKlassKlass.hpp
-ciTypeArrayKlassKlass.cpp               ciUtilities.hpp
-
-ciTypeArrayKlassKlass.hpp               ciArrayKlassKlass.hpp
-
-ciUtilities.cpp                         ciUtilities.hpp
-
-ciUtilities.hpp                         ciEnv.hpp
-ciUtilities.hpp                         interfaceSupport.hpp
-
-classFileError.cpp                      classFileParser.hpp
-classFileError.cpp                      stackMapTable.hpp
-classFileError.cpp                      verifier.hpp
-
-classFileParser.cpp                     allocation.hpp
-classFileParser.cpp                     classFileParser.hpp
-classFileParser.cpp                     classLoader.hpp
-classFileParser.cpp                     classLoadingService.hpp
-classFileParser.cpp                     constantPoolOop.hpp
-classFileParser.cpp                     gcLocker.hpp
-classFileParser.cpp                     instanceKlass.hpp
-classFileParser.cpp                     javaCalls.hpp
-classFileParser.cpp                     javaClasses.hpp
-classFileParser.cpp                     jvmtiExport.hpp
-classFileParser.cpp                     klass.inline.hpp
-classFileParser.cpp                     klassOop.hpp
-classFileParser.cpp                     klassVtable.hpp
-classFileParser.cpp                     methodOop.hpp
-classFileParser.cpp                     oopFactory.hpp
-classFileParser.cpp                     perfData.hpp
-classFileParser.cpp                     reflection.hpp
-classFileParser.cpp                     signature.hpp
-classFileParser.cpp                     symbolOop.hpp
-classFileParser.cpp                     symbolTable.hpp
-classFileParser.cpp                     systemDictionary.hpp
-classFileParser.cpp                     threadService.hpp
-classFileParser.cpp                     timer.hpp
-classFileParser.cpp                     universe.inline.hpp
-classFileParser.cpp                     verificationType.hpp
-classFileParser.cpp                     verifier.hpp
-classFileParser.cpp                     vmSymbols.hpp
-
-classFileParser.hpp                     accessFlags.hpp
-classFileParser.hpp                     classFileStream.hpp
-classFileParser.hpp                     handles.inline.hpp
-classFileParser.hpp                     oop.inline.hpp
-classFileParser.hpp                     resourceArea.hpp
-classFileParser.hpp                     typeArrayOop.hpp
-
-classFileStream.cpp                     classFileStream.hpp
-classFileStream.cpp                     vmSymbols.hpp
-
-classFileStream.hpp                     bytes_<arch>.hpp
-classFileStream.hpp                     top.hpp
-
-classLoader.cpp                         allocation.inline.hpp
-classLoader.cpp                         arguments.hpp
-classLoader.cpp                         bytecodeStream.hpp
-classLoader.cpp                         classFileParser.hpp
-classLoader.cpp                         classFileStream.hpp
-classLoader.cpp                         classLoader.hpp
-classLoader.cpp                         collectedHeap.inline.hpp
-classLoader.cpp                         compilationPolicy.hpp
-classLoader.cpp                         compileBroker.hpp
-classLoader.cpp                         constantPoolKlass.hpp
-classLoader.cpp                         events.hpp
-classLoader.cpp                         fprofiler.hpp
-classLoader.cpp                         generation.hpp
-classLoader.cpp                         handles.hpp
-classLoader.cpp                         handles.inline.hpp
-classLoader.cpp                         hashtable.hpp
-classLoader.cpp                         hashtable.inline.hpp
-classLoader.cpp                         hpi.hpp
-classLoader.cpp                         hpi_<os_family>.hpp
-classLoader.cpp                         init.hpp
-classLoader.cpp                         instanceKlass.hpp
-classLoader.cpp                         instanceRefKlass.hpp
-classLoader.cpp                         interfaceSupport.hpp
-classLoader.cpp                         java.hpp
-classLoader.cpp                         javaCalls.hpp
-classLoader.cpp                         javaClasses.hpp
-classLoader.cpp                         jvm_misc.hpp
-classLoader.cpp                         management.hpp
-classLoader.cpp                         oop.inline.hpp
-classLoader.cpp                         oopFactory.hpp
-classLoader.cpp                         oopMapCache.hpp
-classLoader.cpp                         os_<os_family>.inline.hpp
-classLoader.cpp                         symbolOop.hpp
-classLoader.cpp                         systemDictionary.hpp
-classLoader.cpp                         threadCritical.hpp
-classLoader.cpp                         threadService.hpp
-classLoader.cpp                         timer.hpp
-classLoader.cpp                         universe.inline.hpp
-classLoader.cpp                         vmSymbols.hpp
-
-classLoader.hpp                         classFileParser.hpp
-classLoader.hpp                         perfData.hpp
-
-classLoadingService.cpp                 allocation.hpp
-classLoadingService.cpp                 classLoadingService.hpp
-classLoadingService.cpp                 dtrace.hpp
-classLoadingService.cpp                 memoryService.hpp
-classLoadingService.cpp                 mutexLocker.hpp
-classLoadingService.cpp                 oop.inline.hpp
-classLoadingService.cpp                 systemDictionary.hpp
-classLoadingService.cpp                 universe.hpp
-
-classLoadingService.hpp                 growableArray.hpp
-classLoadingService.hpp                 handles.hpp
-classLoadingService.hpp                 perfData.hpp
-
-classify.cpp                            classify.hpp
-classify.cpp                            systemDictionary.hpp
-
-classify.hpp                            oop.inline.hpp
-
-codeBlob.cpp                            allocation.inline.hpp
-codeBlob.cpp                            bytecode.hpp
-codeBlob.cpp                            codeBlob.hpp
-codeBlob.cpp                            codeCache.hpp
-codeBlob.cpp                            disassembler.hpp
-codeBlob.cpp                            forte.hpp
-codeBlob.cpp                            handles.inline.hpp
-codeBlob.cpp                            heap.hpp
-codeBlob.cpp                            interfaceSupport.hpp
-codeBlob.cpp                            memoryService.hpp
-codeBlob.cpp                            mutexLocker.hpp
-codeBlob.cpp                            nativeInst_<arch>.hpp
-codeBlob.cpp                            oop.inline.hpp
-codeBlob.cpp                            relocInfo.hpp
-codeBlob.cpp                            safepoint.hpp
-codeBlob.cpp                            sharedRuntime.hpp
-codeBlob.cpp                            vframe.hpp
-
-codeBlob.hpp                            codeBuffer.hpp
-codeBlob.hpp                            frame.hpp
-codeBlob.hpp                            handles.hpp
-codeBlob.hpp                            oopMap.hpp
-
-codeBuffer.cpp                          codeBuffer.hpp
-codeBuffer.cpp                          copy.hpp
-codeBuffer.cpp                          disassembler.hpp
-
-codeBuffer.hpp                          assembler.hpp
-codeBuffer.hpp                          oopRecorder.hpp
-codeBuffer.hpp                          relocInfo.hpp
-
-codeBuffer_<arch>.hpp                   generate_platform_dependent_include
-
-codeCache.cpp                           allocation.inline.hpp
-codeCache.cpp                           codeBlob.hpp
-codeCache.cpp                           codeCache.hpp
-codeCache.cpp                           dependencies.hpp
-codeCache.cpp                           gcLocker.hpp
-codeCache.cpp                           handles.inline.hpp
-codeCache.cpp                           icache.hpp
-codeCache.cpp                           iterator.hpp
-codeCache.cpp                           java.hpp
-codeCache.cpp                           markSweep.hpp
-codeCache.cpp                           memoryService.hpp
-codeCache.cpp                           methodOop.hpp
-codeCache.cpp                           mutexLocker.hpp
-codeCache.cpp                           nmethod.hpp
-codeCache.cpp                           objArrayOop.hpp
-codeCache.cpp                           oop.inline.hpp
-codeCache.cpp                           pcDesc.hpp
-codeCache.cpp                           resourceArea.hpp
-codeCache.cpp                           xmlstream.hpp
-
-codeCache.hpp                           allocation.hpp
-codeCache.hpp                           codeBlob.hpp
-codeCache.hpp                           heap.hpp
-codeCache.hpp                           instanceKlass.hpp
-codeCache.hpp                           oopsHierarchy.hpp
-
-collectorPolicy.cpp                     adaptiveSizePolicy.hpp
-collectorPolicy.cpp                     arguments.hpp
-collectorPolicy.cpp                     cardTableRS.hpp
-collectorPolicy.cpp                     collectorPolicy.hpp
-collectorPolicy.cpp                     gcLocker.inline.hpp
-collectorPolicy.cpp                     genCollectedHeap.hpp
-collectorPolicy.cpp                     gcPolicyCounters.hpp
-collectorPolicy.cpp                     generationSpec.hpp
-collectorPolicy.cpp                     globals_extension.hpp
-collectorPolicy.cpp                     handles.inline.hpp
-collectorPolicy.cpp                     java.hpp
-collectorPolicy.cpp                     space.hpp
-collectorPolicy.cpp                     thread_<os_family>.inline.hpp
-collectorPolicy.cpp                     universe.hpp
-collectorPolicy.cpp                     vmGCOperations.hpp
-collectorPolicy.cpp                     vmThread.hpp
-
-collectorPolicy.hpp                     barrierSet.hpp
-collectorPolicy.hpp                     genRemSet.hpp
-collectorPolicy.hpp                     permGen.hpp
-
-compactPermGen.hpp                      generation.hpp
-compactPermGen.hpp                      permGen.hpp
-
-compactingPermGenGen.cpp                compactingPermGenGen.hpp
-compactingPermGenGen.cpp                filemap.hpp
-compactingPermGenGen.cpp                genOopClosures.inline.hpp
-compactingPermGenGen.cpp                generation.inline.hpp
-compactingPermGenGen.cpp                generationSpec.hpp
-compactingPermGenGen.cpp                java.hpp
-compactingPermGenGen.cpp                oop.inline.hpp
-compactingPermGenGen.cpp                symbolTable.hpp
-compactingPermGenGen.cpp                systemDictionary.hpp
-
-compactingPermGenGen.hpp                generationCounters.hpp
-compactingPermGenGen.hpp                space.hpp
-
-compilationPolicy.cpp                   compilationPolicy.hpp
-compilationPolicy.cpp                   compiledIC.hpp
-compilationPolicy.cpp                   compilerOracle.hpp
-compilationPolicy.cpp                   events.hpp
-compilationPolicy.cpp                   frame.hpp
-compilationPolicy.cpp                   globalDefinitions.hpp
-compilationPolicy.cpp                   handles.inline.hpp
-compilationPolicy.cpp                   interpreter.hpp
-compilationPolicy.cpp                   methodDataOop.hpp
-compilationPolicy.cpp                   methodOop.hpp
-compilationPolicy.cpp                   nativeLookup.hpp
-compilationPolicy.cpp                   nmethod.hpp
-compilationPolicy.cpp                   oop.inline.hpp
-compilationPolicy.cpp                   rframe.hpp
-compilationPolicy.cpp			scopeDesc.hpp
-compilationPolicy.cpp                   simpleThresholdPolicy.hpp
-compilationPolicy.cpp                   stubRoutines.hpp
-compilationPolicy.cpp                   thread.hpp
-compilationPolicy.cpp                   timer.hpp
-compilationPolicy.cpp                   vframe.hpp
-compilationPolicy.cpp                   vm_operations.hpp
-
-compilationPolicy.hpp                   allocation.hpp
-compilationPolicy.hpp                   compileBroker.hpp
-compilationPolicy.hpp                   growableArray.hpp
-compilationPolicy.hpp                   nmethod.hpp
-compilationPolicy.hpp                   vm_operations.hpp
-
-compileBroker.cpp                       allocation.inline.hpp
-compileBroker.cpp                       arguments.hpp
-compileBroker.cpp                       codeCache.hpp
-compileBroker.cpp                       compilationPolicy.hpp
-compileBroker.cpp                       compileBroker.hpp
-compileBroker.cpp                       compileLog.hpp
-compileBroker.cpp                       compilerOracle.hpp
-compileBroker.cpp                       dtrace.hpp
-compileBroker.cpp                       init.hpp
-compileBroker.cpp                       interfaceSupport.hpp
-compileBroker.cpp                       javaCalls.hpp
-compileBroker.cpp                       linkResolver.hpp
-compileBroker.cpp                       methodDataOop.hpp
-compileBroker.cpp                       methodOop.hpp
-compileBroker.cpp                       nativeLookup.hpp
-compileBroker.cpp                       oop.inline.hpp
-compileBroker.cpp                       os.hpp
-compileBroker.cpp                       sharedRuntime.hpp
-compileBroker.cpp                       sweeper.hpp
-compileBroker.cpp                       systemDictionary.hpp
-compileBroker.cpp                       vmSymbols.hpp
-
-compileBroker.hpp                       abstractCompiler.hpp
-compileBroker.hpp                       compilerInterface.hpp
-compileBroker.hpp                       perfData.hpp
-
-compileLog.cpp                          allocation.inline.hpp
-compileLog.cpp                          ciMethod.hpp
-compileLog.cpp                          compileLog.hpp
-compileLog.cpp                          methodOop.hpp
-compileLog.cpp                          mutexLocker.hpp
-compileLog.cpp                          os.hpp
-
-compileLog.hpp                          xmlstream.hpp
-
-compiledIC.cpp                          codeCache.hpp
-compiledIC.cpp                          compiledIC.hpp
-compiledIC.cpp                          events.hpp
-compiledIC.cpp                          icBuffer.hpp
-compiledIC.cpp                          icache.hpp
-compiledIC.cpp                          interpreter.hpp
-compiledIC.cpp                          linkResolver.hpp
-compiledIC.cpp                          methodOop.hpp
-compiledIC.cpp                          nmethod.hpp
-compiledIC.cpp                          oop.inline.hpp
-compiledIC.cpp                          oopFactory.hpp
-compiledIC.cpp                          sharedRuntime.hpp
-compiledIC.cpp                          stubRoutines.hpp
-compiledIC.cpp                          symbolOop.hpp
-compiledIC.cpp                          systemDictionary.hpp
-compiledIC.cpp                          vtableStubs.hpp
-
-compiledIC.hpp                          compiledICHolderKlass.hpp
-compiledIC.hpp                          compiledICHolderOop.hpp
-compiledIC.hpp                          klassOop.hpp
-compiledIC.hpp                          linkResolver.hpp
-compiledIC.hpp                          nativeInst_<arch>.hpp
-
-compiledICHolderKlass.cpp               collectedHeap.hpp
-compiledICHolderKlass.cpp               collectedHeap.inline.hpp
-compiledICHolderKlass.cpp               compiledICHolderKlass.hpp
-compiledICHolderKlass.cpp               handles.inline.hpp
-compiledICHolderKlass.cpp               javaClasses.hpp
-compiledICHolderKlass.cpp               markSweep.inline.hpp
-compiledICHolderKlass.cpp               oop.inline.hpp
-compiledICHolderKlass.cpp               oop.inline2.hpp
-compiledICHolderKlass.cpp               permGen.hpp
-compiledICHolderKlass.cpp               universe.inline.hpp
-
-compiledICHolderKlass.hpp               compiledICHolderOop.hpp
-compiledICHolderKlass.hpp               klass.hpp
-compiledICHolderKlass.hpp               methodOop.hpp
-
-compiledICHolderOop.cpp                 compiledICHolderOop.hpp
-
-compiledICHolderOop.hpp                 oop.hpp
-
-compilerInterface.hpp                   ciArray.hpp
-compilerInterface.hpp                   ciArrayKlass.hpp
-compilerInterface.hpp                   ciArrayKlassKlass.hpp
-compilerInterface.hpp                   ciCallProfile.hpp
-compilerInterface.hpp                   ciConstant.hpp
-compilerInterface.hpp                   ciEnv.hpp
-compilerInterface.hpp                   ciExceptionHandler.hpp
-compilerInterface.hpp                   ciField.hpp
-compilerInterface.hpp                   ciFlags.hpp
-compilerInterface.hpp                   ciInstance.hpp
-compilerInterface.hpp                   ciInstanceKlass.hpp
-compilerInterface.hpp                   ciInstanceKlassKlass.hpp
-compilerInterface.hpp                   ciKlass.hpp
-compilerInterface.hpp                   ciKlassKlass.hpp
-compilerInterface.hpp                   ciMethod.hpp
-compilerInterface.hpp                   ciMethodKlass.hpp
-compilerInterface.hpp                   ciNullObject.hpp
-compilerInterface.hpp                   ciObjArray.hpp
-compilerInterface.hpp                   ciObjArrayKlass.hpp
-compilerInterface.hpp                   ciObjArrayKlassKlass.hpp
-compilerInterface.hpp                   ciObject.hpp
-compilerInterface.hpp                   ciSignature.hpp
-compilerInterface.hpp                   ciStreams.hpp
-compilerInterface.hpp                   ciSymbol.hpp
-compilerInterface.hpp                   ciSymbolKlass.hpp
-compilerInterface.hpp                   ciTypeArray.hpp
-compilerInterface.hpp                   ciTypeArrayKlass.hpp
-compilerInterface.hpp                   ciTypeArrayKlassKlass.hpp
-
-compilerOracle.cpp                      allocation.inline.hpp
-compilerOracle.cpp                      compilerOracle.hpp
-compilerOracle.cpp                      handles.inline.hpp
-compilerOracle.cpp                      jniHandles.hpp
-compilerOracle.cpp                      klass.hpp
-compilerOracle.cpp                      methodOop.hpp
-compilerOracle.cpp                      oop.inline.hpp
-compilerOracle.cpp                      oopFactory.hpp
-compilerOracle.cpp                      resourceArea.hpp
-compilerOracle.cpp                      symbolOop.hpp
-
-compilerOracle.hpp                      allocation.hpp
-compilerOracle.hpp                      oopsHierarchy.hpp
-
-compressedStream.cpp                    compressedStream.hpp
-compressedStream.cpp                    ostream.hpp
-
-compressedStream.hpp                    allocation.hpp
-
-constMethodKlass.cpp                    constMethodKlass.hpp
-constMethodKlass.cpp                    constMethodOop.hpp
-constMethodKlass.cpp                    gcLocker.hpp
-constMethodKlass.cpp                    handles.inline.hpp
-constMethodKlass.cpp                    interpreter.hpp
-constMethodKlass.cpp                    markSweep.inline.hpp
-constMethodKlass.cpp                    oop.inline.hpp
-constMethodKlass.cpp                    oop.inline2.hpp
-constMethodKlass.cpp                    resourceArea.hpp
-
-constMethodKlass.hpp                    oop.hpp
-constMethodKlass.hpp                    klass.hpp
-constMethodKlass.hpp                    orderAccess.hpp
-
-constMethodOop.cpp                      constMethodOop.hpp
-constMethodOop.cpp                      methodOop.hpp
-
-constMethodOop.hpp                      oop.hpp
-constMethodOop.hpp                      typeArrayOop.hpp
-
-constantPoolKlass.cpp                   collectedHeap.inline.hpp
-constantPoolKlass.cpp                   constantPoolKlass.hpp
-constantPoolKlass.cpp                   constantPoolOop.hpp
-constantPoolKlass.cpp                   handles.inline.hpp
-constantPoolKlass.cpp                   javaClasses.hpp
-constantPoolKlass.cpp                   markSweep.inline.hpp
-constantPoolKlass.cpp                   oop.inline.hpp
-constantPoolKlass.cpp                   oop.inline2.hpp
-constantPoolKlass.cpp                   oopFactory.hpp
-constantPoolKlass.cpp                   permGen.hpp
-constantPoolKlass.cpp                   symbolOop.hpp
-constantPoolKlass.cpp                   thread_<os_family>.inline.hpp
-constantPoolKlass.cpp                   universe.inline.hpp
-
-constantPoolKlass.hpp                   arrayKlass.hpp
-constantPoolKlass.hpp                   instanceKlass.hpp
-
-constantPoolOop.cpp                     constantPoolOop.hpp
-constantPoolOop.cpp                     fieldType.hpp
-constantPoolOop.cpp                     init.hpp
-constantPoolOop.cpp                     instanceKlass.hpp
-constantPoolOop.cpp                     javaClasses.hpp
-constantPoolOop.cpp                     linkResolver.hpp
-constantPoolOop.cpp                     objArrayKlass.hpp
-constantPoolOop.cpp                     oop.inline.hpp
-constantPoolOop.cpp                     signature.hpp
-constantPoolOop.cpp                     symbolTable.hpp
-constantPoolOop.cpp                     systemDictionary.hpp
-constantPoolOop.cpp                     universe.inline.hpp
-constantPoolOop.cpp                     vframe.hpp
-constantPoolOop.cpp                     vmSymbols.hpp
-
-constantPoolOop.hpp                     arrayOop.hpp
-constantPoolOop.hpp                     bytes_<arch>.hpp
-constantPoolOop.hpp                     constantTag.hpp
-constantPoolOop.hpp                     cpCacheOop.hpp
-constantPoolOop.hpp                     typeArrayOop.hpp
-
-constantTag.cpp                         constantTag.hpp
-
-constantTag.hpp                         jvm.h
-constantTag.hpp                         top.hpp
-
-copy.cpp                                copy.hpp
-copy.cpp                                sharedRuntime.hpp
-
-copy.hpp                                stubRoutines.hpp
-
-copy_<arch>.hpp                         generate_platform_dependent_include
-
-copy_<os_arch>.inline.hpp               generate_platform_dependent_include
-
-cpCacheKlass.cpp                        bytecodes.hpp
-cpCacheKlass.cpp                        collectedHeap.hpp
-cpCacheKlass.cpp                        constantPoolOop.hpp
-cpCacheKlass.cpp                        cpCacheKlass.hpp
-cpCacheKlass.cpp                        genOopClosures.inline.hpp
-cpCacheKlass.cpp                        handles.inline.hpp
-cpCacheKlass.cpp                        javaClasses.hpp
-cpCacheKlass.cpp                        markSweep.inline.hpp
-cpCacheKlass.cpp                        oop.inline.hpp
-cpCacheKlass.cpp                        permGen.hpp
-
-cpCacheKlass.hpp                        arrayKlass.hpp
-cpCacheKlass.hpp                        cpCacheOop.hpp
-cpCacheKlass.hpp                        instanceKlass.hpp
-
-cpCacheOop.cpp                          cpCacheOop.hpp
-cpCacheOop.cpp                          handles.inline.hpp
-cpCacheOop.cpp                          interpreter.hpp
-cpCacheOop.cpp                          jvmtiRedefineClassesTrace.hpp
-cpCacheOop.cpp                          markSweep.inline.hpp
-cpCacheOop.cpp                          objArrayOop.hpp
-cpCacheOop.cpp                          oop.inline.hpp
-cpCacheOop.cpp                          rewriter.hpp
-cpCacheOop.cpp                          universe.inline.hpp
-
-cpCacheOop.hpp                          allocation.hpp
-cpCacheOop.hpp                          array.hpp
-cpCacheOop.hpp                          arrayOop.hpp
-cpCacheOop.hpp                          bytecodes.hpp
-
-cppInterpreter.cpp                      bytecodeInterpreter.hpp
-cppInterpreter.cpp                      interpreter.hpp
-cppInterpreter.cpp                      interpreterGenerator.hpp
-cppInterpreter.cpp                      interpreterRuntime.hpp
-
-cppInterpreter.hpp                      abstractInterpreter.hpp
-
-cppInterpreter_<arch>.cpp               arguments.hpp
-cppInterpreter_<arch>.cpp               arrayOop.hpp
-cppInterpreter_<arch>.cpp               assembler.hpp
-cppInterpreter_<arch>.cpp               bytecodeHistogram.hpp
-cppInterpreter_<arch>.cpp               debug.hpp
-cppInterpreter_<arch>.cpp               deoptimization.hpp
-cppInterpreter_<arch>.cpp               frame.inline.hpp
-cppInterpreter_<arch>.cpp               interfaceSupport.hpp
-cppInterpreter_<arch>.cpp               interpreterRuntime.hpp
-cppInterpreter_<arch>.cpp               interpreter.hpp
-cppInterpreter_<arch>.cpp               interpreterGenerator.hpp
-cppInterpreter_<arch>.cpp               jvmtiExport.hpp
-cppInterpreter_<arch>.cpp               jvmtiThreadState.hpp
-cppInterpreter_<arch>.cpp               methodDataOop.hpp
-cppInterpreter_<arch>.cpp               methodOop.hpp
-cppInterpreter_<arch>.cpp               oop.inline.hpp
-cppInterpreter_<arch>.cpp               sharedRuntime.hpp
-cppInterpreter_<arch>.cpp               stubRoutines.hpp
-cppInterpreter_<arch>.cpp               synchronizer.hpp
-cppInterpreter_<arch>.cpp               cppInterpreter.hpp
-cppInterpreter_<arch>.cpp               timer.hpp
-cppInterpreter_<arch>.cpp               vframeArray.hpp
-
-cppInterpreter_<arch>.hpp          generate_platform_dependent_include
-
-cppInterpreterGenerator_<arch>.hpp generate_platform_dependent_include
-
-debug.cpp                               arguments.hpp
-debug.cpp                               bytecodeHistogram.hpp
-debug.cpp                               codeCache.hpp
-debug.cpp                               collectedHeap.hpp
-debug.cpp                               compileBroker.hpp
-debug.cpp                               defaultStream.hpp
-debug.cpp                               disassembler.hpp
-debug.cpp                               events.hpp
-debug.cpp                               frame.hpp
-debug.cpp                               heapDumper.hpp
-debug.cpp                               icBuffer.hpp
-debug.cpp                               interpreter.hpp
-debug.cpp                               java.hpp
-debug.cpp                               markSweep.hpp
-debug.cpp                               nmethod.hpp
-debug.cpp                               oop.inline.hpp
-debug.cpp                               os_<os_family>.inline.hpp
-debug.cpp                               privilegedStack.hpp
-debug.cpp                               resourceArea.hpp
-debug.cpp                               sharedRuntime.hpp
-debug.cpp                               stubCodeGenerator.hpp
-debug.cpp                               stubRoutines.hpp
-debug.cpp                               systemDictionary.hpp
-debug.cpp                               thread_<os_family>.inline.hpp
-debug.cpp                               top.hpp
-debug.cpp                               universe.hpp
-debug.cpp                               vframe.hpp
-debug.cpp                               vmError.hpp
-debug.cpp                               vtableStubs.hpp
-
-debug.hpp                               globalDefinitions.hpp
-
-debugInfo.cpp                           debugInfo.hpp
-debugInfo.cpp                           debugInfoRec.hpp
-debugInfo.cpp                           handles.inline.hpp
-debugInfo.cpp                           nmethod.hpp
-
-debugInfo.hpp                           compressedStream.hpp
-debugInfo.hpp                           growableArray.hpp
-debugInfo.hpp                           location.hpp
-debugInfo.hpp                           nmethod.hpp
-debugInfo.hpp                           oopRecorder.hpp
-debugInfo.hpp                           stackValue.hpp
-
-debugInfoRec.cpp                        debugInfoRec.hpp
-debugInfoRec.cpp                        jvmtiExport.hpp
-debugInfoRec.cpp                        scopeDesc.hpp
-
-debugInfoRec.hpp                        ciClassList.hpp
-debugInfoRec.hpp                        ciInstanceKlass.hpp
-debugInfoRec.hpp                        ciMethod.hpp
-debugInfoRec.hpp                        debugInfo.hpp
-debugInfoRec.hpp                        growableArray.hpp
-debugInfoRec.hpp                        location.hpp
-debugInfoRec.hpp                        oop.hpp
-debugInfoRec.hpp                        oopMap.hpp
-debugInfoRec.hpp                        pcDesc.hpp
-
-debug_<arch>.cpp                        codeCache.hpp
-debug_<arch>.cpp                        debug.hpp
-debug_<arch>.cpp                        frame.hpp
-debug_<arch>.cpp                        init.hpp
-debug_<arch>.cpp                        nmethod.hpp
-debug_<arch>.cpp                        os.hpp
-debug_<arch>.cpp                        top.hpp
-
-defNewGeneration.cpp                    collectorCounters.hpp
-defNewGeneration.cpp                    copy.hpp
-defNewGeneration.cpp                    defNewGeneration.inline.hpp
-defNewGeneration.cpp                    gcLocker.inline.hpp
-defNewGeneration.cpp                    gcPolicyCounters.hpp
-defNewGeneration.cpp                    genCollectedHeap.hpp
-defNewGeneration.cpp                    genOopClosures.inline.hpp
-defNewGeneration.cpp                    generationSpec.hpp
-defNewGeneration.cpp                    instanceRefKlass.hpp
-defNewGeneration.cpp                    iterator.hpp
-defNewGeneration.cpp                    java.hpp
-defNewGeneration.cpp                    oop.inline.hpp
-defNewGeneration.cpp                    referencePolicy.hpp
-defNewGeneration.cpp                    space.inline.hpp
-defNewGeneration.cpp                    spaceDecorator.hpp
-defNewGeneration.cpp                    stack.inline.hpp
-defNewGeneration.cpp                    thread_<os_family>.inline.hpp
-
-defNewGeneration.hpp                    ageTable.hpp
-defNewGeneration.hpp                    cSpaceCounters.hpp
-defNewGeneration.hpp                    generation.inline.hpp
-defNewGeneration.hpp                    generationCounters.hpp
-defNewGeneration.hpp                    stack.hpp
-
-defNewGeneration.inline.hpp             cardTableRS.hpp
-defNewGeneration.inline.hpp             defNewGeneration.hpp
-defNewGeneration.inline.hpp             space.hpp
-
-defaultStream.hpp                       xmlstream.hpp
-
-deoptimization.cpp                      allocation.inline.hpp
-deoptimization.cpp                      biasedLocking.hpp
-deoptimization.cpp                      bytecode.hpp
-deoptimization.cpp			compilationPolicy.hpp
-deoptimization.cpp                      debugInfoRec.hpp
-deoptimization.cpp                      deoptimization.hpp
-deoptimization.cpp                      events.hpp
-deoptimization.cpp                      interfaceSupport.hpp
-deoptimization.cpp                      interpreter.hpp
-deoptimization.cpp                      jvmtiThreadState.hpp
-deoptimization.cpp                      methodOop.hpp
-deoptimization.cpp                      nmethod.hpp
-deoptimization.cpp                      oop.inline.hpp
-deoptimization.cpp                      oopFactory.hpp
-deoptimization.cpp                      oopMapCache.hpp
-deoptimization.cpp                      pcDesc.hpp
-deoptimization.cpp                      resourceArea.hpp
-deoptimization.cpp                      scopeDesc.hpp
-deoptimization.cpp                      sharedRuntime.hpp
-deoptimization.cpp                      signature.hpp
-deoptimization.cpp                      stubRoutines.hpp
-deoptimization.cpp                      systemDictionary.hpp
-deoptimization.cpp                      thread.hpp
-deoptimization.cpp                      vframe.hpp
-deoptimization.cpp                      vframeArray.hpp
-deoptimization.cpp                      vframe_hp.hpp
-deoptimization.cpp                      vmreg_<arch>.inline.hpp
-deoptimization.cpp                      xmlstream.hpp
-
-deoptimization.hpp                      allocation.hpp
-deoptimization.hpp                      frame.inline.hpp
-
-depChecker_<arch>.cpp                   depChecker_<arch>.hpp
-depChecker_<arch>.cpp                   disassembler.hpp
-depChecker_<arch>.cpp                   hpi.hpp
-
-dependencies.cpp                        ciArrayKlass.hpp
-dependencies.cpp                        ciEnv.hpp
-dependencies.cpp                        ciKlass.hpp
-dependencies.cpp                        ciMethod.hpp
-dependencies.cpp                        compileLog.hpp
-dependencies.cpp                        copy.hpp
-dependencies.cpp                        dependencies.hpp
-dependencies.cpp                        handles.inline.hpp
-dependencies.cpp                        oop.inline.hpp
-
-dependencies.hpp                        ciKlass.hpp
-dependencies.hpp                        compressedStream.hpp
-dependencies.hpp                        growableArray.hpp
-dependencies.hpp                        nmethod.hpp
-
-dictionary.cpp                          classLoadingService.hpp
-dictionary.cpp                          dictionary.hpp
-dictionary.cpp                          hashtable.inline.hpp
-dictionary.cpp                          jvmtiRedefineClassesTrace.hpp
-dictionary.cpp                          oop.inline.hpp
-dictionary.cpp                          systemDictionary.hpp
-
-dictionary.hpp                          hashtable.hpp
-dictionary.hpp                          instanceKlass.hpp
-dictionary.hpp                          oop.hpp
-dictionary.hpp                          systemDictionary.hpp
-
-disassembler_<arch>.hpp                 generate_platform_dependent_include
-
-disassembler.cpp                        cardTableModRefBS.hpp
-disassembler.cpp                        codeCache.hpp
-disassembler.cpp                        collectedHeap.hpp
-disassembler.cpp                        depChecker_<arch>.hpp
-disassembler.cpp                        disassembler.hpp
-disassembler.cpp                        fprofiler.hpp
-disassembler.cpp                        handles.inline.hpp
-disassembler.cpp                        hpi.hpp
-disassembler.cpp                        javaClasses.hpp
-disassembler.cpp                        stubCodeGenerator.hpp
-disassembler.cpp                        stubRoutines.hpp
-
-disassembler.hpp                        globals.hpp
-disassembler.hpp                        os_<os_family>.inline.hpp
-
-dtraceAttacher.cpp                      codeCache.hpp
-dtraceAttacher.cpp                      deoptimization.hpp
-dtraceAttacher.cpp                      dtraceAttacher.hpp
-dtraceAttacher.cpp                      resourceArea.hpp
-dtraceAttacher.cpp                      vmThread.hpp
-dtraceAttacher.cpp                      vm_operations.hpp
-
-dtraceJSDT.cpp                          allocation.hpp
-dtraceJSDT.cpp                          codeBlob.hpp
-dtraceJSDT.cpp                          dtraceJSDT.hpp
-dtraceJSDT.cpp                          exceptions.hpp
-dtraceJSDT.cpp                          globalDefinitions.hpp
-dtraceJSDT.cpp                          javaClasses.hpp
-dtraceJSDT.cpp                          jniHandles.hpp
-dtraceJSDT.cpp                          jvm.h
-dtraceJSDT.cpp                          os.hpp
-dtraceJSDT.cpp                          utf8.hpp
-
-dtraceJSDT.hpp                          nativeInst_<arch>.hpp
-dtraceJSDT.hpp                          nmethod.hpp
-
-dtraceJSDT_<os_family>.cpp              allocation.hpp
-dtraceJSDT_<os_family>.cpp              codeBlob.hpp
-dtraceJSDT_<os_family>.cpp              dtraceJSDT.hpp
-dtraceJSDT_<os_family>.cpp              globalDefinitions.hpp
-dtraceJSDT_<os_family>.cpp              javaClasses.hpp
-dtraceJSDT_<os_family>.cpp              jniHandles.hpp
-dtraceJSDT_<os_family>.cpp              jvm.h
-dtraceJSDT_<os_family>.cpp              os.hpp
-dtraceJSDT_<os_family>.cpp              signature.hpp
-
-// dump is jck optional, put cpp deps in includeDB_features
-
-events.cpp                              allocation.inline.hpp
-events.cpp                              events.hpp
-events.cpp                              mutexLocker.hpp
-events.cpp                              osThread.hpp
-events.cpp                              threadLocalStorage.hpp
-events.cpp                              thread_<os_family>.inline.hpp
-events.cpp                              timer.hpp
-
-events.hpp                              allocation.hpp
-events.hpp                              top.hpp
-
-evmCompat.cpp                           debug.hpp
-
-exceptionHandlerTable.cpp               allocation.inline.hpp
-exceptionHandlerTable.cpp               exceptionHandlerTable.hpp
-exceptionHandlerTable.cpp               nmethod.hpp
-
-exceptionHandlerTable.hpp               allocation.hpp
-exceptionHandlerTable.hpp               methodOop.hpp
-
-exceptions.cpp                          compileBroker.hpp
-exceptions.cpp                          events.hpp
-exceptions.cpp                          exceptions.hpp
-exceptions.cpp                          init.hpp
-exceptions.cpp                          java.hpp
-exceptions.cpp                          javaCalls.hpp
-exceptions.cpp                          oop.inline.hpp
-exceptions.cpp                          systemDictionary.hpp
-exceptions.cpp                          threadCritical.hpp
-exceptions.cpp                          thread_<os_family>.inline.hpp
-exceptions.cpp                          vmSymbols.hpp
-
-exceptions.hpp                          allocation.hpp
-exceptions.hpp                          oopsHierarchy.hpp
-exceptions.hpp                          sizes.hpp
-
-fieldDescriptor.cpp                     fieldDescriptor.hpp
-fieldDescriptor.cpp                     handles.inline.hpp
-fieldDescriptor.cpp                     instanceKlass.hpp
-fieldDescriptor.cpp                     resourceArea.hpp
-fieldDescriptor.cpp                     signature.hpp
-fieldDescriptor.cpp                     systemDictionary.hpp
-fieldDescriptor.cpp                     universe.inline.hpp
-fieldDescriptor.cpp                     vmSymbols.hpp
-
-fieldDescriptor.hpp                     accessFlags.hpp
-fieldDescriptor.hpp                     constantPoolOop.hpp
-fieldDescriptor.hpp                     constantTag.hpp
-fieldDescriptor.hpp                     fieldType.hpp
-fieldDescriptor.hpp                     klassOop.hpp
-fieldDescriptor.hpp                     oop.inline.hpp
-fieldDescriptor.hpp                     symbolOop.hpp
-
-fieldType.cpp                           fieldType.hpp
-fieldType.cpp                           oop.inline.hpp
-fieldType.cpp                           oopFactory.hpp
-fieldType.cpp                           signature.hpp
-fieldType.cpp                           systemDictionary.hpp
-fieldType.cpp                           typeArrayKlass.hpp
-
-fieldType.hpp                           allocation.hpp
-fieldType.hpp                           symbolOop.hpp
-
-filemap.cpp                             arguments.hpp
-filemap.cpp                             classLoader.hpp
-filemap.cpp                             defaultStream.hpp
-filemap.cpp                             filemap.hpp
-filemap.cpp                             hpi_<os_family>.hpp
-filemap.cpp                             java.hpp
-filemap.cpp                             os.hpp
-filemap.cpp                             symbolTable.hpp
-
-filemap.hpp                             compactingPermGenGen.hpp
-filemap.hpp                             space.hpp
-
-// forte is jck optional, put cpp deps in includeDB_features
-// fprofiler is jck optional, put cpp deps in includeDB_features
-
-fprofiler.hpp                           thread_<os_family>.inline.hpp
-fprofiler.hpp                           timer.hpp
-
-frame.cpp                               collectedHeap.inline.hpp
-frame.cpp                               frame.inline.hpp
-frame.cpp                               handles.inline.hpp
-frame.cpp                               interpreter.hpp
-frame.cpp                               javaCalls.hpp
-frame.cpp                               markOop.hpp
-frame.cpp                               methodDataOop.hpp
-frame.cpp                               methodOop.hpp
-frame.cpp                               monitorChunk.hpp
-frame.cpp                               nativeInst_<arch>.hpp
-frame.cpp                               oop.inline.hpp
-frame.cpp                               oop.inline2.hpp
-frame.cpp                               oopMapCache.hpp
-frame.cpp                               resourceArea.hpp
-frame.cpp                               sharedRuntime.hpp
-frame.cpp                               signature.hpp
-frame.cpp                               stubCodeGenerator.hpp
-frame.cpp                               stubRoutines.hpp
-frame.cpp                               universe.inline.hpp
-
-frame.hpp                               assembler.hpp
-frame.hpp                               methodOop.hpp
-frame.hpp                               monitorChunk.hpp
-frame.hpp                               registerMap.hpp
-frame.hpp                               synchronizer.hpp
-frame.hpp                               top.hpp
-
-frame.inline.hpp                        bytecodeInterpreter.hpp
-frame.inline.hpp                        bytecodeInterpreter.inline.hpp
-frame.inline.hpp                        frame.hpp
-frame.inline.hpp                        interpreter.hpp
-frame.inline.hpp                        jniTypes_<arch>.hpp
-frame.inline.hpp                        methodOop.hpp
-frame.inline.hpp                        signature.hpp
-
-frame_<arch>.cpp                        frame.inline.hpp
-frame_<arch>.cpp                        handles.inline.hpp
-frame_<arch>.cpp                        interpreter.hpp
-frame_<arch>.cpp                        javaCalls.hpp
-frame_<arch>.cpp                        markOop.hpp
-frame_<arch>.cpp                        methodOop.hpp
-frame_<arch>.cpp                        monitorChunk.hpp
-frame_<arch>.cpp                        oop.inline.hpp
-frame_<arch>.cpp                        resourceArea.hpp
-frame_<arch>.cpp                        signature.hpp
-frame_<arch>.cpp                        stubCodeGenerator.hpp
-frame_<arch>.cpp                        stubRoutines.hpp
-frame_<arch>.cpp                        vmreg_<arch>.inline.hpp
-
-frame_<arch>.hpp                        generate_platform_dependent_include
-frame_<arch>.hpp                        synchronizer.hpp
-frame_<arch>.hpp                        top.hpp
-
-frame_<arch>.inline.hpp                 generate_platform_dependent_include
-
-gcLocker.cpp                            gcLocker.inline.hpp
-gcLocker.cpp                            sharedHeap.hpp
-gcLocker.cpp                            resourceArea.hpp
-
-gcLocker.hpp                            collectedHeap.hpp
-gcLocker.hpp                            genCollectedHeap.hpp
-gcLocker.hpp                            oop.hpp
-gcLocker.hpp                            os_<os_family>.inline.hpp
-gcLocker.hpp                            thread_<os_family>.inline.hpp
-gcLocker.hpp                            universe.hpp
-
-gcLocker.inline.hpp                     gcLocker.hpp
-
-genCollectedHeap.cpp                    aprofiler.hpp
-genCollectedHeap.cpp                    biasedLocking.hpp
-genCollectedHeap.cpp                    collectedHeap.inline.hpp
-genCollectedHeap.cpp                    collectorCounters.hpp
-genCollectedHeap.cpp                    compactPermGen.hpp
-genCollectedHeap.cpp                    filemap.hpp
-genCollectedHeap.cpp                    fprofiler.hpp
-genCollectedHeap.cpp                    gcLocker.inline.hpp
-genCollectedHeap.cpp                    genCollectedHeap.hpp
-genCollectedHeap.cpp                    genOopClosures.inline.hpp
-genCollectedHeap.cpp                    generation.inline.hpp
-genCollectedHeap.cpp                    generationSpec.hpp
-genCollectedHeap.cpp                    handles.hpp
-genCollectedHeap.cpp                    handles.inline.hpp
-genCollectedHeap.cpp                    icBuffer.hpp
-genCollectedHeap.cpp                    java.hpp
-genCollectedHeap.cpp                    memoryService.hpp
-genCollectedHeap.cpp                    oop.inline.hpp
-genCollectedHeap.cpp                    oop.inline2.hpp
-genCollectedHeap.cpp                    permGen.hpp
-genCollectedHeap.cpp                    resourceArea.hpp
-genCollectedHeap.cpp                    sharedHeap.hpp
-genCollectedHeap.cpp                    space.hpp
-genCollectedHeap.cpp                    symbolTable.hpp
-genCollectedHeap.cpp                    systemDictionary.hpp
-genCollectedHeap.cpp                    vmError.hpp
-genCollectedHeap.cpp                    vmGCOperations.hpp
-genCollectedHeap.cpp                    vmSymbols.hpp
-genCollectedHeap.cpp                    vmThread.hpp
-genCollectedHeap.cpp                    workgroup.hpp
-
-genCollectedHeap.hpp                    adaptiveSizePolicy.hpp
-genCollectedHeap.hpp                    collectorPolicy.hpp
-genCollectedHeap.hpp                    generation.hpp
-genCollectedHeap.hpp                    sharedHeap.hpp
-
-genMarkSweep.cpp                        codeCache.hpp
-genMarkSweep.cpp                        collectedHeap.inline.hpp
-genMarkSweep.cpp                        copy.hpp
-genMarkSweep.cpp                        events.hpp
-genMarkSweep.cpp                        fprofiler.hpp
-genMarkSweep.cpp                        genCollectedHeap.hpp
-genMarkSweep.cpp                        genMarkSweep.hpp
-genMarkSweep.cpp                        genOopClosures.inline.hpp
-genMarkSweep.cpp                        generation.inline.hpp
-genMarkSweep.cpp                        handles.inline.hpp
-genMarkSweep.cpp                        icBuffer.hpp
-genMarkSweep.cpp                        instanceRefKlass.hpp
-genMarkSweep.cpp                        javaClasses.hpp
-genMarkSweep.cpp                        jvmtiExport.hpp
-genMarkSweep.cpp                        modRefBarrierSet.hpp
-genMarkSweep.cpp                        oop.inline.hpp
-genMarkSweep.cpp                        referencePolicy.hpp
-genMarkSweep.cpp                        space.hpp
-genMarkSweep.cpp                        symbolTable.hpp
-genMarkSweep.cpp                        synchronizer.hpp
-genMarkSweep.cpp                        systemDictionary.hpp
-genMarkSweep.cpp                        thread_<os_family>.inline.hpp
-genMarkSweep.cpp                        vmSymbols.hpp
-genMarkSweep.cpp                        vmThread.hpp
-
-genMarkSweep.hpp                        markSweep.hpp
-
-genOopClosures.hpp                      iterator.hpp
-genOopClosures.hpp                      oop.hpp
-
-genOopClosures.inline.hpp               cardTableRS.hpp
-genOopClosures.inline.hpp               defNewGeneration.hpp
-genOopClosures.inline.hpp               genCollectedHeap.hpp
-genOopClosures.inline.hpp               genOopClosures.hpp
-genOopClosures.inline.hpp               genRemSet.hpp
-genOopClosures.inline.hpp               generation.hpp
-genOopClosures.inline.hpp               sharedHeap.hpp
-genOopClosures.inline.hpp               space.hpp
-
-genRemSet.cpp                           cardTableRS.hpp
-genRemSet.cpp                           genRemSet.hpp
-
-genRemSet.hpp                           oop.hpp
-
-generateOopMap.cpp                      bitMap.inline.hpp
-generateOopMap.cpp                      bytecodeStream.hpp
-generateOopMap.cpp                      generateOopMap.hpp
-generateOopMap.cpp                      handles.inline.hpp
-generateOopMap.cpp                      java.hpp
-generateOopMap.cpp                      oop.inline.hpp
-generateOopMap.cpp                      relocator.hpp
-generateOopMap.cpp                      symbolOop.hpp
-
-generateOopMap.hpp                      allocation.inline.hpp
-generateOopMap.hpp                      bytecodeStream.hpp
-generateOopMap.hpp                      methodOop.hpp
-generateOopMap.hpp                      oopsHierarchy.hpp
-generateOopMap.hpp                      signature.hpp
-generateOopMap.hpp                      universe.inline.hpp
-
-generation.cpp                          allocation.inline.hpp
-generation.cpp                          blockOffsetTable.inline.hpp
-generation.cpp                          cardTableRS.hpp
-generation.cpp                          collectedHeap.inline.hpp
-generation.cpp                          copy.hpp
-generation.cpp                          events.hpp
-generation.cpp                          gcLocker.inline.hpp
-generation.cpp                          genCollectedHeap.hpp
-generation.cpp                          genMarkSweep.hpp
-generation.cpp                          genOopClosures.hpp
-generation.cpp                          genOopClosures.inline.hpp
-generation.cpp                          generation.hpp
-generation.cpp                          generation.inline.hpp
-generation.cpp                          java.hpp
-generation.cpp                          oop.inline.hpp
-generation.cpp                          spaceDecorator.hpp
-generation.cpp                          space.inline.hpp
-
-generation.hpp                          allocation.hpp
-generation.hpp                          collectorCounters.hpp
-generation.hpp                          memRegion.hpp
-generation.hpp                          mutex.hpp
-generation.hpp                          perfData.hpp
-generation.hpp                          referenceProcessor.hpp
-generation.hpp                          universe.hpp
-generation.hpp                          virtualspace.hpp
-generation.hpp                          watermark.hpp
-
-generation.inline.hpp                   genCollectedHeap.hpp
-generation.inline.hpp                   generation.hpp
-generation.inline.hpp                   space.hpp
-
-genOopClosures.hpp                      oop.hpp
-
-generationSpec.cpp                      compactPermGen.hpp
-generationSpec.cpp                      defNewGeneration.hpp
-generationSpec.cpp                      filemap.hpp
-generationSpec.cpp                      genRemSet.hpp
-generationSpec.cpp                      generationSpec.hpp
-generationSpec.cpp                      java.hpp
-generationSpec.cpp                      tenuredGeneration.hpp
-
-generationSpec.hpp                      generation.hpp
-generationSpec.hpp                      permGen.hpp
-
-globalDefinitions.cpp                   globalDefinitions.hpp
-globalDefinitions.cpp                   os.hpp
-globalDefinitions.cpp                   top.hpp
-
-globalDefinitions.hpp                   globalDefinitions_<compiler>.hpp
-globalDefinitions.hpp                   macros.hpp
-
-globalDefinitions_<arch>.hpp            generate_platform_dependent_include
-
-globalDefinitions_<compiler>.hpp        jni.h
-
-globals.cpp                             allocation.inline.hpp
-globals.cpp                             arguments.hpp
-globals.cpp                             globals.hpp
-globals.cpp                             globals_extension.hpp
-globals.cpp                             oop.inline.hpp
-globals.cpp                             ostream.hpp
-globals.cpp                             top.hpp
-
-globals.hpp                             debug.hpp
-globals.hpp                             globals_<arch>.hpp
-globals.hpp                             globals_<os_arch>.hpp
-globals.hpp                             globals_<os_family>.hpp
-
-globals_extension.hpp                   globals.hpp
-globals_extension.hpp                   top.hpp
-
-growableArray.cpp                       growableArray.hpp
-growableArray.cpp                       resourceArea.hpp
-growableArray.cpp                       thread_<os_family>.inline.hpp
-
-growableArray.hpp                       allocation.hpp
-growableArray.hpp                       allocation.inline.hpp
-growableArray.hpp                       debug.hpp
-growableArray.hpp                       globalDefinitions.hpp
-growableArray.hpp                       top.hpp
-
-handles.cpp                             allocation.inline.hpp
-handles.cpp                             handles.inline.hpp
-handles.cpp                             oop.inline.hpp
-handles.cpp                             os_<os_family>.inline.hpp
-handles.cpp                             thread_<os_family>.inline.hpp
-
-handles.hpp                             klass.hpp
-handles.hpp                             klassOop.hpp
-handles.hpp                             top.hpp
-
-handles.inline.hpp                      handles.hpp
-handles.inline.hpp                      thread_<os_family>.inline.hpp
-
-hashtable.cpp                           allocation.inline.hpp
-hashtable.cpp                           dtrace.hpp
-hashtable.cpp                           hashtable.hpp
-hashtable.cpp                           hashtable.inline.hpp
-hashtable.cpp                           oop.inline.hpp
-hashtable.cpp                           resourceArea.hpp
-hashtable.cpp                           safepoint.hpp
-
-hashtable.hpp                           allocation.hpp
-hashtable.hpp                           handles.hpp
-hashtable.hpp                           oop.hpp
-hashtable.hpp                           symbolOop.hpp
-
-hashtable.inline.hpp                    allocation.inline.hpp
-hashtable.inline.hpp                    hashtable.hpp
-
-heap.cpp                                heap.hpp
-heap.cpp                                oop.inline.hpp
-heap.cpp                                os.hpp
-
-heap.hpp                                allocation.hpp
-heap.hpp                                virtualspace.hpp
-
-// heapDumper is jck optional, put cpp deps in includeDB_features
-
-heapDumper.hpp                          allocation.hpp
-heapDumper.hpp                          klassOop.hpp
-heapDumper.hpp                          oop.hpp
-heapDumper.hpp                          os.hpp
-
-// heapInspection is jck optional, put cpp deps in includeDB_features
-
-heapInspection.hpp                      allocation.inline.hpp
-heapInspection.hpp                      oop.inline.hpp
-
-histogram.cpp                           histogram.hpp
-histogram.cpp                           oop.inline.hpp
-
-histogram.hpp                           allocation.hpp
-histogram.hpp                           growableArray.hpp
-histogram.hpp                           os.hpp
-histogram.hpp                           os_<os_family>.inline.hpp
-
-hpi.cpp                                 hpi.hpp
-hpi.cpp                                 jvm.h
-
-hpi.hpp                                 globalDefinitions.hpp
-hpi.hpp                                 hpi_imported.h
-hpi.hpp                                 os.hpp
-hpi.hpp                                 top.hpp
-
-hpi_<os_family>.cpp                     hpi.hpp
-hpi_<os_family>.cpp                     oop.inline.hpp
-hpi_<os_family>.cpp                     os.hpp
-
-hpi_imported.h                          jni.h
-
-icBuffer.cpp                            assembler_<arch>.inline.hpp
-icBuffer.cpp                            collectedHeap.inline.hpp
-icBuffer.cpp                            compiledIC.hpp
-icBuffer.cpp                            icBuffer.hpp
-icBuffer.cpp                            interpreter.hpp
-icBuffer.cpp                            linkResolver.hpp
-icBuffer.cpp                            methodOop.hpp
-icBuffer.cpp                            mutexLocker.hpp
-icBuffer.cpp                            nmethod.hpp
-icBuffer.cpp                            oop.inline.hpp
-icBuffer.cpp                            oop.inline2.hpp
-icBuffer.cpp                            resourceArea.hpp
-icBuffer.cpp                            scopeDesc.hpp
-icBuffer.cpp                            stubRoutines.hpp
-icBuffer.cpp                            universe.inline.hpp
-
-icBuffer.hpp                            allocation.hpp
-icBuffer.hpp                            bytecodes.hpp
-icBuffer.hpp                            stubs.hpp
-
-icBuffer_<arch>.cpp                     assembler.hpp
-icBuffer_<arch>.cpp                     assembler_<arch>.inline.hpp
-icBuffer_<arch>.cpp                     bytecodes.hpp
-icBuffer_<arch>.cpp                     collectedHeap.inline.hpp
-icBuffer_<arch>.cpp                     icBuffer.hpp
-icBuffer_<arch>.cpp                     nativeInst_<arch>.hpp
-icBuffer_<arch>.cpp                     oop.inline.hpp
-icBuffer_<arch>.cpp                     oop.inline2.hpp
-icBuffer_<arch>.cpp                     resourceArea.hpp
-
-icache.cpp                              icache.hpp
-icache.cpp                              resourceArea.hpp
-
-icache.hpp                              allocation.hpp
-icache.hpp                              stubCodeGenerator.hpp
-
-icache_<arch>.cpp                       assembler_<arch>.inline.hpp
-icache_<arch>.cpp                       icache.hpp
-
-icache_<arch>.hpp                       generate_platform_dependent_include
-
-init.cpp                                bytecodes.hpp
-init.cpp                                collectedHeap.hpp
-init.cpp                                handles.inline.hpp
-init.cpp                                icBuffer.hpp
-init.cpp                                icache.hpp
-init.cpp                                init.hpp
-init.cpp                                methodHandles.hpp
-init.cpp                                safepoint.hpp
-init.cpp                                sharedRuntime.hpp
-init.cpp                                universe.hpp
-
-init.hpp                                top.hpp
-
-instanceKlass.cpp                       collectedHeap.inline.hpp
-instanceKlass.cpp                       compileBroker.hpp
-instanceKlass.cpp                       dtrace.hpp
-instanceKlass.cpp                       fieldDescriptor.hpp
-instanceKlass.cpp                       genOopClosures.inline.hpp
-instanceKlass.cpp                       handles.inline.hpp
-instanceKlass.cpp                       instanceKlass.hpp
-instanceKlass.cpp                       instanceOop.hpp
-instanceKlass.cpp                       javaCalls.hpp
-instanceKlass.cpp                       javaClasses.hpp
-instanceKlass.cpp                       jvmti.h
-instanceKlass.cpp                       jvmtiExport.hpp
-instanceKlass.cpp                       jvmtiRedefineClassesTrace.hpp
-instanceKlass.cpp                       markSweep.inline.hpp
-instanceKlass.cpp                       methodOop.hpp
-instanceKlass.cpp                       mutexLocker.hpp
-instanceKlass.cpp                       objArrayKlassKlass.hpp
-instanceKlass.cpp                       oop.inline.hpp
-instanceKlass.cpp                       oopFactory.hpp
-instanceKlass.cpp                       oopMapCache.hpp
-instanceKlass.cpp                       permGen.hpp
-instanceKlass.cpp                       rewriter.hpp
-instanceKlass.cpp                       symbolOop.hpp
-instanceKlass.cpp                       systemDictionary.hpp
-instanceKlass.cpp                       threadService.hpp
-instanceKlass.cpp                       thread_<os_family>.inline.hpp
-instanceKlass.cpp                       verifier.hpp
-instanceKlass.cpp                       vmSymbols.hpp
-
-instanceKlass.hpp                       accessFlags.hpp
-instanceKlass.hpp                       bitMap.inline.hpp
-instanceKlass.hpp                       constMethodOop.hpp
-instanceKlass.hpp                       constantPoolOop.hpp
-instanceKlass.hpp                       handles.hpp
-instanceKlass.hpp                       instanceOop.hpp
-instanceKlass.hpp                       klassOop.hpp
-instanceKlass.hpp                       klassVtable.hpp
-instanceKlass.hpp                       objArrayOop.hpp
-instanceKlass.hpp                       os.hpp
-
-instanceKlassKlass.cpp                  collectedHeap.inline.hpp
-instanceKlassKlass.cpp                  constantPoolOop.hpp
-instanceKlassKlass.cpp                  fieldDescriptor.hpp
-instanceKlassKlass.cpp                  gcLocker.hpp
-instanceKlassKlass.cpp                  instanceKlass.hpp
-instanceKlassKlass.cpp                  instanceKlassKlass.hpp
-instanceKlassKlass.cpp                  instanceRefKlass.hpp
-instanceKlassKlass.cpp                  javaClasses.hpp
-instanceKlassKlass.cpp                  jvmtiExport.hpp
-instanceKlassKlass.cpp                  markSweep.inline.hpp
-instanceKlassKlass.cpp                  objArrayKlassKlass.hpp
-instanceKlassKlass.cpp                  objArrayOop.hpp
-instanceKlassKlass.cpp                  oop.inline.hpp
-instanceKlassKlass.cpp                  oop.inline2.hpp
-instanceKlassKlass.cpp                  oopMapCache.hpp
-instanceKlassKlass.cpp                  symbolOop.hpp
-instanceKlassKlass.cpp                  systemDictionary.hpp
-instanceKlassKlass.cpp                  typeArrayOop.hpp
-
-instanceKlassKlass.hpp                  klassKlass.hpp
-
-instanceOop.cpp                         instanceOop.hpp
-
-instanceOop.hpp                         oop.hpp
-
-instanceRefKlass.cpp                    collectedHeap.hpp
-instanceRefKlass.cpp                    collectedHeap.inline.hpp
-instanceRefKlass.cpp                    genCollectedHeap.hpp
-instanceRefKlass.cpp                    genOopClosures.inline.hpp
-instanceRefKlass.cpp                    instanceRefKlass.hpp
-instanceRefKlass.cpp                    javaClasses.hpp
-instanceRefKlass.cpp                    markSweep.inline.hpp
-instanceRefKlass.cpp                    oop.inline.hpp
-instanceRefKlass.cpp                    preserveException.hpp
-instanceRefKlass.cpp                    systemDictionary.hpp
-
-instanceRefKlass.hpp                    instanceKlass.hpp
-
-interfaceSupport.cpp                    collectedHeap.hpp
-interfaceSupport.cpp                    collectedHeap.inline.hpp
-interfaceSupport.cpp                    genCollectedHeap.hpp
-interfaceSupport.cpp                    init.hpp
-interfaceSupport.cpp                    interfaceSupport.hpp
-interfaceSupport.cpp                    markSweep.hpp
-interfaceSupport.cpp                    preserveException.hpp
-interfaceSupport.cpp                    resourceArea.hpp
-interfaceSupport.cpp                    threadLocalStorage.hpp
-interfaceSupport.cpp                    vframe.hpp
-
-interfaceSupport.hpp                    gcLocker.hpp
-interfaceSupport.hpp                    globalDefinitions.hpp
-interfaceSupport.hpp                    handles.inline.hpp
-interfaceSupport.hpp                    mutexLocker.hpp
-interfaceSupport.hpp                    orderAccess.hpp
-interfaceSupport.hpp                    os.hpp
-interfaceSupport.hpp                    preserveException.hpp
-interfaceSupport.hpp                    safepoint.hpp
-interfaceSupport.hpp                    thread_<os_family>.inline.hpp
-interfaceSupport.hpp                    top.hpp
-interfaceSupport.hpp                    vmThread.hpp
-
-interfaceSupport_<os_family>.hpp        generate_platform_dependent_include
-
-interp_masm_<arch_model>.cpp            arrayOop.hpp
-interp_masm_<arch_model>.cpp            biasedLocking.hpp
-interp_masm_<arch_model>.cpp            interp_masm_<arch_model>.hpp
-interp_masm_<arch_model>.cpp            interpreterRuntime.hpp
-interp_masm_<arch_model>.cpp            interpreter.hpp
-interp_masm_<arch_model>.cpp            jvmtiExport.hpp
-interp_masm_<arch_model>.cpp            jvmtiRedefineClassesTrace.hpp
-interp_masm_<arch_model>.cpp            jvmtiThreadState.hpp
-interp_masm_<arch_model>.cpp            markOop.hpp
-interp_masm_<arch_model>.cpp            methodDataOop.hpp
-interp_masm_<arch_model>.cpp            methodOop.hpp
-interp_masm_<arch_model>.cpp            sharedRuntime.hpp
-interp_masm_<arch_model>.cpp            synchronizer.hpp
-interp_masm_<arch_model>.cpp            thread_<os_family>.inline.hpp
-
-interp_masm_<arch_model>.hpp            assembler_<arch>.inline.hpp
-interp_masm_<arch_model>.hpp            invocationCounter.hpp
-
-interpreter.cpp                         allocation.inline.hpp
-interpreter.cpp                         arrayOop.hpp
-interpreter.cpp                         assembler.hpp
-interpreter.cpp                         bytecodeHistogram.hpp
-interpreter.cpp                         bytecodeInterpreter.hpp
-interpreter.cpp                         forte.hpp
-interpreter.cpp                         handles.inline.hpp
-interpreter.cpp                         interpreter.hpp
-interpreter.cpp                         interpreterRuntime.hpp
-interpreter.cpp                         interpreter.hpp
-interpreter.cpp                         jvmtiExport.hpp
-interpreter.cpp                         methodDataOop.hpp
-interpreter.cpp                         methodOop.hpp
-interpreter.cpp                         oop.inline.hpp
-interpreter.cpp                         resourceArea.hpp
-interpreter.cpp                         sharedRuntime.hpp
-interpreter.cpp                         stubRoutines.hpp
-interpreter.cpp                         templateTable.hpp
-interpreter.cpp                         timer.hpp
-
-interpreter.hpp                         cppInterpreter.hpp
-interpreter.hpp                         stubs.hpp
-interpreter.hpp                         templateInterpreter.hpp
-
-interpreterRT_<arch_model>.cpp          allocation.inline.hpp
-interpreterRT_<arch_model>.cpp          handles.inline.hpp
-interpreterRT_<arch_model>.cpp          icache.hpp
-interpreterRT_<arch_model>.cpp          interfaceSupport.hpp
-interpreterRT_<arch_model>.cpp          interpreterRuntime.hpp
-interpreterRT_<arch_model>.cpp          interpreter.hpp
-interpreterRT_<arch_model>.cpp          methodOop.hpp
-interpreterRT_<arch_model>.cpp          oop.inline.hpp
-interpreterRT_<arch_model>.cpp          signature.hpp
-interpreterRT_<arch_model>.cpp          universe.inline.hpp
-
-interpreterRT_<arch>.hpp                allocation.hpp
-interpreterRT_<arch>.hpp                generate_platform_dependent_include
-
-interpreterRuntime.cpp                  biasedLocking.hpp
-interpreterRuntime.cpp                  collectedHeap.hpp
-interpreterRuntime.cpp                  compileBroker.hpp
-interpreterRuntime.cpp                  compilationPolicy.hpp
-interpreterRuntime.cpp                  constantPoolOop.hpp
-interpreterRuntime.cpp                  cpCacheOop.hpp
-interpreterRuntime.cpp                  deoptimization.hpp
-interpreterRuntime.cpp                  events.hpp
-interpreterRuntime.cpp                  fieldDescriptor.hpp
-interpreterRuntime.cpp                  handles.inline.hpp
-interpreterRuntime.cpp                  instanceKlass.hpp
-interpreterRuntime.cpp                  interfaceSupport.hpp
-interpreterRuntime.cpp                  interpreterRuntime.hpp
-interpreterRuntime.cpp                  interpreter.hpp
-interpreterRuntime.cpp                  java.hpp
-interpreterRuntime.cpp                  jfieldIDWorkaround.hpp
-interpreterRuntime.cpp                  jvmtiExport.hpp
-interpreterRuntime.cpp                  linkResolver.hpp
-interpreterRuntime.cpp                  methodDataOop.hpp
-interpreterRuntime.cpp                  nativeLookup.hpp
-interpreterRuntime.cpp                  objArrayKlass.hpp
-interpreterRuntime.cpp                  oop.inline.hpp
-interpreterRuntime.cpp                  oopFactory.hpp
-interpreterRuntime.cpp                  osThread.hpp
-interpreterRuntime.cpp                  sharedRuntime.hpp
-interpreterRuntime.cpp                  stubRoutines.hpp
-interpreterRuntime.cpp                  symbolOop.hpp
-interpreterRuntime.cpp                  synchronizer.hpp
-interpreterRuntime.cpp                  systemDictionary.hpp
-interpreterRuntime.cpp                  templateTable.hpp
-interpreterRuntime.cpp                  threadCritical.hpp
-interpreterRuntime.cpp                  universe.inline.hpp
-interpreterRuntime.cpp                  vmSymbols.hpp
-interpreterRuntime.cpp                  vm_version_<arch>.hpp
-
-interpreterRuntime.hpp                  bytecode.hpp
-interpreterRuntime.hpp                  frame.inline.hpp
-interpreterRuntime.hpp                  linkResolver.hpp
-interpreterRuntime.hpp                  methodOop.hpp
-interpreterRuntime.hpp                  signature.hpp
-interpreterRuntime.hpp                  thread_<os_family>.inline.hpp
-interpreterRuntime.hpp                  top.hpp
-interpreterRuntime.hpp                  universe.hpp
-
-interpreter_<arch_model>.cpp            arguments.hpp
-interpreter_<arch_model>.cpp            arrayOop.hpp
-interpreter_<arch_model>.cpp            assembler.hpp
-interpreter_<arch_model>.cpp            bytecodeHistogram.hpp
-interpreter_<arch_model>.cpp            debug.hpp
-interpreter_<arch_model>.cpp            deoptimization.hpp
-interpreter_<arch_model>.cpp            frame.inline.hpp
-interpreter_<arch_model>.cpp            interpreterRuntime.hpp
-interpreter_<arch_model>.cpp            interpreter.hpp
-interpreter_<arch_model>.cpp            interpreterGenerator.hpp
-interpreter_<arch_model>.cpp            jvmtiExport.hpp
-interpreter_<arch_model>.cpp            jvmtiThreadState.hpp
-interpreter_<arch_model>.cpp            methodDataOop.hpp
-interpreter_<arch_model>.cpp            methodHandles.hpp
-interpreter_<arch_model>.cpp            methodOop.hpp
-interpreter_<arch_model>.cpp            oop.inline.hpp
-interpreter_<arch_model>.cpp            sharedRuntime.hpp
-interpreter_<arch_model>.cpp            stubRoutines.hpp
-interpreter_<arch_model>.cpp            synchronizer.hpp
-interpreter_<arch_model>.cpp            templateTable.hpp
-interpreter_<arch_model>.cpp            timer.hpp
-interpreter_<arch_model>.cpp            vframeArray.hpp
-
-interpreter_<arch>.hpp                  generate_platform_dependent_include
-
-interpreterGenerator.hpp                cppInterpreter.hpp
-interpreterGenerator.hpp                cppInterpreterGenerator.hpp
-interpreterGenerator.hpp                templateInterpreter.hpp
-interpreterGenerator.hpp                templateInterpreterGenerator.hpp
-
-interpreterGenerator_<arch>.hpp         generate_platform_dependent_include
-
-invocationCounter.cpp                   frame.hpp
-invocationCounter.cpp                   handles.inline.hpp
-invocationCounter.cpp                   invocationCounter.hpp
-
-invocationCounter.hpp                   allocation.hpp
-invocationCounter.hpp                   exceptions.hpp
-invocationCounter.hpp                   handles.hpp
-
-intHisto.cpp				intHisto.hpp
-
-intHisto.hpp				allocation.hpp
-intHisto.hpp                            growableArray.hpp
-
-iterator.cpp                            iterator.hpp
-iterator.cpp                            oop.inline.hpp
-
-iterator.hpp                            allocation.hpp
-iterator.hpp                            memRegion.hpp
-iterator.hpp                            prefetch.hpp
-iterator.hpp                            top.hpp
-
-java.cpp                                aprofiler.hpp
-java.cpp                                arguments.hpp
-java.cpp                                biasedLocking.hpp
-java.cpp                                bytecodeHistogram.hpp
-java.cpp                                classLoader.hpp
-java.cpp                                codeCache.hpp
-java.cpp                                compilationPolicy.hpp
-java.cpp                                compileBroker.hpp
-java.cpp                                compilerOracle.hpp
-java.cpp                                constantPoolOop.hpp
-java.cpp                                dtrace.hpp
-java.cpp                                fprofiler.hpp
-java.cpp                                genCollectedHeap.hpp
-java.cpp                                generateOopMap.hpp
-java.cpp                                globalDefinitions.hpp
-java.cpp                                histogram.hpp
-java.cpp                                init.hpp
-java.cpp                                instanceKlass.hpp
-java.cpp                                instanceKlassKlass.hpp
-java.cpp                                instanceOop.hpp
-java.cpp                                interfaceSupport.hpp
-java.cpp                                java.hpp
-java.cpp                                jvmtiExport.hpp
-java.cpp                                memprofiler.hpp
-java.cpp                                methodOop.hpp
-java.cpp                                objArrayOop.hpp
-java.cpp                                oop.inline.hpp
-java.cpp                                oopFactory.hpp
-java.cpp                                sharedRuntime.hpp
-java.cpp                                statSampler.hpp
-java.cpp                                symbolOop.hpp
-java.cpp                                symbolTable.hpp
-java.cpp                                systemDictionary.hpp
-java.cpp                                task.hpp
-java.cpp                                thread_<os_family>.inline.hpp
-java.cpp                                timer.hpp
-java.cpp                                universe.hpp
-java.cpp                                vmError.hpp
-java.cpp                                vm_operations.hpp
-java.cpp                                vm_version_<arch>.hpp
-
-java.hpp                                os.hpp
-
-javaAssertions.cpp                      allocation.inline.hpp
-javaAssertions.cpp                      handles.inline.hpp
-javaAssertions.cpp                      javaAssertions.hpp
-javaAssertions.cpp                      javaClasses.hpp
-javaAssertions.cpp                      oop.inline.hpp
-javaAssertions.cpp                      oopFactory.hpp
-javaAssertions.cpp                      systemDictionary.hpp
-javaAssertions.cpp                      vmSymbols.hpp
-
-javaAssertions.hpp                      exceptions.hpp
-javaAssertions.hpp                      objArrayOop.hpp
-javaAssertions.hpp                      ostream.hpp
-javaAssertions.hpp                      typeArrayOop.hpp
-
-javaCalls.cpp                           compilationPolicy.hpp
-javaCalls.cpp                           compileBroker.hpp
-javaCalls.cpp                           handles.inline.hpp
-javaCalls.cpp                           interfaceSupport.hpp
-javaCalls.cpp                           interpreter.hpp
-javaCalls.cpp                           javaCalls.hpp
-javaCalls.cpp                           jniCheck.hpp
-javaCalls.cpp                           linkResolver.hpp
-javaCalls.cpp                           mutexLocker.hpp
-javaCalls.cpp                           nmethod.hpp
-javaCalls.cpp                           oop.inline.hpp
-javaCalls.cpp                           signature.hpp
-javaCalls.cpp                           stubRoutines.hpp
-javaCalls.cpp                           systemDictionary.hpp
-javaCalls.cpp                           thread_<os_family>.inline.hpp
-javaCalls.cpp                           universe.inline.hpp
-javaCalls.cpp                           vmSymbols.hpp
-javaCalls.hpp                           allocation.hpp
-
-javaCalls.hpp                           handles.hpp
-javaCalls.hpp                           javaFrameAnchor.hpp
-javaCalls.hpp                           jniTypes_<arch>.hpp
-javaCalls.hpp                           methodOop.hpp
-javaCalls.hpp                           thread_<os_family>.inline.hpp
-javaCalls.hpp                           vmThread.hpp
-
-javaClasses.cpp                         debugInfo.hpp
-javaClasses.cpp                         fieldDescriptor.hpp
-javaClasses.cpp                         handles.inline.hpp
-javaClasses.cpp                         instanceKlass.hpp
-javaClasses.cpp                         interfaceSupport.hpp
-javaClasses.cpp                         interpreter.hpp
-javaClasses.cpp                         java.hpp
-javaClasses.cpp                         javaCalls.hpp
-javaClasses.cpp                         javaClasses.hpp
-javaClasses.cpp                         klass.hpp
-javaClasses.cpp                         klassOop.hpp
-javaClasses.cpp                         methodOop.hpp
-javaClasses.cpp                         oopFactory.hpp
-javaClasses.cpp                         pcDesc.hpp
-javaClasses.cpp                         preserveException.hpp
-javaClasses.cpp                         resourceArea.hpp
-javaClasses.cpp                         safepoint.hpp
-javaClasses.cpp                         symbolOop.hpp
-javaClasses.cpp                         symbolTable.hpp
-javaClasses.cpp                         thread_<os_family>.inline.hpp
-javaClasses.cpp                         typeArrayOop.hpp
-javaClasses.cpp                         universe.inline.hpp
-javaClasses.cpp                         vframe.hpp
-javaClasses.cpp                         vmSymbols.hpp
-
-javaClasses.hpp                         jvmti.h
-javaClasses.hpp                         oop.hpp
-javaClasses.hpp                         os.hpp
-javaClasses.hpp                         systemDictionary.hpp
-javaClasses.hpp                         utf8.hpp
-
-javaFrameAnchor.hpp                     globalDefinitions.hpp
-javaFrameAnchor.hpp                     orderAccess_<os_arch>.inline.hpp
-
-javaFrameAnchor_<arch>.hpp              generate_platform_dependent_include
-
-jni.cpp                                 allocation.inline.hpp
-jni.cpp                                 classLoader.hpp
-jni.cpp                                 compilationPolicy.hpp
-jni.cpp                                 defaultStream.hpp
-jni.cpp                                 dtrace.hpp
-jni.cpp                                 events.hpp
-jni.cpp                                 fieldDescriptor.hpp
-jni.cpp                                 fprofiler.hpp
-jni.cpp                                 gcLocker.inline.hpp
-jni.cpp                                 handles.inline.hpp
-jni.cpp                                 histogram.hpp
-jni.cpp                                 instanceKlass.hpp
-jni.cpp                                 instanceOop.hpp
-jni.cpp                                 interfaceSupport.hpp
-jni.cpp                                 java.hpp
-jni.cpp                                 javaCalls.hpp
-jni.cpp                                 javaClasses.hpp
-jni.cpp                                 jfieldIDWorkaround.hpp
-jni.cpp                                 jni.h
-jni.cpp                                 jniCheck.hpp
-jni.cpp                                 jniFastGetField.hpp
-jni.cpp                                 jniTypes_<arch>.hpp
-jni.cpp                                 jvm.h
-jni.cpp                                 jvm_misc.hpp
-jni.cpp                                 jvmtiExport.hpp
-jni.cpp                                 jvmtiThreadState.hpp
-jni.cpp                                 linkResolver.hpp
-jni.cpp                                 markOop.hpp
-jni.cpp                                 methodOop.hpp
-jni.cpp                                 objArrayKlass.hpp
-jni.cpp                                 objArrayOop.hpp
-jni.cpp                                 oop.inline.hpp
-jni.cpp                                 oopFactory.hpp
-jni.cpp                                 os_<os_family>.inline.hpp
-jni.cpp                                 reflection.hpp
-jni.cpp                                 runtimeService.hpp
-jni.cpp                                 sharedRuntime.hpp
-jni.cpp                                 signature.hpp
-jni.cpp                                 symbolOop.hpp
-jni.cpp                                 symbolTable.hpp
-jni.cpp                                 systemDictionary.hpp
-jni.cpp                                 thread_<os_family>.inline.hpp
-jni.cpp                                 typeArrayKlass.hpp
-jni.cpp                                 typeArrayOop.hpp
-jni.cpp                                 universe.inline.hpp
-jni.cpp                                 vmSymbols.hpp
-jni.cpp                                 vm_operations.hpp
-
-// jniCheck is jck optional, put cpp deps in includeDB_features
-
-jniFastGetField.cpp                     jniFastGetField.hpp
-
-jniFastGetField.hpp                     allocation.hpp
-jniFastGetField.hpp                     jvm_misc.hpp
-
-jniFastGetField_<arch_model>.cpp        assembler_<arch>.inline.hpp
-jniFastGetField_<arch_model>.cpp        jniFastGetField.hpp
-jniFastGetField_<arch_model>.cpp        jvm_misc.hpp
-jniFastGetField_<arch_model>.cpp        resourceArea.hpp
-jniFastGetField_<arch_model>.cpp        safepoint.hpp
-
-jniHandles.cpp                          jniHandles.hpp
-jniHandles.cpp                          mutexLocker.hpp
-jniHandles.cpp                          oop.inline.hpp
-jniHandles.cpp                          systemDictionary.hpp
-jniHandles.cpp                          thread_<os_family>.inline.hpp
-
-jniHandles.hpp                          handles.hpp
-jniHandles.hpp                          top.hpp
-
-jniPeriodicChecker.cpp                  allocation.inline.hpp
-jniPeriodicChecker.cpp                  jniPeriodicChecker.hpp
-jniPeriodicChecker.cpp                  task.hpp
-
-jniTypes_<arch>.hpp                     allocation.hpp
-jniTypes_<arch>.hpp                     jni.h
-jniTypes_<arch>.hpp                     oop.hpp
-
-jni_<arch>.h                            generate_platform_dependent_include
-
-jvm.cpp                                 arguments.hpp
-jvm.cpp                                 attachListener.hpp
-jvm.cpp                                 classLoader.hpp
-jvm.cpp                                 collectedHeap.inline.hpp
-jvm.cpp                                 copy.hpp
-jvm.cpp                                 defaultStream.hpp
-jvm.cpp                                 dtrace.hpp
-jvm.cpp                                 dtraceJSDT.hpp
-jvm.cpp                                 events.hpp
-jvm.cpp                                 handles.inline.hpp
-jvm.cpp                                 histogram.hpp
-jvm.cpp                                 hpi.hpp
-jvm.cpp                                 hpi_<os_family>.hpp
-jvm.cpp                                 init.hpp
-jvm.cpp                                 instanceKlass.hpp
-jvm.cpp                                 interfaceSupport.hpp
-jvm.cpp                                 java.hpp
-jvm.cpp                                 javaAssertions.hpp
-jvm.cpp                                 javaCalls.hpp
-jvm.cpp                                 javaClasses.hpp
-jvm.cpp                                 jfieldIDWorkaround.hpp
-jvm.cpp                                 jvm.h
-jvm.cpp                                 jvm_<os_family>.h
-jvm.cpp                                 jvm_misc.hpp
-jvm.cpp                                 jvmtiExport.hpp
-jvm.cpp                                 jvmtiThreadState.hpp
-jvm.cpp                                 management.hpp
-jvm.cpp                                 nativeLookup.hpp
-jvm.cpp                                 objArrayKlass.hpp
-jvm.cpp                                 oopFactory.hpp
-jvm.cpp                                 os.hpp
-jvm.cpp                                 perfData.hpp
-jvm.cpp                                 privilegedStack.hpp
-jvm.cpp                                 reflection.hpp
-jvm.cpp                                 symbolTable.hpp
-jvm.cpp                                 systemDictionary.hpp
-jvm.cpp                                 threadService.hpp
-jvm.cpp                                 top.hpp
-jvm.cpp                                 universe.inline.hpp
-jvm.cpp                                 utf8.hpp
-jvm.cpp                                 vframe.hpp
-jvm.cpp                                 vmSymbols.hpp
-jvm.cpp                                 vm_operations.hpp
-
-jvm.h                                   globalDefinitions.hpp
-jvm.h                                   jni.h
-jvm.h                                   jvm_<os_family>.h
-jvm.h                                   reflectionCompat.hpp
-
-jvm_<os_family>.cpp                     interfaceSupport.hpp
-jvm_<os_family>.cpp                     jvm.h
-jvm_<os_family>.cpp                     osThread.hpp
-
-jvm_misc.hpp                            handles.hpp
-jvm_misc.hpp                            jni.h
-
-jvmtiExport.hpp                         allocation.hpp
-jvmtiExport.hpp                         globalDefinitions.hpp
-jvmtiExport.hpp                         growableArray.hpp
-jvmtiExport.hpp                         handles.hpp
-jvmtiExport.hpp                         iterator.hpp
-jvmtiExport.hpp                         jvmti.h
-jvmtiExport.hpp                         jvmticmlr.h
-jvmtiExport.hpp                         oop.hpp
-jvmtiExport.hpp                         oopsHierarchy.hpp
-
-jvmtiThreadState.hpp                    allocation.hpp
-jvmtiThreadState.hpp                    allocation.inline.hpp
-jvmtiThreadState.hpp                    growableArray.hpp
-jvmtiThreadState.hpp                    jvmti.h
-jvmtiThreadState.hpp                    jvmtiEventController.hpp
-jvmtiThreadState.hpp                    thread.hpp
-
-klass.cpp                               atomic.hpp
-klass.cpp                               collectedHeap.inline.hpp
-klass.cpp                               instanceKlass.hpp
-klass.cpp                               klass.inline.hpp
-klass.cpp                               klassOop.hpp
-klass.cpp                               oop.inline.hpp
-klass.cpp                               oop.inline2.hpp
-klass.cpp                               oopFactory.hpp
-klass.cpp                               resourceArea.hpp
-klass.cpp                               systemDictionary.hpp
-klass.cpp                               vmSymbols.hpp
-
-klass.hpp                               accessFlags.hpp
-klass.hpp                               genOopClosures.hpp
-klass.hpp                               iterator.hpp
-klass.hpp                               klassOop.hpp
-klass.hpp                               klassPS.hpp
-klass.hpp                               memRegion.hpp
-klass.hpp                               oop.hpp
-klass.hpp                               specialized_oop_closures.hpp
-
-klass.inline.hpp                        klass.hpp
-klass.inline.hpp                        markOop.hpp
-
-klassKlass.cpp                          collectedHeap.hpp
-klassKlass.cpp                          collectedHeap.inline.hpp
-klassKlass.cpp                          constantPoolKlass.hpp
-klassKlass.cpp                          handles.inline.hpp
-klassKlass.cpp                          instanceKlass.hpp
-klassKlass.cpp                          instanceOop.hpp
-klassKlass.cpp                          klassKlass.hpp
-klassKlass.cpp                          klassOop.hpp
-klassKlass.cpp                          markSweep.inline.hpp
-klassKlass.cpp                          methodKlass.hpp
-klassKlass.cpp                          objArrayKlass.hpp
-klassKlass.cpp                          oop.inline.hpp
-klassKlass.cpp                          oop.inline2.hpp
-klassKlass.cpp                          oopFactory.hpp
-klassKlass.cpp                          permGen.hpp
-klassKlass.cpp                          symbolKlass.hpp
-klassKlass.cpp                          symbolOop.hpp
-klassKlass.cpp                          typeArrayKlass.hpp
-
-klassKlass.hpp                          klass.hpp
-klassKlass.hpp                          klassOop.hpp
-klassKlass.hpp                          oopFactory.hpp
-
-klassOop.cpp                            klassOop.hpp
-
-klassOop.hpp                            oop.hpp
-
-klassVtable.cpp                         arguments.hpp
-klassVtable.cpp                         copy.hpp
-klassVtable.cpp                         gcLocker.hpp
-klassVtable.cpp                         handles.inline.hpp
-klassVtable.cpp                         instanceKlass.hpp
-klassVtable.cpp                         jvmtiRedefineClassesTrace.hpp
-klassVtable.cpp                         klassOop.hpp
-klassVtable.cpp                         klassVtable.hpp
-klassVtable.cpp                         markSweep.inline.hpp
-klassVtable.cpp                         methodOop.hpp
-klassVtable.cpp                         objArrayOop.hpp
-klassVtable.cpp                         oop.inline.hpp
-klassVtable.cpp                         resourceArea.hpp
-klassVtable.cpp                         systemDictionary.hpp
-klassVtable.cpp                         universe.inline.hpp
-klassVtable.cpp                         vmSymbols.hpp
-
-klassVtable.hpp                         allocation.hpp
-klassVtable.hpp                         growableArray.hpp
-klassVtable.hpp                         handles.hpp
-klassVtable.hpp                         oopsHierarchy.hpp
-
-linkResolver.cpp                        bytecode.hpp
-linkResolver.cpp                        collectedHeap.inline.hpp
-linkResolver.cpp                        compilationPolicy.hpp
-linkResolver.cpp                        compileBroker.hpp
-linkResolver.cpp                        fieldDescriptor.hpp
-linkResolver.cpp                        frame.inline.hpp
-linkResolver.cpp                        handles.inline.hpp
-linkResolver.cpp                        instanceKlass.hpp
-linkResolver.cpp                        interpreterRuntime.hpp
-linkResolver.cpp                        linkResolver.hpp
-linkResolver.cpp                        methodHandles.hpp
-linkResolver.cpp                        nativeLookup.hpp
-linkResolver.cpp                        objArrayOop.hpp
-linkResolver.cpp                        reflection.hpp
-linkResolver.cpp                        resourceArea.hpp
-linkResolver.cpp                        signature.hpp
-linkResolver.cpp                        systemDictionary.hpp
-linkResolver.cpp                        thread_<os_family>.inline.hpp
-linkResolver.cpp                        universe.inline.hpp
-linkResolver.cpp                        vmSymbols.hpp
-linkResolver.cpp                        vmThread.hpp
-
-linkResolver.hpp                        methodOop.hpp
-linkResolver.hpp                        top.hpp
-
-liveRange.hpp                           copy.hpp
-
-loaderConstraints.cpp                   handles.inline.hpp
-loaderConstraints.cpp                   hashtable.inline.hpp
-loaderConstraints.cpp                   loaderConstraints.hpp
-loaderConstraints.cpp                   oop.inline.hpp
-loaderConstraints.cpp                   resourceArea.hpp
-loaderConstraints.cpp                   safepoint.hpp
-
-loaderConstraints.hpp                   dictionary.hpp
-loaderConstraints.hpp                   placeholders.hpp
-loaderConstraints.hpp                   hashtable.hpp
-
-location.cpp                            debugInfo.hpp
-location.cpp                            location.hpp
-
-location.hpp                            allocation.hpp
-location.hpp                            assembler.hpp
-location.hpp                            vmreg.hpp
-
-lowMemoryDetector.cpp                   interfaceSupport.hpp
-lowMemoryDetector.cpp                   java.hpp
-lowMemoryDetector.cpp                   javaCalls.hpp
-lowMemoryDetector.cpp                   lowMemoryDetector.hpp
-lowMemoryDetector.cpp                   management.hpp
-lowMemoryDetector.cpp                   mutex.hpp
-lowMemoryDetector.cpp                   mutexLocker.hpp
-lowMemoryDetector.cpp                   oop.inline.hpp
-lowMemoryDetector.cpp                   systemDictionary.hpp
-lowMemoryDetector.cpp                   vmSymbols.hpp
-
-lowMemoryDetector.hpp                   allocation.hpp
-lowMemoryDetector.hpp                   memoryPool.hpp
-lowMemoryDetector.hpp                   memoryService.hpp
-
-management.cpp                          arguments.hpp
-management.cpp                          classLoadingService.hpp
-management.cpp                          compileBroker.hpp
-management.cpp                          handles.inline.hpp
-management.cpp                          heapDumper.hpp
-management.cpp                          interfaceSupport.hpp
-management.cpp                          iterator.hpp
-management.cpp                          javaCalls.hpp
-management.cpp                          jniHandles.hpp
-management.cpp                          klass.hpp
-management.cpp                          klassOop.hpp
-management.cpp                          lowMemoryDetector.hpp
-management.cpp                          management.hpp
-management.cpp                          memoryManager.hpp
-management.cpp                          memoryPool.hpp
-management.cpp                          memoryService.hpp
-management.cpp                          objArrayKlass.hpp
-management.cpp                          oop.inline.hpp
-management.cpp                          oopFactory.hpp
-management.cpp                          os.hpp
-management.cpp                          resourceArea.hpp
-management.cpp                          runtimeService.hpp
-management.cpp                          systemDictionary.hpp
-management.cpp                          threadService.hpp
-
-management.hpp                          allocation.hpp
-management.hpp                          handles.hpp
-management.hpp                          jmm.h
-management.hpp                          timer.hpp
-
-markOop.cpp                             markOop.hpp
-markOop.cpp                             thread_<os_family>.inline.hpp
-
-markOop.hpp                             oop.hpp
-
-markOop.inline.hpp                      globals.hpp
-markOop.inline.hpp                      klass.hpp
-markOop.inline.hpp                      klassOop.hpp
-markOop.inline.hpp                      markOop.hpp
-
-markSweep.cpp                           compileBroker.hpp
-markSweep.cpp                           methodDataOop.hpp
-markSweep.cpp				objArrayKlass.inline.hpp
-
-markSweep.hpp                           collectedHeap.hpp
-markSweep.hpp				taskqueue.hpp
-
-memRegion.cpp                           globals.hpp
-memRegion.cpp                           memRegion.hpp
-
-memRegion.hpp                           allocation.hpp
-memRegion.hpp                           debug.hpp
-memRegion.hpp                           globalDefinitions.hpp
-
-memoryManager.cpp                       systemDictionary.hpp
-memoryManager.cpp                       vmSymbols.hpp
-memoryManager.cpp                       dtrace.hpp
-memoryManager.cpp                       handles.inline.hpp
-memoryManager.cpp                       javaCalls.hpp
-memoryManager.cpp                       lowMemoryDetector.hpp
-memoryManager.cpp                       management.hpp
-memoryManager.cpp                       memoryManager.hpp
-memoryManager.cpp                       memoryPool.hpp
-memoryManager.cpp                       memoryService.hpp
-memoryManager.cpp                       oop.inline.hpp
-
-memoryManager.hpp                       allocation.hpp
-memoryManager.hpp                       memoryUsage.hpp
-memoryManager.hpp                       timer.hpp
-
-memoryPool.cpp                          systemDictionary.hpp
-memoryPool.cpp                          vmSymbols.hpp
-memoryPool.cpp                          handles.inline.hpp
-memoryPool.cpp                          javaCalls.hpp
-memoryPool.cpp                          lowMemoryDetector.hpp
-memoryPool.cpp                          management.hpp
-memoryPool.cpp                          memoryManager.hpp
-memoryPool.cpp                          memoryPool.hpp
-memoryPool.cpp                          oop.inline.hpp
-
-memoryPool.hpp                          defNewGeneration.hpp
-memoryPool.hpp                          heap.hpp
-memoryPool.hpp                          memoryUsage.hpp
-memoryPool.hpp                          mutableSpace.hpp
-memoryPool.hpp                          space.hpp
-
-memoryService.cpp                       classLoadingService.hpp
-memoryService.cpp                       collectorPolicy.hpp
-memoryService.cpp                       defNewGeneration.hpp
-memoryService.cpp                       genCollectedHeap.hpp
-memoryService.cpp                       generation.hpp
-memoryService.cpp                       generationSpec.hpp
-memoryService.cpp                       growableArray.hpp
-memoryService.cpp                       heap.hpp
-memoryService.cpp                       javaCalls.hpp
-memoryService.cpp                       lowMemoryDetector.hpp
-memoryService.cpp                       management.hpp
-memoryService.cpp                       memRegion.hpp
-memoryService.cpp                       memoryManager.hpp
-memoryService.cpp                       memoryPool.hpp
-memoryService.cpp                       memoryService.hpp
-memoryService.cpp                       mutableSpace.hpp
-memoryService.cpp                       oop.inline.hpp
-memoryService.cpp                       permGen.hpp
-memoryService.cpp                       systemDictionary.hpp
-memoryService.cpp                       tenuredGeneration.hpp
-memoryService.cpp                       vmSymbols.hpp
-
-memoryService.hpp                       allocation.hpp
-memoryService.hpp                       generation.hpp
-memoryService.hpp                       handles.hpp
-memoryService.hpp                       memoryUsage.hpp
-
-memoryUsage.hpp                         globalDefinitions.hpp
-
-memprofiler.cpp                         codeCache.hpp
-memprofiler.cpp                         collectedHeap.inline.hpp
-memprofiler.cpp                         generation.hpp
-memprofiler.cpp                         handles.inline.hpp
-memprofiler.cpp                         jniHandles.hpp
-memprofiler.cpp                         memprofiler.hpp
-memprofiler.cpp                         mutexLocker.hpp
-memprofiler.cpp                         oopMapCache.hpp
-memprofiler.cpp                         os.hpp
-memprofiler.cpp                         permGen.hpp
-memprofiler.cpp                         resourceArea.hpp
-memprofiler.cpp                         systemDictionary.hpp
-memprofiler.cpp                         task.hpp
-memprofiler.cpp                         thread_<os_family>.inline.hpp
-memprofiler.cpp                         vmThread.hpp
-
-methodComparator.cpp                    globalDefinitions.hpp
-methodComparator.cpp                    handles.inline.hpp
-methodComparator.cpp                    jvmtiRedefineClassesTrace.hpp
-methodComparator.cpp                    methodComparator.hpp
-methodComparator.cpp                    oop.inline.hpp
-methodComparator.cpp                    symbolOop.hpp
-
-methodComparator.hpp                    bytecodeStream.hpp
-methodComparator.hpp                    constantPoolOop.hpp
-methodComparator.hpp                    methodOop.hpp
-
-methodDataKlass.cpp                     collectedHeap.inline.hpp
-methodDataKlass.cpp                     gcLocker.hpp
-methodDataKlass.cpp                     handles.inline.hpp
-methodDataKlass.cpp                     klassOop.hpp
-methodDataKlass.cpp                     markSweep.inline.hpp
-methodDataKlass.cpp                     methodDataKlass.hpp
-methodDataKlass.cpp                     methodDataOop.hpp
-methodDataKlass.cpp                     oop.inline.hpp
-methodDataKlass.cpp                     oop.inline2.hpp
-methodDataKlass.cpp                     resourceArea.hpp
-methodDataKlass.cpp                     universe.inline.hpp
-
-methodDataKlass.hpp                     klass.hpp
-
-methodDataOop.cpp                       bytecode.hpp
-methodDataOop.cpp                       bytecodeStream.hpp
-methodDataOop.cpp                       compilationPolicy.hpp
-methodDataOop.cpp                       deoptimization.hpp
-methodDataOop.cpp                       handles.inline.hpp
-methodDataOop.cpp                       linkResolver.hpp
-methodDataOop.cpp                       markSweep.inline.hpp
-methodDataOop.cpp                       methodDataOop.hpp
-methodDataOop.cpp                       oop.inline.hpp
-methodDataOop.cpp                       systemDictionary.hpp
-
-methodDataOop.hpp                       bytecodes.hpp
-methodDataOop.hpp                       oop.hpp
-methodDataOop.hpp                       orderAccess.hpp
-methodDataOop.hpp                       universe.hpp
-methodDataOop.hpp                       methodOop.hpp
-
-methodHandleWalk.hpp                    methodHandles.hpp
-
-methodHandleWalk.cpp                    methodHandleWalk.hpp
-methodHandleWalk.cpp                    oopFactory.hpp
-methodHandleWalk.cpp                    rewriter.hpp
-
-methodHandles.hpp                       frame.inline.hpp
-methodHandles.hpp                       globals.hpp
-methodHandles.hpp                       interfaceSupport.hpp
-methodHandles.hpp                       javaClasses.hpp
-methodHandles.hpp                       no_precompiled_headers
-methodHandles.hpp                       vmSymbols.hpp
-
-methodHandles.cpp                       allocation.inline.hpp
-methodHandles.cpp                       interpreter.hpp
-methodHandles.cpp                       javaCalls.hpp
-methodHandles.cpp                       methodHandles.hpp
-methodHandles.cpp                       oopFactory.hpp
-methodHandles.cpp                       reflection.hpp
-methodHandles.cpp                       signature.hpp
-methodHandles.cpp                       stubRoutines.hpp
-methodHandles.cpp                       symbolTable.hpp
-
-methodHandles_<arch>.cpp                allocation.inline.hpp
-methodHandles_<arch>.cpp                interpreter.hpp
-methodHandles_<arch>.cpp                methodHandles.hpp
-
-methodKlass.cpp                         collectedHeap.inline.hpp
-methodKlass.cpp                         constMethodKlass.hpp
-methodKlass.cpp                         gcLocker.hpp
-methodKlass.cpp                         handles.inline.hpp
-methodKlass.cpp                         interpreter.hpp
-methodKlass.cpp                         javaClasses.hpp
-methodKlass.cpp                         klassOop.hpp
-methodKlass.cpp                         markSweep.inline.hpp
-methodKlass.cpp                         methodDataOop.hpp
-methodKlass.cpp                         methodKlass.hpp
-methodKlass.cpp                         oop.inline.hpp
-methodKlass.cpp                         oop.inline2.hpp
-methodKlass.cpp                         resourceArea.hpp
-methodKlass.cpp                         symbolOop.hpp
-methodKlass.cpp                         universe.inline.hpp
-
-methodKlass.hpp                         klass.hpp
-methodKlass.hpp                         klassOop.hpp
-methodKlass.hpp                         methodOop.hpp
-
-methodLiveness.cpp                      allocation.inline.hpp
-methodLiveness.cpp                      bitMap.inline.hpp
-methodLiveness.cpp                      bytecode.hpp
-methodLiveness.cpp                      bytecodes.hpp
-methodLiveness.cpp                      ciMethod.hpp
-methodLiveness.cpp                      ciMethodBlocks.hpp
-methodLiveness.cpp                      ciStreams.hpp
-methodLiveness.cpp                      methodLiveness.hpp
-
-methodLiveness.hpp                      bitMap.hpp
-methodLiveness.hpp                      growableArray.hpp
-
-methodOop.cpp                           arguments.hpp
-methodOop.cpp                           bytecodeStream.hpp
-methodOop.cpp                           bytecodeTracer.hpp
-methodOop.cpp                           bytecodes.hpp
-methodOop.cpp                           collectedHeap.inline.hpp
-methodOop.cpp				compilationPolicy.hpp
-methodOop.cpp                           debugInfoRec.hpp
-methodOop.cpp                           frame.inline.hpp
-methodOop.cpp                           gcLocker.hpp
-methodOop.cpp                           gcTaskThread.hpp
-methodOop.cpp                           generation.hpp
-methodOop.cpp                           handles.inline.hpp
-methodOop.cpp                           interpreter.hpp
-methodOop.cpp                           jvmtiExport.hpp
-methodOop.cpp                           klassOop.hpp
-methodOop.cpp                           methodDataOop.hpp
-methodOop.cpp                           methodHandleWalk.hpp
-methodOop.cpp                           methodOop.hpp
-methodOop.cpp                           nativeLookup.hpp
-methodOop.cpp                           oop.inline.hpp
-methodOop.cpp                           oopFactory.hpp
-methodOop.cpp                           oopMapCache.hpp
-methodOop.cpp                           relocator.hpp
-methodOop.cpp                           sharedRuntime.hpp
-methodOop.cpp                           signature.hpp
-methodOop.cpp                           symbolOop.hpp
-methodOop.cpp                           systemDictionary.hpp
-methodOop.cpp                           xmlstream.hpp
-
-methodOop.hpp                           accessFlags.hpp
-methodOop.hpp                           compressedStream.hpp
-methodOop.hpp                           constMethodOop.hpp
-methodOop.hpp                           constantPoolOop.hpp
-methodOop.hpp                           growableArray.hpp
-methodOop.hpp                           instanceKlass.hpp
-methodOop.hpp                           invocationCounter.hpp
-methodOop.hpp                           oop.hpp
-methodOop.hpp                           oopMap.hpp
-methodOop.hpp                           typeArrayOop.hpp
-methodOop.hpp                           vmSymbols.hpp
-
-modRefBarrierSet.hpp                    barrierSet.hpp
-
-monitorChunk.cpp                        allocation.inline.hpp
-monitorChunk.cpp                        monitorChunk.hpp
-monitorChunk.cpp                        oop.inline.hpp
-
-monitorChunk.hpp                        synchronizer.hpp
-
-mutex.cpp                               events.hpp
-mutex.cpp                               mutex.hpp
-mutex.cpp                               mutex_<os_family>.inline.hpp
-mutex.cpp                               osThread.hpp
-mutex.cpp                               thread_<os_family>.inline.hpp
-
-mutex.hpp                               allocation.hpp
-mutex.hpp                               histogram.hpp
-mutex.hpp                               os.hpp
-
-mutexLocker.cpp                         mutexLocker.hpp
-mutexLocker.cpp                         safepoint.hpp
-mutexLocker.cpp                         threadLocalStorage.hpp
-mutexLocker.cpp                         thread_<os_family>.inline.hpp
-mutexLocker.cpp                         vmThread.hpp
-
-mutexLocker.hpp                         allocation.hpp
-mutexLocker.hpp                         mutex.hpp
-mutexLocker.hpp                         os_<os_family>.inline.hpp
-
-mutex_<os_family>.cpp                   events.hpp
-mutex_<os_family>.cpp                   interfaceSupport.hpp
-mutex_<os_family>.cpp                   mutex.hpp
-mutex_<os_family>.cpp                   mutex_<os_family>.inline.hpp
-mutex_<os_family>.cpp                   thread_<os_family>.inline.hpp
-
-mutex_<os_family>.inline.hpp            interfaceSupport.hpp
-mutex_<os_family>.inline.hpp            os_<os_family>.inline.hpp
-mutex_<os_family>.inline.hpp            thread_<os_family>.inline.hpp
-
-nativeInst_<arch>.cpp                   assembler_<arch>.inline.hpp
-nativeInst_<arch>.cpp                   handles.hpp
-nativeInst_<arch>.cpp                   nativeInst_<arch>.hpp
-nativeInst_<arch>.cpp                   oop.inline.hpp
-nativeInst_<arch>.cpp                   ostream.hpp
-nativeInst_<arch>.cpp                   resourceArea.hpp
-nativeInst_<arch>.cpp                   sharedRuntime.hpp
-nativeInst_<arch>.cpp                   stubRoutines.hpp
-
-nativeInst_<arch>.hpp                   allocation.hpp
-nativeInst_<arch>.hpp                   assembler.hpp
-nativeInst_<arch>.hpp                   icache.hpp
-nativeInst_<arch>.hpp                   os.hpp
-nativeInst_<arch>.hpp                   top.hpp
-
-nativeLookup.cpp                        arguments.hpp
-nativeLookup.cpp                        handles.inline.hpp
-nativeLookup.cpp                        hpi.hpp
-nativeLookup.cpp                        instanceKlass.hpp
-nativeLookup.cpp                        javaCalls.hpp
-nativeLookup.cpp                        javaClasses.hpp
-nativeLookup.cpp                        jvm_misc.hpp
-nativeLookup.cpp                        methodOop.hpp
-nativeLookup.cpp                        nativeLookup.hpp
-nativeLookup.cpp                        oop.inline.hpp
-nativeLookup.cpp                        oopFactory.hpp
-nativeLookup.cpp                        os_<os_family>.inline.hpp
-nativeLookup.cpp                        resourceArea.hpp
-nativeLookup.cpp                        sharedRuntime.hpp
-nativeLookup.cpp                        signature.hpp
-nativeLookup.cpp                        symbolOop.hpp
-nativeLookup.cpp                        systemDictionary.hpp
-nativeLookup.cpp                        universe.inline.hpp
-nativeLookup.cpp                        vmSymbols.hpp
-
-nativeLookup.hpp                        handles.hpp
-nativeLookup.hpp                        top.hpp
-
-nmethod.cpp                             abstractCompiler.hpp
-nmethod.cpp                             bytecode.hpp
-nmethod.cpp                             codeCache.hpp
-nmethod.cpp                             compileLog.hpp
-nmethod.cpp                             compiledIC.hpp
-nmethod.cpp                             compilerOracle.hpp
-nmethod.cpp                             disassembler.hpp
-nmethod.cpp                             dtrace.hpp
-nmethod.cpp                             events.hpp
-nmethod.cpp                             jvmtiRedefineClassesTrace.hpp
-nmethod.cpp                             methodDataOop.hpp
-nmethod.cpp                             nmethod.hpp
-nmethod.cpp                             scopeDesc.hpp
-nmethod.cpp                             sharedRuntime.hpp
-nmethod.cpp                             sweeper.hpp
-nmethod.cpp                             xmlstream.hpp
-
-nmethod.hpp                             codeBlob.hpp
-nmethod.hpp                             pcDesc.hpp
-
-numberSeq.cpp				debug.hpp
-numberSeq.cpp				numberSeq.hpp
-numberSeq.cpp				globalDefinitions.hpp
-numberSeq.cpp				allocation.inline.hpp
-
-objArrayKlass.cpp                       collectedHeap.inline.hpp
-objArrayKlass.cpp                       copy.hpp
-objArrayKlass.cpp                       genOopClosures.inline.hpp
-objArrayKlass.cpp                       handles.inline.hpp
-objArrayKlass.cpp                       instanceKlass.hpp
-objArrayKlass.cpp                       markSweep.inline.hpp
-objArrayKlass.cpp                       mutexLocker.hpp
-objArrayKlass.cpp                       objArrayKlass.hpp
-objArrayKlass.cpp                       objArrayKlass.inline.hpp
-objArrayKlass.cpp                       objArrayKlassKlass.hpp
-objArrayKlass.cpp                       objArrayOop.hpp
-objArrayKlass.cpp                       oop.inline.hpp
-objArrayKlass.cpp                       oop.inline2.hpp
-objArrayKlass.cpp                       resourceArea.hpp
-objArrayKlass.cpp                       symbolOop.hpp
-objArrayKlass.cpp                       systemDictionary.hpp
-objArrayKlass.cpp                       universe.inline.hpp
-objArrayKlass.cpp                       vmSymbols.hpp
-
-objArrayKlass.hpp                       arrayKlass.hpp
-objArrayKlass.hpp                       instanceKlass.hpp
-objArrayKlass.hpp                       specialized_oop_closures.hpp
-
-objArrayKlass.inline.hpp		objArrayKlass.hpp
-
-objArrayKlassKlass.cpp                  collectedHeap.inline.hpp
-objArrayKlassKlass.cpp                  instanceKlass.hpp
-objArrayKlassKlass.cpp                  javaClasses.hpp
-objArrayKlassKlass.cpp                  markSweep.inline.hpp
-objArrayKlassKlass.cpp                  objArrayKlassKlass.hpp
-objArrayKlassKlass.cpp                  oop.inline.hpp
-objArrayKlassKlass.cpp                  oop.inline2.hpp
-objArrayKlassKlass.cpp                  systemDictionary.hpp
-
-objArrayKlassKlass.hpp                  arrayKlassKlass.hpp
-objArrayKlassKlass.hpp                  objArrayKlass.hpp
-
-objArrayOop.cpp                         objArrayKlass.hpp
-objArrayOop.cpp                         objArrayOop.hpp
-objArrayOop.cpp                         oop.inline.hpp
-
-objArrayOop.hpp                         arrayOop.hpp
-
-objectMonitor.hpp                       os.hpp
-
-objectMonitor_<os_family>.cpp           dtrace.hpp
-objectMonitor_<os_family>.cpp           interfaceSupport.hpp
-objectMonitor_<os_family>.cpp           objectMonitor.hpp
-objectMonitor_<os_family>.cpp           objectMonitor.inline.hpp
-objectMonitor_<os_family>.cpp           oop.inline.hpp
-objectMonitor_<os_family>.cpp           osThread.hpp
-objectMonitor_<os_family>.cpp           os_<os_family>.inline.hpp
-objectMonitor_<os_family>.cpp           threadService.hpp
-objectMonitor_<os_family>.cpp           thread_<os_family>.inline.hpp
-objectMonitor_<os_family>.cpp           vmSymbols.hpp
-
-objectMonitor_<os_family>.hpp           generate_platform_dependent_include
-objectMonitor_<os_family>.hpp           os_<os_family>.inline.hpp
-objectMonitor_<os_family>.hpp           thread_<os_family>.inline.hpp
-objectMonitor_<os_family>.hpp           top.hpp
-
-objectMonitor_<os_family>.inline.hpp    generate_platform_dependent_include
-
-oop.cpp                                 copy.hpp
-oop.cpp                                 handles.inline.hpp
-oop.cpp                                 javaClasses.hpp
-oop.cpp                                 oop.inline.hpp
-oop.cpp                                 thread_<os_family>.inline.hpp
-
-oop.hpp                                 iterator.hpp
-oop.hpp                                 memRegion.hpp
-oop.hpp                                 specialized_oop_closures.hpp
-oop.hpp                                 top.hpp
-
-oop.inline.hpp                          ageTable.hpp
-oop.inline.hpp                          arrayKlass.hpp
-oop.inline.hpp                          arrayOop.hpp
-oop.inline.hpp                          atomic.hpp
-oop.inline.hpp                          barrierSet.inline.hpp
-oop.inline.hpp                          bytes_<arch>.hpp
-oop.inline.hpp                          cardTableModRefBS.hpp
-oop.inline.hpp                          collectedHeap.inline.hpp
-oop.inline.hpp                          compactingPermGenGen.hpp
-oop.inline.hpp                          genCollectedHeap.hpp
-oop.inline.hpp                          generation.hpp
-oop.inline.hpp                          klass.hpp
-oop.inline.hpp                          klassOop.hpp
-oop.inline.hpp                          markOop.inline.hpp
-oop.inline.hpp                          markSweep.inline.hpp
-oop.inline.hpp                          oop.hpp
-oop.inline.hpp                          os.hpp
-oop.inline.hpp                          permGen.hpp
-oop.inline.hpp                          specialized_oop_closures.hpp
-
-oop.inline2.hpp                         collectedHeap.hpp
-oop.inline2.hpp                         generation.hpp
-oop.inline2.hpp                         oop.hpp
-oop.inline2.hpp                         permGen.hpp
-oop.inline2.hpp                         universe.hpp
-
-oopFactory.cpp                          collectedHeap.inline.hpp
-oopFactory.cpp                          compiledICHolderKlass.hpp
-oopFactory.cpp                          constMethodKlass.hpp
-oopFactory.cpp                          constantPoolKlass.hpp
-oopFactory.cpp                          cpCacheKlass.hpp
-oopFactory.cpp                          instanceKlass.hpp
-oopFactory.cpp                          instanceKlassKlass.hpp
-oopFactory.cpp                          instanceOop.hpp
-oopFactory.cpp                          javaClasses.hpp
-oopFactory.cpp                          klassKlass.hpp
-oopFactory.cpp                          klassOop.hpp
-oopFactory.cpp                          methodDataKlass.hpp
-oopFactory.cpp                          methodKlass.hpp
-oopFactory.cpp                          objArrayOop.hpp
-oopFactory.cpp                          oop.inline.hpp
-oopFactory.cpp                          oopFactory.hpp
-oopFactory.cpp                          resourceArea.hpp
-oopFactory.cpp                          symbolTable.hpp
-oopFactory.cpp                          systemDictionary.hpp
-oopFactory.cpp                          universe.inline.hpp
-oopFactory.cpp                          vmSymbols.hpp
-
-oopFactory.hpp                          growableArray.hpp
-oopFactory.hpp                          klassOop.hpp
-oopFactory.hpp                          objArrayKlass.hpp
-oopFactory.hpp                          oop.hpp
-oopFactory.hpp                          symbolTable.hpp
-oopFactory.hpp                          systemDictionary.hpp
-oopFactory.hpp                          typeArrayKlass.hpp
-oopFactory.hpp                          universe.hpp
-
-oopMap.cpp                              allocation.inline.hpp
-oopMap.cpp                              codeBlob.hpp
-oopMap.cpp                              codeCache.hpp
-oopMap.cpp                              collectedHeap.hpp
-oopMap.cpp                              frame.inline.hpp
-oopMap.cpp                              nmethod.hpp
-oopMap.cpp                              oopMap.hpp
-oopMap.cpp                              resourceArea.hpp
-oopMap.cpp                              scopeDesc.hpp
-oopMap.cpp                              signature.hpp
-
-oopMap.hpp                              allocation.hpp
-oopMapCache.cpp                         jvmtiRedefineClassesTrace.hpp
-oopMap.hpp                              compressedStream.hpp
-oopMap.hpp                              growableArray.hpp
-oopMap.hpp                              vmreg.hpp
-
-oopMapCache.cpp                         allocation.inline.hpp
-oopMapCache.cpp                         jvmtiRedefineClassesTrace.hpp
-oopMapCache.cpp                         handles.inline.hpp
-oopMapCache.cpp                         oop.inline.hpp
-oopMapCache.cpp                         oopMapCache.hpp
-oopMapCache.cpp                         resourceArea.hpp
-oopMapCache.cpp                         signature.hpp
-
-oopMapCache.hpp                         generateOopMap.hpp
-
-oopRecorder.cpp                         allocation.inline.hpp
-oopRecorder.cpp                         oop.inline.hpp
-oopRecorder.cpp                         oopRecorder.hpp
-
-oopRecorder.hpp                         growableArray.hpp
-oopRecorder.hpp                         handles.hpp
-
-oopsHierarchy.cpp                       collectedHeap.hpp
-oopsHierarchy.cpp                       collectedHeap.inline.hpp
-oopsHierarchy.cpp                       globalDefinitions.hpp
-oopsHierarchy.cpp                       oopsHierarchy.hpp
-oopsHierarchy.cpp                       thread.hpp
-oopsHierarchy.cpp                       thread_<os_family>.inline.hpp
-
-orderAccess.cpp                         orderAccess.hpp
-orderAccess.cpp                         stubRoutines.hpp
-orderAccess.cpp                         thread.hpp
-
-orderAccess.hpp                         allocation.hpp
-orderAccess.hpp                         os.hpp
-
-orderAccess_<os_arch>.inline.hpp        orderAccess.hpp
-
-os.cpp                                  allocation.inline.hpp
-os.cpp                                  arguments.hpp
-os.cpp                                  attachListener.hpp
-os.cpp                                  classLoader.hpp
-os.cpp                                  defaultStream.hpp
-os.cpp                                  events.hpp
-os.cpp                                  frame.inline.hpp
-os.cpp                                  hpi.hpp
-os.cpp					icBuffer.hpp
-os.cpp                                  interfaceSupport.hpp
-os.cpp                                  interpreter.hpp
-os.cpp                                  java.hpp
-os.cpp                                  javaCalls.hpp
-os.cpp                                  javaClasses.hpp
-os.cpp                                  jvm.h
-os.cpp                                  jvm_misc.hpp
-os.cpp                                  mutexLocker.hpp
-os.cpp                                  oop.inline.hpp
-os.cpp                                  os.hpp
-os.cpp                                  os_<os_family>.inline.hpp
-os.cpp	                                privilegedStack.hpp
-os.cpp                                  stubRoutines.hpp
-os.cpp                                  systemDictionary.hpp
-os.cpp                                  threadService.hpp
-os.cpp                                  thread_<os_family>.inline.hpp
-os.cpp                                  vmGCOperations.hpp
-os.cpp                                  vmSymbols.hpp
-os.cpp                                  vtableStubs.hpp
-
-os.hpp                                  atomic.hpp
-os.hpp                                  extendedPC.hpp
-os.hpp                                  handles.hpp
-os.hpp                                  jvmti.h
-os.hpp                                  top.hpp
-
-os_<os_arch>.cpp                        allocation.inline.hpp
-os_<os_arch>.cpp                        arguments.hpp
-os_<os_arch>.cpp                        assembler_<arch>.inline.hpp
-os_<os_arch>.cpp                        classLoader.hpp
-os_<os_arch>.cpp                        events.hpp
-os_<os_arch>.cpp                        extendedPC.hpp
-os_<os_arch>.cpp                        frame.inline.hpp
-os_<os_arch>.cpp                        hpi.hpp
-os_<os_arch>.cpp                        icBuffer.hpp
-os_<os_arch>.cpp                        interfaceSupport.hpp
-os_<os_arch>.cpp                        interpreter.hpp
-os_<os_arch>.cpp                        java.hpp
-os_<os_arch>.cpp                        javaCalls.hpp
-os_<os_arch>.cpp                        jniFastGetField.hpp
-os_<os_arch>.cpp                        jvm.h
-os_<os_arch>.cpp                        jvm_<os_family>.h
-os_<os_arch>.cpp                        jvm_misc.hpp
-os_<os_arch>.cpp                        mutexLocker.hpp
-os_<os_arch>.cpp                        mutex_<os_family>.inline.hpp
-os_<os_arch>.cpp                        nativeInst_<arch>.hpp
-os_<os_arch>.cpp                        no_precompiled_headers
-os_<os_arch>.cpp                        osThread.hpp
-os_<os_arch>.cpp                        os_share_<os_family>.hpp
-os_<os_arch>.cpp                        sharedRuntime.hpp
-os_<os_arch>.cpp                        stubRoutines.hpp
-os_<os_arch>.cpp                        systemDictionary.hpp
-os_<os_arch>.cpp                        thread_<os_family>.inline.hpp
-os_<os_arch>.cpp                        timer.hpp
-os_<os_arch>.cpp                        vmError.hpp
-os_<os_arch>.cpp                        vmSymbols.hpp
-os_<os_arch>.cpp                        vtableStubs.hpp
-
-os_<os_arch>.hpp                        generate_platform_dependent_include
-
-os_<os_family>.cpp                      allocation.inline.hpp
-os_<os_family>.cpp                      arguments.hpp
-os_<os_family>.cpp                      assembler_<arch>.inline.hpp
-os_<os_family>.cpp                      attachListener.hpp
-os_<os_family>.cpp                      classLoader.hpp
-os_<os_family>.cpp                      compileBroker.hpp
-os_<os_family>.cpp                      defaultStream.hpp
-os_<os_family>.cpp                      events.hpp
-os_<os_family>.cpp                      extendedPC.hpp
-os_<os_family>.cpp                      filemap.hpp
-os_<os_family>.cpp                      globals.hpp
-os_<os_family>.cpp                      growableArray.hpp
-os_<os_family>.cpp                      hpi.hpp
-os_<os_family>.cpp                      icBuffer.hpp
-os_<os_family>.cpp                      interfaceSupport.hpp
-os_<os_family>.cpp                      interpreter.hpp
-os_<os_family>.cpp                      java.hpp
-os_<os_family>.cpp                      javaCalls.hpp
-os_<os_family>.cpp                      jniFastGetField.hpp
-os_<os_family>.cpp                      jvm.h
-os_<os_family>.cpp                      jvm_<os_family>.h
-os_<os_family>.cpp                      jvm_misc.hpp
-os_<os_family>.cpp                      mutexLocker.hpp
-os_<os_family>.cpp                      mutex_<os_family>.inline.hpp
-os_<os_family>.cpp                      nativeInst_<arch>.hpp
-os_<os_family>.cpp                      no_precompiled_headers
-os_<os_family>.cpp                      objectMonitor.hpp
-os_<os_family>.cpp                      objectMonitor.inline.hpp
-os_<os_family>.cpp                      oop.inline.hpp
-os_<os_family>.cpp                      osThread.hpp
-os_<os_family>.cpp                      os_share_<os_family>.hpp
-os_<os_family>.cpp                      perfMemory.hpp
-os_<os_family>.cpp                      runtimeService.hpp
-os_<os_family>.cpp                      sharedRuntime.hpp
-os_<os_family>.cpp                      statSampler.hpp
-os_<os_family>.cpp                      stubRoutines.hpp
-os_<os_family>.cpp                      systemDictionary.hpp
-os_<os_family>.cpp                      threadCritical.hpp
-os_<os_family>.cpp                      thread_<os_family>.inline.hpp
-os_<os_family>.cpp                      timer.hpp
-os_<os_family>.cpp                      vmError.hpp
-os_<os_family>.cpp                      vmSymbols.hpp
-os_<os_family>.cpp                      vtableStubs.hpp
-
-os_<os_family>.hpp                      generate_platform_dependent_include
-
-os_<os_family>.inline.hpp               atomic.hpp
-os_<os_family>.inline.hpp               atomic_<os_arch>.inline.hpp
-os_<os_family>.inline.hpp               orderAccess_<os_arch>.inline.hpp
-os_<os_family>.inline.hpp               os.hpp
-
-osThread.cpp                            oop.inline.hpp
-osThread.cpp                            osThread.hpp
-
-osThread.hpp                            frame.hpp
-osThread.hpp                            handles.hpp
-osThread.hpp                            hpi.hpp
-osThread.hpp                            javaFrameAnchor.hpp
-osThread.hpp                            objectMonitor.hpp
-osThread.hpp                            top.hpp
-
-osThread_<os_family>.cpp                assembler_<arch>.inline.hpp
-osThread_<os_family>.cpp                atomic.hpp
-osThread_<os_family>.cpp                handles.inline.hpp
-osThread_<os_family>.cpp                mutexLocker.hpp
-osThread_<os_family>.cpp                no_precompiled_headers
-osThread_<os_family>.cpp                os.hpp
-osThread_<os_family>.cpp                osThread.hpp
-osThread_<os_family>.cpp                safepoint.hpp
-osThread_<os_family>.cpp                vmThread.hpp
-
-osThread_<os_family>.hpp                generate_platform_dependent_include
-
-ostream.cpp                             arguments.hpp
-ostream.cpp                             compileLog.hpp
-ostream.cpp                             defaultStream.hpp
-ostream.cpp                             oop.inline.hpp
-ostream.cpp                             os_<os_family>.inline.hpp
-ostream.cpp                             hpi.hpp
-ostream.cpp                             hpi_<os_family>.hpp
-ostream.cpp                             ostream.hpp
-ostream.cpp                             top.hpp
-ostream.cpp                             xmlstream.hpp
-
-ostream.hpp                             allocation.hpp
-ostream.hpp                             timer.hpp
-
-pcDesc.cpp                              debugInfoRec.hpp
-pcDesc.cpp                              nmethod.hpp
-pcDesc.cpp                              pcDesc.hpp
-pcDesc.cpp                              resourceArea.hpp
-pcDesc.cpp                              scopeDesc.hpp
-
-pcDesc.hpp                              allocation.hpp
-
-perf.cpp                                allocation.inline.hpp
-perf.cpp                                interfaceSupport.hpp
-perf.cpp                                jni.h
-perf.cpp                                jvm.h
-perf.cpp                                oop.inline.hpp
-perf.cpp                                perfData.hpp
-perf.cpp                                perfMemory.hpp
-perf.cpp                                resourceArea.hpp
-perf.cpp                                vmSymbols.hpp
-
-perfData.cpp                            exceptions.hpp
-perfData.cpp                            globalDefinitions.hpp
-perfData.cpp                            handles.inline.hpp
-perfData.cpp                            java.hpp
-perfData.cpp                            mutex.hpp
-perfData.cpp                            mutexLocker.hpp
-perfData.cpp                            oop.inline.hpp
-perfData.cpp                            os.hpp
-perfData.cpp                            perfData.hpp
-perfData.cpp                            vmSymbols.hpp
-
-perfData.hpp                            allocation.inline.hpp
-perfData.hpp                            growableArray.hpp
-perfData.hpp                            perfMemory.hpp
-perfData.hpp                            timer.hpp
-
-perfMemory.cpp                          allocation.inline.hpp
-perfMemory.cpp                          arguments.hpp
-perfMemory.cpp                          globalDefinitions.hpp
-perfMemory.cpp                          java.hpp
-perfMemory.cpp                          mutex.hpp
-perfMemory.cpp                          mutexLocker.hpp
-perfMemory.cpp                          os.hpp
-perfMemory.cpp                          perfData.hpp
-perfMemory.cpp                          perfMemory.hpp
-perfMemory.cpp                          statSampler.hpp
-
-perfMemory.hpp                          exceptions.hpp
-
-perfMemory_<os_family>.cpp              allocation.inline.hpp
-perfMemory_<os_family>.cpp              exceptions.hpp
-perfMemory_<os_family>.cpp              handles.inline.hpp
-perfMemory_<os_family>.cpp              oop.inline.hpp
-perfMemory_<os_family>.cpp              os_<os_family>.inline.hpp
-perfMemory_<os_family>.cpp              perfMemory.hpp
-perfMemory_<os_family>.cpp              resourceArea.hpp
-perfMemory_<os_family>.cpp              vmSymbols.hpp
-
-permGen.cpp                             blockOffsetTable.inline.hpp
-permGen.cpp                             cSpaceCounters.hpp
-permGen.cpp                             collectedHeap.inline.hpp
-permGen.cpp                             compactPermGen.hpp
-permGen.cpp                             genCollectedHeap.hpp
-permGen.cpp                             generation.inline.hpp
-permGen.cpp                             java.hpp
-permGen.cpp                             oop.inline.hpp
-permGen.cpp                             permGen.hpp
-permGen.cpp                             universe.hpp
-permGen.cpp                             gcLocker.hpp
-permGen.cpp                             gcLocker.inline.hpp
-permGen.cpp                             vmGCOperations.hpp
-permGen.cpp                             vmThread.hpp
-
-permGen.hpp                             gcCause.hpp
-permGen.hpp                             generation.hpp
-permGen.hpp                             handles.hpp
-permGen.hpp                             iterator.hpp
-permGen.hpp                             mutexLocker.hpp
-permGen.hpp                             virtualspace.hpp
-
-placeholders.cpp                        fieldType.hpp
-placeholders.cpp                        hashtable.inline.hpp
-placeholders.cpp                        oop.inline.hpp
-placeholders.cpp                        placeholders.hpp
-placeholders.cpp                        systemDictionary.hpp
-
-placeholders.hpp                        hashtable.hpp
-
-prefetch.hpp                            allocation.hpp
-
-prefetch_<os_arch>.inline.hpp           prefetch.hpp
-
-preserveException.cpp                   handles.inline.hpp
-preserveException.cpp                   preserveException.hpp
-
-preserveException.hpp                   handles.hpp
-preserveException.hpp                   thread_<os_family>.inline.hpp
-
-privilegedStack.cpp                     allocation.inline.hpp
-privilegedStack.cpp                     instanceKlass.hpp
-privilegedStack.cpp                     methodOop.hpp
-privilegedStack.cpp                     oop.inline.hpp
-privilegedStack.cpp                     privilegedStack.hpp
-privilegedStack.cpp                     vframe.hpp
-
-privilegedStack.hpp                     allocation.hpp
-privilegedStack.hpp                     growableArray.hpp
-privilegedStack.hpp                     oopsHierarchy.hpp
-privilegedStack.hpp                     vframe.hpp
-
-referencePolicy.cpp                     arguments.hpp
-referencePolicy.cpp                     globals.hpp
-referencePolicy.cpp                     javaClasses.hpp
-referencePolicy.cpp                     referencePolicy.hpp
-referencePolicy.cpp                     universe.hpp
-
-referenceProcessor.cpp                  collectedHeap.hpp
-referenceProcessor.cpp                  collectedHeap.inline.hpp
-referenceProcessor.cpp                  java.hpp
-referenceProcessor.cpp                  javaClasses.hpp
-referenceProcessor.cpp                  jniHandles.hpp
-referenceProcessor.cpp                  oop.inline.hpp
-referenceProcessor.cpp                  referencePolicy.hpp
-referenceProcessor.cpp                  referenceProcessor.hpp
-referenceProcessor.cpp                  systemDictionary.hpp
-
-referenceProcessor.hpp                  instanceRefKlass.hpp
-referenceProcessor.hpp                  referencePolicy.hpp
-
-reflection.cpp                          arguments.hpp
-reflection.cpp                          handles.inline.hpp
-reflection.cpp                          instanceKlass.hpp
-reflection.cpp                          javaCalls.hpp
-reflection.cpp                          javaClasses.hpp
-reflection.cpp                          jvm.h
-reflection.cpp                          linkResolver.hpp
-reflection.cpp                          methodHandleWalk.hpp
-reflection.cpp                          objArrayKlass.hpp
-reflection.cpp                          objArrayOop.hpp
-reflection.cpp                          oopFactory.hpp
-reflection.cpp                          reflection.hpp
-reflection.cpp                          reflectionUtils.hpp
-reflection.cpp                          resourceArea.hpp
-reflection.cpp                          signature.hpp
-reflection.cpp                          symbolTable.hpp
-reflection.cpp                          systemDictionary.hpp
-reflection.cpp                          universe.inline.hpp
-reflection.cpp                          verifier.hpp
-reflection.cpp                          vframe.hpp
-reflection.cpp                          vmSymbols.hpp
-
-reflection.hpp                          accessFlags.hpp
-reflection.hpp                          fieldDescriptor.hpp
-reflection.hpp                          growableArray.hpp
-reflection.hpp                          oop.hpp
-reflection.hpp                          reflectionCompat.hpp
-
-reflectionUtils.cpp                     javaClasses.hpp
-reflectionUtils.cpp                     reflectionUtils.hpp
-reflectionUtils.cpp                     universe.inline.hpp
-
-reflectionUtils.hpp                     accessFlags.hpp
-reflectionUtils.hpp                     allocation.hpp
-reflectionUtils.hpp                     globalDefinitions.hpp
-reflectionUtils.hpp                     handles.inline.hpp
-reflectionUtils.hpp                     instanceKlass.hpp
-reflectionUtils.hpp                     objArrayOop.hpp
-reflectionUtils.hpp                     oopsHierarchy.hpp
-reflectionUtils.hpp                     reflection.hpp
-
-register.cpp                            register.hpp
-
-register.hpp                            top.hpp
-
-register_<arch>.cpp                     register_<arch>.hpp
-
-register_<arch>.hpp                     register.hpp
-register_<arch>.hpp                     vm_version_<arch>.hpp
-
-registerMap.hpp                         globalDefinitions.hpp
-registerMap.hpp                         register_<arch>.hpp
-registerMap.hpp                         vmreg.hpp
-
-registerMap_<arch>.hpp                  generate_platform_dependent_include
-
-register_definitions_<arch>.cpp         assembler.hpp
-register_definitions_<arch>.cpp         interp_masm_<arch_model>.hpp
-register_definitions_<arch>.cpp         register.hpp
-register_definitions_<arch>.cpp         register_<arch>.hpp
-
-relocInfo.cpp                           assembler_<arch>.inline.hpp
-relocInfo.cpp                           compiledIC.hpp
-relocInfo.cpp                           copy.hpp
-relocInfo.cpp                           nativeInst_<arch>.hpp
-relocInfo.cpp                           nmethod.hpp
-relocInfo.cpp                           relocInfo.hpp
-relocInfo.cpp                           resourceArea.hpp
-relocInfo.cpp                           stubCodeGenerator.hpp
-
-relocInfo.hpp                           allocation.hpp
-relocInfo.hpp                           top.hpp
-
-relocInfo_<arch>.cpp                    assembler.inline.hpp
-relocInfo_<arch>.cpp                    assembler_<arch>.inline.hpp
-relocInfo_<arch>.cpp                    nativeInst_<arch>.hpp
-relocInfo_<arch>.cpp                    oop.inline.hpp
-relocInfo_<arch>.cpp                    relocInfo.hpp
-relocInfo_<arch>.cpp                    safepoint.hpp
-
-relocInfo_<arch>.hpp                    generate_platform_dependent_include
-
-relocator.cpp                           bytecodes.hpp
-relocator.cpp                           handles.inline.hpp
-relocator.cpp                           oop.inline.hpp
-relocator.cpp                           relocator.hpp
-relocator.cpp                           universe.inline.hpp
-
-relocator.hpp                           bytecodes.hpp
-relocator.hpp                           bytes_<arch>.hpp
-relocator.hpp                           methodOop.hpp
-
-resolutionErrors.cpp                    handles.inline.hpp
-resolutionErrors.cpp                    hashtable.inline.hpp
-resolutionErrors.cpp                    oop.inline.hpp
-resolutionErrors.cpp                    resolutionErrors.hpp
-resolutionErrors.cpp                    resourceArea.hpp
-resolutionErrors.cpp                    safepoint.hpp
-
-resolutionErrors.hpp                    constantPoolOop.hpp
-resolutionErrors.hpp                    hashtable.hpp
-
-resourceArea.cpp                        allocation.inline.hpp
-resourceArea.cpp                        mutexLocker.hpp
-resourceArea.cpp                        resourceArea.hpp
-resourceArea.cpp                        thread_<os_family>.inline.hpp
-
-resourceArea.hpp                        allocation.hpp
-resourceArea.hpp                        thread_<os_family>.inline.hpp
-
-// restore is jck optional, put cpp deps in includeDB_features
-
-rewriter.cpp                            bytecodes.hpp
-rewriter.cpp                            gcLocker.hpp
-rewriter.cpp                            generateOopMap.hpp
-rewriter.cpp                            interpreter.hpp
-rewriter.cpp                            methodComparator.hpp
-rewriter.cpp                            objArrayOop.hpp
-rewriter.cpp                            oop.inline.hpp
-rewriter.cpp                            oopFactory.hpp
-rewriter.cpp                            resourceArea.hpp
-rewriter.cpp                            rewriter.hpp
-
-rewriter.hpp                            allocation.hpp
-rewriter.hpp                            growableArray.hpp
-rewriter.hpp                            handles.inline.hpp
-
-rframe.cpp                              frame.inline.hpp
-rframe.cpp                              interpreter.hpp
-rframe.cpp                              oop.inline.hpp
-rframe.cpp                              rframe.hpp
-rframe.cpp                              symbolOop.hpp
-rframe.cpp                              vframe.hpp
-rframe.cpp                              vframe_hp.hpp
-
-rframe.hpp                              allocation.hpp
-rframe.hpp                              frame.inline.hpp
-
-runtimeService.cpp                      attachListener.hpp
-runtimeService.cpp                      classLoader.hpp
-runtimeService.cpp                      dtrace.hpp
-runtimeService.cpp                      exceptions.hpp
-runtimeService.cpp                      management.hpp
-runtimeService.cpp                      runtimeService.hpp
-
-runtimeService.hpp                      perfData.hpp
-runtimeService.hpp                      timer.hpp
-
-safepoint.cpp                           codeCache.hpp
-safepoint.cpp                           collectedHeap.hpp
-safepoint.cpp                           compilationPolicy.hpp
-safepoint.cpp                           deoptimization.hpp
-safepoint.cpp                           events.hpp
-safepoint.cpp                           frame.inline.hpp
-safepoint.cpp                           icBuffer.hpp
-safepoint.cpp                           interfaceSupport.hpp
-safepoint.cpp                           interpreter.hpp
-safepoint.cpp                           mutexLocker.hpp
-safepoint.cpp                           nativeInst_<arch>.hpp
-safepoint.cpp                           nmethod.hpp
-safepoint.cpp                           oop.inline.hpp
-safepoint.cpp                           osThread.hpp
-safepoint.cpp                           pcDesc.hpp
-safepoint.cpp                           resourceArea.hpp
-safepoint.cpp                           runtimeService.hpp
-safepoint.cpp                           safepoint.hpp
-safepoint.cpp                           scopeDesc.hpp
-safepoint.cpp                           signature.hpp
-safepoint.cpp                           stubCodeGenerator.hpp
-safepoint.cpp                           stubRoutines.hpp
-safepoint.cpp                           sweeper.hpp
-safepoint.cpp                           symbolOop.hpp
-safepoint.cpp                           synchronizer.hpp
-safepoint.cpp                           systemDictionary.hpp
-safepoint.cpp                           thread_<os_family>.inline.hpp
-safepoint.cpp                           universe.inline.hpp
-safepoint.cpp                           vmreg_<arch>.inline.hpp
-
-safepoint.hpp                           allocation.hpp
-safepoint.hpp                           assembler.hpp
-safepoint.hpp                           extendedPC.hpp
-safepoint.hpp                           nmethod.hpp
-safepoint.hpp                           os.hpp
-safepoint.hpp                           ostream.hpp
-
-scopeDesc.cpp                           debugInfoRec.hpp
-scopeDesc.cpp                           handles.inline.hpp
-scopeDesc.cpp                           oop.inline.hpp
-scopeDesc.cpp                           pcDesc.hpp
-scopeDesc.cpp                           resourceArea.hpp
-scopeDesc.cpp                           scopeDesc.hpp
-
-scopeDesc.hpp                           debugInfo.hpp
-scopeDesc.hpp                           growableArray.hpp
-scopeDesc.hpp                           methodOop.hpp
-scopeDesc.hpp                           pcDesc.hpp
-
-// serialize is jck optional, put cpp deps in includeDB_features
-
-serviceUtil.hpp                         objArrayOop.hpp
-serviceUtil.hpp                         systemDictionary.hpp
-
-sharedHeap.cpp                          codeCache.hpp
-sharedHeap.cpp                          collectedHeap.inline.hpp
-sharedHeap.cpp                          copy.hpp
-sharedHeap.cpp                          fprofiler.hpp
-sharedHeap.cpp                          java.hpp
-sharedHeap.cpp                          management.hpp
-sharedHeap.cpp                          oop.inline.hpp
-sharedHeap.cpp                          sharedHeap.hpp
-sharedHeap.cpp                          symbolTable.hpp
-sharedHeap.cpp                          systemDictionary.hpp
-sharedHeap.cpp                          workgroup.hpp
-
-sharedHeap.hpp                          collectedHeap.hpp
-sharedHeap.hpp                          generation.hpp
-sharedHeap.hpp                          permGen.hpp
-
-sharedRuntime.cpp                       abstractCompiler.hpp
-sharedRuntime.cpp                       arguments.hpp
-sharedRuntime.cpp                       biasedLocking.hpp
-sharedRuntime.cpp                       compileBroker.hpp
-sharedRuntime.cpp                       compiledIC.hpp
-sharedRuntime.cpp                       compilerOracle.hpp
-sharedRuntime.cpp                       copy.hpp
-sharedRuntime.cpp                       dtrace.hpp
-sharedRuntime.cpp                       events.hpp
-sharedRuntime.cpp                       forte.hpp
-sharedRuntime.cpp                       gcLocker.inline.hpp
-sharedRuntime.cpp                       handles.inline.hpp
-sharedRuntime.cpp                       hashtable.inline.hpp
-sharedRuntime.cpp                       init.hpp
-sharedRuntime.cpp                       interfaceSupport.hpp
-sharedRuntime.cpp                       interpreterRuntime.hpp
-sharedRuntime.cpp                       interpreter.hpp
-sharedRuntime.cpp                       javaCalls.hpp
-sharedRuntime.cpp                       jvmtiExport.hpp
-sharedRuntime.cpp                       methodHandles.hpp
-sharedRuntime.cpp                       jvmtiRedefineClassesTrace.hpp
-sharedRuntime.cpp                       nativeInst_<arch>.hpp
-sharedRuntime.cpp                       nativeLookup.hpp
-sharedRuntime.cpp                       oop.inline.hpp
-sharedRuntime.cpp                       scopeDesc.hpp
-sharedRuntime.cpp                       sharedRuntime.hpp
-sharedRuntime.cpp                       stubRoutines.hpp
-sharedRuntime.cpp                       systemDictionary.hpp
-sharedRuntime.cpp                       universe.inline.hpp
-sharedRuntime.cpp                       vframe.hpp
-sharedRuntime.cpp                       vframeArray.hpp
-sharedRuntime.cpp                       vmSymbols.hpp
-sharedRuntime.cpp                       vmreg_<arch>.inline.hpp
-sharedRuntime.cpp                       vtableStubs.hpp
-sharedRuntime.cpp                       xmlstream.hpp
-
-sharedRuntime.hpp                       allocation.hpp
-sharedRuntime.hpp                       bytecodeHistogram.hpp
-sharedRuntime.hpp                       bytecodeTracer.hpp
-sharedRuntime.hpp                       hashtable.hpp
-sharedRuntime.hpp                       linkResolver.hpp
-sharedRuntime.hpp                       resourceArea.hpp
-sharedRuntime.hpp                       threadLocalStorage.hpp
-
-sharedRuntime_<arch_model>.cpp          assembler.hpp
-sharedRuntime_<arch_model>.cpp          assembler_<arch>.inline.hpp
-sharedRuntime_<arch_model>.cpp          compiledICHolderOop.hpp
-sharedRuntime_<arch_model>.cpp          debugInfoRec.hpp
-sharedRuntime_<arch_model>.cpp          icBuffer.hpp
-sharedRuntime_<arch_model>.cpp          interpreter.hpp
-sharedRuntime_<arch_model>.cpp          jvmtiRedefineClassesTrace.hpp
-sharedRuntime_<arch_model>.cpp          sharedRuntime.hpp
-sharedRuntime_<arch_model>.cpp          vframeArray.hpp
-sharedRuntime_<arch_model>.cpp          vmreg_<arch>.inline.hpp
-sharedRuntime_<arch_model>.cpp          vtableStubs.hpp
-
-sharedRuntimeTrans.cpp                  interfaceSupport.hpp
-sharedRuntimeTrans.cpp                  jni.h
-sharedRuntimeTrans.cpp                  sharedRuntime.hpp
-
-sharedRuntimeTrig.cpp                   interfaceSupport.hpp
-sharedRuntimeTrig.cpp                   jni.h
-sharedRuntimeTrig.cpp                   sharedRuntime.hpp
-
-signature.cpp                           instanceKlass.hpp
-signature.cpp                           oop.inline.hpp
-signature.cpp                           oopFactory.hpp
-signature.cpp                           signature.hpp
-signature.cpp                           symbolOop.hpp
-signature.cpp                           symbolTable.hpp
-signature.cpp                           systemDictionary.hpp
-signature.cpp                           typeArrayKlass.hpp
-
-signature.hpp                           allocation.hpp
-signature.hpp                           methodOop.hpp
-signature.hpp                           top.hpp
-
-simpleThresholdPolicy.cpp               arguments.hpp
-simpleThresholdPolicy.cpp               compileBroker.hpp
-simpleThresholdPolicy.cpp               resourceArea.hpp
-simpleThresholdPolicy.cpp               simpleThresholdPolicy.hpp
-simpleThresholdPolicy.cpp               simpleThresholdPolicy.inline.hpp
-
-simpleThresholdPolicy.hpp               compilationPolicy.hpp
-simpleThresholdPolicy.hpp               globalDefinitions.hpp
-simpleThresholdPolicy.hpp               methodDataOop.hpp
-simpleThresholdPolicy.hpp               nmethod.hpp
-
-sizes.cpp                               sizes.hpp
-
-sizes.hpp                               allocation.hpp
-sizes.hpp                               globalDefinitions.hpp
-
-space.cpp                               blockOffsetTable.inline.hpp
-space.cpp                               copy.hpp
-space.cpp                               defNewGeneration.hpp
-space.cpp                               genCollectedHeap.hpp
-space.cpp                               globalDefinitions.hpp
-space.cpp                               java.hpp
-space.cpp                               liveRange.hpp
-space.cpp                               markSweep.hpp
-space.cpp                               oop.inline.hpp
-space.cpp                               oop.inline2.hpp
-space.cpp                               safepoint.hpp
-space.cpp                               space.hpp
-space.cpp                               space.inline.hpp
-space.cpp                               spaceDecorator.hpp
-space.cpp                               systemDictionary.hpp
-space.cpp                               universe.inline.hpp
-space.cpp                               vmSymbols.hpp
-
-space.hpp                               allocation.hpp
-space.hpp                               blockOffsetTable.hpp
-space.hpp                               cardTableModRefBS.hpp
-space.hpp                               iterator.hpp
-space.hpp                               markOop.hpp
-space.hpp                               memRegion.hpp
-space.hpp                               mutexLocker.hpp
-space.hpp                               os_<os_family>.inline.hpp
-space.hpp                               prefetch.hpp
-space.hpp                               watermark.hpp
-space.hpp                               workgroup.hpp
-
-space.inline.hpp                        collectedHeap.hpp
-space.inline.hpp                        safepoint.hpp
-space.inline.hpp                        space.hpp
-space.inline.hpp                        universe.hpp
-
-spaceDecorator.hpp                      globalDefinitions.hpp
-spaceDecorator.hpp                      mutableSpace.hpp
-spaceDecorator.hpp                      space.hpp
-
-spaceDecorator.cpp                      copy.hpp
-spaceDecorator.cpp                      spaceDecorator.hpp
-spaceDecorator.cpp                      space.inline.hpp
-
-specialized_oop_closures.cpp            ostream.hpp
-specialized_oop_closures.cpp            specialized_oop_closures.hpp
-
-specialized_oop_closures.hpp            atomic.hpp
-
-stack.hpp                               allocation.inline.hpp
-
-stack.inline.hpp                        stack.hpp
-
-stackMapFrame.cpp                       globalDefinitions.hpp
-stackMapFrame.cpp                       handles.inline.hpp
-stackMapFrame.cpp                       oop.inline.hpp
-stackMapFrame.cpp                       resourceArea.hpp
-stackMapFrame.cpp                       stackMapFrame.hpp
-stackMapFrame.cpp                       symbolOop.hpp
-stackMapFrame.cpp                       verifier.hpp
-
-stackMapFrame.hpp                       exceptions.hpp
-stackMapFrame.hpp                       handles.hpp
-stackMapFrame.hpp                       methodOop.hpp
-stackMapFrame.hpp                       signature.hpp
-stackMapFrame.hpp                       verificationType.hpp
-stackMapFrame.hpp                       verifier.hpp
-
-stackMapTable.cpp                       fieldType.hpp
-stackMapTable.cpp                       handles.inline.hpp
-stackMapTable.cpp                       oop.inline.hpp
-stackMapTable.cpp                       resourceArea.hpp
-stackMapTable.cpp                       stackMapTable.hpp
-stackMapTable.cpp                       verifier.hpp
-
-stackMapTable.hpp                       allocation.hpp
-stackMapTable.hpp                       bytes_<arch>.hpp
-stackMapTable.hpp                       constantPoolOop.hpp
-stackMapTable.hpp                       globalDefinitions.hpp
-stackMapTable.hpp                       methodOop.hpp
-stackMapTable.hpp                       stackMapFrame.hpp
-
-stackValue.cpp                          debugInfo.hpp
-stackValue.cpp                          frame.inline.hpp
-stackValue.cpp                          handles.inline.hpp
-stackValue.cpp                          oop.inline.hpp
-stackValue.cpp                          stackValue.hpp
-
-stackValue.hpp                          handles.hpp
-stackValue.hpp                          location.hpp
-stackValue.hpp                          top.hpp
-
-stackValueCollection.cpp                jniTypes_<arch>.hpp
-stackValueCollection.cpp                stackValueCollection.hpp
-
-stackValueCollection.hpp                allocation.hpp
-stackValueCollection.hpp                growableArray.hpp
-stackValueCollection.hpp                stackValue.hpp
-
-statSampler.cpp                         allocation.inline.hpp
-statSampler.cpp                         arguments.hpp
-statSampler.cpp                         java.hpp
-statSampler.cpp                         javaCalls.hpp
-statSampler.cpp                         oop.inline.hpp
-statSampler.cpp                         os.hpp
-statSampler.cpp                         resourceArea.hpp
-statSampler.cpp                         statSampler.hpp
-statSampler.cpp                         systemDictionary.hpp
-statSampler.cpp                         vmSymbols.hpp
-statSampler.cpp                         vm_version_<arch>.hpp
-
-statSampler.hpp                         perfData.hpp
-statSampler.hpp                         task.hpp
-
-stubCodeGenerator.cpp                   assembler_<arch>.inline.hpp
-stubCodeGenerator.cpp                   disassembler.hpp
-stubCodeGenerator.cpp                   forte.hpp
-stubCodeGenerator.cpp                   oop.inline.hpp
-stubCodeGenerator.cpp                   stubCodeGenerator.hpp
-
-stubCodeGenerator.hpp                   allocation.hpp
-stubCodeGenerator.hpp                   assembler.hpp
-
-stubGenerator_<arch_model>.cpp          assembler.hpp
-stubGenerator_<arch_model>.cpp          assembler_<arch>.inline.hpp
-stubGenerator_<arch_model>.cpp          frame.inline.hpp
-stubGenerator_<arch_model>.cpp          handles.inline.hpp
-stubGenerator_<arch_model>.cpp          instanceOop.hpp
-stubGenerator_<arch_model>.cpp          interpreter.hpp
-stubGenerator_<arch_model>.cpp          methodHandles.hpp
-stubGenerator_<arch_model>.cpp          methodOop.hpp
-stubGenerator_<arch_model>.cpp          nativeInst_<arch>.hpp
-stubGenerator_<arch_model>.cpp          objArrayKlass.hpp
-stubGenerator_<arch_model>.cpp          oop.inline.hpp
-stubGenerator_<arch_model>.cpp          sharedRuntime.hpp
-stubGenerator_<arch_model>.cpp          stubCodeGenerator.hpp
-stubGenerator_<arch_model>.cpp          stubRoutines.hpp
-stubGenerator_<arch_model>.cpp          thread_<os_family>.inline.hpp
-stubGenerator_<arch_model>.cpp          top.hpp
-
-stubRoutines.cpp                        codeBuffer.hpp
-stubRoutines.cpp                        copy.hpp
-stubRoutines.cpp                        interfaceSupport.hpp
-stubRoutines.cpp                        oop.inline.hpp
-stubRoutines.cpp                        resourceArea.hpp
-stubRoutines.cpp                        sharedRuntime.hpp
-stubRoutines.cpp                        stubRoutines.hpp
-stubRoutines.cpp                        timer.hpp
-
-stubRoutines.hpp                        allocation.hpp
-stubRoutines.hpp                        codeBlob.hpp
-stubRoutines.hpp                        frame.hpp
-stubRoutines.hpp                        mutexLocker.hpp
-stubRoutines.hpp                        nativeInst_<arch>.hpp
-stubRoutines.hpp                        stubCodeGenerator.hpp
-stubRoutines.hpp                        top.hpp
-
-stubRoutines_<arch_model>.cpp           deoptimization.hpp
-stubRoutines_<arch_model>.cpp           frame.inline.hpp
-stubRoutines_<arch_model>.cpp           stubRoutines.hpp
-stubRoutines_<arch_model>.cpp           thread_<os_family>.inline.hpp
-
-stubRoutines_<arch_model>.hpp           generate_platform_dependent_include
-
-stubRoutines_<os_family>.cpp            os.hpp
-stubRoutines_<os_family>.cpp            stubRoutines.hpp
-
-stubs.cpp                               allocation.inline.hpp
-stubs.cpp                               codeBlob.hpp
-stubs.cpp                               mutexLocker.hpp
-stubs.cpp                               oop.inline.hpp
-stubs.cpp                               stubs.hpp
-
-stubs.hpp                               allocation.hpp
-stubs.hpp                               os_<os_family>.inline.hpp
-
-sweeper.cpp                             atomic.hpp
-sweeper.cpp                             codeCache.hpp
-sweeper.cpp				compilationPolicy.hpp
-sweeper.cpp                             compileBroker.hpp
-sweeper.cpp                             events.hpp
-sweeper.cpp                             methodOop.hpp
-sweeper.cpp                             mutexLocker.hpp
-sweeper.cpp                             nmethod.hpp
-sweeper.cpp                             os.hpp
-sweeper.cpp                             resourceArea.hpp
-sweeper.cpp                             sweeper.hpp
-sweeper.cpp                             vm_operations.hpp
-sweeper.cpp                             xmlstream.hpp
-
-symbolKlass.cpp                         gcLocker.hpp
-symbolKlass.cpp                         handles.inline.hpp
-symbolKlass.cpp                         oop.inline.hpp
-symbolKlass.cpp                         symbolKlass.hpp
-symbolKlass.cpp                         symbolOop.hpp
-symbolKlass.cpp                         symbolTable.hpp
-
-symbolKlass.hpp                         typeArrayKlass.hpp
-
-symbolOop.cpp                           oop.inline.hpp
-symbolOop.cpp                           symbolOop.hpp
-
-symbolOop.hpp                           typeArrayOop.hpp
-symbolOop.hpp                           utf8.hpp
-
-symbolTable.cpp                         collectedHeap.inline.hpp
-symbolTable.cpp                         filemap.hpp
-symbolTable.cpp                         gcLocker.inline.hpp
-symbolTable.cpp                         hashtable.inline.hpp
-symbolTable.cpp                         javaClasses.hpp
-symbolTable.cpp                         mutexLocker.hpp
-symbolTable.cpp                         oop.inline.hpp
-symbolTable.cpp                         oop.inline2.hpp
-symbolTable.cpp                         symbolKlass.hpp
-symbolTable.cpp                         symbolTable.hpp
-symbolTable.cpp                         systemDictionary.hpp
-
-symbolTable.hpp                         allocation.inline.hpp
-symbolTable.hpp                         hashtable.hpp
-symbolTable.hpp                         symbolOop.hpp
-
-synchronizer.cpp                        biasedLocking.hpp
-synchronizer.cpp                        dtrace.hpp
-synchronizer.cpp                        events.hpp
-synchronizer.cpp                        handles.inline.hpp
-synchronizer.cpp                        interfaceSupport.hpp
-synchronizer.cpp                        markOop.hpp
-synchronizer.cpp                        mutexLocker.hpp
-synchronizer.cpp                        objectMonitor.hpp
-synchronizer.cpp                        objectMonitor.inline.hpp
-synchronizer.cpp                        oop.inline.hpp
-synchronizer.cpp                        osThread.hpp
-synchronizer.cpp                        os_<os_family>.inline.hpp
-synchronizer.cpp                        preserveException.hpp
-synchronizer.cpp                        resourceArea.hpp
-synchronizer.cpp                        stubRoutines.hpp
-synchronizer.cpp                        synchronizer.hpp
-synchronizer.cpp                        threadService.hpp
-synchronizer.cpp                        thread_<os_family>.inline.hpp
-synchronizer.cpp                        vmSymbols.hpp
-
-synchronizer.hpp                        handles.hpp
-synchronizer.hpp                        markOop.hpp
-synchronizer.hpp                        perfData.hpp
-synchronizer.hpp                        top.hpp
-
-systemDictionary.cpp                    biasedLocking.hpp
-systemDictionary.cpp                    bytecodeStream.hpp
-systemDictionary.cpp                    classLoadingService.hpp
-systemDictionary.cpp                    dictionary.hpp
-systemDictionary.cpp                    fieldType.hpp
-systemDictionary.cpp                    gcLocker.hpp
-systemDictionary.cpp                    handles.inline.hpp
-systemDictionary.cpp                    instanceKlass.hpp
-systemDictionary.cpp                    instanceRefKlass.hpp
-systemDictionary.cpp                    interpreter.hpp
-systemDictionary.cpp                    java.hpp
-systemDictionary.cpp                    javaCalls.hpp
-systemDictionary.cpp                    javaClasses.hpp
-systemDictionary.cpp                    jvmtiEnvBase.hpp
-systemDictionary.cpp                    klass.inline.hpp
-systemDictionary.cpp                    loaderConstraints.hpp
-systemDictionary.cpp                    methodDataOop.hpp
-systemDictionary.cpp                    methodHandles.hpp
-systemDictionary.cpp                    mutexLocker.hpp
-systemDictionary.cpp                    objArrayKlass.hpp
-systemDictionary.cpp                    oop.inline.hpp
-systemDictionary.cpp                    oop.inline2.hpp
-systemDictionary.cpp                    oopFactory.hpp
-systemDictionary.cpp                    placeholders.hpp
-systemDictionary.cpp                    resolutionErrors.hpp
-systemDictionary.cpp                    signature.hpp
-systemDictionary.cpp                    systemDictionary.hpp
-systemDictionary.cpp                    threadService.hpp
-systemDictionary.cpp                    typeArrayKlass.hpp
-systemDictionary.cpp                    vmSymbols.hpp
-
-systemDictionary.hpp                    classFileStream.hpp
-systemDictionary.hpp                    classLoader.hpp
-systemDictionary.hpp                    hashtable.hpp
-systemDictionary.hpp                    java.hpp
-systemDictionary.hpp                    objArrayOop.hpp
-systemDictionary.hpp                    reflectionUtils.hpp
-systemDictionary.hpp                    symbolOop.hpp
-
-task.cpp                                allocation.hpp
-task.cpp                                init.hpp
-task.cpp                                os_<os_family>.inline.hpp
-task.cpp                                task.hpp
-task.cpp                                thread_<os_family>.inline.hpp
-task.cpp                                timer.hpp
-
-task.hpp                                top.hpp
-
-taskqueue.cpp                           debug.hpp
-taskqueue.cpp				oop.inline.hpp
-taskqueue.cpp                           os.hpp
-taskqueue.cpp                           stack.inline.hpp
-taskqueue.cpp                           taskqueue.hpp
-taskqueue.cpp                           thread_<os_family>.inline.hpp
-
-taskqueue.hpp                           allocation.hpp
-taskqueue.hpp                           allocation.inline.hpp
-taskqueue.hpp                           mutex.hpp
-taskqueue.hpp                           orderAccess_<os_arch>.inline.hpp
-taskqueue.hpp				stack.hpp
-
-templateInterpreter.cpp                 interpreter.hpp
-templateInterpreter.cpp                 interpreterGenerator.hpp
-templateInterpreter.cpp                 interpreterRuntime.hpp
-templateInterpreter.cpp                 templateTable.hpp
-
-templateInterpreter.hpp                 abstractInterpreter.hpp
-templateInterpreter.hpp                 templateTable.hpp
-
-templateInterpreter_<arch_model>.cpp    arguments.hpp
-templateInterpreter_<arch_model>.cpp    arrayOop.hpp
-templateInterpreter_<arch_model>.cpp    assembler.hpp
-templateInterpreter_<arch_model>.cpp    bytecodeHistogram.hpp
-templateInterpreter_<arch_model>.cpp    debug.hpp
-templateInterpreter_<arch_model>.cpp    deoptimization.hpp
-templateInterpreter_<arch_model>.cpp    frame.inline.hpp
-templateInterpreter_<arch_model>.cpp    interpreterRuntime.hpp
-templateInterpreter_<arch_model>.cpp    interpreter.hpp
-templateInterpreter_<arch_model>.cpp    interpreterGenerator.hpp
-templateInterpreter_<arch_model>.cpp    jvmtiExport.hpp
-templateInterpreter_<arch_model>.cpp    jvmtiThreadState.hpp
-templateInterpreter_<arch_model>.cpp    methodDataOop.hpp
-templateInterpreter_<arch_model>.cpp    methodOop.hpp
-templateInterpreter_<arch_model>.cpp    oop.inline.hpp
-templateInterpreter_<arch_model>.cpp    sharedRuntime.hpp
-templateInterpreter_<arch_model>.cpp    stubRoutines.hpp
-templateInterpreter_<arch_model>.cpp    synchronizer.hpp
-templateInterpreter_<arch_model>.cpp    templateTable.hpp
-templateInterpreter_<arch_model>.cpp    timer.hpp
-templateInterpreter_<arch_model>.cpp    vframeArray.hpp
-
-templateInterpreter_<arch>.hpp          generate_platform_dependent_include
-
-templateInterpreterGenerator_<arch>.hpp generate_platform_dependent_include
-
-templateTable.cpp                       collectedHeap.hpp
-templateTable.cpp                       templateTable.hpp
-templateTable.cpp                       timer.hpp
-
-templateTable.hpp                       allocation.hpp
-templateTable.hpp                       bytecodes.hpp
-templateTable.hpp                       frame.hpp
-templateTable.hpp                       interp_masm_<arch_model>.hpp
-
-templateTable_<arch_model>.cpp          interpreterRuntime.hpp
-templateTable_<arch_model>.cpp          interpreter.hpp
-templateTable_<arch_model>.cpp          methodDataOop.hpp
-templateTable_<arch_model>.cpp          methodHandles.hpp
-templateTable_<arch_model>.cpp          objArrayKlass.hpp
-templateTable_<arch_model>.cpp          oop.inline.hpp
-templateTable_<arch_model>.cpp          sharedRuntime.hpp
-templateTable_<arch_model>.cpp          stubRoutines.hpp
-templateTable_<arch_model>.cpp          synchronizer.hpp
-templateTable_<arch_model>.cpp          templateTable.hpp
-templateTable_<arch_model>.cpp          universe.inline.hpp
-
-templateTable_<arch_model>.hpp          generate_platform_dependent_include
-
-tenuredGeneration.cpp                   allocation.inline.hpp
-tenuredGeneration.cpp                   blockOffsetTable.inline.hpp
-tenuredGeneration.cpp                   collectorCounters.hpp
-tenuredGeneration.cpp                   generation.inline.hpp
-tenuredGeneration.cpp                   generationSpec.hpp
-tenuredGeneration.cpp                   java.hpp
-tenuredGeneration.cpp                   oop.inline.hpp
-tenuredGeneration.cpp                   parGCAllocBuffer.hpp
-tenuredGeneration.cpp                   space.hpp
-tenuredGeneration.cpp                   tenuredGeneration.hpp
-
-tenuredGeneration.hpp                   cSpaceCounters.hpp
-tenuredGeneration.hpp                   gcStats.hpp
-tenuredGeneration.hpp                   generation.hpp
-tenuredGeneration.hpp                   generationCounters.hpp
-
-thread.cpp                              aprofiler.hpp
-thread.cpp                              arguments.hpp
-thread.cpp                              attachListener.hpp
-thread.cpp                              biasedLocking.hpp
-thread.cpp                              classLoader.hpp
-thread.cpp                              compileBroker.hpp
-thread.cpp                              defaultStream.hpp
-thread.cpp                              deoptimization.hpp
-thread.cpp                              dtrace.hpp
-thread.cpp                              events.hpp
-thread.cpp                              fprofiler.hpp
-thread.cpp                              frame.inline.hpp
-thread.cpp                              gcTaskManager.hpp
-thread.cpp                              hpi.hpp
-thread.cpp                              init.hpp
-thread.cpp                              instanceKlass.hpp
-thread.cpp                              interfaceSupport.hpp
-thread.cpp                              interpreter.hpp
-thread.cpp                              interpreter.hpp
-thread.cpp                              java.hpp
-thread.cpp                              javaCalls.hpp
-thread.cpp                              javaClasses.hpp
-thread.cpp                              jniPeriodicChecker.hpp
-thread.cpp                              jvm_misc.hpp
-thread.cpp                              jvmtiExport.hpp
-thread.cpp                              jvmtiThreadState.hpp
-thread.cpp                              linkResolver.hpp
-thread.cpp                              management.hpp
-thread.cpp                              memprofiler.hpp
-thread.cpp                              mutexLocker.hpp
-thread.cpp                              objArrayOop.hpp
-thread.cpp                              objectMonitor.hpp
-thread.cpp                              objectMonitor.inline.hpp
-thread.cpp                              oop.inline.hpp
-thread.cpp                              oopFactory.hpp
-thread.cpp                              osThread.hpp
-thread.cpp                              os_<os_family>.inline.hpp
-thread.cpp                              preserveException.hpp
-thread.cpp                              privilegedStack.hpp
-thread.cpp                              safepoint.hpp
-thread.cpp                              scopeDesc.hpp
-thread.cpp                              sharedRuntime.hpp
-thread.cpp                              statSampler.hpp
-thread.cpp                              stubRoutines.hpp
-thread.cpp                              symbolOop.hpp
-thread.cpp                              systemDictionary.hpp
-thread.cpp                              task.hpp
-thread.cpp                              threadCritical.hpp
-thread.cpp                              threadLocalStorage.hpp
-thread.cpp                              threadService.hpp
-thread.cpp                              thread_<os_family>.inline.hpp
-thread.cpp                              universe.inline.hpp
-thread.cpp                              vframe.hpp
-thread.cpp                              vframeArray.hpp
-thread.cpp                              vframe_hp.hpp
-thread.cpp                              vmSymbols.hpp
-thread.cpp                              vmThread.hpp
-thread.cpp                              vm_operations.hpp
-
-thread.hpp                              allocation.hpp
-thread.hpp                              exceptions.hpp
-thread.hpp                              frame.hpp
-thread.hpp                              javaFrameAnchor.hpp
-thread.hpp                              jni.h
-thread.hpp                              jniHandles.hpp
-thread.hpp                              jvmtiExport.hpp
-thread.hpp                              mutexLocker.hpp
-thread.hpp                              oop.hpp
-thread.hpp                              os.hpp
-thread.hpp                              osThread.hpp
-thread.hpp                              safepoint.hpp
-thread.hpp                              stubRoutines.hpp
-thread.hpp                              threadLocalAllocBuffer.hpp
-thread.hpp                              threadLocalStorage.hpp
-thread.hpp                              top.hpp
-thread.hpp                              unhandledOops.hpp
-
-thread_<os_arch>.cpp                    frame.inline.hpp
-thread_<os_arch>.cpp                    thread_<os_family>.inline.hpp
-
-thread_<os_arch>.hpp                    generate_platform_dependent_include
-
-thread_<os_family>.inline.hpp           atomic.hpp
-thread_<os_family>.inline.hpp           atomic_<os_arch>.inline.hpp
-thread_<os_family>.inline.hpp           orderAccess_<os_arch>.inline.hpp
-thread_<os_family>.inline.hpp           prefetch.hpp
-thread_<os_family>.inline.hpp           prefetch_<os_arch>.inline.hpp
-thread_<os_family>.inline.hpp           thread.hpp
-thread_<os_family>.inline.hpp           threadLocalStorage.hpp
-
-threadCritical.hpp                      allocation.hpp
-
-threadCritical_<os_family>.cpp          threadCritical.hpp
-threadCritical_<os_family>.cpp          thread_<os_family>.inline.hpp
-
-threadLS_<os_arch>.cpp                  threadLocalStorage.hpp
-threadLS_<os_arch>.cpp                  thread_<os_family>.inline.hpp
-
-threadLS_<os_arch>.hpp                  generate_platform_dependent_include
-
-threadLocalAllocBuffer.cpp              copy.hpp
-threadLocalAllocBuffer.cpp              genCollectedHeap.hpp
-threadLocalAllocBuffer.cpp              oop.inline.hpp
-threadLocalAllocBuffer.cpp              resourceArea.hpp
-threadLocalAllocBuffer.cpp              threadLocalAllocBuffer.inline.hpp
-threadLocalAllocBuffer.cpp              thread_<os_family>.inline.hpp
-threadLocalAllocBuffer.cpp              universe.inline.hpp
-
-threadLocalAllocBuffer.hpp              gcUtil.hpp
-threadLocalAllocBuffer.hpp              perfData.hpp
-threadLocalAllocBuffer.hpp              typeArrayOop.hpp
-
-threadLocalAllocBuffer.inline.hpp       atomic.hpp
-threadLocalAllocBuffer.inline.hpp       collectedHeap.hpp
-threadLocalAllocBuffer.inline.hpp       copy.hpp
-threadLocalAllocBuffer.inline.hpp       threadLocalAllocBuffer.hpp
-
-threadLocalStorage.cpp                  os_<os_family>.inline.hpp
-threadLocalStorage.cpp                  threadLocalStorage.hpp
-threadLocalStorage.cpp                  thread_<os_family>.inline.hpp
-
-threadLocalStorage.hpp                  gcUtil.hpp
-threadLocalStorage.hpp                  os.hpp
-threadLocalStorage.hpp                  top.hpp
-
-threadService.cpp                       allocation.hpp
-threadService.cpp                       handles.inline.hpp
-threadService.cpp                       heapInspection.hpp
-threadService.cpp                       init.hpp
-threadService.cpp                       instanceKlass.hpp
-threadService.cpp                       oop.inline.hpp
-threadService.cpp                       oopFactory.hpp
-threadService.cpp                       systemDictionary.hpp
-threadService.cpp                       thread.hpp
-threadService.cpp                       threadService.hpp
-threadService.cpp                       vframe.hpp
-threadService.cpp                       vmThread.hpp
-threadService.cpp                       vm_operations.hpp
-
-threadService.hpp                       handles.hpp
-threadService.hpp                       init.hpp
-threadService.hpp                       javaClasses.hpp
-threadService.hpp                       jniHandles.hpp
-threadService.hpp                       management.hpp
-threadService.hpp                       objectMonitor.hpp
-threadService.hpp                       objectMonitor.inline.hpp
-threadService.hpp                       perfData.hpp
-threadService.hpp                       serviceUtil.hpp
-
-timer.cpp                               oop.inline.hpp
-timer.cpp                               os_<os_family>.inline.hpp
-timer.cpp                               ostream.hpp
-timer.cpp                               timer.hpp
-
-timer.hpp                               globalDefinitions.hpp
-
-top.hpp                                 debug.hpp
-top.hpp                                 exceptions.hpp
-top.hpp                                 globalDefinitions.hpp
-top.hpp                                 globals.hpp
-top.hpp                                 macros.hpp
-top.hpp                                 oopsHierarchy.hpp
-top.hpp                                 ostream.hpp
-top.hpp                                 sizes.hpp
-
-typeArrayKlass.cpp                      collectedHeap.hpp
-typeArrayKlass.cpp                      collectedHeap.inline.hpp
-typeArrayKlass.cpp                      handles.inline.hpp
-typeArrayKlass.cpp                      instanceKlass.hpp
-typeArrayKlass.cpp                      klassOop.hpp
-typeArrayKlass.cpp                      objArrayKlassKlass.hpp
-typeArrayKlass.cpp                      oop.inline.hpp
-typeArrayKlass.cpp                      resourceArea.hpp
-typeArrayKlass.cpp                      systemDictionary.hpp
-typeArrayKlass.cpp                      typeArrayKlass.hpp
-typeArrayKlass.cpp                      typeArrayOop.hpp
-typeArrayKlass.cpp                      universe.hpp
-typeArrayKlass.cpp                      universe.inline.hpp
-typeArrayKlass.cpp                      vmSymbols.hpp
-
-typeArrayKlass.hpp                      arrayKlass.hpp
-
-typeArrayKlassKlass.cpp                 handles.inline.hpp
-typeArrayKlassKlass.cpp                 javaClasses.hpp
-typeArrayKlassKlass.cpp                 oop.inline.hpp
-typeArrayKlassKlass.cpp                 typeArrayKlassKlass.hpp
-
-typeArrayKlassKlass.hpp                 arrayKlassKlass.hpp
-typeArrayKlassKlass.hpp                 typeArrayKlass.hpp
-
-typeArrayOop.cpp                        oop.inline.hpp
-typeArrayOop.cpp                        typeArrayOop.hpp
-
-typeArrayOop.hpp                        arrayOop.hpp
-typeArrayOop.hpp                        orderAccess_<os_arch>.inline.hpp
-typeArrayOop.hpp                        typeArrayKlass.hpp
-
-unhandledOops.cpp                       collectedHeap.hpp
-unhandledOops.cpp                       gcLocker.inline.hpp
-unhandledOops.cpp                       globalDefinitions.hpp
-unhandledOops.cpp                       oop.inline.hpp
-unhandledOops.cpp                       thread.hpp
-unhandledOops.cpp                       unhandledOops.hpp
-unhandledOops.cpp                       universe.hpp
-
-universe.cpp                            aprofiler.hpp
-universe.cpp                            arguments.hpp
-universe.cpp                            arrayKlassKlass.hpp
-universe.cpp                            cardTableModRefBS.hpp
-universe.cpp                            classLoader.hpp
-universe.cpp                            codeCache.hpp
-universe.cpp                            collectedHeap.inline.hpp
-universe.cpp                            compiledICHolderKlass.hpp
-universe.cpp                            constMethodKlass.hpp
-universe.cpp                            constantPoolKlass.hpp
-universe.cpp                            constantPoolOop.hpp
-universe.cpp                            copy.hpp
-universe.cpp                            cpCacheKlass.hpp
-universe.cpp                            cpCacheOop.hpp
-universe.cpp                            deoptimization.hpp
-universe.cpp                            dependencies.hpp
-universe.cpp                            events.hpp
-universe.cpp                            filemap.hpp
-universe.cpp                            fprofiler.hpp
-universe.cpp                            gcLocker.inline.hpp
-universe.cpp                            genCollectedHeap.hpp
-universe.cpp                            genRemSet.hpp
-universe.cpp                            generation.hpp
-universe.cpp                            handles.inline.hpp
-universe.cpp                            hashtable.inline.hpp
-universe.cpp                            instanceKlass.hpp
-universe.cpp                            instanceKlassKlass.hpp
-universe.cpp                            instanceRefKlass.hpp
-universe.cpp                            interpreter.hpp
-universe.cpp                            java.hpp
-universe.cpp                            javaCalls.hpp
-universe.cpp                            javaClasses.hpp
-universe.cpp                            jvmtiRedefineClassesTrace.hpp
-universe.cpp                            klassKlass.hpp
-universe.cpp                            klassOop.hpp
-universe.cpp                            memoryService.hpp
-universe.cpp                            methodDataKlass.hpp
-universe.cpp                            methodKlass.hpp
-universe.cpp                            objArrayKlassKlass.hpp
-universe.cpp                            oop.inline.hpp
-universe.cpp                            oopFactory.hpp
-universe.cpp                            permGen.hpp
-universe.cpp                            preserveException.hpp
-universe.cpp                            sharedRuntime.hpp
-universe.cpp                            space.hpp
-universe.cpp                            symbolKlass.hpp
-universe.cpp                            symbolTable.hpp
-universe.cpp                            synchronizer.hpp
-universe.cpp                            systemDictionary.hpp
-universe.cpp                            thread_<os_family>.inline.hpp
-universe.cpp                            timer.hpp
-universe.cpp                            typeArrayKlass.hpp
-universe.cpp                            typeArrayKlassKlass.hpp
-universe.cpp                            universe.hpp
-universe.cpp                            universe.inline.hpp
-universe.cpp                            vmSymbols.hpp
-universe.cpp                            vm_operations.hpp
-
-universe.hpp                            growableArray.hpp
-universe.hpp                            handles.hpp
-
-universe.inline.hpp                     universe.hpp
-
-unsafe.cpp                              allocation.inline.hpp
-unsafe.cpp                              copy.hpp
-unsafe.cpp                              dtrace.hpp
-unsafe.cpp                              globals.hpp
-unsafe.cpp                              interfaceSupport.hpp
-unsafe.cpp                              jni.h
-unsafe.cpp                              jvm.h
-unsafe.cpp                              reflection.hpp
-unsafe.cpp                              reflectionCompat.hpp
-unsafe.cpp                              synchronizer.hpp
-unsafe.cpp                              threadService.hpp
-unsafe.cpp                              vmSymbols.hpp
-
-utf8.cpp                                utf8.hpp
-
-utf8.hpp                                allocation.hpp
-utf8.hpp                                top.hpp
-
-verificationType.cpp                    symbolTable.hpp
-verificationType.cpp                    verificationType.hpp
-
-verificationType.hpp                    allocation.hpp
-verificationType.hpp                    handles.hpp
-verificationType.hpp                    instanceKlass.hpp
-verificationType.hpp                    oop.inline.hpp
-verificationType.hpp                    signature.hpp
-verificationType.hpp                    symbolOop.hpp
-verificationType.hpp                    systemDictionary.hpp
-
-verifier.cpp                            bytecodeStream.hpp
-verifier.cpp                            bytes_<arch>.hpp
-verifier.cpp                            classFileStream.hpp
-verifier.cpp                            fieldDescriptor.hpp
-verifier.cpp                            handles.inline.hpp
-verifier.cpp                            hpi.hpp
-verifier.cpp                            instanceKlass.hpp
-verifier.cpp                            interfaceSupport.hpp
-verifier.cpp                            javaCalls.hpp
-verifier.cpp                            javaClasses.hpp
-verifier.cpp                            jvm.h
-verifier.cpp                            oop.inline.hpp
-verifier.cpp                            oopFactory.hpp
-verifier.cpp                            orderAccess.hpp
-verifier.cpp                            os.hpp
-verifier.cpp                            resourceArea.hpp
-verifier.cpp                            stackMapTable.hpp
-verifier.cpp                            systemDictionary.hpp
-verifier.cpp                            typeArrayOop.hpp
-verifier.cpp                            verifier.hpp
-verifier.cpp                            vmSymbols.hpp
-
-verifier.hpp                            exceptions.hpp
-verifier.hpp                            gcLocker.hpp
-verifier.hpp                            handles.hpp
-verifier.hpp                            klass.hpp
-verifier.hpp                            methodOop.hpp
-verifier.hpp                            verificationType.hpp
-
-vframe.cpp                              codeCache.hpp
-vframe.cpp                              debugInfoRec.hpp
-vframe.cpp                              handles.inline.hpp
-vframe.cpp                              instanceKlass.hpp
-vframe.cpp                              interpreter.hpp
-vframe.cpp                              javaClasses.hpp
-vframe.cpp                              nmethod.hpp
-vframe.cpp                              objectMonitor.hpp
-vframe.cpp                              objectMonitor.inline.hpp
-vframe.cpp                              oop.inline.hpp
-vframe.cpp                              oopMapCache.hpp
-vframe.cpp                              pcDesc.hpp
-vframe.cpp                              resourceArea.hpp
-vframe.cpp                              scopeDesc.hpp
-vframe.cpp                              signature.hpp
-vframe.cpp                              stubRoutines.hpp
-vframe.cpp                              synchronizer.hpp
-vframe.cpp                              systemDictionary.hpp
-vframe.cpp                              vframe.hpp
-vframe.cpp                              vframeArray.hpp
-vframe.cpp                              vframe_hp.hpp
-vframe.cpp                              vmSymbols.hpp
-
-vframe.hpp                              debugInfo.hpp
-vframe.hpp                              debugInfoRec.hpp
-vframe.hpp                              frame.hpp
-vframe.hpp                              frame.inline.hpp
-vframe.hpp                              growableArray.hpp
-vframe.hpp                              location.hpp
-vframe.hpp                              oop.hpp
-vframe.hpp                              stackValue.hpp
-vframe.hpp                              stackValueCollection.hpp
-
-vframeArray.cpp                         allocation.inline.hpp
-vframeArray.cpp                         events.hpp
-vframeArray.cpp                         handles.inline.hpp
-vframeArray.cpp                         interpreter.hpp
-vframeArray.cpp                         jvmtiThreadState.hpp
-vframeArray.cpp                         methodDataOop.hpp
-vframeArray.cpp                         monitorChunk.hpp
-vframeArray.cpp                         oop.inline.hpp
-vframeArray.cpp                         resourceArea.hpp
-vframeArray.cpp                         sharedRuntime.hpp
-vframeArray.cpp                         universe.inline.hpp
-vframeArray.cpp                         vframe.hpp
-vframeArray.cpp                         vframeArray.hpp
-vframeArray.cpp                         vframe_hp.hpp
-vframeArray.cpp                         vmSymbols.hpp
-
-vframeArray.hpp                         arrayOop.hpp
-vframeArray.hpp                         deoptimization.hpp
-vframeArray.hpp                         frame.inline.hpp
-vframeArray.hpp                         growableArray.hpp
-vframeArray.hpp                         monitorChunk.hpp
-
-vframe_hp.cpp                           codeCache.hpp
-vframe_hp.cpp                           debugInfoRec.hpp
-vframe_hp.cpp                           handles.inline.hpp
-vframe_hp.cpp                           instanceKlass.hpp
-vframe_hp.cpp                           interpreter.hpp
-vframe_hp.cpp                           monitorChunk.hpp
-vframe_hp.cpp                           nmethod.hpp
-vframe_hp.cpp                           oop.inline.hpp
-vframe_hp.cpp                           oopMapCache.hpp
-vframe_hp.cpp                           pcDesc.hpp
-vframe_hp.cpp                           scopeDesc.hpp
-vframe_hp.cpp                           signature.hpp
-vframe_hp.cpp                           stubRoutines.hpp
-vframe_hp.cpp                           synchronizer.hpp
-vframe_hp.cpp                           vframeArray.hpp
-vframe_hp.cpp                           vframe_hp.hpp
-
-vframe_hp.hpp                           vframe.hpp
-
-virtualspace.cpp                        markOop.hpp
-virtualspace.cpp                        oop.inline.hpp
-virtualspace.cpp                        os_<os_family>.inline.hpp
-virtualspace.cpp                        virtualspace.hpp
-
-virtualspace.hpp                        allocation.hpp
-
-vmError.cpp                             arguments.hpp
-vmError.cpp                             collectedHeap.hpp
-vmError.cpp                             compileBroker.hpp
-vmError.cpp                             debug.hpp
-vmError.cpp                             defaultStream.hpp
-vmError.cpp                             frame.inline.hpp
-vmError.cpp                             init.hpp
-vmError.cpp                             os.hpp
-vmError.cpp                             thread.hpp
-vmError.cpp                             top.hpp
-vmError.cpp                             vmError.hpp
-vmError.cpp                             vmThread.hpp
-vmError.cpp                             vm_operations.hpp
-
-vmError.hpp                             globalDefinitions.hpp
-
-vmError_<os_family>.cpp                 arguments.hpp
-vmError_<os_family>.cpp                 os.hpp
-vmError_<os_family>.cpp                 thread.hpp
-vmError_<os_family>.cpp                 vmError.hpp
-
-// vmStructs is jck optional, put cpp deps in includeDB_features
-
-vmStructs.hpp                           debug.hpp
-
-vmSymbols.cpp                           handles.inline.hpp
-vmSymbols.cpp                           oop.inline.hpp
-vmSymbols.cpp                           oopFactory.hpp
-vmSymbols.cpp                           vmSymbols.hpp
-vmSymbols.cpp                           xmlstream.hpp
-
-vmSymbols.hpp                           symbolOop.hpp
-
-vmThread.cpp                            collectedHeap.hpp
-vmThread.cpp                            compileBroker.hpp
-vmThread.cpp                            dtrace.hpp
-vmThread.cpp                            events.hpp
-vmThread.cpp                            interfaceSupport.hpp
-vmThread.cpp                            methodOop.hpp
-vmThread.cpp                            mutexLocker.hpp
-vmThread.cpp                            oop.inline.hpp
-vmThread.cpp                            os.hpp
-vmThread.cpp                            resourceArea.hpp
-vmThread.cpp                            runtimeService.hpp
-vmThread.cpp                            thread_<os_family>.inline.hpp
-vmThread.cpp                            vmThread.hpp
-vmThread.cpp                            vm_operations.hpp
-vmThread.cpp                            xmlstream.hpp
-
-vmThread.hpp                            perfData.hpp
-vmThread.hpp                            thread_<os_family>.inline.hpp
-vmThread.hpp                            vm_operations.hpp
-
-vm_operations.cpp                       arguments.hpp
-vm_operations.cpp                       compileBroker.hpp
-vm_operations.cpp                       compilerOracle.hpp
-vm_operations.cpp                       deoptimization.hpp
-vm_operations.cpp                       interfaceSupport.hpp
-vm_operations.cpp                       isGCActiveMark.hpp
-vm_operations.cpp                       resourceArea.hpp
-vm_operations.cpp                       sweeper.hpp
-vm_operations.cpp                       threadService.hpp
-vm_operations.cpp                       thread_<os_family>.inline.hpp
-vm_operations.cpp                       vmSymbols.hpp
-vm_operations.cpp                       vm_operations.hpp
-
-vm_operations.hpp                       allocation.hpp
-vm_operations.hpp                       javaClasses.hpp
-vm_operations.hpp                       oop.hpp
-vm_operations.hpp                       thread.hpp
-vm_operations.hpp                       top.hpp
-
-vm_version.cpp                          arguments.hpp
-vm_version.cpp                          oop.inline.hpp
-vm_version.cpp                          universe.hpp
-vm_version.cpp                          vm_version_<arch>.hpp
-
-vm_version.hpp                          allocation.hpp
-vm_version.hpp                          ostream.hpp
-
-vm_version_<arch>.cpp                   assembler_<arch>.inline.hpp
-vm_version_<arch>.cpp                   java.hpp
-vm_version_<arch>.cpp                   os_<os_family>.inline.hpp
-vm_version_<arch>.cpp                   resourceArea.hpp
-vm_version_<arch>.cpp                   stubCodeGenerator.hpp
-vm_version_<arch>.cpp                   vm_version_<arch>.hpp
-
-vm_version_<arch>.hpp                   globals_extension.hpp
-vm_version_<arch>.hpp                   vm_version.hpp
-
-vm_version_<os_arch>.cpp                os.hpp
-vm_version_<os_arch>.cpp                vm_version_<arch>.hpp
-
-vmreg.cpp                               assembler.hpp
-vmreg.cpp                               vmreg.hpp
-
-vmreg.hpp                               allocation.hpp
-vmreg.hpp                               globalDefinitions.hpp
-vmreg.hpp                               register_<arch>.hpp
-
-vmreg_<arch>.cpp                        assembler.hpp
-vmreg_<arch>.cpp                        vmreg.hpp
-
-vmreg_<arch>.hpp                        generate_platform_dependent_include
-
-vtableStubs.cpp                         allocation.inline.hpp
-vtableStubs.cpp                         disassembler.hpp
-vtableStubs.cpp                         forte.hpp
-vtableStubs.cpp                         handles.inline.hpp
-vtableStubs.cpp                         instanceKlass.hpp
-vtableStubs.cpp                         jvmtiExport.hpp
-vtableStubs.cpp                         klassVtable.hpp
-vtableStubs.cpp                         oop.inline.hpp
-vtableStubs.cpp                         mutexLocker.hpp
-vtableStubs.cpp                         resourceArea.hpp
-vtableStubs.cpp                         sharedRuntime.hpp
-vtableStubs.cpp                         vtableStubs.hpp
-
-vtableStubs.hpp                         allocation.hpp
-
-vtableStubs_<arch_model>.cpp            assembler.hpp
-vtableStubs_<arch_model>.cpp            assembler_<arch>.inline.hpp
-vtableStubs_<arch_model>.cpp            instanceKlass.hpp
-vtableStubs_<arch_model>.cpp            interp_masm_<arch_model>.hpp
-vtableStubs_<arch_model>.cpp            klassVtable.hpp
-vtableStubs_<arch_model>.cpp            resourceArea.hpp
-vtableStubs_<arch_model>.cpp            sharedRuntime.hpp
-vtableStubs_<arch_model>.cpp            vmreg_<arch>.inline.hpp
-vtableStubs_<arch_model>.cpp            vtableStubs.hpp
-
-watermark.hpp                           allocation.hpp
-watermark.hpp                           globalDefinitions.hpp
-
-workgroup.cpp                           allocation.hpp
-workgroup.cpp                           allocation.inline.hpp
-workgroup.cpp                           os.hpp
-workgroup.cpp                           workgroup.hpp
-
-workgroup.hpp                           taskqueue.hpp
-workgroup.hpp                           thread_<os_family>.inline.hpp
-
-xmlstream.cpp                           allocation.hpp
-xmlstream.cpp                           allocation.inline.hpp
-xmlstream.cpp                           deoptimization.hpp
-xmlstream.cpp                           methodDataOop.hpp
-xmlstream.cpp                           methodOop.hpp
-xmlstream.cpp                           nmethod.hpp
-xmlstream.cpp                           oop.inline.hpp
-xmlstream.cpp                           vmThread.hpp
-xmlstream.cpp                           xmlstream.hpp
-
-xmlstream.hpp                           handles.hpp
-xmlstream.hpp                           ostream.hpp
--- a/src/share/vm/includeDB_features	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
-//
-// Copyright (c) 2007, 2009, 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.
-//  
-//
-
-attachListener.cpp                      arguments.hpp
-attachListener.cpp                      attachListener.hpp
-attachListener.cpp                      globals.hpp
-attachListener.cpp                      heapDumper.hpp
-attachListener.cpp                      java.hpp
-attachListener.cpp                      javaCalls.hpp
-attachListener.cpp                      javaClasses.hpp
-attachListener.cpp                      jvmtiExport.hpp
-attachListener.cpp                      os.hpp
-attachListener.cpp                      resourceArea.hpp
-attachListener.cpp                      systemDictionary.hpp
-attachListener.cpp                      vmGCOperations.hpp
-
-attachListener_<os_family>.cpp          attachListener.hpp
-attachListener_<os_family>.cpp          dtraceAttacher.hpp
-attachListener_<os_family>.cpp          interfaceSupport.hpp
-attachListener_<os_family>.cpp          os.hpp
-
-dump.cpp                                classify.hpp
-dump.cpp                                copy.hpp
-dump.cpp                                filemap.hpp
-dump.cpp                                javaCalls.hpp
-dump.cpp                                javaClasses.hpp
-dump.cpp                                loaderConstraints.hpp
-dump.cpp                                methodDataOop.hpp
-dump.cpp                                oop.inline.hpp
-dump.cpp                                oopFactory.hpp
-dump.cpp                                resourceArea.hpp
-dump.cpp                                signature.hpp
-dump.cpp                                spaceDecorator.hpp
-dump.cpp                                symbolTable.hpp
-dump.cpp                                systemDictionary.hpp
-dump.cpp                                vmThread.hpp
-dump.cpp                                vm_operations.hpp
-
-dump_<arch_model>.cpp                   assembler_<arch>.inline.hpp
-dump_<arch_model>.cpp                   compactingPermGenGen.hpp
-dump_<arch_model>.cpp                   generation.inline.hpp
-dump_<arch_model>.cpp                   space.inline.hpp
-
-forte.cpp                               collectedHeap.inline.hpp
-forte.cpp                               debugInfoRec.hpp
-forte.cpp                               forte.hpp
-forte.cpp                               oop.inline.hpp
-forte.cpp                               oop.inline2.hpp
-forte.cpp                               pcDesc.hpp
-forte.cpp                               space.hpp
-forte.cpp                               thread.hpp
-forte.cpp                               universe.inline.hpp
-forte.cpp                               vframe.hpp
-forte.cpp                               vframeArray.hpp
-
-fprofiler.cpp                           allocation.inline.hpp
-fprofiler.cpp                           classLoader.hpp
-fprofiler.cpp                           collectedHeap.inline.hpp
-fprofiler.cpp                           deoptimization.hpp
-fprofiler.cpp                           fprofiler.hpp
-fprofiler.cpp                           interpreter.hpp
-fprofiler.cpp                           macros.hpp
-fprofiler.cpp                           mutexLocker.hpp
-fprofiler.cpp                           oop.inline.hpp
-fprofiler.cpp                           oop.inline2.hpp
-fprofiler.cpp                           stubCodeGenerator.hpp
-fprofiler.cpp                           stubRoutines.hpp
-fprofiler.cpp                           symbolOop.hpp
-fprofiler.cpp                           task.hpp
-fprofiler.cpp                           universe.inline.hpp
-fprofiler.cpp                           vframe.hpp
-fprofiler.cpp                           vtableStubs.hpp
-
-heapDumper.cpp                          genCollectedHeap.hpp
-heapDumper.cpp                          heapDumper.hpp 
-heapDumper.cpp                          javaCalls.hpp
-heapDumper.cpp                          jniHandles.hpp
-heapDumper.cpp                          objArrayKlass.hpp
-heapDumper.cpp                          ostream.hpp
-heapDumper.cpp                          reflectionUtils.hpp
-heapDumper.cpp                          symbolTable.hpp
-heapDumper.cpp                          systemDictionary.hpp
-heapDumper.cpp                          threadService.hpp
-heapDumper.cpp                          universe.hpp
-heapDumper.cpp                          vframe.hpp
-heapDumper.cpp                          vmGCOperations.hpp
-heapDumper.cpp                          vmSymbols.hpp
-heapDumper.cpp                          vmThread.hpp
-heapDumper.cpp                          vm_operations.hpp
-
-heapInspection.cpp                      collectedHeap.hpp
-heapInspection.cpp                      genCollectedHeap.hpp
-heapInspection.cpp                      globalDefinitions.hpp
-heapInspection.cpp                      heapInspection.hpp
-heapInspection.cpp                      klassOop.hpp
-heapInspection.cpp                      os.hpp
-heapInspection.cpp                      resourceArea.hpp
-
-javaCalls.cpp                           jniCheck.hpp
-
-jniCheck.cpp                            fieldDescriptor.hpp
-jniCheck.cpp                            handles.hpp
-jniCheck.cpp                            instanceKlass.hpp
-jniCheck.cpp                            interfaceSupport.hpp
-jniCheck.cpp                            jfieldIDWorkaround.hpp
-jniCheck.cpp                            jni.h
-jniCheck.cpp                            jniCheck.hpp
-jniCheck.cpp                            jniTypes_<arch>.hpp
-jniCheck.cpp                            jvm_misc.hpp
-jniCheck.cpp                            oop.inline.hpp
-jniCheck.cpp                            symbolOop.hpp
-jniCheck.cpp                            systemDictionary.hpp
-jniCheck.cpp                            thread.hpp
-jniCheck.cpp                            vmSymbols.hpp
-
-jvmtiCodeBlobEvents.cpp                 codeBlob.hpp
-jvmtiCodeBlobEvents.cpp                 codeCache.hpp
-jvmtiCodeBlobEvents.cpp                 handles.hpp
-jvmtiCodeBlobEvents.cpp                 handles.inline.hpp
-jvmtiCodeBlobEvents.cpp                 jvmtiCodeBlobEvents.hpp
-jvmtiCodeBlobEvents.cpp                 jvmtiExport.hpp
-jvmtiCodeBlobEvents.cpp                 oop.inline.hpp
-jvmtiCodeBlobEvents.cpp                 resourceArea.hpp
-jvmtiCodeBlobEvents.cpp                 scopeDesc.hpp
-jvmtiCodeBlobEvents.cpp                 vmThread.hpp
-
-jvmtiCodeBlobEvents.hpp                 jvmti.h
-
-jvmtiExtensions.cpp                     jvmtiExport.hpp
-jvmtiExtensions.cpp                     jvmtiExtensions.hpp
-
-jvmtiExtensions.hpp                     allocation.hpp
-jvmtiExtensions.hpp                     jvmti.h
-jvmtiExtensions.hpp                     jvmtiEnv.hpp
-
-jvmtiImpl.cpp                           exceptions.hpp
-jvmtiImpl.cpp                           handles.hpp
-jvmtiImpl.cpp                           handles.inline.hpp
-jvmtiImpl.cpp                           instanceKlass.hpp
-jvmtiImpl.cpp                           interfaceSupport.hpp
-jvmtiImpl.cpp                           interpreter.hpp
-jvmtiImpl.cpp                           javaCalls.hpp
-jvmtiImpl.cpp                           jvmtiAgentThread.hpp
-jvmtiImpl.cpp                           jvmtiEnv.hpp
-jvmtiImpl.cpp                           jvmtiEventController.inline.hpp
-jvmtiImpl.cpp                           jvmtiImpl.hpp
-jvmtiImpl.cpp                           jvmtiRedefineClasses.hpp
-jvmtiImpl.cpp                           resourceArea.hpp
-jvmtiImpl.cpp                           signature.hpp
-jvmtiImpl.cpp                           systemDictionary.hpp
-jvmtiImpl.cpp                           thread_<os_family>.inline.hpp
-jvmtiImpl.cpp                           vframe.hpp
-jvmtiImpl.cpp                           vframe_hp.hpp
-jvmtiImpl.cpp                           vm_operations.hpp
-
-jvmtiImpl.hpp                           jvmti.h
-jvmtiImpl.hpp                           jvmtiEnvThreadState.hpp
-jvmtiImpl.hpp                           jvmtiEventController.hpp
-jvmtiImpl.hpp                           jvmtiTrace.hpp
-jvmtiImpl.hpp                           jvmtiUtil.hpp
-jvmtiImpl.hpp                           objArrayOop.hpp
-jvmtiImpl.hpp                           stackValueCollection.hpp
-jvmtiImpl.hpp                           systemDictionary.hpp
-jvmtiImpl.hpp                           vm_operations.hpp
-
-jvmtiTagMap.cpp                         biasedLocking.hpp
-jvmtiTagMap.cpp                         javaCalls.hpp
-jvmtiTagMap.cpp                         jniHandles.hpp
-jvmtiTagMap.cpp                         jvmtiEnv.hpp
-jvmtiTagMap.cpp                         jvmtiEventController.hpp
-jvmtiTagMap.cpp                         jvmtiEventController.inline.hpp
-jvmtiTagMap.cpp                         jvmtiExport.hpp
-jvmtiTagMap.cpp                         jvmtiImpl.hpp
-jvmtiTagMap.cpp                         jvmtiTagMap.hpp
-jvmtiTagMap.cpp                         mutex.hpp
-jvmtiTagMap.cpp                         mutexLocker.hpp
-jvmtiTagMap.cpp                         objArrayKlass.hpp
-jvmtiTagMap.cpp                         oop.inline2.hpp
-jvmtiTagMap.cpp                         reflectionUtils.hpp
-jvmtiTagMap.cpp                         serviceUtil.hpp
-jvmtiTagMap.cpp                         symbolTable.hpp
-jvmtiTagMap.cpp                         systemDictionary.hpp
-jvmtiTagMap.cpp                         vframe.hpp
-jvmtiTagMap.cpp                         vmSymbols.hpp
-jvmtiTagMap.cpp                         vmThread.hpp
-jvmtiTagMap.cpp                         vm_operations.hpp
-
-jvmtiTagMap.hpp                         allocation.hpp
-jvmtiTagMap.hpp                         collectedHeap.hpp
-jvmtiTagMap.hpp                         genCollectedHeap.hpp
-jvmtiTagMap.hpp                         jvmti.h
-jvmtiTagMap.hpp                         jvmtiEnv.hpp
-jvmtiTagMap.hpp                         universe.hpp
-
-jvmtiTrace.cpp                          jvmtiEnv.hpp
-jvmtiTrace.cpp                          jvmtiTrace.hpp
-
-jvmtiTrace.hpp                          jvmti.h
-jvmtiTrace.hpp                          jvmtiEnvThreadState.hpp
-jvmtiTrace.hpp                          jvmtiEventController.hpp
-jvmtiTrace.hpp                          jvmtiUtil.hpp
-jvmtiTrace.hpp                          objArrayOop.hpp
-jvmtiTrace.hpp                          stackValueCollection.hpp
-jvmtiTrace.hpp                          systemDictionary.hpp
-jvmtiTrace.hpp                          vm_operations.hpp
-
-restore.cpp                             filemap.hpp
-restore.cpp                             hashtable.inline.hpp
-restore.cpp                             oop.inline.hpp
-restore.cpp                             symbolTable.hpp
-restore.cpp                             systemDictionary.hpp
-
-serialize.cpp                           classify.hpp
-serialize.cpp                           codeCache.hpp
-serialize.cpp                           compactingPermGenGen.hpp
-serialize.cpp                           compiledICHolderOop.hpp
-serialize.cpp                           methodDataOop.hpp
-serialize.cpp                           objArrayOop.hpp
-serialize.cpp                           oop.inline.hpp
-serialize.cpp                           symbolTable.hpp
-serialize.cpp                           systemDictionary.hpp
-
-vmStructs.cpp                           arguments.hpp
-vmStructs.cpp                           arrayKlass.hpp
-vmStructs.cpp                           arrayKlassKlass.hpp
-vmStructs.cpp                           arrayOop.hpp
-vmStructs.cpp                           bytecodes.hpp
-vmStructs.cpp                           bytecodeInterpreter.hpp
-vmStructs.cpp                           cardTableRS.hpp
-vmStructs.cpp                           codeBlob.hpp
-vmStructs.cpp                           codeCache.hpp
-vmStructs.cpp                           collectedHeap.hpp
-vmStructs.cpp                           compactPermGen.hpp
-vmStructs.cpp                           compiledICHolderKlass.hpp
-vmStructs.cpp                           compiledICHolderOop.hpp
-vmStructs.cpp                           compressedStream.hpp
-vmStructs.cpp                           constMethodKlass.hpp
-vmStructs.cpp                           constMethodOop.hpp
-vmStructs.cpp                           constantPoolKlass.hpp
-vmStructs.cpp                           constantPoolOop.hpp
-vmStructs.cpp                           cpCacheKlass.hpp
-vmStructs.cpp                           cpCacheOop.hpp
-vmStructs.cpp                           defNewGeneration.hpp
-vmStructs.cpp                           dictionary.hpp
-vmStructs.cpp                           freeBlockDictionary.hpp
-vmStructs.cpp                           genCollectedHeap.hpp
-vmStructs.cpp                           generation.hpp
-vmStructs.cpp                           generationSpec.hpp
-vmStructs.cpp                           globalDefinitions.hpp
-vmStructs.cpp                           globals.hpp
-vmStructs.cpp                           hashtable.hpp
-vmStructs.cpp                           heap.hpp
-vmStructs.cpp                           immutableSpace.hpp
-vmStructs.cpp                           instanceKlass.hpp
-vmStructs.cpp                           instanceKlassKlass.hpp
-vmStructs.cpp                           instanceOop.hpp
-vmStructs.cpp                           interpreter.hpp
-vmStructs.cpp                           java.hpp
-vmStructs.cpp                           javaCalls.hpp
-vmStructs.cpp                           javaClasses.hpp
-vmStructs.cpp                           jvmtiAgentThread.hpp
-vmStructs.cpp                           klass.hpp
-vmStructs.cpp                           klassOop.hpp
-vmStructs.cpp                           loaderConstraints.hpp
-vmStructs.cpp                           location.hpp
-vmStructs.cpp                           markOop.hpp
-vmStructs.cpp                           markSweep.hpp
-vmStructs.cpp                           methodDataKlass.hpp
-vmStructs.cpp                           methodDataOop.hpp
-vmStructs.cpp                           methodKlass.hpp
-vmStructs.cpp                           methodOop.hpp
-vmStructs.cpp                           mutableSpace.hpp
-vmStructs.cpp                           nmethod.hpp
-vmStructs.cpp                           objArrayKlass.hpp
-vmStructs.cpp                           objArrayKlassKlass.hpp
-vmStructs.cpp                           objArrayOop.hpp
-vmStructs.cpp                           oop.inline.hpp
-vmStructs.cpp                           oopMap.hpp
-vmStructs.cpp                           pcDesc.hpp
-vmStructs.cpp                           perfMemory.hpp
-vmStructs.cpp                           permGen.hpp
-vmStructs.cpp                           placeholders.hpp
-vmStructs.cpp                           sharedRuntime.hpp
-vmStructs.cpp                           space.hpp
-vmStructs.cpp                           stubRoutines.hpp
-vmStructs.cpp                           stubs.hpp
-vmStructs.cpp                           symbolKlass.hpp
-vmStructs.cpp                           symbolOop.hpp
-vmStructs.cpp                           symbolTable.hpp
-vmStructs.cpp                           systemDictionary.hpp
-vmStructs.cpp                           tenuredGeneration.hpp
-vmStructs.cpp                           thread_<os_family>.inline.hpp
-vmStructs.cpp                           typeArrayKlass.hpp
-vmStructs.cpp                           typeArrayKlassKlass.hpp
-vmStructs.cpp                           typeArrayOop.hpp
-vmStructs.cpp                           universe.hpp
-vmStructs.cpp                           virtualspace.hpp
-vmStructs.cpp                           vmStructs.hpp
-vmStructs.cpp                           vmStructs_<arch>.hpp
-vmStructs.cpp                           vmStructs_<os_arch>.hpp
-vmStructs.cpp                           vmreg.hpp
-vmStructs.cpp                           watermark.hpp
-
-vmStructs.hpp                           debug.hpp
--- a/src/share/vm/includeDB_gc	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-//
-// Copyright (c) 2001, 2009, 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.
-//  
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-collectedHeap.cpp                       collectedHeap.hpp
-collectedHeap.cpp                       collectedHeap.inline.hpp
-collectedHeap.cpp                       heapDumper.hpp
-collectedHeap.cpp                       init.hpp
-collectedHeap.cpp                       oop.inline.hpp
-collectedHeap.cpp                       systemDictionary.hpp
-collectedHeap.cpp                       thread_<os_family>.inline.hpp
-collectedHeap.cpp                       vmGCOperations.hpp
-
-collectedHeap.hpp                       allocation.hpp
-collectedHeap.hpp                       barrierSet.hpp
-collectedHeap.hpp                       gcCause.hpp
-collectedHeap.hpp                       handles.hpp
-collectedHeap.hpp                       perfData.hpp
-collectedHeap.hpp                       safepoint.hpp
-
-collectedHeap.inline.hpp                arrayOop.hpp
-collectedHeap.inline.hpp                collectedHeap.hpp
-collectedHeap.inline.hpp                copy.hpp
-collectedHeap.inline.hpp                jvmtiExport.hpp
-collectedHeap.inline.hpp                lowMemoryDetector.hpp
-collectedHeap.inline.hpp                sharedRuntime.hpp
-collectedHeap.inline.hpp                thread.hpp
-collectedHeap.inline.hpp                threadLocalAllocBuffer.inline.hpp
-collectedHeap.inline.hpp                universe.hpp
-collectedHeap.inline.hpp                thread_<os_family>.inline.hpp
-collectedHeap.inline.hpp                sharedRuntime.hpp
-
-gcCause.hpp                             allocation.hpp
-
-gcCause.cpp                             gcCause.hpp
--- a/src/share/vm/includeDB_gc_parallel	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-//
-// Copyright (c) 2007, 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.
-//  
-
-arguments.cpp                           compactibleFreeListSpace.hpp
-
-assembler_<arch>.cpp                    g1SATBCardTableModRefBS.hpp
-assembler_<arch>.cpp                    g1CollectedHeap.inline.hpp
-assembler_<arch>.cpp                    heapRegion.hpp
-
-collectorPolicy.cpp                     cmsAdaptiveSizePolicy.hpp
-collectorPolicy.cpp                     cmsGCAdaptivePolicyCounters.hpp
-
-compiledICHolderKlass.cpp               oop.pcgc.inline.hpp
-
-constantPoolKlass.cpp                   cardTableRS.hpp
-constantPoolKlass.cpp                   oop.pcgc.inline.hpp
-constantPoolKlass.cpp                   psPromotionManager.inline.hpp
-constantPoolKlass.cpp                   psScavenge.inline.hpp
-constantPoolKlass.cpp                   parOopClosures.inline.hpp
-
-constantPoolKlass.cpp                   cardTableRS.hpp
-constantPoolKlass.cpp                   oop.pcgc.inline.hpp
-constantPoolKlass.cpp                   psPromotionManager.inline.hpp
-constantPoolKlass.cpp                   psScavenge.inline.hpp
-constantPoolKlass.cpp                   parOopClosures.inline.hpp
-
-cpCacheKlass.cpp                        cardTableRS.hpp
-cpCacheKlass.cpp                        oop.pcgc.inline.hpp
-cpCacheKlass.cpp                        psPromotionManager.inline.hpp
-cpCacheKlass.cpp                        psScavenge.inline.hpp
-cpCacheKlass.cpp                        parOopClosures.inline.hpp
-
-genCollectedHeap.cpp                    concurrentMarkSweepThread.hpp
-genCollectedHeap.cpp                    vmCMSOperations.hpp
-
-generationSpec.cpp                      asParNewGeneration.hpp
-generationSpec.cpp                      cmsPermGen.hpp
-generationSpec.cpp                      parNewGeneration.hpp
-
-heapDumper.cpp                          parallelScavengeHeap.hpp
-
-heapInspection.cpp                      parallelScavengeHeap.hpp
-
-instanceKlass.cpp                       heapRegionSeq.inline.hpp
-instanceKlass.cpp                       g1CollectedHeap.inline.hpp
-instanceKlass.cpp                       g1OopClosures.inline.hpp
-instanceKlass.cpp                       oop.pcgc.inline.hpp
-instanceKlass.cpp                       psPromotionManager.inline.hpp
-instanceKlass.cpp                       psScavenge.inline.hpp
-instanceKlass.cpp                       parOopClosures.inline.hpp
-
-instanceKlassKlass.cpp                  cardTableRS.hpp
-instanceKlassKlass.cpp                  oop.pcgc.inline.hpp
-instanceKlassKlass.cpp                  psPromotionManager.inline.hpp
-instanceKlassKlass.cpp                  psScavenge.inline.hpp
-instanceKlassKlass.cpp                  parOopClosures.inline.hpp
-
-instanceRefKlass.cpp                    heapRegionSeq.inline.hpp
-instanceRefKlass.cpp                    g1CollectedHeap.inline.hpp
-instanceRefKlass.cpp                    g1OopClosures.inline.hpp
-instanceRefKlass.cpp                    oop.pcgc.inline.hpp
-instanceRefKlass.cpp                    psPromotionManager.inline.hpp
-instanceRefKlass.cpp                    psScavenge.inline.hpp
-instanceRefKlass.cpp                    parOopClosures.inline.hpp
-
-java.cpp                                concurrentMarkSweepThread.hpp
-java.cpp                                psScavenge.hpp
-java.cpp                                psScavenge.inline.hpp
-
-jvmtiExport.cpp                         psMarkSweep.hpp
-
-jvmtiTagMap.cpp                         parallelScavengeHeap.hpp
-
-klassKlass.cpp                          oop.pcgc.inline.hpp
-
-klass.hpp                               cmsOopClosures.hpp
-klass.hpp                               parOopClosures.hpp
-
-memoryPool.hpp                          compactibleFreeListSpace.hpp
-
-memoryService.cpp                       cmsPermGen.hpp
-memoryService.cpp                       concurrentMarkSweepGeneration.hpp
-memoryService.cpp                       g1CollectedHeap.inline.hpp
-memoryService.cpp                       parNewGeneration.hpp
-memoryService.cpp                       parallelScavengeHeap.hpp
-memoryService.cpp                       psMemoryPool.hpp
-memoryService.cpp                       psOldGen.hpp
-memoryService.cpp                       psPermGen.hpp
-memoryService.cpp                       psYoungGen.hpp
-
-methodDataKlass.cpp                     oop.pcgc.inline.hpp
-methodDataKlass.cpp                     psScavenge.inline.hpp
-
-objArrayKlass.cpp                       heapRegionSeq.inline.hpp
-objArrayKlass.cpp                       g1CollectedHeap.inline.hpp
-objArrayKlass.cpp                       g1OopClosures.inline.hpp
-objArrayKlass.cpp                       oop.pcgc.inline.hpp
-objArrayKlass.cpp                       psCompactionManager.hpp
-objArrayKlass.cpp                       psPromotionManager.inline.hpp
-objArrayKlass.cpp                       psScavenge.inline.hpp
-objArrayKlass.cpp                       parOopClosures.inline.hpp
-
-objArrayKlass.inline.hpp		psCompactionManager.inline.hpp
-objArrayKlass.inline.hpp		psParallelCompact.hpp
-
-oop.pcgc.inline.hpp                     parNewGeneration.hpp
-oop.pcgc.inline.hpp                     parallelScavengeHeap.hpp
-oop.pcgc.inline.hpp                     psCompactionManager.hpp
-oop.pcgc.inline.hpp                     psParallelCompact.hpp
-oop.pcgc.inline.hpp                     psScavenge.hpp
-oop.pcgc.inline.hpp                     psScavenge.inline.hpp
-
-oop.psgc.inline.hpp                     parallelScavengeHeap.hpp
-oop.psgc.inline.hpp                     psScavenge.hpp
-oop.psgc.inline.hpp                     psScavenge.inline.hpp
-
-psMemoryPool.cpp                        handles.inline.hpp
-psMemoryPool.cpp                        javaCalls.hpp
-psMemoryPool.cpp                        lowMemoryDetector.hpp
-psMemoryPool.cpp                        management.hpp
-psMemoryPool.cpp                        memoryManager.hpp
-psMemoryPool.cpp                        oop.inline.hpp
-psMemoryPool.cpp                        psMemoryPool.hpp
-psMemoryPool.cpp                        psPermGen.hpp
-psMemoryPool.cpp                        systemDictionary.hpp
-psMemoryPool.cpp                        vmSymbols.hpp
-
-psMemoryPool.hpp                        defNewGeneration.hpp
-psMemoryPool.hpp                        heap.hpp
-psMemoryPool.hpp                        memoryUsage.hpp
-psMemoryPool.hpp                        memoryPool.hpp
-psMemoryPool.hpp                        mutableSpace.hpp
-psMemoryPool.hpp                        psOldGen.hpp
-psMemoryPool.hpp                        psYoungGen.hpp
-psMemoryPool.hpp                        space.hpp
-
-safepoint.cpp                           concurrentGCThread.hpp
-safepoint.cpp                           concurrentMarkSweepThread.hpp
-
-thread.cpp                              concurrentMarkSweepThread.hpp
-thread.cpp                              pcTasks.hpp
-
-thread.hpp                              dirtyCardQueue.hpp
-thread.hpp                              satbQueue.hpp
-
-universe.cpp                            parallelScavengeHeap.hpp
-universe.cpp                            cmsCollectorPolicy.hpp
-universe.cpp                            cmsAdaptiveSizePolicy.hpp
-
-vmStructs.cpp                           asPSOldGen.hpp            
-vmStructs.cpp                           asPSYoungGen.hpp
-vmStructs.cpp                           cmsPermGen.hpp
-vmStructs.cpp                           compactibleFreeListSpace.hpp
-vmStructs.cpp                           concurrentMarkSweepGeneration.hpp
-vmStructs.cpp                           concurrentMarkSweepThread.hpp
-vmStructs.cpp                           parNewGeneration.hpp
-vmStructs.cpp                           parallelScavengeHeap.hpp   
-vmStructs.cpp                           psOldGen.hpp
-vmStructs.cpp                           psPermGen.hpp
-vmStructs.cpp                           psVirtualspace.hpp
-vmStructs.cpp                           psYoungGen.hpp
-vmStructs.cpp                           vmStructs_cms.hpp
-vmStructs.cpp                           vmStructs_parallelgc.hpp
-vmStructs.cpp                           vmStructs_parNew.hpp
--- a/src/share/vm/includeDB_jvmti	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-//
-// Copyright (c) 2007, 2009, 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.
-//  
-//
-
-jvmtiAgentThread.hpp                    jvmtiEnv.hpp
-
-jvmtiClassFileReconstituter.cpp         bytecodeStream.hpp
-jvmtiClassFileReconstituter.cpp         bytes_<arch>.hpp
-jvmtiClassFileReconstituter.cpp         jvmtiClassFileReconstituter.hpp
-jvmtiClassFileReconstituter.cpp         symbolTable.hpp
-jvmtiClassFileReconstituter.cpp         signature.hpp
-
-jvmtiClassFileReconstituter.hpp         jvmtiEnv.hpp
-
-// jvmtiCodeBlobEvents is jck optional, please put deps in includeDB_features
-
-jvmtiEnter.cpp                          jvmtiEnter.hpp
-jvmtiEnter.cpp                          jvmtiUtil.hpp
-
-jvmtiEnter.hpp                          interfaceSupport.hpp
-jvmtiEnter.hpp                          jvmtiEnv.hpp
-jvmtiEnter.hpp                          jvmtiImpl.hpp
-jvmtiEnter.hpp                          resourceArea.hpp
-jvmtiEnter.hpp                          systemDictionary.hpp
-
-jvmtiEnterTrace.cpp                     jvmtiEnter.hpp
-jvmtiEnterTrace.cpp                     jvmtiUtil.hpp
-
-jvmtiEnv.cpp                            arguments.hpp
-jvmtiEnv.cpp                            bytecodeStream.hpp
-jvmtiEnv.cpp                            cpCacheOop.hpp
-jvmtiEnv.cpp                            deoptimization.hpp
-jvmtiEnv.cpp                            exceptions.hpp
-jvmtiEnv.cpp                            instanceKlass.hpp
-jvmtiEnv.cpp                            interfaceSupport.hpp
-jvmtiEnv.cpp                            interpreter.hpp
-jvmtiEnv.cpp                            javaCalls.hpp
-jvmtiEnv.cpp                            jfieldIDWorkaround.hpp
-jvmtiEnv.cpp                            jniCheck.hpp
-jvmtiEnv.cpp                            jvm_misc.hpp
-jvmtiEnv.cpp                            jvmtiAgentThread.hpp
-jvmtiEnv.cpp                            jvmtiClassFileReconstituter.hpp
-jvmtiEnv.cpp                            jvmtiCodeBlobEvents.hpp
-jvmtiEnv.cpp                            jvmtiEnv.hpp
-jvmtiEnv.cpp                            jvmtiExtensions.hpp
-jvmtiEnv.cpp                            jvmtiGetLoadedClasses.hpp
-jvmtiEnv.cpp                            jvmtiImpl.hpp
-jvmtiEnv.cpp                            jvmtiManageCapabilities.hpp
-jvmtiEnv.cpp                            jvmtiRedefineClasses.hpp
-jvmtiEnv.cpp                            jvmtiTagMap.hpp
-jvmtiEnv.cpp                            jvmtiThreadState.inline.hpp
-jvmtiEnv.cpp                            jvmtiUtil.hpp
-jvmtiEnv.cpp                            objectMonitor.inline.hpp
-jvmtiEnv.cpp                            osThread.hpp
-jvmtiEnv.cpp                            preserveException.hpp
-jvmtiEnv.cpp                            reflectionUtils.hpp
-jvmtiEnv.cpp                            resourceArea.hpp
-jvmtiEnv.cpp                            signature.hpp
-jvmtiEnv.cpp                            systemDictionary.hpp
-jvmtiEnv.cpp                            threadService.hpp
-jvmtiEnv.cpp                            thread_<os_family>.inline.hpp
-jvmtiEnv.cpp                            universe.inline.hpp
-jvmtiEnv.cpp                            vframe.hpp
-jvmtiEnv.cpp                            vmSymbols.hpp
-jvmtiEnv.cpp                            vmThread.hpp
-
-jvmtiEnv.hpp                            jvmtiEnvBase.hpp
-
-jvmtiEnvBase.cpp                        biasedLocking.hpp
-jvmtiEnvBase.cpp                        interfaceSupport.hpp
-jvmtiEnvBase.cpp                        jfieldIDWorkaround.hpp
-jvmtiEnvBase.cpp                        jvmtiEnv.hpp
-jvmtiEnvBase.cpp                        jvmtiEnvBase.hpp
-jvmtiEnvBase.cpp                        jvmtiEventController.inline.hpp
-jvmtiEnvBase.cpp                        jvmtiExtensions.hpp
-jvmtiEnvBase.cpp                        jvmtiImpl.hpp
-jvmtiEnvBase.cpp                        jvmtiManageCapabilities.hpp
-jvmtiEnvBase.cpp                        jvmtiTagMap.hpp
-jvmtiEnvBase.cpp                        jvmtiThreadState.inline.hpp
-jvmtiEnvBase.cpp                        objArrayKlass.hpp
-jvmtiEnvBase.cpp                        objArrayOop.hpp
-jvmtiEnvBase.cpp                        objectMonitor.hpp
-jvmtiEnvBase.cpp                        objectMonitor.inline.hpp
-jvmtiEnvBase.cpp                        signature.hpp
-jvmtiEnvBase.cpp                        systemDictionary.hpp
-jvmtiEnvBase.cpp                        vframe.hpp
-jvmtiEnvBase.cpp                        vframe_hp.hpp
-jvmtiEnvBase.cpp                        vmThread.hpp
-jvmtiEnvBase.cpp                        vm_operations.hpp
-
-jvmtiEnvBase.hpp                        classLoader.hpp
-jvmtiEnvBase.hpp                        fieldDescriptor.hpp
-jvmtiEnvBase.hpp                        frame.hpp
-jvmtiEnvBase.hpp                        growableArray.hpp
-jvmtiEnvBase.hpp                        handles.inline.hpp
-jvmtiEnvBase.hpp                        jvmtiEnvThreadState.hpp
-jvmtiEnvBase.hpp                        jvmtiEventController.hpp
-jvmtiEnvBase.hpp                        jvmtiThreadState.hpp
-jvmtiEnvBase.hpp                        thread.hpp
-jvmtiEnvBase.hpp                        vm_operations.hpp
-
-jvmtiEnvThreadState.cpp                 handles.hpp
-jvmtiEnvThreadState.cpp                 handles.inline.hpp
-jvmtiEnvThreadState.cpp                 interfaceSupport.hpp
-jvmtiEnvThreadState.cpp                 interpreter.hpp
-jvmtiEnvThreadState.cpp                 javaCalls.hpp
-jvmtiEnvThreadState.cpp                 jvmtiEnv.hpp
-jvmtiEnvThreadState.cpp                 jvmtiEnvThreadState.hpp
-jvmtiEnvThreadState.cpp                 jvmtiEventController.inline.hpp
-jvmtiEnvThreadState.cpp                 jvmtiImpl.hpp
-jvmtiEnvThreadState.cpp                 resourceArea.hpp
-jvmtiEnvThreadState.cpp                 signature.hpp
-jvmtiEnvThreadState.cpp                 systemDictionary.hpp
-jvmtiEnvThreadState.cpp                 vframe.hpp
-jvmtiEnvThreadState.cpp                 vm_operations.hpp
-
-jvmtiEnvThreadState.hpp                 allocation.hpp
-jvmtiEnvThreadState.hpp                 allocation.inline.hpp
-jvmtiEnvThreadState.hpp                 globalDefinitions.hpp
-jvmtiEnvThreadState.hpp                 growableArray.hpp
-jvmtiEnvThreadState.hpp                 instanceKlass.hpp
-jvmtiEnvThreadState.hpp                 jvmti.h
-jvmtiEnvThreadState.hpp                 jvmtiEventController.hpp
-
-jvmtiEventController.cpp                frame.hpp
-jvmtiEventController.cpp                interpreter.hpp
-jvmtiEventController.cpp                jvmtiEnv.hpp
-jvmtiEventController.cpp                jvmtiEventController.hpp
-jvmtiEventController.cpp                jvmtiEventController.inline.hpp
-jvmtiEventController.cpp                jvmtiExport.hpp
-jvmtiEventController.cpp                jvmtiImpl.hpp
-jvmtiEventController.cpp                jvmtiThreadState.inline.hpp
-jvmtiEventController.cpp                resourceArea.hpp
-jvmtiEventController.cpp                thread.hpp
-jvmtiEventController.cpp                vframe.hpp
-jvmtiEventController.cpp                vframe_hp.hpp
-jvmtiEventController.cpp                vmThread.hpp
-jvmtiEventController.cpp                vm_operations.hpp
-
-jvmtiEventController.hpp                allocation.hpp
-jvmtiEventController.hpp                allocation.inline.hpp
-jvmtiEventController.hpp                globalDefinitions.hpp
-jvmtiEventController.hpp                jvmti.h
-
-jvmtiEventController.inline.hpp         jvmtiEventController.hpp
-jvmtiEventController.inline.hpp         jvmtiImpl.hpp
-jvmtiEventController.inline.hpp         jvmtiUtil.hpp
-
-jvmtiExport.cpp                         arguments.hpp
-jvmtiExport.cpp                         attachListener.hpp
-jvmtiExport.cpp                         handles.hpp
-jvmtiExport.cpp                         interfaceSupport.hpp
-jvmtiExport.cpp                         interpreter.hpp
-jvmtiExport.cpp                         jvmtiCodeBlobEvents.hpp
-jvmtiExport.cpp                         jvmtiEnv.hpp
-jvmtiExport.cpp                         jvmtiEventController.hpp
-jvmtiExport.cpp                         jvmtiEventController.inline.hpp
-jvmtiExport.cpp                         jvmtiExport.hpp
-jvmtiExport.cpp                         jvmtiImpl.hpp
-jvmtiExport.cpp                         jvmtiManageCapabilities.hpp
-jvmtiExport.cpp                         jvmtiTagMap.hpp
-jvmtiExport.cpp                         jvmtiThreadState.inline.hpp
-jvmtiExport.cpp                         nmethod.hpp
-jvmtiExport.cpp                         objArrayKlass.hpp
-jvmtiExport.cpp                         objArrayOop.hpp
-jvmtiExport.cpp                         objectMonitor.inline.hpp
-jvmtiExport.cpp                         pcDesc.hpp
-jvmtiExport.cpp                         resourceArea.hpp
-jvmtiExport.cpp                         scopeDesc.hpp
-jvmtiExport.cpp                         serviceUtil.hpp
-jvmtiExport.cpp                         systemDictionary.hpp
-jvmtiExport.cpp                         thread.hpp
-jvmtiExport.cpp                         vframe.hpp
-
-// jvmtiExtensions is jck optional, please put deps in includeDB_features
-
-jvmtiGetLoadedClasses.cpp               jvmtiGetLoadedClasses.hpp
-jvmtiGetLoadedClasses.cpp               systemDictionary.hpp
-jvmtiGetLoadedClasses.cpp               thread.hpp
-jvmtiGetLoadedClasses.cpp               universe.inline.hpp
-
-jvmtiGetLoadedClasses.hpp               jvmtiEnv.hpp
-
-// jvmtiImpl is jck optional, please put deps in includeDB_features
-
-jvmtiManageCapabilities.cpp             jvmtiEnv.hpp
-jvmtiManageCapabilities.cpp             jvmtiExport.hpp
-jvmtiManageCapabilities.cpp             jvmtiManageCapabilities.hpp
- 
-jvmtiManageCapabilities.hpp             allocation.hpp
-jvmtiManageCapabilities.hpp             jvmti.h
-
-jvmtiRedefineClasses.cpp                bitMap.inline.hpp
-jvmtiRedefineClasses.cpp                codeCache.hpp
-jvmtiRedefineClasses.cpp                deoptimization.hpp
-jvmtiRedefineClasses.cpp                gcLocker.hpp
-jvmtiRedefineClasses.cpp                jvmtiImpl.hpp
-jvmtiRedefineClasses.cpp                jvmtiRedefineClasses.hpp
-jvmtiRedefineClasses.cpp                klassVtable.hpp
-jvmtiRedefineClasses.cpp                methodComparator.hpp
-jvmtiRedefineClasses.cpp                oopMapCache.hpp
-jvmtiRedefineClasses.cpp                relocator.hpp
-jvmtiRedefineClasses.cpp                rewriter.hpp
-jvmtiRedefineClasses.cpp                systemDictionary.hpp
-jvmtiRedefineClasses.cpp                universe.inline.hpp
-jvmtiRedefineClasses.cpp                verifier.hpp
-
-jvmtiRedefineClasses.hpp                jvmtiEnv.hpp
-jvmtiRedefineClasses.hpp                jvmtiRedefineClassesTrace.hpp
-jvmtiRedefineClasses.hpp                objArrayKlass.hpp
-jvmtiRedefineClasses.hpp                objArrayOop.hpp
-jvmtiRedefineClasses.hpp                oopFactory.hpp
-jvmtiRedefineClasses.hpp                resourceArea.hpp
-jvmtiRedefineClasses.hpp                vm_operations.hpp
-
-// jvmtiTagMap is jck optional, please put deps in includeDB_features
-// jvmtiTrace is jck optional, please put deps in includeDB_features
-
-jvmtiThreadState.cpp                    gcLocker.hpp
-jvmtiThreadState.cpp                    jvmtiEnv.hpp
-jvmtiThreadState.cpp                    jvmtiEventController.inline.hpp
-jvmtiThreadState.cpp                    jvmtiImpl.hpp
-jvmtiThreadState.cpp                    jvmtiThreadState.inline.hpp
-jvmtiThreadState.cpp                    resourceArea.hpp
-jvmtiThreadState.cpp                    vframe.hpp
-
-jvmtiThreadState.inline.hpp             jvmtiEnvThreadState.hpp
-jvmtiThreadState.inline.hpp             jvmtiThreadState.hpp
-
-jvmtiUtil.cpp                           exceptions.hpp
-jvmtiUtil.cpp                           handles.hpp
-jvmtiUtil.cpp                           handles.inline.hpp
-jvmtiUtil.cpp                           interfaceSupport.hpp
-jvmtiUtil.cpp                           jvmtiUtil.hpp
-jvmtiUtil.cpp                           vm_operations.hpp
-
-jvmtiUtil.hpp                           jvmti.h
-jvmtiUtil.hpp                           jvmtiEventController.hpp
-jvmtiUtil.hpp                           resourceArea.hpp
--- a/src/share/vm/includeDB_shark	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,371 +0,0 @@
-//
-// Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
-// Copyright 2008, 2009, 2010 Red Hat, Inc.
-// 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.
-//
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-ciMethod.cpp                            ciTypeFlow.hpp
-ciMethod.cpp                            methodOop.hpp
-
-ciTypeFlow.cpp                          allocation.inline.hpp
-ciTypeFlow.cpp                          bytecode.hpp
-ciTypeFlow.cpp                          bytecodes.hpp
-ciTypeFlow.cpp                          ciConstant.hpp
-ciTypeFlow.cpp                          ciField.hpp
-ciTypeFlow.cpp                          ciMethod.hpp
-ciTypeFlow.cpp                          ciMethodData.hpp
-ciTypeFlow.cpp                          ciObjArrayKlass.hpp
-ciTypeFlow.cpp                          ciStreams.hpp
-ciTypeFlow.cpp                          ciTypeArrayKlass.hpp
-ciTypeFlow.cpp                          ciTypeFlow.hpp
-ciTypeFlow.cpp                          compileLog.hpp
-ciTypeFlow.cpp                          deoptimization.hpp
-ciTypeFlow.cpp                          growableArray.hpp
-ciTypeFlow.cpp                          shark_globals.hpp
-
-ciTypeFlow.hpp                          ciEnv.hpp
-ciTypeFlow.hpp                          ciKlass.hpp
-ciTypeFlow.hpp                          ciMethodBlocks.hpp
-
-cppInterpreter_<arch>.cpp               shark_globals.hpp
-
-compileBroker.cpp                       sharkCompiler.hpp
-
-disassembler.cpp                        sharkEntry.hpp
-
-globals.hpp                             shark_globals_<arch>.hpp
-
-globals.cpp                             shark_globals.hpp
-
-llvmValue.hpp                           llvmHeaders.hpp
-llvmValue.hpp                           sharkContext.hpp
-llvmValue.hpp                           sharkType.hpp
-
-nmethod.cpp                             sharkCompiler.hpp
-
-sharedRuntime_<arch>.cpp                compileBroker.hpp
-sharedRuntime_<arch>.cpp                sharkCompiler.hpp
-
-shark_globals.cpp                       shark_globals.hpp
-
-shark_globals.hpp                       shark_globals_<arch>.hpp
-shark_globals.hpp                       globals.hpp
-
-sharkBlock.cpp                          debug.hpp
-sharkBlock.cpp                          bytecodes.hpp
-sharkBlock.cpp                          llvmHeaders.hpp
-sharkBlock.cpp                          llvmValue.hpp
-sharkBlock.cpp                          shark_globals.hpp
-sharkBlock.cpp                          sharkBlock.hpp
-sharkBlock.cpp                          sharkBuilder.hpp
-sharkBlock.cpp                          sharkConstant.hpp
-sharkBlock.cpp                          sharkState.hpp
-sharkBlock.cpp                          sharkValue.hpp
-
-sharkBlock.hpp                          allocation.hpp
-sharkBlock.hpp                          ciMethod.hpp
-sharkBlock.hpp                          ciStreams.hpp
-sharkBlock.hpp                          debug.hpp
-sharkBlock.hpp                          llvmHeaders.hpp
-sharkBlock.hpp                          sharkBuilder.hpp
-sharkBlock.hpp                          sharkConstant.hpp
-sharkBlock.hpp                          sharkInvariants.hpp
-sharkBlock.hpp                          sharkState.hpp
-sharkBlock.hpp                          sharkValue.hpp
-
-sharkBuilder.cpp                        ciMethod.hpp
-sharkBuilder.cpp                        debug.hpp
-sharkBuilder.cpp                        llvmHeaders.hpp
-sharkBuilder.cpp                        llvmValue.hpp
-sharkBuilder.cpp                        methodOop.hpp
-sharkBuilder.cpp                        os.hpp
-sharkBuilder.cpp                        resourceArea.hpp
-sharkBuilder.cpp                        llvmHeaders.hpp
-sharkBuilder.cpp                        sharkBuilder.hpp
-sharkBuilder.cpp                        sharkContext.hpp
-sharkBuilder.cpp                        sharkRuntime.hpp
-sharkBuilder.cpp                        synchronizer.hpp
-sharkBuilder.cpp                        thread.hpp
-
-sharkBuilder.hpp                        barrierSet.hpp
-sharkBuilder.hpp                        cardTableModRefBS.hpp
-sharkBuilder.hpp                        ciType.hpp
-sharkBuilder.hpp                        debug.hpp
-sharkBuilder.hpp                        llvmHeaders.hpp
-sharkBuilder.hpp                        llvmValue.hpp
-sharkBuilder.hpp                        sizes.hpp
-sharkBuilder.hpp                        sharkCodeBuffer.hpp
-sharkBuilder.hpp                        sharkType.hpp
-sharkBuilder.hpp                        sharkValue.hpp
-sharkBuilder.hpp                        sharkEntry.hpp
-
-sharkCacheDecache.cpp                   ciMethod.hpp
-sharkCacheDecache.cpp                   debugInfoRec.hpp
-sharkCacheDecache.cpp                   llvmValue.hpp
-sharkCacheDecache.cpp                   sharkBuilder.hpp
-sharkCacheDecache.cpp                   sharkCacheDecache.hpp
-sharkCacheDecache.cpp                   sharkFunction.hpp
-sharkCacheDecache.cpp                   sharkState.hpp
-
-sharkCacheDecache.hpp                   ciMethod.hpp
-sharkCacheDecache.hpp                   debugInfoRec.hpp
-sharkCacheDecache.hpp                   sharkBuilder.hpp
-sharkCacheDecache.hpp                   sharkFunction.hpp
-sharkCacheDecache.hpp                   sharkStateScanner.hpp
-
-sharkCodeBuffer.hpp                     allocation.hpp
-sharkCodeBuffer.hpp                     codeBuffer.hpp
-sharkCodeBuffer.hpp                     llvmHeaders.hpp
-
-sharkCompiler.cpp                       abstractCompiler.hpp
-sharkCompiler.cpp                       ciEnv.hpp
-sharkCompiler.cpp                       ciMethod.hpp
-sharkCompiler.cpp                       debug.hpp
-sharkCompiler.cpp                       debugInfoRec.hpp
-sharkCompiler.cpp                       dependencies.hpp
-sharkCompiler.cpp                       exceptionHandlerTable.hpp
-sharkCompiler.cpp                       llvmHeaders.hpp
-sharkCompiler.cpp                       oopMap.hpp
-sharkCompiler.cpp                       oopRecorder.hpp
-sharkCompiler.cpp                       shark_globals.hpp
-sharkCompiler.cpp                       sharkBuilder.hpp
-sharkCompiler.cpp                       sharkCodeBuffer.hpp
-sharkCompiler.cpp                       sharkCompiler.hpp
-sharkCompiler.cpp                       sharkContext.hpp
-sharkCompiler.cpp                       sharkEntry.hpp
-sharkCompiler.cpp                       sharkFunction.hpp
-sharkCompiler.cpp                       sharkMemoryManager.hpp
-sharkCompiler.cpp                       sharkNativeWrapper.hpp
-
-sharkCompiler.hpp                       abstractCompiler.hpp
-sharkCompiler.hpp                       ciEnv.hpp
-sharkCompiler.hpp                       ciMethod.hpp
-sharkCompiler.hpp                       compileBroker.hpp
-sharkCompiler.hpp                       llvmHeaders.hpp
-sharkCompiler.hpp                       sharkMemoryManager.hpp
-
-sharkContext.cpp                        arrayOop.hpp
-sharkContext.cpp                        globalDefinitions.hpp
-sharkContext.cpp                        llvmHeaders.hpp
-sharkContext.cpp                        oop.hpp
-sharkContext.cpp                        sharkContext.hpp
-
-sharkContext.hpp                        llvmHeaders.hpp
-sharkContext.hpp                        sharkCompiler.hpp
-
-sharkConstant.cpp                       ciInstance.hpp
-sharkConstant.cpp                       ciStreams.hpp
-sharkConstant.cpp                       sharkBuilder.hpp
-sharkConstant.cpp                       sharkConstant.hpp
-sharkConstant.cpp                       sharkValue.hpp
-
-sharkConstant.hpp                       allocation.hpp
-sharkConstant.hpp                       ciStreams.hpp
-sharkConstant.hpp                       sharkBuilder.hpp
-sharkConstant.hpp                       sharkValue.hpp
-
-sharkEntry.hpp                          llvmHeaders.hpp
-
-sharkFunction.cpp                       allocation.hpp
-sharkFunction.cpp                       ciTypeFlow.hpp
-sharkFunction.cpp                       debug.hpp
-sharkFunction.cpp                       llvmHeaders.hpp
-sharkFunction.cpp                       llvmValue.hpp
-sharkFunction.cpp                       shark_globals.hpp
-sharkFunction.cpp                       sharkBuilder.hpp
-sharkFunction.cpp                       sharkEntry.hpp
-sharkFunction.cpp                       sharkFunction.hpp
-sharkFunction.cpp                       sharkState.hpp
-sharkFunction.cpp                       sharkTopLevelBlock.hpp
-
-sharkFunction.hpp                       allocation.hpp
-sharkFunction.hpp                       ciEnv.hpp
-sharkFunction.hpp                       ciStreams.hpp
-sharkFunction.hpp                       ciTypeFlow.hpp
-sharkFunction.hpp                       llvmHeaders.hpp
-sharkFunction.hpp                       llvmValue.hpp
-sharkFunction.hpp                       sharkBuilder.hpp
-sharkFunction.hpp                       sharkContext.hpp
-sharkFunction.hpp                       sharkInvariants.hpp
-sharkFunction.hpp                       sharkStack.hpp
-
-sharkInliner.cpp                        allocation.hpp
-sharkInliner.cpp                        bytecodes.hpp
-sharkInliner.cpp                        ciField.hpp
-sharkInliner.cpp                        ciMethod.hpp
-sharkInliner.cpp                        ciStreams.hpp
-sharkInliner.cpp                        shark_globals.hpp
-sharkInliner.cpp                        sharkBlock.hpp
-sharkInliner.cpp                        sharkConstant.hpp
-sharkInliner.cpp                        sharkInliner.hpp
-sharkInliner.cpp                        sharkIntrinsics.hpp
-sharkInliner.cpp                        sharkState.hpp
-sharkInliner.cpp                        sharkValue.hpp
-
-sharkInliner.hpp                        allocation.hpp
-sharkInliner.hpp                        ciMethod.hpp
-sharkInliner.hpp                        llvmHeaders.hpp
-sharkInliner.hpp                        sharkState.hpp
-
-sharkIntrinsics.cpp                     ciMethod.hpp
-sharkIntrinsics.cpp                     llvmHeaders.hpp
-sharkIntrinsics.cpp                     shark_globals.hpp
-sharkIntrinsics.cpp                     sharkIntrinsics.hpp
-sharkIntrinsics.cpp                     sharkState.hpp
-sharkIntrinsics.cpp                     sharkValue.hpp
-
-sharkIntrinsics.hpp                     allocation.hpp
-sharkIntrinsics.hpp                     ciMethod.hpp
-sharkIntrinsics.hpp                     llvmHeaders.hpp
-sharkIntrinsics.hpp                     sharkState.hpp
-
-sharkInvariants.cpp                     sharkInvariants.hpp
-
-sharkInvariants.hpp                     allocation.hpp
-sharkInvariants.hpp                     ciEnv.hpp
-sharkInvariants.hpp                     ciMethod.hpp
-sharkInvariants.hpp                     ciInstanceKlass.hpp
-sharkInvariants.hpp                     ciTypeFlow.hpp
-sharkInvariants.hpp                     debugInfoRec.hpp
-sharkInvariants.hpp                     dependencies.hpp
-sharkInvariants.hpp                     llvmHeaders.hpp
-sharkInvariants.hpp                     sharkBuilder.hpp
-
-sharkMemoryManager.hpp                  llvmHeaders.hpp
-sharkMemoryManager.hpp                  sharkEntry.hpp
-
-sharkMemoryManager.cpp                  llvmHeaders.hpp
-sharkMemoryManager.cpp                  sharkEntry.hpp
-sharkMemoryManager.cpp                  sharkMemoryManager.hpp
-
-sharkNativeWrapper.cpp                  llvmHeaders.hpp
-sharkNativeWrapper.cpp                  sharkNativeWrapper.hpp
-sharkNativeWrapper.cpp                  sharkType.hpp
-
-sharkNativeWrapper.hpp                  handles.hpp
-sharkNativeWrapper.hpp                  llvmHeaders.hpp
-sharkNativeWrapper.hpp                  sharkBuilder.hpp
-sharkNativeWrapper.hpp                  sharkContext.hpp
-sharkNativeWrapper.hpp                  sharkInvariants.hpp
-sharkNativeWrapper.hpp                  sharkStack.hpp
-
-sharkRuntime.cpp                        biasedLocking.hpp
-sharkRuntime.cpp                        deoptimization.hpp
-sharkRuntime.cpp                        llvmHeaders.hpp
-sharkRuntime.cpp                        klassOop.hpp
-sharkRuntime.cpp                        sharkRuntime.hpp
-sharkRuntime.cpp                        stack_<arch>.inline.hpp
-sharkRuntime.cpp                        thread.hpp
-
-sharkRuntime.hpp                        allocation.hpp
-sharkRuntime.hpp                        llvmHeaders.hpp
-sharkRuntime.hpp                        llvmValue.hpp
-sharkRuntime.hpp                        klassOop.hpp
-sharkRuntime.hpp                        thread.hpp
-
-sharkStack.cpp                          llvmHeaders.hpp
-sharkStack.cpp                          sharkFunction.hpp
-sharkStack.cpp                          sharkNativeWrapper.hpp
-sharkStack.cpp                          sharkStack.hpp
-sharkStack.cpp                          sharkType.hpp
-
-sharkStack.hpp                          llvmHeaders.hpp
-sharkStack.hpp                          sharkInvariants.hpp
-sharkStack.hpp                          sharkType.hpp
-
-sharkState.cpp                          allocation.hpp
-sharkState.cpp                          ciType.hpp
-sharkState.cpp                          ciTypeFlow.hpp
-sharkState.cpp                          sharkBuilder.hpp
-sharkState.cpp                          sharkCacheDecache.hpp
-sharkState.cpp                          sharkState.hpp
-sharkState.cpp                          sharkTopLevelBlock.hpp
-sharkState.cpp                          sharkType.hpp
-sharkState.cpp                          sharkValue.hpp
-
-sharkState.hpp                          allocation.hpp
-sharkState.hpp                          ciMethod.hpp
-sharkState.hpp                          llvmHeaders.hpp
-sharkState.hpp                          sharkBuilder.hpp
-sharkState.hpp                          sharkInvariants.hpp
-sharkState.hpp                          sharkValue.hpp
-
-sharkStateScanner.cpp                   sharkState.hpp
-sharkStateScanner.cpp                   sharkStateScanner.hpp
-
-sharkStateScanner.hpp                   allocation.hpp
-sharkStateScanner.hpp                   llvmHeaders.hpp
-sharkStateScanner.hpp                   sharkFunction.hpp
-sharkStateScanner.hpp                   sharkInvariants.hpp
-
-sharkTopLevelBlock.cpp                  allocation.hpp
-sharkTopLevelBlock.cpp                  bytecodes.hpp
-sharkTopLevelBlock.cpp                  ciField.hpp
-sharkTopLevelBlock.cpp                  ciInstance.hpp
-sharkTopLevelBlock.cpp                  ciObjArrayKlass.hpp
-sharkTopLevelBlock.cpp                  ciStreams.hpp
-sharkTopLevelBlock.cpp                  ciType.hpp
-sharkTopLevelBlock.cpp                  ciTypeFlow.hpp
-sharkTopLevelBlock.cpp                  debug.hpp
-sharkTopLevelBlock.cpp                  deoptimization.hpp
-sharkTopLevelBlock.cpp                  llvmHeaders.hpp
-sharkTopLevelBlock.cpp                  llvmValue.hpp
-sharkTopLevelBlock.cpp                  shark_globals.hpp
-sharkTopLevelBlock.cpp                  sharkCacheDecache.hpp
-sharkTopLevelBlock.cpp                  sharkTopLevelBlock.hpp
-sharkTopLevelBlock.cpp                  sharkBuilder.hpp
-sharkTopLevelBlock.cpp                  sharkConstant.hpp
-sharkTopLevelBlock.cpp                  sharkInliner.hpp
-sharkTopLevelBlock.cpp                  sharkState.hpp
-sharkTopLevelBlock.cpp                  sharkValue.hpp
-
-sharkTopLevelBlock.hpp                  allocation.hpp
-sharkTopLevelBlock.hpp                  bytecodes.hpp
-sharkTopLevelBlock.hpp                  ciStreams.hpp
-sharkTopLevelBlock.hpp                  ciType.hpp
-sharkTopLevelBlock.hpp                  ciTypeFlow.hpp
-sharkTopLevelBlock.hpp                  llvmHeaders.hpp
-sharkTopLevelBlock.hpp                  sharkBlock.hpp
-sharkTopLevelBlock.hpp                  sharkBuilder.hpp
-sharkTopLevelBlock.hpp                  sharkFunction.hpp
-sharkTopLevelBlock.hpp                  sharkState.hpp
-sharkTopLevelBlock.hpp                  sharkValue.hpp
-
-sharkType.hpp                           allocation.hpp
-sharkType.hpp                           ciType.hpp
-sharkType.hpp                           globalDefinitions.hpp
-sharkType.hpp                           llvmHeaders.hpp
-sharkType.hpp                           sharkContext.hpp
-
-sharkValue.cpp                          ciType.hpp
-sharkValue.cpp                          llvmHeaders.hpp
-sharkValue.cpp                          llvmValue.hpp
-sharkValue.cpp                          sharkBuilder.hpp
-sharkValue.cpp                          sharkValue.hpp
-
-sharkValue.hpp                          allocation.hpp
-sharkValue.hpp                          ciType.hpp
-sharkValue.hpp                          llvmHeaders.hpp
-sharkValue.hpp                          llvmValue.hpp
-sharkValue.hpp                          sharkType.hpp
--- a/src/share/vm/includeDB_zero	Tue Nov 30 18:07:18 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-//
-// Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
-// Copyright 2009, 2010 Red Hat, Inc.
-// 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.
-//  
-//
-
-// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
-
-cppInterpreter_<arch>.cpp               stack_<arch>.inline.hpp
-
-entryFrame_<arch>.hpp                   javaCalls.hpp
-entryFrame_<arch>.hpp                   stack_<arch>.hpp
-
-fakeStubFrame_<arch>.hpp                stack_<arch>.hpp
-
-frame.hpp                               stack_<arch>.hpp
-
-frame.inline.hpp                        fakeStubFrame_<arch>.hpp
-frame.inline.hpp                        entryFrame_<arch>.hpp
-frame.inline.hpp                        interpreterFrame_<arch>.hpp
-frame.inline.hpp                        sharkFrame_<arch>.hpp
-
-frame_<arch>.cpp                        interpreterRuntime.hpp
-frame_<arch>.cpp                        scopeDesc.hpp
-
-interpreter.hpp                         entry_<arch>.hpp
-
-interpreterFrame_<arch>.hpp             bytecodeInterpreter.hpp
-interpreterFrame_<arch>.hpp             methodOop.hpp
-interpreterFrame_<arch>.hpp             stack_<arch>.hpp
-interpreterFrame_<arch>.hpp             thread.hpp
-
-interpreterRT_<arch>.cpp                stack_<arch>.inline.hpp
-
-sharkFrame_<arch>.hpp                   methodOop.hpp
-sharkFrame_<arch>.hpp                   stack_<arch>.hpp
-
-stack_<arch>.hpp                        sizes.hpp
-
-stack_<arch>.inline.hpp                 stack_<arch>.hpp
-stack_<arch>.inline.hpp                 thread.hpp
-
-stack_<arch>.cpp                        interpreterRuntime.hpp
-stack_<arch>.cpp                        stack_<arch>.hpp
-stack_<arch>.cpp                        stack_<arch>.inline.hpp
-
-stubGenerator_<arch>.cpp                stack_<arch>.inline.hpp
-
-thread.hpp                              stack_<arch>.hpp
--- a/src/share/vm/interpreter/abstractInterpreter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/abstractInterpreter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,35 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP
+#define SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP
+
+#include "code/stubs.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "interp_masm_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "interp_masm_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "interp_masm_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "interp_masm_zero.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // This file contains the platform-independent parts
 // of the abstract interpreter and the abstract interpreter generator.
 
@@ -256,3 +285,5 @@
  public:
   AbstractInterpreterGenerator(StubQueue* _code);
 };
+
+#endif // SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP
--- a/src/share/vm/interpreter/bytecode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,15 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecode.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/fieldType.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/signature.hpp"
 
 // Implementation of Bytecode
 
--- a/src/share/vm/interpreter/bytecode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,22 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_BYTECODE_HPP
+#define SHARE_VM_INTERPRETER_BYTECODE_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+#include "oops/methodOop.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 // Base class for different kinds of abstractions working
 // relative to an objects 'this' pointer.
 
@@ -431,3 +447,5 @@
   DEBUG_ONLY(b->verify());
   return b;
 }
+
+#endif // SHARE_VM_INTERPRETER_BYTECODE_HPP
--- a/src/share/vm/interpreter/bytecodeHistogram.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeHistogram.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_bytecodeHistogram.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/os.hpp"
+#include "utilities/growableArray.hpp"
 
 // ------------------------------------------------------------------------------------------------
 // Non-product code
--- a/src/share/vm/interpreter/bytecodeHistogram.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeHistogram.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_BYTECODEHISTOGRAM_HPP
+#define SHARE_VM_INTERPRETER_BYTECODEHISTOGRAM_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+
 // BytecodeCounter counts the number of bytecodes executed
 
 class BytecodeCounter: AllStatic {
@@ -90,3 +96,5 @@
   // Profile printing
   static void print(float cutoff = 0.01F)   PRODUCT_RETURN;   // cutoff in percent
 };
+
+#endif // SHARE_VM_INTERPRETER_BYTECODEHISTOGRAM_HPP
--- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,10 +22,46 @@
  *
  */
 
+// no precompiled headers
+#include "classfile/vmSymbols.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/bytecodeInterpreter.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/threadCritical.hpp"
+#include "utilities/exceptions.hpp"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "orderAccess_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "orderAccess_linux_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "orderAccess_linux_zero.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "orderAccess_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "orderAccess_solaris_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "orderAccess_windows_x86.inline.hpp"
+#endif
+
 
 // no precompiled headers
-#include "incls/_bytecodeInterpreter.cpp.incl"
-
 #ifdef CC_INTERP
 
 /*
--- a/src/share/vm/interpreter/bytecodeInterpreter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeInterpreter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,26 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_BYTECODEINTERPRETER_HPP
+#define SHARE_VM_INTERPRETER_BYTECODEINTERPRETER_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/globals.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 #ifdef CC_INTERP
 
 // CVM definitions find hotspot equivalents...
@@ -558,8 +578,19 @@
 #endif // PRODUCT
 
     // Platform fields/methods
-# include "incls/_bytecodeInterpreter_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "bytecodeInterpreter_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytecodeInterpreter_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytecodeInterpreter_zero.hpp"
+#endif
+
 
 }; // BytecodeInterpreter
 
 #endif // CC_INTERP
+
+#endif // SHARE_VM_INTERPRETER_BYTECODEINTERPRETER_HPP
--- a/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_BYTECODEINTERPRETER_INLINE_HPP
+#define SHARE_VM_INTERPRETER_BYTECODEINTERPRETER_INLINE_HPP
+
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "runtime/stubRoutines.hpp"
+
 // This file holds platform-independent bodies of inline functions for the C++ based interpreter
 
 #ifdef CC_INTERP
@@ -37,5 +43,16 @@
 #endif
 
 // Platform dependent data manipulation
-# include "incls/_bytecodeInterpreter_pd.inline.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "bytecodeInterpreter_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytecodeInterpreter_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytecodeInterpreter_zero.inline.hpp"
+#endif
+
 #endif // CC_INTERP
+
+#endif // SHARE_VM_INTERPRETER_BYTECODEINTERPRETER_INLINE_HPP
--- a/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!-- 
-     Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+     Copyright (c) 1997, 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
@@ -28,7 +28,7 @@
 <xsl:template match="processcode">
 <xsl:text>
 #define VM_JVMTI
-#include "bytecodeInterpreter.cpp"
+#include "interpreter/bytecodeInterpreter.cpp"
 </xsl:text>
 <xsl:text disable-output-escaping = "yes">
 
--- a/src/share/vm/interpreter/bytecodeStream.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeStream.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_bytecodeStream.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/bytecodes.hpp"
 
 Bytecodes::Code RawBytecodeStream::raw_next_special(Bytecodes::Code code) {
   assert(!is_last_bytecode(), "should have been checked");
--- a/src/share/vm/interpreter/bytecodeStream.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeStream.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,22 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_BYTECODESTREAM_HPP
+#define SHARE_VM_INTERPRETER_BYTECODESTREAM_HPP
+
+#include "interpreter/bytecode.hpp"
+#include "memory/allocation.hpp"
+#include "oops/methodOop.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 // A BytecodeStream is used for fast iteration over the bytecodes
 // of a methodOop.
 //
@@ -214,3 +230,5 @@
                                                    return bytecode()->get_index_u4(raw_code()); }
   bool            has_index_u4() const           { return bytecode()->has_index_u4(raw_code()); }
 };
+
+#endif // SHARE_VM_INTERPRETER_BYTECODESTREAM_HPP
--- a/src/share/vm/interpreter/bytecodeTracer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeTracer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecodeTracer.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/bytecodeTracer.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/timer.hpp"
 
 
 #ifndef PRODUCT
--- a/src/share/vm/interpreter/bytecodeTracer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodeTracer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_BYTECODETRACER_HPP
+#define SHARE_VM_INTERPRETER_BYTECODETRACER_HPP
+
+#include "memory/allocation.hpp"
+
 // The BytecodeTracer is a helper class used by the interpreter for run-time
 // bytecode tracing. If bytecode tracing is turned on, trace() will be called
 // for each bytecode.
@@ -56,3 +61,5 @@
 };
 
 #endif // !PRODUCT
+
+#endif // SHARE_VM_INTERPRETER_BYTECODETRACER_HPP
--- a/src/share/vm/interpreter/bytecodes.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodes.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecodes.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodOop.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
 
 
 #if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER < 1600))
--- a/src/share/vm/interpreter/bytecodes.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/bytecodes.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_BYTECODES_HPP
+#define SHARE_VM_INTERPRETER_BYTECODES_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/top.hpp"
+
 // Bytecodes specifies all bytecodes used in the VM and
 // provides utility functions to get bytecode attributes.
 
@@ -279,7 +285,16 @@
     _shouldnotreachhere,      // For debugging
 
     // Platform specific JVM bytecodes
-    #include "incls/_bytecodes_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "bytecodes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytecodes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytecodes_zero.hpp"
+#endif
+
 
     number_of_codes
   };
@@ -394,3 +409,5 @@
   // Initialization
   static void        initialize     ();
 };
+
+#endif // SHARE_VM_INTERPRETER_BYTECODES_HPP
--- a/src/share/vm/interpreter/cppInterpreter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/cppInterpreter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cppInterpreter.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
 
 #ifdef CC_INTERP
 # define __ _masm->
--- a/src/share/vm/interpreter/cppInterpreter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/cppInterpreter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_CPPINTERPRETER_HPP
+#define SHARE_VM_INTERPRETER_CPPINTERPRETER_HPP
+
+#include "interpreter/abstractInterpreter.hpp"
+
 #ifdef CC_INTERP
 
 // This file contains the platform-independent parts
@@ -76,8 +81,19 @@
   static address    return_entry  (TosState state, int length);
   static address    deopt_entry   (TosState state, int length);
 
-#include "incls/_cppInterpreter_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "cppInterpreter_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "cppInterpreter_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "cppInterpreter_zero.hpp"
+#endif
+
 
 };
 
 #endif // CC_INTERP
+
+#endif // SHARE_VM_INTERPRETER_CPPINTERPRETER_HPP
--- a/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_CPPINTERPRETERGENERATOR_HPP
+#define SHARE_VM_INTERPRETER_CPPINTERPRETERGENERATOR_HPP
+
 // This file contains the platform-independent parts
 // of the template interpreter generator.
 
@@ -41,7 +44,18 @@
  public:
   CppInterpreterGenerator(StubQueue* _code);
 
-   #include "incls/_cppInterpreterGenerator_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "cppInterpreterGenerator_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "cppInterpreterGenerator_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "cppInterpreterGenerator_zero.hpp"
+#endif
+
 };
 
 #endif // CC_INTERP
+
+#endif // SHARE_VM_INTERPRETER_CPPINTERPRETERGENERATOR_HPP
--- a/src/share/vm/interpreter/interpreter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/interpreter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,25 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreter.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/forte.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
 
 # define __ _masm->
 
--- a/src/share/vm/interpreter/interpreter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/interpreter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_INTERPRETER_HPP
+#define SHARE_VM_INTERPRETER_INTERPRETER_HPP
+
+#include "code/stubs.hpp"
+#include "interpreter/cppInterpreter.hpp"
+#include "interpreter/templateInterpreter.hpp"
+#ifdef ZERO
+#ifdef TARGET_ARCH_zero
+# include "entry_zero.hpp"
+#endif
+#endif
+
 // This file contains the platform-independent parts
 // of the interpreter and the interpreter generator.
 
@@ -131,5 +143,16 @@
   public:
   // Debugging/printing
   static InterpreterCodelet* codelet_containing(address pc)     { return (InterpreterCodelet*)_code->stub_containing(pc); }
-#include "incls/_interpreter_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "interpreter_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "interpreter_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "interpreter_zero.hpp"
+#endif
+
 };
+
+#endif // SHARE_VM_INTERPRETER_INTERPRETER_HPP
--- a/src/share/vm/interpreter/interpreterGenerator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/interpreterGenerator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_INTERPRETERGENERATOR_HPP
+#define SHARE_VM_INTERPRETER_INTERPRETERGENERATOR_HPP
+
+#include "interpreter/cppInterpreter.hpp"
+#include "interpreter/cppInterpreterGenerator.hpp"
+#include "interpreter/templateInterpreter.hpp"
+#include "interpreter/templateInterpreterGenerator.hpp"
+
 // This file contains the platform-independent parts
 // of the interpreter generator.
 
@@ -33,6 +41,17 @@
 
 InterpreterGenerator(StubQueue* _code);
 
-#include "incls/_interpreterGenerator_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "interpreterGenerator_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "interpreterGenerator_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "interpreterGenerator_zero.hpp"
+#endif
+
 
 };
+
+#endif // SHARE_VM_INTERPRETER_INTERPRETERGENERATOR_HPP
--- a/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,52 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interpreterRuntime.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "interpreter/templateTable.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/cpCacheOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/threadCritical.hpp"
+#include "utilities/events.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vm_version_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vm_version_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vm_version_zero.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 class UnlockFlagSaver {
   private:
@@ -716,12 +760,13 @@
   assert(constantPoolCacheOopDesc::is_secondary_index(site_index), "proper format");
   // there is a second CPC entries that is of interest; it caches signature info:
   int main_index = pool->cache()->secondary_entry_at(site_index)->main_entry_index();
+  int pool_index = pool->cache()->entry_at(main_index)->constant_pool_index();
 
   // first resolve the signature to a MH.invoke methodOop
   if (!pool->cache()->entry_at(main_index)->is_resolved(bytecode)) {
     JvmtiHideSingleStepping jhss(thread);
-    CallInfo info;
-    LinkResolver::resolve_invoke(info, Handle(), pool,
+    CallInfo callinfo;
+    LinkResolver::resolve_invoke(callinfo, Handle(), pool,
                                  site_index, bytecode, CHECK);
     // The main entry corresponds to a JVM_CONSTANT_InvokeDynamic, and serves
     // as a common reference point for all invokedynamic call sites with
@@ -729,8 +774,8 @@
     // as if it were an invokevirtual of MethodHandle.invoke.
     pool->cache()->entry_at(main_index)->set_method(
       bytecode,
-      info.resolved_method(),
-      info.vtable_index());
+      callinfo.resolved_method(),
+      callinfo.vtable_index());
   }
 
   // The method (f2 entry) of the main entry is the MH.invoke for the
@@ -740,9 +785,10 @@
   assert(signature_invoker.not_null() && signature_invoker->is_method() && signature_invoker->is_method_handle_invoke(),
          "correct result from LinkResolver::resolve_invokedynamic");
 
+  Handle info;  // optional argument(s) in JVM_CONSTANT_InvokeDynamic
   Handle bootm = SystemDictionary::find_bootstrap_method(caller_method, caller_bci,
-                                                         main_index, CHECK);
-  if (bootm.is_null()) {
+                                                         main_index, info, CHECK);
+  if (!java_dyn_MethodHandle::is_instance(bootm())) {
     THROW_MSG(vmSymbols::java_lang_IllegalStateException(),
               "no bootstrap method found for invokedynamic");
   }
@@ -753,8 +799,6 @@
 
   symbolHandle call_site_name(THREAD, pool->name_ref_at(site_index));
 
-  Handle info;  // NYI: Other metadata from a new kind of CP entry.  (Annotations?)
-
   Handle call_site
     = SystemDictionary::make_dynamic_call_site(bootm,
                                                // Callee information:
--- a/src/share/vm/interpreter/interpreterRuntime.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/interpreterRuntime.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,26 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_INTERPRETERRUNTIME_HPP
+#define SHARE_VM_INTERPRETER_INTERPRETERRUNTIME_HPP
+
+#include "interpreter/bytecode.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/universe.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/signature.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // The InterpreterRuntime is called by the interpreter for everything
 // that cannot/should not be dealt with in assembly and needs C support.
 
@@ -128,7 +148,16 @@
 #endif
 
   // Platform dependent stuff
-  #include "incls/_interpreterRT_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "interpreterRT_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "interpreterRT_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "interpreterRT_zero.hpp"
+#endif
+
 
   // Interpreter's frequency counter overflow
   static nmethod* frequency_counter_overflow(JavaThread* thread, address branch_bcp);
@@ -163,3 +192,5 @@
  public:
   static void add(methodHandle method);
 };
+
+#endif // SHARE_VM_INTERPRETER_INTERPRETERRUNTIME_HPP
--- a/src/share/vm/interpreter/invocationCounter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/invocationCounter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_invocationCounter.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/invocationCounter.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/handles.inline.hpp"
 
 
 // Implementation of InvocationCounter
--- a/src/share/vm/interpreter/invocationCounter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/invocationCounter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_INVOCATIONCOUNTER_HPP
+#define SHARE_VM_INTERPRETER_INVOCATIONCOUNTER_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/exceptions.hpp"
+
 // InvocationCounters are used to trigger actions when a limit (threshold) is reached.
 // For different states, different limits and actions can be defined in the initialization
 // routine of InvocationCounters.
@@ -134,3 +141,5 @@
   set(state(), new_count);
 }
 
+
+#endif // SHARE_VM_INTERPRETER_INVOCATIONCOUNTER_HPP
--- a/src/share/vm/interpreter/linkResolver.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/linkResolver.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,36 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_linkResolver.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "prims/methodHandles.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 //------------------------------------------------------------------------------------------------------------------------
 // Implementation of FieldAccessInfo
--- a/src/share/vm/interpreter/linkResolver.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/linkResolver.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_LINKRESOLVER_HPP
+#define SHARE_VM_INTERPRETER_LINKRESOLVER_HPP
+
+#include "oops/methodOop.hpp"
+#include "utilities/top.hpp"
+
 // All the necessary definitions for run-time link resolution.
 
 // LinkInfo & its subclasses provide all the information gathered
@@ -174,3 +180,5 @@
 
   static void resolve_invoke         (CallInfo& result, Handle recv, constantPoolHandle pool, int index, Bytecodes::Code byte, TRAPS);
 };
+
+#endif // SHARE_VM_INTERPRETER_LINKRESOLVER_HPP
--- a/src/share/vm/interpreter/oopMapCache.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/oopMapCache.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_oopMapCache.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/signature.hpp"
 
 class OopMapCacheEntry: private InterpreterOopMap {
   friend class InterpreterOopMap;
--- a/src/share/vm/interpreter/oopMapCache.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/oopMapCache.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_OOPMAPCACHE_HPP
+#define SHARE_VM_INTERPRETER_OOPMAPCACHE_HPP
+
+#include "oops/generateOopMap.hpp"
+
 // A Cache for storing (method, bci) -> oopMap.
 // The memory management system uses the cache when locating object
 // references in an interpreted frame.
@@ -188,3 +193,5 @@
   // Returns total no. of bytes allocated as part of OopMapCache's
   static long memory_usage()                     PRODUCT_RETURN0;
 };
+
+#endif // SHARE_VM_INTERPRETER_OOPMAPCACHE_HPP
--- a/src/share/vm/interpreter/rewriter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/rewriter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_rewriter.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/rewriter.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/generateOopMap.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/methodComparator.hpp"
 
 // Computes a CPC map (new_index -> original_index) for constant pool entries
 // that are referred to by the interpreter at runtime via the constant pool cache.
--- a/src/share/vm/interpreter/rewriter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/rewriter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_REWRITER_HPP
+#define SHARE_VM_INTERPRETER_REWRITER_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/growableArray.hpp"
+
 // The Rewriter adds caches to the constant pool and rewrites bytecode indices
 // pointing into the constant pool for better interpreter performance.
 
@@ -94,3 +101,5 @@
     _secondary_entry_tag = nth_bit(30)
   };
 };
+
+#endif // SHARE_VM_INTERPRETER_REWRITER_HPP
--- a/src/share/vm/interpreter/templateInterpreter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/templateInterpreter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_templateInterpreter.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterGenerator.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "interpreter/templateTable.hpp"
 
 #ifndef CC_INTERP
 
--- a/src/share/vm/interpreter/templateInterpreter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/templateInterpreter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_TEMPLATEINTERPRETER_HPP
+#define SHARE_VM_INTERPRETER_TEMPLATEINTERPRETER_HPP
+
+#include "interpreter/abstractInterpreter.hpp"
+#include "interpreter/templateTable.hpp"
+
 // This file contains the platform-independent parts
 // of the template interpreter and the template interpreter generator.
 
@@ -177,8 +183,19 @@
   // Compute the address for reexecution
   static address deopt_reexecute_entry(methodOop method, address bcp);
 
-#include "incls/_templateInterpreter_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "templateInterpreter_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "templateInterpreter_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "templateInterpreter_zero.hpp"
+#endif
+
 
 };
 
 #endif // !CC_INTERP
+
+#endif // SHARE_VM_INTERPRETER_TEMPLATEINTERPRETER_HPP
--- a/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_TEMPLATEINTERPRETERGENERATOR_HPP
+#define SHARE_VM_INTERPRETER_TEMPLATEINTERPRETERGENERATOR_HPP
+
 // This file contains the platform-independent parts
 // of the template interpreter generator.
 
@@ -84,8 +87,19 @@
  public:
   TemplateInterpreterGenerator(StubQueue* _code);
 
-  #include "incls/_templateInterpreterGenerator_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "templateInterpreterGenerator_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "templateInterpreterGenerator_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "templateInterpreterGenerator_zero.hpp"
+#endif
+
 
 };
 
 #endif // !CC_INTERP
+
+#endif // SHARE_VM_INTERPRETER_TEMPLATEINTERPRETERGENERATOR_HPP
--- a/src/share/vm/interpreter/templateTable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/templateTable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_templateTable.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/templateTable.hpp"
+#include "runtime/timer.hpp"
 
 
 #ifdef CC_INTERP
--- a/src/share/vm/interpreter/templateTable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/interpreter/templateTable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,25 @@
  *
  */
 
+#ifndef SHARE_VM_INTERPRETER_TEMPLATETABLE_HPP
+#define SHARE_VM_INTERPRETER_TEMPLATETABLE_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/frame.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "interp_masm_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "interp_masm_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "interp_masm_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "interp_masm_zero.hpp"
+#endif
+
 #ifndef CC_INTERP
 // All the necessary definitions used for (bytecode) template generation. Instead of
 // spreading the implementation functionality for each bytecode in the interpreter
@@ -333,6 +352,20 @@
   static Template* template_for_wide(Bytecodes::Code code)  { Bytecodes::wide_check(code); return &_template_table_wide[code]; }
 
   // Platform specifics
-  #include "incls/_templateTable_pd.hpp.incl"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "templateTable_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "templateTable_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "templateTable_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "templateTable_zero.hpp"
+#endif
+
 };
 #endif /* !CC_INTERP */
+
+#endif // SHARE_VM_INTERPRETER_TEMPLATETABLE_HPP
--- a/src/share/vm/libadt/dict.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/dict.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,10 +22,13 @@
  *
  */
 
-// Dictionaries - An Abstract Data Type
+#include "precompiled.hpp"
+#include "libadt/dict.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/thread.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_dict.cpp.incl"
+// Dictionaries - An Abstract Data Type
 
 // %%%%% includes not needed with AVM framework - Ungar
 
--- a/src/share/vm/libadt/dict.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/dict.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#ifndef _DICT_
-#define _DICT_
+#ifndef SHARE_VM_LIBADT_DICT_HPP
+#define SHARE_VM_LIBADT_DICT_HPP
+
+#include "libadt/port.hpp"
+
 // Dictionaries - An Abstract Data Type
 //INTERFACE
 class ostream;
@@ -114,4 +117,4 @@
   int test(void) { return _i<_d->_size;} // Test for end of iteration
 };
 
-#endif // _DICT_
+#endif // SHARE_VM_LIBADT_DICT_HPP
--- a/src/share/vm/libadt/port.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/port.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,15 +22,15 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "libadt/port.hpp"
+
 // Code for portable compiling
 
 #ifdef __GNUC__
 #pragma implementation
 #endif
 
-#include "incls/_precompiled.incl"
-#include "incls/_port.cpp.incl"
-
 // %%%%% includes not needed with AVM framework - Ungar
 // #include "port.hpp"
 
--- a/src/share/vm/libadt/port.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/port.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#ifndef _PORT_
-#define _PORT_
+#ifndef SHARE_VM_LIBADT_PORT_HPP
+#define SHARE_VM_LIBADT_PORT_HPP
+
+#include "utilities/top.hpp"
+
 // Typedefs for portable compiling
 
 #if defined(__GNUC__)
@@ -204,4 +207,4 @@
 extern uint32 heap_totalmem;      // Current total memory allocation
 extern uint32 heap_highwater;     // Highwater mark to date for memory usage
 
-#endif // _PORT_
+#endif // SHARE_VM_LIBADT_PORT_HPP
--- a/src/share/vm/libadt/set.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/set.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,10 +22,11 @@
  *
  */
 
-// Sets - An Abstract Data Type
+#include "precompiled.hpp"
+#include "libadt/set.hpp"
+#include "memory/allocation.inline.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_set.cpp.incl"
+// Sets - An Abstract Data Type
 
 // %%%%% includes not needed with AVM framework - Ungar
 // #include "port.hpp"
--- a/src/share/vm/libadt/set.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/set.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,14 +22,14 @@
  *
  */
 
-#ifndef _SET_
-#define _SET_
+#ifndef SHARE_VM_LIBADT_SET_HPP
+#define SHARE_VM_LIBADT_SET_HPP
+
+#include "libadt/port.hpp"
+#include "memory/allocation.hpp"
+
 // Sets - An Abstract Data Type
 
-// Should not manually include these in AVM framework. %%%%% - Ungar
-// #ifndef _PORT_
-// #include "port.hpp"
-// #endif // _PORT_
 //INTERFACE
 
 class SparseSet;
@@ -248,4 +248,4 @@
   int test(void) { return impl->test(); }
 };
 
-#endif // _SET_
+#endif // SHARE_VM_LIBADT_SET_HPP
--- a/src/share/vm/libadt/vectset.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/vectset.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,10 +22,11 @@
  *
  */
 
-// Vector Sets - An Abstract Data Type
+#include "precompiled.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.inline.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_vectset.cpp.incl"
+// Vector Sets - An Abstract Data Type
 
 // %%%%% includes not needed with AVM framework - Ungar
 // #include "port.hpp"
--- a/src/share/vm/libadt/vectset.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/libadt/vectset.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#ifndef _VECTOR_SET_
-#define _VECTOR_SET_
+#ifndef SHARE_VM_LIBADT_VECTSET_HPP
+#define SHARE_VM_LIBADT_VECTSET_HPP
+
+#include "libadt/set.hpp"
+
 // Vector Sets - An Abstract Data Type
 //INTERFACE
 
@@ -173,4 +176,4 @@
   int test(void) { return ((VSetI_*)impl)->test(); }
 };
 
-#endif // _VECTOR_SET_
+#endif // SHARE_VM_LIBADT_VECTSET_HPP
--- a/src/share/vm/memory/allocation.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/allocation.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,23 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_allocation.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/os.hpp"
+#include "runtime/task.hpp"
+#include "runtime/threadCritical.hpp"
+#include "utilities/ostream.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 void* CHeapObj::operator new(size_t size){
   return (void *) AllocateHeap(size, "CHeapObj-new");
--- a/src/share/vm/memory/allocation.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/allocation.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_ALLOCATION_HPP
+#define SHARE_VM_MEMORY_ALLOCATION_HPP
+
+#include "runtime/globals.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifdef COMPILER1
+#include "c1/c1_globals.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/c2_globals.hpp"
+#endif
+
 #define ARENA_ALIGN_M1 (((size_t)(ARENA_AMALLOC_ALIGNMENT)) - 1)
 #define ARENA_ALIGN_MASK (~((size_t)ARENA_ALIGN_M1))
 #define ARENA_ALIGN(x) ((((size_t)(x)) + ARENA_ALIGN_M1) & ARENA_ALIGN_MASK)
@@ -419,3 +431,5 @@
   ReallocMark()   PRODUCT_RETURN;
   void check()    PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_MEMORY_ALLOCATION_HPP
--- a/src/share/vm/memory/allocation.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/allocation.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_ALLOCATION_INLINE_HPP
+#define SHARE_VM_MEMORY_ALLOCATION_INLINE_HPP
+
+#include "runtime/os.hpp"
+
 // Explicit C-heap memory management
 
 void trace_heap_malloc(size_t size, const char* name, void *p);
@@ -57,3 +62,5 @@
   #endif
   os::free(p);
 }
+
+#endif // SHARE_VM_MEMORY_ALLOCATION_INLINE_HPP
--- a/src/share/vm/memory/barrierSet.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/barrierSet.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_barrierSet.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/barrierSet.inline.hpp"
+#include "memory/universe.hpp"
 
 // count is number of array elements being written
 void BarrierSet::static_write_ref_array_pre(HeapWord* start, size_t count) {
--- a/src/share/vm/memory/barrierSet.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/barrierSet.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_BARRIERSET_HPP
+#define SHARE_VM_MEMORY_BARRIERSET_HPP
+
+#include "memory/memRegion.hpp"
+#include "oops/oopsHierarchy.hpp"
+
 // This class provides the interface between a barrier implementation and
 // the rest of the system.
 
@@ -170,3 +176,5 @@
   virtual bool is_aligned(HeapWord* addr) = 0;
 
 };
+
+#endif // SHARE_VM_MEMORY_BARRIERSET_HPP
--- a/src/share/vm/memory/barrierSet.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/barrierSet.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_BARRIERSET_INLINE_HPP
+#define SHARE_VM_MEMORY_BARRIERSET_INLINE_HPP
+
+#include "memory/barrierSet.hpp"
+#include "memory/cardTableModRefBS.hpp"
+
 // Inline functions of BarrierSet, which de-virtualize certain
 // performance-critical calls when the barrier is the most common
 // card-table kind.
@@ -77,3 +83,5 @@
     write_region_work(mr);
   }
 }
+
+#endif // SHARE_VM_MEMORY_BARRIERSET_INLINE_HPP
--- a/src/share/vm/memory/blockOffsetTable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/blockOffsetTable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_blockOffsetTable.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/iterator.hpp"
+#include "memory/space.inline.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 //////////////////////////////////////////////////////////////////////
 // BlockOffsetSharedArray
--- a/src/share/vm/memory/blockOffsetTable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/blockOffsetTable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_BLOCKOFFSETTABLE_HPP
+#define SHARE_VM_MEMORY_BLOCKOFFSETTABLE_HPP
+
+#include "memory/memRegion.hpp"
+#include "runtime/virtualspace.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // The CollectedHeap type requires subtypes to implement a method
 // "block_start".  For some subtypes, notably generational
 // systems using card-table-based write barriers, the efficiency of this
@@ -561,3 +568,5 @@
   // Debugging support
   virtual size_t last_active_index() const;
 };
+
+#endif // SHARE_VM_MEMORY_BLOCKOFFSETTABLE_HPP
--- a/src/share/vm/memory/blockOffsetTable.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/blockOffsetTable.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_BLOCKOFFSETTABLE_INLINE_HPP
+#define SHARE_VM_MEMORY_BLOCKOFFSETTABLE_INLINE_HPP
+
+#include "memory/blockOffsetTable.hpp"
+#include "memory/space.hpp"
+#include "runtime/safepoint.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#endif
+
 //////////////////////////////////////////////////////////////////////////
 // BlockOffsetTable inlines
 //////////////////////////////////////////////////////////////////////////
@@ -88,3 +98,5 @@
     }
   }
 }
+
+#endif // SHARE_VM_MEMORY_BLOCKOFFSETTABLE_INLINE_HPP
--- a/src/share/vm/memory/cardTableModRefBS.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/cardTableModRefBS.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,13 +22,26 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/sharedHeap.hpp"
+#include "memory/space.hpp"
+#include "memory/space.inline.hpp"
+#include "memory/universe.hpp"
+#include "runtime/java.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/virtualspace.hpp"
+#ifdef COMPILER1
+#include "c1/c1_LIR.hpp"
+#include "c1/c1_LIRGenerator.hpp"
+#endif
+
 // This kind of "BarrierSet" allows a "CollectedHeap" to detect and
 // enumerate ref fields that have been modified (since the last
 // enumeration.)
 
-# include "incls/_precompiled.incl"
-# include "incls/_cardTableModRefBS.cpp.incl"
-
 size_t CardTableModRefBS::cards_required(size_t covered_words)
 {
   // Add one for a guard card, used to detect errors.
--- a/src/share/vm/memory/cardTableModRefBS.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/cardTableModRefBS.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_CARDTABLEMODREFBS_HPP
+#define SHARE_VM_MEMORY_CARDTABLEMODREFBS_HPP
+
+#include "memory/modRefBarrierSet.hpp"
+#include "oops/oop.hpp"
+#include "oops/oop.inline2.hpp"
+
 // This kind of "BarrierSet" allows a "CollectedHeap" to detect and
 // enumerate ref fields that have been modified (since the last
 // enumeration.)
@@ -490,3 +497,5 @@
 
   void set_CTRS(CardTableRS* rs) { _rs = rs; }
 };
+
+#endif // SHARE_VM_MEMORY_CARDTABLEMODREFBS_HPP
--- a/src/share/vm/memory/cardTableRS.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/cardTableRS.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_cardTableRS.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generation.hpp"
+#include "memory/space.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/os.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#endif
 
 CardTableRS::CardTableRS(MemRegion whole_heap,
                          int max_covered_regions) :
--- a/src/share/vm/memory/cardTableRS.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/cardTableRS.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_CARDTABLERS_HPP
+#define SHARE_VM_MEMORY_CARDTABLERS_HPP
+
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/genRemSet.hpp"
+#include "memory/memRegion.hpp"
+
 class Space;
 class OopsInGenClosure;
 class DirtyCardToOopClosure;
@@ -158,3 +165,5 @@
   }
 
 };
+
+#endif // SHARE_VM_MEMORY_CARDTABLERS_HPP
--- a/src/share/vm/memory/classify.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/classify.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_classify.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/classify.hpp"
 
 
 const char* ClassifyObjectClosure::object_type_name[number_object_types] = {
--- a/src/share/vm/memory/classify.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/classify.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_CLASSIFY_HPP
+#define SHARE_VM_MEMORY_CLASSIFY_HPP
+
+#include "oops/oop.inline.hpp"
+
 typedef enum oop_type {
   unknown_type,
   instance_type,
@@ -90,3 +95,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_MEMORY_CLASSIFY_HPP
--- a/src/share/vm/memory/collectorPolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/collectorPolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,35 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_collectorPolicy.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/space.hpp"
+#include "memory/universe.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/globals_extension.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp"
+#endif
 
 // CollectorPolicy methods.
 
@@ -659,9 +686,6 @@
     }
     return result;   // could be null if we are out of space
   } else if (!gch->incremental_collection_will_fail()) {
-    // The gc_prologues have not executed yet.  The value
-    // for incremental_collection_will_fail() is the remanent
-    // of the last collection.
     // Do an incremental collection.
     gch->do_collection(false            /* full */,
                        false            /* clear_all_soft_refs */,
@@ -739,9 +763,8 @@
   GenCollectedHeap* gch = GenCollectedHeap::heap();
   size_t gen0_capacity = gch->get_gen(0)->capacity_before_gc();
   return    (word_size > heap_word_size(gen0_capacity))
-         || (GC_locker::is_active_and_needs_gc())
-         || (   gch->last_incremental_collection_failed()
-             && gch->incremental_collection_will_fail());
+         || GC_locker::is_active_and_needs_gc()
+         || gch->incremental_collection_failed();
 }
 
 
--- a/src/share/vm/memory/collectorPolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/collectorPolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_COLLECTORPOLICY_HPP
+#define SHARE_VM_MEMORY_COLLECTORPOLICY_HPP
+
+#include "memory/barrierSet.hpp"
+#include "memory/genRemSet.hpp"
+#include "memory/permGen.hpp"
+
 // This class (or more correctly, subtypes of this class)
 // are used to define global garbage collector attributes.
 // This includes initialization of generations and any other
@@ -334,3 +341,5 @@
 
   void initialize_gc_policy_counters();
 };
+
+#endif // SHARE_VM_MEMORY_COLLECTORPOLICY_HPP
--- a/src/share/vm/memory/compactPermGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/compactPermGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_COMPACTPERMGEN_HPP
+#define SHARE_VM_MEMORY_COMPACTPERMGEN_HPP
+
+#include "memory/generation.hpp"
+#include "memory/permGen.hpp"
+
 class ContigPermSpace;
 class CardTableModRefBS;
 class CompactingPermGenGen;
@@ -46,3 +52,5 @@
   Generation* as_gen() const { return _gen; }
 
 };
+
+#endif // SHARE_VM_MEMORY_COMPACTPERMGEN_HPP
--- a/src/share/vm/memory/compactingPermGenGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/compactingPermGenGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_compactingPermGenGen.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/compactingPermGenGen.hpp"
+#include "memory/filemap.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/generationSpec.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
+#endif
 
 
 // An ObjectClosure helper: Recursively adjust all pointers in an object
--- a/src/share/vm/memory/compactingPermGenGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/compactingPermGenGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_COMPACTINGPERMGENGEN_HPP
+#define SHARE_VM_MEMORY_COMPACTINGPERMGENGEN_HPP
+
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "memory/space.hpp"
+
 // All heaps contains a "permanent generation," containing permanent
 // (reflective) objects.  This is like a regular generation in some ways,
 // but unlike one in others, and so is split apart.
@@ -247,3 +253,5 @@
   // or if the remapping has already been done by a prior call.
   static bool remap_shared_readonly_as_readwrite();
 };
+
+#endif // SHARE_VM_MEMORY_COMPACTINGPERMGENGEN_HPP
--- a/src/share/vm/memory/defNewGeneration.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/defNewGeneration.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,32 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_defNewGeneration.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "gc_implementation/shared/gcPolicyCounters.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/defNewGeneration.inline.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/iterator.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/space.inline.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/stack.inline.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 //
 // DefNewGeneration functions.
@@ -510,7 +534,7 @@
   // from this generation, pass on collection; let the next generation
   // do it.
   if (!collection_attempt_is_safe()) {
-    gch->set_incremental_collection_will_fail();
+    gch->set_incremental_collection_failed(); // Slight lie: we did not even attempt one
     return;
   }
   assert(to()->is_empty(), "Else not collection_attempt_is_safe");
@@ -596,9 +620,8 @@
     if (PrintGC && !PrintGCDetails) {
       gch->print_heap_change(gch_prev_used);
     }
+    assert(!gch->incremental_collection_failed(), "Should be clear");
   } else {
-    assert(HandlePromotionFailure,
-      "Should not be here unless promotion failure handling is on");
     assert(_promo_failure_scan_stack.is_empty(), "post condition");
     _promo_failure_scan_stack.clear(true); // Clear cached segments.
 
@@ -613,7 +636,7 @@
     // and from-space.
     swap_spaces();   // For uniformity wrt ParNewGeneration.
     from()->set_next_compaction_space(to());
-    gch->set_incremental_collection_will_fail();
+    gch->set_incremental_collection_failed();
 
     // Inform the next generation that a promotion failure occurred.
     _next_gen->promotion_failure_occurred();
@@ -700,12 +723,6 @@
   if (obj == NULL) {
     obj = _next_gen->promote(old, s);
     if (obj == NULL) {
-      if (!HandlePromotionFailure) {
-        // A failed promotion likely means the MaxLiveObjectEvacuationRatio flag
-        // is incorrectly set. In any case, its seriously wrong to be here!
-        vm_exit_out_of_memory(s*wordSize, "promotion");
-      }
-
       handle_promotion_failure(old);
       return old;
     }
@@ -812,47 +829,45 @@
     assert(_next_gen != NULL,
            "This must be the youngest gen, and not the only gen");
   }
-
-  // Decide if there's enough room for a full promotion
-  // When using extremely large edens, we effectively lose a
-  // large amount of old space.  Use the "MaxLiveObjectEvacuationRatio"
-  // flag to reduce the minimum evacuation space requirements. If
-  // there is not enough space to evacuate eden during a scavenge,
-  // the VM will immediately exit with an out of memory error.
-  // This flag has not been tested
-  // with collectors other than simple mark & sweep.
-  //
-  // Note that with the addition of promotion failure handling, the
-  // VM will not immediately exit but will undo the young generation
-  // collection.  The parameter is left here for compatibility.
-  const double evacuation_ratio = MaxLiveObjectEvacuationRatio / 100.0;
-
-  // worst_case_evacuation is based on "used()".  For the case where this
-  // method is called after a collection, this is still appropriate because
-  // the case that needs to be detected is one in which a full collection
-  // has been done and has overflowed into the young generation.  In that
-  // case a minor collection will fail (the overflow of the full collection
-  // means there is no space in the old generation for any promotion).
-  size_t worst_case_evacuation = (size_t)(used() * evacuation_ratio);
-
-  return _next_gen->promotion_attempt_is_safe(worst_case_evacuation,
-                                              HandlePromotionFailure);
+  return _next_gen->promotion_attempt_is_safe(used());
 }
 
 void DefNewGeneration::gc_epilogue(bool full) {
+  DEBUG_ONLY(static bool seen_incremental_collection_failed = false;)
+
+  assert(!GC_locker::is_active(), "We should not be executing here");
   // Check if the heap is approaching full after a collection has
   // been done.  Generally the young generation is empty at
   // a minimum at the end of a collection.  If it is not, then
   // the heap is approaching full.
   GenCollectedHeap* gch = GenCollectedHeap::heap();
-  clear_should_allocate_from_space();
-  if (collection_attempt_is_safe()) {
-    gch->clear_incremental_collection_will_fail();
+  if (full) {
+    DEBUG_ONLY(seen_incremental_collection_failed = false;)
+    if (!collection_attempt_is_safe()) {
+      gch->set_incremental_collection_failed(); // Slight lie: a full gc left us in that state
+      set_should_allocate_from_space(); // we seem to be running out of space
+    } else {
+      gch->clear_incremental_collection_failed(); // We just did a full collection
+      clear_should_allocate_from_space(); // if set
+    }
   } else {
-    gch->set_incremental_collection_will_fail();
-    if (full) { // we seem to be running out of space
-      set_should_allocate_from_space();
+#ifdef ASSERT
+    // It is possible that incremental_collection_failed() == true
+    // here, because an attempted scavenge did not succeed. The policy
+    // is normally expected to cause a full collection which should
+    // clear that condition, so we should not be here twice in a row
+    // with incremental_collection_failed() == true without having done
+    // a full collection in between.
+    if (!seen_incremental_collection_failed &&
+        gch->incremental_collection_failed()) {
+      seen_incremental_collection_failed = true;
+    } else if (seen_incremental_collection_failed) {
+      assert(gch->gc_cause() == GCCause::_scavenge_alot || !gch->incremental_collection_failed(),
+             "Twice in a row");
+
+      seen_incremental_collection_failed = false;
     }
+#endif // ASSERT
   }
 
   if (ZapUnusedHeapArea) {
--- a/src/share/vm/memory/defNewGeneration.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/defNewGeneration.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_DEFNEWGENERATION_HPP
+#define SHARE_VM_MEMORY_DEFNEWGENERATION_HPP
+
+#include "gc_implementation/shared/ageTable.hpp"
+#include "gc_implementation/shared/cSpaceCounters.hpp"
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "memory/generation.inline.hpp"
+#include "utilities/stack.hpp"
+
 class EdenSpace;
 class ContiguousSpace;
 class ScanClosure;
@@ -82,12 +91,6 @@
   Stack<oop>     _objs_with_preserved_marks;
   Stack<markOop> _preserved_marks_of_objs;
 
-  // Returns true if the collection can be safely attempted.
-  // If this method returns false, a collection is not
-  // guaranteed to fail but the system may not be able
-  // to recover from the failure.
-  bool collection_attempt_is_safe();
-
   // Promotion failure handling
   OopClosure *_promo_failure_scan_stack_closure;
   void set_promo_failure_scan_stack_closure(OopClosure *scan_stack_closure) {
@@ -304,6 +307,14 @@
 
   // GC support
   virtual void compute_new_size();
+
+  // Returns true if the collection is likely to be safely
+  // completed. Even if this method returns true, a collection
+  // may not be guaranteed to succeed, and the system should be
+  // able to safely unwind and recover from that failure, albeit
+  // at some additional cost. Override superclass's implementation.
+  virtual bool collection_attempt_is_safe();
+
   virtual void collect(bool   full,
                        bool   clear_all_soft_refs,
                        size_t size,
@@ -344,3 +355,5 @@
   // Scavenge support
   void swap_spaces();
 };
+
+#endif // SHARE_VM_MEMORY_DEFNEWGENERATION_HPP
--- a/src/share/vm/memory/defNewGeneration.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/defNewGeneration.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_DEFNEWGENERATION_INLINE_HPP
+#define SHARE_VM_MEMORY_DEFNEWGENERATION_INLINE_HPP
+
+#include "memory/cardTableRS.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/space.hpp"
+
 // Methods of protected closure types
 
 template <class T>
@@ -79,3 +86,5 @@
     _rs->inline_write_ref_field_gc(p, obj);
   }
 }
+
+#endif // SHARE_VM_MEMORY_DEFNEWGENERATION_INLINE_HPP
--- a/src/share/vm/memory/dump.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/dump.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,23 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dump.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/loaderConstraints.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/classify.hpp"
+#include "memory/filemap.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/copy.hpp"
 
 
 // Closure to set up the fingerprint field for all methods.
--- a/src/share/vm/memory/filemap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/filemap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,24 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_filemap.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/symbolTable.hpp"
+#include "memory/filemap.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/java.hpp"
+#include "runtime/os.hpp"
+#include "utilities/defaultStream.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "hpi_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "hpi_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "hpi_windows.hpp"
+#endif
+
 # include <sys/stat.h>
 # include <errno.h>
 
--- a/src/share/vm/memory/filemap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/filemap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_FILEMAP_HPP
+#define SHARE_VM_MEMORY_FILEMAP_HPP
+
+#include "memory/compactingPermGenGen.hpp"
+#include "memory/space.hpp"
+
 // Layout of the file:
 //  header: dump of archive instance plus versioning info, datestamp, etc.
 //   [magic # = 0xF00BABA2]
@@ -137,3 +143,5 @@
   // Return true if given address is in the mapped shared space.
   bool is_in_shared_space(const void* p);
 };
+
+#endif // SHARE_VM_MEMORY_FILEMAP_HPP
--- a/src/share/vm/memory/gcLocker.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/gcLocker.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_gcLocker.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/sharedHeap.hpp"
 
 volatile jint GC_locker::_jni_lock_count = 0;
 volatile jint GC_locker::_lock_count     = 0;
--- a/src/share/vm/memory/gcLocker.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/gcLocker.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,26 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GCLOCKER_HPP
+#define SHARE_VM_MEMORY_GCLOCKER_HPP
+
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
+
 // The direct lock/unlock calls do not force a collection if an unlock
 // decrements the count to zero. Avoid calling these if at all possible.
 
@@ -310,3 +330,5 @@
   ~No_Alloc_Verifier() {}
 #endif
 };
+
+#endif // SHARE_VM_MEMORY_GCLOCKER_HPP
--- a/src/share/vm/memory/gcLocker.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/gcLocker.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GCLOCKER_INLINE_HPP
+#define SHARE_VM_MEMORY_GCLOCKER_INLINE_HPP
+
+#include "memory/gcLocker.hpp"
+
 inline bool GC_locker::is_active() {
   return _lock_count > 0 || _jni_lock_count > 0;
 }
@@ -70,3 +75,5 @@
     }
   }
 }
+
+#endif // SHARE_VM_MEMORY_GCLOCKER_INLINE_HPP
--- a/src/share/vm/memory/genCollectedHeap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genCollectedHeap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,41 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_genCollectedHeap.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/compactPermGen.hpp"
+#include "memory/filemap.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/permGen.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/sharedHeap.hpp"
+#include "memory/space.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/aprofiler.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/vmThread.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/vmError.hpp"
+#include "utilities/workgroup.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp"
+#endif
 
 GenCollectedHeap* GenCollectedHeap::_gch;
 NOT_PRODUCT(size_t GenCollectedHeap::_skip_header_HeapWords = 0;)
@@ -142,8 +175,7 @@
   }
   _perm_gen = perm_gen_spec->init(heap_rs, PermSize, rem_set());
 
-  clear_incremental_collection_will_fail();
-  clear_last_incremental_collection_failed();
+  clear_incremental_collection_failed();
 
 #ifndef SERIALGC
   // If we are running CMS, create the collector responsible
@@ -1347,17 +1379,6 @@
 };
 
 void GenCollectedHeap::gc_epilogue(bool full) {
-  // Remember if a partial collection of the heap failed, and
-  // we did a complete collection.
-  if (full && incremental_collection_will_fail()) {
-    set_last_incremental_collection_failed();
-  } else {
-    clear_last_incremental_collection_failed();
-  }
-  // Clear the flag, if set; the generation gc_epilogues will set the
-  // flag again if the condition persists despite the collection.
-  clear_incremental_collection_will_fail();
-
 #ifdef COMPILER2
   assert(DerivedPointerTable::is_empty(), "derived pointer present");
   size_t actual_gap = pointer_delta((HeapWord*) (max_uintx-3), *(end_addr()));
--- a/src/share/vm/memory/genCollectedHeap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genCollectedHeap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENCOLLECTEDHEAP_HPP
+#define SHARE_VM_MEMORY_GENCOLLECTEDHEAP_HPP
+
+#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/generation.hpp"
+#include "memory/sharedHeap.hpp"
+
 class SubTasksDone;
 
 // A "GenCollectedHeap" is a SharedHeap that uses generational
@@ -62,11 +70,10 @@
   // The generational collector policy.
   GenCollectorPolicy* _gen_policy;
 
-  // If a generation would bail out of an incremental collection,
-  // it sets this flag.  If the flag is set, satisfy_failed_allocation
-  // will attempt allocating in all generations before doing a full GC.
-  bool _incremental_collection_will_fail;
-  bool _last_incremental_collection_failed;
+  // Indicates that the most recent previous incremental collection failed.
+  // The flag is cleared when an action is taken that might clear the
+  // condition that caused that incremental collection to fail.
+  bool _incremental_collection_failed;
 
   // In support of ExplicitGCInvokesConcurrent functionality
   unsigned int _full_collections_completed;
@@ -469,26 +476,26 @@
   // call to "save_marks".
   bool no_allocs_since_save_marks(int level);
 
+  // Returns true if an incremental collection is likely to fail.
+  bool incremental_collection_will_fail() {
+    // Assumes a 2-generation system; the first disjunct remembers if an
+    // incremental collection failed, even when we thought (second disjunct)
+    // that it would not.
+    assert(heap()->collector_policy()->is_two_generation_policy(),
+           "the following definition may not be suitable for an n(>2)-generation system");
+    return incremental_collection_failed() || !get_gen(0)->collection_attempt_is_safe();
+  }
+
   // If a generation bails out of an incremental collection,
   // it sets this flag.
-  bool incremental_collection_will_fail() {
-    return _incremental_collection_will_fail;
-  }
-  void set_incremental_collection_will_fail() {
-    _incremental_collection_will_fail = true;
-  }
-  void clear_incremental_collection_will_fail() {
-    _incremental_collection_will_fail = false;
+  bool incremental_collection_failed() const {
+    return _incremental_collection_failed;
   }
-
-  bool last_incremental_collection_failed() const {
-    return _last_incremental_collection_failed;
+  void set_incremental_collection_failed() {
+    _incremental_collection_failed = true;
   }
-  void set_last_incremental_collection_failed() {
-    _last_incremental_collection_failed = true;
-  }
-  void clear_last_incremental_collection_failed() {
-    _last_incremental_collection_failed = false;
+  void clear_incremental_collection_failed() {
+    _incremental_collection_failed = false;
   }
 
   // Promotion of obj into gen failed.  Try to promote obj to higher non-perm
@@ -536,3 +543,5 @@
 public:
   virtual void preload_and_dump(TRAPS) KERNEL_RETURN;
 };
+
+#endif // SHARE_VM_MEMORY_GENCOLLECTEDHEAP_HPP
--- a/src/share/vm/memory/genMarkSweep.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genMarkSweep.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,39 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_genMarkSweep.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeCache.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genMarkSweep.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/modRefBarrierSet.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/space.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/events.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp,
   bool clear_all_softrefs) {
--- a/src/share/vm/memory/genMarkSweep.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genMarkSweep.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENMARKSWEEP_HPP
+#define SHARE_VM_MEMORY_GENMARKSWEEP_HPP
+
+#include "gc_implementation/shared/markSweep.hpp"
+
 class GenMarkSweep : public MarkSweep {
   friend class VM_MarkSweep;
   friend class G1MarkSweep;
@@ -44,3 +49,5 @@
   static void allocate_stacks();
   static void deallocate_stacks();
 };
+
+#endif // SHARE_VM_MEMORY_GENMARKSWEEP_HPP
--- a/src/share/vm/memory/genOopClosures.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genOopClosures.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENOOPCLOSURES_HPP
+#define SHARE_VM_MEMORY_GENOOPCLOSURES_HPP
+
+#include "memory/iterator.hpp"
+#include "oops/oop.hpp"
+
 class Generation;
 class HeapWord;
 class CardTableRS;
@@ -176,3 +182,5 @@
   virtual void do_oop(narrowOop* p);
   static VerifyOopClosure verify_oop;
 };
+
+#endif // SHARE_VM_MEMORY_GENOOPCLOSURES_HPP
--- a/src/share/vm/memory/genOopClosures.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genOopClosures.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENOOPCLOSURES_INLINE_HPP
+#define SHARE_VM_MEMORY_GENOOPCLOSURES_INLINE_HPP
+
+#include "memory/cardTableRS.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genOopClosures.hpp"
+#include "memory/genRemSet.hpp"
+#include "memory/generation.hpp"
+#include "memory/sharedHeap.hpp"
+#include "memory/space.hpp"
+
 inline OopsInGenClosure::OopsInGenClosure(Generation* gen) :
   OopClosure(gen->ref_processor()), _orig_gen(gen), _rs(NULL) {
   set_generation(gen);
@@ -122,3 +134,5 @@
 
 inline void ScanWeakRefClosure::do_oop_nv(oop* p)       { ScanWeakRefClosure::do_oop_work(p); }
 inline void ScanWeakRefClosure::do_oop_nv(narrowOop* p) { ScanWeakRefClosure::do_oop_work(p); }
+
+#endif // SHARE_VM_MEMORY_GENOOPCLOSURES_INLINE_HPP
--- a/src/share/vm/memory/genRemSet.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genRemSet.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,13 +22,14 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/genRemSet.hpp"
+
 // This kind of "BarrierSet" allows a "CollectedHeap" to detect and
 // enumerate ref fields that have been modified (since the last
 // enumeration.)
 
-# include "incls/_precompiled.incl"
-# include "incls/_genRemSet.cpp.incl"
-
 uintx GenRemSet::max_alignment_constraint(Name nm) {
   switch (nm) {
   case GenRemSet::CardTable:
--- a/src/share/vm/memory/genRemSet.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genRemSet.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENREMSET_HPP
+#define SHARE_VM_MEMORY_GENREMSET_HPP
+
+#include "oops/oop.hpp"
+
 // A GenRemSet provides ways of iterating over pointers accross generations.
 // (This is especially useful for older-to-younger.)
 
@@ -133,3 +138,5 @@
   // perm gen as well.
   virtual void invalidate_or_clear(Generation* gen, bool younger, bool perm) = 0;
 };
+
+#endif // SHARE_VM_MEMORY_GENREMSET_HPP
--- a/src/share/vm/memory/genRemSet.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/genRemSet.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENREMSET_INLINE_HPP
+#define SHARE_VM_MEMORY_GENREMSET_INLINE_HPP
+
 // Inline functions of GenRemSet, which de-virtualize this
 // performance-critical call when when the rem set is the most common
 // card-table kind.
@@ -33,3 +36,5 @@
     write_ref_field_gc_work(field, new_val);
   }
 }
+
+#endif // SHARE_VM_MEMORY_GENREMSET_INLINE_HPP
--- a/src/share/vm/memory/generation.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/generation.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,24 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_generation.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genMarkSweep.hpp"
+#include "memory/genOopClosures.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/generation.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/space.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/events.hpp"
 
 Generation::Generation(ReservedSpace rs, size_t initial_size, int level) :
   _level(level),
@@ -165,15 +181,16 @@
   return max;
 }
 
-bool Generation::promotion_attempt_is_safe(size_t promotion_in_bytes,
-                                           bool not_used) const {
+bool Generation::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const {
+  size_t available = max_contiguous_available();
+  bool   res = (available >= max_promotion_in_bytes);
   if (PrintGC && Verbose) {
-    gclog_or_tty->print_cr("Generation::promotion_attempt_is_safe"
-                " contiguous_available: " SIZE_FORMAT
-                " promotion_in_bytes: " SIZE_FORMAT,
-                max_contiguous_available(), promotion_in_bytes);
+    gclog_or_tty->print_cr(
+      "Generation: promo attempt is%s safe: available("SIZE_FORMAT") %s max_promo("SIZE_FORMAT")",
+      res? "":" not", available, res? ">=":"<",
+      max_promotion_in_bytes);
   }
-  return max_contiguous_available() >= promotion_in_bytes;
+  return res;
 }
 
 // Ignores "ref" and calls allocate().
--- a/src/share/vm/memory/generation.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/generation.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,19 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENERATION_HPP
+#define SHARE_VM_MEMORY_GENERATION_HPP
+
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/referenceProcessor.hpp"
+#include "memory/universe.hpp"
+#include "memory/watermark.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/perfData.hpp"
+#include "runtime/virtualspace.hpp"
+
 // A Generation models a heap area for similarly-aged objects.
 // It will contain one ore more spaces holding the actual objects.
 //
@@ -173,15 +186,11 @@
   // The largest number of contiguous free bytes in this or any higher generation.
   virtual size_t max_contiguous_available() const;
 
-  // Returns true if promotions of the specified amount can
-  // be attempted safely (without a vm failure).
+  // Returns true if promotions of the specified amount are
+  // likely to succeed without a promotion failure.
   // Promotion of the full amount is not guaranteed but
-  // can be attempted.
-  //   younger_handles_promotion_failure
-  // is true if the younger generation handles a promotion
-  // failure.
-  virtual bool promotion_attempt_is_safe(size_t promotion_in_bytes,
-    bool younger_handles_promotion_failure) const;
+  // might be attempted in the worst case.
+  virtual bool promotion_attempt_is_safe(size_t max_promotion_in_bytes) const;
 
   // For a non-young generation, this interface can be used to inform a
   // generation that a promotion attempt into that generation failed.
@@ -358,6 +367,16 @@
     return (full || should_allocate(word_size, is_tlab));
   }
 
+  // Returns true if the collection is likely to be safely
+  // completed. Even if this method returns true, a collection
+  // may not be guaranteed to succeed, and the system should be
+  // able to safely unwind and recover from that failure, albeit
+  // at some additional cost.
+  virtual bool collection_attempt_is_safe() {
+    guarantee(false, "Are you sure you want to call this method?");
+    return true;
+  }
+
   // Perform a garbage collection.
   // If full is true attempt a full garbage collection of this generation.
   // Otherwise, attempting to (at least) free enough space to support an
@@ -734,3 +753,5 @@
   virtual void verify(bool allow_dirty);
   virtual void print_on(outputStream* st) const;
 };
+
+#endif // SHARE_VM_MEMORY_GENERATION_HPP
--- a/src/share/vm/memory/generation.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/generation.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENERATION_INLINE_HPP
+#define SHARE_VM_MEMORY_GENERATION_INLINE_HPP
+
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generation.hpp"
+#include "memory/space.hpp"
+
 bool OneContigSpaceCardGeneration::is_in(const void* p) const {
   return the_space()->is_in(p);
 }
@@ -63,3 +70,5 @@
 bool OneContigSpaceCardGeneration::block_is_obj(const HeapWord* addr) const {
   return addr < the_space()->top();
 }
+
+#endif // SHARE_VM_MEMORY_GENERATION_INLINE_HPP
--- a/src/share/vm/memory/generationSpec.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/generationSpec.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_generationSpec.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/compactPermGen.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/filemap.hpp"
+#include "memory/genRemSet.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/tenuredGeneration.hpp"
+#include "runtime/java.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
+#include "gc_implementation/parNew/asParNewGeneration.hpp"
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#endif
 
 Generation* GenerationSpec::init(ReservedSpace rs, int level,
                                  GenRemSet* remset) {
--- a/src/share/vm/memory/generationSpec.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/generationSpec.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_GENERATIONSPEC_HPP
+#define SHARE_VM_MEMORY_GENERATIONSPEC_HPP
+
+#include "memory/generation.hpp"
+#include "memory/permGen.hpp"
+
 // The specification of a generation.  This class also encapsulates
 // some generation-specific behavior.  This is done here rather than as a
 // virtual function of Generation because these methods are needed in
@@ -120,3 +126,5 @@
   size_t misc_code_size() const { return _misc_code_size; }
   bool enable_shared_spaces()    const { return _enable_shared_spaces; }
 };
+
+#endif // SHARE_VM_MEMORY_GENERATIONSPEC_HPP
--- a/src/share/vm/memory/heap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/heap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_heap.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/heap.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/os.hpp"
 
 
 size_t CodeHeap::header_size() {
--- a/src/share/vm/memory/heap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/heap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_HEAP_HPP
+#define SHARE_VM_MEMORY_HEAP_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/virtualspace.hpp"
+
 // Blocks
 
 class HeapBlock VALUE_OBJ_CLASS_SPEC {
@@ -140,6 +146,7 @@
 
   // Returns reserved area high and low addresses
   char *low_boundary() const                     { return _memory.low_boundary (); }
+  char *high() const                             { return _memory.high(); }
   char *high_boundary() const                    { return _memory.high_boundary(); }
 
   // Iteration
@@ -159,3 +166,5 @@
   void verify();
   void print()  PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_MEMORY_HEAP_HPP
--- a/src/share/vm/memory/heapInspection.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/heapInspection.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_heapInspection.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/heapInspection.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/klassOop.hpp"
+#include "runtime/os.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#endif
 
 // HeapInspection
 
--- a/src/share/vm/memory/heapInspection.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/heapInspection.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_HEAPINSPECTION_HPP
+#define SHARE_VM_MEMORY_HEAPINSPECTION_HPP
+
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+
 #ifndef SERVICES_KERNEL
 
 
@@ -130,3 +136,5 @@
   static void heap_inspection(outputStream* st, bool need_prologue) KERNEL_RETURN;
   static void find_instances_at_safepoint(klassOop k, GrowableArray<oop>* result) KERNEL_RETURN;
 };
+
+#endif // SHARE_VM_MEMORY_HEAPINSPECTION_HPP
--- a/src/share/vm/memory/iterator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/iterator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_iterator.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/iterator.hpp"
+#include "oops/oop.inline.hpp"
 
 #ifdef ASSERT
 bool OopClosure::_must_remember_klasses = false;
--- a/src/share/vm/memory/iterator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/iterator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_ITERATOR_HPP
+#define SHARE_VM_MEMORY_ITERATOR_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "runtime/prefetch.hpp"
+#include "utilities/top.hpp"
+
 // The following classes are C++ `closures` for iterating over objects, roots and spaces
 
 class CodeBlob;
@@ -325,3 +333,5 @@
   }
 };
 #endif  // ASSERT
+
+#endif // SHARE_VM_MEMORY_ITERATOR_HPP
--- a/src/share/vm/memory/memRegion.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/memRegion.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,12 +22,13 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "memory/memRegion.hpp"
+#include "runtime/globals.hpp"
+
 // A very simple data structure representing a contigous word-aligned
 // region of address space.
 
-#include "incls/_precompiled.incl"
-#include "incls/_memRegion.cpp.incl"
-
 MemRegion MemRegion::intersection(const MemRegion mr2) const {
   MemRegion res;
   HeapWord* res_start = MAX2(start(), mr2.start());
--- a/src/share/vm/memory/memRegion.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/memRegion.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_MEMREGION_HPP
+#define SHARE_VM_MEMORY_MEMREGION_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // A very simple data structure representing a contigous region
 // region of address space.
 
@@ -104,3 +111,5 @@
 
   void  operator delete(void* p) {} // nothing to do
 };
+
+#endif // SHARE_VM_MEMORY_MEMREGION_HPP
--- a/src/share/vm/memory/modRefBarrierSet.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/modRefBarrierSet.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_MODREFBARRIERSET_HPP
+#define SHARE_VM_MEMORY_MODREFBARRIERSET_HPP
+
+#include "memory/barrierSet.hpp"
+
 // This kind of "BarrierSet" allows a "CollectedHeap" to detect and
 // enumerate ref fields that have been modified (since the last
 // enumeration), using a card table.
@@ -111,3 +116,5 @@
 #endif
 
 };
+
+#endif // SHARE_VM_MEMORY_MODREFBARRIERSET_HPP
--- a/src/share/vm/memory/oopFactory.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/oopFactory.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,28 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_oopFactory.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/compiledICHolderKlass.hpp"
+#include "oops/constMethodKlass.hpp"
+#include "oops/constantPoolKlass.hpp"
+#include "oops/cpCacheKlass.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceKlassKlass.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/klassKlass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodDataKlass.hpp"
+#include "oops/methodKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
 
 
 typeArrayOop oopFactory::new_charArray(const char* utf8_str, TRAPS) {
--- a/src/share/vm/memory/oopFactory.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/oopFactory.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_OOPFACTORY_HPP
+#define SHARE_VM_MEMORY_OOPFACTORY_HPP
+
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/universe.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "utilities/growableArray.hpp"
+
 // oopFactory is a class used for creating new objects.
 
 class vframeArray;
@@ -126,3 +138,5 @@
   // For compiled ICs
   static compiledICHolderOop new_compiledICHolder(methodHandle method, KlassHandle klass, TRAPS);
 };
+
+#endif // SHARE_VM_MEMORY_OOPFACTORY_HPP
--- a/src/share/vm/memory/permGen.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/permGen.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_permGen.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/cSpaceCounters.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/compactPermGen.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/permGen.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/vmThread.hpp"
 
 HeapWord* PermGen::request_expand_and_allocate(Generation* gen, size_t size,
                                                GCCause::Cause prev_cause) {
--- a/src/share/vm/memory/permGen.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/permGen.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_PERMGEN_HPP
+#define SHARE_VM_MEMORY_PERMGEN_HPP
+
+#include "gc_interface/gcCause.hpp"
+#include "memory/generation.hpp"
+#include "memory/iterator.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/virtualspace.hpp"
+
 // All heaps contains a "permanent generation," containing permanent
 // (reflective) objects.  This is like a regular generation in some ways,
 // but unlike one in others, and so is split apart.
@@ -84,3 +94,5 @@
     g->update_counters();
   }
 };
+
+#endif // SHARE_VM_MEMORY_PERMGEN_HPP
--- a/src/share/vm/memory/referencePolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/referencePolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_referencePolicy.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/universe.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/globals.hpp"
 
 LRUCurrentHeapPolicy::LRUCurrentHeapPolicy() {
   setup();
--- a/src/share/vm/memory/referencePolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/referencePolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_REFERENCEPOLICY_HPP
+#define SHARE_VM_MEMORY_REFERENCEPOLICY_HPP
+
 // referencePolicy is used to determine when soft reference objects
 // should be cleared.
 
@@ -66,3 +69,5 @@
   void setup();
   bool should_clear_reference(oop p);
 };
+
+#endif // SHARE_VM_MEMORY_REFERENCEPOLICY_HPP
--- a/src/share/vm/memory/referenceProcessor.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/referenceProcessor.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_referenceProcessor.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/referencePolicy.hpp"
+#include "memory/referenceProcessor.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/jniHandles.hpp"
 
 ReferencePolicy* ReferenceProcessor::_always_clear_soft_ref_policy = NULL;
 ReferencePolicy* ReferenceProcessor::_default_soft_ref_policy      = NULL;
--- a/src/share/vm/memory/referenceProcessor.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/referenceProcessor.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP
+#define SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP
+
+#include "memory/referencePolicy.hpp"
+#include "oops/instanceRefKlass.hpp"
+
 // ReferenceProcessor class encapsulates the per-"collector" processing
 // of java.lang.Reference objects for GC. The interface is useful for supporting
 // a generational abstraction, in particular when there are multiple
@@ -542,3 +548,5 @@
   oop                 _sentinel_ref;
   int                 _n_queues;
 };
+
+#endif // SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP
--- a/src/share/vm/memory/resourceArea.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/resourceArea.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_resourceArea.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/mutexLocker.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 //------------------------------ResourceMark-----------------------------------
 debug_only(int ResourceArea::_warned;)      // to suppress multiple warnings
--- a/src/share/vm/memory/resourceArea.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/resourceArea.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_RESOURCEAREA_HPP
+#define SHARE_VM_MEMORY_RESOURCEAREA_HPP
+
+#include "memory/allocation.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // The resource area holds temporary data structures in the VM.
 // The actual allocation areas are thread local. Typical usage:
 //
@@ -224,3 +238,5 @@
   void free_malloced_objects()                                         PRODUCT_RETURN;
   size_t size_in_bytes()       NOT_PRODUCT({ return _size_in_bytes; }) PRODUCT_RETURN0;
 };
+
+#endif // SHARE_VM_MEMORY_RESOURCEAREA_HPP
--- a/src/share/vm/memory/restore.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/restore.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_restore.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/filemap.hpp"
+#include "oops/oop.inline.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 
 // Closure for serializing initialization data in from a data area
--- a/src/share/vm/memory/serialize.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/serialize.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_serialize.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "memory/classify.hpp"
+#include "memory/compactingPermGenGen.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
 
 
 // Serialize out the block offset shared array for the shared spaces.
--- a/src/share/vm/memory/sharedHeap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/sharedHeap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_sharedHeap.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/sharedHeap.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/java.hpp"
+#include "services/management.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/workgroup.hpp"
 
 SharedHeap* SharedHeap::_sh;
 
--- a/src/share/vm/memory/sharedHeap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/sharedHeap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_SHAREDHEAP_HPP
+#define SHARE_VM_MEMORY_SHAREDHEAP_HPP
+
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/generation.hpp"
+#include "memory/permGen.hpp"
+
 // A "SharedHeap" is an implementation of a java heap for HotSpot.  This
 // is an abstract class: there may be many different kinds of heaps.  This
 // class defines the functions that a heap must implement, and contains
@@ -285,3 +292,5 @@
                              size_t bytes_after,
                              size_t capacity);
 };
+
+#endif // SHARE_VM_MEMORY_SHAREDHEAP_HPP
--- a/src/share/vm/memory/space.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/space.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,24 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_space.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_implementation/shared/liveRange.hpp"
+#include "gc_implementation/shared/markSweep.hpp"
+#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/space.hpp"
+#include "memory/space.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/java.hpp"
+#include "runtime/safepoint.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 void SpaceMemRegionOopsIterClosure::do_oop(oop* p)       { SpaceMemRegionOopsIterClosure::do_oop_work(p); }
 void SpaceMemRegionOopsIterClosure::do_oop(narrowOop* p) { SpaceMemRegionOopsIterClosure::do_oop_work(p); }
--- a/src/share/vm/memory/space.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/space.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,29 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_SPACE_HPP
+#define SHARE_VM_MEMORY_SPACE_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/blockOffsetTable.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/iterator.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/watermark.hpp"
+#include "oops/markOop.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/prefetch.hpp"
+#include "utilities/workgroup.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
+
 // A space is an abstraction for the "storage units" backing
 // up the generation abstraction. It includes specific
 // implementations for keeping track of free and used space,
@@ -1107,3 +1130,5 @@
   ContigPermSpace(BlockOffsetSharedArray* sharedOffsetArray, MemRegion mr) :
     OffsetTableContigSpace(sharedOffsetArray, mr) {}
 };
+
+#endif // SHARE_VM_MEMORY_SPACE_HPP
--- a/src/share/vm/memory/space.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/space.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_SPACE_INLINE_HPP
+#define SHARE_VM_MEMORY_SPACE_INLINE_HPP
+
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/space.hpp"
+#include "memory/universe.hpp"
+#include "runtime/safepoint.hpp"
+
 inline HeapWord* Space::block_start(const void* p) {
   return block_start_const(p);
 }
@@ -71,3 +79,5 @@
   assert(new_limit <= top(), "uninitialized objects in the safe range");
   _concurrent_iteration_safe_limit = new_limit;
 }
+
+#endif // SHARE_VM_MEMORY_SPACE_INLINE_HPP
--- a/src/share/vm/memory/specialized_oop_closures.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/specialized_oop_closures.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_specialized_oop_closures.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/specialized_oop_closures.hpp"
+#include "utilities/ostream.hpp"
 
 // For keeping stats on effectiveness.
 #ifndef PRODUCT
--- a/src/share/vm/memory/specialized_oop_closures.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/specialized_oop_closures.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_SPECIALIZED_OOP_CLOSURES_HPP
+#define SHARE_VM_MEMORY_SPECIALIZED_OOP_CLOSURES_HPP
+
+#include "runtime/atomic.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1_specialized_oop_closures.hpp"
+#endif
+
 // The following OopClosure types get specialized versions of
 // "oop_oop_iterate" that invoke the closures' do_oop methods
 // non-virtually, using a mechanism defined in this file.  Extend these
@@ -251,3 +259,5 @@
 
 #endif  // ENABLE_SPECIALIZATION_STATS
 #endif  // !PRODUCT
+
+#endif // SHARE_VM_MEMORY_SPECIALIZED_OOP_CLOSURES_HPP
--- a/src/share/vm/memory/tenuredGeneration.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/tenuredGeneration.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_tenuredGeneration.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/parNew/parGCAllocBuffer.hpp"
+#include "gc_implementation/shared/collectorCounters.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/blockOffsetTable.inline.hpp"
+#include "memory/generation.inline.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/space.hpp"
+#include "memory/tenuredGeneration.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/java.hpp"
 
 TenuredGeneration::TenuredGeneration(ReservedSpace rs,
                                      size_t initial_byte_size, int level,
@@ -419,29 +428,16 @@
 void TenuredGeneration::verify_alloc_buffers_clean() {}
 #endif // SERIALGC
 
-bool TenuredGeneration::promotion_attempt_is_safe(
-    size_t max_promotion_in_bytes,
-    bool younger_handles_promotion_failure) const {
-
-  bool result = max_contiguous_available() >= max_promotion_in_bytes;
-
-  if (younger_handles_promotion_failure && !result) {
-    result = max_contiguous_available() >=
-      (size_t) gc_stats()->avg_promoted()->padded_average();
-    if (PrintGC && Verbose && result) {
-      gclog_or_tty->print_cr("TenuredGeneration::promotion_attempt_is_safe"
-                  " contiguous_available: " SIZE_FORMAT
-                  " avg_promoted: " SIZE_FORMAT,
-                  max_contiguous_available(),
-                  gc_stats()->avg_promoted()->padded_average());
-    }
-  } else {
-    if (PrintGC && Verbose) {
-      gclog_or_tty->print_cr("TenuredGeneration::promotion_attempt_is_safe"
-                  " contiguous_available: " SIZE_FORMAT
-                  " promotion_in_bytes: " SIZE_FORMAT,
-                  max_contiguous_available(), max_promotion_in_bytes);
-    }
+bool TenuredGeneration::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const {
+  size_t available = max_contiguous_available();
+  size_t av_promo  = (size_t)gc_stats()->avg_promoted()->padded_average();
+  bool   res = (available >= av_promo) || (available >= max_promotion_in_bytes);
+  if (PrintGC && Verbose) {
+    gclog_or_tty->print_cr(
+      "Tenured: promo attempt is%s safe: available("SIZE_FORMAT") %s av_promo("SIZE_FORMAT"),"
+      "max_promo("SIZE_FORMAT")",
+      res? "":" not", available, res? ">=":"<",
+      av_promo, max_promotion_in_bytes);
   }
-  return result;
+  return res;
 }
--- a/src/share/vm/memory/tenuredGeneration.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/tenuredGeneration.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_TENUREDGENERATION_HPP
+#define SHARE_VM_MEMORY_TENUREDGENERATION_HPP
+
+#include "gc_implementation/shared/cSpaceCounters.hpp"
+#include "gc_implementation/shared/gcStats.hpp"
+#include "gc_implementation/shared/generationCounters.hpp"
+#include "memory/generation.hpp"
+
 // TenuredGeneration models the heap containing old (promoted/tenured) objects.
 
 class ParGCAllocBufferWithBOT;
@@ -101,8 +109,9 @@
 
   virtual void update_gc_stats(int level, bool full);
 
-  virtual bool promotion_attempt_is_safe(size_t max_promoted_in_bytes,
-    bool younger_handles_promotion_failure) const;
+  virtual bool promotion_attempt_is_safe(size_t max_promoted_in_bytes) const;
 
   void verify_alloc_buffers_clean();
 };
+
+#endif // SHARE_VM_MEMORY_TENUREDGENERATION_HPP
--- a/src/share/vm/memory/threadLocalAllocBuffer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/threadLocalAllocBuffer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,10 +22,24 @@
  *
  */
 
-// Thread-Local Edens support
+#include "precompiled.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/threadLocalAllocBuffer.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "utilities/copy.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
-# include "incls/_precompiled.incl"
-# include "incls/_threadLocalAllocBuffer.cpp.incl"
+// Thread-Local Edens support
 
 // static member initialization
 unsigned         ThreadLocalAllocBuffer::_target_refills = 0;
--- a/src/share/vm/memory/threadLocalAllocBuffer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/threadLocalAllocBuffer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_THREADLOCALALLOCBUFFER_HPP
+#define SHARE_VM_MEMORY_THREADLOCALALLOCBUFFER_HPP
+
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "runtime/perfData.hpp"
+
 class GlobalTLABStats;
 
 // ThreadLocalAllocBuffer: a descriptor for thread-local storage used by
@@ -255,3 +262,5 @@
     _max_slow_allocations    = MAX2(_max_slow_allocations, value);
   }
 };
+
+#endif // SHARE_VM_MEMORY_THREADLOCALALLOCBUFFER_HPP
--- a/src/share/vm/memory/threadLocalAllocBuffer.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/threadLocalAllocBuffer.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_THREADLOCALALLOCBUFFER_INLINE_HPP
+#define SHARE_VM_MEMORY_THREADLOCALALLOCBUFFER_INLINE_HPP
+
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/threadLocalAllocBuffer.hpp"
+#include "runtime/atomic.hpp"
+#include "utilities/copy.hpp"
+
 inline HeapWord* ThreadLocalAllocBuffer::allocate(size_t size) {
   invariants();
   HeapWord* obj = top();
@@ -93,3 +101,5 @@
                         obj_size, free(), refill_waste_limit());
   }
 }
+
+#endif // SHARE_VM_MEMORY_THREADLOCALALLOCBUFFER_INLINE_HPP
--- a/src/share/vm/memory/universe.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/universe.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,80 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_universe.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeCache.hpp"
+#include "code/dependencies.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/filemap.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genRemSet.hpp"
+#include "memory/generation.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/permGen.hpp"
+#include "memory/space.hpp"
+#include "memory/universe.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/arrayKlassKlass.hpp"
+#include "oops/compiledICHolderKlass.hpp"
+#include "oops/constMethodKlass.hpp"
+#include "oops/constantPoolKlass.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/cpCacheKlass.hpp"
+#include "oops/cpCacheOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceKlassKlass.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/klassKlass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodDataKlass.hpp"
+#include "oops/methodKlass.hpp"
+#include "oops/objArrayKlassKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolKlass.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "oops/typeArrayKlassKlass.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/aprofiler.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/events.hpp"
+#include "utilities/hashtable.inline.hpp"
+#include "utilities/preserveException.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp"
+#include "gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#endif
 
 // Known objects
 klassOop Universe::_boolArrayKlassObj                 = NULL;
@@ -864,7 +936,8 @@
     // compressed oops for pstack code.
     if (PrintCompressedOopsMode) {
       tty->cr();
-      tty->print("heap address: "PTR_FORMAT, Universe::heap()->base());
+      tty->print("heap address: " PTR_FORMAT ", size: " SIZE_FORMAT " MB",
+                 Universe::heap()->base(), Universe::heap()->reserved_region().byte_size()/M);
     }
     if ((uint64_t)Universe::heap()->reserved_region().end() > OopEncodingHeapMax) {
       // Can't reserve heap below 32Gb.
@@ -945,6 +1018,7 @@
 extern void initialize_converter_functions();
 
 bool universe_post_init() {
+  assert(!is_init_completed(), "Error: initialization not yet completed!");
   Universe::_fully_initialized = true;
   EXCEPTION_MARK;
   { ResourceMark rm;
--- a/src/share/vm/memory/universe.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/universe.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_UNIVERSE_HPP
+#define SHARE_VM_MEMORY_UNIVERSE_HPP
+
+#include "runtime/handles.hpp"
+#include "utilities/growableArray.hpp"
+
 // Universe is a name space holding known system classes and objects in the VM.
 //
 // Loaded classes are accessible through the SystemDictionary.
@@ -340,6 +346,7 @@
   static klassOop* longArrayKlassObj_addr()           { return &_longArrayKlassObj;   }
   static klassOop* singleArrayKlassObj_addr()         { return &_singleArrayKlassObj; }
   static klassOop* doubleArrayKlassObj_addr()         { return &_doubleArrayKlassObj; }
+  static klassOop* systemObjArrayKlassObj_addr()      { return &_systemObjArrayKlassObj; }
 
   // The particular choice of collected heap.
   static CollectedHeap* heap() { return _collectedHeap; }
@@ -460,3 +467,5 @@
     size_t bytesize() { return _bytesize; }
     oop    get_oop()  { return _oop; }
 };
+
+#endif // SHARE_VM_MEMORY_UNIVERSE_HPP
--- a/src/share/vm/memory/universe.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/universe.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_UNIVERSE_INLINE_HPP
+#define SHARE_VM_MEMORY_UNIVERSE_INLINE_HPP
+
+#include "memory/universe.hpp"
+
 // Check whether an element of a typeArrayOop with the given type must be
 // aligned 0 mod 8.  The typeArrayOop itself must be aligned at least this
 // strongly.
@@ -35,3 +40,5 @@
 inline bool Universe::field_type_should_be_aligned(BasicType type) {
   return type == T_DOUBLE || type == T_LONG;
 }
+
+#endif // SHARE_VM_MEMORY_UNIVERSE_INLINE_HPP
--- a/src/share/vm/memory/watermark.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/memory/watermark.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_MEMORY_WATERMARK_HPP
+#define SHARE_VM_MEMORY_WATERMARK_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // A water mark points into a space and is used during GC to keep track of
 // progress.
 
@@ -51,3 +57,5 @@
 inline bool operator!=(const WaterMark& x, const WaterMark& y) {
   return !(x == y);
 }
+
+#endif // SHARE_VM_MEMORY_WATERMARK_HPP
--- a/src/share/vm/oops/arrayKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/arrayKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_arrayKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "jvmtifiles/jvmti.h"
+#include "memory/gcLocker.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/arrayKlass.hpp"
+#include "oops/arrayKlassKlass.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
 
 int arrayKlass::object_size(int header_size) const {
   // size of an array klass object
--- a/src/share/vm/oops/arrayKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/arrayKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_ARRAYKLASS_HPP
+#define SHARE_VM_OOPS_ARRAYKLASS_HPP
+
+#include "memory/universe.hpp"
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/klassVtable.hpp"
+
 // arrayKlass is the abstract baseclass for all array classes
 
 class arrayKlass: public Klass {
@@ -127,3 +135,5 @@
   // Verification
   void oop_verify_on(oop obj, outputStream* st);
 };
+
+#endif // SHARE_VM_OOPS_ARRAYKLASS_HPP
--- a/src/share/vm/oops/arrayKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/arrayKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_arrayKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "oops/arrayKlassKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
 
 
 klassOop arrayKlassKlass::create_klass(TRAPS) {
--- a/src/share/vm/oops/arrayKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/arrayKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_ARRAYKLASSKLASS_HPP
+#define SHARE_VM_OOPS_ARRAYKLASSKLASS_HPP
+
+#include "oops/arrayKlass.hpp"
+#include "oops/klassKlass.hpp"
+
 // arrayKlassKlass is the abstract baseclass for all array class classes
 
 class arrayKlassKlass : public klassKlass {
@@ -63,3 +69,5 @@
   const char* internal_name() const;
   void oop_verify_on(oop obj, outputStream* st);
 };
+
+#endif // SHARE_VM_OOPS_ARRAYKLASSKLASS_HPP
--- a/src/share/vm/oops/arrayOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/arrayOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,7 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_arrayOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
 
 // <<this page is intentionally left blank>>
--- a/src/share/vm/oops/arrayOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/arrayOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_ARRAYOOP_HPP
+#define SHARE_VM_OOPS_ARRAYOOP_HPP
+
+#include "memory/universe.inline.hpp"
+#include "oops/oop.hpp"
+
 // arrayOopDesc is the abstract baseclass for all arrays.  It doesn't
 // declare pure virtual to enforce this because that would allocate a vtbl
 // in each instance, which we don't want.
@@ -113,3 +119,5 @@
     return max_element_words / words_per_element;
   }
 };
+
+#endif // SHARE_VM_OOPS_ARRAYOOP_HPP
--- a/src/share/vm/oops/compiledICHolderKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/compiledICHolderKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_compiledICHolderKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/permGen.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/compiledICHolderKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/handles.inline.hpp"
+#ifndef SERIALGC
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 klassOop compiledICHolderKlass::create_klass(TRAPS) {
   compiledICHolderKlass o;
--- a/src/share/vm/oops/compiledICHolderKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/compiledICHolderKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_COMPILEDICHOLDERKLASS_HPP
+#define SHARE_VM_OOPS_COMPILEDICHOLDERKLASS_HPP
+
+#include "oops/compiledICHolderOop.hpp"
+#include "oops/klass.hpp"
+#include "oops/methodOop.hpp"
+
 class CMSIsAliveClosure;
 
 // a compiledICHolderKlass is the klass of a compiledICHolderOop
@@ -77,3 +84,5 @@
   void oop_verify_on(oop obj, outputStream* st);
 
 };
+
+#endif // SHARE_VM_OOPS_COMPILEDICHOLDERKLASS_HPP
--- a/src/share/vm/oops/compiledICHolderOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/compiledICHolderOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,7 +22,7 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_compiledICHolderOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/compiledICHolderOop.hpp"
 
 // <<this page is intentionally left blank>>
--- a/src/share/vm/oops/compiledICHolderOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/compiledICHolderOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
+#define SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
+
+#include "oops/oop.hpp"
+
 // A compiledICHolderOop is a helper object for the inline cache implementation.
 // It holds an intermediate value (method+klass pair) used when converting from
 // compiled to an interpreted call.
@@ -54,3 +59,5 @@
   oop* adr_holder_method() const      { return (oop*)&_holder_method; }
   oop* adr_holder_klass() const       { return (oop*)&_holder_klass; }
 };
+
+#endif // SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
--- a/src/share/vm/oops/constMethodKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constMethodKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_constMethodKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/constMethodKlass.hpp"
+#include "oops/constMethodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/handles.inline.hpp"
 
 
 klassOop constMethodKlass::create_klass(TRAPS) {
--- a/src/share/vm/oops/constMethodKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constMethodKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_CONSTMETHODKLASS_HPP
+#define SHARE_VM_OOPS_CONSTMETHODKLASS_HPP
+
+#include "oops/klass.hpp"
+#include "oops/oop.hpp"
+#include "runtime/orderAccess.hpp"
+
 // A constMethodKlass is the klass of a constMethodOop
 
 class constMethodKlass : public Klass {
@@ -87,3 +94,5 @@
   bool oop_partially_loaded(oop obj) const;
   void oop_set_partially_loaded(oop obj);
 };
+
+#endif // SHARE_VM_OOPS_CONSTMETHODKLASS_HPP
--- a/src/share/vm/oops/constMethodOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constMethodOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_constMethodOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/constMethodOop.hpp"
+#include "oops/methodOop.hpp"
 
 // Static initialization
 const u2 constMethodOopDesc::MAX_IDNUM   = 0xFFFE;
--- a/src/share/vm/oops/constMethodOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constMethodOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_CONSTMETHODOOP_HPP
+#define SHARE_VM_OOPS_CONSTMETHODOOP_HPP
+
+#include "oops/oop.hpp"
+#include "oops/typeArrayOop.hpp"
+
 // An constMethodOop represents portions of a Java method which
 // do not vary.
 //
@@ -301,3 +307,5 @@
   u2* last_u2_element() const
                                          { return (u2*)constMethod_end() - 1; }
 };
+
+#endif // SHARE_VM_OOPS_CONSTMETHODOOP_HPP
--- a/src/share/vm/oops/constantPoolKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constantPoolKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,35 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_constantPoolKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/permGen.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/constantPoolKlass.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.inline.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "memory/cardTableRS.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 constantPoolOop constantPoolKlass::allocate(int length, bool is_conc_safe, TRAPS) {
   int size = constantPoolOopDesc::object_size(length);
@@ -34,6 +61,7 @@
   c->set_length(length);
   c->set_tags(NULL);
   c->set_cache(NULL);
+  c->set_operands(NULL);
   c->set_pool_holder(NULL);
   c->set_flags(0);
   // only set to non-zero if constant pool is merged by RedefineClasses
@@ -92,6 +120,7 @@
     // gc of constant pool instance variables
     MarkSweep::mark_and_push(cp->tags_addr());
     MarkSweep::mark_and_push(cp->cache_addr());
+    MarkSweep::mark_and_push(cp->operands_addr());
     MarkSweep::mark_and_push(cp->pool_holder_addr());
   }
 }
@@ -118,6 +147,7 @@
     // gc of constant pool instance variables
     PSParallelCompact::mark_and_push(cm, cp->tags_addr());
     PSParallelCompact::mark_and_push(cm, cp->cache_addr());
+    PSParallelCompact::mark_and_push(cm, cp->operands_addr());
     PSParallelCompact::mark_and_push(cm, cp->pool_holder_addr());
   }
 }
@@ -146,6 +176,7 @@
   }
   MarkSweep::adjust_pointer(cp->tags_addr());
   MarkSweep::adjust_pointer(cp->cache_addr());
+  MarkSweep::adjust_pointer(cp->operands_addr());
   MarkSweep::adjust_pointer(cp->pool_holder_addr());
   return size;
 }
@@ -173,6 +204,7 @@
   }
   blk->do_oop(cp->tags_addr());
   blk->do_oop(cp->cache_addr());
+  blk->do_oop(cp->operands_addr());
   blk->do_oop(cp->pool_holder_addr());
   return size;
 }
@@ -205,6 +237,8 @@
   blk->do_oop(addr);
   addr = cp->cache_addr();
   blk->do_oop(addr);
+  addr = cp->operands_addr();
+  blk->do_oop(addr);
   addr = cp->pool_holder_addr();
   blk->do_oop(addr);
   return size;
@@ -232,6 +266,7 @@
   }
   PSParallelCompact::adjust_pointer(cp->tags_addr());
   PSParallelCompact::adjust_pointer(cp->cache_addr());
+  PSParallelCompact::adjust_pointer(cp->operands_addr());
   PSParallelCompact::adjust_pointer(cp->pool_holder_addr());
   return cp->object_size();
 }
@@ -262,6 +297,8 @@
   PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
   p = cp->cache_addr();
   PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
+  p = cp->operands_addr();
+  PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
   p = cp->pool_holder_addr();
   PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
 
@@ -363,8 +400,18 @@
         st->print("signature_index=%d", cp->method_type_index_at(index));
         break;
       case JVM_CONSTANT_InvokeDynamic :
-        st->print("bootstrap_method_index=%d", cp->invoke_dynamic_bootstrap_method_ref_index_at(index));
-        st->print(" name_and_type_index=%d", cp->invoke_dynamic_name_and_type_ref_index_at(index));
+        {
+          st->print("bootstrap_method_index=%d", cp->invoke_dynamic_bootstrap_method_ref_index_at(index));
+          st->print(" name_and_type_index=%d", cp->invoke_dynamic_name_and_type_ref_index_at(index));
+          int argc = cp->invoke_dynamic_argument_count_at(index);
+          if (argc > 0) {
+            for (int arg_i = 0; arg_i < argc; arg_i++) {
+              int arg = cp->invoke_dynamic_argument_index_at(index, arg_i);
+              st->print((arg_i == 0 ? " arguments={%d" : ", %d"), arg);
+            }
+            st->print("}");
+          }
+        }
         break;
       default:
         ShouldNotReachHere();
@@ -381,6 +428,7 @@
   st->print("constant pool [%d]", cp->length());
   if (cp->has_pseudo_string()) st->print("/pseudo_string");
   if (cp->has_invokedynamic()) st->print("/invokedynamic");
+  if (cp->operands() != NULL)  st->print("/operands[%d]", cp->operands()->length());
   cp->print_address_on(st);
   st->print(" for ");
   cp->pool_holder()->print_value_on(st);
@@ -440,6 +488,10 @@
       guarantee(cp->cache()->is_perm(),              "should be in permspace");
       guarantee(cp->cache()->is_constantPoolCache(), "should be constant pool cache");
     }
+    if (cp->operands() != NULL) {
+      guarantee(cp->operands()->is_perm(),  "should be in permspace");
+      guarantee(cp->operands()->is_typeArray(), "should be type array");
+    }
     if (cp->pool_holder() != NULL) {
       // Note: pool_holder() can be NULL in temporary constant pools
       // used during constant pool merging
--- a/src/share/vm/oops/constantPoolKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constantPoolKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_CONSTANTPOOLKLASS_HPP
+#define SHARE_VM_OOPS_CONSTANTPOOLKLASS_HPP
+
+#include "oops/arrayKlass.hpp"
+#include "oops/instanceKlass.hpp"
+
 // A constantPoolKlass is the klass of a constantPoolOop
 
 class constantPoolKlass : public Klass {
@@ -79,3 +85,5 @@
   static void preload_and_initialize_all_classes(oop constant_pool, TRAPS);
 #endif
 };
+
+#endif // SHARE_VM_OOPS_CONSTANTPOOLKLASS_HPP
--- a/src/share/vm/oops/constantPoolOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constantPoolOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_constantPoolOop.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/fieldType.hpp"
+#include "runtime/init.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframe.hpp"
 
 void constantPoolOopDesc::set_flag_at(FlagBit fb) {
   const int MAX_STATE_CHANGES = 2;
@@ -265,10 +279,9 @@
   int i = which;
   if (!uncached && cache() != NULL) {
     if (constantPoolCacheOopDesc::is_secondary_index(which)) {
-      // Invokedynamic indexes are always processed in native order
-      // so there is no question of reading a native u2 in Java order here.
+      // Invokedynamic index.
       int pool_index = cache()->main_entry_at(which)->constant_pool_index();
-      if (tag_at(pool_index).is_invoke_dynamic())
+      if (!AllowTransitionalJSR292 || tag_at(pool_index).is_invoke_dynamic())
         pool_index = invoke_dynamic_name_and_type_ref_index_at(pool_index);
       assert(tag_at(pool_index).is_name_and_type(), "");
       return pool_index;
@@ -276,11 +289,17 @@
     // change byte-ordering and go via cache
     i = remap_instruction_operand_from_cache(which);
   } else {
-    if (tag_at(which).is_name_and_type())
+    if (AllowTransitionalJSR292 && tag_at(which).is_name_and_type())
       // invokedynamic index is a simple name-and-type
       return which;
+    if (tag_at(which).is_invoke_dynamic()) {
+      int pool_index = invoke_dynamic_name_and_type_ref_index_at(which);
+      assert(tag_at(pool_index).is_name_and_type(), "");
+      return pool_index;
+    }
   }
   assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
+  assert(!tag_at(i).is_invoke_dynamic(), "Must be handled above");
   jint ref_index = *int_at_addr(i);
   return extract_high_short_from_int(ref_index);
 }
@@ -394,18 +413,61 @@
   }
 }
 
+// A resolved constant value in the CP cache is represented as a non-null
+// value.  As a special case, this value can be a 'systemObjArray'
+// which masks an exception object to throw.
+// This allows a MethodHandle constant reference to throw a consistent
+// exception every time, if it fails to resolve.
+static oop decode_exception_from_f1(oop result_oop, TRAPS) {
+  if (result_oop->klass() != Universe::systemObjArrayKlassObj())
+    return result_oop;
+
+  // Special cases here:  Masked null, saved exception.
+  objArrayOop sys_array = (objArrayOop) result_oop;
+  assert(sys_array->length() == 1, "bad system array");
+  if (sys_array->length() == 1) {
+    THROW_OOP_(sys_array->obj_at(0), NULL);
+  }
+  return NULL;
+}
+
 oop constantPoolOopDesc::resolve_constant_at_impl(constantPoolHandle this_oop, int index, int cache_index, TRAPS) {
   oop result_oop = NULL;
+  Handle throw_exception;
+
+  if (cache_index == _possible_index_sentinel) {
+    // It is possible that this constant is one which is cached in the CP cache.
+    // We'll do a linear search.  This should be OK because this usage is rare.
+    assert(index > 0, "valid index");
+    constantPoolCacheOop cache = this_oop()->cache();
+    for (int i = 0, len = cache->length(); i < len; i++) {
+      ConstantPoolCacheEntry* cpc_entry = cache->entry_at(i);
+      if (!cpc_entry->is_secondary_entry() && cpc_entry->constant_pool_index() == index) {
+        // Switch the query to use this CPC entry.
+        cache_index = i;
+        index = _no_index_sentinel;
+        break;
+      }
+    }
+    if (cache_index == _possible_index_sentinel)
+      cache_index = _no_index_sentinel;  // not found
+  }
+  assert(cache_index == _no_index_sentinel || cache_index >= 0, "");
+  assert(index == _no_index_sentinel || index >= 0, "");
+
   if (cache_index >= 0) {
-    assert(index < 0, "only one kind of index at a time");
+    assert(index == _no_index_sentinel, "only one kind of index at a time");
     ConstantPoolCacheEntry* cpc_entry = this_oop->cache()->entry_at(cache_index);
     result_oop = cpc_entry->f1();
     if (result_oop != NULL) {
-      return result_oop;  // that was easy...
+      return decode_exception_from_f1(result_oop, THREAD);
+      // That was easy...
     }
     index = cpc_entry->constant_pool_index();
   }
 
+  jvalue prim_value;  // temp used only in a few cases below
+
   int tag_value = this_oop->tag_at(index).value();
   switch (tag_value) {
 
@@ -449,9 +511,14 @@
       KlassHandle klass(THREAD, this_oop->pool_holder());
       Handle value = SystemDictionary::link_method_handle_constant(klass, ref_kind,
                                                                    callee, name, signature,
-                                                                   CHECK_NULL);
+                                                                   THREAD);
+      if (HAS_PENDING_EXCEPTION) {
+        throw_exception = Handle(THREAD, PENDING_EXCEPTION);
+        CLEAR_PENDING_EXCEPTION;
+        break;
+      }
       result_oop = value();
-      // FIXME: Uniquify errors, using SystemDictionary::find_resolution_error.
+      assert(result_oop != NULL, "");
       break;
     }
 
@@ -468,20 +535,36 @@
                                                                klass,
                                                                false,
                                                                ignore_is_on_bcp,
-                                                               CHECK_NULL);
+                                                               THREAD);
+      if (HAS_PENDING_EXCEPTION) {
+        throw_exception = Handle(THREAD, PENDING_EXCEPTION);
+        CLEAR_PENDING_EXCEPTION;
+        break;
+      }
       result_oop = value();
-      // FIXME: Uniquify errors, using SystemDictionary::find_resolution_error.
+      assert(result_oop != NULL, "");
       break;
     }
 
-    /* maybe some day
   case JVM_CONSTANT_Integer:
+    prim_value.i = this_oop->int_at(index);
+    result_oop = java_lang_boxing_object::create(T_INT, &prim_value, CHECK_NULL);
+    break;
+
   case JVM_CONSTANT_Float:
+    prim_value.f = this_oop->float_at(index);
+    result_oop = java_lang_boxing_object::create(T_FLOAT, &prim_value, CHECK_NULL);
+    break;
+
   case JVM_CONSTANT_Long:
+    prim_value.j = this_oop->long_at(index);
+    result_oop = java_lang_boxing_object::create(T_LONG, &prim_value, CHECK_NULL);
+    break;
+
   case JVM_CONSTANT_Double:
-    result_oop = java_lang_boxing_object::create(...);
+    prim_value.d = this_oop->double_at(index);
+    result_oop = java_lang_boxing_object::create(T_DOUBLE, &prim_value, CHECK_NULL);
     break;
-    */
 
   default:
     DEBUG_ONLY( tty->print_cr("*** %p: tag at CP[%d/%d] = %d",
@@ -492,18 +575,31 @@
 
   if (cache_index >= 0) {
     // Cache the oop here also.
-    Handle result(THREAD, result_oop);
+    if (throw_exception.not_null()) {
+      objArrayOop sys_array = oopFactory::new_system_objArray(1, CHECK_NULL);
+      sys_array->obj_at_put(0, throw_exception());
+      result_oop = sys_array;
+      throw_exception = Handle();  // be tidy
+    }
+    Handle result_handle(THREAD, result_oop);
     result_oop = NULL;  // safety
     ObjectLocker ol(this_oop, THREAD);
     ConstantPoolCacheEntry* cpc_entry = this_oop->cache()->entry_at(cache_index);
-    oop result_oop2 = cpc_entry->f1();
-    if (result_oop2 != NULL) {
-      // Race condition:  May already be filled in while we were trying to lock.
-      return result_oop2;
+    result_oop = cpc_entry->f1();
+    // Benign race condition:  f1 may already be filled in while we were trying to lock.
+    // The important thing here is that all threads pick up the same result.
+    // It doesn't matter which racing thread wins, as long as only one
+    // result is used by all threads, and all future queries.
+    // That result may be either a resolved constant or a failure exception.
+    if (result_oop == NULL) {
+      result_oop = result_handle();
+      cpc_entry->set_f1(result_oop);
     }
-    cpc_entry->set_f1(result());
-    return result();
+    return decode_exception_from_f1(result_oop, THREAD);
   } else {
+    if (throw_exception.not_null()) {
+      THROW_HANDLE_(throw_exception, NULL);
+    }
     return result_oop;
   }
 }
@@ -621,6 +717,7 @@
 
 void constantPoolOopDesc::shared_tags_iterate(OopClosure* closure) {
   closure->do_oop(tags_addr());
+  closure->do_oop(operands_addr());
 }
 
 
@@ -838,13 +935,19 @@
 
   case JVM_CONSTANT_InvokeDynamic:
   {
-    int k1 = invoke_dynamic_bootstrap_method_ref_index_at(index1);
-    int k2 = cp2->invoke_dynamic_bootstrap_method_ref_index_at(index2);
-    if (k1 == k2) {
-      int i1 = invoke_dynamic_name_and_type_ref_index_at(index1);
-      int i2 = cp2->invoke_dynamic_name_and_type_ref_index_at(index2);
-      if (i1 == i2) {
-        return true;
+    int op_count = multi_operand_count_at(index1);
+    if (op_count == cp2->multi_operand_count_at(index2)) {
+      bool all_equal = true;
+      for (int op_i = 0; op_i < op_count; op_i++) {
+        int k1 = multi_operand_ref_at(index1, op_i);
+        int k2 = cp2->multi_operand_ref_at(index2, op_i);
+        if (k1 != k2) {
+          all_equal = false;
+          break;
+        }
+      }
+      if (all_equal) {
+        return true;           // got through loop; all elements equal
       }
     }
   } break;
@@ -881,6 +984,25 @@
 } // end compare_entry_to()
 
 
+// Grow this->operands() to the indicated length, unless it is already at least that long.
+void constantPoolOopDesc::multi_operand_buffer_grow(int min_length, TRAPS) {
+  int old_length = multi_operand_buffer_fill_pointer();
+  if (old_length >= min_length)  return;
+  int new_length = min_length;
+  assert(new_length > _multi_operand_buffer_fill_pointer_offset, "");
+  typeArrayHandle new_operands = oopFactory::new_permanent_intArray(new_length, CHECK);
+  if (operands() == NULL) {
+    new_operands->int_at_put(_multi_operand_buffer_fill_pointer_offset, old_length);
+  } else {
+    // copy fill pointer and everything else
+    for (int i = 0; i < old_length; i++) {
+      new_operands->int_at_put(i, operands()->int_at(i));
+    }
+  }
+  set_operands(new_operands());
+}
+
+
 // Copy this constant pool's entries at start_i to end_i (inclusive)
 // to the constant pool to_cp's entries starting at to_i. A total of
 // (end_i - start_i) + 1 entries are copied.
@@ -889,6 +1011,13 @@
 
   int dest_i = to_i;  // leave original alone for debug purposes
 
+  if (operands() != NULL) {
+    // pre-grow the target CP's operand buffer
+    int nops = this->multi_operand_buffer_fill_pointer();
+    nops   += to_cp->multi_operand_buffer_fill_pointer();
+    to_cp->multi_operand_buffer_grow(nops, CHECK);
+  }
+
   for (int src_i = start_i; src_i <= end_i; /* see loop bottom */ ) {
     copy_entry_to(src_i, to_cp, dest_i, CHECK);
 
@@ -1037,9 +1166,26 @@
 
   case JVM_CONSTANT_InvokeDynamic:
   {
+    int op_count = multi_operand_count_at(from_i);
+    int fillp = to_cp->multi_operand_buffer_fill_pointer();
+    int to_op_base = fillp - _multi_operand_count_offset;  // fillp is count offset; get to base
+    to_cp->multi_operand_buffer_grow(to_op_base + op_count, CHECK);
+    to_cp->operands()->int_at_put(fillp++, op_count);
+    assert(fillp == to_op_base + _multi_operand_base_offset, "just wrote count, will now write args");
+    for (int op_i = 0; op_i < op_count; op_i++) {
+      int op = multi_operand_ref_at(from_i, op_i);
+      to_cp->operands()->int_at_put(fillp++, op);
+    }
+    assert(fillp <= to_cp->operands()->length(), "oob");
+    to_cp->set_multi_operand_buffer_fill_pointer(fillp);
+    to_cp->invoke_dynamic_at_put(to_i, to_op_base, op_count);
+#ifdef ASSERT
     int k1 = invoke_dynamic_bootstrap_method_ref_index_at(from_i);
     int k2 = invoke_dynamic_name_and_type_ref_index_at(from_i);
-    to_cp->invoke_dynamic_at_put(to_i, k1, k2);
+    int k3 = invoke_dynamic_argument_count_at(from_i);
+    assert(to_cp->check_invoke_dynamic_at(to_i, k1, k2, k3),
+           "indy structure is OK");
+#endif //ASSERT
   } break;
 
   // Invalid is used as the tag for the second constant pool entry
@@ -1257,8 +1403,11 @@
     case JVM_CONSTANT_Methodref:
     case JVM_CONSTANT_InterfaceMethodref:
     case JVM_CONSTANT_NameAndType:
+      return 5;
+
     case JVM_CONSTANT_InvokeDynamic:
-      return 5;
+      // u1 tag, u2 bsm, u2 nt, u2 argc, u2 argv[argc]
+      return 7 + 2 * invoke_dynamic_argument_count_at(idx);
 
     case JVM_CONSTANT_Long:
     case JVM_CONSTANT_Double:
@@ -1475,9 +1624,15 @@
         *bytes = JVM_CONSTANT_InvokeDynamic;
         idx1 = invoke_dynamic_bootstrap_method_ref_index_at(idx);
         idx2 = invoke_dynamic_name_and_type_ref_index_at(idx);
+        int argc = invoke_dynamic_argument_count_at(idx);
         Bytes::put_Java_u2((address) (bytes+1), idx1);
         Bytes::put_Java_u2((address) (bytes+3), idx2);
-        DBG(printf("JVM_CONSTANT_InvokeDynamic: %hd %hd", idx1, idx2));
+        Bytes::put_Java_u2((address) (bytes+5), argc);
+        for (int arg_i = 0; arg_i < argc; arg_i++) {
+          int arg = invoke_dynamic_argument_index_at(idx, arg_i);
+          Bytes::put_Java_u2((address) (bytes+7+2*arg_i), arg);
+        }
+        DBG(printf("JVM_CONSTANT_InvokeDynamic: %hd %hd [%d]", idx1, idx2, argc));
         break;
       }
     }
--- a/src/share/vm/oops/constantPoolOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/constantPoolOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,23 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
+#define SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
+
+#include "oops/arrayOop.hpp"
+#include "oops/cpCacheOop.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "utilities/constantTag.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 // A constantPool is an array containing class constants as described in the
 // class file.
 //
@@ -41,6 +58,7 @@
   typeArrayOop         _tags; // the tag array describing the constant pool's contents
   constantPoolCacheOop _cache;         // the cache holding interpreter runtime information
   klassOop             _pool_holder;   // the corresponding class
+  typeArrayOop         _operands;      // for variable-sized (InvokeDynamic) nodes, usually empty
   int                  _flags;         // a few header bits to describe contents for GC
   int                  _length; // number of elements in the array
   volatile bool        _is_conc_safe; // if true, safe for concurrent
@@ -52,6 +70,8 @@
   void tag_at_put(int which, jbyte t)          { tags()->byte_at_put(which, t); }
   void release_tag_at_put(int which, jbyte t)  { tags()->release_byte_at_put(which, t); }
 
+  void set_operands(typeArrayOop operands)     { oop_store_without_check((oop*)&_operands, operands); }
+
   enum FlagBit {
     FB_has_invokedynamic = 1,
     FB_has_pseudo_string = 2
@@ -67,6 +87,7 @@
   intptr_t* base() const { return (intptr_t*) (((char*) this) + sizeof(constantPoolOopDesc)); }
   oop* tags_addr()       { return (oop*)&_tags; }
   oop* cache_addr()      { return (oop*)&_cache; }
+  oop* operands_addr()   { return (oop*)&_operands; }
 
   oop* obj_at_addr(int which) const {
     assert(is_within_bounds(which), "index out of bounds");
@@ -95,6 +116,7 @@
 
  public:
   typeArrayOop tags() const                 { return _tags; }
+  typeArrayOop operands() const             { return _operands; }
 
   bool has_pseudo_string() const            { return flag_at(FB_has_pseudo_string); }
   bool has_invokedynamic() const            { return flag_at(FB_has_invokedynamic); }
@@ -113,6 +135,7 @@
   // Assembly code support
   static int tags_offset_in_bytes()         { return offset_of(constantPoolOopDesc, _tags); }
   static int cache_offset_in_bytes()        { return offset_of(constantPoolOopDesc, _cache); }
+  static int operands_offset_in_bytes()     { return offset_of(constantPoolOopDesc, _operands); }
   static int pool_holder_offset_in_bytes()  { return offset_of(constantPoolOopDesc, _pool_holder); }
 
   // Storing constants
@@ -156,10 +179,28 @@
     *int_at_addr(which) = ref_index;
   }
 
-  void invoke_dynamic_at_put(int which, int bootstrap_method_index, int name_and_type_index) {
+  void invoke_dynamic_at_put(int which, int operand_base, int operand_count) {
     tag_at_put(which, JVM_CONSTANT_InvokeDynamic);
-    *int_at_addr(which) = ((jint) name_and_type_index<<16) | bootstrap_method_index;
+    *int_at_addr(which) = operand_base;  // this is the real information
   }
+#ifdef ASSERT
+  bool check_invoke_dynamic_at(int which,
+                               int bootstrap_method_index,
+                               int name_and_type_index,
+                               int argument_count) {
+    assert(invoke_dynamic_bootstrap_method_ref_index_at(which) == bootstrap_method_index,
+           "already stored by caller");
+    assert(invoke_dynamic_name_and_type_ref_index_at(which) == name_and_type_index,
+           "already stored by caller");
+    assert(invoke_dynamic_argument_count_at(which) == argument_count,
+           "consistent argument count");
+    if (argument_count != 0) {
+      invoke_dynamic_argument_index_at(which, 0);
+      invoke_dynamic_argument_index_at(which, argument_count - 1);
+    }
+    return true;
+  }
+#endif //ASSERT
 
   // Temporary until actual use
   void unresolved_string_at_put(int which, symbolOop s) {
@@ -401,27 +442,93 @@
     int sym = method_type_index_at(which);
     return symbol_at(sym);
   }
+
+ private:
+  // some nodes (InvokeDynamic) have a variable number of operands, each a u2 value
+  enum { _multi_operand_count_offset = -1,
+         _multi_operand_base_offset  = 0,
+         _multi_operand_buffer_fill_pointer_offset = 0  // shared at front of operands array
+  };
+  int multi_operand_buffer_length() {
+    return operands() == NULL ? 0 : operands()->length();
+  }
+  int multi_operand_buffer_fill_pointer() {
+    return operands() == NULL
+      ? _multi_operand_buffer_fill_pointer_offset + 1
+      : operands()->int_at(_multi_operand_buffer_fill_pointer_offset);
+  }
+  void multi_operand_buffer_grow(int min_length, TRAPS);
+  void set_multi_operand_buffer_fill_pointer(int fillp) {
+    assert(operands() != NULL, "");
+    operands()->int_at_put(_multi_operand_buffer_fill_pointer_offset, fillp);
+  }
+  int multi_operand_base_at(int which) {
+    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
+    int op_base = *int_at_addr(which);
+    assert(op_base > _multi_operand_buffer_fill_pointer_offset, "Corrupted operand base");
+    return op_base;
+  }
+  int multi_operand_count_at(int which) {
+    int op_base = multi_operand_base_at(which);
+    assert((uint)(op_base + _multi_operand_count_offset) < (uint)operands()->length(), "oob");
+    int count = operands()->int_at(op_base + _multi_operand_count_offset);
+    return count;
+  }
+  int multi_operand_ref_at(int which, int i) {
+    int op_base = multi_operand_base_at(which);
+    assert((uint)i < (uint)multi_operand_count_at(which), "oob");
+    assert((uint)(op_base + _multi_operand_base_offset + i) < (uint)operands()->length(), "oob");
+    return operands()->int_at(op_base + _multi_operand_base_offset + i);
+  }
+  void set_multi_operand_ref_at(int which, int i, int ref) {
+    DEBUG_ONLY(multi_operand_ref_at(which, i));  // trigger asserts
+    int op_base = multi_operand_base_at(which);
+    operands()->int_at_put(op_base + _multi_operand_base_offset + i, ref);
+  }
+
+ public:
+  // layout of InvokeDynamic:
+  enum {
+         _indy_bsm_offset  = 0,  // CONSTANT_MethodHandle bsm
+         _indy_nt_offset   = 1,  // CONSTANT_NameAndType descr
+         _indy_argc_offset = 2,  // u2 argc
+         _indy_argv_offset = 3   // u2 argv[argc]
+  };
   int invoke_dynamic_bootstrap_method_ref_index_at(int which) {
     assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
-    jint ref_index = *int_at_addr(which);
-    return extract_low_short_from_int(ref_index);
+    return multi_operand_ref_at(which, _indy_bsm_offset);
   }
   int invoke_dynamic_name_and_type_ref_index_at(int which) {
     assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
-    jint ref_index = *int_at_addr(which);
-    return extract_high_short_from_int(ref_index);
+    return multi_operand_ref_at(which, _indy_nt_offset);
+  }
+  int invoke_dynamic_argument_count_at(int which) {
+    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
+    int argc = multi_operand_ref_at(which, _indy_argc_offset);
+    DEBUG_ONLY(int op_count = multi_operand_count_at(which));
+    assert(_indy_argv_offset + argc == op_count, "consistent inner and outer counts");
+    return argc;
+  }
+  int invoke_dynamic_argument_index_at(int which, int j) {
+    assert((uint)j < (uint)invoke_dynamic_argument_count_at(which), "oob");
+    return multi_operand_ref_at(which, _indy_argv_offset + j);
   }
 
   // The following methods (name/signature/klass_ref_at, klass_ref_at_noresolve,
   // name_and_type_ref_index_at) all expect to be passed indices obtained
-  // directly from the bytecode, and extracted according to java byte order.
+  // directly from the bytecode.
   // If the indices are meant to refer to fields or methods, they are
-  // actually potentially byte-swapped, rewritten constant pool cache indices.
+  // actually rewritten constant pool cache indices.
   // The routine remap_instruction_operand_from_cache manages the adjustment
   // of these values back to constant pool indices.
 
   // There are also "uncached" versions which do not adjust the operand index; see below.
 
+  // FIXME: Consider renaming these with a prefix "cached_" to make the distinction clear.
+  // In a few cases (the verifier) there are uses before a cpcache has been built,
+  // which are handled by a dynamic check in remap_instruction_operand_from_cache.
+  // FIXME: Remove the dynamic check, and adjust all callers to specify the correct mode.
+
   // Lookup for entries consisting of (klass_index, name_and_type index)
   klassOop klass_ref_at(int which, TRAPS);
   symbolOop klass_ref_at_noresolve(int which);
@@ -443,15 +550,24 @@
     resolve_string_constants_impl(h_this, CHECK);
   }
 
+ private:
+  enum { _no_index_sentinel = -1, _possible_index_sentinel = -2 };
+ public:
+
   // Resolve late bound constants.
   oop resolve_constant_at(int index, TRAPS) {
     constantPoolHandle h_this(THREAD, this);
-    return resolve_constant_at_impl(h_this, index, -1, THREAD);
+    return resolve_constant_at_impl(h_this, index, _no_index_sentinel, THREAD);
   }
 
   oop resolve_cached_constant_at(int cache_index, TRAPS) {
     constantPoolHandle h_this(THREAD, this);
-    return resolve_constant_at_impl(h_this, -1, cache_index, THREAD);
+    return resolve_constant_at_impl(h_this, _no_index_sentinel, cache_index, THREAD);
+  }
+
+  oop resolve_possibly_cached_constant_at(int pool_index, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    return resolve_constant_at_impl(h_this, pool_index, _possible_index_sentinel, THREAD);
   }
 
   // Klass name matches name at offset
@@ -484,7 +600,7 @@
   static klassOop klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int which, TRAPS);
 
   // Routines currently used for annotations (only called by jvm.cpp) but which might be used in the
-  // future by other Java code. These take constant pool indices rather than possibly-byte-swapped
+  // future by other Java code. These take constant pool indices rather than
   // constant pool cache indices as do the peer methods above.
   symbolOop uncached_klass_ref_at_noresolve(int which);
   symbolOop uncached_name_ref_at(int which)                 { return impl_name_ref_at(which, true); }
@@ -666,3 +782,5 @@
     delete _buckets;
   }
 }; // End SymbolHashMap class
+
+#endif // SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
--- a/src/share/vm/oops/cpCacheKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/cpCacheKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,24 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cpCacheKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/permGen.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/cpCacheKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "memory/cardTableRS.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 
 int constantPoolCacheKlass::oop_size(oop obj) const {
--- a/src/share/vm/oops/cpCacheKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/cpCacheKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_CPCACHEKLASS_HPP
+#define SHARE_VM_OOPS_CPCACHEKLASS_HPP
+
+#include "oops/arrayKlass.hpp"
+#include "oops/cpCacheOop.hpp"
+#include "oops/instanceKlass.hpp"
+
 class constantPoolCacheKlass: public Klass {
   juint    _alloc_size;        // allocation profiling support
  public:
@@ -69,3 +76,5 @@
   const char* internal_name() const;
   void oop_verify_on(oop obj, outputStream* st);
 };
+
+#endif // SHARE_VM_OOPS_CPCACHEKLASS_HPP
--- a/src/share/vm/oops/cpCacheOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/cpCacheOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_cpCacheOop.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/rewriter.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/cpCacheOop.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/handles.inline.hpp"
 
 
 // Implememtation of ConstantPoolCacheEntry
@@ -87,6 +95,19 @@
   OrderAccess::release_store_ptr(&_indices, _indices | ((u_char)code << 24));
 }
 
+// Atomically sets f1 if it is still NULL, otherwise it keeps the
+// current value.
+void ConstantPoolCacheEntry::set_f1_if_null_atomic(oop f1) {
+    // Use barriers as in oop_store
+    HeapWord* f1_addr = (HeapWord*) &_f1;
+    update_barrier_set_pre(f1_addr, f1);
+    void* result = Atomic::cmpxchg_ptr(f1, f1_addr, NULL);
+    bool success = (result == NULL);
+    if (success) {
+      update_barrier_set((void*) f1_addr, f1);
+    }
+  }
+
 #ifdef ASSERT
 // It is possible to have two different dummy methodOops created
 // when the resolve code for invoke interface executes concurrently
@@ -165,7 +186,12 @@
       }
       assert(method->can_be_statically_bound(), "must be a MH invoker method");
       assert(AllowTransitionalJSR292 || _f2 >= constantPoolOopDesc::CPCACHE_INDEX_TAG, "BSM index initialized");
-      set_f1(method());
+      // SystemDictionary::find_method_handle_invoke only caches
+      // methods which signature classes are on the boot classpath,
+      // otherwise the newly created method is returned.  To avoid
+      // races in that case we store the first one coming in into the
+      // cp-cache atomically if it's still unset.
+      set_f1_if_null_atomic(method());
       needs_vfinal_flag = false;  // _f2 is not an oop
       assert(!is_vfinal(), "f2 not an oop");
       byte_no = 1;  // coordinate this with bytecode_number & is_resolved
--- a/src/share/vm/oops/cpCacheOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/cpCacheOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_CPCACHEOOP_HPP
+#define SHARE_VM_OOPS_CPCACHEOOP_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+#include "oops/arrayOop.hpp"
+#include "utilities/array.hpp"
+
 // A ConstantPoolCacheEntry describes an individual entry of the constant
 // pool cache. There's 2 principal kinds of entries: field entries for in-
 // stance & static field access, and method entries for invokes. Some of
@@ -130,6 +138,7 @@
     assert(existing_f1 == NULL || existing_f1 == f1, "illegal field change");
     oop_store(&_f1, f1);
   }
+  void set_f1_if_null_atomic(oop f1);
   void set_f2(intx f2)                           { assert(_f2 == 0    || _f2 == f2, "illegal field change"); _f2 = f2; }
   int as_flags(TosState state, bool is_final, bool is_vfinal, bool is_volatile,
                bool is_method_interface, bool is_method);
@@ -318,7 +327,9 @@
 
   // Sizing
   debug_only(friend class ClassVerifier;)
+ public:
   int length() const                             { return _length; }
+ private:
   void set_length(int length)                    { _length = length; }
 
   static int header_size()                       { return sizeof(constantPoolCacheOopDesc) / HeapWordSize; }
@@ -403,3 +414,5 @@
   void adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
                              int methods_length, bool * trace_name_printed);
 };
+
+#endif // SHARE_VM_OOPS_CPCACHEOOP_HPP
--- a/src/share/vm/oops/generateOopMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/generateOopMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "oops/generateOopMap.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/relocator.hpp"
+#include "utilities/bitMap.inline.hpp"
+
 //
 //
 // Compute stack layouts for each instruction in method.
@@ -85,9 +95,6 @@
 //
 // (Note this comment is borrowed form the original author of the algorithm)
 
-#include "incls/_precompiled.incl"
-#include "incls/_generateOopMap.cpp.incl"
-
 // ComputeCallStack
 //
 // Specialization of SignatureIterator - compute the effects of a call
@@ -1254,7 +1261,7 @@
       case Bytecodes::_invokestatic:
       case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
-        int idx = currentBC->has_index_u4() ? currentBC->get_index_u4() : currentBC->get_index_u2();
+        int idx = currentBC->has_index_u4() ? currentBC->get_index_u4() : currentBC->get_index_u2_cpcache();
         constantPoolOop cp    = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
@@ -1286,7 +1293,7 @@
       case Bytecodes::_invokestatic:
       case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
-        int idx = currentBC->has_index_u4() ? currentBC->get_index_u4() : currentBC->get_index_u2();
+        int idx = currentBC->has_index_u4() ? currentBC->get_index_u4() : currentBC->get_index_u2_cpcache();
         constantPoolOop cp    = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
@@ -1356,8 +1363,8 @@
 
     case Bytecodes::_ldc2_w:            ppush(vvCTS);               break;
 
-    case Bytecodes::_ldc:               do_ldc(itr->get_index(),    itr->bci()); break;
-    case Bytecodes::_ldc_w:             do_ldc(itr->get_index_u2(), itr->bci()); break;
+    case Bytecodes::_ldc:               // fall through:
+    case Bytecodes::_ldc_w:             do_ldc(itr->bci());         break;
 
     case Bytecodes::_iload:
     case Bytecodes::_fload:             ppload(vCTS, itr->get_index()); break;
@@ -1829,9 +1836,16 @@
 
 
 
-void GenerateOopMap::do_ldc(int idx, int bci) {
+void GenerateOopMap::do_ldc(int bci) {
+  Bytecode_loadconstant* ldc = Bytecode_loadconstant_at(method(), bci);
   constantPoolOop cp  = method()->constants();
-  CellTypeState   cts = cp->is_pointer_entry(idx) ? CellTypeState::make_line_ref(bci) : valCTS;
+  BasicType       bt  = ldc->result_type();
+  CellTypeState   cts = (bt == T_OBJECT) ? CellTypeState::make_line_ref(bci) : valCTS;
+  // Make sure bt==T_OBJECT is the same as old code (is_pointer_entry).
+  // Note that CONSTANT_MethodHandle entries are u2 index pairs, not pointer-entries,
+  // and they are processed by _fast_aldc and the CP cache.
+  assert((ldc->has_cache_index() || cp->is_pointer_entry(ldc->pool_index()))
+         ? (bt == T_OBJECT) : true, "expected object type");
   ppush1(cts);
 }
 
--- a/src/share/vm/oops/generateOopMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/generateOopMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_GENERATEOOPMAP_HPP
+#define SHARE_VM_OOPS_GENERATEOOPMAP_HPP
+
+#include "interpreter/bytecodeStream.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oopsHierarchy.hpp"
+#include "runtime/signature.hpp"
+
 // Forward definition
 class MethodOopMap;
 class GenerateOopMap;
@@ -389,7 +399,7 @@
   void  pp                                  (CellTypeState *in, CellTypeState *out);
   void  pp_new_ref                          (CellTypeState *in, int bci);
   void  ppdupswap                           (int poplen, const char *out);
-  void  do_ldc                              (int idx, int bci);
+  void  do_ldc                              (int bci);
   void  do_astore                           (int idx);
   void  do_jsr                              (int delta);
   void  do_field                            (int is_get, int is_static, int idx, int bci);
@@ -557,3 +567,5 @@
 
   // Call compute_map(CHECK) to generate info.
 };
+
+#endif // SHARE_VM_OOPS_GENERATEOOPMAP_HPP
--- a/src/share/vm/oops/instanceKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,56 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_instanceKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/verifier.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "interpreter/rewriter.hpp"
+#include "jvmtifiles/jvmti.h"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/permGen.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayKlassKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "services/threadService.hpp"
+#include "utilities/dtrace.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1OopClosures.inline.hpp"
+#include "gc_implementation/g1/g1RemSet.inline.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Compiler.hpp"
+#endif
 
 #ifdef DTRACE_ENABLED
 
--- a/src/share/vm/oops/instanceKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_INSTANCEKLASS_HPP
+#define SHARE_VM_OOPS_INSTANCEKLASS_HPP
+
+#include "oops/constMethodOop.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/klassVtable.hpp"
+#include "oops/objArrayOop.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/os.hpp"
+#include "utilities/accessFlags.hpp"
+#include "utilities/bitMap.inline.hpp"
+
 // An instanceKlass is the VM level representation of a Java class.
 // It contains all information needed for at class at execution runtime.
 
@@ -1017,3 +1031,5 @@
   // of the klass. Returns NULL if there are no more previous versions.
   PreviousVersionInfo* next_previous_version();
 };
+
+#endif // SHARE_VM_OOPS_INSTANCEKLASS_HPP
--- a/src/share/vm/oops/instanceKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,32 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_instanceKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/gcLocker.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceKlassKlass.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/objArrayKlassKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/symbolOop.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "memory/cardTableRS.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 klassOop instanceKlassKlass::create_klass(TRAPS) {
   instanceKlassKlass o;
--- a/src/share/vm/oops/instanceKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_INSTANCEKLASSKLASS_HPP
+#define SHARE_VM_OOPS_INSTANCEKLASSKLASS_HPP
+
+#include "oops/klassKlass.hpp"
+
 // An instanceKlassKlass is the klass of an instanceKlass
 
 class instanceKlassKlass : public klassKlass {
@@ -83,3 +88,5 @@
   bool oop_partially_loaded(oop obj) const;
   void oop_set_partially_loaded(oop obj);
 };
+
+#endif // SHARE_VM_OOPS_INSTANCEKLASSKLASS_HPP
--- a/src/share/vm/oops/instanceOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,7 +22,7 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_instanceOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/instanceOop.hpp"
 
 // <<this page is intentionally left blank>>
--- a/src/share/vm/oops/instanceOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_INSTANCEOOP_HPP
+#define SHARE_VM_OOPS_INSTANCEOOP_HPP
+
+#include "oops/oop.hpp"
+
 // An instanceOop is an instance of a Java Class
 // Evaluating "new HashTable()" will create an instanceOop.
 
@@ -43,3 +48,5 @@
             (offset-base_in_bytes) < nonstatic_field_size * heapOopSize);
   }
 };
+
+#endif // SHARE_VM_OOPS_INSTANCEOOP_HPP
--- a/src/share/vm/oops/instanceRefKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceRefKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,27 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_instanceRefKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "oops/instanceRefKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "utilities/preserveException.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1OopClosures.inline.hpp"
+#include "gc_implementation/g1/g1RemSet.inline.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 template <class T>
 static void specialized_oop_follow_contents(instanceRefKlass* ref, oop obj) {
--- a/src/share/vm/oops/instanceRefKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/instanceRefKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_INSTANCEREFKLASS_HPP
+#define SHARE_VM_OOPS_INSTANCEREFKLASS_HPP
+
+#include "oops/instanceKlass.hpp"
+
 // An instanceRefKlass is a specialized instanceKlass for Java
 // classes that are subclasses of java/lang/ref/Reference.
 //
@@ -93,3 +98,5 @@
   // Verification
   void oop_verify_on(oop obj, outputStream* st);
 };
+
+#endif // SHARE_VM_OOPS_INSTANCEREFKLASS_HPP
--- a/src/share/vm/oops/klass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_klass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klass.inline.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/atomic.hpp"
 
 
 bool Klass::is_subclass_of(klassOop k) const {
--- a/src/share/vm/oops/klass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,24 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_KLASS_HPP
+#define SHARE_VM_OOPS_KLASS_HPP
+
+#include "memory/genOopClosures.hpp"
+#include "memory/iterator.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/specialized_oop_closures.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/klassPS.hpp"
+#include "oops/oop.hpp"
+#include "runtime/orderAccess.hpp"
+#include "utilities/accessFlags.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp"
+#include "gc_implementation/g1/g1OopClosures.hpp"
+#include "gc_implementation/parNew/parOopClosures.hpp"
+#endif
+
 // A Klass is the part of the klassOop that provides:
 //  1: language level class object (method dictionary etc.)
 //  2: provide vm dispatch behavior for the object
@@ -792,3 +810,5 @@
   void verify_vtable_index(int index);
 #endif
 };
+
+#endif // SHARE_VM_OOPS_KLASS_HPP
--- a/src/share/vm/oops/klass.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klass.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,7 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_KLASS_INLINE_HPP
+#define SHARE_VM_OOPS_KLASS_INLINE_HPP
+
+#include "oops/klass.hpp"
+#include "oops/markOop.hpp"
+
 inline void Klass::set_prototype_header(markOop header) {
   assert(!header->has_bias_pattern() || oop_is_instance(), "biased locking currently only supported for Java instances");
   _prototype_header = header;
 }
+
+#endif // SHARE_VM_OOPS_KLASS_INLINE_HPP
--- a/src/share/vm/oops/klassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,28 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_klassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/permGen.hpp"
+#include "oops/constantPoolKlass.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/klassKlass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/symbolKlass.hpp"
+#include "oops/symbolOop.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "runtime/handles.inline.hpp"
+#ifndef SERIALGC
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 int klassKlass::oop_size(oop obj) const {
   assert (obj->is_klass(), "must be a klassOop");
--- a/src/share/vm/oops/klassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_KLASSKLASS_HPP
+#define SHARE_VM_OOPS_KLASSKLASS_HPP
+
+#include "memory/oopFactory.hpp"
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+
 // A klassKlass serves as the fix point of the klass chain.
 // The klass of klassKlass is itself.
 
@@ -75,3 +82,5 @@
   const char* internal_name() const;
   void oop_verify_on(oop obj, outputStream* st);
 };
+
+#endif // SHARE_VM_OOPS_KLASSKLASS_HPP
--- a/src/share/vm/oops/klassOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klassOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,5 +22,6 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_klassOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/klassOop.hpp"
+
--- a/src/share/vm/oops/klassOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klassOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_KLASSOOP_HPP
+#define SHARE_VM_OOPS_KLASSOOP_HPP
+
+#include "oops/oop.hpp"
+
 // A klassOop is the C++ equivalent of a Java class.
 // Part of a klassOopDesc is a Klass which handle the
 // dispatching for the C++ method calls.
@@ -42,3 +47,5 @@
   // returns the Klass part containing dispatching behavior
   Klass* klass_part()                            { return (Klass*)((address)this + klass_part_offset_in_bytes()); }
 };
+
+#endif // SHARE_VM_OOPS_KLASSOOP_HPP
--- a/src/share/vm/oops/klassPS.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klassPS.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -21,8 +21,9 @@
  * questions.
  *
  */
-#ifndef KLASS_PS_H
-#define KLASS_PS_H
+
+#ifndef SHARE_VM_OOPS_KLASSPS_HPP
+#define SHARE_VM_OOPS_KLASSPS_HPP
 
   // Expands to Parallel Scavenge and Parallel Old declarations
 
@@ -52,4 +53,4 @@
 #define PARALLEL_GC_DECLS_PV
 #endif // SERIALGC
 
-#endif // KLASS_PS_H
+#endif // SHARE_VM_OOPS_KLASSPS_HPP
--- a/src/share/vm/oops/klassVtable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klassVtable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,23 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_klassVtable.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/klassVtable.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/copy.hpp"
 
 inline instanceKlass* klassVtable::ik() const {
   Klass* k = _klass()->klass_part();
--- a/src/share/vm/oops/klassVtable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/klassVtable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_KLASSVTABLE_HPP
+#define SHARE_VM_OOPS_KLASSVTABLE_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oopsHierarchy.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/growableArray.hpp"
+
 // A klassVtable abstracts the variable-length vtable that is embedded in instanceKlass
 // and arrayKlass.  klassVtable objects are used just as convenient transient accessors to the vtable,
 // not to actually hold the vtable data.
@@ -319,3 +327,5 @@
 
   static void update_stats(int size) PRODUCT_RETURN NOT_PRODUCT({ _total_classes++; _total_size += size; })
 };
+
+#endif // SHARE_VM_OOPS_KLASSVTABLE_HPP
--- a/src/share/vm/oops/markOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/markOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_markOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/markOop.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 void markOopDesc::print_on(outputStream* st) const {
--- a/src/share/vm/oops/markOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/markOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_MARKOOP_HPP
+#define SHARE_VM_OOPS_MARKOOP_HPP
+
+#include "oops/oop.hpp"
+
 // The markOop describes the header of an object.
 //
 // Note that the mark is not a real oop but just a word.
@@ -406,3 +411,5 @@
   }
 #endif // _LP64
 };
+
+#endif // SHARE_VM_OOPS_MARKOOP_HPP
--- a/src/share/vm/oops/markOop.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/markOop.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_MARKOOP_INLINE_HPP
+#define SHARE_VM_OOPS_MARKOOP_INLINE_HPP
+
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/markOop.hpp"
+#include "runtime/globals.hpp"
+
 // Should this header be preserved during GC?
 inline bool markOopDesc::must_be_preserved_with_bias(oop obj_containing_mark) const {
   assert(UseBiasedLocking, "unexpected");
@@ -96,3 +104,5 @@
 #endif
   return obj->klass()->klass_part()->prototype_header();
 }
+
+#endif // SHARE_VM_OOPS_MARKOOP_INLINE_HPP
--- a/src/share/vm/oops/methodDataKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodDataKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_methodDataKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodDataKlass.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/handles.inline.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 klassOop methodDataKlass::create_klass(TRAPS) {
   methodDataKlass o;
--- a/src/share/vm/oops/methodDataKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodDataKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_METHODDATAKLASS_HPP
+#define SHARE_VM_OOPS_METHODDATAKLASS_HPP
+
+#include "oops/klass.hpp"
+
 // a methodDataKlass is the klass of a methodDataOop
 
 class methodDataKlass : public Klass {
@@ -82,3 +87,5 @@
   const char* internal_name() const;
   void oop_verify_on(oop obj, outputStream* st);
 };
+
+#endif // SHARE_VM_OOPS_METHODDATAKLASS_HPP
--- a/src/share/vm/oops/methodDataOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodDataOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_methodDataOop.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/handles.inline.hpp"
 
 // ==================================================================
 // DataLayout
--- a/src/share/vm/oops/methodDataOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodDataOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_METHODDATAOOP_HPP
+#define SHARE_VM_OOPS_METHODDATAOOP_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "memory/universe.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.hpp"
+#include "runtime/orderAccess.hpp"
+
 class BytecodeStream;
 
 // The MethodData object collects counts and other profile information
@@ -1490,3 +1499,5 @@
   // verification
   void verify_data_on(outputStream* st);
 };
+
+#endif // SHARE_VM_OOPS_METHODDATAOOP_HPP
--- a/src/share/vm/oops/methodKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_methodKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/constMethodKlass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.inline.hpp"
 
 klassOop methodKlass::create_klass(TRAPS) {
   methodKlass o;
--- a/src/share/vm/oops/methodKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_METHODKLASS_HPP
+#define SHARE_VM_OOPS_METHODKLASS_HPP
+
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodOop.hpp"
+
 // a methodKlass is the klass of a methodOop
 
 class methodKlass : public Klass {
@@ -81,3 +88,5 @@
   bool oop_partially_loaded(oop obj) const;
   void oop_set_partially_loaded(oop obj);
 };
+
+#endif // SHARE_VM_OOPS_METHODKLASS_HPP
--- a/src/share/vm/oops/methodOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,34 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_methodOop.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/debugInfoRec.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/bytecodeTracer.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/generation.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/methodHandleWalk.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/relocator.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "utilities/xmlstream.hpp"
 
 
 // Implementation of methodOopDesc
--- a/src/share/vm/oops/methodOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/methodOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_METHODOOP_HPP
+#define SHARE_VM_OOPS_METHODOOP_HPP
+
+#include "classfile/vmSymbols.hpp"
+#include "code/compressedStream.hpp"
+#include "compiler/oopMap.hpp"
+#include "interpreter/invocationCounter.hpp"
+#include "oops/constMethodOop.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "utilities/accessFlags.hpp"
+#include "utilities/growableArray.hpp"
+
 // A methodOop represents a Java method.
 //
 // Memory layout (each line represents a word). Note that most applications load thousands of methods,
@@ -247,6 +262,10 @@
     return constMethod()->stackmap_data();
   }
 
+  void set_stackmap_data(typeArrayOop sd) {
+    constMethod()->set_stackmap_data(sd);
+  }
+
   // exception handler table
   typeArrayOop exception_table() const
                                    { return constMethod()->exception_table(); }
@@ -780,3 +799,5 @@
   void set(methodOop method);
   void clear(methodOop method);
 };
+
+#endif // SHARE_VM_OOPS_METHODOOP_HPP
--- a/src/share/vm/oops/objArrayKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/objArrayKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,36 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_objArrayKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayKlass.inline.hpp"
+#include "oops/objArrayKlassKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "utilities/copy.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1OopClosures.inline.hpp"
+#include "gc_implementation/g1/g1RemSet.inline.hpp"
+#include "gc_implementation/g1/heapRegionSeq.inline.hpp"
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/psCompactionManager.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
 
 int objArrayKlass::oop_size(oop obj) const {
   assert(obj->is_objArray(), "must be object array");
--- a/src/share/vm/oops/objArrayKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/objArrayKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OBJARRAYKLASS_HPP
+#define SHARE_VM_OOPS_OBJARRAYKLASS_HPP
+
+#include "memory/specialized_oop_closures.hpp"
+#include "oops/arrayKlass.hpp"
+#include "oops/instanceKlass.hpp"
+
 // objArrayKlass is the klass for objArrays
 
 class objArrayKlass : public arrayKlass {
@@ -140,3 +147,5 @@
   void oop_verify_old_oop(oop obj, oop* p, bool allow_dirty);
   void oop_verify_old_oop(oop obj, narrowOop* p, bool allow_dirty);
 };
+
+#endif // SHARE_VM_OOPS_OBJARRAYKLASS_HPP
--- a/src/share/vm/oops/objArrayKlass.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/objArrayKlass.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP
+#define SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP
+
+#include "oops/objArrayKlass.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/psCompactionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#endif
+
 void objArrayKlass::oop_follow_contents(oop obj, int index) {
   if (UseCompressedOops) {
     objarray_follow_contents<narrowOop>(obj, index);
@@ -87,3 +96,5 @@
   }
 }
 #endif // #ifndef SERIALGC
+
+#endif // SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP
--- a/src/share/vm/oops/objArrayKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/objArrayKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_objArrayKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayKlassKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
 
 klassOop objArrayKlassKlass::create_klass(TRAPS) {
   objArrayKlassKlass o;
--- a/src/share/vm/oops/objArrayKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/objArrayKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OBJARRAYKLASSKLASS_HPP
+#define SHARE_VM_OOPS_OBJARRAYKLASSKLASS_HPP
+
+#include "oops/arrayKlassKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+
 // The objArrayKlassKlass is klass for all objArrayKlass'
 
 class objArrayKlassKlass : public arrayKlassKlass {
@@ -76,3 +82,5 @@
   void oop_verify_on(oop obj, outputStream* st);
 
 };
+
+#endif // SHARE_VM_OOPS_OBJARRAYKLASSKLASS_HPP
--- a/src/share/vm/oops/objArrayOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/objArrayOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_objArrayOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
 
 #define ObjArrayOop_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)                    \
                                                                                    \
--- a/src/share/vm/oops/objArrayOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/objArrayOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OBJARRAYOOP_HPP
+#define SHARE_VM_OOPS_OBJARRAYOOP_HPP
+
+#include "oops/arrayOop.hpp"
+
 // An objArrayOop is an array containing oops.
 // Evaluating "String arg[10]" will create an objArrayOop.
 
@@ -110,3 +115,5 @@
   ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayOop_OOP_ITERATE_DECL)
   ALL_OOP_OOP_ITERATE_CLOSURES_2(ObjArrayOop_OOP_ITERATE_DECL)
 };
+
+#endif // SHARE_VM_OOPS_OBJARRAYOOP_HPP
--- a/src/share/vm/oops/oop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_oop.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/copy.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 bool always_do_update_barrier = false;
 
--- a/src/share/vm/oops/oop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OOP_HPP
+#define SHARE_VM_OOPS_OOP_HPP
+
+#include "memory/iterator.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/specialized_oop_closures.hpp"
+#include "utilities/top.hpp"
+
 // oopDesc is the top baseclass for objects classes.  The {name}Desc classes describe
 // the format of Java objects so the fields can be accessed from C++.
 // oopDesc is abstract.
@@ -30,12 +38,12 @@
 // no virtual functions allowed
 
 // store into oop with store check
-template <class T> inline void oop_store(T* p, oop v);
-template <class T> inline void oop_store(volatile T* p, oop v);
+template <class T> void oop_store(T* p, oop v);
+template <class T> void oop_store(volatile T* p, oop v);
 
 // store into oop without store check
-template <class T> inline void oop_store_without_check(T* p, oop v);
-template <class T> inline void oop_store_without_check(volatile T* p, oop v);
+template <class T> void oop_store_without_check(T* p, oop v);
+template <class T> void oop_store_without_check(volatile T* p, oop v);
 
 extern bool always_do_update_barrier;
 
@@ -403,3 +411,5 @@
   static int klass_offset_in_bytes()   { return offset_of(oopDesc, _metadata._klass); }
   static int klass_gap_offset_in_bytes();
 };
+
+#endif // SHARE_VM_OOPS_OOP_HPP
--- a/src/share/vm/oops/oop.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oop.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,37 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OOP_INLINE_HPP
+#define SHARE_VM_OOPS_OOP_INLINE_HPP
+
+#include "gc_implementation/shared/ageTable.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/barrierSet.inline.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "memory/compactingPermGenGen.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generation.hpp"
+#include "memory/permGen.hpp"
+#include "memory/specialized_oop_closures.hpp"
+#include "oops/arrayKlass.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/markOop.inline.hpp"
+#include "oops/oop.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/os.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 // Implementation of all inlined member functions defined in oop.hpp
 // We need a separate file to avoid circular references
 
@@ -746,3 +777,5 @@
 inline bool oopDesc::is_shared_readwrite() const {
   return CompactingPermGenGen::is_shared_readwrite(this);
 }
+
+#endif // SHARE_VM_OOPS_OOP_INLINE_HPP
--- a/src/share/vm/oops/oop.inline2.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oop.inline2.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OOP_INLINE2_HPP
+#define SHARE_VM_OOPS_OOP_INLINE2_HPP
+
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/generation.hpp"
+#include "memory/permGen.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.hpp"
+
 // Implementation of all inlined member functions defined in oop.hpp
 // We need a separate file to avoid circular references
 
@@ -38,3 +47,5 @@
 inline bool oopDesc::is_scavengable() const {
   return Universe::heap()->is_scavengable(this);
 }
+
+#endif // SHARE_VM_OOPS_OOP_INLINE2_HPP
--- a/src/share/vm/oops/oop.pcgc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oop.pcgc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP
+#define SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psCompactionManager.hpp"
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#endif
+
 inline void oopDesc::update_contents(ParCompactionManager* cm) {
   // The klass field must be updated before anything else
   // can be done.
@@ -133,3 +145,5 @@
     PSParallelCompact::adjust_pointer(klass_addr(), beg_addr, end_addr);
   }
 }
+
+#endif // SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP
--- a/src/share/vm/oops/oop.psgc.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oop.psgc.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OOP_PSGC_INLINE_HPP
+#define SHARE_VM_OOPS_OOP_PSGC_INLINE_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#endif
+
 // ParallelScavengeHeap methods
 
 inline void oopDesc::push_contents(PSPromotionManager* pm) {
@@ -32,3 +41,5 @@
   }
   // Else skip it.  The typeArrayKlass in the header never needs scavenging.
 }
+
+#endif // SHARE_VM_OOPS_OOP_PSGC_INLINE_HPP
--- a/src/share/vm/oops/oopsHierarchy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oopsHierarchy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_oopsHierarchy.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "oops/oopsHierarchy.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 #ifdef CHECK_UNHANDLED_OOPS
 
--- a/src/share/vm/oops/oopsHierarchy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/oopsHierarchy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_OOPSHIERARCHY_HPP
+#define SHARE_VM_OOPS_OOPSHIERARCHY_HPP
+
+#include "runtime/globals.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // OBJECT hierarchy
 // This hierarchy is a representation hierarchy, i.e. if A is a superclass
 // of B, A's representation is a prefix of B's representation.
@@ -186,3 +192,5 @@
 class   constantPoolCacheKlass;
 class   symbolKlass;
 class   compiledICHolderKlass;
+
+#endif // SHARE_VM_OOPS_OOPSHIERARCHY_HPP
--- a/src/share/vm/oops/symbolKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/symbolKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_symbolKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "memory/gcLocker.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolKlass.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.inline.hpp"
 
 symbolOop symbolKlass::allocate_symbol(u1* name, int len, TRAPS) {
   // Don't allow symbol oops to be created which cannot fit in a symbolOop.
--- a/src/share/vm/oops/symbolKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/symbolKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_SYMBOLKLASS_HPP
+#define SHARE_VM_OOPS_SYMBOLKLASS_HPP
+
+#include "oops/typeArrayKlass.hpp"
+
 // a symbolKlass is the klass for a symbolOop
 
 class symbolKlass : public Klass {
@@ -72,3 +77,5 @@
 #endif //PRODUCT
   const char* internal_name() const;
 };
+
+#endif // SHARE_VM_OOPS_SYMBOLKLASS_HPP
--- a/src/share/vm/oops/symbolOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/symbolOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_symbolOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
 
 
 // ------------------------------------------------------------------
--- a/src/share/vm/oops/symbolOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/symbolOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_SYMBOLOOP_HPP
+#define SHARE_VM_OOPS_SYMBOLOOP_HPP
+
+#include "oops/typeArrayOop.hpp"
+#include "utilities/utf8.hpp"
+
 // A symbolOop is a canonicalized string.
 // All symbolOops reside in global symbolTable.
 // See oopFactory::new_symbol for how to allocate a symbolOop
@@ -129,3 +135,5 @@
  return (((uintptr_t)this < (uintptr_t)other) ? -1
    : ((uintptr_t)this == (uintptr_t) other) ? 0 : 1);
 }
+
+#endif // SHARE_VM_OOPS_SYMBOLOOP_HPP
--- a/src/share/vm/oops/typeArrayKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/typeArrayKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_typeArrayKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/objArrayKlassKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "runtime/handles.inline.hpp"
 
 bool typeArrayKlass::compute_is_subtype_of(klassOop k) {
   if (!k->klass_part()->oop_is_typeArray()) {
--- a/src/share/vm/oops/typeArrayKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/typeArrayKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_TYPEARRAYKLASS_HPP
+#define SHARE_VM_OOPS_TYPEARRAYKLASS_HPP
+
+#include "oops/arrayKlass.hpp"
+
 // A typeArrayKlass is the klass of a typeArray
 // It contains the type and size of the elements
 
@@ -105,3 +110,5 @@
  public:
   const char* internal_name() const;
 };
+
+#endif // SHARE_VM_OOPS_TYPEARRAYKLASS_HPP
--- a/src/share/vm/oops/typeArrayKlassKlass.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/typeArrayKlassKlass.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_typeArrayKlassKlass.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/typeArrayKlassKlass.hpp"
+#include "runtime/handles.inline.hpp"
 
 klassOop typeArrayKlassKlass::create_klass(TRAPS) {
   typeArrayKlassKlass o;
--- a/src/share/vm/oops/typeArrayKlassKlass.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/typeArrayKlassKlass.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_TYPEARRAYKLASSKLASS_HPP
+#define SHARE_VM_OOPS_TYPEARRAYKLASSKLASS_HPP
+
+#include "oops/arrayKlassKlass.hpp"
+#include "oops/typeArrayKlass.hpp"
+
 // A typeArrayKlassKlass is the klass of a typeArrayKlass
 
 class typeArrayKlassKlass : public arrayKlassKlass {
@@ -56,3 +62,5 @@
 
   const char* internal_name() const;
 };
+
+#endif // SHARE_VM_OOPS_TYPEARRAYKLASSKLASS_HPP
--- a/src/share/vm/oops/typeArrayOop.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/typeArrayOop.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,7 +22,8 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_typeArrayOop.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/typeArrayOop.hpp"
 
 // <<this page is intentionally left blank>>
--- a/src/share/vm/oops/typeArrayOop.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/oops/typeArrayOop.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,30 @@
  *
  */
 
+#ifndef SHARE_VM_OOPS_TYPEARRAYOOP_HPP
+#define SHARE_VM_OOPS_TYPEARRAYOOP_HPP
+
+#include "oops/arrayOop.hpp"
+#include "oops/typeArrayKlass.hpp"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "orderAccess_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "orderAccess_linux_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "orderAccess_linux_zero.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "orderAccess_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "orderAccess_solaris_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "orderAccess_windows_x86.inline.hpp"
+#endif
+
 // A typeArrayOop is an array containing basic types (non oop elements).
 // It is used for arrays of {characters, singles, doubles, bytes, shorts, integers, longs}
 #include <limits.h>
@@ -141,3 +165,5 @@
     return object_size(tk->layout_helper(), length());
   }
 };
+
+#endif // SHARE_VM_OOPS_TYPEARRAYOOP_HPP
--- a/src/share/vm/opto/addnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/addnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,10 +22,17 @@
  *
  */
 
-// Portions of code courtesy of Clifford Click
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_addnode.cpp.incl"
+// Portions of code courtesy of Clifford Click
 
 #define MAXFLOAT        ((float)3.40282346638528860e+38)
 
--- a/src/share/vm/opto/addnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/addnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_ADDNODE_HPP
+#define SHARE_VM_OPTO_ADDNODE_HPP
+
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 class PhaseTransform;
@@ -241,3 +248,5 @@
   virtual uint ideal_reg() const { return Op_RegI; }
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 };
+
+#endif // SHARE_VM_OPTO_ADDNODE_HPP
--- a/src/share/vm/opto/adlcVMDeps.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/adlcVMDeps.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_ADLCVMDEPS_HPP
+#define SHARE_VM_OPTO_ADLCVMDEPS_HPP
+
+// adlcVMDeps.hpp is used by both adlc and vm builds.
+// Only include allocation.hpp when we're not building adlc.
+#ifndef SHARE_VM_ADLC_ARENA_HPP
+#include "memory/allocation.hpp"
+#endif
+
 // Declare commonly known constant and data structures between the
 // ADLC and the VM
 //
@@ -42,3 +51,5 @@
   static const char* oop_reloc_type()  { return "relocInfo::oop_type"; }
   static const char* none_reloc_type() { return "relocInfo::none"; }
 };
+
+#endif // SHARE_VM_OPTO_ADLCVMDEPS_HPP
--- a/src/share/vm/opto/block.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/block.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,10 +22,20 @@
  *
  */
 
-// Optimization - Graph Style
+#include "precompiled.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/block.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/rootnode.hpp"
+#include "utilities/copy.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_block.cpp.incl"
+// Optimization - Graph Style
 
 
 //-----------------------------------------------------------------------------
--- a/src/share/vm/opto/block.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/block.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_BLOCK_HPP
+#define SHARE_VM_OPTO_BLOCK_HPP
+
+#include "opto/multnode.hpp"
+#include "opto/node.hpp"
+#include "opto/phase.hpp"
+
 // Optimization - Graph Style
 
 class Block;
@@ -716,3 +723,5 @@
   void reorder_traces(int count);
   void union_traces(Trace* from, Trace* to);
 };
+
+#endif // SHARE_VM_OPTO_BLOCK_HPP
--- a/src/share/vm/opto/buildOopMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/buildOopMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,25 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_buildOopMap.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/oopMap.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/phase.hpp"
+#include "opto/regalloc.hpp"
+#include "opto/rootnode.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vmreg_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vmreg_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vmreg_zero.inline.hpp"
+#endif
 
 // The functions in this file builds OopMaps after all scheduling is done.
 //
--- a/src/share/vm/opto/bytecodeInfo.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/bytecodeInfo.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,15 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_bytecodeInfo.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileLog.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "opto/callGenerator.hpp"
+#include "opto/parse.hpp"
+#include "runtime/handles.inline.hpp"
 
 //=============================================================================
 //------------------------------InlineTree-------------------------------------
--- a/src/share/vm/opto/c2_globals.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/c2_globals.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,7 +22,7 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_c2_globals.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/c2_globals.hpp"
 
 C2_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, MATERIALIZE_DIAGNOSTIC_FLAG, MATERIALIZE_EXPERIMENTAL_FLAG, MATERIALIZE_NOTPRODUCT_FLAG)
--- a/src/share/vm/opto/c2_globals.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/c2_globals.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,26 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_C2_GLOBALS_HPP
+#define SHARE_VM_OPTO_C2_GLOBALS_HPP
+
+#include "runtime/globals.hpp"
+#ifdef TARGET_ARCH_x86
+# include "c2_globals_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c2_globals_sparc.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "c2_globals_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "c2_globals_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "c2_globals_windows.hpp"
+#endif
+
 //
 // Defines all globals flags used by the server compiler.
 //
@@ -438,3 +458,5 @@
           "Allow back branches to be fall throughs in the block layour")    \
 
 C2_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG)
+
+#endif // SHARE_VM_OPTO_C2_GLOBALS_HPP
--- a/src/share/vm/opto/c2compiler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/c2compiler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_c2compiler.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/c2compiler.hpp"
+#include "opto/runtime.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
 
 
 volatile int C2Compiler::_runtimes = uninitialized;
--- a/src/share/vm/opto/c2compiler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/c2compiler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_C2COMPILER_HPP
+#define SHARE_VM_OPTO_C2COMPILER_HPP
+
+#include "compiler/abstractCompiler.hpp"
+
 class C2Compiler : public AbstractCompiler {
 private:
 
@@ -55,3 +60,5 @@
   // Print compilation timers and statistics
   void print_timers();
 };
+
+#endif // SHARE_VM_OPTO_C2COMPILER_HPP
--- a/src/share/vm/opto/callGenerator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/callGenerator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_callGenerator.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/bcEscapeAnalyzer.hpp"
+#include "ci/ciCPCache.hpp"
+#include "ci/ciMethodHandle.hpp"
+#include "classfile/javaClasses.hpp"
+#include "compiler/compileLog.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callGenerator.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/parse.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
 
 CallGenerator::CallGenerator(ciMethod* method) {
   _method = method;
--- a/src/share/vm/opto/callGenerator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/callGenerator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_CALLGENERATOR_HPP
+#define SHARE_VM_OPTO_CALLGENERATOR_HPP
+
+#include "opto/callnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/type.hpp"
+#include "runtime/deoptimization.hpp"
+
 //---------------------------CallGenerator-------------------------------------
 // The subclasses of this class handle generation of ideal nodes for
 // call sites and method entry points.
@@ -281,3 +289,5 @@
   int count_all() const;
 #endif
 };
+
+#endif // SHARE_VM_OPTO_CALLGENERATOR_HPP
--- a/src/share/vm/opto/callnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/callnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,13 +22,24 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "ci/bcEscapeAnalyzer.hpp"
+#include "compiler/oopMap.hpp"
+#include "opto/callnode.hpp"
+#include "opto/escape.hpp"
+#include "opto/locknode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/parse.hpp"
+#include "opto/regalloc.hpp"
+#include "opto/regmask.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_callnode.cpp.incl"
-
 //=============================================================================
 uint StartNode::size_of() const { return sizeof(*this); }
 uint StartNode::cmp( const Node &n ) const
--- a/src/share/vm/opto/callnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/callnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_CALLNODE_HPP
+#define SHARE_VM_OPTO_CALLNODE_HPP
+
+#include "opto/connode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/multnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
@@ -938,3 +948,5 @@
   // unlock is never a safepoint
   virtual bool        guaranteed_safepoint()  { return false; }
 };
+
+#endif // SHARE_VM_OPTO_CALLNODE_HPP
--- a/src/share/vm/opto/cfgnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/cfgnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,13 +22,25 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "opto/addnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/regmask.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_cfgnode.cpp.incl"
-
 //=============================================================================
 //------------------------------Value------------------------------------------
 // Compute the type of the RegionNode.
--- a/src/share/vm/opto/cfgnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/cfgnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_CFGNODE_HPP
+#define SHARE_VM_OPTO_CFGNODE_HPP
+
+#include "opto/multnode.hpp"
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
@@ -519,3 +527,5 @@
   virtual void format( PhaseRegAlloc *, outputStream *st ) const;
 #endif
 };
+
+#endif // SHARE_VM_OPTO_CFGNODE_HPP
--- a/src/share/vm/opto/chaitin.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/chaitin.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,23 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_chaitin.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "compiler/oopMap.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/block.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/coalesce.hpp"
+#include "opto/connode.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/indexSet.hpp"
+#include "opto/machnode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/rootnode.hpp"
 
 //=============================================================================
 
--- a/src/share/vm/opto/chaitin.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/chaitin.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,19 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_CHAITIN_HPP
+#define SHARE_VM_OPTO_CHAITIN_HPP
+
+#include "code/vmreg.hpp"
+#include "libadt/port.hpp"
+#include "memory/resourceArea.hpp"
+#include "opto/connode.hpp"
+#include "opto/live.hpp"
+#include "opto/matcher.hpp"
+#include "opto/phase.hpp"
+#include "opto/regalloc.hpp"
+#include "opto/regmask.hpp"
+
 class LoopTree;
 class MachCallNode;
 class MachSafePointNode;
@@ -519,3 +532,5 @@
   friend class PhaseAggressiveCoalesce;
   friend class PhaseConservativeCoalesce;
 };
+
+#endif // SHARE_VM_OPTO_CHAITIN_HPP
--- a/src/share/vm/opto/classes.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/classes.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,22 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_classes.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/locknode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/multnode.hpp"
+#include "opto/node.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/subnode.hpp"
+#include "opto/vectornode.hpp"
 
 // ----------------------------------------------------------------------------
 // Build a table of virtual functions to map from Nodes to dense integer
--- a/src/share/vm/opto/coalesce.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/coalesce.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_coalesce.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/block.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/coalesce.hpp"
+#include "opto/connode.hpp"
+#include "opto/indexSet.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/regmask.hpp"
 
 //=============================================================================
 //------------------------------reset_uf_map-----------------------------------
--- a/src/share/vm/opto/coalesce.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/coalesce.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_COALESCE_HPP
+#define SHARE_VM_OPTO_COALESCE_HPP
+
+#include "opto/phase.hpp"
+
 class LoopTree;
 class LRG;
 class LRG_List;
@@ -107,3 +112,5 @@
 
   void update_ifg(uint lr1, uint lr2, IndexSet *n_lr1, IndexSet *n_lr2);
 };
+
+#endif // SHARE_VM_OPTO_COALESCE_HPP
--- a/src/share/vm/opto/compile.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/compile.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,58 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_compile.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/exceptionHandlerTable.hpp"
+#include "code/nmethod.hpp"
+#include "compiler/compileLog.hpp"
+#include "compiler/oopMap.hpp"
+#include "opto/addnode.hpp"
+#include "opto/block.hpp"
+#include "opto/c2compiler.hpp"
+#include "opto/callGenerator.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/compile.hpp"
+#include "opto/connode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/escape.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/macro.hpp"
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/output.hpp"
+#include "opto/parse.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/stringopts.hpp"
+#include "opto/type.hpp"
+#include "opto/vectornode.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/copy.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
 
 /// Support for intrinsics.
 
--- a/src/share/vm/opto/compile.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/compile.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,24 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_COMPILE_HPP
+#define SHARE_VM_OPTO_COMPILE_HPP
+
+#include "asm/codeBuffer.hpp"
+#include "ci/compilerInterface.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/exceptionHandlerTable.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "libadt/dict.hpp"
+#include "libadt/port.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/resourceArea.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/phase.hpp"
+#include "opto/regmask.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/vmThread.hpp"
+
 class Block;
 class Bundle;
 class C2Compiler;
@@ -777,3 +795,5 @@
   // Definitions of pd methods
   static void pd_compiler2_init();
 };
+
+#endif // SHARE_VM_OPTO_COMPILE_HPP
--- a/src/share/vm/opto/connode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/connode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,10 +22,19 @@
  *
  */
 
-// Optimization - Graph Style
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/connode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
+#include "runtime/sharedRuntime.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_connode.cpp.incl"
+// Optimization - Graph Style
 
 //=============================================================================
 //------------------------------hash-------------------------------------------
--- a/src/share/vm/opto/connode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/connode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_CONNODE_HPP
+#define SHARE_VM_OPTO_CONNODE_HPP
+
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 class PhaseTransform;
 class MachNode;
 
@@ -695,3 +702,5 @@
   PopCountLNode(Node* in1) : CountBitsNode(in1) {}
   virtual int Opcode() const;
 };
+
+#endif // SHARE_VM_OPTO_CONNODE_HPP
--- a/src/share/vm/opto/divnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/divnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,12 +22,21 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_divnode.cpp.incl"
 #include <math.h>
 
 //----------------------magic_int_divide_constants-----------------------------
@@ -388,7 +397,8 @@
     if (!d_pos) {
       q = new (phase->C, 3) SubLNode(phase->longcon(0), phase->transform(q));
     }
-  } else {
+  } else if ( !Matcher::use_asm_for_ldiv_by_con(d) ) { // Use hardware DIV instruction when
+                                                       // it is faster than code generated below.
     // Attempt the jlong constant divide -> multiply transform found in
     //   "Division by Invariant Integers using Multiplication"
     //     by Granlund and Montgomery
@@ -558,7 +568,7 @@
 
   set_req(0,NULL);              // Dividing by a not-zero constant; no faulting
 
-  // Dividing by MININT does not optimize as a power-of-2 shift.
+  // Dividing by MINLONG does not optimize as a power-of-2 shift.
   if( l == min_jlong ) return NULL;
 
   return transform_long_divide( phase, in(1), l );
@@ -1062,7 +1072,7 @@
   // Fell thru, the unroll case is not appropriate. Transform the modulo
   // into a long multiply/int multiply/subtract case
 
-  // Cannot handle mod 0, and min_jint isn't handled by the transform
+  // Cannot handle mod 0, and min_jlong isn't handled by the transform
   if( con == 0 || con == min_jlong ) return NULL;
 
   // Get the absolute value of the constant; at this point, we can use this
@@ -1075,7 +1085,7 @@
 
   // If this is a power of two, then maybe we can mask it
   if( is_power_of_2_long(pos_con) ) {
-    log2_con = log2_long(pos_con);
+    log2_con = exact_log2_long(pos_con);
 
     const Type *dt = phase->type(in(1));
     const TypeLong *dtl = dt->isa_long();
@@ -1088,7 +1098,7 @@
   // Save in(1) so that it cannot be changed or deleted
   hook->init_req(0, in(1));
 
-  // Divide using the transform from DivI to MulL
+  // Divide using the transform from DivL to MulL
   Node *result = transform_long_divide( phase, in(1), pos_con );
   if (result != NULL) {
     Node *divide = phase->transform(result);
--- a/src/share/vm/opto/divnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/divnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_DIVNODE_HPP
+#define SHARE_VM_OPTO_DIVNODE_HPP
+
+#include "opto/multnode.hpp"
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
@@ -175,3 +183,5 @@
   // Make a divmod and associated projections from a div or mod.
   static DivModLNode* make(Compile* C, Node* div_or_mod);
 };
+
+#endif // SHARE_VM_OPTO_DIVNODE_HPP
--- a/src/share/vm/opto/doCall.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/doCall.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,23 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_doCall.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciCPCache.hpp"
+#include "ci/ciCallSite.hpp"
+#include "ci/ciMethodHandle.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileLog.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callGenerator.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/parse.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 #ifndef PRODUCT
 void trace_type_profile(ciMethod *method, int depth, int bci, ciMethod *prof_method, ciKlass *prof_klass, int site_count, int receiver_count) {
--- a/src/share/vm/opto/domgraph.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/domgraph.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,13 +22,18 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.hpp"
+#include "opto/block.hpp"
+#include "opto/machnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/rootnode.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_domgraph.cpp.incl"
-
 //------------------------------Tarjan-----------------------------------------
 // A data structure that holds all the information needed to find dominators.
 struct Tarjan {
--- a/src/share/vm/opto/escape.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/escape.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_escape.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/bcEscapeAnalyzer.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.hpp"
+#include "opto/c2compiler.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/escape.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/rootnode.hpp"
 
 void PointsToNode::add_edge(uint targIdx, PointsToNode::EdgeType et) {
   uint v = (targIdx << EdgeShift) + ((uint) et);
@@ -85,6 +94,7 @@
   _nodes(C->comp_arena(), C->unique(), C->unique(), PointsToNode()),
   _processed(C->comp_arena()),
   _collecting(true),
+  _progress(false),
   _compile(C),
   _igvn(igvn),
   _node_map(C->comp_arena()) {
@@ -113,7 +123,7 @@
   assert(f->node_type() != PointsToNode::UnknownType && t->node_type() != PointsToNode::UnknownType, "node types must be set");
   assert(f->node_type() == PointsToNode::LocalVar || f->node_type() == PointsToNode::Field, "invalid source of PointsTo edge");
   assert(t->node_type() == PointsToNode::JavaObject, "invalid destination of PointsTo edge");
-  f->add_edge(to_i, PointsToNode::PointsToEdge);
+  add_edge(f, to_i, PointsToNode::PointsToEdge);
 }
 
 void ConnectionGraph::add_deferred_edge(uint from_i, uint to_i) {
@@ -126,7 +136,7 @@
   // don't add a self-referential edge, this can occur during removal of
   // deferred edges
   if (from_i != to_i)
-    f->add_edge(to_i, PointsToNode::DeferredEdge);
+    add_edge(f, to_i, PointsToNode::DeferredEdge);
 }
 
 int ConnectionGraph::address_offset(Node* adr, PhaseTransform *phase) {
@@ -157,7 +167,7 @@
   assert (t->offset() == -1 || t->offset() == offset, "conflicting field offsets");
   t->set_offset(offset);
 
-  f->add_edge(to_i, PointsToNode::FieldEdge);
+  add_edge(f, to_i, PointsToNode::FieldEdge);
 }
 
 void ConnectionGraph::set_escape_state(uint ni, PointsToNode::EscapeState es) {
@@ -995,7 +1005,7 @@
   GrowableArray<Node *>  memnode_worklist;
   GrowableArray<PhiNode *>  orig_phis;
 
-  PhaseGVN  *igvn = _igvn;
+  PhaseIterGVN  *igvn = _igvn;
   uint new_index_start = (uint) _compile->num_alias_types();
   Arena* arena = Thread::current()->resource_area();
   VectorSet visited(arena);
@@ -1531,14 +1541,9 @@
       has_allocations = true;
     }
     if(n->is_AddP()) {
-      // Collect address nodes which directly reference an allocation.
-      // Use them during stage 3 below to build initial connection graph
-      // field edges. Other field edges could be added after StoreP/LoadP
-      // nodes are processed during stage 4 below.
-      Node* base = get_addp_base(n);
-      if(base->is_Proj() && base->in(0)->is_Allocate()) {
-        cg_worklist.append(n->_idx);
-      }
+      // Collect address nodes. Use them during stage 3 below
+      // to build initial connection graph field edges.
+      cg_worklist.append(n->_idx);
     } else if (n->is_MergeMem()) {
       // Collect all MergeMem nodes to add memory slices for
       // scalar replaceable objects in split_unique_types().
@@ -1562,18 +1567,28 @@
     build_connection_graph(n, igvn);
   }
 
-  // 3. Pass to create fields edges (Allocate -F-> AddP).
+  // 3. Pass to create initial fields edges (JavaObject -F-> AddP)
+  //    to reduce number of iterations during stage 4 below.
   uint cg_length = cg_worklist.length();
   for( uint next = 0; next < cg_length; ++next ) {
     int ni = cg_worklist.at(next);
-    build_connection_graph(ptnode_adr(ni)->_node, igvn);
+    Node* n = ptnode_adr(ni)->_node;
+    Node* base = get_addp_base(n);
+    if (base->is_Proj())
+      base = base->in(0);
+    PointsToNode::NodeType nt = ptnode_adr(base->_idx)->node_type();
+    if (nt == PointsToNode::JavaObject) {
+      build_connection_graph(n, igvn);
+    }
   }
 
   cg_worklist.clear();
   cg_worklist.append(_phantom_object);
+  GrowableArray<uint>  worklist;
 
   // 4. Build Connection Graph which need
   //    to walk the connection graph.
+  _progress = false;
   for (uint ni = 0; ni < nodes_size(); ni++) {
     PointsToNode* ptn = ptnode_adr(ni);
     Node *n = ptn->_node;
@@ -1581,13 +1596,52 @@
       build_connection_graph(n, igvn);
       if (ptn->node_type() != PointsToNode::UnknownType)
         cg_worklist.append(n->_idx); // Collect CG nodes
+      if (!_processed.test(n->_idx))
+        worklist.append(n->_idx); // Collect C/A/L/S nodes
     }
   }
 
+  // After IGVN user nodes may have smaller _idx than
+  // their inputs so they will be processed first in
+  // previous loop. Because of that not all Graph
+  // edges will be created. Walk over interesting
+  // nodes again until no new edges are created.
+  //
+  // Normally only 1-3 passes needed to build
+  // Connection Graph depending on graph complexity.
+  // Set limit to 10 to catch situation when something
+  // did go wrong and recompile the method without EA.
+
+#define CG_BUILD_ITER_LIMIT 10
+
+  uint length = worklist.length();
+  int iterations = 0;
+  while(_progress && (iterations++ < CG_BUILD_ITER_LIMIT)) {
+    _progress = false;
+    for( uint next = 0; next < length; ++next ) {
+      int ni = worklist.at(next);
+      PointsToNode* ptn = ptnode_adr(ni);
+      Node* n = ptn->_node;
+      assert(n != NULL, "should be known node");
+      build_connection_graph(n, igvn);
+    }
+  }
+  if (iterations >= CG_BUILD_ITER_LIMIT) {
+    assert(iterations < CG_BUILD_ITER_LIMIT,
+           err_msg("infinite EA connection graph build with %d nodes and worklist size %d",
+           nodes_size(), length));
+    // Possible infinite build_connection_graph loop,
+    // retry compilation without escape analysis.
+    C->record_failure(C2Compiler::retry_no_escape_analysis());
+    _collecting = false;
+    return false;
+  }
+#undef CG_BUILD_ITER_LIMIT
+
   Arena* arena = Thread::current()->resource_area();
   VectorSet ptset(arena);
-  GrowableArray<uint>  deferred_edges;
   VectorSet visited(arena);
+  worklist.clear();
 
   // 5. Remove deferred edges from the graph and adjust
   //    escape state of nonescaping objects.
@@ -1597,7 +1651,7 @@
     PointsToNode* ptn = ptnode_adr(ni);
     PointsToNode::NodeType nt = ptn->node_type();
     if (nt == PointsToNode::LocalVar || nt == PointsToNode::Field) {
-      remove_deferred(ni, &deferred_edges, &visited);
+      remove_deferred(ni, &worklist, &visited);
       Node *n = ptn->_node;
       if (n->is_AddP()) {
         // Search for objects which are not scalar replaceable
@@ -1608,7 +1662,7 @@
   }
 
   // 6. Propagate escape states.
-  GrowableArray<int>  worklist;
+  worklist.clear();
   bool has_non_escaping_obj = false;
 
   // push all GlobalEscape nodes on the worklist
@@ -2444,13 +2498,14 @@
 
   // Don't set processed bit for AddP, LoadP, StoreP since
   // they may need more then one pass to process.
+  // Also don't mark as processed Call nodes since their
+  // arguments may need more then one pass to process.
   if (_processed.test(n_idx))
     return; // No need to redefine node's state.
 
   if (n->is_Call()) {
     CallNode *call = n->as_Call();
     process_call_arguments(call, phase);
-    _processed.set(n_idx);
     return;
   }
 
--- a/src/share/vm/opto/escape.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/escape.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_ESCAPE_HPP
+#define SHARE_VM_OPTO_ESCAPE_HPP
+
+#include "opto/addnode.hpp"
+#include "opto/node.hpp"
+#include "utilities/growableArray.hpp"
+
 //
 // Adaptation for C2 of the escape analysis algorithm described in:
 //
@@ -219,6 +226,9 @@
                                        // is still being collected. If false,
                                        // no new nodes will be processed.
 
+  bool                    _progress;   // Indicates whether new Graph's edges
+                                       // were created.
+
   uint                _phantom_object; // Index of globally escaping object
                                        // that pointer values loaded from
                                        // a field which has not been set
@@ -266,6 +276,13 @@
   void add_deferred_edge(uint from_i, uint to_i);
   void add_field_edge(uint from_i, uint to_i, int offs);
 
+  // Add an edge of the specified type pointing to the specified target.
+  // Set _progress if new edge is added.
+  void add_edge(PointsToNode *f, uint to_i, PointsToNode::EdgeType et) {
+    uint e_cnt = f->edge_count();
+    f->add_edge(to_i, et);
+    _progress |= (f->edge_count() != e_cnt);
+  }
 
   // Add an edge to node given by "to_i" from any field of adr_i whose offset
   // matches "offset"  A deferred edge is added if to_i is a LocalVar, and
@@ -354,3 +371,5 @@
   void dump();
 #endif
 };
+
+#endif // SHARE_VM_OPTO_ESCAPE_HPP
--- a/src/share/vm/opto/gcm.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/gcm.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,13 +22,36 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/block.hpp"
+#include "opto/c2compiler.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/deoptimization.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_gcm.cpp.incl"
-
 // To avoid float value underflow
 #define MIN_BLOCK_FREQUENCY 1.e-35f
 
--- a/src/share/vm/opto/generateOptoStub.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/generateOptoStub.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_generateOptoStub.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/connode.hpp"
+#include "opto/locknode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/node.hpp"
+#include "opto/parse.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/type.hpp"
 
 //--------------------gen_stub-------------------------------
 void GraphKit::gen_stub(address C_function,
--- a/src/share/vm/opto/graphKit.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/graphKit.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,23 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_graphKit.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/barrierSet.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "opto/addnode.hpp"
+#include "opto/graphKit.hpp"
+#include "opto/idealKit.hpp"
+#include "opto/locknode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/parse.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 //----------------------------GraphKit-----------------------------------------
 // Main utility constructor.
@@ -569,7 +584,8 @@
       const TypePtr* adr_typ = ex_con->add_offset(offset);
 
       Node *adr = basic_plus_adr(ex_node, ex_node, offset);
-      Node *store = store_oop_to_object(control(), ex_node, adr, adr_typ, null(), ex_con, T_OBJECT);
+      const TypeOopPtr* val_type = TypeOopPtr::make_from_klass(env()->String_klass());
+      Node *store = store_oop_to_object(control(), ex_node, adr, adr_typ, null(), val_type, T_OBJECT);
 
       add_exception_state(make_exception_state(ex_node));
       return;
--- a/src/share/vm/opto/graphKit.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/graphKit.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,22 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_GRAPHKIT_HPP
+#define SHARE_VM_OPTO_GRAPHKIT_HPP
+
+#include "ci/ciEnv.hpp"
+#include "ci/ciMethodData.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/divnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
+#include "opto/type.hpp"
+#include "runtime/deoptimization.hpp"
+
 class FastLockNode;
 class FastUnlockNode;
 class IdealKit;
@@ -824,3 +840,5 @@
   PreserveReexecuteState(GraphKit* kit);
   ~PreserveReexecuteState();
 };
+
+#endif // SHARE_VM_OPTO_GRAPHKIT_HPP
--- a/src/share/vm/opto/idealGraphPrinter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/idealGraphPrinter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_idealGraphPrinter.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/machnode.hpp"
+#include "opto/parse.hpp"
+#include "runtime/threadCritical.hpp"
 
 #ifndef PRODUCT
 
--- a/src/share/vm/opto/idealGraphPrinter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/idealGraphPrinter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_IDEALGRAPHPRINTER_HPP
+#define SHARE_VM_OPTO_IDEALGRAPHPRINTER_HPP
+
+#include "libadt/dict.hpp"
+#include "libadt/vectset.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/ostream.hpp"
+#include "utilities/xmlstream.hpp"
+
 #ifndef PRODUCT
 
 class Compile;
@@ -140,3 +149,5 @@
 };
 
 #endif
+
+#endif // SHARE_VM_OPTO_IDEALGRAPHPRINTER_HPP
--- a/src/share/vm/opto/idealKit.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/idealKit.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_idealKit.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/idealKit.hpp"
+#include "opto/runtime.hpp"
 
 // Static initialization
 
--- a/src/share/vm/opto/idealKit.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/idealKit.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_IDEALKIT_HPP
+#define SHARE_VM_OPTO_IDEALKIT_HPP
+
+#include "opto/addnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
+#include "opto/type.hpp"
+
 //-----------------------------------------------------------------------------
 //----------------------------IdealKit-----------------------------------------
 // Set of utilities for creating control flow and scalar SSA data flow.
@@ -228,3 +240,5 @@
                       Node* parm1 = NULL,
                       Node* parm2 = NULL);
 };
+
+#endif // SHARE_VM_OPTO_IDEALKIT_HPP
--- a/src/share/vm/opto/ifg.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/ifg.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_ifg.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/oopMap.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/block.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/coalesce.hpp"
+#include "opto/connode.hpp"
+#include "opto/indexSet.hpp"
+#include "opto/machnode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/opcodes.hpp"
 
 #define EXACT_PRESSURE 1
 
--- a/src/share/vm/opto/ifnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/ifnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,13 +22,19 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_ifnode.cpp.incl"
-
 
 extern int explicit_null_checks_elided;
 
--- a/src/share/vm/opto/indexSet.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/indexSet.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,13 +22,17 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/compile.hpp"
+#include "opto/indexSet.hpp"
+#include "opto/regmask.hpp"
+
 // This file defines the IndexSet class, a set of sparse integer indices.
 // This data structure is used by the compiler in its liveness analysis and
 // during register allocation.  It also defines an iterator for this class.
 
-#include "incls/_precompiled.incl"
-#include "incls/_indexSet.cpp.incl"
-
 //-------------------------------- Initializations ------------------------------
 
 IndexSet::BitBlock  IndexSet::_empty_block     = IndexSet::BitBlock();
--- a/src/share/vm/opto/indexSet.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/indexSet.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_INDEXSET_HPP
+#define SHARE_VM_OPTO_INDEXSET_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/resourceArea.hpp"
+#include "opto/compile.hpp"
+#include "opto/regmask.hpp"
+
 // This file defines the IndexSet class, a set of sparse integer indices.
 // This data structure is used by the compiler in its liveness analysis and
 // during register allocation.
@@ -459,3 +467,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_OPTO_INDEXSET_HPP
--- a/src/share/vm/opto/lcm.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/lcm.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,10 +22,28 @@
  *
  */
 
-// Optimization - Graph Style
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/block.hpp"
+#include "opto/c2compiler.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/runtime.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
 
-#include "incls/_precompiled.incl"
-#include "incls/_lcm.cpp.incl"
+// Optimization - Graph Style
 
 //------------------------------implicit_null_check----------------------------
 // Detect implicit-null-check opportunities.  Basically, find NULL checks
--- a/src/share/vm/opto/library_call.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/library_call.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_library_call.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileLog.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callGenerator.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/idealKit.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/parse.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 class LibraryIntrinsic : public InlineCallGenerator {
   // Extend the set of intrinsics known to the runtime:
--- a/src/share/vm/opto/live.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/live.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_live.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/callnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/live.hpp"
+#include "opto/machnode.hpp"
 
 
 
--- a/src/share/vm/opto/live.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/live.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_LIVE_HPP
+#define SHARE_VM_OPTO_LIVE_HPP
+
+#include "libadt/port.hpp"
+#include "libadt/vectset.hpp"
+#include "opto/block.hpp"
+#include "opto/indexSet.hpp"
+#include "opto/phase.hpp"
+#include "opto/regmask.hpp"
+
 class Block;
 class LRG_List;
 class PhaseCFG;
@@ -72,3 +82,5 @@
   void stats(uint iters) const;
 #endif
 };
+
+#endif // SHARE_VM_OPTO_LIVE_HPP
--- a/src/share/vm/opto/locknode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/locknode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_locknode.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/locknode.hpp"
+#include "opto/parse.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
 
 //=============================================================================
 const RegMask &BoxLockNode::in_RegMask(uint i) const {
--- a/src/share/vm/opto/locknode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/locknode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,25 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_LOCKNODE_HPP
+#define SHARE_VM_OPTO_LOCKNODE_HPP
+
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/subnode.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
+
 //------------------------------BoxLockNode------------------------------------
 class BoxLockNode : public Node {
 public:
@@ -100,3 +119,5 @@
   const Type *sub(const Type *t1, const Type *t2) const { return TypeInt::CC;}
 
 };
+
+#endif // SHARE_VM_OPTO_LOCKNODE_HPP
--- a/src/share/vm/opto/loopTransform.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/loopTransform.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_loopTransform.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
 
 //------------------------------is_loop_exit-----------------------------------
 // Given an IfNode, return the loop-exiting projection or NULL if both
--- a/src/share/vm/opto/loopUnswitch.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/loopUnswitch.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_loopUnswitch.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/connode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/rootnode.hpp"
 
 //================= Loop Unswitching =====================
 //
--- a/src/share/vm/opto/loopnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/loopnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,20 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_loopnode.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethodData.hpp"
+#include "compiler/compileLog.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/superword.hpp"
 
 //=============================================================================
 //------------------------------is_loop_iv-------------------------------------
--- a/src/share/vm/opto/loopnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/loopnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_LOOPNODE_HPP
+#define SHARE_VM_OPTO_LOOPNODE_HPP
+
+#include "opto/cfgnode.hpp"
+#include "opto/multnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
+#include "opto/type.hpp"
+
 class CmpNode;
 class CountedLoopEndNode;
 class CountedLoopNode;
@@ -1015,3 +1024,5 @@
 
   IdealLoopTree* current() { return _curnt; }  // Return current value of iterator.
 };
+
+#endif // SHARE_VM_OPTO_LOOPNODE_HPP
--- a/src/share/vm/opto/loopopts.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/loopopts.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,15 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_loopopts.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/subnode.hpp"
 
 //=============================================================================
 //------------------------------split_thru_phi---------------------------------
--- a/src/share/vm/opto/machnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/machnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_machnode.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "opto/machnode.hpp"
+#include "opto/regalloc.hpp"
 
 //=============================================================================
 // Return the value requested
--- a/src/share/vm/opto/machnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/machnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_MACHNODE_HPP
+#define SHARE_VM_OPTO_MACHNODE_HPP
+
+#include "opto/callnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/multnode.hpp"
+#include "opto/node.hpp"
+#include "opto/regmask.hpp"
+
 class BufferBlob;
 class CodeBuffer;
 class JVMState;
@@ -828,3 +837,5 @@
   virtual void ext_format(PhaseRegAlloc *ra, const MachNode *node, int idx, outputStream *st) const { int_format( ra, node, st ); }
 #endif
 };
+
+#endif // SHARE_VM_OPTO_MACHNODE_HPP
--- a/src/share/vm/opto/macro.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/macro.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,25 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_macro.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "libadt/vectset.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/connode.hpp"
+#include "opto/locknode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/macro.hpp"
+#include "opto/memnode.hpp"
+#include "opto/node.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+#include "opto/type.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 
 //
--- a/src/share/vm/opto/macro.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/macro.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_MACRO_HPP
+#define SHARE_VM_OPTO_MACRO_HPP
+
+#include "opto/phase.hpp"
+
 class  AllocateNode;
 class  AllocateArrayNode;
 class  CallNode;
@@ -116,3 +121,5 @@
   bool expand_macro_nodes();
 
 };
+
+#endif // SHARE_VM_OPTO_MACRO_HPP
--- a/src/share/vm/opto/matcher.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/matcher.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,34 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_matcher.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/regmask.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/type.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/os.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
 
 OptoReg::Name OptoReg::c_frame_pointer;
 
--- a/src/share/vm/opto/matcher.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/matcher.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_MATCHER_HPP
+#define SHARE_VM_OPTO_MATCHER_HPP
+
+#include "libadt/vectset.hpp"
+#include "memory/resourceArea.hpp"
+#include "opto/node.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/regmask.hpp"
+
 class Compile;
 class Node;
 class MachNode;
@@ -298,6 +307,10 @@
   // Register for MODL projection of divmodL
   static RegMask modL_proj_mask();
 
+  // Use hardware DIV instruction when it is faster than
+  // a code which use multiply for division by constant.
+  static bool use_asm_for_ldiv_by_con( jlong divisor );
+
   static const RegMask method_handle_invoke_SP_save_mask();
 
   // Java-Interpreter calling convention
@@ -443,3 +456,5 @@
   }
 #endif
 };
+
+#endif // SHARE_VM_OPTO_MATCHER_HPP
--- a/src/share/vm/opto/memnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/memnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,13 +22,27 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "compiler/compileLog.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "opto/addnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/compile.hpp"
+#include "opto/connode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/regmask.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_memnode.cpp.incl"
-
 static Node *step_through_mergemem(PhaseGVN *phase, MergeMemNode *mmem,  const TypePtr *tp, const TypePtr *adr_check, outputStream *st);
 
 //=============================================================================
--- a/src/share/vm/opto/memnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/memnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_MEMNODE_HPP
+#define SHARE_VM_OPTO_MEMNODE_HPP
+
+#include "opto/multnode.hpp"
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 class MultiNode;
@@ -1250,3 +1258,5 @@
   virtual uint match_edge(uint idx) const { return idx==2; }
   virtual const Type *bottom_type() const { return ( AllocatePrefetchStyle == 3 ) ? Type::MEMORY : Type::ABIO; }
 };
+
+#endif // SHARE_VM_OPTO_MEMNODE_HPP
--- a/src/share/vm/opto/mulnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/mulnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,10 +22,16 @@
  *
  */
 
-// Portions of code courtesy of Clifford Click
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
 
-#include "incls/_precompiled.incl"
-#include "incls/_mulnode.cpp.incl"
+// Portions of code courtesy of Clifford Click
 
 
 //=============================================================================
--- a/src/share/vm/opto/mulnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/mulnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_MULNODE_HPP
+#define SHARE_VM_OPTO_MULNODE_HPP
+
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 class PhaseTransform;
@@ -255,3 +262,5 @@
   const Type *bottom_type() const { return TypeLong::LONG; }
   virtual uint ideal_reg() const { return Op_RegL; }
 };
+
+#endif // SHARE_VM_OPTO_MULNODE_HPP
--- a/src/share/vm/opto/multnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/multnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_multnode.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/matcher.hpp"
+#include "opto/multnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/regmask.hpp"
+#include "opto/type.hpp"
 
 //=============================================================================
 //------------------------------MultiNode--------------------------------------
--- a/src/share/vm/opto/multnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/multnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_MULTNODE_HPP
+#define SHARE_VM_OPTO_MULTNODE_HPP
+
+#include "opto/node.hpp"
+
 class Matcher;
 class ProjNode;
 
@@ -82,3 +87,5 @@
   virtual void dump_spec(outputStream *st) const;
 #endif
 };
+
+#endif // SHARE_VM_OPTO_MULTNODE_HPP
--- a/src/share/vm/opto/node.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/node.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_node.cpp.incl"
+#include "precompiled.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/regmask.hpp"
+#include "opto/type.hpp"
+#include "utilities/copy.hpp"
 
 class RegMask;
 // #include "phase.hpp"
--- a/src/share/vm/opto/node.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/node.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_NODE_HPP
+#define SHARE_VM_OPTO_NODE_HPP
+
+#include "libadt/port.hpp"
+#include "libadt/vectset.hpp"
+#include "opto/compile.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
@@ -1554,3 +1562,5 @@
   virtual void dump_spec(outputStream *st) const;
 #endif
 };
+
+#endif // SHARE_VM_OPTO_NODE_HPP
--- a/src/share/vm/opto/opcodes.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/opcodes.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,8 @@
  *
  */
 
+// no precompiled headers
+
 // ----------------------------------------------------------------------------
 // Build a table of class names as strings.  Used both for debugging printouts
 // and in the ADL machine descriptions.
--- a/src/share/vm/opto/opcodes.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/opcodes.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_OPCODES_HPP
+#define SHARE_VM_OPTO_OPCODES_HPP
+
 // Build a big enum of class names to give them dense integer indices
 #define macro(x) Op_##x,
 enum Opcodes {
@@ -42,3 +45,5 @@
 
 // Table of names, indexed by Opcode
 extern const char *NodeClassNames[];
+
+#endif // SHARE_VM_OPTO_OPCODES_HPP
--- a/src/share/vm/opto/optoreg.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/optoreg.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_OPTOREG_HPP
+#define SHARE_VM_OPTO_OPTOREG_HPP
+
 //------------------------------OptoReg----------------------------------------
 // We eventually need Registers for the Real World.  Registers are essentially
 // non-SSA names.  A Register is represented as a number.  Non-regular values
@@ -192,3 +195,5 @@
   OptoRegPair(OptoReg::Name f) { _second = OptoReg::Bad; _first = f; }
   OptoRegPair() { _second = OptoReg::Bad; _first = OptoReg::Bad; }
 };
+
+#endif // SHARE_VM_OPTO_OPTOREG_HPP
--- a/src/share/vm/opto/output.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/output.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,24 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_output.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/assembler.inline.hpp"
+#include "code/debugInfo.hpp"
+#include "code/debugInfoRec.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/oopMap.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/locknode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/output.hpp"
+#include "opto/regalloc.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+#include "opto/type.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/xmlstream.hpp"
 
 extern uint size_java_to_interp();
 extern uint reloc_java_to_interp();
--- a/src/share/vm/opto/output.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/output.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,24 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_OUTPUT_HPP
+#define SHARE_VM_OPTO_OUTPUT_HPP
+
+#include "opto/block.hpp"
+#include "opto/node.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
+
 class Arena;
 class Bundle;
 class Block;
@@ -213,3 +231,5 @@
 #endif
 
 };
+
+#endif // SHARE_VM_OPTO_OUTPUT_HPP
--- a/src/share/vm/opto/parse.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/parse.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_PARSE_HPP
+#define SHARE_VM_OPTO_PARSE_HPP
+
+#include "ci/ciMethodData.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "compiler/methodLiveness.hpp"
+#include "libadt/vectset.hpp"
+#include "oops/generateOopMap.hpp"
+#include "opto/graphKit.hpp"
+#include "opto/subnode.hpp"
+
 class BytecodeParseHistogram;
 class InlineTree;
 class Parse;
@@ -567,3 +578,5 @@
   void dump_bci(int bci);
 #endif
 };
+
+#endif // SHARE_VM_OPTO_PARSE_HPP
--- a/src/share/vm/opto/parse1.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/parse1.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_parse1.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "oops/methodOop.hpp"
+#include "opto/addnode.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/locknode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/parse.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "utilities/copy.hpp"
 
 // Static array so we can figure out which bytecodes stop us from compiling
 // the most. Some of the non-static variables are needed in bytecodeInfo.cpp
--- a/src/share/vm/opto/parse2.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/parse2.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,23 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_parse2.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethodData.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileLog.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/universe.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/parse.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 extern int explicit_null_checks_inserted,
            explicit_null_checks_elided;
--- a/src/share/vm/opto/parse3.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/parse3.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_parse3.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "opto/addnode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/parse.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/handles.inline.hpp"
 
 //=============================================================================
 // Helper methods for _get* and _put* bytecodes
--- a/src/share/vm/opto/parseHelper.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/parseHelper.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_parseHelper.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "compiler/compileLog.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "opto/addnode.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/parse.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 //------------------------------make_dtrace_method_entry_exit ----------------
 // Dtrace -- record entry or exit of a method if compiled with dtrace support
--- a/src/share/vm/opto/phase.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/phase.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_phase.cpp.incl"
+#include "precompiled.hpp"
+#include "code/nmethod.hpp"
+#include "compiler/compileBroker.hpp"
+#include "opto/compile.hpp"
+#include "opto/node.hpp"
+#include "opto/phase.hpp"
 
 #ifndef PRODUCT
 int Phase::_total_bytes_compiled = 0;
--- a/src/share/vm/opto/phase.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/phase.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_PHASE_HPP
+#define SHARE_VM_OPTO_PHASE_HPP
+
+#include "libadt/port.hpp"
+#include "runtime/timer.hpp"
+
 class Compile;
 
 //------------------------------Phase------------------------------------------
@@ -109,3 +115,5 @@
   static void print_timers();
 #endif
 };
+
+#endif // SHARE_VM_OPTO_PHASE_HPP
--- a/src/share/vm/opto/phaseX.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/phaseX.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_phaseX.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/block.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/regalloc.hpp"
+#include "opto/rootnode.hpp"
 
 //=============================================================================
 #define NODE_HASH_MINIMUM_SIZE    255
--- a/src/share/vm/opto/phaseX.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/phaseX.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_PHASEX_HPP
+#define SHARE_VM_OPTO_PHASEX_HPP
+
+#include "libadt/dict.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/resourceArea.hpp"
+#include "opto/memnode.hpp"
+#include "opto/node.hpp"
+#include "opto/phase.hpp"
+#include "opto/type.hpp"
+
 class Compile;
 class ConINode;
 class ConLNode;
@@ -535,3 +546,5 @@
   static void print_statistics();
 #endif
 };
+
+#endif // SHARE_VM_OPTO_PHASEX_HPP
--- a/src/share/vm/opto/postaloc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/postaloc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_postaloc.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/machnode.hpp"
 
 // see if this register kind does not requires two registers
 static bool is_single_register(uint x) {
--- a/src/share/vm/opto/reg_split.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/reg_split.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_reg_split.cpp.incl"
+#include "precompiled.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/c2compiler.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
 
 //------------------------------Split--------------------------------------
 // Walk the graph in RPO and for each lrg which spills, propagate reaching
--- a/src/share/vm/opto/regalloc.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/regalloc.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_regalloc.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/regalloc.hpp"
 
 static const int NodeRegsOverflowSize = 200;
 
--- a/src/share/vm/opto/regalloc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/regalloc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_REGALLOC_HPP
+#define SHARE_VM_OPTO_REGALLOC_HPP
+
+#include "code/vmreg.hpp"
+#include "opto/block.hpp"
+#include "opto/matcher.hpp"
+#include "opto/phase.hpp"
+
 class Node;
 class Matcher;
 class PhaseCFG;
@@ -131,3 +139,5 @@
   static void print_statistics();
 #endif
 };
+
+#endif // SHARE_VM_OPTO_REGALLOC_HPP
--- a/src/share/vm/opto/regmask.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/regmask.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,21 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_regmask.cpp.incl"
+#include "precompiled.hpp"
+#include "opto/compile.hpp"
+#include "opto/regmask.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
 
 #define RM_SIZE _RM_SIZE /* a constant private to the class RegMask */
 
--- a/src/share/vm/opto/regmask.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/regmask.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,25 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_REGMASK_HPP
+#define SHARE_VM_OPTO_REGMASK_HPP
+
+#include "code/vmreg.hpp"
+#include "libadt/port.hpp"
+#include "opto/optoreg.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/adGlobals_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/adGlobals_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/adGlobals_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/adGlobals_zero.hpp"
+#endif
+
 // Some fun naming (textual) substitutions:
 //
 // RegMask::get_low_elem() ==> RegMask::find_first_elem()
@@ -262,3 +281,5 @@
 
 // Do not use this constant directly in client code!
 #undef RM_SIZE
+
+#endif // SHARE_VM_OPTO_REGMASK_HPP
--- a/src/share/vm/opto/rootnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/rootnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,15 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_rootnode.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/regmask.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/subnode.hpp"
+#include "opto/type.hpp"
 
 //------------------------------Ideal------------------------------------------
 // Remove dead inputs
--- a/src/share/vm/opto/rootnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/rootnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_ROOTNODE_HPP
+#define SHARE_VM_OPTO_ROOTNODE_HPP
+
+#include "opto/loopnode.hpp"
+
 //------------------------------RootNode---------------------------------------
 // The one-and-only before-all-else and after-all-else RootNode.  The RootNode
 // represents what happens if the user runs the whole program repeatedly.  The
@@ -60,3 +65,5 @@
   virtual uint ideal_reg() const { return NotAMachineReg; }
   virtual uint match_edge(uint idx) const { return 0; }
 };
+
+#endif // SHARE_VM_OPTO_ROOTNODE_HPP
--- a/src/share/vm/opto/runtime.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/runtime.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,64 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_runtime.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/compiledIC.hpp"
+#include "code/icBuffer.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "compiler/oopMap.hpp"
+#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/barrierSet.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/graphKit.hpp"
+#include "opto/machnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/subnode.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
+#include "runtime/vframe_hp.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/preserveException.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
 
 
 // For debugging purposes:
--- a/src/share/vm/opto/runtime.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/runtime.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_RUNTIME_HPP
+#define SHARE_VM_OPTO_RUNTIME_HPP
+
+#include "code/codeBlob.hpp"
+#include "opto/machnode.hpp"
+#include "opto/type.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/vframe.hpp"
+
 //------------------------------OptoRuntime------------------------------------
 // Opto compiler runtime routines
 //
@@ -298,3 +308,5 @@
  static void          print_named_counters();
 
 };
+
+#endif // SHARE_VM_OPTO_RUNTIME_HPP
--- a/src/share/vm/opto/split_if.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/split_if.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,11 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_split_if.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/callnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/loopnode.hpp"
 
 
 //------------------------------split_thru_region------------------------------
--- a/src/share/vm/opto/stringopts.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/stringopts.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stringopts.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callGenerator.hpp"
+#include "opto/callnode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/graphKit.hpp"
+#include "opto/idealKit.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/runtime.hpp"
+#include "opto/stringopts.hpp"
+#include "opto/subnode.hpp"
 
 #define __ kit.
 
--- a/src/share/vm/opto/stringopts.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/stringopts.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_STRINGOPTS_HPP
+#define SHARE_VM_OPTO_STRINGOPTS_HPP
+
+#include "opto/node.hpp"
+#include "opto/phaseX.hpp"
+
 class StringConcat;
 
 class PhaseStringOpts : public Phase {
@@ -81,3 +87,5 @@
  public:
   PhaseStringOpts(PhaseGVN* gvn, Unique_Node_List* worklist);
 };
+
+#endif // SHARE_VM_OPTO_STRINGOPTS_HPP
--- a/src/share/vm/opto/subnode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/subnode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,12 +22,25 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/connode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/subnode.hpp"
+#include "runtime/sharedRuntime.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_subnode.cpp.incl"
 #include "math.h"
 
 //=============================================================================
--- a/src/share/vm/opto/subnode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/subnode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_SUBNODE_HPP
+#define SHARE_VM_OPTO_SUBNODE_HPP
+
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 //------------------------------SUBNode----------------------------------------
@@ -529,3 +536,5 @@
   const Type *bottom_type() const { return TypeInt::SHORT; }
   virtual uint ideal_reg() const { return Op_RegI; }
 };
+
+#endif // SHARE_VM_OPTO_SUBNODE_HPP
--- a/src/share/vm/opto/superword.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/superword.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -21,8 +21,19 @@
  * questions.
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_superword.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "libadt/vectset.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/addnode.hpp"
+#include "opto/callnode.hpp"
+#include "opto/divnode.hpp"
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/superword.hpp"
+#include "opto/vectornode.hpp"
 
 //
 //                  S U P E R W O R D   T R A N S F O R M
--- a/src/share/vm/opto/superword.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/superword.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -21,6 +21,16 @@
  * questions.
  */
 
+#ifndef SHARE_VM_OPTO_SUPERWORD_HPP
+#define SHARE_VM_OPTO_SUPERWORD_HPP
+
+#include "opto/connode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/node.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/vectornode.hpp"
+#include "utilities/growableArray.hpp"
+
 //
 //                  S U P E R W O R D   T R A N S F O R M
 //
@@ -507,3 +517,5 @@
 
   static const OrderedPair initial;
 };
+
+#endif // SHARE_VM_OPTO_SUPERWORD_HPP
--- a/src/share/vm/opto/type.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/type.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,13 +22,28 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "compiler/compileLog.hpp"
+#include "libadt/dict.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/klassKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "opto/matcher.hpp"
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+#include "opto/type.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
 
-#include "incls/_precompiled.incl"
-#include "incls/_type.cpp.incl"
-
 // Dictionary of types shared among compilations.
 Dict* Type::_shared_type_dict = NULL;
 
--- a/src/share/vm/opto/type.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/type.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_OPTO_TYPE_HPP
+#define SHARE_VM_OPTO_TYPE_HPP
+
+#include "libadt/port.hpp"
+#include "opto/adlcVMDeps.hpp"
+#include "runtime/handles.hpp"
+
 // Portions of code courtesy of Clifford Click
 
 // Optimization - Graph Style
@@ -1288,3 +1295,5 @@
 #define ConvX2L(x)   ConvI2L(x)
 
 #endif
+
+#endif // SHARE_VM_OPTO_TYPE_HPP
--- a/src/share/vm/opto/vectornode.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/vectornode.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -21,8 +21,10 @@
  * questions.
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_vectornode.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "opto/connode.hpp"
+#include "opto/vectornode.hpp"
 
 //------------------------------VectorNode--------------------------------------
 
--- a/src/share/vm/opto/vectornode.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/opto/vectornode.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -21,6 +21,14 @@
  * questions.
  */
 
+#ifndef SHARE_VM_OPTO_VECTORNODE_HPP
+#define SHARE_VM_OPTO_VECTORNODE_HPP
+
+#include "opto/matcher.hpp"
+#include "opto/memnode.hpp"
+#include "opto/node.hpp"
+#include "opto/opcodes.hpp"
+
 //------------------------------VectorNode--------------------------------------
 // Vector Operation
 class VectorNode : public Node {
@@ -1132,3 +1140,5 @@
   virtual const Type *bottom_type() const { return Type::DOUBLE; }
   virtual uint ideal_reg() const { return Op_RegD; }
 };
+
+#endif // SHARE_VM_OPTO_VECTORNODE_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/precompiled.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,327 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+# include "asm/assembler.hpp"
+# include "asm/assembler.inline.hpp"
+# include "asm/codeBuffer.hpp"
+# include "asm/register.hpp"
+# include "ci/ciArray.hpp"
+# include "ci/ciArrayKlass.hpp"
+# include "ci/ciClassList.hpp"
+# include "ci/ciConstant.hpp"
+# include "ci/ciConstantPoolCache.hpp"
+# include "ci/ciEnv.hpp"
+# include "ci/ciExceptionHandler.hpp"
+# include "ci/ciField.hpp"
+# include "ci/ciFlags.hpp"
+# include "ci/ciInstance.hpp"
+# include "ci/ciInstanceKlass.hpp"
+# include "ci/ciInstanceKlassKlass.hpp"
+# include "ci/ciKlass.hpp"
+# include "ci/ciKlassKlass.hpp"
+# include "ci/ciMethod.hpp"
+# include "ci/ciNullObject.hpp"
+# include "ci/ciObjArrayKlass.hpp"
+# include "ci/ciObject.hpp"
+# include "ci/ciObjectFactory.hpp"
+# include "ci/ciSignature.hpp"
+# include "ci/ciStreams.hpp"
+# include "ci/ciSymbol.hpp"
+# include "ci/ciType.hpp"
+# include "ci/ciTypeArrayKlass.hpp"
+# include "ci/ciUtilities.hpp"
+# include "ci/compilerInterface.hpp"
+# include "classfile/classFileParser.hpp"
+# include "classfile/classFileStream.hpp"
+# include "classfile/classLoader.hpp"
+# include "classfile/javaClasses.hpp"
+# include "classfile/symbolTable.hpp"
+# include "classfile/systemDictionary.hpp"
+# include "classfile/vmSymbols.hpp"
+# include "code/codeBlob.hpp"
+# include "code/codeCache.hpp"
+# include "code/compressedStream.hpp"
+# include "code/debugInfo.hpp"
+# include "code/debugInfoRec.hpp"
+# include "code/dependencies.hpp"
+# include "code/exceptionHandlerTable.hpp"
+# include "code/jvmticmlr.h"
+# include "code/location.hpp"
+# include "code/nmethod.hpp"
+# include "code/oopRecorder.hpp"
+# include "code/pcDesc.hpp"
+# include "code/relocInfo.hpp"
+# include "code/stubs.hpp"
+# include "code/vmreg.hpp"
+# include "compiler/disassembler.hpp"
+# include "compiler/methodLiveness.hpp"
+# include "compiler/oopMap.hpp"
+# include "gc_implementation/shared/adaptiveSizePolicy.hpp"
+# include "gc_implementation/shared/ageTable.hpp"
+# include "gc_implementation/shared/allocationStats.hpp"
+# include "gc_implementation/shared/cSpaceCounters.hpp"
+# include "gc_implementation/shared/collectorCounters.hpp"
+# include "gc_implementation/shared/gSpaceCounters.hpp"
+# include "gc_implementation/shared/gcStats.hpp"
+# include "gc_implementation/shared/gcUtil.hpp"
+# include "gc_implementation/shared/generationCounters.hpp"
+# include "gc_implementation/shared/immutableSpace.hpp"
+# include "gc_implementation/shared/markSweep.hpp"
+# include "gc_implementation/shared/markSweep.inline.hpp"
+# include "gc_implementation/shared/mutableSpace.hpp"
+# include "gc_implementation/shared/spaceCounters.hpp"
+# include "gc_implementation/shared/spaceDecorator.hpp"
+# include "gc_interface/collectedHeap.hpp"
+# include "gc_interface/collectedHeap.inline.hpp"
+# include "gc_interface/gcCause.hpp"
+# include "interpreter/abstractInterpreter.hpp"
+# include "interpreter/bytecode.hpp"
+# include "interpreter/bytecodeHistogram.hpp"
+# include "interpreter/bytecodeInterpreter.hpp"
+# include "interpreter/bytecodeInterpreter.inline.hpp"
+# include "interpreter/bytecodeTracer.hpp"
+# include "interpreter/bytecodes.hpp"
+# include "interpreter/cppInterpreter.hpp"
+# include "interpreter/interpreter.hpp"
+# include "interpreter/invocationCounter.hpp"
+# include "interpreter/linkResolver.hpp"
+# include "interpreter/templateInterpreter.hpp"
+# include "interpreter/templateTable.hpp"
+# include "jvmtifiles/jvmti.h"
+# include "memory/allocation.hpp"
+# include "memory/allocation.inline.hpp"
+# include "memory/barrierSet.hpp"
+# include "memory/barrierSet.inline.hpp"
+# include "memory/blockOffsetTable.hpp"
+# include "memory/blockOffsetTable.inline.hpp"
+# include "memory/cardTableModRefBS.hpp"
+# include "memory/collectorPolicy.hpp"
+# include "memory/compactingPermGenGen.hpp"
+# include "memory/defNewGeneration.hpp"
+# include "memory/gcLocker.hpp"
+# include "memory/genCollectedHeap.hpp"
+# include "memory/genOopClosures.hpp"
+# include "memory/genRemSet.hpp"
+# include "memory/generation.hpp"
+# include "memory/generation.inline.hpp"
+# include "memory/heap.hpp"
+# include "memory/iterator.hpp"
+# include "memory/memRegion.hpp"
+# include "memory/modRefBarrierSet.hpp"
+# include "memory/oopFactory.hpp"
+# include "memory/permGen.hpp"
+# include "memory/referencePolicy.hpp"
+# include "memory/referenceProcessor.hpp"
+# include "memory/resourceArea.hpp"
+# include "memory/sharedHeap.hpp"
+# include "memory/space.hpp"
+# include "memory/space.inline.hpp"
+# include "memory/specialized_oop_closures.hpp"
+# include "memory/threadLocalAllocBuffer.hpp"
+# include "memory/threadLocalAllocBuffer.inline.hpp"
+# include "memory/universe.hpp"
+# include "memory/universe.inline.hpp"
+# include "memory/watermark.hpp"
+# include "oops/arrayKlass.hpp"
+# include "oops/arrayOop.hpp"
+# include "oops/constMethodOop.hpp"
+# include "oops/constantPoolOop.hpp"
+# include "oops/cpCacheOop.hpp"
+# include "oops/instanceKlass.hpp"
+# include "oops/instanceOop.hpp"
+# include "oops/instanceRefKlass.hpp"
+# include "oops/klass.hpp"
+# include "oops/klassOop.hpp"
+# include "oops/klassPS.hpp"
+# include "oops/klassVtable.hpp"
+# include "oops/markOop.hpp"
+# include "oops/markOop.inline.hpp"
+# include "oops/methodDataOop.hpp"
+# include "oops/methodOop.hpp"
+# include "oops/objArrayKlass.hpp"
+# include "oops/objArrayOop.hpp"
+# include "oops/oop.hpp"
+# include "oops/oop.inline.hpp"
+# include "oops/oop.inline2.hpp"
+# include "oops/oopsHierarchy.hpp"
+# include "oops/symbolOop.hpp"
+# include "oops/typeArrayKlass.hpp"
+# include "oops/typeArrayOop.hpp"
+# include "prims/hpi_imported.h"
+# include "prims/jni.h"
+# include "prims/jvm.h"
+# include "prims/jvmtiExport.hpp"
+# include "prims/methodHandles.hpp"
+# include "runtime/arguments.hpp"
+# include "runtime/atomic.hpp"
+# include "runtime/deoptimization.hpp"
+# include "runtime/extendedPC.hpp"
+# include "runtime/fieldDescriptor.hpp"
+# include "runtime/fieldType.hpp"
+# include "runtime/frame.hpp"
+# include "runtime/frame.inline.hpp"
+# include "runtime/globals.hpp"
+# include "runtime/globals_extension.hpp"
+# include "runtime/handles.hpp"
+# include "runtime/handles.inline.hpp"
+# include "runtime/hpi.hpp"
+# include "runtime/icache.hpp"
+# include "runtime/init.hpp"
+# include "runtime/interfaceSupport.hpp"
+# include "runtime/java.hpp"
+# include "runtime/javaCalls.hpp"
+# include "runtime/javaFrameAnchor.hpp"
+# include "runtime/jniHandles.hpp"
+# include "runtime/monitorChunk.hpp"
+# include "runtime/mutex.hpp"
+# include "runtime/mutexLocker.hpp"
+# include "runtime/objectMonitor.hpp"
+# include "runtime/orderAccess.hpp"
+# include "runtime/os.hpp"
+# include "runtime/osThread.hpp"
+# include "runtime/perfData.hpp"
+# include "runtime/perfMemory.hpp"
+# include "runtime/prefetch.hpp"
+# include "runtime/reflection.hpp"
+# include "runtime/reflectionCompat.hpp"
+# include "runtime/reflectionUtils.hpp"
+# include "runtime/registerMap.hpp"
+# include "runtime/safepoint.hpp"
+# include "runtime/sharedRuntime.hpp"
+# include "runtime/signature.hpp"
+# include "runtime/stackValue.hpp"
+# include "runtime/stackValueCollection.hpp"
+# include "runtime/stubCodeGenerator.hpp"
+# include "runtime/stubRoutines.hpp"
+# include "runtime/synchronizer.hpp"
+# include "runtime/thread.hpp"
+# include "runtime/threadLocalStorage.hpp"
+# include "runtime/timer.hpp"
+# include "runtime/unhandledOops.hpp"
+# include "runtime/vframe.hpp"
+# include "runtime/virtualspace.hpp"
+# include "runtime/vmThread.hpp"
+# include "runtime/vm_operations.hpp"
+# include "runtime/vm_version.hpp"
+# include "services/lowMemoryDetector.hpp"
+# include "services/memoryPool.hpp"
+# include "services/memoryService.hpp"
+# include "services/memoryUsage.hpp"
+# include "utilities/accessFlags.hpp"
+# include "utilities/array.hpp"
+# include "utilities/bitMap.hpp"
+# include "utilities/bitMap.inline.hpp"
+# include "utilities/constantTag.hpp"
+# include "utilities/copy.hpp"
+# include "utilities/debug.hpp"
+# include "utilities/exceptions.hpp"
+# include "utilities/globalDefinitions.hpp"
+# include "utilities/growableArray.hpp"
+# include "utilities/hashtable.hpp"
+# include "utilities/histogram.hpp"
+# include "utilities/macros.hpp"
+# include "utilities/numberSeq.hpp"
+# include "utilities/ostream.hpp"
+# include "utilities/preserveException.hpp"
+# include "utilities/sizes.hpp"
+# include "utilities/taskqueue.hpp"
+# include "utilities/top.hpp"
+# include "utilities/utf8.hpp"
+# include "utilities/workgroup.hpp"
+# include "utilities/yieldingWorkgroup.hpp"
+#ifdef COMPILER2
+# include "libadt/dict.hpp"
+# include "libadt/port.hpp"
+# include "libadt/set.hpp"
+# include "libadt/vectset.hpp"
+# include "opto/addnode.hpp"
+# include "opto/adlcVMDeps.hpp"
+# include "opto/block.hpp"
+# include "opto/c2_globals.hpp"
+# include "opto/callnode.hpp"
+# include "opto/cfgnode.hpp"
+# include "opto/compile.hpp"
+# include "opto/connode.hpp"
+# include "opto/idealGraphPrinter.hpp"
+# include "opto/loopnode.hpp"
+# include "opto/machnode.hpp"
+# include "opto/matcher.hpp"
+# include "opto/memnode.hpp"
+# include "opto/mulnode.hpp"
+# include "opto/multnode.hpp"
+# include "opto/node.hpp"
+# include "opto/opcodes.hpp"
+# include "opto/optoreg.hpp"
+# include "opto/phase.hpp"
+# include "opto/phaseX.hpp"
+# include "opto/regalloc.hpp"
+# include "opto/regmask.hpp"
+# include "opto/runtime.hpp"
+# include "opto/subnode.hpp"
+# include "opto/type.hpp"
+# include "opto/vectornode.hpp"
+#endif // COMPILER2
+#ifdef COMPILER1
+# include "c1/c1_Compilation.hpp"
+# include "c1/c1_Defs.hpp"
+# include "c1/c1_FrameMap.hpp"
+# include "c1/c1_LIR.hpp"
+# include "c1/c1_MacroAssembler.hpp"
+# include "c1/c1_ValueType.hpp"
+# include "c1/c1_globals.hpp"
+#endif // COMPILER1
+#ifndef SERIALGC
+# include "gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp"
+# include "gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp"
+# include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+# include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+# include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
+# include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
+# include "gc_implementation/concurrentMarkSweep/freeList.hpp"
+# include "gc_implementation/concurrentMarkSweep/promotionInfo.hpp"
+# include "gc_implementation/g1/dirtyCardQueue.hpp"
+# include "gc_implementation/g1/g1BlockOffsetTable.hpp"
+# include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp"
+# include "gc_implementation/g1/g1OopClosures.hpp"
+# include "gc_implementation/g1/g1_globals.hpp"
+# include "gc_implementation/g1/g1_specialized_oop_closures.hpp"
+# include "gc_implementation/g1/ptrQueue.hpp"
+# include "gc_implementation/g1/satbQueue.hpp"
+# include "gc_implementation/parNew/parGCAllocBuffer.hpp"
+# include "gc_implementation/parNew/parOopClosures.hpp"
+# include "gc_implementation/parallelScavenge/objectStartArray.hpp"
+# include "gc_implementation/parallelScavenge/parMarkBitMap.hpp"
+# include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+# include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp"
+# include "gc_implementation/parallelScavenge/psCompactionManager.hpp"
+# include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp"
+# include "gc_implementation/parallelScavenge/psGenerationCounters.hpp"
+# include "gc_implementation/parallelScavenge/psOldGen.hpp"
+# include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+# include "gc_implementation/parallelScavenge/psPermGen.hpp"
+# include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+# include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+# include "gc_implementation/shared/gcAdaptivePolicyCounters.hpp"
+# include "gc_implementation/shared/gcPolicyCounters.hpp"
+#endif // SERIALGC
--- a/src/share/vm/prims/evmCompat.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/evmCompat.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,14 +22,14 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "utilities/debug.hpp"
+
 // This file contains definitions for functions that exist
 // in the ExactVM, but not in HotSpot. They are stubbed out
 // here to prevent linker errors when attempting to use HotSpot
 // with the ExactVM jdk.
 
-# include "incls/_precompiled.incl"
-# include "incls/_evmCompat.cpp.incl"
-
 extern "C" void JVM_Process_DestroyProcess(void);
 extern "C" void JVM_Process_ForkAndExec(void);
 extern "C" void JVM_Process_WaitForProcessExit(void);
--- a/src/share/vm/prims/forte.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/forte.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_forte.cpp.incl"
+#include "precompiled.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/pcDesc.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/space.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "prims/forte.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
 
 // These name match the names reported by the forte quality kit
 enum {
--- a/src/share/vm/prims/forte.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/forte.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_FORTE_HPP
+#define SHARE_VM_PRIMS_FORTE_HPP
+
 // Interface to Forte support.
 
 class Forte : AllStatic {
@@ -30,3 +33,5 @@
                                                  KERNEL_RETURN;
                                                  // register internal VM stub
 };
+
+#endif // SHARE_VM_PRIMS_FORTE_HPP
--- a/src/share/vm/prims/hpi_imported.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/hpi_imported.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -36,8 +36,10 @@
  * The files are included verbatim expect for local includes removed from hpi.h.
  */
 
-#ifndef _JAVASOFT_HPI_H_
-#define _JAVASOFT_HPI_H_
+#ifndef SHARE_VM_PRIMS_HPI_IMPORTED_H
+#define SHARE_VM_PRIMS_HPI_IMPORTED_H
+
+#include "jni.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -314,4 +316,4 @@
 }
 #endif
 
-#endif /* !_JAVASOFT_HPI_H_ */
+#endif // SHARE_VM_PRIMS_HPI_IMPORTED_H
--- a/src/share/vm/prims/jni.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jni.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,72 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jni.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "prims/jni.h"
+#include "prims/jniCheck.hpp"
+#include "prims/jniFastGetField.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/runtimeService.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/events.hpp"
+#include "utilities/histogram.hpp"
+#ifdef TARGET_ARCH_x86
+# include "jniTypes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "jniTypes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "jniTypes_zero.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 static jint CurrentVersion = JNI_VERSION_1_6;
 
--- a/src/share/vm/prims/jni.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jni.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/src/share/vm/prims/jniCheck.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jniCheck.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,29 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jniCheck.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jni.h"
+#include "prims/jniCheck.hpp"
+#include "prims/jvm_misc.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
+#include "runtime/thread.hpp"
+#ifdef TARGET_ARCH_x86
+# include "jniTypes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "jniTypes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "jniTypes_zero.hpp"
+#endif
 
 
 // Heap objects are allowed to be directly referenced only in VM code,
--- a/src/share/vm/prims/jniCheck.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jniCheck.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JNICHECK_HPP
+#define SHARE_VM_PRIMS_JNICHECK_HPP
+
+#ifndef KERNEL
+#include "runtime/thread.hpp"
+#endif
+
 extern "C" {
   // Report a JNI failure caught by -Xcheck:jni.  Perform a core dump.
   // Note: two variations -- one to be called when in VM state (e.g. when
@@ -50,3 +57,5 @@
   static void validate_call_class(JavaThread* thr, jclass clazz, jmethodID method_id);
   static methodOop validate_jmethod_id(JavaThread* thr, jmethodID method_id);
 };
+
+#endif // SHARE_VM_PRIMS_JNICHECK_HPP
--- a/src/share/vm/prims/jniFastGetField.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jniFastGetField.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,8 +22,8 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jniFastGetField.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jniFastGetField.hpp"
 
 address JNI_FastGetField::speculative_load_pclist [LIST_CAPACITY];
 address JNI_FastGetField::slowcase_entry_pclist   [LIST_CAPACITY];
--- a/src/share/vm/prims/jniFastGetField.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jniFastGetField.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JNIFASTGETFIELD_HPP
+#define SHARE_VM_PRIMS_JNIFASTGETFIELD_HPP
+
+#include "memory/allocation.hpp"
+#include "prims/jvm_misc.hpp"
+
 // Basic logic of a fast version of jni_Get<Primitive>Field:
 //
 // (See safepoint.hpp for a description of _safepoint_counter)
@@ -92,3 +98,5 @@
   // for example, for debugging purpose, in which case we need the mapping also.
   static address find_slowcase_pc(address pc);
 };
+
+#endif // SHARE_VM_PRIMS_JNIFASTGETFIELD_HPP
--- a/src/share/vm/prims/jni_md.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jni_md.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -24,7 +24,16 @@
  */
 
 /* Switch to the correct jni_md.h file without reliance on -I options. */
-#include "incls/_jni_pd.h.incl"
+#ifdef TARGET_ARCH_x86
+# include "jni_x86.h"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "jni_sparc.h"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "jni_zero.h"
+#endif
+
 
 /*
   The local copies of JNI header files may be refreshed
--- a/src/share/vm/prims/jvm.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvm.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,61 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_jvm.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaAssertions.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "prims/nativeLookup.hpp"
+#include "prims/privilegedStack.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/dtraceJSDT.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
+#include "runtime/os.hpp"
+#include "runtime/perfData.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/attachListener.hpp"
+#include "services/management.hpp"
+#include "services/threadService.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/events.hpp"
+#include "utilities/histogram.hpp"
+#include "utilities/top.hpp"
+#include "utilities/utf8.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "hpi_linux.hpp"
+# include "jvm_linux.h"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "hpi_solaris.hpp"
+# include "jvm_solaris.h"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "hpi_windows.hpp"
+# include "jvm_windows.h"
+#endif
+
 #include <errno.h>
 
 HS_DTRACE_PROBE_DECL1(hotspot, thread__sleep__begin, long long);
--- a/src/share/vm/prims/jvm.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvm.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,22 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVM_H
+#define SHARE_VM_PRIMS_JVM_H
+
+#include "prims/jni.h"
+#include "runtime/reflectionCompat.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "jvm_linux.h"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "jvm_solaris.h"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "jvm_windows.h"
+#endif
+
 #ifndef _JAVASOFT_JVM_H_
 #define _JAVASOFT_JVM_H_
 
@@ -1047,7 +1063,8 @@
     JVM_CONSTANT_NameAndType,
     JVM_CONSTANT_MethodHandle           = 15,  // JSR 292
     JVM_CONSTANT_MethodType             = 16,  // JSR 292
-    JVM_CONSTANT_InvokeDynamic          = 17  // JSR 292
+    JVM_CONSTANT_InvokeDynamicTrans     = 17,  // JSR 292, only occurs in old class files
+    JVM_CONSTANT_InvokeDynamic          = 18   // JSR 292
 };
 
 /* JVM_CONSTANT_MethodHandle subtypes */
@@ -1704,3 +1721,5 @@
 #endif /* __cplusplus */
 
 #endif /* !_JAVASOFT_JVM_H_ */
+
+#endif // SHARE_VM_PRIMS_JVM_H
--- a/src/share/vm/prims/jvm_misc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvm_misc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVM_MISC_HPP
+#define SHARE_VM_PRIMS_JVM_MISC_HPP
+
+#include "prims/jni.h"
+#include "runtime/handles.hpp"
+
 // Useful entry points shared by JNI and JVM interface.
 // We do not allow real JNI or JVM entry point to call each other.
 
@@ -87,3 +93,5 @@
 address jni_GetLongField_addr();
 address jni_GetFloatField_addr();
 address jni_GetDoubleField_addr();
+
+#endif // SHARE_VM_PRIMS_JVM_MISC_HPP
--- a/src/share/vm/prims/jvmtiAgentThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiAgentThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTIAGENTTHREAD_HPP
+#define SHARE_VM_PRIMS_JVMTIAGENTTHREAD_HPP
+
+#include "jvmtifiles/jvmtiEnv.hpp"
+
 //
 // class JvmtiAgentThread
 //
@@ -42,3 +47,5 @@
   static void start_function_wrapper(JavaThread *thread, TRAPS);
   void call_start_function();
 };
+
+#endif // SHARE_VM_PRIMS_JVMTIAGENTTHREAD_HPP
--- a/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -21,9 +21,21 @@
  * questions.
  *
  */
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiClassFileReconstituter.cpp.incl"
 
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "prims/jvmtiClassFileReconstituter.hpp"
+#include "runtime/signature.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
 // FIXME: add Deprecated, LVT, LVTT attributes
 // FIXME: fix Synthetic attribute
 // FIXME: per Serguei, add error return handling for constantPoolOopDesc::copy_cpool_bytes()
--- a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTICLASSFILERECONSTITUTER_HPP
+#define SHARE_VM_PRIMS_JVMTICLASSFILERECONSTITUTER_HPP
+
+#include "jvmtifiles/jvmtiEnv.hpp"
+
 
 class JvmtiConstantPoolReconstituter : public StackObj {
  private:
@@ -144,3 +149,5 @@
 
   static void copy_bytecodes(methodHandle method, unsigned char* bytecodes);
 };
+
+#endif // SHARE_VM_PRIMS_JVMTICLASSFILERECONSTITUTER_HPP
--- a/src/share/vm/prims/jvmtiCodeBlobEvents.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiCodeBlobEvents.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiCodeBlobEvents.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeBlob.hpp"
+#include "code/codeCache.hpp"
+#include "code/scopeDesc.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiCodeBlobEvents.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/vmThread.hpp"
 
 // Support class to collect a list of the non-nmethod CodeBlobs in
 // the CodeCache.
--- a/src/share/vm/prims/jvmtiCodeBlobEvents.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiCodeBlobEvents.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,12 @@
  *
  */
 
-#ifndef _JVMTI_CODE_BLOB_EVENTS_H_
-#define _JVMTI_CODE_BLOB_EVENTS_H_
+#ifndef SHARE_VM_PRIMS_JVMTICODEBLOBEVENTS_HPP
+#define SHARE_VM_PRIMS_JVMTICODEBLOBEVENTS_HPP
+
+#ifndef JVMTI_KERNEL
+#include "jvmtifiles/jvmti.h"
+#endif
 
 // forward declaration
 class JvmtiEnv;
@@ -51,4 +55,4 @@
                                             jint *map_length);
 };
 
-#endif
+#endif // SHARE_VM_PRIMS_JVMTICODEBLOBEVENTS_HPP
--- a/src/share/vm/prims/jvmtiEnter.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnter.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -21,3 +21,14 @@
  * questions.
  *
  */
+
+#ifndef SHARE_VM_PRIMS_JVMTIENTER_HPP
+#define SHARE_VM_PRIMS_JVMTIENTER_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "runtime/interfaceSupport.hpp"
+
+#endif // SHARE_VM_PRIMS_JVMTIENTER_HPP
--- a/src/share/vm/prims/jvmtiEnter.xsl	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnter.xsl	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!--
- Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 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
@@ -36,8 +36,10 @@
 <xsl:template match="specification">
   <xsl:call-template name="sourceHeader"/>
   <xsl:text>
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiEnter.cpp.incl"
+# include "precompiled.hpp"
+# include "prims/jvmtiEnter.hpp"
+# include "prims/jvmtiRawMonitor.hpp"
+# include "prims/jvmtiUtil.hpp"
 
 </xsl:text>
 
--- a/src/share/vm/prims/jvmtiEnv.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnv.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,9 +22,53 @@
  *
  */
 
-
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiEnv.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/cpCacheOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "prims/jniCheck.hpp"
+#include "prims/jvm_misc.hpp"
+#include "prims/jvmtiAgentThread.hpp"
+#include "prims/jvmtiClassFileReconstituter.hpp"
+#include "prims/jvmtiCodeBlobEvents.hpp"
+#include "prims/jvmtiExtensions.hpp"
+#include "prims/jvmtiGetLoadedClasses.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiManageCapabilities.hpp"
+#include "prims/jvmtiRawMonitor.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+#include "prims/jvmtiTagMap.hpp"
+#include "prims/jvmtiThreadState.inline.hpp"
+#include "prims/jvmtiUtil.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/reflectionUtils.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vmThread.hpp"
+#include "services/threadService.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/preserveException.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 
 
 #define FIXLATER 0 // REMOVE this when completed.
@@ -1407,8 +1451,7 @@
     // If any of the top 2 frames is a compiled one, need to deoptimize it
     for (int i = 0; i < 2; i++) {
       if (!is_interpreted[i]) {
-        VM_DeoptimizeFrame op(java_thread, frame_sp[i]);
-        VMThread::execute(&op);
+        Deoptimization::deoptimize_frame(java_thread, frame_sp[i]);
       }
     }
 
--- a/src/share/vm/prims/jvmtiEnv.xsl	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnv.xsl	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!--
- Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 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
@@ -36,8 +36,6 @@
 <xsl:template match="specification">
   <xsl:call-template name="sourceHeader"/>
   <xsl:text>
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiEnv.cpp.incl"
 
 // end file prefix - do not modify or remove this line
 </xsl:text>
--- a/src/share/vm/prims/jvmtiEnvBase.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnvBase.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -21,9 +21,30 @@
  * questions.
  *
  */
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiEnvBase.cpp.incl"
 
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "prims/jvmtiEnvBase.hpp"
+#include "prims/jvmtiEventController.inline.hpp"
+#include "prims/jvmtiExtensions.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiManageCapabilities.hpp"
+#include "prims/jvmtiTagMap.hpp"
+#include "prims/jvmtiThreadState.inline.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/objectMonitor.inline.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframe_hp.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
 
 ///////////////////////////////////////////////////////////////
 //
@@ -1322,8 +1343,7 @@
     if (!vf->fr().can_be_deoptimized()) {
       return JVMTI_ERROR_OPAQUE_FRAME;
     }
-    VM_DeoptimizeFrame deopt(java_thread, jvf->fr().id());
-    VMThread::execute(&deopt);
+    Deoptimization::deoptimize_frame(java_thread, jvf->fr().id());
   }
 
   // Get information about method return type
--- a/src/share/vm/prims/jvmtiEnvBase.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnvBase.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#ifndef _JAVA_JVMTIENVBASE_H_
-#define _JAVA_JVMTIENVBASE_H_
+#ifndef SHARE_VM_PRIMS_JVMTIENVBASE_HPP
+#define SHARE_VM_PRIMS_JVMTIENVBASE_HPP
+
+#include "classfile/classLoader.hpp"
+#include "prims/jvmtiEnvThreadState.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/growableArray.hpp"
 
 //
 // Forward Declarations
@@ -597,4 +608,4 @@
   jvmtiError error() { return _error;}
 };
 
-#endif   /* _JAVA_JVMTIENVBASE_H_ */
+#endif // SHARE_VM_PRIMS_JVMTIENVBASE_HPP
--- a/src/share/vm/prims/jvmtiEnvThreadState.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnvThreadState.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiEnvThreadState.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiEnvThreadState.hpp"
+#include "prims/jvmtiEventController.inline.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vm_operations.hpp"
 
 
 ///////////////////////////////////////////////////////////////
--- a/src/share/vm/prims/jvmtiEnvThreadState.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEnvThreadState.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -21,8 +21,17 @@
  * questions.
  *
  */
-#ifndef _JAVA_JVMTIENVTHREADSTATE_H_
-#define _JAVA_JVMTIENVTHREADSTATE_H_
+
+#ifndef SHARE_VM_PRIMS_JVMTIENVTHREADSTATE_HPP
+#define SHARE_VM_PRIMS_JVMTIENVTHREADSTATE_HPP
+
+#include "jvmtifiles/jvmti.h"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/growableArray.hpp"
 
 class JvmtiEnv;
 
@@ -174,4 +183,4 @@
 
 };
 
-#endif   /* _JAVA_JVMTIENVTHREADSTATE_H_ */
+#endif // SHARE_VM_PRIMS_JVMTIENVTHREADSTATE_HPP
--- a/src/share/vm/prims/jvmtiEventController.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEventController.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiEventController.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "prims/jvmtiEventController.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiThreadState.inline.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframe_hp.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
 
 #ifdef JVMTI_TRACE
 #define EC_TRACE(out) if (JvmtiTrace::trace_event_controller()) { SafeResourceMark rm; tty->print_cr out; } while (0)
--- a/src/share/vm/prims/jvmtiEventController.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEventController.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,13 @@
  *
  */
 
-#ifndef _JAVA_JVMTI_EVENT_CONTROLLER_H_
-#define _JAVA_JVMTI_EVENT_CONTROLLER_H_
+#ifndef SHARE_VM_PRIMS_JVMTIEVENTCONTROLLER_HPP
+#define SHARE_VM_PRIMS_JVMTIEVENTCONTROLLER_HPP
+
+#include "jvmtifiles/jvmti.h"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 // forward declaration
 class JvmtiEventControllerPrivate;
@@ -237,4 +242,4 @@
   static void vm_death();
 };
 
-#endif   /* _JAVA_JVMTI_EVENT_CONTROLLER_H_ */
+#endif // SHARE_VM_PRIMS_JVMTIEVENTCONTROLLER_HPP
--- a/src/share/vm/prims/jvmtiEventController.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiEventController.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTIEVENTCONTROLLER_INLINE_HPP
+#define SHARE_VM_PRIMS_JVMTIEVENTCONTROLLER_INLINE_HPP
+
+#include "prims/jvmtiEventController.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiUtil.hpp"
+
 // these inline functions are in a separate file to break include cycles
 
 
@@ -99,3 +106,5 @@
 inline bool JvmtiEventController::is_enabled(jvmtiEvent event_type) {
   return _universal_global_event_enabled.is_enabled(event_type);
 }
+
+#endif // SHARE_VM_PRIMS_JVMTIEVENTCONTROLLER_INLINE_HPP
--- a/src/share/vm/prims/jvmtiExport.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiExport.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,37 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiExport.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "prims/jvmtiCodeBlobEvents.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "prims/jvmtiEventController.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiManageCapabilities.hpp"
+#include "prims/jvmtiRawMonitor.hpp"
+#include "prims/jvmtiTagMap.hpp"
+#include "prims/jvmtiThreadState.inline.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/objectMonitor.inline.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vframe.hpp"
+#include "services/attachListener.hpp"
+#include "services/serviceUtil.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
+#endif
 
 #ifdef JVMTI_TRACE
 #define EVT_TRACE(evt,out) if ((JvmtiTrace::event_trace_flags(evt) & JvmtiTrace::SHOW_EVENT_SENT) != 0) { SafeResourceMark rm; tty->print_cr out; }
--- a/src/share/vm/prims/jvmtiExport.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiExport.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,19 @@
  *
  */
 
-#ifndef _JAVA_JVMTIEXPORT_H_
-#define _JAVA_JVMTIEXPORT_H_
+#ifndef SHARE_VM_PRIMS_JVMTIEXPORT_HPP
+#define SHARE_VM_PRIMS_JVMTIEXPORT_HPP
+
+#include "code/jvmticmlr.h"
+#include "jvmtifiles/jvmti.h"
+#include "memory/allocation.hpp"
+#include "memory/iterator.hpp"
+#include "oops/oop.hpp"
+#include "oops/oopsHierarchy.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/growableArray.hpp"
 
 // Forward declarations
 
@@ -553,4 +564,4 @@
   }
 };
 
-#endif   /* _JAVA_JVMTIEXPORT_H_ */
+#endif // SHARE_VM_PRIMS_JVMTIEXPORT_HPP
--- a/src/share/vm/prims/jvmtiExtensions.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiExtensions.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiExtensions.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiExtensions.hpp"
 
 // the list of extension functions
 GrowableArray<jvmtiExtensionFunctionInfo*>* JvmtiExtensions::_ext_functions;
--- a/src/share/vm/prims/jvmtiExtensions.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiExtensions.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,9 +22,14 @@
  *
  */
 
-#ifndef _JVMTI_EXTENSIONS_H_
-#define _JVMTI_EXTENSIONS_H_
+#ifndef SHARE_VM_PRIMS_JVMTIEXTENSIONS_HPP
+#define SHARE_VM_PRIMS_JVMTIEXTENSIONS_HPP
 
+#ifndef JVMTI_KERNEL
+#include "jvmtifiles/jvmti.h"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/allocation.hpp"
+#endif
 
 // JvmtiExtensions
 //
@@ -55,4 +60,4 @@
                                        jvmtiExtensionEvent callback);
 };
 
-#endif  /* _JVMTI_EXTENSIONS_H_ */
+#endif // SHARE_VM_PRIMS_JVMTIEXTENSIONS_HPP
--- a/src/share/vm/prims/jvmtiGetLoadedClasses.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiGetLoadedClasses.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,9 +22,12 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/universe.inline.hpp"
+#include "prims/jvmtiGetLoadedClasses.hpp"
+#include "runtime/thread.hpp"
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiGetLoadedClasses.cpp.incl"
 
 
 // The closure for GetLoadedClasses and GetClassLoaderClasses
--- a/src/share/vm/prims/jvmtiGetLoadedClasses.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiGetLoadedClasses.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,9 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTIGETLOADEDCLASSES_HPP
+#define SHARE_VM_PRIMS_JVMTIGETLOADEDCLASSES_HPP
+
+#include "jvmtifiles/jvmtiEnv.hpp"
+
 class JvmtiGetLoadedClasses : AllStatic {
 public:
   static jvmtiError getLoadedClasses(JvmtiEnv *env, jint* classCountPtr, jclass** classesPtr);
   static jvmtiError getClassLoaderClasses(JvmtiEnv *env, jobject initiatingLoader,
                                           jint* classCountPtr, jclass** classesPtr);
 };
+
+#endif // SHARE_VM_PRIMS_JVMTIGETLOADEDCLASSES_HPP
--- a/src/share/vm/prims/jvmtiHpp.xsl	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiHpp.xsl	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!--
- Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 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
@@ -37,6 +37,13 @@
   <xsl:call-template name="includeHeader"/>
   <xsl:text>
     
+
+#ifndef GENERATED_JVMTIFILES_JVMTIENV_HPP
+#define GENERATED_JVMTIFILES_JVMTIENV_HPP
+
+#include "prims/jvmtiEnvBase.hpp"
+#include "prims/jvmtiImpl.hpp"
+
 enum {
     JVMTI_INTERNAL_CAPABILITY_COUNT = </xsl:text>
   <xsl:value-of select="count(//capabilityfield)"/>
@@ -59,6 +66,8 @@
   <xsl:apply-templates select="functionsection"/>
   <xsl:text>
 };
+
+#endif // GENERATED_JVMTIFILES_JVMTIENV_HPP
 </xsl:text>
 </xsl:template>
 
--- a/src/share/vm/prims/jvmtiImpl.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiImpl.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,28 +22,35 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiImpl.cpp.incl"
-
-GrowableArray<JvmtiRawMonitor*> *JvmtiPendingMonitors::_monitors = new (ResourceObj::C_HEAP) GrowableArray<JvmtiRawMonitor*>(1,true);
-
-void JvmtiPendingMonitors::transition_raw_monitors() {
-  assert((Threads::number_of_threads()==1),
-         "Java thread has not created yet or more than one java thread \
-is running. Raw monitor transition will not work");
-  JavaThread *current_java_thread = JavaThread::current();
-  assert(current_java_thread->thread_state() == _thread_in_vm, "Must be in vm");
-  {
-    ThreadBlockInVM __tbivm(current_java_thread);
-    for(int i=0; i< count(); i++) {
-      JvmtiRawMonitor *rmonitor = monitors()->at(i);
-      int r = rmonitor->raw_enter(current_java_thread);
-      assert(r == ObjectMonitor::OM_OK, "raw_enter should have worked");
-    }
-  }
-  // pending monitors are converted to real monitor so delete them all.
-  dispose();
-}
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "interpreter/interpreter.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "prims/jvmtiAgentThread.hpp"
+#include "prims/jvmtiEventController.inline.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframe_hp.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/exceptions.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 //
 // class JvmtiAgentThread
@@ -216,57 +223,6 @@
   }
 }
 
-
-//
-// class JvmtiRawMonitor
-//
-
-JvmtiRawMonitor::JvmtiRawMonitor(const char *name) {
-#ifdef ASSERT
-  _name = strcpy(NEW_C_HEAP_ARRAY(char, strlen(name) + 1), name);
-#else
-  _name = NULL;
-#endif
-  _magic = JVMTI_RM_MAGIC;
-}
-
-JvmtiRawMonitor::~JvmtiRawMonitor() {
-#ifdef ASSERT
-  FreeHeap(_name);
-#endif
-  _magic = 0;
-}
-
-
-bool
-JvmtiRawMonitor::is_valid() {
-  int value = 0;
-
-  // This object might not be a JvmtiRawMonitor so we can't assume
-  // the _magic field is properly aligned. Get the value in a safe
-  // way and then check against JVMTI_RM_MAGIC.
-
-  switch (sizeof(_magic)) {
-  case 2:
-    value = Bytes::get_native_u2((address)&_magic);
-    break;
-
-  case 4:
-    value = Bytes::get_native_u4((address)&_magic);
-    break;
-
-  case 8:
-    value = Bytes::get_native_u8((address)&_magic);
-    break;
-
-  default:
-    guarantee(false, "_magic field is an unexpected size");
-  }
-
-  return value == JVMTI_RM_MAGIC;
-}
-
-
 //
 // class JvmtiBreakpoint
 //
@@ -799,8 +755,7 @@
 
       // Schedule deoptimization so that eventually the local
       // update will be written to an interpreter frame.
-      VM_DeoptimizeFrame deopt(_jvf->thread(), _jvf->fr().id());
-      VMThread::execute(&deopt);
+      Deoptimization::deoptimize_frame(_jvf->thread(), _jvf->fr().id());
 
       // Now store a new value for the local which will be applied
       // once deoptimization occurs. Note however that while this
--- a/src/share/vm/prims/jvmtiImpl.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiImpl.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,11 +22,25 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTIIMPL_HPP
+#define SHARE_VM_PRIMS_JVMTIIMPL_HPP
+
+#ifndef JVMTI_KERNEL
+#include "classfile/systemDictionary.hpp"
+#include "jvmtifiles/jvmti.h"
+#include "oops/objArrayOop.hpp"
+#include "prims/jvmtiEnvThreadState.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "prims/jvmtiTrace.hpp"
+#include "prims/jvmtiUtil.hpp"
+#include "runtime/stackValueCollection.hpp"
+#include "runtime/vm_operations.hpp"
+#endif
+
 //
 // Forward Declarations
 //
 
-class JvmtiRawMonitor;
 class JvmtiBreakpoint;
 class JvmtiBreakpoints;
 
@@ -327,76 +341,6 @@
     return false;
 }
 
-
-///////////////////////////////////////////////////////////////
-//
-// class JvmtiRawMonitor
-//
-// Used by JVMTI methods: All RawMonitor methods (CreateRawMonitor, EnterRawMonitor, etc.)
-//
-// Wrapper for ObjectMonitor class that saves the Monitor's name
-//
-
-class JvmtiRawMonitor : public ObjectMonitor  {
-private:
-  int           _magic;
-  char *        _name;
-  // JVMTI_RM_MAGIC is set in contructor and unset in destructor.
-  enum { JVMTI_RM_MAGIC = (int)(('T' << 24) | ('I' << 16) | ('R' << 8) | 'M') };
-
-public:
-  JvmtiRawMonitor(const char *name);
-  ~JvmtiRawMonitor();
-  int            magic()   { return _magic;  }
-  const char *get_name()   { return _name; }
-  bool        is_valid();
-};
-
-// Onload pending raw monitors
-// Class is used to cache onload or onstart monitor enter
-// which will transition into real monitor when
-// VM is fully initialized.
-class JvmtiPendingMonitors : public AllStatic {
-
-private:
-  static GrowableArray<JvmtiRawMonitor*> *_monitors; // Cache raw monitor enter
-
-  inline static GrowableArray<JvmtiRawMonitor*>* monitors() { return _monitors; }
-
-  static void dispose() {
-    delete monitors();
-  }
-
-public:
-  static void enter(JvmtiRawMonitor *monitor) {
-    monitors()->append(monitor);
-  }
-
-  static int count() {
-    return monitors()->length();
-  }
-
-  static void destroy(JvmtiRawMonitor *monitor) {
-    while (monitors()->contains(monitor)) {
-      monitors()->remove(monitor);
-    }
-  }
-
-  // Return false if monitor is not found in the list.
-  static bool exit(JvmtiRawMonitor *monitor) {
-    if (monitors()->contains(monitor)) {
-      monitors()->remove(monitor);
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  static void transition_raw_monitors();
-};
-
-
-
 ///////////////////////////////////////////////////////////////
 // The get/set local operations must only be done by the VM thread
 // because the interpreter version needs to access oop maps, which can
@@ -475,3 +419,5 @@
 
 // Utility macro that checks for NULL pointers:
 #define NULL_CHECK(X, Y) if ((X) == NULL) { return (Y); }
+
+#endif // SHARE_VM_PRIMS_JVMTIIMPL_HPP
--- a/src/share/vm/prims/jvmtiManageCapabilities.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiManageCapabilities.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -21,9 +21,11 @@
  * questions.
  *
  */
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiManageCapabilities.cpp.incl"
 
+#include "precompiled.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiManageCapabilities.hpp"
 static const jint CAPA_SIZE = (JVMTI_INTERNAL_CAPABILITY_COUNT + 7) / 8;
 
   // capabilities which are always potentially available
--- a/src/share/vm/prims/jvmtiManageCapabilities.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiManageCapabilities.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,10 +22,11 @@
  *
  */
 
-#ifndef _JAVA_JVMTI_MANAGE_CAPABILITIES_H_
-#define _JAVA_JVMTI_MANAGE_CAPABILITIES_H_
+#ifndef SHARE_VM_PRIMS_JVMTIMANAGECAPABILITIES_HPP
+#define SHARE_VM_PRIMS_JVMTIMANAGECAPABILITIES_HPP
 
-
+#include "jvmtifiles/jvmti.h"
+#include "memory/allocation.hpp"
 
 class JvmtiManageCapabilities : public AllStatic {
 
@@ -84,4 +85,4 @@
 #endif
 };
 
-#endif   /* _JAVA_JVMTI_MANAGE_CAPABILITIES_H_ */
+#endif // SHARE_VM_PRIMS_JVMTIMANAGECAPABILITIES_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/prims/jvmtiRawMonitor.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,422 @@
+/*
+ * Copyright (c) 2003, 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "prims/jvmtiRawMonitor.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/thread.hpp"
+
+GrowableArray<JvmtiRawMonitor*> *JvmtiPendingMonitors::_monitors = new (ResourceObj::C_HEAP) GrowableArray<JvmtiRawMonitor*>(1,true);
+
+void JvmtiPendingMonitors::transition_raw_monitors() {
+  assert((Threads::number_of_threads()==1),
+         "Java thread has not created yet or more than one java thread \
+is running. Raw monitor transition will not work");
+  JavaThread *current_java_thread = JavaThread::current();
+  assert(current_java_thread->thread_state() == _thread_in_vm, "Must be in vm");
+  {
+    ThreadBlockInVM __tbivm(current_java_thread);
+    for(int i=0; i< count(); i++) {
+      JvmtiRawMonitor *rmonitor = monitors()->at(i);
+      int r = rmonitor->raw_enter(current_java_thread);
+      assert(r == ObjectMonitor::OM_OK, "raw_enter should have worked");
+    }
+  }
+  // pending monitors are converted to real monitor so delete them all.
+  dispose();
+}
+
+//
+// class JvmtiRawMonitor
+//
+
+JvmtiRawMonitor::JvmtiRawMonitor(const char *name) {
+#ifdef ASSERT
+  _name = strcpy(NEW_C_HEAP_ARRAY(char, strlen(name) + 1), name);
+#else
+  _name = NULL;
+#endif
+  _magic = JVMTI_RM_MAGIC;
+}
+
+JvmtiRawMonitor::~JvmtiRawMonitor() {
+#ifdef ASSERT
+  FreeHeap(_name);
+#endif
+  _magic = 0;
+}
+
+
+bool
+JvmtiRawMonitor::is_valid() {
+  int value = 0;
+
+  // This object might not be a JvmtiRawMonitor so we can't assume
+  // the _magic field is properly aligned. Get the value in a safe
+  // way and then check against JVMTI_RM_MAGIC.
+
+  switch (sizeof(_magic)) {
+  case 2:
+    value = Bytes::get_native_u2((address)&_magic);
+    break;
+
+  case 4:
+    value = Bytes::get_native_u4((address)&_magic);
+    break;
+
+  case 8:
+    value = Bytes::get_native_u8((address)&_magic);
+    break;
+
+  default:
+    guarantee(false, "_magic field is an unexpected size");
+  }
+
+  return value == JVMTI_RM_MAGIC;
+}
+
+// -------------------------------------------------------------------------
+// The raw monitor subsystem is entirely distinct from normal
+// java-synchronization or jni-synchronization.  raw monitors are not
+// associated with objects.  They can be implemented in any manner
+// that makes sense.  The original implementors decided to piggy-back
+// the raw-monitor implementation on the existing Java objectMonitor mechanism.
+// This flaw needs to fixed.  We should reimplement raw monitors as sui-generis.
+// Specifically, we should not implement raw monitors via java monitors.
+// Time permitting, we should disentangle and deconvolve the two implementations
+// and move the resulting raw monitor implementation over to the JVMTI directories.
+// Ideally, the raw monitor implementation would be built on top of
+// park-unpark and nothing else.
+//
+// raw monitors are used mainly by JVMTI
+// The raw monitor implementation borrows the ObjectMonitor structure,
+// but the operators are degenerate and extremely simple.
+//
+// Mixed use of a single objectMonitor instance -- as both a raw monitor
+// and a normal java monitor -- is not permissible.
+//
+// Note that we use the single RawMonitor_lock to protect queue operations for
+// _all_ raw monitors.  This is a scalability impediment, but since raw monitor usage
+// is deprecated and rare, this is not of concern.  The RawMonitor_lock can not
+// be held indefinitely.  The critical sections must be short and bounded.
+//
+// -------------------------------------------------------------------------
+
+int JvmtiRawMonitor::SimpleEnter (Thread * Self) {
+  for (;;) {
+    if (Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) {
+       return OS_OK ;
+    }
+
+    ObjectWaiter Node (Self) ;
+    Self->_ParkEvent->reset() ;     // strictly optional
+    Node.TState = ObjectWaiter::TS_ENTER ;
+
+    RawMonitor_lock->lock_without_safepoint_check() ;
+    Node._next  = _EntryList ;
+    _EntryList  = &Node ;
+    OrderAccess::fence() ;
+    if (_owner == NULL && Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) {
+        _EntryList = Node._next ;
+        RawMonitor_lock->unlock() ;
+        return OS_OK ;
+    }
+    RawMonitor_lock->unlock() ;
+    while (Node.TState == ObjectWaiter::TS_ENTER) {
+       Self->_ParkEvent->park() ;
+    }
+  }
+}
+
+int JvmtiRawMonitor::SimpleExit (Thread * Self) {
+  guarantee (_owner == Self, "invariant") ;
+  OrderAccess::release_store_ptr (&_owner, NULL) ;
+  OrderAccess::fence() ;
+  if (_EntryList == NULL) return OS_OK ;
+  ObjectWaiter * w ;
+
+  RawMonitor_lock->lock_without_safepoint_check() ;
+  w = _EntryList ;
+  if (w != NULL) {
+      _EntryList = w->_next ;
+  }
+  RawMonitor_lock->unlock() ;
+  if (w != NULL) {
+      guarantee (w ->TState == ObjectWaiter::TS_ENTER, "invariant") ;
+      ParkEvent * ev = w->_event ;
+      w->TState = ObjectWaiter::TS_RUN ;
+      OrderAccess::fence() ;
+      ev->unpark() ;
+  }
+  return OS_OK ;
+}
+
+int JvmtiRawMonitor::SimpleWait (Thread * Self, jlong millis) {
+  guarantee (_owner == Self  , "invariant") ;
+  guarantee (_recursions == 0, "invariant") ;
+
+  ObjectWaiter Node (Self) ;
+  Node._notified = 0 ;
+  Node.TState    = ObjectWaiter::TS_WAIT ;
+
+  RawMonitor_lock->lock_without_safepoint_check() ;
+  Node._next     = _WaitSet ;
+  _WaitSet       = &Node ;
+  RawMonitor_lock->unlock() ;
+
+  SimpleExit (Self) ;
+  guarantee (_owner != Self, "invariant") ;
+
+  int ret = OS_OK ;
+  if (millis <= 0) {
+    Self->_ParkEvent->park();
+  } else {
+    ret = Self->_ParkEvent->park(millis);
+  }
+
+  // If thread still resides on the waitset then unlink it.
+  // Double-checked locking -- the usage is safe in this context
+  // as we TState is volatile and the lock-unlock operators are
+  // serializing (barrier-equivalent).
+
+  if (Node.TState == ObjectWaiter::TS_WAIT) {
+    RawMonitor_lock->lock_without_safepoint_check() ;
+    if (Node.TState == ObjectWaiter::TS_WAIT) {
+      // Simple O(n) unlink, but performance isn't critical here.
+      ObjectWaiter * p ;
+      ObjectWaiter * q = NULL ;
+      for (p = _WaitSet ; p != &Node; p = p->_next) {
+         q = p ;
+      }
+      guarantee (p == &Node, "invariant") ;
+      if (q == NULL) {
+        guarantee (p == _WaitSet, "invariant") ;
+        _WaitSet = p->_next ;
+      } else {
+        guarantee (p == q->_next, "invariant") ;
+        q->_next = p->_next ;
+      }
+      Node.TState = ObjectWaiter::TS_RUN ;
+    }
+    RawMonitor_lock->unlock() ;
+  }
+
+  guarantee (Node.TState == ObjectWaiter::TS_RUN, "invariant") ;
+  SimpleEnter (Self) ;
+
+  guarantee (_owner == Self, "invariant") ;
+  guarantee (_recursions == 0, "invariant") ;
+  return ret ;
+}
+
+int JvmtiRawMonitor::SimpleNotify (Thread * Self, bool All) {
+  guarantee (_owner == Self, "invariant") ;
+  if (_WaitSet == NULL) return OS_OK ;
+
+  // We have two options:
+  // A. Transfer the threads from the WaitSet to the EntryList
+  // B. Remove the thread from the WaitSet and unpark() it.
+  //
+  // We use (B), which is crude and results in lots of futile
+  // context switching.  In particular (B) induces lots of contention.
+
+  ParkEvent * ev = NULL ;       // consider using a small auto array ...
+  RawMonitor_lock->lock_without_safepoint_check() ;
+  for (;;) {
+      ObjectWaiter * w = _WaitSet ;
+      if (w == NULL) break ;
+      _WaitSet = w->_next ;
+      if (ev != NULL) { ev->unpark(); ev = NULL; }
+      ev = w->_event ;
+      OrderAccess::loadstore() ;
+      w->TState = ObjectWaiter::TS_RUN ;
+      OrderAccess::storeload();
+      if (!All) break ;
+  }
+  RawMonitor_lock->unlock() ;
+  if (ev != NULL) ev->unpark();
+  return OS_OK ;
+}
+
+// Any JavaThread will enter here with state _thread_blocked
+int JvmtiRawMonitor::raw_enter(TRAPS) {
+  TEVENT (raw_enter) ;
+  void * Contended ;
+
+  // don't enter raw monitor if thread is being externally suspended, it will
+  // surprise the suspender if a "suspended" thread can still enter monitor
+  JavaThread * jt = (JavaThread *)THREAD;
+  if (THREAD->is_Java_thread()) {
+    jt->SR_lock()->lock_without_safepoint_check();
+    while (jt->is_external_suspend()) {
+      jt->SR_lock()->unlock();
+      jt->java_suspend_self();
+      jt->SR_lock()->lock_without_safepoint_check();
+    }
+    // guarded by SR_lock to avoid racing with new external suspend requests.
+    Contended = Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) ;
+    jt->SR_lock()->unlock();
+  } else {
+    Contended = Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) ;
+  }
+
+  if (Contended == THREAD) {
+     _recursions ++ ;
+     return OM_OK ;
+  }
+
+  if (Contended == NULL) {
+     guarantee (_owner == THREAD, "invariant") ;
+     guarantee (_recursions == 0, "invariant") ;
+     return OM_OK ;
+  }
+
+  THREAD->set_current_pending_monitor(this);
+
+  if (!THREAD->is_Java_thread()) {
+     // No other non-Java threads besides VM thread would acquire
+     // a raw monitor.
+     assert(THREAD->is_VM_thread(), "must be VM thread");
+     SimpleEnter (THREAD) ;
+   } else {
+     guarantee (jt->thread_state() == _thread_blocked, "invariant") ;
+     for (;;) {
+       jt->set_suspend_equivalent();
+       // cleared by handle_special_suspend_equivalent_condition() or
+       // java_suspend_self()
+       SimpleEnter (THREAD) ;
+
+       // were we externally suspended while we were waiting?
+       if (!jt->handle_special_suspend_equivalent_condition()) break ;
+
+       // This thread was externally suspended
+       //
+       // This logic isn't needed for JVMTI raw monitors,
+       // but doesn't hurt just in case the suspend rules change. This
+           // logic is needed for the JvmtiRawMonitor.wait() reentry phase.
+           // We have reentered the contended monitor, but while we were
+           // waiting another thread suspended us. We don't want to reenter
+           // the monitor while suspended because that would surprise the
+           // thread that suspended us.
+           //
+           // Drop the lock -
+       SimpleExit (THREAD) ;
+
+           jt->java_suspend_self();
+         }
+
+     assert(_owner == THREAD, "Fatal error with monitor owner!");
+     assert(_recursions == 0, "Fatal error with monitor recursions!");
+  }
+
+  THREAD->set_current_pending_monitor(NULL);
+  guarantee (_recursions == 0, "invariant") ;
+  return OM_OK;
+}
+
+// Used mainly for JVMTI raw monitor implementation
+// Also used for JvmtiRawMonitor::wait().
+int JvmtiRawMonitor::raw_exit(TRAPS) {
+  TEVENT (raw_exit) ;
+  if (THREAD != _owner) {
+    return OM_ILLEGAL_MONITOR_STATE;
+  }
+  if (_recursions > 0) {
+    --_recursions ;
+    return OM_OK ;
+  }
+
+  void * List = _EntryList ;
+  SimpleExit (THREAD) ;
+
+  return OM_OK;
+}
+
+// Used for JVMTI raw monitor implementation.
+// All JavaThreads will enter here with state _thread_blocked
+
+int JvmtiRawMonitor::raw_wait(jlong millis, bool interruptible, TRAPS) {
+  TEVENT (raw_wait) ;
+  if (THREAD != _owner) {
+    return OM_ILLEGAL_MONITOR_STATE;
+  }
+
+  // To avoid spurious wakeups we reset the parkevent -- This is strictly optional.
+  // The caller must be able to tolerate spurious returns from raw_wait().
+  THREAD->_ParkEvent->reset() ;
+  OrderAccess::fence() ;
+
+  // check interrupt event
+  if (interruptible && Thread::is_interrupted(THREAD, true)) {
+    return OM_INTERRUPTED;
+  }
+
+  intptr_t save = _recursions ;
+  _recursions = 0 ;
+  _waiters ++ ;
+  if (THREAD->is_Java_thread()) {
+    guarantee (((JavaThread *) THREAD)->thread_state() == _thread_blocked, "invariant") ;
+    ((JavaThread *)THREAD)->set_suspend_equivalent();
+  }
+  int rv = SimpleWait (THREAD, millis) ;
+  _recursions = save ;
+  _waiters -- ;
+
+  guarantee (THREAD == _owner, "invariant") ;
+  if (THREAD->is_Java_thread()) {
+     JavaThread * jSelf = (JavaThread *) THREAD ;
+     for (;;) {
+        if (!jSelf->handle_special_suspend_equivalent_condition()) break ;
+        SimpleExit (THREAD) ;
+        jSelf->java_suspend_self();
+        SimpleEnter (THREAD) ;
+        jSelf->set_suspend_equivalent() ;
+     }
+  }
+  guarantee (THREAD == _owner, "invariant") ;
+
+  if (interruptible && Thread::is_interrupted(THREAD, true)) {
+    return OM_INTERRUPTED;
+  }
+  return OM_OK ;
+}
+
+int JvmtiRawMonitor::raw_notify(TRAPS) {
+  TEVENT (raw_notify) ;
+  if (THREAD != _owner) {
+    return OM_ILLEGAL_MONITOR_STATE;
+  }
+  SimpleNotify (THREAD, false) ;
+  return OM_OK;
+}
+
+int JvmtiRawMonitor::raw_notifyAll(TRAPS) {
+  TEVENT (raw_notifyAll) ;
+  if (THREAD != _owner) {
+    return OM_ILLEGAL_MONITOR_STATE;
+  }
+  SimpleNotify (THREAD, true) ;
+  return OM_OK;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/prims/jvmtiRawMonitor.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ *
+ */
+
+#ifndef SHARE_VM_PRIMS_JVMTIRAWMONITOR_HPP
+#define SHARE_VM_PRIMS_JVMTIRAWMONITOR_HPP
+
+#ifndef JVMTI_KERNEL
+#include "runtime/objectMonitor.hpp"
+#include "utilities/growableArray.hpp"
+#endif
+
+//
+// class JvmtiRawMonitor
+//
+// Used by JVMTI methods: All RawMonitor methods (CreateRawMonitor, EnterRawMonitor, etc.)
+//
+// Wrapper for ObjectMonitor class that saves the Monitor's name
+//
+
+class JvmtiRawMonitor : public ObjectMonitor  {
+private:
+  int           _magic;
+  char *        _name;
+  // JVMTI_RM_MAGIC is set in contructor and unset in destructor.
+  enum { JVMTI_RM_MAGIC = (int)(('T' << 24) | ('I' << 16) | ('R' << 8) | 'M') };
+
+  int       SimpleEnter (Thread * Self) ;
+  int       SimpleExit  (Thread * Self) ;
+  int       SimpleWait  (Thread * Self, jlong millis) ;
+  int       SimpleNotify (Thread * Self, bool All) ;
+
+public:
+  JvmtiRawMonitor(const char *name);
+  ~JvmtiRawMonitor();
+  int       raw_enter(TRAPS);
+  int       raw_exit(TRAPS);
+  int       raw_wait(jlong millis, bool interruptable, TRAPS);
+  int       raw_notify(TRAPS);
+  int       raw_notifyAll(TRAPS);
+  int            magic()   { return _magic;  }
+  const char *get_name()   { return _name; }
+  bool        is_valid();
+};
+
+// Onload pending raw monitors
+// Class is used to cache onload or onstart monitor enter
+// which will transition into real monitor when
+// VM is fully initialized.
+class JvmtiPendingMonitors : public AllStatic {
+
+private:
+  static GrowableArray<JvmtiRawMonitor*> *_monitors; // Cache raw monitor enter
+
+  inline static GrowableArray<JvmtiRawMonitor*>* monitors() { return _monitors; }
+
+  static void dispose() {
+    delete monitors();
+  }
+
+public:
+  static void enter(JvmtiRawMonitor *monitor) {
+    monitors()->append(monitor);
+  }
+
+  static int count() {
+    return monitors()->length();
+  }
+
+  static void destroy(JvmtiRawMonitor *monitor) {
+    while (monitors()->contains(monitor)) {
+      monitors()->remove(monitor);
+    }
+  }
+
+  // Return false if monitor is not found in the list.
+  static bool exit(JvmtiRawMonitor *monitor) {
+    if (monitors()->contains(monitor)) {
+      monitors()->remove(monitor);
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  static void transition_raw_monitors();
+};
+
+#endif // SHARE_VM_PRIMS_JVMTIRAWMONITOR_HPP
--- a/src/share/vm/prims/jvmtiRedefineClasses.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiRedefineClasses.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiRedefineClasses.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/verifier.hpp"
+#include "code/codeCache.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "interpreter/rewriter.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/klassVtable.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+#include "prims/methodComparator.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/relocator.hpp"
+#include "utilities/bitMap.inline.hpp"
 
 
 objArrayOop VM_RedefineClasses::_old_methods = NULL;
--- a/src/share/vm/prims/jvmtiRedefineClasses.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiRedefineClasses.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTIREDEFINECLASSES_HPP
+#define SHARE_VM_PRIMS_JVMTIREDEFINECLASSES_HPP
+
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "runtime/vm_operations.hpp"
+
 // Introduction:
 //
 // The RedefineClasses() API is used to change the definition of one or
@@ -487,3 +498,5 @@
   // and redefine implementation
   static bool is_modifiable_class(oop klass_mirror);
 };
+
+#endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES_HPP
--- a/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTIREDEFINECLASSESTRACE_HPP
+#define SHARE_VM_PRIMS_JVMTIREDEFINECLASSESTRACE_HPP
+
 // RedefineClasses tracing support via the TraceRedefineClasses
 // option. A bit is assigned to each group of trace messages.
 // Groups of messages are individually selectable. We have to use
@@ -121,3 +124,5 @@
   if (RC_TRACE_ENABLED(0x00000004)) { \
     t.stop(); \
   } while (0)
+
+#endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSESTRACE_HPP
--- a/src/share/vm/prims/jvmtiTagMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiTagMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,31 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiTagMap.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline2.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "prims/jvmtiEventController.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiTagMap.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/reflectionUtils.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/serviceUtil.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#endif
 
 // JvmtiTagHashmapEntry
 //
--- a/src/share/vm/prims/jvmtiTagMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiTagMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -24,8 +24,17 @@
 
 // JvmtiTagMap
 
-#ifndef _JAVA_JVMTI_TAG_MAP_H_
-#define _JAVA_JVMTI_TAG_MAP_H_
+#ifndef SHARE_VM_PRIMS_JVMTITAGMAP_HPP
+#define SHARE_VM_PRIMS_JVMTITAGMAP_HPP
+
+#ifndef JVMTI_KERNEL
+#include "gc_interface/collectedHeap.hpp"
+#include "jvmtifiles/jvmti.h"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/allocation.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/universe.hpp"
+#endif
 
 // forward references
 class JvmtiTagHashmap;
@@ -132,4 +141,4 @@
   static void cms_ref_processing_epilogue();
 };
 
-#endif   /* _JAVA_JVMTI_TAG_MAP_H_ */
+#endif // SHARE_VM_PRIMS_JVMTITAGMAP_HPP
--- a/src/share/vm/prims/jvmtiThreadState.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiThreadState.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiThreadState.cpp.incl"
+#include "precompiled.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiEventController.inline.hpp"
+#include "prims/jvmtiImpl.hpp"
+#include "prims/jvmtiThreadState.inline.hpp"
+#include "runtime/vframe.hpp"
 
 // marker for when the stack depth has been reset and is now unknown.
 // any negative number would work but small ones might obscure an
--- a/src/share/vm/prims/jvmtiThreadState.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiThreadState.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,15 @@
  *
  */
 
-#ifndef _JAVA_JVMTITHREADSTATE_H_
-#define _JAVA_JVMTITHREADSTATE_H_
+#ifndef SHARE_VM_PRIMS_JVMTITHREADSTATE_HPP
+#define SHARE_VM_PRIMS_JVMTITHREADSTATE_HPP
+
+#include "jvmtifiles/jvmti.h"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/growableArray.hpp"
 
 //
 // Forward Declarations
@@ -403,4 +410,4 @@
   }
 };
 
-#endif   /* _JAVA_JVMTITHREADSTATE_H_ */
+#endif // SHARE_VM_PRIMS_JVMTITHREADSTATE_HPP
--- a/src/share/vm/prims/jvmtiThreadState.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiThreadState.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTITHREADSTATE_INLINE_HPP
+#define SHARE_VM_PRIMS_JVMTITHREADSTATE_INLINE_HPP
+
+#include "prims/jvmtiEnvThreadState.hpp"
+#include "prims/jvmtiThreadState.hpp"
+
 // JvmtiEnvThreadStateIterator implementation
 
 inline JvmtiEnvThreadStateIterator::JvmtiEnvThreadStateIterator(JvmtiThreadState* thread_state) {
@@ -60,3 +66,5 @@
 void JvmtiThreadState::set_head_env_thread_state(JvmtiEnvThreadState* ets) {
   _head_env_thread_state = ets;
 }
+
+#endif // SHARE_VM_PRIMS_JVMTITHREADSTATE_INLINE_HPP
--- a/src/share/vm/prims/jvmtiTrace.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiTrace.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiTrace.cpp.incl"
+#include "precompiled.hpp"
+#include "jvmtifiles/jvmtiEnv.hpp"
+#include "prims/jvmtiTrace.hpp"
 
 //
 // class JvmtiTrace
--- a/src/share/vm/prims/jvmtiTrace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiTrace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTITRACE_HPP
+#define SHARE_VM_PRIMS_JVMTITRACE_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "jvmtifiles/jvmti.h"
+#include "oops/objArrayOop.hpp"
+#include "prims/jvmtiEnvThreadState.hpp"
+#include "prims/jvmtiEventController.hpp"
+#include "prims/jvmtiUtil.hpp"
+#include "runtime/stackValueCollection.hpp"
+#include "runtime/vm_operations.hpp"
+
 ///////////////////////////////////////////////////////////////
 //
 // class JvmtiTrace
@@ -96,3 +108,5 @@
 };
 
 #endif /*JVMTI_TRACE */
+
+#endif // SHARE_VM_PRIMS_JVMTITRACE_HPP
--- a/src/share/vm/prims/jvmtiUtil.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiUtil.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jvmtiUtil.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jvmtiUtil.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/exceptions.hpp"
+
 //
 // class JvmtiUtil
 //
--- a/src/share/vm/prims/jvmtiUtil.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/jvmtiUtil.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_JVMTIUTIL_HPP
+#define SHARE_VM_PRIMS_JVMTIUTIL_HPP
+
+#include "jvmtifiles/jvmti.h"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiEventController.hpp"
+
 ///////////////////////////////////////////////////////////////
 //
 // class JvmtiUtil
@@ -84,3 +91,5 @@
   SafeResourceMark() : ResourceMark(safe_resource_area()) {}
 
 };
+
+#endif // SHARE_VM_PRIMS_JVMTIUTIL_HPP
--- a/src/share/vm/prims/methodComparator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/methodComparator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_methodComparator.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/methodComparator.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 BytecodeStream *MethodComparator::_s_old;
 BytecodeStream *MethodComparator::_s_new;
@@ -147,10 +152,9 @@
   case Bytecodes::_invokevirtual   : // fall through
   case Bytecodes::_invokespecial   : // fall through
   case Bytecodes::_invokestatic    : // fall through
-  case Bytecodes::_invokedynamic   : // fall through
   case Bytecodes::_invokeinterface : {
-    int cpci_old = _s_old->has_index_u4() ? _s_old->get_index_u4() : _s_old->get_index_u2_cpcache();
-    int cpci_new = _s_new->has_index_u4() ? _s_new->get_index_u4() : _s_new->get_index_u2_cpcache();
+    int cpci_old = _s_old->get_index_u2_cpcache();
+    int cpci_new = _s_new->get_index_u2_cpcache();
     // Check if the names of classes, field/method names and signatures at these indexes
     // are the same. Indices which are really into constantpool cache (rather than constant
     // pool itself) are accepted by the constantpool query routines below.
@@ -160,6 +164,33 @@
       return false;
     break;
   }
+  case Bytecodes::_invokedynamic: {
+    int cpci_old = _s_old->get_index_u4();
+    int cpci_new = _s_new->get_index_u4();
+    // Check if the names of classes, field/method names and signatures at these indexes
+    // are the same. Indices which are really into constantpool cache (rather than constant
+    // pool itself) are accepted by the constantpool query routines below.
+    if ((_old_cp->name_ref_at(cpci_old) != _new_cp->name_ref_at(cpci_new)) ||
+        (_old_cp->signature_ref_at(cpci_old) != _new_cp->signature_ref_at(cpci_new)))
+      return false;
+    int cpi_old = _old_cp->cache()->main_entry_at(cpci_old)->constant_pool_index();
+    int cpi_new = _new_cp->cache()->main_entry_at(cpci_new)->constant_pool_index();
+    int bsm_old = _old_cp->invoke_dynamic_bootstrap_method_ref_index_at(cpi_old);
+    int bsm_new = _new_cp->invoke_dynamic_bootstrap_method_ref_index_at(cpi_new);
+    if (!pool_constants_same(bsm_old, bsm_new))
+      return false;
+    int cnt_old = _old_cp->invoke_dynamic_argument_count_at(cpi_old);
+    int cnt_new = _new_cp->invoke_dynamic_argument_count_at(cpi_new);
+    if (cnt_old != cnt_new)
+      return false;
+    for (int arg_i = 0; arg_i < cnt_old; arg_i++) {
+      int idx_old = _old_cp->invoke_dynamic_argument_index_at(cpi_old, arg_i);
+      int idx_new = _new_cp->invoke_dynamic_argument_index_at(cpi_new, arg_i);
+      if (!pool_constants_same(idx_old, idx_new))
+        return false;
+    }
+    break;
+  }
 
   case Bytecodes::_ldc   : // fall through
   case Bytecodes::_ldc_w : {
@@ -167,51 +198,8 @@
     Bytecode_loadconstant* ldc_new = Bytecode_loadconstant_at(_s_new->method(), _s_new->bci());
     int cpi_old = ldc_old->pool_index();
     int cpi_new = ldc_new->pool_index();
-    constantTag tag_old = _old_cp->tag_at(cpi_old);
-    constantTag tag_new = _new_cp->tag_at(cpi_new);
-    if (tag_old.is_int() || tag_old.is_float()) {
-      if (tag_old.value() != tag_new.value())
-        return false;
-      if (tag_old.is_int()) {
-        if (_old_cp->int_at(cpi_old) != _new_cp->int_at(cpi_new))
-          return false;
-      } else {
-        // Use jint_cast to compare the bits rather than numerical values.
-        // This makes a difference for NaN constants.
-        if (jint_cast(_old_cp->float_at(cpi_old)) != jint_cast(_new_cp->float_at(cpi_new)))
-          return false;
-      }
-    } else if (tag_old.is_string() || tag_old.is_unresolved_string()) {
-      if (! (tag_new.is_unresolved_string() || tag_new.is_string()))
-        return false;
-      if (strcmp(_old_cp->string_at_noresolve(cpi_old),
-                 _new_cp->string_at_noresolve(cpi_new)) != 0)
-        return false;
-    } else if (tag_old.is_klass() || tag_old.is_unresolved_klass()) {
-      // tag_old should be klass - 4881222
-      if (! (tag_new.is_unresolved_klass() || tag_new.is_klass()))
-        return false;
-      if (_old_cp->klass_at_noresolve(cpi_old) !=
-          _new_cp->klass_at_noresolve(cpi_new))
-        return false;
-    } else if (tag_old.is_method_type() && tag_new.is_method_type()) {
-      int mti_old = _old_cp->method_type_index_at(cpi_old);
-      int mti_new = _new_cp->method_type_index_at(cpi_new);
-      if ((_old_cp->symbol_at(mti_old) != _new_cp->symbol_at(mti_new)))
-        return false;
-    } else if (tag_old.is_method_handle() && tag_new.is_method_handle()) {
-      if (_old_cp->method_handle_ref_kind_at(cpi_old) !=
-          _new_cp->method_handle_ref_kind_at(cpi_new))
-        return false;
-      int mhi_old = _old_cp->method_handle_index_at(cpi_old);
-      int mhi_new = _new_cp->method_handle_index_at(cpi_new);
-      if ((_old_cp->uncached_klass_ref_at_noresolve(mhi_old) != _new_cp->uncached_klass_ref_at_noresolve(mhi_new)) ||
-          (_old_cp->uncached_name_ref_at(mhi_old) != _new_cp->uncached_name_ref_at(mhi_new)) ||
-          (_old_cp->uncached_signature_ref_at(mhi_old) != _new_cp->uncached_signature_ref_at(mhi_new)))
-        return false;
-    } else {
-      return false;  // unknown tag
-    }
+    if (!pool_constants_same(cpi_old, cpi_new))
+      return false;
     break;
   }
 
@@ -392,6 +380,55 @@
   return true;
 }
 
+bool MethodComparator::pool_constants_same(int cpi_old, int cpi_new) {
+  constantTag tag_old = _old_cp->tag_at(cpi_old);
+  constantTag tag_new = _new_cp->tag_at(cpi_new);
+  if (tag_old.is_int() || tag_old.is_float()) {
+    if (tag_old.value() != tag_new.value())
+      return false;
+    if (tag_old.is_int()) {
+      if (_old_cp->int_at(cpi_old) != _new_cp->int_at(cpi_new))
+        return false;
+    } else {
+      // Use jint_cast to compare the bits rather than numerical values.
+      // This makes a difference for NaN constants.
+      if (jint_cast(_old_cp->float_at(cpi_old)) != jint_cast(_new_cp->float_at(cpi_new)))
+        return false;
+    }
+  } else if (tag_old.is_string() || tag_old.is_unresolved_string()) {
+    if (! (tag_new.is_unresolved_string() || tag_new.is_string()))
+      return false;
+    if (strcmp(_old_cp->string_at_noresolve(cpi_old),
+               _new_cp->string_at_noresolve(cpi_new)) != 0)
+      return false;
+  } else if (tag_old.is_klass() || tag_old.is_unresolved_klass()) {
+    // tag_old should be klass - 4881222
+    if (! (tag_new.is_unresolved_klass() || tag_new.is_klass()))
+      return false;
+    if (_old_cp->klass_at_noresolve(cpi_old) !=
+        _new_cp->klass_at_noresolve(cpi_new))
+      return false;
+  } else if (tag_old.is_method_type() && tag_new.is_method_type()) {
+    int mti_old = _old_cp->method_type_index_at(cpi_old);
+    int mti_new = _new_cp->method_type_index_at(cpi_new);
+    if ((_old_cp->symbol_at(mti_old) != _new_cp->symbol_at(mti_new)))
+      return false;
+  } else if (tag_old.is_method_handle() && tag_new.is_method_handle()) {
+    if (_old_cp->method_handle_ref_kind_at(cpi_old) !=
+        _new_cp->method_handle_ref_kind_at(cpi_new))
+      return false;
+    int mhi_old = _old_cp->method_handle_index_at(cpi_old);
+    int mhi_new = _new_cp->method_handle_index_at(cpi_new);
+    if ((_old_cp->uncached_klass_ref_at_noresolve(mhi_old) != _new_cp->uncached_klass_ref_at_noresolve(mhi_new)) ||
+        (_old_cp->uncached_name_ref_at(mhi_old) != _new_cp->uncached_name_ref_at(mhi_new)) ||
+        (_old_cp->uncached_signature_ref_at(mhi_old) != _new_cp->uncached_signature_ref_at(mhi_new)))
+      return false;
+  } else {
+    return false;  // unknown tag
+  }
+  return true;
+}
+
 
 int MethodComparator::check_stack_and_locals_size(methodOop old_method, methodOop new_method) {
   if (old_method->max_stack() != new_method->max_stack()) {
--- a/src/share/vm/prims/methodComparator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/methodComparator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_METHODCOMPARATOR_HPP
+#define SHARE_VM_PRIMS_METHODCOMPARATOR_HPP
+
+#include "interpreter/bytecodeStream.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/methodOop.hpp"
+
 class BciMap;
 
 // methodComparator provides an interface for determining if methods of
@@ -36,6 +43,7 @@
   static GrowableArray<int> *_fwd_jmps;
 
   static bool args_same(Bytecodes::Code c_old, Bytecodes::Code c_new);
+  static bool pool_constants_same(int cpi_old, int cpi_new);
   static int check_stack_and_locals_size(methodOop old_method, methodOop new_method);
 
  public:
@@ -120,3 +128,5 @@
     else return false;
   }
 };
+
+#endif // SHARE_VM_PRIMS_METHODCOMPARATOR_HPP
--- a/src/share/vm/prims/methodHandleWalk.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/methodHandleWalk.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,13 +22,15 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "interpreter/rewriter.hpp"
+#include "memory/oopFactory.hpp"
+#include "prims/methodHandleWalk.hpp"
+
 /*
  * JSR 292 reference implementation: method handle structure analysis
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_methodHandleWalk.cpp.incl"
-
 
 // -----------------------------------------------------------------------------
 // MethodHandleChain
--- a/src/share/vm/prims/methodHandleWalk.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/methodHandleWalk.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_METHODHANDLEWALK_HPP
+#define SHARE_VM_PRIMS_METHODHANDLEWALK_HPP
+
+#include "prims/methodHandles.hpp"
+
 // Low-level parser for method handle chains.
 class MethodHandleChain : StackObj {
 public:
@@ -411,3 +416,5 @@
             klass == SystemDictionary::InvokeDynamic_klass());
   }
 };
+
+#endif // SHARE_VM_PRIMS_METHODHANDLEWALK_HPP
--- a/src/share/vm/prims/methodHandles.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/methodHandles.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,13 +22,21 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubRoutines.hpp"
+
 /*
  * JSR 292 reference implementation: method handles
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_methodHandles.cpp.incl"
-
 bool MethodHandles::_enabled = false; // set true after successful native linkage
 
 MethodHandleEntry* MethodHandles::_entries[MethodHandles::_EK_LIMIT] = {NULL};
@@ -974,6 +982,8 @@
   assert(src != T_VOID && dst != T_VOID, "should not be here");
   if (src == dst)  return true;
   if (type2size[src] != type2size[dst])  return false;
+  if (src == T_OBJECT || dst == T_OBJECT)  return false;
+  if (raw)  return true;  // bitwise reinterpretation; caller guarantees safety
   // allow reinterpretation casts for integral widening
   if (is_subword_type(src)) { // subwords can fit in int or other subwords
     if (dst == T_INT)         // any subword fits in an int
--- a/src/share/vm/prims/methodHandles.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/methodHandles.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_METHODHANDLES_HPP
+#define SHARE_VM_PRIMS_METHODHANDLES_HPP
+
+#include "classfile/javaClasses.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/interfaceSupport.hpp"
+
 class MacroAssembler;
 class Label;
 class MethodHandleEntry;
@@ -523,3 +532,5 @@
 
   void generate();
 };
+
+#endif // SHARE_VM_PRIMS_METHODHANDLES_HPP
--- a/src/share/vm/prims/nativeLookup.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/nativeLookup.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,34 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_nativeLookup.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvm_misc.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 
 static void mangle_name_on(outputStream* st, symbolOop name, int begin, int end) {
--- a/src/share/vm/prims/nativeLookup.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/nativeLookup.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_NATIVELOOKUP_HPP
+#define SHARE_VM_PRIMS_NATIVELOOKUP_HPP
+
+#include "runtime/handles.hpp"
+#include "utilities/top.hpp"
+
 // NativeLookup provides an interface for finding DLL entry points for
 // Java native functions.
 
@@ -43,3 +49,5 @@
   // Lookup native functions in base library.
   static address base_library_lookup(const char* class_name, const char* method_name, const char* signature);
 };
+
+#endif // SHARE_VM_PRIMS_NATIVELOOKUP_HPP
--- a/src/share/vm/prims/perf.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/perf.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,13 +22,21 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jni.h"
+#include "prims/jvm.h"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/perfData.hpp"
+#include "runtime/perfMemory.hpp"
+
 /*
  *      Implementation of class sun.misc.Perf
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_perf.cpp.incl"
-
 
 #define PERF_ENTRY(result_type, header) \
   JVM_ENTRY(result_type, header)
--- a/src/share/vm/prims/privilegedStack.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/privilegedStack.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_privilegedStack.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/privilegedStack.hpp"
+#include "runtime/vframe.hpp"
 
 
 void PrivilegedElement::initialize(vframeStream* vfst, oop context, PrivilegedElement* next, TRAPS) {
--- a/src/share/vm/prims/privilegedStack.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/privilegedStack.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_PRIMS_PRIVILEGEDSTACK_HPP
+#define SHARE_VM_PRIMS_PRIVILEGEDSTACK_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oopsHierarchy.hpp"
+#include "runtime/vframe.hpp"
+#include "utilities/growableArray.hpp"
+
 class PrivilegedElement VALUE_OBJ_CLASS_SPEC {
  private:
   klassOop  _klass;                // klass for method
@@ -41,3 +49,5 @@
   void print_on(outputStream* st) const   PRODUCT_RETURN;
   bool contains(address addr)             PRODUCT_RETURN0;
 };
+
+#endif // SHARE_VM_PRIMS_PRIVILEGEDSTACK_HPP
--- a/src/share/vm/prims/unsafe.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/prims/unsafe.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,13 +22,24 @@
  *
  */
 
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.inline.hpp"
+#include "prims/jni.h"
+#include "prims/jvm.h"
+#include "runtime/globals.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/reflectionCompat.hpp"
+#include "runtime/synchronizer.hpp"
+#include "services/threadService.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/dtrace.hpp"
+
 /*
  *      Implementation of class sun.misc.Unsafe
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_unsafe.cpp.incl"
-
 HS_DTRACE_PROBE_DECL3(hotspot, thread__park__begin, uintptr_t, int, long long);
 HS_DTRACE_PROBE_DECL1(hotspot, thread__park__end, uintptr_t);
 HS_DTRACE_PROBE_DECL1(hotspot, thread__unpark, uintptr_t);
--- a/src/share/vm/runtime/aprofiler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/aprofiler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_aprofiler.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/permGen.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/space.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/aprofiler.hpp"
 
 
 bool AllocationProfiler::_active = false;
--- a/src/share/vm/runtime/aprofiler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/aprofiler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_APROFILER_HPP
+#define SHARE_VM_RUNTIME_APROFILER_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/universe.hpp"
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "utilities/top.hpp"
+
 // A simple allocation profiler for Java. The profiler collects and prints
 // the number and total size of instances allocated per class, including
 // array classes.
@@ -59,3 +68,5 @@
   // Print profile
   static void print(size_t cutoff);   // Cutoff in total allocation size (in words)
 };
+
+#endif // SHARE_VM_RUNTIME_APROFILER_HPP
--- a/src/share/vm/runtime/arguments.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/arguments.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,42 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_arguments.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaAssertions.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/referenceProcessor.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/globals_extension.hpp"
+#include "runtime/java.hpp"
+#include "services/management.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/taskqueue.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vm_version_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vm_version_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vm_version_zero.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+#endif
 
 #define DEFAULT_VENDOR_URL_BUG "http://java.sun.com/webapps/bugreport/crash.jsp"
 #define DEFAULT_JAVA_LAUNCHER  "generic"
@@ -116,14 +150,10 @@
 // Initialize system properties key and value.
 void Arguments::init_system_properties() {
 
-  PropertyList_add(&_system_properties, new SystemProperty("java.vm.specification.version", "1.0", false));
   PropertyList_add(&_system_properties, new SystemProperty("java.vm.specification.name",
                                                                  "Java Virtual Machine Specification",  false));
-  PropertyList_add(&_system_properties, new SystemProperty("java.vm.specification.vendor",
-        JDK_Version::is_gte_jdk17x_version() ? "Oracle Corporation" : "Sun Microsystems Inc.", false));
   PropertyList_add(&_system_properties, new SystemProperty("java.vm.version", VM_Version::vm_release(),  false));
   PropertyList_add(&_system_properties, new SystemProperty("java.vm.name", VM_Version::vm_name(),  false));
-  PropertyList_add(&_system_properties, new SystemProperty("java.vm.vendor", VM_Version::vm_vendor(),  false));
   PropertyList_add(&_system_properties, new SystemProperty("java.vm.info", VM_Version::vm_info_string(),  true));
 
   // following are JVMTI agent writeable properties.
@@ -151,6 +181,28 @@
   os::init_system_properties_values();
 }
 
+
+  // Update/Initialize System properties after JDK version number is known
+void Arguments::init_version_specific_system_properties() {
+  enum { bufsz = 16 };
+  char buffer[bufsz];
+  const char* spec_vendor = "Sun Microsystems Inc.";
+  uint32_t spec_version = 0;
+
+  if (JDK_Version::is_gte_jdk17x_version()) {
+    spec_vendor = "Oracle Corporation";
+    spec_version = JDK_Version::current().major_version();
+  }
+  jio_snprintf(buffer, bufsz, "1." UINT32_FORMAT, spec_version);
+
+  PropertyList_add(&_system_properties,
+      new SystemProperty("java.vm.specification.vendor",  spec_vendor, false));
+  PropertyList_add(&_system_properties,
+      new SystemProperty("java.vm.specification.version", buffer, false));
+  PropertyList_add(&_system_properties,
+      new SystemProperty("java.vm.vendor", VM_Version::vm_vendor(),  false));
+}
+
 /**
  * Provide a slightly more user-friendly way of eliminating -XX flags.
  * When a flag is eliminated, it can be added to this list in order to
@@ -185,6 +237,10 @@
                            JDK_Version::jdk_update(6,18), JDK_Version::jdk(7) },
   { "UseDepthFirstScavengeOrder",
                            JDK_Version::jdk_update(6,22), JDK_Version::jdk(7) },
+  { "HandlePromotionFailure",
+                           JDK_Version::jdk_update(6,24), JDK_Version::jdk(8) },
+  { "MaxLiveObjectEvacuationRatio",
+                           JDK_Version::jdk_update(6,24), JDK_Version::jdk(8) },
   { NULL, JDK_Version(0), JDK_Version(0) }
 };
 
@@ -948,26 +1004,54 @@
   }
 }
 
+void Arguments::check_compressed_oops_compat() {
+#ifdef _LP64
+  assert(UseCompressedOops, "Precondition");
+#  if defined(COMPILER1) && !defined(TIERED)
+  // Until c1 supports compressed oops turn them off.
+  FLAG_SET_DEFAULT(UseCompressedOops, false);
+#  else
+  // Is it on by default or set on ergonomically
+  bool is_on_by_default = FLAG_IS_DEFAULT(UseCompressedOops) || FLAG_IS_ERGO(UseCompressedOops);
+
+  // Tiered currently doesn't work with compressed oops
+  if (TieredCompilation) {
+    if (is_on_by_default) {
+      FLAG_SET_DEFAULT(UseCompressedOops, false);
+      return;
+    } else {
+      vm_exit_during_initialization(
+        "Tiered compilation is not supported with compressed oops yet", NULL);
+    }
+  }
+
+  // If dumping an archive or forcing its use, disable compressed oops if possible
+  if (DumpSharedSpaces || RequireSharedSpaces) {
+    if (is_on_by_default) {
+      FLAG_SET_DEFAULT(UseCompressedOops, false);
+      return;
+    } else {
+      vm_exit_during_initialization(
+        "Class Data Sharing is not supported with compressed oops yet", NULL);
+    }
+  } else if (UseSharedSpaces) {
+    // UseSharedSpaces is on by default. With compressed oops, we turn it off.
+    FLAG_SET_DEFAULT(UseSharedSpaces, false);
+  }
+
+#  endif // defined(COMPILER1) && !defined(TIERED)
+#endif // _LP64
+}
+
 void Arguments::set_tiered_flags() {
   if (FLAG_IS_DEFAULT(CompilationPolicyChoice)) {
     FLAG_SET_DEFAULT(CompilationPolicyChoice, 2);
   }
-
   if (CompilationPolicyChoice < 2) {
     vm_exit_during_initialization(
       "Incompatible compilation policy selected", NULL);
   }
-
-#ifdef _LP64
-  if (FLAG_IS_DEFAULT(UseCompressedOops) || FLAG_IS_ERGO(UseCompressedOops)) {
-    UseCompressedOops = false;
-  }
-  if (UseCompressedOops) {
-    vm_exit_during_initialization(
-      "Tiered compilation is not supported with compressed oops yet", NULL);
-  }
-#endif
- // Increase the code cache size - tiered compiles a lot more.
+  // Increase the code cache size - tiered compiles a lot more.
   if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) {
     FLAG_SET_DEFAULT(ReservedCodeCacheSize, ReservedCodeCacheSize * 2);
   }
@@ -1291,8 +1375,11 @@
 }
 
 inline uintx max_heap_for_compressed_oops() {
-  // Heap should be above HeapBaseMinAddress to get zero based compressed oops.
-  LP64_ONLY(return OopEncodingHeapMax - MaxPermSize - os::vm_page_size() - HeapBaseMinAddress);
+  // Avoid sign flip.
+  if (OopEncodingHeapMax < MaxPermSize + os::vm_page_size()) {
+    return 0;
+  }
+  LP64_ONLY(return OopEncodingHeapMax - MaxPermSize - os::vm_page_size());
   NOT_LP64(ShouldNotReachHere(); return 0);
 }
 
@@ -1470,7 +1557,13 @@
     }
     if (UseCompressedOops) {
       // Limit the heap size to the maximum possible when using compressed oops
-      reasonable_max = MIN2(reasonable_max, (julong)max_heap_for_compressed_oops());
+      julong max_coop_heap = (julong)max_heap_for_compressed_oops();
+      if (HeapBaseMinAddress + MaxHeapSize < max_coop_heap) {
+        // Heap should be above HeapBaseMinAddress to get zero based compressed oops
+        // but it should be not less than default MaxHeapSize.
+        max_coop_heap -= HeapBaseMinAddress;
+      }
+      reasonable_max = MIN2(reasonable_max, max_coop_heap);
     }
     reasonable_max = os::allocatable_physical_memory(reasonable_max);
 
@@ -1676,7 +1769,8 @@
   bool status = true;
   status = status && verify_min_value(StackYellowPages, 1, "StackYellowPages");
   status = status && verify_min_value(StackRedPages, 1, "StackRedPages");
-  status = status && verify_min_value(StackShadowPages, 1, "StackShadowPages");
+  // greater stack shadow pages can't generate instruction to bang stack
+  status = status && verify_interval(StackShadowPages, 1, 50, "StackShadowPages");
   return status;
 }
 
@@ -1722,8 +1816,6 @@
     status = false;
   }
 
-  status = status && verify_percentage(MaxLiveObjectEvacuationRatio,
-                              "MaxLiveObjectEvacuationRatio");
   status = status && verify_percentage(AdaptiveSizePolicyWeight,
                               "AdaptiveSizePolicyWeight");
   status = status && verify_percentage(AdaptivePermSizeWeight, "AdaptivePermSizeWeight");
@@ -2827,6 +2919,7 @@
   return JNI_OK;
 }
 
+
 // Parse entry point called from JNI_CreateJavaVM
 
 jint Arguments::parse(const JavaVMInitArgs* args) {
@@ -2969,10 +3062,6 @@
     PrintGC = true;
   }
 
-#if defined(_LP64) && defined(COMPILER1) && !defined(TIERED)
-  UseCompressedOops = false;
-#endif
-
   // Set object alignment values.
   set_object_alignment();
 
@@ -2987,13 +3076,10 @@
   set_ergonomics_flags();
 
 #ifdef _LP64
-  // XXX JSR 292 currently does not support compressed oops.
-  if (EnableMethodHandles && UseCompressedOops) {
-    if (FLAG_IS_DEFAULT(UseCompressedOops) || FLAG_IS_ERGO(UseCompressedOops)) {
-      UseCompressedOops = false;
-    }
+  if (UseCompressedOops) {
+    check_compressed_oops_compat();
   }
-#endif // _LP64
+#endif
 
   // Check the GC selections again.
   if (!check_gc_consistency()) {
--- a/src/share/vm/runtime/arguments.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/arguments.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_ARGUMENTS_HPP
+#define SHARE_VM_RUNTIME_ARGUMENTS_HPP
+
+#include "runtime/java.hpp"
+#include "runtime/perfData.hpp"
+#include "utilities/top.hpp"
+
 // Arguments parses the command line and recognizes options
 
 // Invocation API hook typedefs (these should really be defined in jni.hpp)
@@ -291,6 +298,8 @@
 
   // Tiered
   static void set_tiered_flags();
+  // Check compressed oops compatibility with other flags
+  static void check_compressed_oops_compat();
   // CMS/ParNew garbage collectors
   static void set_parnew_gc_flags();
   static void set_cms_and_parnew_gc_flags();
@@ -484,6 +493,9 @@
   // System properties
   static void init_system_properties();
 
+  // Update/Initialize System properties after JDK version number is known
+  static void init_version_specific_system_properties();
+
   // Property List manipulation
   static void PropertyList_add(SystemProperty** plist, SystemProperty *element);
   static void PropertyList_add(SystemProperty** plist, const char* k, char* v);
@@ -527,3 +539,5 @@
   static char *get_kernel_properties();
 #endif // KERNEL
 };
+
+#endif // SHARE_VM_RUNTIME_ARGUMENTS_HPP
--- a/src/share/vm/runtime/atomic.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/atomic.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,35 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_atomic.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/atomic.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "atomic_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "atomic_linux_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "atomic_linux_zero.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "atomic_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "atomic_solaris_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "atomic_windows_x86.inline.hpp"
+#endif
 
 jbyte Atomic::cmpxchg(jbyte exchange_value, volatile jbyte* dest, jbyte compare_value) {
   assert(sizeof(jbyte) == 1, "assumption.");
--- a/src/share/vm/runtime/atomic.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/atomic.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_ATOMIC_HPP
+#define SHARE_VM_RUNTIME_ATOMIC_HPP
+
+#include "memory/allocation.hpp"
+
 class Atomic : AllStatic {
  public:
   // Atomically store to a location
@@ -78,3 +83,5 @@
   static intptr_t cmpxchg_ptr(intptr_t exchange_value, volatile intptr_t* dest, intptr_t compare_value);
   static void*    cmpxchg_ptr(void*    exchange_value, volatile void*     dest, void*    compare_value);
 };
+
+#endif // SHARE_VM_RUNTIME_ATOMIC_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/runtime/basicLock.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 1997, 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/synchronizer.hpp"
+
+void BasicLock::print_on(outputStream* st) const {
+  st->print("monitor");
+}
+
+void BasicLock::move_to(oop obj, BasicLock* dest) {
+  // Check to see if we need to inflate the lock. This is only needed
+  // if an object is locked using "this" lightweight monitor. In that
+  // case, the displaced_header() is unlocked, because the
+  // displaced_header() contains the header for the originally unlocked
+  // object. However the object could have already been inflated. But it
+  // does not matter, the inflation will just a no-op. For other cases,
+  // the displaced header will be either 0x0 or 0x3, which are location
+  // independent, therefore the BasicLock is free to move.
+  //
+  // During OSR we may need to relocate a BasicLock (which contains a
+  // displaced word) from a location in an interpreter frame to a
+  // new location in a compiled frame.  "this" refers to the source
+  // basiclock in the interpreter frame.  "dest" refers to the destination
+  // basiclock in the new compiled frame.  We *always* inflate in move_to().
+  // The always-Inflate policy works properly, but in 1.5.0 it can sometimes
+  // cause performance problems in code that makes heavy use of a small # of
+  // uncontended locks.   (We'd inflate during OSR, and then sync performance
+  // would subsequently plummet because the thread would be forced thru the slow-path).
+  // This problem has been made largely moot on IA32 by inlining the inflated fast-path
+  // operations in Fast_Lock and Fast_Unlock in i486.ad.
+  //
+  // Note that there is a way to safely swing the object's markword from
+  // one stack location to another.  This avoids inflation.  Obviously,
+  // we need to ensure that both locations refer to the current thread's stack.
+  // There are some subtle concurrency issues, however, and since the benefit is
+  // is small (given the support for inflated fast-path locking in the fast_lock, etc)
+  // we'll leave that optimization for another time.
+
+  if (displaced_header()->is_neutral()) {
+    ObjectSynchronizer::inflate_helper(obj);
+    // WARNING: We can not put check here, because the inflation
+    // will not update the displaced header. Once BasicLock is inflated,
+    // no one should ever look at its content.
+  } else {
+    // Typically the displaced header will be 0 (recursive stack lock) or
+    // unused_mark.  Naively we'd like to assert that the displaced mark
+    // value is either 0, neutral, or 3.  But with the advent of the
+    // store-before-CAS avoidance in fast_lock/compiler_lock_object
+    // we can find any flavor mark in the displaced mark.
+  }
+// [RGV] The next line appears to do nothing!
+  intptr_t dh = (intptr_t) displaced_header();
+  dest->set_displaced_header(displaced_header());
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/runtime/basicLock.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 1998, 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.
+ *
+ */
+
+#ifndef SHARE_VM_RUNTIME_BASICLOCK_HPP
+#define SHARE_VM_RUNTIME_BASICLOCK_HPP
+
+#include "oops/markOop.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/top.hpp"
+
+class BasicLock VALUE_OBJ_CLASS_SPEC {
+  friend class VMStructs;
+ private:
+  volatile markOop _displaced_header;
+ public:
+  markOop      displaced_header() const               { return _displaced_header; }
+  void         set_displaced_header(markOop header)   { _displaced_header = header; }
+
+  void print_on(outputStream* st) const;
+
+  // move a basic lock (used during deoptimization
+  void move_to(oop obj, BasicLock* dest);
+
+  static int displaced_header_offset_in_bytes()       { return offset_of(BasicLock, _displaced_header); }
+};
+
+// A BasicObjectLock associates a specific Java object with a BasicLock.
+// It is currently embedded in an interpreter frame.
+
+// Because some machines have alignment restrictions on the control stack,
+// the actual space allocated by the interpreter may include padding words
+// after the end of the BasicObjectLock.  Also, in order to guarantee
+// alignment of the embedded BasicLock objects on such machines, we
+// put the embedded BasicLock at the beginning of the struct.
+
+class BasicObjectLock VALUE_OBJ_CLASS_SPEC {
+  friend class VMStructs;
+ private:
+  BasicLock _lock;                                    // the lock, must be double word aligned
+  oop       _obj;                                     // object holds the lock;
+
+ public:
+  // Manipulation
+  oop      obj() const                                { return _obj;  }
+  void set_obj(oop obj)                               { _obj = obj; }
+  BasicLock* lock()                                   { return &_lock; }
+
+  // Note: Use frame::interpreter_frame_monitor_size() for the size of BasicObjectLocks
+  //       in interpreter activation frames since it includes machine-specific padding.
+  static int size()                                   { return sizeof(BasicObjectLock)/wordSize; }
+
+  // GC support
+  void oops_do(OopClosure* f) { f->do_oop(&_obj); }
+
+  static int obj_offset_in_bytes()                    { return offset_of(BasicObjectLock, _obj);  }
+  static int lock_offset_in_bytes()                   { return offset_of(BasicObjectLock, _lock); }
+};
+
+
+#endif // SHARE_VM_RUNTIME_BASICLOCK_HPP
--- a/src/share/vm/runtime/biasedLocking.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/biasedLocking.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_biasedLocking.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/klass.inline.hpp"
+#include "oops/markOop.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/task.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
 
 static bool _biased_locking_enabled = false;
 BiasedLockingCounters BiasedLocking::_counters;
--- a/src/share/vm/runtime/biasedLocking.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/biasedLocking.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_BIASEDLOCKING_HPP
+#define SHARE_VM_RUNTIME_BIASEDLOCKING_HPP
+
+#include "runtime/handles.hpp"
+#include "utilities/growableArray.hpp"
+
 // This class describes operations to implement Store-Free Biased
 // Locking. The high-level properties of the scheme are similar to
 // IBM's lock reservation, Dice-Moir-Scherer QR locks, and other biased
@@ -185,3 +191,5 @@
   static void preserve_marks();
   static void restore_marks();
 };
+
+#endif // SHARE_VM_RUNTIME_BIASEDLOCKING_HPP
--- a/src/share/vm/runtime/compilationPolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/compilationPolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,28 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_compilationPolicy.cpp.incl"
+#include "precompiled.hpp"
+#include "code/compiledIC.hpp"
+#include "code/nmethod.hpp"
+#include "code/scopeDesc.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/rframe.hpp"
+#include "runtime/simpleThresholdPolicy.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/events.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 CompilationPolicy* CompilationPolicy::_policy;
 elapsedTimer       CompilationPolicy::_accumulated_time;
--- a/src/share/vm/runtime/compilationPolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/compilationPolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_COMPILATIONPOLICY_HPP
+#define SHARE_VM_RUNTIME_COMPILATIONPOLICY_HPP
+
+#include "code/nmethod.hpp"
+#include "compiler/compileBroker.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/growableArray.hpp"
+
 // The CompilationPolicy selects which method (if any) should be compiled.
 // It also decides which methods must always be compiled (i.e., are never
 // interpreted).
@@ -126,3 +135,5 @@
 
 };
 #endif
+
+#endif // SHARE_VM_RUNTIME_COMPILATIONPOLICY_HPP
--- a/src/share/vm/runtime/deoptimization.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/deoptimization.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,57 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_deoptimization.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
+#include "runtime/vframe_hp.hpp"
+#include "utilities/events.hpp"
+#include "utilities/xmlstream.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vmreg_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vmreg_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vmreg_zero.inline.hpp"
+#endif
+#ifdef COMPILER2
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/ad_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/ad_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/ad_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/ad_zero.hpp"
+#endif
+#endif
 
 bool DeoptimizationMarker::_is_active = false;
 
@@ -1065,7 +1114,9 @@
 }
 
 
-void Deoptimization::deoptimize_frame(JavaThread* thread, intptr_t* id) {
+void Deoptimization::deoptimize_frame_internal(JavaThread* thread, intptr_t* id) {
+  assert(thread == Thread::current() || SafepointSynchronize::is_at_safepoint(),
+         "can only deoptimize other thread at a safepoint");
   // Compute frame and register map based on thread and sp.
   RegisterMap reg_map(thread, UseBiasedLocking);
   frame fr = thread->last_frame();
@@ -1076,6 +1127,16 @@
 }
 
 
+void Deoptimization::deoptimize_frame(JavaThread* thread, intptr_t* id) {
+  if (thread == Thread::current()) {
+    Deoptimization::deoptimize_frame_internal(thread, id);
+  } else {
+    VM_DeoptimizeFrame deopt(thread, id);
+    VMThread::execute(&deopt);
+  }
+}
+
+
 // JVMTI PopFrame support
 JRT_LEAF(void, Deoptimization::popframe_preserve_args(JavaThread* thread, int bytes_to_save, void* start_address))
 {
--- a/src/share/vm/runtime/deoptimization.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/deoptimization.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP
+#define SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/frame.inline.hpp"
+
 class ProfileData;
 class vframeArray;
 class MonitorValue;
@@ -216,6 +222,10 @@
   // Only called from VMDeoptimizeFrame
   // @argument thread.     Thread where stub_frame resides.
   // @argument id.         id of frame that should be deoptimized.
+  static void deoptimize_frame_internal(JavaThread* thread, intptr_t* id);
+
+  // If thread is not the current thread then execute
+  // VM_DeoptimizeFrame otherwise deoptimize directly.
   static void deoptimize_frame(JavaThread* thread, intptr_t* id);
 
   // Statistics
@@ -344,3 +354,5 @@
   ~DeoptimizationMarker() { _is_active = false; }
   static bool is_active() { return _is_active; }
 };
+
+#endif // SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP
--- a/src/share/vm/runtime/dtraceJSDT.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/dtraceJSDT.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_dtraceJSDT.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "code/codeBlob.hpp"
+#include "memory/allocation.hpp"
+#include "prims/jvm.h"
+#include "runtime/dtraceJSDT.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/os.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/utf8.hpp"
 
 #ifdef HAVE_DTRACE_H
 
--- a/src/share/vm/runtime/dtraceJSDT.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/dtraceJSDT.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_DTRACEJSDT_HPP
+#define SHARE_VM_RUNTIME_DTRACEJSDT_HPP
+
+#include "code/nmethod.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+#endif
+
 class RegisteredProbes;
 typedef jlong OpaqueProbes;
 
@@ -87,3 +101,5 @@
     _nmethods[i] = nm;
   }
 };
+
+#endif // SHARE_VM_RUNTIME_DTRACEJSDT_HPP
--- a/src/share/vm/runtime/extendedPC.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/extendedPC.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_EXTENDEDPC_HPP
+#define SHARE_VM_RUNTIME_EXTENDEDPC_HPP
+
 // An ExtendedPC contains the _pc from a signal handler in a platform
 // independent way.
 
@@ -34,3 +37,5 @@
   ExtendedPC(address pc) { _pc  = pc;   }
   ExtendedPC()           { _pc  = NULL; }
 };
+
+#endif // SHARE_VM_RUNTIME_EXTENDEDPC_HPP
--- a/src/share/vm/runtime/fieldDescriptor.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/fieldDescriptor.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-#include "incls/_fieldDescriptor.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/signature.hpp"
 
 
 oop fieldDescriptor::loader() const {
--- a/src/share/vm/runtime/fieldDescriptor.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/fieldDescriptor.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
+#define SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
+
+#include "oops/constantPoolOop.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/fieldType.hpp"
+#include "utilities/accessFlags.hpp"
+#include "utilities/constantTag.hpp"
+
 // A fieldDescriptor describes the attributes of a single field (instance or class variable).
 // It needs the class constant pool to work (because it only holds indices into the pool
 // rather than the actual info).
@@ -90,3 +101,5 @@
   void print_on(outputStream* st) const         PRODUCT_RETURN;
   void print_on_for(outputStream* st, oop obj)  PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
--- a/src/share/vm/runtime/fieldType.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/fieldType.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_fieldType.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "runtime/fieldType.hpp"
+#include "runtime/signature.hpp"
 
 void FieldType::skip_optional_size(symbolOop signature, int* index) {
   jchar c = signature->byte_at(*index);
--- a/src/share/vm/runtime/fieldType.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/fieldType.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_FIELDTYPE_HPP
+#define SHARE_VM_RUNTIME_FIELDTYPE_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/symbolOop.hpp"
+
 // Note: FieldType should be based on the SignatureIterator (or vice versa).
 //       In any case, this structure should be re-thought at some point.
 
@@ -50,3 +56,5 @@
   // Parse field and extract array information. Works for T_ARRAY only.
   static BasicType get_array_info(symbolOop signature, jint* dimension, symbolOop *object_key, TRAPS);
 };
+
+#endif // SHARE_VM_RUNTIME_FIELDTYPE_HPP
--- a/src/share/vm/runtime/fprofiler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/fprofiler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,24 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_fprofiler.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "code/vtableStubs.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/task.hpp"
+#include "runtime/vframe.hpp"
+#include "utilities/macros.hpp"
 
 // Static fields of FlatProfiler
 int               FlatProfiler::received_gc_ticks   = 0;
--- a/src/share/vm/runtime/fprofiler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/fprofiler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_FPROFILER_HPP
+#define SHARE_VM_RUNTIME_FPROFILER_HPP
+
+#include "runtime/timer.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // a simple flat profiler for Java
 
 
@@ -309,3 +323,5 @@
   static IntervalData* interval_data;
 #endif // FPROF_KERNEL
 };
+
+#endif // SHARE_VM_RUNTIME_FPROFILER_HPP
--- a/src/share/vm/runtime/frame.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/frame.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,34 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_frame.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/oop.inline2.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+#endif
 
 RegisterMap::RegisterMap(JavaThread *thread, bool update_map) {
   _thread         = thread;
@@ -878,7 +904,7 @@
 
 #endif /* CC_INTERP */
 
-#ifndef PPC
+#if !defined(PPC) || defined(ZERO)
   if (m->is_native()) {
 #ifdef CC_INTERP
     f->do_oop((oop*)&istate->_oop_temp);
--- a/src/share/vm/runtime/frame.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/frame.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,35 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_FRAME_HPP
+#define SHARE_VM_RUNTIME_FRAME_HPP
+
+#include "asm/assembler.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "runtime/registerMap.hpp"
+#include "utilities/top.hpp"
+#ifdef COMPILER2
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/adGlobals_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/adGlobals_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/adGlobals_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/adGlobals_zero.hpp"
+#endif
+#endif
+#ifdef ZERO
+#ifdef TARGET_ARCH_zero
+# include "stack_zero.hpp"
+#endif
+#endif
+
 typedef class BytecodeInterpreter* interpreterState;
 
 class CodeBlob;
@@ -419,7 +448,16 @@
 
   int pd_oop_map_offset_adjustment() const;
 
-# include "incls/_frame_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "frame_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "frame_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "frame_zero.hpp"
+#endif
+
 };
 
 
@@ -451,3 +489,5 @@
   frame *current()                { return &_fr; }
   RegisterMap* register_map()     { return &_reg_map; }
 };
+
+#endif // SHARE_VM_RUNTIME_FRAME_HPP
--- a/src/share/vm/runtime/frame.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/frame.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,33 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_FRAME_INLINE_HPP
+#define SHARE_VM_RUNTIME_FRAME_INLINE_HPP
+
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/bytecodeInterpreter.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/signature.hpp"
+#ifdef TARGET_ARCH_x86
+# include "jniTypes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "jniTypes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "jniTypes_zero.hpp"
+#endif
+#ifdef ZERO
+#ifdef TARGET_ARCH_zero
+# include "entryFrame_zero.hpp"
+# include "fakeStubFrame_zero.hpp"
+# include "interpreterFrame_zero.hpp"
+# include "sharkFrame_zero.hpp"
+#endif
+#endif
+
 // This file holds platform-independent bodies of inline functions for frames.
 
 // Note: The bcx usually contains the bcp; however during GC it contains the bci
@@ -52,4 +79,15 @@
 
 // here are the platform-dependent bodies:
 
-# include "incls/_frame_pd.inline.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "frame_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "frame_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "frame_zero.inline.hpp"
+#endif
+
+
+#endif // SHARE_VM_RUNTIME_FRAME_INLINE_HPP
--- a/src/share/vm/runtime/globals.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/globals.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,26 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_globals.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/globals_extension.hpp"
+#include "utilities/ostream.hpp"
+#include "utilities/top.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1_globals.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_globals.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/c2_globals.hpp"
+#endif
+#ifdef SHARK
+#include "shark/shark_globals.hpp"
+#endif
 
 
 RUNTIME_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, \
--- a/src/share/vm/runtime/globals.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/globals.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,86 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_GLOBALS_HPP
+#define SHARE_VM_RUNTIME_GLOBALS_HPP
+
+#include "utilities/debug.hpp"
+#ifdef TARGET_ARCH_x86
+# include "globals_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "globals_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "globals_zero.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "globals_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "globals_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "globals_windows.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "globals_linux_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "globals_linux_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "globals_linux_zero.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "globals_solaris_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "globals_solaris_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "globals_windows_x86.hpp"
+#endif
+#ifdef COMPILER1
+#ifdef TARGET_ARCH_x86
+# include "c1_globals_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c1_globals_sparc.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "c1_globals_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "c1_globals_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "c1_globals_windows.hpp"
+#endif
+#endif
+#ifdef COMPILER2
+#ifdef TARGET_ARCH_x86
+# include "c2_globals_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "c2_globals_sparc.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "c2_globals_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "c2_globals_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "c2_globals_windows.hpp"
+#endif
+#endif
+#ifdef SHARK
+#ifdef TARGET_ARCH_zero
+# include "shark_globals_zero.hpp"
+#endif
+#endif
+
 #if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)
 define_pd_global(bool, BackgroundCompilation,        false);
 define_pd_global(bool, UseTLAB,                      false);
@@ -327,10 +407,10 @@
   /* UseMembar is theoretically a temp flag used for memory barrier         \
    * removal testing.  It was supposed to be removed before FCS but has     \
    * been re-added (see 6401008) */                                         \
-  product(bool, UseMembar, false,                                           \
+  product_pd(bool, UseMembar,                                               \
           "(Unstable) Issues membars on thread state transitions")          \
                                                                             \
-  /* Temporary: See 6948537 */                                             \
+  /* Temporary: See 6948537 */                                              \
   experimental(bool, UseMemSetInBOT, true,                                  \
           "(Unstable) uses memset in BOT updates in GC code")               \
                                                                             \
@@ -822,6 +902,9 @@
   develop(bool, PrintJVMWarnings, false,                                    \
           "Prints warnings for unimplemented JVM functions")                \
                                                                             \
+  product(bool, PrintWarnings, true,                                        \
+          "Prints JVM warnings to output stream")                           \
+                                                                            \
   notproduct(uintx, WarnOnStalledSpinLock, 0,                               \
           "Prints warnings for stalled SpinLocks")                          \
                                                                             \
@@ -1585,7 +1668,7 @@
           "(Temporary, subject to experimentation)"                         \
           "Nominal minimum work per abortable preclean iteration")          \
                                                                             \
-  product(intx, CMSAbortablePrecleanWaitMillis, 100,                        \
+  manageable(intx, CMSAbortablePrecleanWaitMillis, 100,                     \
           "(Temporary, subject to experimentation)"                         \
           " Time that we sleep between iterations when not given"           \
           " enough work per iteration")                                     \
@@ -1677,7 +1760,7 @@
   product(uintx, CMSWorkQueueDrainThreshold, 10,                            \
           "Don't drain below this size per parallel worker/thief")          \
                                                                             \
-  product(intx, CMSWaitDuration, 2000,                                      \
+  manageable(intx, CMSWaitDuration, 2000,                                   \
           "Time in milliseconds that CMS thread waits for young GC")        \
                                                                             \
   product(bool, CMSYield, true,                                             \
@@ -1786,10 +1869,6 @@
   notproduct(bool, GCALotAtAllSafepoints, false,                            \
           "Enforce ScavengeALot/GCALot at all potential safepoints")        \
                                                                             \
-  product(bool, HandlePromotionFailure, true,                               \
-          "The youngest generation collection does not require "            \
-          "a guarantee of full promotion of all live objects.")             \
-                                                                            \
   product(bool, PrintPromotionFailure, false,                               \
           "Print additional diagnostic information following "              \
           " promotion failure")                                             \
@@ -3003,9 +3082,6 @@
   product(intx, NewRatio, 2,                                                \
           "Ratio of new/old generation sizes")                              \
                                                                             \
-  product(uintx, MaxLiveObjectEvacuationRatio, 100,                         \
-          "Max percent of eden objects that will be live at scavenge")      \
-                                                                            \
   product_pd(uintx, NewSizeThreadIncrease,                                  \
           "Additional size added to desired new generation size per "       \
           "non-daemon thread (in bytes)")                                   \
@@ -3542,7 +3618,7 @@
   product(uintx, SharedDummyBlockSize, 512*M,                               \
           "Size of dummy block used to shift heap addresses (in bytes)")    \
                                                                             \
-  product(uintx, SharedReadWriteSize,  12*M,                                \
+  product(uintx, SharedReadWriteSize,  NOT_LP64(12*M) LP64_ONLY(13*M),      \
           "Size of read-write space in permanent generation (in bytes)")    \
                                                                             \
   product(uintx, SharedReadOnlySize,   10*M,                                \
@@ -3680,3 +3756,5 @@
 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG, DECLARE_LP64_PRODUCT_FLAG)
 
 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG)
+
+#endif // SHARE_VM_RUNTIME_GLOBALS_HPP
--- a/src/share/vm/runtime/globals_extension.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/globals_extension.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP
+#define SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP
+
+#include "runtime/globals.hpp"
+#include "utilities/top.hpp"
+
 // Construct enum of Flag_<cmdline-arg> constants.
 
 // Parens left off in the following for the enum decl below.
@@ -213,3 +219,5 @@
   static bool is_ergo(CommandLineFlag flag);
   static bool is_cmdline(CommandLineFlag flag);
 };
+
+#endif // SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP
--- a/src/share/vm/runtime/handles.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/handles.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_handles.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 #ifdef ASSERT
 oop* HandleArea::allocate_handle(oop obj) {
--- a/src/share/vm/runtime/handles.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/handles.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_HANDLES_HPP
+#define SHARE_VM_RUNTIME_HANDLES_HPP
+
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "utilities/top.hpp"
+
 //------------------------------------------------------------------------------------------------------------------------
 // In order to preserve oops during garbage collection, they should be
 // allocated and passed around via Handles within the VM. A handle is
@@ -354,3 +361,5 @@
   ~ResetNoHandleMark() {}
 #endif
 };
+
+#endif // SHARE_VM_RUNTIME_HANDLES_HPP
--- a/src/share/vm/runtime/handles.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/handles.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_HANDLES_INLINE_HPP
+#define SHARE_VM_RUNTIME_HANDLES_INLINE_HPP
+
+#include "runtime/handles.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // these inline functions are in a separate file to break an include cycle
 // between Thread and Handle
 
@@ -71,3 +85,5 @@
   NOT_PRODUCT(area->set_size_in_bytes(_size_in_bytes);)
   debug_only(area->_handle_mark_nesting--);
 }
+
+#endif // SHARE_VM_RUNTIME_HANDLES_INLINE_HPP
--- a/src/share/vm/runtime/hpi.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/hpi.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_hpi.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jvm.h"
+#include "runtime/hpi.hpp"
 
 extern "C" {
   static void unimplemented_panic(const char *fmt, ...) {
--- a/src/share/vm/runtime/hpi.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/hpi.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_HPI_HPP
+#define SHARE_VM_RUNTIME_HPI_HPP
+
+#include "prims/hpi_imported.h"
+#include "runtime/os.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/top.hpp"
+
 //
 // C++ wrapper to HPI.
 //
@@ -232,3 +240,5 @@
         (char *buf, int len),
         ("buf = %p, len = %d", buf, len),
         (buf, len));
+
+#endif // SHARE_VM_RUNTIME_HPI_HPP
--- a/src/share/vm/runtime/icache.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/icache.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_icache.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/icache.hpp"
 
 // The flush stub function address
 AbstractICache::flush_icache_stub_t AbstractICache::_flush_icache_stub = NULL;
--- a/src/share/vm/runtime/icache.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/icache.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_ICACHE_HPP
+#define SHARE_VM_RUNTIME_ICACHE_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+
 // Interface for updating the instruction cache.  Whenever the VM modifies
 // code, part of the processor instruction cache potentially has to be flushed.
 
@@ -62,7 +68,16 @@
 // Must be included before the definition of ICacheStubGenerator
 // because ICacheStubGenerator uses ICache definitions.
 
-#include "incls/_icache_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "icache_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "icache_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "icache_zero.hpp"
+#endif
+
 
 
 class ICacheStubGenerator : public StubCodeGenerator {
@@ -113,3 +128,5 @@
 
   void generate_icache_flush(ICache::flush_icache_stub_t* flush_icache_stub);
 };
+
+#endif // SHARE_VM_RUNTIME_ICACHE_HPP
--- a/src/share/vm/runtime/init.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/init.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_init.cpp.incl"
+#include "precompiled.hpp"
+#include "code/icBuffer.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/universe.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/icache.hpp"
+#include "runtime/init.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 // Initialization done by VM thread in vm_init_globals()
 void check_ThreadShadow();
@@ -160,5 +169,6 @@
 
 
 void set_init_completed() {
+  assert(Universe::is_fully_initialized(), "Should have completed initialization");
   _init_completed = true;
 }
--- a/src/share/vm/runtime/init.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/init.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_INIT_HPP
+#define SHARE_VM_RUNTIME_INIT_HPP
+
+#include "utilities/top.hpp"
+
 // init_globals replaces C++ global objects so we can use the standard linker
 // to link Delta (which is at least twice as fast as using the GNU C++ linker).
 // Also, init.c gives explicit control over the sequence of initialization.
@@ -36,3 +41,5 @@
 
 bool is_init_completed();     // returns true when bootstrapping has completed
 void set_init_completed();    // set basic init to completed
+
+#endif // SHARE_VM_RUNTIME_INIT_HPP
--- a/src/share/vm/runtime/interfaceSupport.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/interfaceSupport.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_interfaceSupport.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/shared/markSweep.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "runtime/vframe.hpp"
+#include "utilities/preserveException.hpp"
 
 
 // Implementation of InterfaceSupport
--- a/src/share/vm/runtime/interfaceSupport.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/interfaceSupport.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,29 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_INTERFACESUPPORT_HPP
+#define SHARE_VM_RUNTIME_INTERFACESUPPORT_HPP
+
+#include "memory/gcLocker.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/orderAccess.hpp"
+#include "runtime/os.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/preserveException.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // Wrapper for all entry points to the virtual machine.
 // The HandleMarkCleaner is a faster version of HandleMark.
 // It relies on the fact that there is a HandleMark further
@@ -82,7 +105,16 @@
 
  public:
   // OS dependent stuff
-  #include "incls/_interfaceSupport_pd.hpp.incl"
+#ifdef TARGET_OS_FAMILY_linux
+# include "interfaceSupport_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "interfaceSupport_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "interfaceSupport_windows.hpp"
+#endif
+
 };
 
 
@@ -566,3 +598,5 @@
 
 
 #define JVM_END } }
+
+#endif // SHARE_VM_RUNTIME_INTERFACESUPPORT_HPP
--- a/src/share/vm/runtime/java.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/java.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,79 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_java.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/generateOopMap.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceKlassKlass.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/aprofiler.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/memprofiler.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/statSampler.hpp"
+#include "runtime/task.hpp"
+#include "runtime/timer.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/histogram.hpp"
+#include "utilities/vmError.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vm_version_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vm_version_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vm_version_zero.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Compiler.hpp"
+#include "c1/c1_Runtime1.hpp"
+#endif
+#ifdef COMPILER2
+#include "code/compiledIC.hpp"
+#include "compiler/methodLiveness.hpp"
+#include "opto/compile.hpp"
+#include "opto/indexSet.hpp"
+#include "opto/runtime.hpp"
+#endif
 
 HS_DTRACE_PROBE_DECL(hotspot, vm__shutdown);
 
@@ -198,7 +269,7 @@
   if (CountCompiledCalls) {
     print_method_invocation_histogram();
   }
-  if (ProfileInterpreter || C1UpdateMethodData) {
+  if (ProfileInterpreter COMPILER1_PRESENT(|| C1UpdateMethodData)) {
     print_method_profiling_data();
   }
   if (TimeCompiler) {
--- a/src/share/vm/runtime/java.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/java.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_JAVA_HPP
+#define SHARE_VM_RUNTIME_JAVA_HPP
+
+#include "runtime/os.hpp"
+
 // Register function to be called by before_exit
 extern "C" { void register_on_exit_function(void (*func)(void)) ;}
 
@@ -208,3 +213,5 @@
     return current().compare_major(7) >= 0;
   }
 };
+
+#endif // SHARE_VM_RUNTIME_JAVA_HPP
--- a/src/share/vm/runtime/javaCalls.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/javaCalls.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,32 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_javaCalls.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/nmethod.hpp"
+#include "compiler/compileBroker.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jniCheck.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubRoutines.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 // -----------------------------------------------------
 // Implementation of JavaCallWrapper
--- a/src/share/vm/runtime/javaCalls.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/javaCalls.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,33 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_JAVACALLS_HPP
+#define SHARE_VM_RUNTIME_JAVACALLS_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/javaFrameAnchor.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_ARCH_x86
+# include "jniTypes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "jniTypes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "jniTypes_zero.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // A JavaCallWrapper is constructed before each JavaCall and destructed after the call.
 // Its purpose is to allocate/deallocate a new handle block and to save/restore the last
 // Java fp/sp. A pointer to the JavaCallWrapper is stored on the stack.
@@ -189,3 +216,5 @@
   // Low-level interface
   static void call(JavaValue* result, methodHandle method, JavaCallArguments* args, TRAPS);
 };
+
+#endif // SHARE_VM_RUNTIME_JAVACALLS_HPP
--- a/src/share/vm/runtime/javaFrameAnchor.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/javaFrameAnchor.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -21,6 +21,29 @@
  * questions.
  *
  */
+
+#ifndef SHARE_VM_RUNTIME_JAVAFRAMEANCHOR_HPP
+#define SHARE_VM_RUNTIME_JAVAFRAMEANCHOR_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "orderAccess_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "orderAccess_linux_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "orderAccess_linux_zero.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "orderAccess_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "orderAccess_solaris_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "orderAccess_windows_x86.inline.hpp"
+#endif
 //
 // An object for encapsulating the machine/os dependent part of a JavaThread frame state
 //
@@ -70,7 +93,16 @@
   // and no one should look at the other fields.
   void zap(void)                                     { _last_Java_sp = NULL; }
 
-#include "incls/_javaFrameAnchor_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "javaFrameAnchor_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "javaFrameAnchor_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "javaFrameAnchor_zero.hpp"
+#endif
+
 
 public:
   JavaFrameAnchor()                              { clear(); }
@@ -84,3 +116,5 @@
   static ByteSize last_Java_pc_offset()          { return byte_offset_of(JavaFrameAnchor, _last_Java_pc); }
 
 };
+
+#endif // SHARE_VM_RUNTIME_JAVAFRAMEANCHOR_HPP
--- a/src/share/vm/runtime/jfieldIDWorkaround.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/jfieldIDWorkaround.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_JFIELDIDWORKAROUND_HPP
+#define SHARE_VM_RUNTIME_JFIELDIDWORKAROUND_HPP
+
 class jfieldIDWorkaround: AllStatic {
   // This workaround is because JVMTI doesn't have distinct entry points
   // for methods that use static jfieldIDs and instance jfieldIDs.
@@ -157,3 +160,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_RUNTIME_JFIELDIDWORKAROUND_HPP
--- a/src/share/vm/runtime/jniHandles.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/jniHandles.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jniHandles.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/mutexLocker.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 JNIHandleBlock* JNIHandles::_global_handles       = NULL;
--- a/src/share/vm/runtime/jniHandles.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/jniHandles.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_JNIHANDLES_HPP
+#define SHARE_VM_RUNTIME_JNIHANDLES_HPP
+
+#include "runtime/handles.hpp"
+#include "utilities/top.hpp"
+
 class JNIHandleBlock;
 
 
@@ -220,3 +226,5 @@
     *((oop*)handle) = deleted_handle(); // Mark the handle as deleted, allocate will reuse it
   }
 }
+
+#endif // SHARE_VM_RUNTIME_JNIHANDLES_HPP
--- a/src/share/vm/runtime/jniPeriodicChecker.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/jniPeriodicChecker.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_jniPeriodicChecker.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/jniPeriodicChecker.hpp"
+#include "runtime/task.hpp"
 
 
 // --------------------------------------------------------
--- a/src/share/vm/runtime/jniPeriodicChecker.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/jniPeriodicChecker.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_JNIPERIODICCHECKER_HPP
+#define SHARE_VM_RUNTIME_JNIPERIODICCHECKER_HPP
+
 class JniPeriodicCheckerTask;
 
 /*
@@ -50,3 +53,5 @@
 };
 
 void jniPeriodicChecker_exit();
+
+#endif // SHARE_VM_RUNTIME_JNIPERIODICCHECKER_HPP
--- a/src/share/vm/runtime/memprofiler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/memprofiler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,30 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_memprofiler.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/generation.hpp"
+#include "memory/permGen.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/memprofiler.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/task.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 #ifndef PRODUCT
 
--- a/src/share/vm/runtime/memprofiler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/memprofiler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_MEMPROFILER_HPP
+#define SHARE_VM_RUNTIME_MEMPROFILER_HPP
+
 // Prints periodic memory usage trace of HotSpot VM
 
 class MemProfilerTask;
@@ -40,3 +43,5 @@
   // Tester
   static bool is_active()     PRODUCT_RETURN0;
 };
+
+#endif // SHARE_VM_RUNTIME_MEMPROFILER_HPP
--- a/src/share/vm/runtime/monitorChunk.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/monitorChunk.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_monitorChunk.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/monitorChunk.hpp"
 
 MonitorChunk::MonitorChunk(int number_on_monitors) {
   _number_of_monitors = number_on_monitors;
--- a/src/share/vm/runtime/monitorChunk.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/monitorChunk.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_MONITORCHUNK_HPP
+#define SHARE_VM_RUNTIME_MONITORCHUNK_HPP
+
+#include "runtime/synchronizer.hpp"
+
 // Data structure for holding monitors for one activation during
 // deoptimization.
 
@@ -56,3 +61,5 @@
   // Tells whether the addr point into the monitors.
   bool contains(void* addr) const           { return (addr >= (void*) monitors()) && (addr <  (void*) (monitors() + number_of_monitors())); }
 };
+
+#endif // SHARE_VM_RUNTIME_MONITORCHUNK_HPP
--- a/src/share/vm/runtime/mutex.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/mutex.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -23,8 +23,22 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_mutex.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/osThread.hpp"
+#include "utilities/events.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "mutex_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "mutex_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "mutex_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 // o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o
 //
--- a/src/share/vm/runtime/mutex.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/mutex.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_MUTEX_HPP
+#define SHARE_VM_RUNTIME_MUTEX_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/os.hpp"
+#include "utilities/histogram.hpp"
+
 // The SplitWord construct allows us to colocate the contention queue
 // (cxq) with the lock-byte.  The queue elements are ParkEvents, which are
 // always aligned on 256-byte addresses - the least significant byte of
@@ -265,48 +272,5 @@
    }
 };
 
-/*
- * Per-thread blocking support for JSR166. See the Java-level
- * Documentation for rationale. Basically, park acts like wait, unpark
- * like notify.
- *
- * 6271289 --
- * To avoid errors where an os thread expires but the JavaThread still
- * exists, Parkers are immortal (type-stable) and are recycled across
- * new threads.  This parallels the ParkEvent implementation.
- * Because park-unpark allow spurious wakeups it is harmless if an
- * unpark call unparks a new thread using the old Parker reference.
- *
- * In the future we'll want to think about eliminating Parker and using
- * ParkEvent instead.  There's considerable duplication between the two
- * services.
- *
- */
 
-class Parker : public os::PlatformParker {
-private:
-  volatile int _counter ;
-  Parker * FreeNext ;
-  JavaThread * AssociatedWith ; // Current association
-
-public:
-  Parker() : PlatformParker() {
-    _counter       = 0 ;
-    FreeNext       = NULL ;
-    AssociatedWith = NULL ;
-  }
-protected:
-  ~Parker() { ShouldNotReachHere(); }
-public:
-  // For simplicity of interface with Java, all forms of park (indefinite,
-  // relative, and absolute) are multiplexed into one call.
-  void park(bool isAbsolute, jlong time);
-  void unpark();
-
-  // Lifecycle operators
-  static Parker * Allocate (JavaThread * t) ;
-  static void Release (Parker * e) ;
-private:
-  static Parker * volatile FreeList ;
-  static volatile int ListLock ;
-};
+#endif // SHARE_VM_RUNTIME_MUTEX_HPP
--- a/src/share/vm/runtime/mutexLocker.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/mutexLocker.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,20 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_mutexLocker.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "runtime/vmThread.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 // Mutexes used in the VM (see comment in mutexLocker.hpp):
 //
--- a/src/share/vm/runtime/mutexLocker.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/mutexLocker.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_MUTEXLOCKER_HPP
+#define SHARE_VM_RUNTIME_MUTEXLOCKER_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/mutex.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
+
 // Mutexes used in the VM.
 
 extern Mutex*   Patching_lock;                   // a lock used to guard code patching of compiled code
@@ -343,3 +358,5 @@
 };
 
 #endif
+
+#endif // SHARE_VM_RUNTIME_MUTEXLOCKER_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/runtime/objectMonitor.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,2447 @@
+/*
+ * Copyright (c) 1998, 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/markOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/objectMonitor.inline.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/thread.hpp"
+#include "services/threadService.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/preserveException.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
+
+#if defined(__GNUC__) && !defined(IA64)
+  // Need to inhibit inlining for older versions of GCC to avoid build-time failures
+  #define ATTR __attribute__((noinline))
+#else
+  #define ATTR
+#endif
+
+
+#ifdef DTRACE_ENABLED
+
+// Only bother with this argument setup if dtrace is available
+// TODO-FIXME: probes should not fire when caller is _blocked.  assert() accordingly.
+
+HS_DTRACE_PROBE_DECL4(hotspot, monitor__notify,
+  jlong, uintptr_t, char*, int);
+HS_DTRACE_PROBE_DECL4(hotspot, monitor__notifyAll,
+  jlong, uintptr_t, char*, int);
+HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__enter,
+  jlong, uintptr_t, char*, int);
+HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__entered,
+  jlong, uintptr_t, char*, int);
+HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__exit,
+  jlong, uintptr_t, char*, int);
+
+#define DTRACE_MONITOR_PROBE_COMMON(klassOop, thread)                      \
+  char* bytes = NULL;                                                      \
+  int len = 0;                                                             \
+  jlong jtid = SharedRuntime::get_java_tid(thread);                        \
+  symbolOop klassname = ((oop)(klassOop))->klass()->klass_part()->name();  \
+  if (klassname != NULL) {                                                 \
+    bytes = (char*)klassname->bytes();                                     \
+    len = klassname->utf8_length();                                        \
+  }
+
+#define DTRACE_MONITOR_WAIT_PROBE(monitor, klassOop, thread, millis)       \
+  {                                                                        \
+    if (DTraceMonitorProbes) {                                            \
+      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      HS_DTRACE_PROBE5(hotspot, monitor__wait, jtid,                       \
+                       (monitor), bytes, len, (millis));                   \
+    }                                                                      \
+  }
+
+#define DTRACE_MONITOR_PROBE(probe, monitor, klassOop, thread)             \
+  {                                                                        \
+    if (DTraceMonitorProbes) {                                            \
+      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      HS_DTRACE_PROBE4(hotspot, monitor__##probe, jtid,                    \
+                       (uintptr_t)(monitor), bytes, len);                  \
+    }                                                                      \
+  }
+
+#else //  ndef DTRACE_ENABLED
+
+#define DTRACE_MONITOR_WAIT_PROBE(klassOop, thread, millis, mon)    {;}
+#define DTRACE_MONITOR_PROBE(probe, klassOop, thread, mon)          {;}
+
+#endif // ndef DTRACE_ENABLED
+
+// Tunables ...
+// The knob* variables are effectively final.  Once set they should
+// never be modified hence.  Consider using __read_mostly with GCC.
+
+int ObjectMonitor::Knob_Verbose    = 0 ;
+int ObjectMonitor::Knob_SpinLimit  = 5000 ;    // derived by an external tool -
+static int Knob_LogSpins           = 0 ;       // enable jvmstat tally for spins
+static int Knob_HandOff            = 0 ;
+static int Knob_ReportSettings     = 0 ;
+
+static int Knob_SpinBase           = 0 ;       // Floor AKA SpinMin
+static int Knob_SpinBackOff        = 0 ;       // spin-loop backoff
+static int Knob_CASPenalty         = -1 ;      // Penalty for failed CAS
+static int Knob_OXPenalty          = -1 ;      // Penalty for observed _owner change
+static int Knob_SpinSetSucc        = 1 ;       // spinners set the _succ field
+static int Knob_SpinEarly          = 1 ;
+static int Knob_SuccEnabled        = 1 ;       // futile wake throttling
+static int Knob_SuccRestrict       = 0 ;       // Limit successors + spinners to at-most-one
+static int Knob_MaxSpinners        = -1 ;      // Should be a function of # CPUs
+static int Knob_Bonus              = 100 ;     // spin success bonus
+static int Knob_BonusB             = 100 ;     // spin success bonus
+static int Knob_Penalty            = 200 ;     // spin failure penalty
+static int Knob_Poverty            = 1000 ;
+static int Knob_SpinAfterFutile    = 1 ;       // Spin after returning from park()
+static int Knob_FixedSpin          = 0 ;
+static int Knob_OState             = 3 ;       // Spinner checks thread state of _owner
+static int Knob_UsePause           = 1 ;
+static int Knob_ExitPolicy         = 0 ;
+static int Knob_PreSpin            = 10 ;      // 20-100 likely better
+static int Knob_ResetEvent         = 0 ;
+static int BackOffMask             = 0 ;
+
+static int Knob_FastHSSEC          = 0 ;
+static int Knob_MoveNotifyee       = 2 ;       // notify() - disposition of notifyee
+static int Knob_QMode              = 0 ;       // EntryList-cxq policy - queue discipline
+static volatile int InitDone       = 0 ;
+
+#define TrySpin TrySpin_VaryDuration
+
+// -----------------------------------------------------------------------------
+// Theory of operations -- Monitors lists, thread residency, etc:
+//
+// * A thread acquires ownership of a monitor by successfully
+//   CAS()ing the _owner field from null to non-null.
+//
+// * Invariant: A thread appears on at most one monitor list --
+//   cxq, EntryList or WaitSet -- at any one time.
+//
+// * Contending threads "push" themselves onto the cxq with CAS
+//   and then spin/park.
+//
+// * After a contending thread eventually acquires the lock it must
+//   dequeue itself from either the EntryList or the cxq.
+//
+// * The exiting thread identifies and unparks an "heir presumptive"
+//   tentative successor thread on the EntryList.  Critically, the
+//   exiting thread doesn't unlink the successor thread from the EntryList.
+//   After having been unparked, the wakee will recontend for ownership of
+//   the monitor.   The successor (wakee) will either acquire the lock or
+//   re-park itself.
+//
+//   Succession is provided for by a policy of competitive handoff.
+//   The exiting thread does _not_ grant or pass ownership to the
+//   successor thread.  (This is also referred to as "handoff" succession").
+//   Instead the exiting thread releases ownership and possibly wakes
+//   a successor, so the successor can (re)compete for ownership of the lock.
+//   If the EntryList is empty but the cxq is populated the exiting
+//   thread will drain the cxq into the EntryList.  It does so by
+//   by detaching the cxq (installing null with CAS) and folding
+//   the threads from the cxq into the EntryList.  The EntryList is
+//   doubly linked, while the cxq is singly linked because of the
+//   CAS-based "push" used to enqueue recently arrived threads (RATs).
+//
+// * Concurrency invariants:
+//
+//   -- only the monitor owner may access or mutate the EntryList.
+//      The mutex property of the monitor itself protects the EntryList
+//      from concurrent interference.
+//   -- Only the monitor owner may detach the cxq.
+//
+// * The monitor entry list operations avoid locks, but strictly speaking
+//   they're not lock-free.  Enter is lock-free, exit is not.
+//   See http://j2se.east/~dice/PERSIST/040825-LockFreeQueues.html
+//
+// * The cxq can have multiple concurrent "pushers" but only one concurrent
+//   detaching thread.  This mechanism is immune from the ABA corruption.
+//   More precisely, the CAS-based "push" onto cxq is ABA-oblivious.
+//
+// * Taken together, the cxq and the EntryList constitute or form a
+//   single logical queue of threads stalled trying to acquire the lock.
+//   We use two distinct lists to improve the odds of a constant-time
+//   dequeue operation after acquisition (in the ::enter() epilog) and
+//   to reduce heat on the list ends.  (c.f. Michael Scott's "2Q" algorithm).
+//   A key desideratum is to minimize queue & monitor metadata manipulation
+//   that occurs while holding the monitor lock -- that is, we want to
+//   minimize monitor lock holds times.  Note that even a small amount of
+//   fixed spinning will greatly reduce the # of enqueue-dequeue operations
+//   on EntryList|cxq.  That is, spinning relieves contention on the "inner"
+//   locks and monitor metadata.
+//
+//   Cxq points to the the set of Recently Arrived Threads attempting entry.
+//   Because we push threads onto _cxq with CAS, the RATs must take the form of
+//   a singly-linked LIFO.  We drain _cxq into EntryList  at unlock-time when
+//   the unlocking thread notices that EntryList is null but _cxq is != null.
+//
+//   The EntryList is ordered by the prevailing queue discipline and
+//   can be organized in any convenient fashion, such as a doubly-linked list or
+//   a circular doubly-linked list.  Critically, we want insert and delete operations
+//   to operate in constant-time.  If we need a priority queue then something akin
+//   to Solaris' sleepq would work nicely.  Viz.,
+//   http://agg.eng/ws/on10_nightly/source/usr/src/uts/common/os/sleepq.c.
+//   Queue discipline is enforced at ::exit() time, when the unlocking thread
+//   drains the cxq into the EntryList, and orders or reorders the threads on the
+//   EntryList accordingly.
+//
+//   Barring "lock barging", this mechanism provides fair cyclic ordering,
+//   somewhat similar to an elevator-scan.
+//
+// * The monitor synchronization subsystem avoids the use of native
+//   synchronization primitives except for the narrow platform-specific
+//   park-unpark abstraction.  See the comments in os_solaris.cpp regarding
+//   the semantics of park-unpark.  Put another way, this monitor implementation
+//   depends only on atomic operations and park-unpark.  The monitor subsystem
+//   manages all RUNNING->BLOCKED and BLOCKED->READY transitions while the
+//   underlying OS manages the READY<->RUN transitions.
+//
+// * Waiting threads reside on the WaitSet list -- wait() puts
+//   the caller onto the WaitSet.
+//
+// * notify() or notifyAll() simply transfers threads from the WaitSet to
+//   either the EntryList or cxq.  Subsequent exit() operations will
+//   unpark the notifyee.  Unparking a notifee in notify() is inefficient -
+//   it's likely the notifyee would simply impale itself on the lock held
+//   by the notifier.
+//
+// * An interesting alternative is to encode cxq as (List,LockByte) where
+//   the LockByte is 0 iff the monitor is owned.  _owner is simply an auxiliary
+//   variable, like _recursions, in the scheme.  The threads or Events that form
+//   the list would have to be aligned in 256-byte addresses.  A thread would
+//   try to acquire the lock or enqueue itself with CAS, but exiting threads
+//   could use a 1-0 protocol and simply STB to set the LockByte to 0.
+//   Note that is is *not* word-tearing, but it does presume that full-word
+//   CAS operations are coherent with intermix with STB operations.  That's true
+//   on most common processors.
+//
+// * See also http://blogs.sun.com/dave
+
+
+// -----------------------------------------------------------------------------
+// Enter support
+
+bool ObjectMonitor::try_enter(Thread* THREAD) {
+  if (THREAD != _owner) {
+    if (THREAD->is_lock_owned ((address)_owner)) {
+       assert(_recursions == 0, "internal state error");
+       _owner = THREAD ;
+       _recursions = 1 ;
+       OwnerIsThread = 1 ;
+       return true;
+    }
+    if (Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) != NULL) {
+      return false;
+    }
+    return true;
+  } else {
+    _recursions++;
+    return true;
+  }
+}
+
+void ATTR ObjectMonitor::enter(TRAPS) {
+  // The following code is ordered to check the most common cases first
+  // and to reduce RTS->RTO cache line upgrades on SPARC and IA32 processors.
+  Thread * const Self = THREAD ;
+  void * cur ;
+
+  cur = Atomic::cmpxchg_ptr (Self, &_owner, NULL) ;
+  if (cur == NULL) {
+     // Either ASSERT _recursions == 0 or explicitly set _recursions = 0.
+     assert (_recursions == 0   , "invariant") ;
+     assert (_owner      == Self, "invariant") ;
+     // CONSIDER: set or assert OwnerIsThread == 1
+     return ;
+  }
+
+  if (cur == Self) {
+     // TODO-FIXME: check for integer overflow!  BUGID 6557169.
+     _recursions ++ ;
+     return ;
+  }
+
+  if (Self->is_lock_owned ((address)cur)) {
+    assert (_recursions == 0, "internal state error");
+    _recursions = 1 ;
+    // Commute owner from a thread-specific on-stack BasicLockObject address to
+    // a full-fledged "Thread *".
+    _owner = Self ;
+    OwnerIsThread = 1 ;
+    return ;
+  }
+
+  // We've encountered genuine contention.
+  assert (Self->_Stalled == 0, "invariant") ;
+  Self->_Stalled = intptr_t(this) ;
+
+  // Try one round of spinning *before* enqueueing Self
+  // and before going through the awkward and expensive state
+  // transitions.  The following spin is strictly optional ...
+  // Note that if we acquire the monitor from an initial spin
+  // we forgo posting JVMTI events and firing DTRACE probes.
+  if (Knob_SpinEarly && TrySpin (Self) > 0) {
+     assert (_owner == Self      , "invariant") ;
+     assert (_recursions == 0    , "invariant") ;
+     assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
+     Self->_Stalled = 0 ;
+     return ;
+  }
+
+  assert (_owner != Self          , "invariant") ;
+  assert (_succ  != Self          , "invariant") ;
+  assert (Self->is_Java_thread()  , "invariant") ;
+  JavaThread * jt = (JavaThread *) Self ;
+  assert (!SafepointSynchronize::is_at_safepoint(), "invariant") ;
+  assert (jt->thread_state() != _thread_blocked   , "invariant") ;
+  assert (this->object() != NULL  , "invariant") ;
+  assert (_count >= 0, "invariant") ;
+
+  // Prevent deflation at STW-time.  See deflate_idle_monitors() and is_busy().
+  // Ensure the object-monitor relationship remains stable while there's contention.
+  Atomic::inc_ptr(&_count);
+
+  { // Change java thread status to indicate blocked on monitor enter.
+    JavaThreadBlockedOnMonitorEnterState jtbmes(jt, this);
+
+    DTRACE_MONITOR_PROBE(contended__enter, this, object(), jt);
+    if (JvmtiExport::should_post_monitor_contended_enter()) {
+      JvmtiExport::post_monitor_contended_enter(jt, this);
+    }
+
+    OSThreadContendState osts(Self->osthread());
+    ThreadBlockInVM tbivm(jt);
+
+    Self->set_current_pending_monitor(this);
+
+    // TODO-FIXME: change the following for(;;) loop to straight-line code.
+    for (;;) {
+      jt->set_suspend_equivalent();
+      // cleared by handle_special_suspend_equivalent_condition()
+      // or java_suspend_self()
+
+      EnterI (THREAD) ;
+
+      if (!ExitSuspendEquivalent(jt)) break ;
+
+      //
+      // We have acquired the contended monitor, but while we were
+      // waiting another thread suspended us. We don't want to enter
+      // the monitor while suspended because that would surprise the
+      // thread that suspended us.
+      //
+          _recursions = 0 ;
+      _succ = NULL ;
+      exit (Self) ;
+
+      jt->java_suspend_self();
+    }
+    Self->set_current_pending_monitor(NULL);
+  }
+
+  Atomic::dec_ptr(&_count);
+  assert (_count >= 0, "invariant") ;
+  Self->_Stalled = 0 ;
+
+  // Must either set _recursions = 0 or ASSERT _recursions == 0.
+  assert (_recursions == 0     , "invariant") ;
+  assert (_owner == Self       , "invariant") ;
+  assert (_succ  != Self       , "invariant") ;
+  assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
+
+  // The thread -- now the owner -- is back in vm mode.
+  // Report the glorious news via TI,DTrace and jvmstat.
+  // The probe effect is non-trivial.  All the reportage occurs
+  // while we hold the monitor, increasing the length of the critical
+  // section.  Amdahl's parallel speedup law comes vividly into play.
+  //
+  // Another option might be to aggregate the events (thread local or
+  // per-monitor aggregation) and defer reporting until a more opportune
+  // time -- such as next time some thread encounters contention but has
+  // yet to acquire the lock.  While spinning that thread could
+  // spinning we could increment JVMStat counters, etc.
+
+  DTRACE_MONITOR_PROBE(contended__entered, this, object(), jt);
+  if (JvmtiExport::should_post_monitor_contended_entered()) {
+    JvmtiExport::post_monitor_contended_entered(jt, this);
+  }
+  if (ObjectMonitor::_sync_ContendedLockAttempts != NULL) {
+     ObjectMonitor::_sync_ContendedLockAttempts->inc() ;
+  }
+}
+
+
+// Caveat: TryLock() is not necessarily serializing if it returns failure.
+// Callers must compensate as needed.
+
+int ObjectMonitor::TryLock (Thread * Self) {
+   for (;;) {
+      void * own = _owner ;
+      if (own != NULL) return 0 ;
+      if (Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) {
+         // Either guarantee _recursions == 0 or set _recursions = 0.
+         assert (_recursions == 0, "invariant") ;
+         assert (_owner == Self, "invariant") ;
+         // CONSIDER: set or assert that OwnerIsThread == 1
+         return 1 ;
+      }
+      // The lock had been free momentarily, but we lost the race to the lock.
+      // Interference -- the CAS failed.
+      // We can either return -1 or retry.
+      // Retry doesn't make as much sense because the lock was just acquired.
+      if (true) return -1 ;
+   }
+}
+
+void ATTR ObjectMonitor::EnterI (TRAPS) {
+    Thread * Self = THREAD ;
+    assert (Self->is_Java_thread(), "invariant") ;
+    assert (((JavaThread *) Self)->thread_state() == _thread_blocked   , "invariant") ;
+
+    // Try the lock - TATAS
+    if (TryLock (Self) > 0) {
+        assert (_succ != Self              , "invariant") ;
+        assert (_owner == Self             , "invariant") ;
+        assert (_Responsible != Self       , "invariant") ;
+        return ;
+    }
+
+    DeferredInitialize () ;
+
+    // We try one round of spinning *before* enqueueing Self.
+    //
+    // If the _owner is ready but OFFPROC we could use a YieldTo()
+    // operation to donate the remainder of this thread's quantum
+    // to the owner.  This has subtle but beneficial affinity
+    // effects.
+
+    if (TrySpin (Self) > 0) {
+        assert (_owner == Self        , "invariant") ;
+        assert (_succ != Self         , "invariant") ;
+        assert (_Responsible != Self  , "invariant") ;
+        return ;
+    }
+
+    // The Spin failed -- Enqueue and park the thread ...
+    assert (_succ  != Self            , "invariant") ;
+    assert (_owner != Self            , "invariant") ;
+    assert (_Responsible != Self      , "invariant") ;
+
+    // Enqueue "Self" on ObjectMonitor's _cxq.
+    //
+    // Node acts as a proxy for Self.
+    // As an aside, if were to ever rewrite the synchronization code mostly
+    // in Java, WaitNodes, ObjectMonitors, and Events would become 1st-class
+    // Java objects.  This would avoid awkward lifecycle and liveness issues,
+    // as well as eliminate a subset of ABA issues.
+    // TODO: eliminate ObjectWaiter and enqueue either Threads or Events.
+    //
+
+    ObjectWaiter node(Self) ;
+    Self->_ParkEvent->reset() ;
+    node._prev   = (ObjectWaiter *) 0xBAD ;
+    node.TState  = ObjectWaiter::TS_CXQ ;
+
+    // Push "Self" onto the front of the _cxq.
+    // Once on cxq/EntryList, Self stays on-queue until it acquires the lock.
+    // Note that spinning tends to reduce the rate at which threads
+    // enqueue and dequeue on EntryList|cxq.
+    ObjectWaiter * nxt ;
+    for (;;) {
+        node._next = nxt = _cxq ;
+        if (Atomic::cmpxchg_ptr (&node, &_cxq, nxt) == nxt) break ;
+
+        // Interference - the CAS failed because _cxq changed.  Just retry.
+        // As an optional optimization we retry the lock.
+        if (TryLock (Self) > 0) {
+            assert (_succ != Self         , "invariant") ;
+            assert (_owner == Self        , "invariant") ;
+            assert (_Responsible != Self  , "invariant") ;
+            return ;
+        }
+    }
+
+    // Check for cxq|EntryList edge transition to non-null.  This indicates
+    // the onset of contention.  While contention persists exiting threads
+    // will use a ST:MEMBAR:LD 1-1 exit protocol.  When contention abates exit
+    // operations revert to the faster 1-0 mode.  This enter operation may interleave
+    // (race) a concurrent 1-0 exit operation, resulting in stranding, so we
+    // arrange for one of the contending thread to use a timed park() operations
+    // to detect and recover from the race.  (Stranding is form of progress failure
+    // where the monitor is unlocked but all the contending threads remain parked).
+    // That is, at least one of the contended threads will periodically poll _owner.
+    // One of the contending threads will become the designated "Responsible" thread.
+    // The Responsible thread uses a timed park instead of a normal indefinite park
+    // operation -- it periodically wakes and checks for and recovers from potential
+    // strandings admitted by 1-0 exit operations.   We need at most one Responsible
+    // thread per-monitor at any given moment.  Only threads on cxq|EntryList may
+    // be responsible for a monitor.
+    //
+    // Currently, one of the contended threads takes on the added role of "Responsible".
+    // A viable alternative would be to use a dedicated "stranding checker" thread
+    // that periodically iterated over all the threads (or active monitors) and unparked
+    // successors where there was risk of stranding.  This would help eliminate the
+    // timer scalability issues we see on some platforms as we'd only have one thread
+    // -- the checker -- parked on a timer.
+
+    if ((SyncFlags & 16) == 0 && nxt == NULL && _EntryList == NULL) {
+        // Try to assume the role of responsible thread for the monitor.
+        // CONSIDER:  ST vs CAS vs { if (Responsible==null) Responsible=Self }
+        Atomic::cmpxchg_ptr (Self, &_Responsible, NULL) ;
+    }
+
+    // The lock have been released while this thread was occupied queueing
+    // itself onto _cxq.  To close the race and avoid "stranding" and
+    // progress-liveness failure we must resample-retry _owner before parking.
+    // Note the Dekker/Lamport duality: ST cxq; MEMBAR; LD Owner.
+    // In this case the ST-MEMBAR is accomplished with CAS().
+    //
+    // TODO: Defer all thread state transitions until park-time.
+    // Since state transitions are heavy and inefficient we'd like
+    // to defer the state transitions until absolutely necessary,
+    // and in doing so avoid some transitions ...
+
+    TEVENT (Inflated enter - Contention) ;
+    int nWakeups = 0 ;
+    int RecheckInterval = 1 ;
+
+    for (;;) {
+
+        if (TryLock (Self) > 0) break ;
+        assert (_owner != Self, "invariant") ;
+
+        if ((SyncFlags & 2) && _Responsible == NULL) {
+           Atomic::cmpxchg_ptr (Self, &_Responsible, NULL) ;
+        }
+
+        // park self
+        if (_Responsible == Self || (SyncFlags & 1)) {
+            TEVENT (Inflated enter - park TIMED) ;
+            Self->_ParkEvent->park ((jlong) RecheckInterval) ;
+            // Increase the RecheckInterval, but clamp the value.
+            RecheckInterval *= 8 ;
+            if (RecheckInterval > 1000) RecheckInterval = 1000 ;
+        } else {
+            TEVENT (Inflated enter - park UNTIMED) ;
+            Self->_ParkEvent->park() ;
+        }
+
+        if (TryLock(Self) > 0) break ;
+
+        // The lock is still contested.
+        // Keep a tally of the # of futile wakeups.
+        // Note that the counter is not protected by a lock or updated by atomics.
+        // That is by design - we trade "lossy" counters which are exposed to
+        // races during updates for a lower probe effect.
+        TEVENT (Inflated enter - Futile wakeup) ;
+        if (ObjectMonitor::_sync_FutileWakeups != NULL) {
+           ObjectMonitor::_sync_FutileWakeups->inc() ;
+        }
+        ++ nWakeups ;
+
+        // Assuming this is not a spurious wakeup we'll normally find _succ == Self.
+        // We can defer clearing _succ until after the spin completes
+        // TrySpin() must tolerate being called with _succ == Self.
+        // Try yet another round of adaptive spinning.
+        if ((Knob_SpinAfterFutile & 1) && TrySpin (Self) > 0) break ;
+
+        // We can find that we were unpark()ed and redesignated _succ while
+        // we were spinning.  That's harmless.  If we iterate and call park(),
+        // park() will consume the event and return immediately and we'll
+        // just spin again.  This pattern can repeat, leaving _succ to simply
+        // spin on a CPU.  Enable Knob_ResetEvent to clear pending unparks().
+        // Alternately, we can sample fired() here, and if set, forgo spinning
+        // in the next iteration.
+
+        if ((Knob_ResetEvent & 1) && Self->_ParkEvent->fired()) {
+           Self->_ParkEvent->reset() ;
+           OrderAccess::fence() ;
+        }
+        if (_succ == Self) _succ = NULL ;
+
+        // Invariant: after clearing _succ a thread *must* retry _owner before parking.
+        OrderAccess::fence() ;
+    }
+
+    // Egress :
+    // Self has acquired the lock -- Unlink Self from the cxq or EntryList.
+    // Normally we'll find Self on the EntryList .
+    // From the perspective of the lock owner (this thread), the
+    // EntryList is stable and cxq is prepend-only.
+    // The head of cxq is volatile but the interior is stable.
+    // In addition, Self.TState is stable.
+
+    assert (_owner == Self      , "invariant") ;
+    assert (object() != NULL    , "invariant") ;
+    // I'd like to write:
+    //   guarantee (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
+    // but as we're at a safepoint that's not safe.
+
+    UnlinkAfterAcquire (Self, &node) ;
+    if (_succ == Self) _succ = NULL ;
+
+    assert (_succ != Self, "invariant") ;
+    if (_Responsible == Self) {
+        _Responsible = NULL ;
+        // Dekker pivot-point.
+        // Consider OrderAccess::storeload() here
+
+        // We may leave threads on cxq|EntryList without a designated
+        // "Responsible" thread.  This is benign.  When this thread subsequently
+        // exits the monitor it can "see" such preexisting "old" threads --
+        // threads that arrived on the cxq|EntryList before the fence, above --
+        // by LDing cxq|EntryList.  Newly arrived threads -- that is, threads
+        // that arrive on cxq after the ST:MEMBAR, above -- will set Responsible
+        // non-null and elect a new "Responsible" timer thread.
+        //
+        // This thread executes:
+        //    ST Responsible=null; MEMBAR    (in enter epilog - here)
+        //    LD cxq|EntryList               (in subsequent exit)
+        //
+        // Entering threads in the slow/contended path execute:
+        //    ST cxq=nonnull; MEMBAR; LD Responsible (in enter prolog)
+        //    The (ST cxq; MEMBAR) is accomplished with CAS().
+        //
+        // The MEMBAR, above, prevents the LD of cxq|EntryList in the subsequent
+        // exit operation from floating above the ST Responsible=null.
+        //
+        // In *practice* however, EnterI() is always followed by some atomic
+        // operation such as the decrement of _count in ::enter().  Those atomics
+        // obviate the need for the explicit MEMBAR, above.
+    }
+
+    // We've acquired ownership with CAS().
+    // CAS is serializing -- it has MEMBAR/FENCE-equivalent semantics.
+    // But since the CAS() this thread may have also stored into _succ,
+    // EntryList, cxq or Responsible.  These meta-data updates must be
+    // visible __before this thread subsequently drops the lock.
+    // Consider what could occur if we didn't enforce this constraint --
+    // STs to monitor meta-data and user-data could reorder with (become
+    // visible after) the ST in exit that drops ownership of the lock.
+    // Some other thread could then acquire the lock, but observe inconsistent
+    // or old monitor meta-data and heap data.  That violates the JMM.
+    // To that end, the 1-0 exit() operation must have at least STST|LDST
+    // "release" barrier semantics.  Specifically, there must be at least a
+    // STST|LDST barrier in exit() before the ST of null into _owner that drops
+    // the lock.   The barrier ensures that changes to monitor meta-data and data
+    // protected by the lock will be visible before we release the lock, and
+    // therefore before some other thread (CPU) has a chance to acquire the lock.
+    // See also: http://gee.cs.oswego.edu/dl/jmm/cookbook.html.
+    //
+    // Critically, any prior STs to _succ or EntryList must be visible before
+    // the ST of null into _owner in the *subsequent* (following) corresponding
+    // monitorexit.  Recall too, that in 1-0 mode monitorexit does not necessarily
+    // execute a serializing instruction.
+
+    if (SyncFlags & 8) {
+       OrderAccess::fence() ;
+    }
+    return ;
+}
+
+// ReenterI() is a specialized inline form of the latter half of the
+// contended slow-path from EnterI().  We use ReenterI() only for
+// monitor reentry in wait().
+//
+// In the future we should reconcile EnterI() and ReenterI(), adding
+// Knob_Reset and Knob_SpinAfterFutile support and restructuring the
+// loop accordingly.
+
+void ATTR ObjectMonitor::ReenterI (Thread * Self, ObjectWaiter * SelfNode) {
+    assert (Self != NULL                , "invariant") ;
+    assert (SelfNode != NULL            , "invariant") ;
+    assert (SelfNode->_thread == Self   , "invariant") ;
+    assert (_waiters > 0                , "invariant") ;
+    assert (((oop)(object()))->mark() == markOopDesc::encode(this) , "invariant") ;
+    assert (((JavaThread *)Self)->thread_state() != _thread_blocked, "invariant") ;
+    JavaThread * jt = (JavaThread *) Self ;
+
+    int nWakeups = 0 ;
+    for (;;) {
+        ObjectWaiter::TStates v = SelfNode->TState ;
+        guarantee (v == ObjectWaiter::TS_ENTER || v == ObjectWaiter::TS_CXQ, "invariant") ;
+        assert    (_owner != Self, "invariant") ;
+
+        if (TryLock (Self) > 0) break ;
+        if (TrySpin (Self) > 0) break ;
+
+        TEVENT (Wait Reentry - parking) ;
+
+        // State transition wrappers around park() ...
+        // ReenterI() wisely defers state transitions until
+        // it's clear we must park the thread.
+        {
+           OSThreadContendState osts(Self->osthread());
+           ThreadBlockInVM tbivm(jt);
+
+           // cleared by handle_special_suspend_equivalent_condition()
+           // or java_suspend_self()
+           jt->set_suspend_equivalent();
+           if (SyncFlags & 1) {
+              Self->_ParkEvent->park ((jlong)1000) ;
+           } else {
+              Self->_ParkEvent->park () ;
+           }
+
+           // were we externally suspended while we were waiting?
+           for (;;) {
+              if (!ExitSuspendEquivalent (jt)) break ;
+              if (_succ == Self) { _succ = NULL; OrderAccess::fence(); }
+              jt->java_suspend_self();
+              jt->set_suspend_equivalent();
+           }
+        }
+
+        // Try again, but just so we distinguish between futile wakeups and
+        // successful wakeups.  The following test isn't algorithmically
+        // necessary, but it helps us maintain sensible statistics.
+        if (TryLock(Self) > 0) break ;
+
+        // The lock is still contested.
+        // Keep a tally of the # of futile wakeups.
+        // Note that the counter is not protected by a lock or updated by atomics.
+        // That is by design - we trade "lossy" counters which are exposed to
+        // races during updates for a lower probe effect.
+        TEVENT (Wait Reentry - futile wakeup) ;
+        ++ nWakeups ;
+
+        // Assuming this is not a spurious wakeup we'll normally
+        // find that _succ == Self.
+        if (_succ == Self) _succ = NULL ;
+
+        // Invariant: after clearing _succ a contending thread
+        // *must* retry  _owner before parking.
+        OrderAccess::fence() ;
+
+        if (ObjectMonitor::_sync_FutileWakeups != NULL) {
+          ObjectMonitor::_sync_FutileWakeups->inc() ;
+        }
+    }
+
+    // Self has acquired the lock -- Unlink Self from the cxq or EntryList .
+    // Normally we'll find Self on the EntryList.
+    // Unlinking from the EntryList is constant-time and atomic-free.
+    // From the perspective of the lock owner (this thread), the
+    // EntryList is stable and cxq is prepend-only.
+    // The head of cxq is volatile but the interior is stable.
+    // In addition, Self.TState is stable.
+
+    assert (_owner == Self, "invariant") ;
+    assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
+    UnlinkAfterAcquire (Self, SelfNode) ;
+    if (_succ == Self) _succ = NULL ;
+    assert (_succ != Self, "invariant") ;
+    SelfNode->TState = ObjectWaiter::TS_RUN ;
+    OrderAccess::fence() ;      // see comments at the end of EnterI()
+}
+
+// after the thread acquires the lock in ::enter().  Equally, we could defer
+// unlinking the thread until ::exit()-time.
+
+void ObjectMonitor::UnlinkAfterAcquire (Thread * Self, ObjectWaiter * SelfNode)
+{
+    assert (_owner == Self, "invariant") ;
+    assert (SelfNode->_thread == Self, "invariant") ;
+
+    if (SelfNode->TState == ObjectWaiter::TS_ENTER) {
+        // Normal case: remove Self from the DLL EntryList .
+        // This is a constant-time operation.
+        ObjectWaiter * nxt = SelfNode->_next ;
+        ObjectWaiter * prv = SelfNode->_prev ;
+        if (nxt != NULL) nxt->_prev = prv ;
+        if (prv != NULL) prv->_next = nxt ;
+        if (SelfNode == _EntryList ) _EntryList = nxt ;
+        assert (nxt == NULL || nxt->TState == ObjectWaiter::TS_ENTER, "invariant") ;
+        assert (prv == NULL || prv->TState == ObjectWaiter::TS_ENTER, "invariant") ;
+        TEVENT (Unlink from EntryList) ;
+    } else {
+        guarantee (SelfNode->TState == ObjectWaiter::TS_CXQ, "invariant") ;
+        // Inopportune interleaving -- Self is still on the cxq.
+        // This usually means the enqueue of self raced an exiting thread.
+        // Normally we'll find Self near the front of the cxq, so
+        // dequeueing is typically fast.  If needbe we can accelerate
+        // this with some MCS/CHL-like bidirectional list hints and advisory
+        // back-links so dequeueing from the interior will normally operate
+        // in constant-time.
+        // Dequeue Self from either the head (with CAS) or from the interior
+        // with a linear-time scan and normal non-atomic memory operations.
+        // CONSIDER: if Self is on the cxq then simply drain cxq into EntryList
+        // and then unlink Self from EntryList.  We have to drain eventually,
+        // so it might as well be now.
+
+        ObjectWaiter * v = _cxq ;
+        assert (v != NULL, "invariant") ;
+        if (v != SelfNode || Atomic::cmpxchg_ptr (SelfNode->_next, &_cxq, v) != v) {
+            // The CAS above can fail from interference IFF a "RAT" arrived.
+            // In that case Self must be in the interior and can no longer be
+            // at the head of cxq.
+            if (v == SelfNode) {
+                assert (_cxq != v, "invariant") ;
+                v = _cxq ;          // CAS above failed - start scan at head of list
+            }
+            ObjectWaiter * p ;
+            ObjectWaiter * q = NULL ;
+            for (p = v ; p != NULL && p != SelfNode; p = p->_next) {
+                q = p ;
+                assert (p->TState == ObjectWaiter::TS_CXQ, "invariant") ;
+            }
+            assert (v != SelfNode,  "invariant") ;
+            assert (p == SelfNode,  "Node not found on cxq") ;
+            assert (p != _cxq,      "invariant") ;
+            assert (q != NULL,      "invariant") ;
+            assert (q->_next == p,  "invariant") ;
+            q->_next = p->_next ;
+        }
+        TEVENT (Unlink from cxq) ;
+    }
+
+    // Diagnostic hygiene ...
+    SelfNode->_prev  = (ObjectWaiter *) 0xBAD ;
+    SelfNode->_next  = (ObjectWaiter *) 0xBAD ;
+    SelfNode->TState = ObjectWaiter::TS_RUN ;
+}
+
+// -----------------------------------------------------------------------------
+// Exit support
+//
+// exit()
+// ~~~~~~
+// Note that the collector can't reclaim the objectMonitor or deflate
+// the object out from underneath the thread calling ::exit() as the
+// thread calling ::exit() never transitions to a stable state.
+// This inhibits GC, which in turn inhibits asynchronous (and
+// inopportune) reclamation of "this".
+//
+// We'd like to assert that: (THREAD->thread_state() != _thread_blocked) ;
+// There's one exception to the claim above, however.  EnterI() can call
+// exit() to drop a lock if the acquirer has been externally suspended.
+// In that case exit() is called with _thread_state as _thread_blocked,
+// but the monitor's _count field is > 0, which inhibits reclamation.
+//
+// 1-0 exit
+// ~~~~~~~~
+// ::exit() uses a canonical 1-1 idiom with a MEMBAR although some of
+// the fast-path operators have been optimized so the common ::exit()
+// operation is 1-0.  See i486.ad fast_unlock(), for instance.
+// The code emitted by fast_unlock() elides the usual MEMBAR.  This
+// greatly improves latency -- MEMBAR and CAS having considerable local
+// latency on modern processors -- but at the cost of "stranding".  Absent the
+// MEMBAR, a thread in fast_unlock() can race a thread in the slow
+// ::enter() path, resulting in the entering thread being stranding
+// and a progress-liveness failure.   Stranding is extremely rare.
+// We use timers (timed park operations) & periodic polling to detect
+// and recover from stranding.  Potentially stranded threads periodically
+// wake up and poll the lock.  See the usage of the _Responsible variable.
+//
+// The CAS() in enter provides for safety and exclusion, while the CAS or
+// MEMBAR in exit provides for progress and avoids stranding.  1-0 locking
+// eliminates the CAS/MEMBAR from the exist path, but it admits stranding.
+// We detect and recover from stranding with timers.
+//
+// If a thread transiently strands it'll park until (a) another
+// thread acquires the lock and then drops the lock, at which time the
+// exiting thread will notice and unpark the stranded thread, or, (b)
+// the timer expires.  If the lock is high traffic then the stranding latency
+// will be low due to (a).  If the lock is low traffic then the odds of
+// stranding are lower, although the worst-case stranding latency
+// is longer.  Critically, we don't want to put excessive load in the
+// platform's timer subsystem.  We want to minimize both the timer injection
+// rate (timers created/sec) as well as the number of timers active at
+// any one time.  (more precisely, we want to minimize timer-seconds, which is
+// the integral of the # of active timers at any instant over time).
+// Both impinge on OS scalability.  Given that, at most one thread parked on
+// a monitor will use a timer.
+
+void ATTR ObjectMonitor::exit(TRAPS) {
+   Thread * Self = THREAD ;
+   if (THREAD != _owner) {
+     if (THREAD->is_lock_owned((address) _owner)) {
+       // Transmute _owner from a BasicLock pointer to a Thread address.
+       // We don't need to hold _mutex for this transition.
+       // Non-null to Non-null is safe as long as all readers can
+       // tolerate either flavor.
+       assert (_recursions == 0, "invariant") ;
+       _owner = THREAD ;
+       _recursions = 0 ;
+       OwnerIsThread = 1 ;
+     } else {
+       // NOTE: we need to handle unbalanced monitor enter/exit
+       // in native code by throwing an exception.
+       // TODO: Throw an IllegalMonitorStateException ?
+       TEVENT (Exit - Throw IMSX) ;
+       assert(false, "Non-balanced monitor enter/exit!");
+       if (false) {
+          THROW(vmSymbols::java_lang_IllegalMonitorStateException());
+       }
+       return;
+     }
+   }
+
+   if (_recursions != 0) {
+     _recursions--;        // this is simple recursive enter
+     TEVENT (Inflated exit - recursive) ;
+     return ;
+   }
+
+   // Invariant: after setting Responsible=null an thread must execute
+   // a MEMBAR or other serializing instruction before fetching EntryList|cxq.
+   if ((SyncFlags & 4) == 0) {
+      _Responsible = NULL ;
+   }
+
+   for (;;) {
+      assert (THREAD == _owner, "invariant") ;
+
+
+      if (Knob_ExitPolicy == 0) {
+         // release semantics: prior loads and stores from within the critical section
+         // must not float (reorder) past the following store that drops the lock.
+         // On SPARC that requires MEMBAR #loadstore|#storestore.
+         // But of course in TSO #loadstore|#storestore is not required.
+         // I'd like to write one of the following:
+         // A.  OrderAccess::release() ; _owner = NULL
+         // B.  OrderAccess::loadstore(); OrderAccess::storestore(); _owner = NULL;
+         // Unfortunately OrderAccess::release() and OrderAccess::loadstore() both
+         // store into a _dummy variable.  That store is not needed, but can result
+         // in massive wasteful coherency traffic on classic SMP systems.
+         // Instead, I use release_store(), which is implemented as just a simple
+         // ST on x64, x86 and SPARC.
+         OrderAccess::release_store_ptr (&_owner, NULL) ;   // drop the lock
+         OrderAccess::storeload() ;                         // See if we need to wake a successor
+         if ((intptr_t(_EntryList)|intptr_t(_cxq)) == 0 || _succ != NULL) {
+            TEVENT (Inflated exit - simple egress) ;
+            return ;
+         }
+         TEVENT (Inflated exit - complex egress) ;
+
+         // Normally the exiting thread is responsible for ensuring succession,
+         // but if other successors are ready or other entering threads are spinning
+         // then this thread can simply store NULL into _owner and exit without
+         // waking a successor.  The existence of spinners or ready successors
+         // guarantees proper succession (liveness).  Responsibility passes to the
+         // ready or running successors.  The exiting thread delegates the duty.
+         // More precisely, if a successor already exists this thread is absolved
+         // of the responsibility of waking (unparking) one.
+         //
+         // The _succ variable is critical to reducing futile wakeup frequency.
+         // _succ identifies the "heir presumptive" thread that has been made
+         // ready (unparked) but that has not yet run.  We need only one such
+         // successor thread to guarantee progress.
+         // See http://www.usenix.org/events/jvm01/full_papers/dice/dice.pdf
+         // section 3.3 "Futile Wakeup Throttling" for details.
+         //
+         // Note that spinners in Enter() also set _succ non-null.
+         // In the current implementation spinners opportunistically set
+         // _succ so that exiting threads might avoid waking a successor.
+         // Another less appealing alternative would be for the exiting thread
+         // to drop the lock and then spin briefly to see if a spinner managed
+         // to acquire the lock.  If so, the exiting thread could exit
+         // immediately without waking a successor, otherwise the exiting
+         // thread would need to dequeue and wake a successor.
+         // (Note that we'd need to make the post-drop spin short, but no
+         // shorter than the worst-case round-trip cache-line migration time.
+         // The dropped lock needs to become visible to the spinner, and then
+         // the acquisition of the lock by the spinner must become visible to
+         // the exiting thread).
+         //
+
+         // It appears that an heir-presumptive (successor) must be made ready.
+         // Only the current lock owner can manipulate the EntryList or
+         // drain _cxq, so we need to reacquire the lock.  If we fail
+         // to reacquire the lock the responsibility for ensuring succession
+         // falls to the new owner.
+         //
+         if (Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) != NULL) {
+            return ;
+         }
+         TEVENT (Exit - Reacquired) ;
+      } else {
+         if ((intptr_t(_EntryList)|intptr_t(_cxq)) == 0 || _succ != NULL) {
+            OrderAccess::release_store_ptr (&_owner, NULL) ;   // drop the lock
+            OrderAccess::storeload() ;
+            // Ratify the previously observed values.
+            if (_cxq == NULL || _succ != NULL) {
+                TEVENT (Inflated exit - simple egress) ;
+                return ;
+            }
+
+            // inopportune interleaving -- the exiting thread (this thread)
+            // in the fast-exit path raced an entering thread in the slow-enter
+            // path.
+            // We have two choices:
+            // A.  Try to reacquire the lock.
+            //     If the CAS() fails return immediately, otherwise
+            //     we either restart/rerun the exit operation, or simply
+            //     fall-through into the code below which wakes a successor.
+            // B.  If the elements forming the EntryList|cxq are TSM
+            //     we could simply unpark() the lead thread and return
+            //     without having set _succ.
+            if (Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) != NULL) {
+               TEVENT (Inflated exit - reacquired succeeded) ;
+               return ;
+            }
+            TEVENT (Inflated exit - reacquired failed) ;
+         } else {
+            TEVENT (Inflated exit - complex egress) ;
+         }
+      }
+
+      guarantee (_owner == THREAD, "invariant") ;
+
+      ObjectWaiter * w = NULL ;
+      int QMode = Knob_QMode ;
+
+      if (QMode == 2 && _cxq != NULL) {
+          // QMode == 2 : cxq has precedence over EntryList.
+          // Try to directly wake a successor from the cxq.
+          // If successful, the successor will need to unlink itself from cxq.
+          w = _cxq ;
+          assert (w != NULL, "invariant") ;
+          assert (w->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
+          ExitEpilog (Self, w) ;
+          return ;
+      }
+
+      if (QMode == 3 && _cxq != NULL) {
+          // Aggressively drain cxq into EntryList at the first opportunity.
+          // This policy ensure that recently-run threads live at the head of EntryList.
+          // Drain _cxq into EntryList - bulk transfer.
+          // First, detach _cxq.
+          // The following loop is tantamount to: w = swap (&cxq, NULL)
+          w = _cxq ;
+          for (;;) {
+             assert (w != NULL, "Invariant") ;
+             ObjectWaiter * u = (ObjectWaiter *) Atomic::cmpxchg_ptr (NULL, &_cxq, w) ;
+             if (u == w) break ;
+             w = u ;
+          }
+          assert (w != NULL              , "invariant") ;
+
+          ObjectWaiter * q = NULL ;
+          ObjectWaiter * p ;
+          for (p = w ; p != NULL ; p = p->_next) {
+              guarantee (p->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
+              p->TState = ObjectWaiter::TS_ENTER ;
+              p->_prev = q ;
+              q = p ;
+          }
+
+          // Append the RATs to the EntryList
+          // TODO: organize EntryList as a CDLL so we can locate the tail in constant-time.
+          ObjectWaiter * Tail ;
+          for (Tail = _EntryList ; Tail != NULL && Tail->_next != NULL ; Tail = Tail->_next) ;
+          if (Tail == NULL) {
+              _EntryList = w ;
+          } else {
+              Tail->_next = w ;
+              w->_prev = Tail ;
+          }
+
+          // Fall thru into code that tries to wake a successor from EntryList
+      }
+
+      if (QMode == 4 && _cxq != NULL) {
+          // Aggressively drain cxq into EntryList at the first opportunity.
+          // This policy ensure that recently-run threads live at the head of EntryList.
+
+          // Drain _cxq into EntryList - bulk transfer.
+          // First, detach _cxq.
+          // The following loop is tantamount to: w = swap (&cxq, NULL)
+          w = _cxq ;
+          for (;;) {
+             assert (w != NULL, "Invariant") ;
+             ObjectWaiter * u = (ObjectWaiter *) Atomic::cmpxchg_ptr (NULL, &_cxq, w) ;
+             if (u == w) break ;
+             w = u ;
+          }
+          assert (w != NULL              , "invariant") ;
+
+          ObjectWaiter * q = NULL ;
+          ObjectWaiter * p ;
+          for (p = w ; p != NULL ; p = p->_next) {
+              guarantee (p->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
+              p->TState = ObjectWaiter::TS_ENTER ;
+              p->_prev = q ;
+              q = p ;
+          }
+
+          // Prepend the RATs to the EntryList
+          if (_EntryList != NULL) {
+              q->_next = _EntryList ;
+              _EntryList->_prev = q ;
+          }
+          _EntryList = w ;
+
+          // Fall thru into code that tries to wake a successor from EntryList
+      }
+
+      w = _EntryList  ;
+      if (w != NULL) {
+          // I'd like to write: guarantee (w->_thread != Self).
+          // But in practice an exiting thread may find itself on the EntryList.
+          // Lets say thread T1 calls O.wait().  Wait() enqueues T1 on O's waitset and
+          // then calls exit().  Exit release the lock by setting O._owner to NULL.
+          // Lets say T1 then stalls.  T2 acquires O and calls O.notify().  The
+          // notify() operation moves T1 from O's waitset to O's EntryList. T2 then
+          // release the lock "O".  T2 resumes immediately after the ST of null into
+          // _owner, above.  T2 notices that the EntryList is populated, so it
+          // reacquires the lock and then finds itself on the EntryList.
+          // Given all that, we have to tolerate the circumstance where "w" is
+          // associated with Self.
+          assert (w->TState == ObjectWaiter::TS_ENTER, "invariant") ;
+          ExitEpilog (Self, w) ;
+          return ;
+      }
+
+      // If we find that both _cxq and EntryList are null then just
+      // re-run the exit protocol from the top.
+      w = _cxq ;
+      if (w == NULL) continue ;
+
+      // Drain _cxq into EntryList - bulk transfer.
+      // First, detach _cxq.
+      // The following loop is tantamount to: w = swap (&cxq, NULL)
+      for (;;) {
+          assert (w != NULL, "Invariant") ;
+          ObjectWaiter * u = (ObjectWaiter *) Atomic::cmpxchg_ptr (NULL, &_cxq, w) ;
+          if (u == w) break ;
+          w = u ;
+      }
+      TEVENT (Inflated exit - drain cxq into EntryList) ;
+
+      assert (w != NULL              , "invariant") ;
+      assert (_EntryList  == NULL    , "invariant") ;
+
+      // Convert the LIFO SLL anchored by _cxq into a DLL.
+      // The list reorganization step operates in O(LENGTH(w)) time.
+      // It's critical that this step operate quickly as
+      // "Self" still holds the outer-lock, restricting parallelism
+      // and effectively lengthening the critical section.
+      // Invariant: s chases t chases u.
+      // TODO-FIXME: consider changing EntryList from a DLL to a CDLL so
+      // we have faster access to the tail.
+
+      if (QMode == 1) {
+         // QMode == 1 : drain cxq to EntryList, reversing order
+         // We also reverse the order of the list.
+         ObjectWaiter * s = NULL ;
+         ObjectWaiter * t = w ;
+         ObjectWaiter * u = NULL ;
+         while (t != NULL) {
+             guarantee (t->TState == ObjectWaiter::TS_CXQ, "invariant") ;
+             t->TState = ObjectWaiter::TS_ENTER ;
+             u = t->_next ;
+             t->_prev = u ;
+             t->_next = s ;
+             s = t;
+             t = u ;
+         }
+         _EntryList  = s ;
+         assert (s != NULL, "invariant") ;
+      } else {
+         // QMode == 0 or QMode == 2
+         _EntryList = w ;
+         ObjectWaiter * q = NULL ;
+         ObjectWaiter * p ;
+         for (p = w ; p != NULL ; p = p->_next) {
+             guarantee (p->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
+             p->TState = ObjectWaiter::TS_ENTER ;
+             p->_prev = q ;
+             q = p ;
+         }
+      }
+
+      // In 1-0 mode we need: ST EntryList; MEMBAR #storestore; ST _owner = NULL
+      // The MEMBAR is satisfied by the release_store() operation in ExitEpilog().
+
+      // See if we can abdicate to a spinner instead of waking a thread.
+      // A primary goal of the implementation is to reduce the
+      // context-switch rate.
+      if (_succ != NULL) continue;
+
+      w = _EntryList  ;
+      if (w != NULL) {
+          guarantee (w->TState == ObjectWaiter::TS_ENTER, "invariant") ;
+          ExitEpilog (Self, w) ;
+          return ;
+      }
+   }
+}
+
+// ExitSuspendEquivalent:
+// A faster alternate to handle_special_suspend_equivalent_condition()
+//
+// handle_special_suspend_equivalent_condition() unconditionally
+// acquires the SR_lock.  On some platforms uncontended MutexLocker()
+// operations have high latency.  Note that in ::enter() we call HSSEC
+// while holding the monitor, so we effectively lengthen the critical sections.
+//
+// There are a number of possible solutions:
+//
+// A.  To ameliorate the problem we might also defer state transitions
+//     to as late as possible -- just prior to parking.
+//     Given that, we'd call HSSEC after having returned from park(),
+//     but before attempting to acquire the monitor.  This is only a
+//     partial solution.  It avoids calling HSSEC while holding the
+//     monitor (good), but it still increases successor reacquisition latency --
+//     the interval between unparking a successor and the time the successor
+//     resumes and retries the lock.  See ReenterI(), which defers state transitions.
+//     If we use this technique we can also avoid EnterI()-exit() loop
+//     in ::enter() where we iteratively drop the lock and then attempt
+//     to reacquire it after suspending.
+//
+// B.  In the future we might fold all the suspend bits into a
+//     composite per-thread suspend flag and then update it with CAS().
+//     Alternately, a Dekker-like mechanism with multiple variables
+//     would suffice:
+//       ST Self->_suspend_equivalent = false
+//       MEMBAR
+//       LD Self_>_suspend_flags
+//
+
+
+bool ObjectMonitor::ExitSuspendEquivalent (JavaThread * jSelf) {
+   int Mode = Knob_FastHSSEC ;
+   if (Mode && !jSelf->is_external_suspend()) {
+      assert (jSelf->is_suspend_equivalent(), "invariant") ;
+      jSelf->clear_suspend_equivalent() ;
+      if (2 == Mode) OrderAccess::storeload() ;
+      if (!jSelf->is_external_suspend()) return false ;
+      // We raced a suspension -- fall thru into the slow path
+      TEVENT (ExitSuspendEquivalent - raced) ;
+      jSelf->set_suspend_equivalent() ;
+   }
+   return jSelf->handle_special_suspend_equivalent_condition() ;
+}
+
+
+void ObjectMonitor::ExitEpilog (Thread * Self, ObjectWaiter * Wakee) {
+   assert (_owner == Self, "invariant") ;
+
+   // Exit protocol:
+   // 1. ST _succ = wakee
+   // 2. membar #loadstore|#storestore;
+   // 2. ST _owner = NULL
+   // 3. unpark(wakee)
+
+   _succ = Knob_SuccEnabled ? Wakee->_thread : NULL ;
+   ParkEvent * Trigger = Wakee->_event ;
+
+   // Hygiene -- once we've set _owner = NULL we can't safely dereference Wakee again.
+   // The thread associated with Wakee may have grabbed the lock and "Wakee" may be
+   // out-of-scope (non-extant).
+   Wakee  = NULL ;
+
+   // Drop the lock
+   OrderAccess::release_store_ptr (&_owner, NULL) ;
+   OrderAccess::fence() ;                               // ST _owner vs LD in unpark()
+
+   if (SafepointSynchronize::do_call_back()) {
+      TEVENT (unpark before SAFEPOINT) ;
+   }
+
+   DTRACE_MONITOR_PROBE(contended__exit, this, object(), Self);
+   Trigger->unpark() ;
+
+   // Maintain stats and report events to JVMTI
+   if (ObjectMonitor::_sync_Parks != NULL) {
+      ObjectMonitor::_sync_Parks->inc() ;
+   }
+}
+
+
+// -----------------------------------------------------------------------------
+// Class Loader deadlock handling.
+//
+// complete_exit exits a lock returning recursion count
+// complete_exit/reenter operate as a wait without waiting
+// complete_exit requires an inflated monitor
+// The _owner field is not always the Thread addr even with an
+// inflated monitor, e.g. the monitor can be inflated by a non-owning
+// thread due to contention.
+intptr_t ObjectMonitor::complete_exit(TRAPS) {
+   Thread * const Self = THREAD;
+   assert(Self->is_Java_thread(), "Must be Java thread!");
+   JavaThread *jt = (JavaThread *)THREAD;
+
+   DeferredInitialize();
+
+   if (THREAD != _owner) {
+    if (THREAD->is_lock_owned ((address)_owner)) {
+       assert(_recursions == 0, "internal state error");
+       _owner = THREAD ;   /* Convert from basiclock addr to Thread addr */
+       _recursions = 0 ;
+       OwnerIsThread = 1 ;
+    }
+   }
+
+   guarantee(Self == _owner, "complete_exit not owner");
+   intptr_t save = _recursions; // record the old recursion count
+   _recursions = 0;        // set the recursion level to be 0
+   exit (Self) ;           // exit the monitor
+   guarantee (_owner != Self, "invariant");
+   return save;
+}
+
+// reenter() enters a lock and sets recursion count
+// complete_exit/reenter operate as a wait without waiting
+void ObjectMonitor::reenter(intptr_t recursions, TRAPS) {
+   Thread * const Self = THREAD;
+   assert(Self->is_Java_thread(), "Must be Java thread!");
+   JavaThread *jt = (JavaThread *)THREAD;
+
+   guarantee(_owner != Self, "reenter already owner");
+   enter (THREAD);       // enter the monitor
+   guarantee (_recursions == 0, "reenter recursion");
+   _recursions = recursions;
+   return;
+}
+
+
+// -----------------------------------------------------------------------------
+// A macro is used below because there may already be a pending
+// exception which should not abort the execution of the routines
+// which use this (which is why we don't put this into check_slow and
+// call it with a CHECK argument).
+
+#define CHECK_OWNER()                                                             \
+  do {                                                                            \
+    if (THREAD != _owner) {                                                       \
+      if (THREAD->is_lock_owned((address) _owner)) {                              \
+        _owner = THREAD ;  /* Convert from basiclock addr to Thread addr */       \
+        _recursions = 0;                                                          \
+        OwnerIsThread = 1 ;                                                       \
+      } else {                                                                    \
+        TEVENT (Throw IMSX) ;                                                     \
+        THROW(vmSymbols::java_lang_IllegalMonitorStateException());               \
+      }                                                                           \
+    }                                                                             \
+  } while (false)
+
+// check_slow() is a misnomer.  It's called to simply to throw an IMSX exception.
+// TODO-FIXME: remove check_slow() -- it's likely dead.
+
+void ObjectMonitor::check_slow(TRAPS) {
+  TEVENT (check_slow - throw IMSX) ;
+  assert(THREAD != _owner && !THREAD->is_lock_owned((address) _owner), "must not be owner");
+  THROW_MSG(vmSymbols::java_lang_IllegalMonitorStateException(), "current thread not owner");
+}
+
+static int Adjust (volatile int * adr, int dx) {
+  int v ;
+  for (v = *adr ; Atomic::cmpxchg (v + dx, adr, v) != v; v = *adr) ;
+  return v ;
+}
+// -----------------------------------------------------------------------------
+// Wait/Notify/NotifyAll
+//
+// Note: a subset of changes to ObjectMonitor::wait()
+// will need to be replicated in complete_exit above
+void ObjectMonitor::wait(jlong millis, bool interruptible, TRAPS) {
+   Thread * const Self = THREAD ;
+   assert(Self->is_Java_thread(), "Must be Java thread!");
+   JavaThread *jt = (JavaThread *)THREAD;
+
+   DeferredInitialize () ;
+
+   // Throw IMSX or IEX.
+   CHECK_OWNER();
+
+   // check for a pending interrupt
+   if (interruptible && Thread::is_interrupted(Self, true) && !HAS_PENDING_EXCEPTION) {
+     // post monitor waited event.  Note that this is past-tense, we are done waiting.
+     if (JvmtiExport::should_post_monitor_waited()) {
+        // Note: 'false' parameter is passed here because the
+        // wait was not timed out due to thread interrupt.
+        JvmtiExport::post_monitor_waited(jt, this, false);
+     }
+     TEVENT (Wait - Throw IEX) ;
+     THROW(vmSymbols::java_lang_InterruptedException());
+     return ;
+   }
+   TEVENT (Wait) ;
+
+   assert (Self->_Stalled == 0, "invariant") ;
+   Self->_Stalled = intptr_t(this) ;
+   jt->set_current_waiting_monitor(this);
+
+   // create a node to be put into the queue
+   // Critically, after we reset() the event but prior to park(), we must check
+   // for a pending interrupt.
+   ObjectWaiter node(Self);
+   node.TState = ObjectWaiter::TS_WAIT ;
+   Self->_ParkEvent->reset() ;
+   OrderAccess::fence();          // ST into Event; membar ; LD interrupted-flag
+
+   // Enter the waiting queue, which is a circular doubly linked list in this case
+   // but it could be a priority queue or any data structure.
+   // _WaitSetLock protects the wait queue.  Normally the wait queue is accessed only
+   // by the the owner of the monitor *except* in the case where park()
+   // returns because of a timeout of interrupt.  Contention is exceptionally rare
+   // so we use a simple spin-lock instead of a heavier-weight blocking lock.
+
+   Thread::SpinAcquire (&_WaitSetLock, "WaitSet - add") ;
+   AddWaiter (&node) ;
+   Thread::SpinRelease (&_WaitSetLock) ;
+
+   if ((SyncFlags & 4) == 0) {
+      _Responsible = NULL ;
+   }
+   intptr_t save = _recursions; // record the old recursion count
+   _waiters++;                  // increment the number of waiters
+   _recursions = 0;             // set the recursion level to be 1
+   exit (Self) ;                    // exit the monitor
+   guarantee (_owner != Self, "invariant") ;
+
+   // As soon as the ObjectMonitor's ownership is dropped in the exit()
+   // call above, another thread can enter() the ObjectMonitor, do the
+   // notify(), and exit() the ObjectMonitor. If the other thread's
+   // exit() call chooses this thread as the successor and the unpark()
+   // call happens to occur while this thread is posting a
+   // MONITOR_CONTENDED_EXIT event, then we run the risk of the event
+   // handler using RawMonitors and consuming the unpark().
+   //
+   // To avoid the problem, we re-post the event. This does no harm
+   // even if the original unpark() was not consumed because we are the
+   // chosen successor for this monitor.
+   if (node._notified != 0 && _succ == Self) {
+      node._event->unpark();
+   }
+
+   // The thread is on the WaitSet list - now park() it.
+   // On MP systems it's conceivable that a brief spin before we park
+   // could be profitable.
+   //
+   // TODO-FIXME: change the following logic to a loop of the form
+   //   while (!timeout && !interrupted && _notified == 0) park()
+
+   int ret = OS_OK ;
+   int WasNotified = 0 ;
+   { // State transition wrappers
+     OSThread* osthread = Self->osthread();
+     OSThreadWaitState osts(osthread, true);
+     {
+       ThreadBlockInVM tbivm(jt);
+       // Thread is in thread_blocked state and oop access is unsafe.
+       jt->set_suspend_equivalent();
+
+       if (interruptible && (Thread::is_interrupted(THREAD, false) || HAS_PENDING_EXCEPTION)) {
+           // Intentionally empty
+       } else
+       if (node._notified == 0) {
+         if (millis <= 0) {
+            Self->_ParkEvent->park () ;
+         } else {
+            ret = Self->_ParkEvent->park (millis) ;
+         }
+       }
+
+       // were we externally suspended while we were waiting?
+       if (ExitSuspendEquivalent (jt)) {
+          // TODO-FIXME: add -- if succ == Self then succ = null.
+          jt->java_suspend_self();
+       }
+
+     } // Exit thread safepoint: transition _thread_blocked -> _thread_in_vm
+
+
+     // Node may be on the WaitSet, the EntryList (or cxq), or in transition
+     // from the WaitSet to the EntryList.
+     // See if we need to remove Node from the WaitSet.
+     // We use double-checked locking to avoid grabbing _WaitSetLock
+     // if the thread is not on the wait queue.
+     //
+     // Note that we don't need a fence before the fetch of TState.
+     // In the worst case we'll fetch a old-stale value of TS_WAIT previously
+     // written by the is thread. (perhaps the fetch might even be satisfied
+     // by a look-aside into the processor's own store buffer, although given
+     // the length of the code path between the prior ST and this load that's
+     // highly unlikely).  If the following LD fetches a stale TS_WAIT value
+     // then we'll acquire the lock and then re-fetch a fresh TState value.
+     // That is, we fail toward safety.
+
+     if (node.TState == ObjectWaiter::TS_WAIT) {
+         Thread::SpinAcquire (&_WaitSetLock, "WaitSet - unlink") ;
+         if (node.TState == ObjectWaiter::TS_WAIT) {
+            DequeueSpecificWaiter (&node) ;       // unlink from WaitSet
+            assert(node._notified == 0, "invariant");
+            node.TState = ObjectWaiter::TS_RUN ;
+         }
+         Thread::SpinRelease (&_WaitSetLock) ;
+     }
+
+     // The thread is now either on off-list (TS_RUN),
+     // on the EntryList (TS_ENTER), or on the cxq (TS_CXQ).
+     // The Node's TState variable is stable from the perspective of this thread.
+     // No other threads will asynchronously modify TState.
+     guarantee (node.TState != ObjectWaiter::TS_WAIT, "invariant") ;
+     OrderAccess::loadload() ;
+     if (_succ == Self) _succ = NULL ;
+     WasNotified = node._notified ;
+
+     // Reentry phase -- reacquire the monitor.
+     // re-enter contended monitor after object.wait().
+     // retain OBJECT_WAIT state until re-enter successfully completes
+     // Thread state is thread_in_vm and oop access is again safe,
+     // although the raw address of the object may have changed.
+     // (Don't cache naked oops over safepoints, of course).
+
+     // post monitor waited event. Note that this is past-tense, we are done waiting.
+     if (JvmtiExport::should_post_monitor_waited()) {
+       JvmtiExport::post_monitor_waited(jt, this, ret == OS_TIMEOUT);
+     }
+     OrderAccess::fence() ;
+
+     assert (Self->_Stalled != 0, "invariant") ;
+     Self->_Stalled = 0 ;
+
+     assert (_owner != Self, "invariant") ;
+     ObjectWaiter::TStates v = node.TState ;
+     if (v == ObjectWaiter::TS_RUN) {
+         enter (Self) ;
+     } else {
+         guarantee (v == ObjectWaiter::TS_ENTER || v == ObjectWaiter::TS_CXQ, "invariant") ;
+         ReenterI (Self, &node) ;
+         node.wait_reenter_end(this);
+     }
+
+     // Self has reacquired the lock.
+     // Lifecycle - the node representing Self must not appear on any queues.
+     // Node is about to go out-of-scope, but even if it were immortal we wouldn't
+     // want residual elements associated with this thread left on any lists.
+     guarantee (node.TState == ObjectWaiter::TS_RUN, "invariant") ;
+     assert    (_owner == Self, "invariant") ;
+     assert    (_succ != Self , "invariant") ;
+   } // OSThreadWaitState()
+
+   jt->set_current_waiting_monitor(NULL);
+
+   guarantee (_recursions == 0, "invariant") ;
+   _recursions = save;     // restore the old recursion count
+   _waiters--;             // decrement the number of waiters
+
+   // Verify a few postconditions
+   assert (_owner == Self       , "invariant") ;
+   assert (_succ  != Self       , "invariant") ;
+   assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
+
+   if (SyncFlags & 32) {
+      OrderAccess::fence() ;
+   }
+
+   // check if the notification happened
+   if (!WasNotified) {
+     // no, it could be timeout or Thread.interrupt() or both
+     // check for interrupt event, otherwise it is timeout
+     if (interruptible && Thread::is_interrupted(Self, true) && !HAS_PENDING_EXCEPTION) {
+       TEVENT (Wait - throw IEX from epilog) ;
+       THROW(vmSymbols::java_lang_InterruptedException());
+     }
+   }
+
+   // NOTE: Spurious wake up will be consider as timeout.
+   // Monitor notify has precedence over thread interrupt.
+}
+
+
+// Consider:
+// If the lock is cool (cxq == null && succ == null) and we're on an MP system
+// then instead of transferring a thread from the WaitSet to the EntryList
+// we might just dequeue a thread from the WaitSet and directly unpark() it.
+
+void ObjectMonitor::notify(TRAPS) {
+  CHECK_OWNER();
+  if (_WaitSet == NULL) {
+     TEVENT (Empty-Notify) ;
+     return ;
+  }
+  DTRACE_MONITOR_PROBE(notify, this, object(), THREAD);
+
+  int Policy = Knob_MoveNotifyee ;
+
+  Thread::SpinAcquire (&_WaitSetLock, "WaitSet - notify") ;
+  ObjectWaiter * iterator = DequeueWaiter() ;
+  if (iterator != NULL) {
+     TEVENT (Notify1 - Transfer) ;
+     guarantee (iterator->TState == ObjectWaiter::TS_WAIT, "invariant") ;
+     guarantee (iterator->_notified == 0, "invariant") ;
+     if (Policy != 4) {
+        iterator->TState = ObjectWaiter::TS_ENTER ;
+     }
+     iterator->_notified = 1 ;
+
+     ObjectWaiter * List = _EntryList ;
+     if (List != NULL) {
+        assert (List->_prev == NULL, "invariant") ;
+        assert (List->TState == ObjectWaiter::TS_ENTER, "invariant") ;
+        assert (List != iterator, "invariant") ;
+     }
+
+     if (Policy == 0) {       // prepend to EntryList
+         if (List == NULL) {
+             iterator->_next = iterator->_prev = NULL ;
+             _EntryList = iterator ;
+         } else {
+             List->_prev = iterator ;
+             iterator->_next = List ;
+             iterator->_prev = NULL ;
+             _EntryList = iterator ;
+        }
+     } else
+     if (Policy == 1) {      // append to EntryList
+         if (List == NULL) {
+             iterator->_next = iterator->_prev = NULL ;
+             _EntryList = iterator ;
+         } else {
+            // CONSIDER:  finding the tail currently requires a linear-time walk of
+            // the EntryList.  We can make tail access constant-time by converting to
+            // a CDLL instead of using our current DLL.
+            ObjectWaiter * Tail ;
+            for (Tail = List ; Tail->_next != NULL ; Tail = Tail->_next) ;
+            assert (Tail != NULL && Tail->_next == NULL, "invariant") ;
+            Tail->_next = iterator ;
+            iterator->_prev = Tail ;
+            iterator->_next = NULL ;
+        }
+     } else
+     if (Policy == 2) {      // prepend to cxq
+         // prepend to cxq
+         if (List == NULL) {
+             iterator->_next = iterator->_prev = NULL ;
+             _EntryList = iterator ;
+         } else {
+            iterator->TState = ObjectWaiter::TS_CXQ ;
+            for (;;) {
+                ObjectWaiter * Front = _cxq ;
+                iterator->_next = Front ;
+                if (Atomic::cmpxchg_ptr (iterator, &_cxq, Front) == Front) {
+                    break ;
+                }
+            }
+         }
+     } else
+     if (Policy == 3) {      // append to cxq
+        iterator->TState = ObjectWaiter::TS_CXQ ;
+        for (;;) {
+            ObjectWaiter * Tail ;
+            Tail = _cxq ;
+            if (Tail == NULL) {
+                iterator->_next = NULL ;
+                if (Atomic::cmpxchg_ptr (iterator, &_cxq, NULL) == NULL) {
+                   break ;
+                }
+            } else {
+                while (Tail->_next != NULL) Tail = Tail->_next ;
+                Tail->_next = iterator ;
+                iterator->_prev = Tail ;
+                iterator->_next = NULL ;
+                break ;
+            }
+        }
+     } else {
+        ParkEvent * ev = iterator->_event ;
+        iterator->TState = ObjectWaiter::TS_RUN ;
+        OrderAccess::fence() ;
+        ev->unpark() ;
+     }
+
+     if (Policy < 4) {
+       iterator->wait_reenter_begin(this);
+     }
+
+     // _WaitSetLock protects the wait queue, not the EntryList.  We could
+     // move the add-to-EntryList operation, above, outside the critical section
+     // protected by _WaitSetLock.  In practice that's not useful.  With the
+     // exception of  wait() timeouts and interrupts the monitor owner
+     // is the only thread that grabs _WaitSetLock.  There's almost no contention
+     // on _WaitSetLock so it's not profitable to reduce the length of the
+     // critical section.
+  }
+
+  Thread::SpinRelease (&_WaitSetLock) ;
+
+  if (iterator != NULL && ObjectMonitor::_sync_Notifications != NULL) {
+     ObjectMonitor::_sync_Notifications->inc() ;
+  }
+}
+
+
+void ObjectMonitor::notifyAll(TRAPS) {
+  CHECK_OWNER();
+  ObjectWaiter* iterator;
+  if (_WaitSet == NULL) {
+      TEVENT (Empty-NotifyAll) ;
+      return ;
+  }
+  DTRACE_MONITOR_PROBE(notifyAll, this, object(), THREAD);
+
+  int Policy = Knob_MoveNotifyee ;
+  int Tally = 0 ;
+  Thread::SpinAcquire (&_WaitSetLock, "WaitSet - notifyall") ;
+
+  for (;;) {
+     iterator = DequeueWaiter () ;
+     if (iterator == NULL) break ;
+     TEVENT (NotifyAll - Transfer1) ;
+     ++Tally ;
+
+     // Disposition - what might we do with iterator ?
+     // a.  add it directly to the EntryList - either tail or head.
+     // b.  push it onto the front of the _cxq.
+     // For now we use (a).
+
+     guarantee (iterator->TState == ObjectWaiter::TS_WAIT, "invariant") ;
+     guarantee (iterator->_notified == 0, "invariant") ;
+     iterator->_notified = 1 ;
+     if (Policy != 4) {
+        iterator->TState = ObjectWaiter::TS_ENTER ;
+     }
+
+     ObjectWaiter * List = _EntryList ;
+     if (List != NULL) {
+        assert (List->_prev == NULL, "invariant") ;
+        assert (List->TState == ObjectWaiter::TS_ENTER, "invariant") ;
+        assert (List != iterator, "invariant") ;
+     }
+
+     if (Policy == 0) {       // prepend to EntryList
+         if (List == NULL) {
+             iterator->_next = iterator->_prev = NULL ;
+             _EntryList = iterator ;
+         } else {
+             List->_prev = iterator ;
+             iterator->_next = List ;
+             iterator->_prev = NULL ;
+             _EntryList = iterator ;
+        }
+     } else
+     if (Policy == 1) {      // append to EntryList
+         if (List == NULL) {
+             iterator->_next = iterator->_prev = NULL ;
+             _EntryList = iterator ;
+         } else {
+            // CONSIDER:  finding the tail currently requires a linear-time walk of
+            // the EntryList.  We can make tail access constant-time by converting to
+            // a CDLL instead of using our current DLL.
+            ObjectWaiter * Tail ;
+            for (Tail = List ; Tail->_next != NULL ; Tail = Tail->_next) ;
+            assert (Tail != NULL && Tail->_next == NULL, "invariant") ;
+            Tail->_next = iterator ;
+            iterator->_prev = Tail ;
+            iterator->_next = NULL ;
+        }
+     } else
+     if (Policy == 2) {      // prepend to cxq
+         // prepend to cxq
+         iterator->TState = ObjectWaiter::TS_CXQ ;
+         for (;;) {
+             ObjectWaiter * Front = _cxq ;
+             iterator->_next = Front ;
+             if (Atomic::cmpxchg_ptr (iterator, &_cxq, Front) == Front) {
+                 break ;
+             }
+         }
+     } else
+     if (Policy == 3) {      // append to cxq
+        iterator->TState = ObjectWaiter::TS_CXQ ;
+        for (;;) {
+            ObjectWaiter * Tail ;
+            Tail = _cxq ;
+            if (Tail == NULL) {
+                iterator->_next = NULL ;
+                if (Atomic::cmpxchg_ptr (iterator, &_cxq, NULL) == NULL) {
+                   break ;
+                }
+            } else {
+                while (Tail->_next != NULL) Tail = Tail->_next ;
+                Tail->_next = iterator ;
+                iterator->_prev = Tail ;
+                iterator->_next = NULL ;
+                break ;
+            }
+        }
+     } else {
+        ParkEvent * ev = iterator->_event ;
+        iterator->TState = ObjectWaiter::TS_RUN ;
+        OrderAccess::fence() ;
+        ev->unpark() ;
+     }
+
+     if (Policy < 4) {
+       iterator->wait_reenter_begin(this);
+     }
+
+     // _WaitSetLock protects the wait queue, not the EntryList.  We could
+     // move the add-to-EntryList operation, above, outside the critical section
+     // protected by _WaitSetLock.  In practice that's not useful.  With the
+     // exception of  wait() timeouts and interrupts the monitor owner
+     // is the only thread that grabs _WaitSetLock.  There's almost no contention
+     // on _WaitSetLock so it's not profitable to reduce the length of the
+     // critical section.
+  }
+
+  Thread::SpinRelease (&_WaitSetLock) ;
+
+  if (Tally != 0 && ObjectMonitor::_sync_Notifications != NULL) {
+     ObjectMonitor::_sync_Notifications->inc(Tally) ;
+  }
+}
+
+// -----------------------------------------------------------------------------
+// Adaptive Spinning Support
+//
+// Adaptive spin-then-block - rational spinning
+//
+// Note that we spin "globally" on _owner with a classic SMP-polite TATAS
+// algorithm.  On high order SMP systems it would be better to start with
+// a brief global spin and then revert to spinning locally.  In the spirit of MCS/CLH,
+// a contending thread could enqueue itself on the cxq and then spin locally
+// on a thread-specific variable such as its ParkEvent._Event flag.
+// That's left as an exercise for the reader.  Note that global spinning is
+// not problematic on Niagara, as the L2$ serves the interconnect and has both
+// low latency and massive bandwidth.
+//
+// Broadly, we can fix the spin frequency -- that is, the % of contended lock
+// acquisition attempts where we opt to spin --  at 100% and vary the spin count
+// (duration) or we can fix the count at approximately the duration of
+// a context switch and vary the frequency.   Of course we could also
+// vary both satisfying K == Frequency * Duration, where K is adaptive by monitor.
+// See http://j2se.east/~dice/PERSIST/040824-AdaptiveSpinning.html.
+//
+// This implementation varies the duration "D", where D varies with
+// the success rate of recent spin attempts. (D is capped at approximately
+// length of a round-trip context switch).  The success rate for recent
+// spin attempts is a good predictor of the success rate of future spin
+// attempts.  The mechanism adapts automatically to varying critical
+// section length (lock modality), system load and degree of parallelism.
+// D is maintained per-monitor in _SpinDuration and is initialized
+// optimistically.  Spin frequency is fixed at 100%.
+//
+// Note that _SpinDuration is volatile, but we update it without locks
+// or atomics.  The code is designed so that _SpinDuration stays within
+// a reasonable range even in the presence of races.  The arithmetic
+// operations on _SpinDuration are closed over the domain of legal values,
+// so at worst a race will install and older but still legal value.
+// At the very worst this introduces some apparent non-determinism.
+// We might spin when we shouldn't or vice-versa, but since the spin
+// count are relatively short, even in the worst case, the effect is harmless.
+//
+// Care must be taken that a low "D" value does not become an
+// an absorbing state.  Transient spinning failures -- when spinning
+// is overall profitable -- should not cause the system to converge
+// on low "D" values.  We want spinning to be stable and predictable
+// and fairly responsive to change and at the same time we don't want
+// it to oscillate, become metastable, be "too" non-deterministic,
+// or converge on or enter undesirable stable absorbing states.
+//
+// We implement a feedback-based control system -- using past behavior
+// to predict future behavior.  We face two issues: (a) if the
+// input signal is random then the spin predictor won't provide optimal
+// results, and (b) if the signal frequency is too high then the control
+// system, which has some natural response lag, will "chase" the signal.
+// (b) can arise from multimodal lock hold times.  Transient preemption
+// can also result in apparent bimodal lock hold times.
+// Although sub-optimal, neither condition is particularly harmful, as
+// in the worst-case we'll spin when we shouldn't or vice-versa.
+// The maximum spin duration is rather short so the failure modes aren't bad.
+// To be conservative, I've tuned the gain in system to bias toward
+// _not spinning.  Relatedly, the system can sometimes enter a mode where it
+// "rings" or oscillates between spinning and not spinning.  This happens
+// when spinning is just on the cusp of profitability, however, so the
+// situation is not dire.  The state is benign -- there's no need to add
+// hysteresis control to damp the transition rate between spinning and
+// not spinning.
+//
+
+intptr_t ObjectMonitor::SpinCallbackArgument = 0 ;
+int (*ObjectMonitor::SpinCallbackFunction)(intptr_t, int) = NULL ;
+
+// Spinning: Fixed frequency (100%), vary duration
+
+
+int ObjectMonitor::TrySpin_VaryDuration (Thread * Self) {
+
+    // Dumb, brutal spin.  Good for comparative measurements against adaptive spinning.
+    int ctr = Knob_FixedSpin ;
+    if (ctr != 0) {
+        while (--ctr >= 0) {
+            if (TryLock (Self) > 0) return 1 ;
+            SpinPause () ;
+        }
+        return 0 ;
+    }
+
+    for (ctr = Knob_PreSpin + 1; --ctr >= 0 ; ) {
+      if (TryLock(Self) > 0) {
+        // Increase _SpinDuration ...
+        // Note that we don't clamp SpinDuration precisely at SpinLimit.
+        // Raising _SpurDuration to the poverty line is key.
+        int x = _SpinDuration ;
+        if (x < Knob_SpinLimit) {
+           if (x < Knob_Poverty) x = Knob_Poverty ;
+           _SpinDuration = x + Knob_BonusB ;
+        }
+        return 1 ;
+      }
+      SpinPause () ;
+    }
+
+    // Admission control - verify preconditions for spinning
+    //
+    // We always spin a little bit, just to prevent _SpinDuration == 0 from
+    // becoming an absorbing state.  Put another way, we spin briefly to
+    // sample, just in case the system load, parallelism, contention, or lock
+    // modality changed.
+    //
+    // Consider the following alternative:
+    // Periodically set _SpinDuration = _SpinLimit and try a long/full
+    // spin attempt.  "Periodically" might mean after a tally of
+    // the # of failed spin attempts (or iterations) reaches some threshold.
+    // This takes us into the realm of 1-out-of-N spinning, where we
+    // hold the duration constant but vary the frequency.
+
+    ctr = _SpinDuration  ;
+    if (ctr < Knob_SpinBase) ctr = Knob_SpinBase ;
+    if (ctr <= 0) return 0 ;
+
+    if (Knob_SuccRestrict && _succ != NULL) return 0 ;
+    if (Knob_OState && NotRunnable (Self, (Thread *) _owner)) {
+       TEVENT (Spin abort - notrunnable [TOP]);
+       return 0 ;
+    }
+
+    int MaxSpin = Knob_MaxSpinners ;
+    if (MaxSpin >= 0) {
+       if (_Spinner > MaxSpin) {
+          TEVENT (Spin abort -- too many spinners) ;
+          return 0 ;
+       }
+       // Slighty racy, but benign ...
+       Adjust (&_Spinner, 1) ;
+    }
+
+    // We're good to spin ... spin ingress.
+    // CONSIDER: use Prefetch::write() to avoid RTS->RTO upgrades
+    // when preparing to LD...CAS _owner, etc and the CAS is likely
+    // to succeed.
+    int hits    = 0 ;
+    int msk     = 0 ;
+    int caspty  = Knob_CASPenalty ;
+    int oxpty   = Knob_OXPenalty ;
+    int sss     = Knob_SpinSetSucc ;
+    if (sss && _succ == NULL ) _succ = Self ;
+    Thread * prv = NULL ;
+
+    // There are three ways to exit the following loop:
+    // 1.  A successful spin where this thread has acquired the lock.
+    // 2.  Spin failure with prejudice
+    // 3.  Spin failure without prejudice
+
+    while (--ctr >= 0) {
+
+      // Periodic polling -- Check for pending GC
+      // Threads may spin while they're unsafe.
+      // We don't want spinning threads to delay the JVM from reaching
+      // a stop-the-world safepoint or to steal cycles from GC.
+      // If we detect a pending safepoint we abort in order that
+      // (a) this thread, if unsafe, doesn't delay the safepoint, and (b)
+      // this thread, if safe, doesn't steal cycles from GC.
+      // This is in keeping with the "no loitering in runtime" rule.
+      // We periodically check to see if there's a safepoint pending.
+      if ((ctr & 0xFF) == 0) {
+         if (SafepointSynchronize::do_call_back()) {
+            TEVENT (Spin: safepoint) ;
+            goto Abort ;           // abrupt spin egress
+         }
+         if (Knob_UsePause & 1) SpinPause () ;
+
+         int (*scb)(intptr_t,int) = SpinCallbackFunction ;
+         if (hits > 50 && scb != NULL) {
+            int abend = (*scb)(SpinCallbackArgument, 0) ;
+         }
+      }
+
+      if (Knob_UsePause & 2) SpinPause() ;
+
+      // Exponential back-off ...  Stay off the bus to reduce coherency traffic.
+      // This is useful on classic SMP systems, but is of less utility on
+      // N1-style CMT platforms.
+      //
+      // Trade-off: lock acquisition latency vs coherency bandwidth.
+      // Lock hold times are typically short.  A histogram
+      // of successful spin attempts shows that we usually acquire
+      // the lock early in the spin.  That suggests we want to
+      // sample _owner frequently in the early phase of the spin,
+      // but then back-off and sample less frequently as the spin
+      // progresses.  The back-off makes a good citizen on SMP big
+      // SMP systems.  Oversampling _owner can consume excessive
+      // coherency bandwidth.  Relatedly, if we _oversample _owner we
+      // can inadvertently interfere with the the ST m->owner=null.
+      // executed by the lock owner.
+      if (ctr & msk) continue ;
+      ++hits ;
+      if ((hits & 0xF) == 0) {
+        // The 0xF, above, corresponds to the exponent.
+        // Consider: (msk+1)|msk
+        msk = ((msk << 2)|3) & BackOffMask ;
+      }
+
+      // Probe _owner with TATAS
+      // If this thread observes the monitor transition or flicker
+      // from locked to unlocked to locked, then the odds that this
+      // thread will acquire the lock in this spin attempt go down
+      // considerably.  The same argument applies if the CAS fails
+      // or if we observe _owner change from one non-null value to
+      // another non-null value.   In such cases we might abort
+      // the spin without prejudice or apply a "penalty" to the
+      // spin count-down variable "ctr", reducing it by 100, say.
+
+      Thread * ox = (Thread *) _owner ;
+      if (ox == NULL) {
+         ox = (Thread *) Atomic::cmpxchg_ptr (Self, &_owner, NULL) ;
+         if (ox == NULL) {
+            // The CAS succeeded -- this thread acquired ownership
+            // Take care of some bookkeeping to exit spin state.
+            if (sss && _succ == Self) {
+               _succ = NULL ;
+            }
+            if (MaxSpin > 0) Adjust (&_Spinner, -1) ;
+
+            // Increase _SpinDuration :
+            // The spin was successful (profitable) so we tend toward
+            // longer spin attempts in the future.
+            // CONSIDER: factor "ctr" into the _SpinDuration adjustment.
+            // If we acquired the lock early in the spin cycle it
+            // makes sense to increase _SpinDuration proportionally.
+            // Note that we don't clamp SpinDuration precisely at SpinLimit.
+            int x = _SpinDuration ;
+            if (x < Knob_SpinLimit) {
+                if (x < Knob_Poverty) x = Knob_Poverty ;
+                _SpinDuration = x + Knob_Bonus ;
+            }
+            return 1 ;
+         }
+
+         // The CAS failed ... we can take any of the following actions:
+         // * penalize: ctr -= Knob_CASPenalty
+         // * exit spin with prejudice -- goto Abort;
+         // * exit spin without prejudice.
+         // * Since CAS is high-latency, retry again immediately.
+         prv = ox ;
+         TEVENT (Spin: cas failed) ;
+         if (caspty == -2) break ;
+         if (caspty == -1) goto Abort ;
+         ctr -= caspty ;
+         continue ;
+      }
+
+      // Did lock ownership change hands ?
+      if (ox != prv && prv != NULL ) {
+          TEVENT (spin: Owner changed)
+          if (oxpty == -2) break ;
+          if (oxpty == -1) goto Abort ;
+          ctr -= oxpty ;
+      }
+      prv = ox ;
+
+      // Abort the spin if the owner is not executing.
+      // The owner must be executing in order to drop the lock.
+      // Spinning while the owner is OFFPROC is idiocy.
+      // Consider: ctr -= RunnablePenalty ;
+      if (Knob_OState && NotRunnable (Self, ox)) {
+         TEVENT (Spin abort - notrunnable);
+         goto Abort ;
+      }
+      if (sss && _succ == NULL ) _succ = Self ;
+   }
+
+   // Spin failed with prejudice -- reduce _SpinDuration.
+   // TODO: Use an AIMD-like policy to adjust _SpinDuration.
+   // AIMD is globally stable.
+   TEVENT (Spin failure) ;
+   {
+     int x = _SpinDuration ;
+     if (x > 0) {
+        // Consider an AIMD scheme like: x -= (x >> 3) + 100
+        // This is globally sample and tends to damp the response.
+        x -= Knob_Penalty ;
+        if (x < 0) x = 0 ;
+        _SpinDuration = x ;
+     }
+   }
+
+ Abort:
+   if (MaxSpin >= 0) Adjust (&_Spinner, -1) ;
+   if (sss && _succ == Self) {
+      _succ = NULL ;
+      // Invariant: after setting succ=null a contending thread
+      // must recheck-retry _owner before parking.  This usually happens
+      // in the normal usage of TrySpin(), but it's safest
+      // to make TrySpin() as foolproof as possible.
+      OrderAccess::fence() ;
+      if (TryLock(Self) > 0) return 1 ;
+   }
+   return 0 ;
+}
+
+// NotRunnable() -- informed spinning
+//
+// Don't bother spinning if the owner is not eligible to drop the lock.
+// Peek at the owner's schedctl.sc_state and Thread._thread_values and
+// spin only if the owner thread is _thread_in_Java or _thread_in_vm.
+// The thread must be runnable in order to drop the lock in timely fashion.
+// If the _owner is not runnable then spinning will not likely be
+// successful (profitable).
+//
+// Beware -- the thread referenced by _owner could have died
+// so a simply fetch from _owner->_thread_state might trap.
+// Instead, we use SafeFetchXX() to safely LD _owner->_thread_state.
+// Because of the lifecycle issues the schedctl and _thread_state values
+// observed by NotRunnable() might be garbage.  NotRunnable must
+// tolerate this and consider the observed _thread_state value
+// as advisory.
+//
+// Beware too, that _owner is sometimes a BasicLock address and sometimes
+// a thread pointer.  We differentiate the two cases with OwnerIsThread.
+// Alternately, we might tag the type (thread pointer vs basiclock pointer)
+// with the LSB of _owner.  Another option would be to probablistically probe
+// the putative _owner->TypeTag value.
+//
+// Checking _thread_state isn't perfect.  Even if the thread is
+// in_java it might be blocked on a page-fault or have been preempted
+// and sitting on a ready/dispatch queue.  _thread state in conjunction
+// with schedctl.sc_state gives us a good picture of what the
+// thread is doing, however.
+//
+// TODO: check schedctl.sc_state.
+// We'll need to use SafeFetch32() to read from the schedctl block.
+// See RFE #5004247 and http://sac.sfbay.sun.com/Archives/CaseLog/arc/PSARC/2005/351/
+//
+// The return value from NotRunnable() is *advisory* -- the
+// result is based on sampling and is not necessarily coherent.
+// The caller must tolerate false-negative and false-positive errors.
+// Spinning, in general, is probabilistic anyway.
+
+
+int ObjectMonitor::NotRunnable (Thread * Self, Thread * ox) {
+    // Check either OwnerIsThread or ox->TypeTag == 2BAD.
+    if (!OwnerIsThread) return 0 ;
+
+    if (ox == NULL) return 0 ;
+
+    // Avoid transitive spinning ...
+    // Say T1 spins or blocks trying to acquire L.  T1._Stalled is set to L.
+    // Immediately after T1 acquires L it's possible that T2, also
+    // spinning on L, will see L.Owner=T1 and T1._Stalled=L.
+    // This occurs transiently after T1 acquired L but before
+    // T1 managed to clear T1.Stalled.  T2 does not need to abort
+    // its spin in this circumstance.
+    intptr_t BlockedOn = SafeFetchN ((intptr_t *) &ox->_Stalled, intptr_t(1)) ;
+
+    if (BlockedOn == 1) return 1 ;
+    if (BlockedOn != 0) {
+      return BlockedOn != intptr_t(this) && _owner == ox ;
+    }
+
+    assert (sizeof(((JavaThread *)ox)->_thread_state == sizeof(int)), "invariant") ;
+    int jst = SafeFetch32 ((int *) &((JavaThread *) ox)->_thread_state, -1) ; ;
+    // consider also: jst != _thread_in_Java -- but that's overspecific.
+    return jst == _thread_blocked || jst == _thread_in_native ;
+}
+
+
+// -----------------------------------------------------------------------------
+// WaitSet management ...
+
+ObjectWaiter::ObjectWaiter(Thread* thread) {
+  _next     = NULL;
+  _prev     = NULL;
+  _notified = 0;
+  TState    = TS_RUN ;
+  _thread   = thread;
+  _event    = thread->_ParkEvent ;
+  _active   = false;
+  assert (_event != NULL, "invariant") ;
+}
+
+void ObjectWaiter::wait_reenter_begin(ObjectMonitor *mon) {
+  JavaThread *jt = (JavaThread *)this->_thread;
+  _active = JavaThreadBlockedOnMonitorEnterState::wait_reenter_begin(jt, mon);
+}
+
+void ObjectWaiter::wait_reenter_end(ObjectMonitor *mon) {
+  JavaThread *jt = (JavaThread *)this->_thread;
+  JavaThreadBlockedOnMonitorEnterState::wait_reenter_end(jt, _active);
+}
+
+inline void ObjectMonitor::AddWaiter(ObjectWaiter* node) {
+  assert(node != NULL, "should not dequeue NULL node");
+  assert(node->_prev == NULL, "node already in list");
+  assert(node->_next == NULL, "node already in list");
+  // put node at end of queue (circular doubly linked list)
+  if (_WaitSet == NULL) {
+    _WaitSet = node;
+    node->_prev = node;
+    node->_next = node;
+  } else {
+    ObjectWaiter* head = _WaitSet ;
+    ObjectWaiter* tail = head->_prev;
+    assert(tail->_next == head, "invariant check");
+    tail->_next = node;
+    head->_prev = node;
+    node->_next = head;
+    node->_prev = tail;
+  }
+}
+
+inline ObjectWaiter* ObjectMonitor::DequeueWaiter() {
+  // dequeue the very first waiter
+  ObjectWaiter* waiter = _WaitSet;
+  if (waiter) {
+    DequeueSpecificWaiter(waiter);
+  }
+  return waiter;
+}
+
+inline void ObjectMonitor::DequeueSpecificWaiter(ObjectWaiter* node) {
+  assert(node != NULL, "should not dequeue NULL node");
+  assert(node->_prev != NULL, "node already removed from list");
+  assert(node->_next != NULL, "node already removed from list");
+  // when the waiter has woken up because of interrupt,
+  // timeout or other spurious wake-up, dequeue the
+  // waiter from waiting list
+  ObjectWaiter* next = node->_next;
+  if (next == node) {
+    assert(node->_prev == node, "invariant check");
+    _WaitSet = NULL;
+  } else {
+    ObjectWaiter* prev = node->_prev;
+    assert(prev->_next == node, "invariant check");
+    assert(next->_prev == node, "invariant check");
+    next->_prev = prev;
+    prev->_next = next;
+    if (_WaitSet == node) {
+      _WaitSet = next;
+    }
+  }
+  node->_next = NULL;
+  node->_prev = NULL;
+}
+
+// -----------------------------------------------------------------------------
+// PerfData support
+PerfCounter * ObjectMonitor::_sync_ContendedLockAttempts       = NULL ;
+PerfCounter * ObjectMonitor::_sync_FutileWakeups               = NULL ;
+PerfCounter * ObjectMonitor::_sync_Parks                       = NULL ;
+PerfCounter * ObjectMonitor::_sync_EmptyNotifications          = NULL ;
+PerfCounter * ObjectMonitor::_sync_Notifications               = NULL ;
+PerfCounter * ObjectMonitor::_sync_PrivateA                    = NULL ;
+PerfCounter * ObjectMonitor::_sync_PrivateB                    = NULL ;
+PerfCounter * ObjectMonitor::_sync_SlowExit                    = NULL ;
+PerfCounter * ObjectMonitor::_sync_SlowEnter                   = NULL ;
+PerfCounter * ObjectMonitor::_sync_SlowNotify                  = NULL ;
+PerfCounter * ObjectMonitor::_sync_SlowNotifyAll               = NULL ;
+PerfCounter * ObjectMonitor::_sync_FailedSpins                 = NULL ;
+PerfCounter * ObjectMonitor::_sync_SuccessfulSpins             = NULL ;
+PerfCounter * ObjectMonitor::_sync_MonInCirculation            = NULL ;
+PerfCounter * ObjectMonitor::_sync_MonScavenged                = NULL ;
+PerfCounter * ObjectMonitor::_sync_Inflations                  = NULL ;
+PerfCounter * ObjectMonitor::_sync_Deflations                  = NULL ;
+PerfLongVariable * ObjectMonitor::_sync_MonExtant              = NULL ;
+
+// One-shot global initialization for the sync subsystem.
+// We could also defer initialization and initialize on-demand
+// the first time we call inflate().  Initialization would
+// be protected - like so many things - by the MonitorCache_lock.
+
+void ObjectMonitor::Initialize () {
+  static int InitializationCompleted = 0 ;
+  assert (InitializationCompleted == 0, "invariant") ;
+  InitializationCompleted = 1 ;
+  if (UsePerfData) {
+      EXCEPTION_MARK ;
+      #define NEWPERFCOUNTER(n)   {n = PerfDataManager::create_counter(SUN_RT, #n, PerfData::U_Events,CHECK); }
+      #define NEWPERFVARIABLE(n)  {n = PerfDataManager::create_variable(SUN_RT, #n, PerfData::U_Events,CHECK); }
+      NEWPERFCOUNTER(_sync_Inflations) ;
+      NEWPERFCOUNTER(_sync_Deflations) ;
+      NEWPERFCOUNTER(_sync_ContendedLockAttempts) ;
+      NEWPERFCOUNTER(_sync_FutileWakeups) ;
+      NEWPERFCOUNTER(_sync_Parks) ;
+      NEWPERFCOUNTER(_sync_EmptyNotifications) ;
+      NEWPERFCOUNTER(_sync_Notifications) ;
+      NEWPERFCOUNTER(_sync_SlowEnter) ;
+      NEWPERFCOUNTER(_sync_SlowExit) ;
+      NEWPERFCOUNTER(_sync_SlowNotify) ;
+      NEWPERFCOUNTER(_sync_SlowNotifyAll) ;
+      NEWPERFCOUNTER(_sync_FailedSpins) ;
+      NEWPERFCOUNTER(_sync_SuccessfulSpins) ;
+      NEWPERFCOUNTER(_sync_PrivateA) ;
+      NEWPERFCOUNTER(_sync_PrivateB) ;
+      NEWPERFCOUNTER(_sync_MonInCirculation) ;
+      NEWPERFCOUNTER(_sync_MonScavenged) ;
+      NEWPERFVARIABLE(_sync_MonExtant) ;
+      #undef NEWPERFCOUNTER
+  }
+}
+
+
+// Compile-time asserts
+// When possible, it's better to catch errors deterministically at
+// compile-time than at runtime.  The down-side to using compile-time
+// asserts is that error message -- often something about negative array
+// indices -- is opaque.
+
+#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @" INTPTR_FORMAT "\n", (intptr_t)tag); }
+
+void ObjectMonitor::ctAsserts() {
+  CTASSERT(offset_of (ObjectMonitor, _header) == 0);
+}
+
+
+static char * kvGet (char * kvList, const char * Key) {
+    if (kvList == NULL) return NULL ;
+    size_t n = strlen (Key) ;
+    char * Search ;
+    for (Search = kvList ; *Search ; Search += strlen(Search) + 1) {
+        if (strncmp (Search, Key, n) == 0) {
+            if (Search[n] == '=') return Search + n + 1 ;
+            if (Search[n] == 0)   return (char *) "1" ;
+        }
+    }
+    return NULL ;
+}
+
+static int kvGetInt (char * kvList, const char * Key, int Default) {
+    char * v = kvGet (kvList, Key) ;
+    int rslt = v ? ::strtol (v, NULL, 0) : Default ;
+    if (Knob_ReportSettings && v != NULL) {
+        ::printf ("  SyncKnob: %s %d(%d)\n", Key, rslt, Default) ;
+        ::fflush (stdout) ;
+    }
+    return rslt ;
+}
+
+void ObjectMonitor::DeferredInitialize () {
+  if (InitDone > 0) return ;
+  if (Atomic::cmpxchg (-1, &InitDone, 0) != 0) {
+      while (InitDone != 1) ;
+      return ;
+  }
+
+  // One-shot global initialization ...
+  // The initialization is idempotent, so we don't need locks.
+  // In the future consider doing this via os::init_2().
+  // SyncKnobs consist of <Key>=<Value> pairs in the style
+  // of environment variables.  Start by converting ':' to NUL.
+
+  if (SyncKnobs == NULL) SyncKnobs = "" ;
+
+  size_t sz = strlen (SyncKnobs) ;
+  char * knobs = (char *) malloc (sz + 2) ;
+  if (knobs == NULL) {
+     vm_exit_out_of_memory (sz + 2, "Parse SyncKnobs") ;
+     guarantee (0, "invariant") ;
+  }
+  strcpy (knobs, SyncKnobs) ;
+  knobs[sz+1] = 0 ;
+  for (char * p = knobs ; *p ; p++) {
+     if (*p == ':') *p = 0 ;
+  }
+
+  #define SETKNOB(x) { Knob_##x = kvGetInt (knobs, #x, Knob_##x); }
+  SETKNOB(ReportSettings) ;
+  SETKNOB(Verbose) ;
+  SETKNOB(FixedSpin) ;
+  SETKNOB(SpinLimit) ;
+  SETKNOB(SpinBase) ;
+  SETKNOB(SpinBackOff);
+  SETKNOB(CASPenalty) ;
+  SETKNOB(OXPenalty) ;
+  SETKNOB(LogSpins) ;
+  SETKNOB(SpinSetSucc) ;
+  SETKNOB(SuccEnabled) ;
+  SETKNOB(SuccRestrict) ;
+  SETKNOB(Penalty) ;
+  SETKNOB(Bonus) ;
+  SETKNOB(BonusB) ;
+  SETKNOB(Poverty) ;
+  SETKNOB(SpinAfterFutile) ;
+  SETKNOB(UsePause) ;
+  SETKNOB(SpinEarly) ;
+  SETKNOB(OState) ;
+  SETKNOB(MaxSpinners) ;
+  SETKNOB(PreSpin) ;
+  SETKNOB(ExitPolicy) ;
+  SETKNOB(QMode);
+  SETKNOB(ResetEvent) ;
+  SETKNOB(MoveNotifyee) ;
+  SETKNOB(FastHSSEC) ;
+  #undef SETKNOB
+
+  if (os::is_MP()) {
+     BackOffMask = (1 << Knob_SpinBackOff) - 1 ;
+     if (Knob_ReportSettings) ::printf ("BackOffMask=%X\n", BackOffMask) ;
+     // CONSIDER: BackOffMask = ROUNDUP_NEXT_POWER2 (ncpus-1)
+  } else {
+     Knob_SpinLimit = 0 ;
+     Knob_SpinBase  = 0 ;
+     Knob_PreSpin   = 0 ;
+     Knob_FixedSpin = -1 ;
+  }
+
+  if (Knob_LogSpins == 0) {
+     ObjectMonitor::_sync_FailedSpins = NULL ;
+  }
+
+  free (knobs) ;
+  OrderAccess::fence() ;
+  InitDone = 1 ;
+}
+
+#ifndef PRODUCT
+void ObjectMonitor::verify() {
+}
+
+void ObjectMonitor::print() {
+}
+#endif
--- a/src/share/vm/runtime/objectMonitor.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/objectMonitor.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,38 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_OBJECTMONITOR_HPP
+#define SHARE_VM_RUNTIME_OBJECTMONITOR_HPP
+
+#include "runtime/os.hpp"
+#include "runtime/perfData.hpp"
+
+
+// ObjectWaiter serves as a "proxy" or surrogate thread.
+// TODO-FIXME: Eliminate ObjectWaiter and use the thread-specific
+// ParkEvent instead.  Beware, however, that the JVMTI code
+// knows about ObjectWaiters, so we'll have to reconcile that code.
+// See next_waiter(), first_waiter(), etc.
+
+class ObjectWaiter : public StackObj {
+ public:
+  enum TStates { TS_UNDEF, TS_READY, TS_RUN, TS_WAIT, TS_ENTER, TS_CXQ } ;
+  enum Sorted  { PREPEND, APPEND, SORTED } ;
+  ObjectWaiter * volatile _next;
+  ObjectWaiter * volatile _prev;
+  Thread*       _thread;
+  ParkEvent *   _event;
+  volatile int  _notified ;
+  volatile TStates TState ;
+  Sorted        _Sorted ;           // List placement disposition
+  bool          _active ;           // Contention monitoring is enabled
+ public:
+  ObjectWaiter(Thread* thread);
+
+  void wait_reenter_begin(ObjectMonitor *mon);
+  void wait_reenter_end(ObjectMonitor *mon);
+};
+
 // WARNING:
 //   This is a very sensitive and fragile class. DO NOT make any
 // change unless you are fully aware of the underlying semantics.
@@ -38,8 +70,6 @@
 // It is also used as RawMonitor by the JVMTI
 
 
-class ObjectWaiter;
-
 class ObjectMonitor {
  public:
   enum {
@@ -74,13 +104,16 @@
 
 
  public:
-  ObjectMonitor();
-  ~ObjectMonitor();
-
   markOop   header() const;
   void      set_header(markOop hdr);
 
-  intptr_t  is_busy() const;
+  intptr_t is_busy() const {
+    // TODO-FIXME: merge _count and _waiters.
+    // TODO-FIXME: assert _owner == null implies _recursions = 0
+    // TODO-FIXME: assert _WaitSet != null implies _count > 0
+    return _count|_waiters|intptr_t(_owner)|intptr_t(_cxq)|intptr_t(_EntryList ) ;
+  }
+
   intptr_t  is_entered(Thread* current) const;
 
   void*     owner() const;
@@ -91,13 +124,58 @@
   intptr_t  count() const;
   void      set_count(intptr_t count);
   intptr_t  contentions() const ;
+  intptr_t  recursions() const                                         { return _recursions; }
 
   // JVM/DI GetMonitorInfo() needs this
-  Thread *  thread_of_waiter (ObjectWaiter *) ;
-  ObjectWaiter * first_waiter () ;
-  ObjectWaiter * next_waiter(ObjectWaiter* o);
+  ObjectWaiter* first_waiter()                                         { return _WaitSet; }
+  ObjectWaiter* next_waiter(ObjectWaiter* o)                           { return o->_next; }
+  Thread* thread_of_waiter(ObjectWaiter* o)                            { return o->_thread; }
+
+  // initialize the monitor, exception the semaphore, all other fields
+  // are simple integers or pointers
+  ObjectMonitor() {
+    _header       = NULL;
+    _count        = 0;
+    _waiters      = 0,
+    _recursions   = 0;
+    _object       = NULL;
+    _owner        = NULL;
+    _WaitSet      = NULL;
+    _WaitSetLock  = 0 ;
+    _Responsible  = NULL ;
+    _succ         = NULL ;
+    _cxq          = NULL ;
+    FreeNext      = NULL ;
+    _EntryList    = NULL ;
+    _SpinFreq     = 0 ;
+    _SpinClock    = 0 ;
+    OwnerIsThread = 0 ;
+  }
 
-  intptr_t  recursions() const { return _recursions; }
+  ~ObjectMonitor() {
+   // TODO: Add asserts ...
+   // _cxq == 0 _succ == NULL _owner == NULL _waiters == 0
+   // _count == 0 _EntryList  == NULL etc
+  }
+
+private:
+  void Recycle () {
+    // TODO: add stronger asserts ...
+    // _cxq == 0 _succ == NULL _owner == NULL _waiters == 0
+    // _count == 0 EntryList  == NULL
+    // _recursions == 0 _WaitSet == NULL
+    // TODO: assert (is_busy()|_recursions) == 0
+    _succ          = NULL ;
+    _EntryList     = NULL ;
+    _cxq           = NULL ;
+    _WaitSet       = NULL ;
+    _recursions    = 0 ;
+    _SpinFreq      = 0 ;
+    _SpinClock     = 0 ;
+    OwnerIsThread  = 0 ;
+  }
+
+public:
 
   void*     object() const;
   void*     object_addr();
@@ -122,22 +200,9 @@
   intptr_t  complete_exit(TRAPS);
   void      reenter(intptr_t recursions, TRAPS);
 
-  int       raw_enter(TRAPS);
-  int       raw_exit(TRAPS);
-  int       raw_wait(jlong millis, bool interruptable, TRAPS);
-  int       raw_notify(TRAPS);
-  int       raw_notifyAll(TRAPS);
-
  private:
-  // JVMTI support -- remove ASAP
-  int       SimpleEnter (Thread * Self) ;
-  int       SimpleExit  (Thread * Self) ;
-  int       SimpleWait  (Thread * Self, jlong millis) ;
-  int       SimpleNotify (Thread * Self, bool All) ;
-
- private:
-  void      Recycle () ;
   void      AddWaiter (ObjectWaiter * waiter) ;
+  static    void DeferredInitialize();
 
   ObjectWaiter * DequeueWaiter () ;
   void      DequeueSpecificWaiter (ObjectWaiter * waiter) ;
@@ -172,13 +237,17 @@
   // The VM assumes write ordering wrt these fields, which can be
   // read from other threads.
 
+ protected:                         // protected for jvmtiRawMonitor
   void *  volatile _owner;          // pointer to owning thread OR BasicLock
   volatile intptr_t  _recursions;   // recursion count, 0 for first entry
+ private:
   int OwnerIsThread ;               // _owner is (Thread *) vs SP/BasicLock
   ObjectWaiter * volatile _cxq ;    // LL of recently-arrived threads blocked on entry.
                                     // The list is actually composed of WaitNodes, acting
                                     // as proxies for Threads.
+ protected:
   ObjectWaiter * volatile _EntryList ;     // Threads blocked on entry or reentry.
+ private:
   Thread * volatile _succ ;          // Heir presumptive thread - used for futile wakeup throttling
   Thread * volatile _Responsible ;
   int _PromptDrain ;                // rqst to drain cxq into EntryList ASAP
@@ -196,8 +265,12 @@
   volatile intptr_t  _count;        // reference count to prevent reclaimation/deflation
                                     // at stop-the-world time.  See deflate_idle_monitors().
                                     // _count is approximately |_WaitSet| + |_EntryList|
+ protected:
   volatile intptr_t  _waiters;      // number of waiting threads
+ private:
+ protected:
   ObjectWaiter * volatile _WaitSet; // LL of threads wait()ing on the monitor
+ private:
   volatile int _WaitSetLock;        // protects Wait Queue - simple spinlock
 
  public:
@@ -205,4 +278,39 @@
   ObjectMonitor * FreeNext ;        // Free list linkage
   intptr_t StatA, StatsB ;
 
+ public:
+  static void Initialize () ;
+  static PerfCounter * _sync_ContendedLockAttempts ;
+  static PerfCounter * _sync_FutileWakeups ;
+  static PerfCounter * _sync_Parks ;
+  static PerfCounter * _sync_EmptyNotifications ;
+  static PerfCounter * _sync_Notifications ;
+  static PerfCounter * _sync_SlowEnter ;
+  static PerfCounter * _sync_SlowExit ;
+  static PerfCounter * _sync_SlowNotify ;
+  static PerfCounter * _sync_SlowNotifyAll ;
+  static PerfCounter * _sync_FailedSpins ;
+  static PerfCounter * _sync_SuccessfulSpins ;
+  static PerfCounter * _sync_PrivateA ;
+  static PerfCounter * _sync_PrivateB ;
+  static PerfCounter * _sync_MonInCirculation ;
+  static PerfCounter * _sync_MonScavenged ;
+  static PerfCounter * _sync_Inflations ;
+  static PerfCounter * _sync_Deflations ;
+  static PerfLongVariable * _sync_MonExtant ;
+
+ public:
+  static int Knob_Verbose;
+  static int Knob_SpinLimit;
 };
+
+#undef TEVENT
+#define TEVENT(nom) {if (SyncVerbose) FEVENT(nom); }
+
+#define FEVENT(nom) { static volatile int ctr = 0 ; int v = ++ctr ; if ((v & (v-1)) == 0) { ::printf (#nom " : %d \n", v); ::fflush(stdout); }}
+
+#undef  TEVENT
+#define TEVENT(nom) {;}
+
+
+#endif // SHARE_VM_RUNTIME_OBJECTMONITOR_HPP
--- a/src/share/vm/runtime/objectMonitor.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/objectMonitor.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_OBJECTMONITOR_INLINE_HPP
+#define SHARE_VM_RUNTIME_OBJECTMONITOR_INLINE_HPP
+
 inline intptr_t ObjectMonitor::is_entered(TRAPS) const {
   if (THREAD == _owner || THREAD->is_lock_owned((address) _owner)) {
     return 1;
@@ -105,6 +108,4 @@
 }
 
 
-// here are the platform-dependent bodies:
-
-# include "incls/_objectMonitor_pd.inline.hpp.incl"
+#endif // SHARE_VM_RUNTIME_OBJECTMONITOR_INLINE_HPP
--- a/src/share/vm/runtime/orderAccess.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/orderAccess.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_orderAccess.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/orderAccess.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/thread.hpp"
 
 void OrderAccess::StubRoutines_fence() {
   // Use a stub if it exists.  It may not exist during bootstrap so do
--- a/src/share/vm/runtime/orderAccess.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/orderAccess.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_ORDERACCESS_HPP
+#define SHARE_VM_RUNTIME_ORDERACCESS_HPP
+
+#include "memory/allocation.hpp"
+
 //                Memory Access Ordering Model
 //
 // This interface is based on the JSR-133 Cookbook for Compiler Writers
@@ -309,3 +314,5 @@
   // don't another way to do the inline eassembly.
   static void StubRoutines_fence();
 };
+
+#endif // SHARE_VM_RUNTIME_ORDERACCESS_HPP
--- a/src/share/vm/runtime/os.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/os.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,45 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_os.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/icBuffer.hpp"
+#include "code/vtableStubs.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvm.h"
+#include "prims/jvm_misc.hpp"
+#include "prims/privilegedStack.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "services/attachListener.hpp"
+#include "services/threadService.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/events.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 # include <signal.h>
 
@@ -736,8 +773,8 @@
 }
 
 // moved from debug.cpp (used to be find()) but still called from there
-// The print_pc parameter is only set by the debug code in one case
-void os::print_location(outputStream* st, intptr_t x, bool print_pc) {
+// The verbose parameter is only set by the debug code in one case
+void os::print_location(outputStream* st, intptr_t x, bool verbose) {
   address addr = (address)x;
   CodeBlob* b = CodeCache::find_blob_unsafe(addr);
   if (b != NULL) {
@@ -745,6 +782,7 @@
       // the interpreter is generated into a buffer blob
       InterpreterCodelet* i = Interpreter::codelet_containing(addr);
       if (i != NULL) {
+        st->print_cr(INTPTR_FORMAT " is an Interpreter codelet", addr);
         i->print_on(st);
         return;
       }
@@ -755,14 +793,14 @@
       }
       //
       if (AdapterHandlerLibrary::contains(b)) {
-        st->print_cr("Printing AdapterHandler");
+        st->print_cr(INTPTR_FORMAT " is an AdapterHandler", addr);
         AdapterHandlerLibrary::print_handler_on(st, b);
       }
       // the stubroutines are generated into a buffer blob
       StubCodeDesc* d = StubCodeDesc::desc_for(addr);
       if (d != NULL) {
         d->print_on(st);
-        if (print_pc) st->cr();
+        if (verbose) st->cr();
         return;
       }
       if (StubRoutines::contains(addr)) {
@@ -781,7 +819,7 @@
         return;
       }
     }
-    if (print_pc && b->is_nmethod()) {
+    if (verbose && b->is_nmethod()) {
       ResourceMark rm;
       st->print("%#p: Compiled ", addr);
       ((nmethod*)b)->method()->print_value_on(st);
@@ -789,11 +827,12 @@
       st->cr();
       return;
     }
+    st->print(INTPTR_FORMAT " ", b);
     if ( b->is_nmethod()) {
       if (b->is_zombie()) {
-        st->print_cr(INTPTR_FORMAT " is zombie nmethod", b);
+        st->print_cr("is zombie nmethod");
       } else if (b->is_not_entrant()) {
-        st->print_cr(INTPTR_FORMAT " is non-entrant nmethod", b);
+        st->print_cr("is non-entrant nmethod");
       }
     }
     b->print_on(st);
@@ -812,6 +851,7 @@
       print = true;
     }
     if (print) {
+      st->print_cr(INTPTR_FORMAT " is an oop", addr);
       oop(p)->print_on(st);
       if (p != (HeapWord*)x && oop(p)->is_constMethod() &&
           constMethodOop(p)->contains(addr)) {
@@ -855,12 +895,16 @@
         thread->privileged_stack_top()->contains(addr)) {
       st->print_cr(INTPTR_FORMAT " is pointing into the privilege stack "
                    "for thread: " INTPTR_FORMAT, addr, thread);
-      thread->print_on(st);
+      if (verbose) thread->print_on(st);
       return;
     }
     // If the addr is a java thread print information about that.
     if (addr == (address)thread) {
-      thread->print_on(st);
+      if (verbose) {
+        thread->print_on(st);
+      } else {
+        st->print_cr(INTPTR_FORMAT " is a thread", addr);
+      }
       return;
     }
     // If the addr is in the stack region for this thread then report that
@@ -869,7 +913,7 @@
         addr > (thread->stack_base() - thread->stack_size())) {
       st->print_cr(INTPTR_FORMAT " is pointing into the stack for thread: "
                    INTPTR_FORMAT, addr, thread);
-      thread->print_on(st);
+      if (verbose) thread->print_on(st);
       return;
     }
 
@@ -879,7 +923,7 @@
     return;
   }
 
-  st->print_cr(INTPTR_FORMAT " is pointing to unknown location", addr);
+  st->print_cr(INTPTR_FORMAT " is an unknown value", addr);
 }
 
 // Looks like all platforms except IA64 can use the same function to check
--- a/src/share/vm/runtime/os.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/os.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,24 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_OS_HPP
+#define SHARE_VM_RUNTIME_OS_HPP
+
+#include "jvmtifiles/jvmti.h"
+#include "runtime/atomic.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "jvm_linux.h"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "jvm_solaris.h"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "jvm_windows.h"
+#endif
+
 // os defines the interface to operating system; this includes traditional
 // OS services (time, I/O) as well as other functionality with system-
 // dependent code.
@@ -450,11 +468,12 @@
   static void print_dll_info(outputStream* st);
   static void print_environment_variables(outputStream* st, const char** env_list, char* buffer, int len);
   static void print_context(outputStream* st, void* context);
+  static void print_register_info(outputStream* st, void* context);
   static void print_siginfo(outputStream* st, void* siginfo);
   static void print_signal_handlers(outputStream* st, char* buf, size_t buflen);
   static void print_date_and_time(outputStream* st);
 
-  static void print_location(outputStream* st, intptr_t x, bool print_pc = false);
+  static void print_location(outputStream* st, intptr_t x, bool verbose = false);
 
   // The following two functions are used by fatal error handler to trace
   // native (C) frames. They are not part of frame.hpp/frame.cpp because
@@ -586,7 +605,34 @@
   static bool obsolete_option(const JavaVMOption *option);
 
   // Platform dependent stuff
-  #include "incls/_os_pd.hpp.incl"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "os_linux_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "os_linux_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "os_linux_zero.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "os_solaris_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "os_solaris_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "os_windows_x86.hpp"
+#endif
+
 
   // debugging support (mostly used by debug.cpp but also fatal error handler)
   static bool find(address pc, outputStream* st = tty); // OS specific function to make sense out of an address
@@ -629,3 +675,5 @@
 extern "C" int SpinPause () ;
 extern "C" int SafeFetch32 (int * adr, int errValue) ;
 extern "C" intptr_t SafeFetchN (intptr_t * adr, intptr_t errValue) ;
+
+#endif // SHARE_VM_RUNTIME_OS_HPP
--- a/src/share/vm/runtime/osThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/osThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_osThread.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/osThread.hpp"
 
 
 OSThread::OSThread(OSThreadStartFunc start_proc, void* start_parm) {
--- a/src/share/vm/runtime/osThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/osThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_OSTHREAD_HPP
+#define SHARE_VM_RUNTIME_OSTHREAD_HPP
+
+#include "runtime/frame.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/javaFrameAnchor.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "utilities/top.hpp"
+
 // The OSThread class holds OS-specific thread information.  It is equivalent
 // to the sys_thread_t structure of the classic JVM implementation.
 
@@ -91,7 +101,16 @@
   static ByteSize interrupted_offset()            { return byte_offset_of(OSThread, _interrupted); }
 
   // Platform dependent stuff
-  #include "incls/_osThread_pd.hpp.incl"
+#ifdef TARGET_OS_FAMILY_linux
+# include "osThread_linux.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "osThread_solaris.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "osThread_windows.hpp"
+#endif
+
 };
 
 
@@ -129,3 +148,5 @@
     _osthread->set_state(_old_state);
   }
 };
+
+#endif // SHARE_VM_RUNTIME_OSTHREAD_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/runtime/park.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 1997, 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "runtime/thread.hpp"
+
+
+
+// Lifecycle management for TSM ParkEvents.
+// ParkEvents are type-stable (TSM).
+// In our particular implementation they happen to be immortal.
+//
+// We manage concurrency on the FreeList with a CAS-based
+// detach-modify-reattach idiom that avoids the ABA problems
+// that would otherwise be present in a simple CAS-based
+// push-pop implementation.   (push-one and pop-all)
+//
+// Caveat: Allocate() and Release() may be called from threads
+// other than the thread associated with the Event!
+// If we need to call Allocate() when running as the thread in
+// question then look for the PD calls to initialize native TLS.
+// Native TLS (Win32/Linux/Solaris) can only be initialized or
+// accessed by the associated thread.
+// See also pd_initialize().
+//
+// Note that we could defer associating a ParkEvent with a thread
+// until the 1st time the thread calls park().  unpark() calls to
+// an unprovisioned thread would be ignored.  The first park() call
+// for a thread would allocate and associate a ParkEvent and return
+// immediately.
+
+volatile int ParkEvent::ListLock = 0 ;
+ParkEvent * volatile ParkEvent::FreeList = NULL ;
+
+ParkEvent * ParkEvent::Allocate (Thread * t) {
+  // In rare cases -- JVM_RawMonitor* operations -- we can find t == null.
+  ParkEvent * ev ;
+
+  // Start by trying to recycle an existing but unassociated
+  // ParkEvent from the global free list.
+  for (;;) {
+    ev = FreeList ;
+    if (ev == NULL) break ;
+    // 1: Detach - sequester or privatize the list
+    // Tantamount to ev = Swap (&FreeList, NULL)
+    if (Atomic::cmpxchg_ptr (NULL, &FreeList, ev) != ev) {
+       continue ;
+    }
+
+    // We've detached the list.  The list in-hand is now
+    // local to this thread.   This thread can operate on the
+    // list without risk of interference from other threads.
+    // 2: Extract -- pop the 1st element from the list.
+    ParkEvent * List = ev->FreeNext ;
+    if (List == NULL) break ;
+    for (;;) {
+        // 3: Try to reattach the residual list
+        guarantee (List != NULL, "invariant") ;
+        ParkEvent * Arv =  (ParkEvent *) Atomic::cmpxchg_ptr (List, &FreeList, NULL) ;
+        if (Arv == NULL) break ;
+
+        // New nodes arrived.  Try to detach the recent arrivals.
+        if (Atomic::cmpxchg_ptr (NULL, &FreeList, Arv) != Arv) {
+            continue ;
+        }
+        guarantee (Arv != NULL, "invariant") ;
+        // 4: Merge Arv into List
+        ParkEvent * Tail = List ;
+        while (Tail->FreeNext != NULL) Tail = Tail->FreeNext ;
+        Tail->FreeNext = Arv ;
+    }
+    break ;
+  }
+
+  if (ev != NULL) {
+    guarantee (ev->AssociatedWith == NULL, "invariant") ;
+  } else {
+    // Do this the hard way -- materialize a new ParkEvent.
+    // In rare cases an allocating thread might detach a long list --
+    // installing null into FreeList -- and then stall or be obstructed.
+    // A 2nd thread calling Allocate() would see FreeList == null.
+    // The list held privately by the 1st thread is unavailable to the 2nd thread.
+    // In that case the 2nd thread would have to materialize a new ParkEvent,
+    // even though free ParkEvents existed in the system.  In this case we end up
+    // with more ParkEvents in circulation than we need, but the race is
+    // rare and the outcome is benign.  Ideally, the # of extant ParkEvents
+    // is equal to the maximum # of threads that existed at any one time.
+    // Because of the race mentioned above, segments of the freelist
+    // can be transiently inaccessible.  At worst we may end up with the
+    // # of ParkEvents in circulation slightly above the ideal.
+    // Note that if we didn't have the TSM/immortal constraint, then
+    // when reattaching, above, we could trim the list.
+    ev = new ParkEvent () ;
+    guarantee ((intptr_t(ev) & 0xFF) == 0, "invariant") ;
+  }
+  ev->reset() ;                     // courtesy to caller
+  ev->AssociatedWith = t ;          // Associate ev with t
+  ev->FreeNext       = NULL ;
+  return ev ;
+}
+
+void ParkEvent::Release (ParkEvent * ev) {
+  if (ev == NULL) return ;
+  guarantee (ev->FreeNext == NULL      , "invariant") ;
+  ev->AssociatedWith = NULL ;
+  for (;;) {
+    // Push ev onto FreeList
+    // The mechanism is "half" lock-free.
+    ParkEvent * List = FreeList ;
+    ev->FreeNext = List ;
+    if (Atomic::cmpxchg_ptr (ev, &FreeList, List) == List) break ;
+  }
+}
+
+// Override operator new and delete so we can ensure that the
+// least significant byte of ParkEvent addresses is 0.
+// Beware that excessive address alignment is undesirable
+// as it can result in D$ index usage imbalance as
+// well as bank access imbalance on Niagara-like platforms,
+// although Niagara's hash function should help.
+
+void * ParkEvent::operator new (size_t sz) {
+  return (void *) ((intptr_t (CHeapObj::operator new (sz + 256)) + 256) & -256) ;
+}
+
+void ParkEvent::operator delete (void * a) {
+  // ParkEvents are type-stable and immortal ...
+  ShouldNotReachHere();
+}
+
+
+// 6399321 As a temporary measure we copied & modified the ParkEvent::
+// allocate() and release() code for use by Parkers.  The Parker:: forms
+// will eventually be removed as we consolide and shift over to ParkEvents
+// for both builtin synchronization and JSR166 operations.
+
+volatile int Parker::ListLock = 0 ;
+Parker * volatile Parker::FreeList = NULL ;
+
+Parker * Parker::Allocate (JavaThread * t) {
+  guarantee (t != NULL, "invariant") ;
+  Parker * p ;
+
+  // Start by trying to recycle an existing but unassociated
+  // Parker from the global free list.
+  for (;;) {
+    p = FreeList ;
+    if (p  == NULL) break ;
+    // 1: Detach
+    // Tantamount to p = Swap (&FreeList, NULL)
+    if (Atomic::cmpxchg_ptr (NULL, &FreeList, p) != p) {
+       continue ;
+    }
+
+    // We've detached the list.  The list in-hand is now
+    // local to this thread.   This thread can operate on the
+    // list without risk of interference from other threads.
+    // 2: Extract -- pop the 1st element from the list.
+    Parker * List = p->FreeNext ;
+    if (List == NULL) break ;
+    for (;;) {
+        // 3: Try to reattach the residual list
+        guarantee (List != NULL, "invariant") ;
+        Parker * Arv =  (Parker *) Atomic::cmpxchg_ptr (List, &FreeList, NULL) ;
+        if (Arv == NULL) break ;
+
+        // New nodes arrived.  Try to detach the recent arrivals.
+        if (Atomic::cmpxchg_ptr (NULL, &FreeList, Arv) != Arv) {
+            continue ;
+        }
+        guarantee (Arv != NULL, "invariant") ;
+        // 4: Merge Arv into List
+        Parker * Tail = List ;
+        while (Tail->FreeNext != NULL) Tail = Tail->FreeNext ;
+        Tail->FreeNext = Arv ;
+    }
+    break ;
+  }
+
+  if (p != NULL) {
+    guarantee (p->AssociatedWith == NULL, "invariant") ;
+  } else {
+    // Do this the hard way -- materialize a new Parker..
+    // In rare cases an allocating thread might detach
+    // a long list -- installing null into FreeList --and
+    // then stall.  Another thread calling Allocate() would see
+    // FreeList == null and then invoke the ctor.  In this case we
+    // end up with more Parkers in circulation than we need, but
+    // the race is rare and the outcome is benign.
+    // Ideally, the # of extant Parkers is equal to the
+    // maximum # of threads that existed at any one time.
+    // Because of the race mentioned above, segments of the
+    // freelist can be transiently inaccessible.  At worst
+    // we may end up with the # of Parkers in circulation
+    // slightly above the ideal.
+    p = new Parker() ;
+  }
+  p->AssociatedWith = t ;          // Associate p with t
+  p->FreeNext       = NULL ;
+  return p ;
+}
+
+
+void Parker::Release (Parker * p) {
+  if (p == NULL) return ;
+  guarantee (p->AssociatedWith != NULL, "invariant") ;
+  guarantee (p->FreeNext == NULL      , "invariant") ;
+  p->AssociatedWith = NULL ;
+  for (;;) {
+    // Push p onto FreeList
+    Parker * List = FreeList ;
+    p->FreeNext = List ;
+    if (Atomic::cmpxchg_ptr (p, &FreeList, List) == List) break ;
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/runtime/park.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 1997, 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.
+ *
+ */
+
+#ifndef SHARE_VM_RUNTIME_PARK_HPP
+#define SHARE_VM_RUNTIME_PARK_HPP
+
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+/*
+ * Per-thread blocking support for JSR166. See the Java-level
+ * Documentation for rationale. Basically, park acts like wait, unpark
+ * like notify.
+ *
+ * 6271289 --
+ * To avoid errors where an os thread expires but the JavaThread still
+ * exists, Parkers are immortal (type-stable) and are recycled across
+ * new threads.  This parallels the ParkEvent implementation.
+ * Because park-unpark allow spurious wakeups it is harmless if an
+ * unpark call unparks a new thread using the old Parker reference.
+ *
+ * In the future we'll want to think about eliminating Parker and using
+ * ParkEvent instead.  There's considerable duplication between the two
+ * services.
+ *
+ */
+
+class Parker : public os::PlatformParker {
+private:
+  volatile int _counter ;
+  Parker * FreeNext ;
+  JavaThread * AssociatedWith ; // Current association
+
+public:
+  Parker() : PlatformParker() {
+    _counter       = 0 ;
+    FreeNext       = NULL ;
+    AssociatedWith = NULL ;
+  }
+protected:
+  ~Parker() { ShouldNotReachHere(); }
+public:
+  // For simplicity of interface with Java, all forms of park (indefinite,
+  // relative, and absolute) are multiplexed into one call.
+  void park(bool isAbsolute, jlong time);
+  void unpark();
+
+  // Lifecycle operators
+  static Parker * Allocate (JavaThread * t) ;
+  static void Release (Parker * e) ;
+private:
+  static Parker * volatile FreeList ;
+  static volatile int ListLock ;
+
+};
+
+/////////////////////////////////////////////////////////////
+//
+// ParkEvents are type-stable and immortal.
+//
+// Lifecycle: Once a ParkEvent is associated with a thread that ParkEvent remains
+// associated with the thread for the thread's entire lifetime - the relationship is
+// stable. A thread will be associated at most one ParkEvent.  When the thread
+// expires, the ParkEvent moves to the EventFreeList.  New threads attempt to allocate from
+// the EventFreeList before creating a new Event.  Type-stability frees us from
+// worrying about stale Event or Thread references in the objectMonitor subsystem.
+// (A reference to ParkEvent is always valid, even though the event may no longer be associated
+// with the desired or expected thread.  A key aspect of this design is that the callers of
+// park, unpark, etc must tolerate stale references and spurious wakeups).
+//
+// Only the "associated" thread can block (park) on the ParkEvent, although
+// any other thread can unpark a reachable parkevent.  Park() is allowed to
+// return spuriously.  In fact park-unpark a really just an optimization to
+// avoid unbounded spinning and surrender the CPU to be a polite system citizen.
+// A degenerate albeit "impolite" park-unpark implementation could simply return.
+// See http://blogs.sun.com/dave for more details.
+//
+// Eventually I'd like to eliminate Events and ObjectWaiters, both of which serve as
+// thread proxies, and simply make the THREAD structure type-stable and persistent.
+// Currently, we unpark events associated with threads, but ideally we'd just
+// unpark threads.
+//
+// The base-class, PlatformEvent, is platform-specific while the ParkEvent is
+// platform-independent.  PlatformEvent provides park(), unpark(), etc., and
+// is abstract -- that is, a PlatformEvent should never be instantiated except
+// as part of a ParkEvent.
+// Equivalently we could have defined a platform-independent base-class that
+// exported Allocate(), Release(), etc.  The platform-specific class would extend
+// that base-class, adding park(), unpark(), etc.
+//
+// A word of caution: The JVM uses 2 very similar constructs:
+// 1. ParkEvent are used for Java-level "monitor" synchronization.
+// 2. Parkers are used by JSR166-JUC park-unpark.
+//
+// We'll want to eventually merge these redundant facilities and use ParkEvent.
+
+
+class ParkEvent : public os::PlatformEvent {
+  private:
+    ParkEvent * FreeNext ;
+
+    // Current association
+    Thread * AssociatedWith ;
+    intptr_t RawThreadIdentity ;        // LWPID etc
+    volatile int Incarnation ;
+
+    // diagnostic : keep track of last thread to wake this thread.
+    // this is useful for construction of dependency graphs.
+    void * LastWaker ;
+
+  public:
+    // MCS-CLH list linkage and Native Mutex/Monitor
+    ParkEvent * volatile ListNext ;
+    ParkEvent * volatile ListPrev ;
+    volatile intptr_t OnList ;
+    volatile int TState ;
+    volatile int Notified ;             // for native monitor construct
+    volatile int IsWaiting ;            // Enqueued on WaitSet
+
+
+  private:
+    static ParkEvent * volatile FreeList ;
+    static volatile int ListLock ;
+
+    // It's prudent to mark the dtor as "private"
+    // ensuring that it's not visible outside the package.
+    // Unfortunately gcc warns about such usage, so
+    // we revert to the less desirable "protected" visibility.
+    // The other compilers accept private dtors.
+
+  protected:        // Ensure dtor is never invoked
+    ~ParkEvent() { guarantee (0, "invariant") ; }
+
+    ParkEvent() : PlatformEvent() {
+       AssociatedWith = NULL ;
+       FreeNext       = NULL ;
+       ListNext       = NULL ;
+       ListPrev       = NULL ;
+       OnList         = 0 ;
+       TState         = 0 ;
+       Notified       = 0 ;
+       IsWaiting      = 0 ;
+    }
+
+    // We use placement-new to force ParkEvent instances to be
+    // aligned on 256-byte address boundaries.  This ensures that the least
+    // significant byte of a ParkEvent address is always 0.
+
+    void * operator new (size_t sz) ;
+    void operator delete (void * a) ;
+
+  public:
+    static ParkEvent * Allocate (Thread * t) ;
+    static void Release (ParkEvent * e) ;
+} ;
+
+#endif // SHARE_VM_RUNTIME_PARK_HPP
--- a/src/share/vm/runtime/perfData.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/perfData.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_perfData.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/java.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/perfData.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 PerfDataList*   PerfDataManager::_all = NULL;
 PerfDataList*   PerfDataManager::_sampled = NULL;
--- a/src/share/vm/runtime/perfData.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/perfData.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_PERFDATA_HPP
+#define SHARE_VM_RUNTIME_PERFDATA_HPP
+
+#include "memory/allocation.inline.hpp"
+#include "runtime/perfMemory.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/growableArray.hpp"
+
 /* jvmstat global and subsystem counter name space - enumeration value
  * serve as an index into the PerfDataManager::_name_space[] array
  * containing the corresponding name space string. Only the top level
@@ -957,3 +965,5 @@
       _eventp->inc();
     }
 };
+
+#endif // SHARE_VM_RUNTIME_PERFDATA_HPP
--- a/src/share/vm/runtime/perfMemory.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/perfMemory.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_perfMemory.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/java.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/perfData.hpp"
+#include "runtime/perfMemory.hpp"
+#include "runtime/statSampler.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 // Prefix of performance data file.
 const char               PERFDATA_NAME[] = "hsperfdata";
--- a/src/share/vm/runtime/perfMemory.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/perfMemory.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_PERFMEMORY_HPP
+#define SHARE_VM_RUNTIME_PERFMEMORY_HPP
+
+#include "utilities/exceptions.hpp"
+
 /*
  * PerfData Version Constants
  *   - Major Version - change whenever the structure of PerfDataEntry changes
@@ -160,3 +165,5 @@
 
 void perfMemory_init();
 void perfMemory_exit();
+
+#endif // SHARE_VM_RUNTIME_PERFMEMORY_HPP
--- a/src/share/vm/runtime/prefetch.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/prefetch.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_PREFETCH_HPP
+#define SHARE_VM_RUNTIME_PREFETCH_HPP
+
+#include "memory/allocation.hpp"
+
 // If calls to prefetch methods are in a loop, the loop should be cloned
 // such that if Prefetch{Scan,Copy}Interval and/or PrefetchFieldInterval
 // say not to do prefetching, these methods aren't called.  At the very
@@ -42,3 +47,5 @@
   // Prefetch anticipating write; must not fault, semantically a no-op
   static void write(void* loc, intx interval);
 };
+
+#endif // SHARE_VM_RUNTIME_PREFETCH_HPP
--- a/src/share/vm/runtime/reflection.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/reflection.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,28 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_reflection.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/verifier.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "prims/jvm.h"
+#include "prims/methodHandleWalk.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/reflection.hpp"
+#include "runtime/reflectionUtils.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframe.hpp"
 
 #define JAVA_1_5_VERSION                  49
 
--- a/src/share/vm/runtime/reflection.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/reflection.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_REFLECTION_HPP
+#define SHARE_VM_RUNTIME_REFLECTION_HPP
+
+#include "oops/oop.hpp"
+#include "runtime/fieldDescriptor.hpp"
+#include "runtime/reflectionCompat.hpp"
+#include "utilities/accessFlags.hpp"
+#include "utilities/growableArray.hpp"
+
 // Class Reflection contains utility methods needed for implementing the
 // reflection api.
 //
@@ -166,3 +175,5 @@
 #endif /* SUPPORT_OLD_REFLECTION */
 
 };
+
+#endif // SHARE_VM_RUNTIME_REFLECTION_HPP
--- a/src/share/vm/runtime/reflectionCompat.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/reflectionCompat.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_REFLECTIONCOMPAT_HPP
+#define SHARE_VM_RUNTIME_REFLECTIONCOMPAT_HPP
+
 // During the development of the JDK 1.4 reflection implementation
 // based on dynamic bytecode generation, it was hoped that the bulk of
 // the native code for reflection could be removed. Unfortunately
@@ -40,3 +43,5 @@
 //#ifndef PRODUCT
 # define SUPPORT_OLD_REFLECTION
 //#endif
+
+#endif // SHARE_VM_RUNTIME_REFLECTIONCOMPAT_HPP
--- a/src/share/vm/runtime/reflectionUtils.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/reflectionUtils.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_reflectionUtils.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "memory/universe.inline.hpp"
+#include "runtime/reflectionUtils.hpp"
 
 KlassStream::KlassStream(instanceKlassHandle klass, bool local_only, bool classes_only) {
   _klass = klass;
--- a/src/share/vm/runtime/reflectionUtils.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/reflectionUtils.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_REFLECTIONUTILS_HPP
+#define SHARE_VM_RUNTIME_REFLECTIONUTILS_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oopsHierarchy.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/reflection.hpp"
+#include "utilities/accessFlags.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // A KlassStream is an abstract stream for streaming over self, superclasses
 // and (super)interfaces. Streaming is done in reverse order (subclasses first,
 // interfaces last).
@@ -209,3 +221,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_RUNTIME_REFLECTIONUTILS_HPP
--- a/src/share/vm/runtime/registerMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/registerMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_REGISTERMAP_HPP
+#define SHARE_VM_RUNTIME_REGISTERMAP_HPP
+
+#include "code/vmreg.hpp"
+#include "utilities/globalDefinitions.hpp"
+#ifdef TARGET_ARCH_x86
+# include "register_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "register_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "register_zero.hpp"
+#endif
+
 class JavaThread;
 
 //
@@ -114,5 +129,16 @@
   void print() const;
 
   // the following contains the definition of pd_xxx methods
-# include "incls/_registerMap_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "registerMap_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "registerMap_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "registerMap_zero.hpp"
+#endif
+
 };
+
+#endif // SHARE_VM_RUNTIME_REGISTERMAP_HPP
--- a/src/share/vm/runtime/relocator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/relocator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_relocator.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/stackMapTableFormat.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/relocator.hpp"
 
 #define MAX_METHOD_LENGTH  65535
 
@@ -435,6 +441,120 @@
   }
 }
 
+// Create a new array, copying the src array but adding a hole at
+// the specified location
+static typeArrayOop insert_hole_at(
+    size_t where, int hole_sz, typeArrayOop src) {
+  Thread* THREAD = Thread::current();
+  Handle src_hnd(THREAD, src);
+  typeArrayOop dst =
+      oopFactory::new_permanent_byteArray(src->length() + hole_sz, CHECK_NULL);
+  src = (typeArrayOop)src_hnd();
+
+  address src_addr = (address)src->byte_at_addr(0);
+  address dst_addr = (address)dst->byte_at_addr(0);
+
+  memcpy(dst_addr, src_addr, where);
+  memcpy(dst_addr + where + hole_sz,
+         src_addr + where, src->length() - where);
+  return dst;
+}
+
+// The width of instruction at "bci" is changing by "delta".  Adjust the stack
+// map frames.
+void Relocator::adjust_stack_map_table(int bci, int delta) {
+  if (method()->has_stackmap_table()) {
+    typeArrayOop data = method()->stackmap_data();
+    // The data in the array is a classfile representation of the stackmap
+    // table attribute, less the initial u2 tag and u4 attribute_length fields.
+    stack_map_table_attribute* attr = stack_map_table_attribute::at(
+        (address)data->byte_at_addr(0) - (sizeof(u2) + sizeof(u4)));
+
+    int count = attr->number_of_entries();
+    stack_map_frame* frame = attr->entries();
+    int bci_iter = -1;
+    bool offset_adjusted = false; // only need to adjust one offset
+
+    for (int i = 0; i < count; ++i) {
+      int offset_delta = frame->offset_delta();
+      bci_iter += offset_delta;
+
+      if (!offset_adjusted && bci_iter > bci) {
+        int new_offset_delta = offset_delta + delta;
+
+        if (frame->is_valid_offset(new_offset_delta)) {
+          frame->set_offset_delta(new_offset_delta);
+        } else {
+          assert(frame->is_same_frame() ||
+                 frame->is_same_frame_1_stack_item_frame(),
+                 "Frame must be one of the compressed forms");
+          // The new delta exceeds the capacity of the 'same_frame' or
+          // 'same_frame_1_stack_item_frame' frame types.  We need to
+          // convert these frames to the extended versions, but the extended
+          // version is bigger and requires more room.  So we allocate a
+          // new array and copy the data, being sure to leave u2-sized hole
+          // right after the 'frame_type' for the new offset field.
+          //
+          // We can safely ignore the reverse situation as a small delta
+          // can still be used in an extended version of the frame.
+
+          size_t frame_offset = (address)frame - (address)data->byte_at_addr(0);
+
+          data = insert_hole_at(frame_offset + 1, 2, data);
+          if (data == NULL) {
+            return; // out-of-memory?
+          }
+
+          address frame_addr = (address)(data->byte_at_addr(0) + frame_offset);
+          frame = stack_map_frame::at(frame_addr);
+
+
+          // Now convert the frames in place
+          if (frame->is_same_frame()) {
+            same_frame_extended::create_at(frame_addr, new_offset_delta);
+          } else {
+            same_frame_1_stack_item_extended::create_at(
+              frame_addr, new_offset_delta, NULL);
+            // the verification_info_type should already be at the right spot
+          }
+        }
+        offset_adjusted = true; // needs to be done only once, since subsequent
+                                // values are offsets from the current
+      }
+
+      // The stack map frame may contain verification types, if so we need to
+      // check and update any Uninitialized type's bci (no matter where it is).
+      int number_of_types = frame->number_of_types();
+      verification_type_info* types = frame->types();
+
+      for (int i = 0; i < number_of_types; ++i) {
+        if (types->is_uninitialized() && types->bci() > bci) {
+          types->set_bci(types->bci() + delta);
+        }
+        types = types->next();
+      }
+
+      // Full frame has stack values too
+      full_frame* ff = frame->as_full_frame();
+      if (ff != NULL) {
+        address eol = (address)types;
+        number_of_types = ff->stack_slots(eol);
+        types = ff->stack(eol);
+        for (int i = 0; i < number_of_types; ++i) {
+          if (types->is_uninitialized() && types->bci() > bci) {
+            types->set_bci(types->bci() + delta);
+          }
+          types = types->next();
+        }
+      }
+
+      frame = frame->next();
+    }
+
+    method()->set_stackmap_data(data); // in case it has changed
+  }
+}
+
 
 bool Relocator::expand_code_array(int delta) {
   int length = MAX2(code_length() + delta, code_length() * (100+code_slop_pct()) / 100);
@@ -499,6 +619,9 @@
   // And local variable table...
   adjust_local_var_table(bci, delta);
 
+  // Adjust stack maps
+  adjust_stack_map_table(bci, delta);
+
   // Relocate the pending change stack...
   for (int j = 0; j < _changes->length(); j++) {
     ChangeItem* ci = _changes->at(j);
@@ -641,6 +764,7 @@
       memmove(addr_at(bci +1 + new_pad),
               addr_at(bci +1 + old_pad),
               len * 4);
+      memset(addr_at(bci + 1), 0, new_pad); // pad must be 0
     }
   }
   return true;
--- a/src/share/vm/runtime/relocator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/relocator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_RELOCATOR_HPP
+#define SHARE_VM_RUNTIME_RELOCATOR_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "oops/methodOop.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+
 // This code has been converted from the 1.1E java virtual machine
 // Thanks to the JavaTopics group for using the code
 
@@ -105,6 +120,7 @@
   void adjust_exception_table(int bci, int delta);
   void adjust_line_no_table  (int bci, int delta);
   void adjust_local_var_table(int bci, int delta);
+  void adjust_stack_map_table(int bci, int delta);
   int  get_orig_switch_pad   (int bci, bool is_lookup_switch);
   int  rc_instr_len          (int bci);
   bool expand_code_array     (int delta);
@@ -116,3 +132,5 @@
       _listener->relocated(bci, delta, new_code_length);
   }
 };
+
+#endif // SHARE_VM_RUNTIME_RELOCATOR_HPP
--- a/src/share/vm/runtime/rframe.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/rframe.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,9 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/rframe.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframe_hp.hpp"
 
-#include "incls/_rframe.cpp.incl"
 
 static RFrame*const  noCaller    = (RFrame*) 0x1;               // no caller (i.e., initial frame)
 static RFrame*const  noCallerYet = (RFrame*) 0x0;               // caller not yet computed
--- a/src/share/vm/runtime/rframe.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/rframe.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_RFRAME_HPP
+#define SHARE_VM_RUNTIME_RFRAME_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/frame.inline.hpp"
+
 // rframes ("recompiler frames") decorate stack frames with some extra information
 // needed by the recompiler.  The recompiler views the stack (at the time of recompilation)
 // as a list of rframes.
@@ -115,3 +121,5 @@
  public:
   void print();
 };
+
+#endif // SHARE_VM_RUNTIME_RFRAME_HPP
--- a/src/share/vm/runtime/safepoint.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/safepoint.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,61 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_safepoint.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "code/icBuffer.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/sweeper.hpp"
+#include "runtime/synchronizer.hpp"
+#include "services/runtimeService.hpp"
+#include "utilities/events.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+# include "vmreg_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+# include "vmreg_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+# include "vmreg_zero.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/shared/concurrentGCThread.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_globals.hpp"
+#endif
 
 // --------------------------------------------------------------------------------------------------
 // Implementation of Safepoint begin/end
@@ -940,8 +993,7 @@
     // as otherwise we may never deliver it.
     if (thread()->has_async_condition()) {
       ThreadInVMfromJavaNoAsyncException __tiv(thread());
-      VM_DeoptimizeFrame deopt(thread(), caller_fr.id());
-      VMThread::execute(&deopt);
+      Deoptimization::deoptimize_frame(thread(), caller_fr.id());
     }
 
     // If an exception has been installed we must check for a pending deoptimization
--- a/src/share/vm/runtime/safepoint.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/safepoint.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_SAFEPOINT_HPP
+#define SHARE_VM_RUNTIME_SAFEPOINT_HPP
+
+#include "asm/assembler.hpp"
+#include "code/nmethod.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/extendedPC.hpp"
+#include "runtime/os.hpp"
+#include "utilities/ostream.hpp"
+
 //
 // Safepoint synchronization
 ////
@@ -232,3 +242,5 @@
 };
 
 
+
+#endif // SHARE_VM_RUNTIME_SAFEPOINT_HPP
--- a/src/share/vm/runtime/sharedRuntime.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/sharedRuntime.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,56 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharedRuntime.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/compiledIC.hpp"
+#include "code/scopeDesc.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/abstractCompiler.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/forte.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/methodHandles.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/events.hpp"
+#include "utilities/hashtable.inline.hpp"
+#include "utilities/xmlstream.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+# include "vmreg_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+# include "vmreg_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+# include "vmreg_zero.inline.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+
 #include <math.h>
 
 HS_DTRACE_PROBE_DECL4(hotspot, object__alloc, Thread*, char*, int, size_t);
@@ -302,6 +350,9 @@
   return (f <= (double)0.0) ? (double)0.0 - f : f;
 }
 
+#endif
+
+#if defined(__SOFTFP__) || defined(PPC)
 double SharedRuntime::dsqrt(double f) {
   return sqrt(f);
 }
--- a/src/share/vm/runtime/sharedRuntime.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/sharedRuntime.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,17 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_SHAREDRUNTIME_HPP
+#define SHARE_VM_RUNTIME_SHAREDRUNTIME_HPP
+
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/bytecodeTracer.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/allocation.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "utilities/hashtable.hpp"
+
 class AdapterHandlerEntry;
 class AdapterHandlerTable;
 class AdapterFingerPrint;
@@ -116,6 +127,9 @@
 
 #if defined(__SOFTFP__) || defined(E500V2)
   static double dabs(double f);
+#endif
+
+#if defined(__SOFTFP__) || defined(PPC)
   static double dsqrt(double f);
 #endif
 
@@ -660,3 +674,5 @@
 #endif /* PRODUCT */
 
 };
+
+#endif // SHARE_VM_RUNTIME_SHAREDRUNTIME_HPP
--- a/src/share/vm/runtime/sharedRuntimeTrans.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/sharedRuntimeTrans.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharedRuntimeTrans.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jni.h"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 // This file contains copies of the fdlibm routines used by
 // StrictMath. It turns out that it is almost always required to use
--- a/src/share/vm/runtime/sharedRuntimeTrig.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/sharedRuntimeTrig.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharedRuntimeTrig.cpp.incl"
+#include "precompiled.hpp"
+#include "prims/jni.h"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
 
 // This file contains copies of the fdlibm routines used by
 // StrictMath. It turns out that it is almost always required to use
--- a/src/share/vm/runtime/signature.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/signature.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_signature.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "runtime/signature.hpp"
 
 
 // Implementation of SignatureIterator
--- a/src/share/vm/runtime/signature.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/signature.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_SIGNATURE_HPP
+#define SHARE_VM_RUNTIME_SIGNATURE_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/methodOop.hpp"
+#include "utilities/top.hpp"
+
 // SignatureIterators iterate over a Java signature (or parts of it).
 // (Syntax according to: "The Java Virtual Machine Specification" by
 // Tim Lindholm & Frank Yellin; section 4.3 Descriptors; p. 89ff.)
@@ -416,3 +423,5 @@
     static ssize_t is_valid_type(const char*, ssize_t);
     static bool invalid_name_char(char);
 };
+
+#endif // SHARE_VM_RUNTIME_SIGNATURE_HPP
--- a/src/share/vm/runtime/simpleThresholdPolicy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/simpleThresholdPolicy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_simpleThresholdPolicy.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileBroker.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/simpleThresholdPolicy.hpp"
+#include "runtime/simpleThresholdPolicy.inline.hpp"
 
 // Print an event.
 void SimpleThresholdPolicy::print_event(EventType type, methodHandle mh, methodHandle imh,
@@ -176,11 +180,11 @@
   if (level == CompLevel_none) {
     return;
   }
-  // Check if the method can be compiled, if not - try different levels.
+  // Check if the method can be compiled. If it cannot be compiled with C1, continue profiling
+  // in the interpreter and then compile with C2 (the transition function will request that,
+  // see common() ). If the method cannot be compiled with C2 but still can with C1, compile it with
+  // pure C1.
   if (!can_be_compiled(mh, level)) {
-    if (level < CompLevel_full_optimization && can_be_compiled(mh, CompLevel_full_optimization)) {
-      compile(mh, bci, CompLevel_full_optimization, THREAD);
-    }
     if (level == CompLevel_full_optimization && can_be_compiled(mh, CompLevel_simple)) {
         compile(mh, bci, CompLevel_simple, THREAD);
     }
--- a/src/share/vm/runtime/simpleThresholdPolicy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/simpleThresholdPolicy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_HPP
+#define SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_HPP
+
+#include "code/nmethod.hpp"
+#include "oops/methodDataOop.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 class CompileTask;
 class CompileQueue;
 
@@ -105,3 +113,5 @@
   // Initialize: set compiler thread count
   virtual void initialize();
 };
+
+#endif // SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_HPP
--- a/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,8 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_INLINE_HPP
+#define SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_INLINE_HPP
 
 template<CompLevel level>
 bool SimpleThresholdPolicy::call_predicate_helper(int i, int b, double scale) {
@@ -62,3 +64,5 @@
   }
   return false;
 }
+
+#endif // SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_INLINE_HPP
--- a/src/share/vm/runtime/stackValue.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stackValue.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_stackValue.cpp.incl"
+#include "precompiled.hpp"
+#include "code/debugInfo.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/stackValue.hpp"
 
 StackValue* StackValue::create_stack_value(const frame* fr, const RegisterMap* reg_map, ScopeValue* sv) {
   if (sv->is_location()) {
--- a/src/share/vm/runtime/stackValue.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stackValue.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_STACKVALUE_HPP
+#define SHARE_VM_RUNTIME_STACKVALUE_HPP
+
+#include "code/location.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/top.hpp"
+
 class StackValue : public ResourceObj {
  private:
   BasicType _type;
@@ -106,3 +113,5 @@
   void print_on(outputStream* st) const;
 #endif
 };
+
+#endif // SHARE_VM_RUNTIME_STACKVALUE_HPP
--- a/src/share/vm/runtime/stackValueCollection.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stackValueCollection.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_stackValueCollection.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/stackValueCollection.hpp"
+#ifdef TARGET_ARCH_x86
+# include "jniTypes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "jniTypes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "jniTypes_zero.hpp"
+#endif
 
 jint StackValueCollection::int_at(int slot) const {
   intptr_t val =  at(slot)->get_int();
--- a/src/share/vm/runtime/stackValueCollection.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stackValueCollection.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_STACKVALUECOLLECTION_HPP
+#define SHARE_VM_RUNTIME_STACKVALUECOLLECTION_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/stackValue.hpp"
+#include "utilities/growableArray.hpp"
+
 class StackValueCollection : public ResourceObj {
  private:
   GrowableArray<StackValue*>* _values;
@@ -51,3 +58,5 @@
 
   void print();
 };
+
+#endif // SHARE_VM_RUNTIME_STACKVALUECOLLECTION_HPP
--- a/src/share/vm/runtime/statSampler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/statSampler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,26 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_statSampler.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/os.hpp"
+#include "runtime/statSampler.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vm_version_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vm_version_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vm_version_zero.hpp"
+#endif
 
 // --------------------------------------------------------
 // StatSamplerTask
--- a/src/share/vm/runtime/statSampler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/statSampler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_STATSAMPLER_HPP
+#define SHARE_VM_RUNTIME_STATSAMPLER_HPP
+
+#include "runtime/perfData.hpp"
+#include "runtime/task.hpp"
+
 class StatSamplerTask;
 
 /*
@@ -60,3 +66,5 @@
 };
 
 void statSampler_exit();
+
+#endif // SHARE_VM_RUNTIME_STATSAMPLER_HPP
--- a/src/share/vm/runtime/stubCodeGenerator.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stubCodeGenerator.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubCodeGenerator.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/disassembler.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/forte.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#ifdef TARGET_ARCH_x86
+# include "assembler_x86.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "assembler_sparc.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "assembler_zero.inline.hpp"
+#endif
 
 
 // Implementation of StubCodeDesc
--- a/src/share/vm/runtime/stubCodeGenerator.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stubCodeGenerator.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_STUBCODEGENERATOR_HPP
+#define SHARE_VM_RUNTIME_STUBCODEGENERATOR_HPP
+
+#include "asm/assembler.hpp"
+#include "memory/allocation.hpp"
+
 // All the basic framework for stubcode generation/debugging/printing.
 
 
@@ -119,3 +125,5 @@
   ~StubCodeMark();
 
 };
+
+#endif // SHARE_VM_RUNTIME_STUBCODEGENERATOR_HPP
--- a/src/share/vm/runtime/stubRoutines.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stubRoutines.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_stubRoutines.cpp.incl"
+#include "precompiled.hpp"
+#include "asm/codeBuffer.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/copy.hpp"
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 
 // Implementation of StubRoutines - for a description
--- a/src/share/vm/runtime/stubRoutines.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/stubRoutines.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,25 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_STUBROUTINES_HPP
+#define SHARE_VM_RUNTIME_STUBROUTINES_HPP
+
+#include "code/codeBlob.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "utilities/top.hpp"
+#ifdef TARGET_ARCH_x86
+# include "nativeInst_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "nativeInst_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "nativeInst_zero.hpp"
+#endif
+
 // StubRoutines provides entry points to assembly routines used by
 // compiled code and the run-time system. Platform-specific entry
 // points are defined in the platform-specific inner class.
@@ -74,7 +93,19 @@
 
   // Dependencies
   friend class StubGenerator;
-  #include "incls/_stubRoutines_pd.hpp.incl"               // machine-specific parts
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "stubRoutines_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "stubRoutines_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "stubRoutines_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "stubRoutines_zero.hpp"
+#endif
+
 
   static jint    _verify_oop_count;
   static address _verify_oop_subroutine_entry;
@@ -321,3 +352,5 @@
   static void arrayof_jlong_copy (HeapWord* src, HeapWord* dest, size_t count);
   static void arrayof_oop_copy   (HeapWord* src, HeapWord* dest, size_t count);
 };
+
+#endif // SHARE_VM_RUNTIME_STUBROUTINES_HPP
--- a/src/share/vm/runtime/sweeper.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/sweeper.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_sweeper.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeCache.hpp"
+#include "code/nmethod.hpp"
+#include "compiler/compileBroker.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/atomic.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/sweeper.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/events.hpp"
+#include "utilities/xmlstream.hpp"
 
 long      NMethodSweeper::_traversals = 0;   // No. of stack traversals performed
 nmethod*  NMethodSweeper::_current = NULL;   // Current nmethod
--- a/src/share/vm/runtime/sweeper.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/sweeper.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_SWEEPER_HPP
+#define SHARE_VM_RUNTIME_SWEEPER_HPP
+
 // An NmethodSweeper is an incremental cleaner for:
 //    - cleanup inline caches
 //    - reclamation of unreferences zombie nmethods
@@ -71,3 +74,5 @@
   static void set_was_full(bool state) { _was_full = state; }
   static bool was_full() { return _was_full; }
 };
+
+#endif // SHARE_VM_RUNTIME_SWEEPER_HPP
--- a/src/share/vm/runtime/synchronizer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/synchronizer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,35 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_synchronizer.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/markOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/objectMonitor.inline.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/events.hpp"
+#include "utilities/preserveException.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 #if defined(__GNUC__) && !defined(IA64)
   // Need to inhibit inlining for older versions of GCC to avoid build-time failures
@@ -32,15 +59,12 @@
   #define ATTR
 #endif
 
-// Native markword accessors for synchronization and hashCode().
-//
 // The "core" versions of monitor enter and exit reside in this file.
 // The interpreter and compilers contain specialized transliterated
 // variants of the enter-exit fast-path operations.  See i486.ad fast_lock(),
 // for instance.  If you make changes here, make sure to modify the
 // interpreter, and both C1 and C2 fast-path inline locking code emission.
 //
-// TODO: merge the objectMonitor and synchronizer classes.
 //
 // -----------------------------------------------------------------------------
 
@@ -53,16 +77,6 @@
   jlong, uintptr_t, char*, int, long);
 HS_DTRACE_PROBE_DECL4(hotspot, monitor__waited,
   jlong, uintptr_t, char*, int);
-HS_DTRACE_PROBE_DECL4(hotspot, monitor__notify,
-  jlong, uintptr_t, char*, int);
-HS_DTRACE_PROBE_DECL4(hotspot, monitor__notifyAll,
-  jlong, uintptr_t, char*, int);
-HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__enter,
-  jlong, uintptr_t, char*, int);
-HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__entered,
-  jlong, uintptr_t, char*, int);
-HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__exit,
-  jlong, uintptr_t, char*, int);
 
 #define DTRACE_MONITOR_PROBE_COMMON(klassOop, thread)                      \
   char* bytes = NULL;                                                      \
@@ -99,61 +113,300 @@
 
 #endif // ndef DTRACE_ENABLED
 
-// ObjectWaiter serves as a "proxy" or surrogate thread.
-// TODO-FIXME: Eliminate ObjectWaiter and use the thread-specific
-// ParkEvent instead.  Beware, however, that the JVMTI code
-// knows about ObjectWaiters, so we'll have to reconcile that code.
-// See next_waiter(), first_waiter(), etc.
+// This exists only as a workaround of dtrace bug 6254741
+int dtrace_waited_probe(ObjectMonitor* monitor, Handle obj, Thread* thr) {
+  DTRACE_MONITOR_PROBE(waited, monitor, obj(), thr);
+  return 0;
+}
+
+#define NINFLATIONLOCKS 256
+static volatile intptr_t InflationLocks [NINFLATIONLOCKS] ;
+
+ObjectMonitor * ObjectSynchronizer::gBlockList = NULL ;
+ObjectMonitor * volatile ObjectSynchronizer::gFreeList  = NULL ;
+ObjectMonitor * volatile ObjectSynchronizer::gOmInUseList  = NULL ;
+int ObjectSynchronizer::gOmInUseCount = 0;
+static volatile intptr_t ListLock = 0 ;      // protects global monitor free-list cache
+static volatile int MonitorFreeCount  = 0 ;      // # on gFreeList
+static volatile int MonitorPopulation = 0 ;      // # Extant -- in circulation
+#define CHAINMARKER ((oop)-1)
+
+// -----------------------------------------------------------------------------
+//  Fast Monitor Enter/Exit
+// This the fast monitor enter. The interpreter and compiler use
+// some assembly copies of this code. Make sure update those code
+// if the following function is changed. The implementation is
+// extremely sensitive to race condition. Be careful.
+
+void ObjectSynchronizer::fast_enter(Handle obj, BasicLock* lock, bool attempt_rebias, TRAPS) {
+ if (UseBiasedLocking) {
+    if (!SafepointSynchronize::is_at_safepoint()) {
+      BiasedLocking::Condition cond = BiasedLocking::revoke_and_rebias(obj, attempt_rebias, THREAD);
+      if (cond == BiasedLocking::BIAS_REVOKED_AND_REBIASED) {
+        return;
+      }
+    } else {
+      assert(!attempt_rebias, "can not rebias toward VM thread");
+      BiasedLocking::revoke_at_safepoint(obj);
+    }
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+ }
+
+ slow_enter (obj, lock, THREAD) ;
+}
+
+void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) {
+  assert(!object->mark()->has_bias_pattern(), "should not see bias pattern here");
+  // if displaced header is null, the previous enter is recursive enter, no-op
+  markOop dhw = lock->displaced_header();
+  markOop mark ;
+  if (dhw == NULL) {
+     // Recursive stack-lock.
+     // Diagnostics -- Could be: stack-locked, inflating, inflated.
+     mark = object->mark() ;
+     assert (!mark->is_neutral(), "invariant") ;
+     if (mark->has_locker() && mark != markOopDesc::INFLATING()) {
+        assert(THREAD->is_lock_owned((address)mark->locker()), "invariant") ;
+     }
+     if (mark->has_monitor()) {
+        ObjectMonitor * m = mark->monitor() ;
+        assert(((oop)(m->object()))->mark() == mark, "invariant") ;
+        assert(m->is_entered(THREAD), "invariant") ;
+     }
+     return ;
+  }
+
+  mark = object->mark() ;
 
-class ObjectWaiter : public StackObj {
- public:
-  enum TStates { TS_UNDEF, TS_READY, TS_RUN, TS_WAIT, TS_ENTER, TS_CXQ } ;
-  enum Sorted  { PREPEND, APPEND, SORTED } ;
-  ObjectWaiter * volatile _next;
-  ObjectWaiter * volatile _prev;
-  Thread*       _thread;
-  ParkEvent *   _event;
-  volatile int  _notified ;
-  volatile TStates TState ;
-  Sorted        _Sorted ;           // List placement disposition
-  bool          _active ;           // Contention monitoring is enabled
- public:
-  ObjectWaiter(Thread* thread) {
-    _next     = NULL;
-    _prev     = NULL;
-    _notified = 0;
-    TState    = TS_RUN ;
-    _thread   = thread;
-    _event    = thread->_ParkEvent ;
-    _active   = false;
-    assert (_event != NULL, "invariant") ;
+  // If the object is stack-locked by the current thread, try to
+  // swing the displaced header from the box back to the mark.
+  if (mark == (markOop) lock) {
+     assert (dhw->is_neutral(), "invariant") ;
+     if ((markOop) Atomic::cmpxchg_ptr (dhw, object->mark_addr(), mark) == mark) {
+        TEVENT (fast_exit: release stacklock) ;
+        return;
+     }
+  }
+
+  ObjectSynchronizer::inflate(THREAD, object)->exit (THREAD) ;
+}
+
+// -----------------------------------------------------------------------------
+// Interpreter/Compiler Slow Case
+// This routine is used to handle interpreter/compiler slow case
+// We don't need to use fast path here, because it must have been
+// failed in the interpreter/compiler code.
+void ObjectSynchronizer::slow_enter(Handle obj, BasicLock* lock, TRAPS) {
+  markOop mark = obj->mark();
+  assert(!mark->has_bias_pattern(), "should not see bias pattern here");
+
+  if (mark->is_neutral()) {
+    // Anticipate successful CAS -- the ST of the displaced mark must
+    // be visible <= the ST performed by the CAS.
+    lock->set_displaced_header(mark);
+    if (mark == (markOop) Atomic::cmpxchg_ptr(lock, obj()->mark_addr(), mark)) {
+      TEVENT (slow_enter: release stacklock) ;
+      return ;
+    }
+    // Fall through to inflate() ...
+  } else
+  if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) {
+    assert(lock != mark->locker(), "must not re-lock the same lock");
+    assert(lock != (BasicLock*)obj->mark(), "don't relock with same BasicLock");
+    lock->set_displaced_header(NULL);
+    return;
+  }
+
+#if 0
+  // The following optimization isn't particularly useful.
+  if (mark->has_monitor() && mark->monitor()->is_entered(THREAD)) {
+    lock->set_displaced_header (NULL) ;
+    return ;
+  }
+#endif
+
+  // The object header will never be displaced to this lock,
+  // so it does not matter what the value is, except that it
+  // must be non-zero to avoid looking like a re-entrant lock,
+  // and must not look locked either.
+  lock->set_displaced_header(markOopDesc::unused_mark());
+  ObjectSynchronizer::inflate(THREAD, obj())->enter(THREAD);
+}
+
+// This routine is used to handle interpreter/compiler slow case
+// We don't need to use fast path here, because it must have
+// failed in the interpreter/compiler code. Simply use the heavy
+// weight monitor should be ok, unless someone find otherwise.
+void ObjectSynchronizer::slow_exit(oop object, BasicLock* lock, TRAPS) {
+  fast_exit (object, lock, THREAD) ;
+}
+
+// -----------------------------------------------------------------------------
+// Class Loader  support to workaround deadlocks on the class loader lock objects
+// Also used by GC
+// complete_exit()/reenter() are used to wait on a nested lock
+// i.e. to give up an outer lock completely and then re-enter
+// Used when holding nested locks - lock acquisition order: lock1 then lock2
+//  1) complete_exit lock1 - saving recursion count
+//  2) wait on lock2
+//  3) when notified on lock2, unlock lock2
+//  4) reenter lock1 with original recursion count
+//  5) lock lock2
+// NOTE: must use heavy weight monitor to handle complete_exit/reenter()
+intptr_t ObjectSynchronizer::complete_exit(Handle obj, TRAPS) {
+  TEVENT (complete_exit) ;
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
   }
 
-  void wait_reenter_begin(ObjectMonitor *mon) {
-    JavaThread *jt = (JavaThread *)this->_thread;
-    _active = JavaThreadBlockedOnMonitorEnterState::wait_reenter_begin(jt, mon);
+  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj());
+
+  return monitor->complete_exit(THREAD);
+}
+
+// NOTE: must use heavy weight monitor to handle complete_exit/reenter()
+void ObjectSynchronizer::reenter(Handle obj, intptr_t recursion, TRAPS) {
+  TEVENT (reenter) ;
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
+
+  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj());
+
+  monitor->reenter(recursion, THREAD);
+}
+// -----------------------------------------------------------------------------
+// JNI locks on java objects
+// NOTE: must use heavy weight monitor to handle jni monitor enter
+void ObjectSynchronizer::jni_enter(Handle obj, TRAPS) { // possible entry from jni enter
+  // the current locking is from JNI instead of Java code
+  TEVENT (jni_enter) ;
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
+  THREAD->set_current_pending_monitor_is_from_java(false);
+  ObjectSynchronizer::inflate(THREAD, obj())->enter(THREAD);
+  THREAD->set_current_pending_monitor_is_from_java(true);
+}
+
+// NOTE: must use heavy weight monitor to handle jni monitor enter
+bool ObjectSynchronizer::jni_try_enter(Handle obj, Thread* THREAD) {
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
   }
 
-  void wait_reenter_end(ObjectMonitor *mon) {
-    JavaThread *jt = (JavaThread *)this->_thread;
-    JavaThreadBlockedOnMonitorEnterState::wait_reenter_end(jt, _active);
+  ObjectMonitor* monitor = ObjectSynchronizer::inflate_helper(obj());
+  return monitor->try_enter(THREAD);
+}
+
+
+// NOTE: must use heavy weight monitor to handle jni monitor exit
+void ObjectSynchronizer::jni_exit(oop obj, Thread* THREAD) {
+  TEVENT (jni_exit) ;
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+  }
+  assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+
+  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj);
+  // If this thread has locked the object, exit the monitor.  Note:  can't use
+  // monitor->check(CHECK); must exit even if an exception is pending.
+  if (monitor->check(THREAD)) {
+     monitor->exit(THREAD);
   }
-};
+}
+
+// -----------------------------------------------------------------------------
+// Internal VM locks on java objects
+// standard constructor, allows locking failures
+ObjectLocker::ObjectLocker(Handle obj, Thread* thread, bool doLock) {
+  _dolock = doLock;
+  _thread = thread;
+  debug_only(if (StrictSafepointChecks) _thread->check_for_valid_safepoint_state(false);)
+  _obj = obj;
 
-enum ManifestConstants {
-    ClearResponsibleAtSTW   = 0,
-    MaximumRecheckInterval  = 1000
-} ;
+  if (_dolock) {
+    TEVENT (ObjectLocker) ;
+
+    ObjectSynchronizer::fast_enter(_obj, &_lock, false, _thread);
+  }
+}
+
+ObjectLocker::~ObjectLocker() {
+  if (_dolock) {
+    ObjectSynchronizer::fast_exit(_obj(), &_lock, _thread);
+  }
+}
 
 
-#undef TEVENT
-#define TEVENT(nom) {if (SyncVerbose) FEVENT(nom); }
+// -----------------------------------------------------------------------------
+//  Wait/Notify/NotifyAll
+// NOTE: must use heavy weight monitor to handle wait()
+void ObjectSynchronizer::wait(Handle obj, jlong millis, TRAPS) {
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
+  if (millis < 0) {
+    TEVENT (wait - throw IAX) ;
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "timeout value is negative");
+  }
+  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj());
+  DTRACE_MONITOR_WAIT_PROBE(monitor, obj(), THREAD, millis);
+  monitor->wait(millis, true, THREAD);
+
+  /* This dummy call is in place to get around dtrace bug 6254741.  Once
+     that's fixed we can uncomment the following line and remove the call */
+  // DTRACE_MONITOR_PROBE(waited, monitor, obj(), THREAD);
+  dtrace_waited_probe(monitor, obj, THREAD);
+}
 
-#define FEVENT(nom) { static volatile int ctr = 0 ; int v = ++ctr ; if ((v & (v-1)) == 0) { ::printf (#nom " : %d \n", v); ::fflush(stdout); }}
+void ObjectSynchronizer::waitUninterruptibly (Handle obj, jlong millis, TRAPS) {
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
+  if (millis < 0) {
+    TEVENT (wait - throw IAX) ;
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "timeout value is negative");
+  }
+  ObjectSynchronizer::inflate(THREAD, obj()) -> wait(millis, false, THREAD) ;
+}
+
+void ObjectSynchronizer::notify(Handle obj, TRAPS) {
+ if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
 
-#undef  TEVENT
-#define TEVENT(nom) {;}
+  markOop mark = obj->mark();
+  if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) {
+    return;
+  }
+  ObjectSynchronizer::inflate(THREAD, obj())->notify(THREAD);
+}
 
+// NOTE: see comment of notify()
+void ObjectSynchronizer::notifyall(Handle obj, TRAPS) {
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
+    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
+
+  markOop mark = obj->mark();
+  if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) {
+    return;
+  }
+  ObjectSynchronizer::inflate(THREAD, obj())->notifyAll(THREAD);
+}
+
+// -----------------------------------------------------------------------------
+// Hash Code handling
+//
 // Performance concern:
 // OrderAccess::storestore() calls release() which STs 0 into the global volatile
 // OrderAccess::Dummy variable.  This store is unnecessary for correctness.
@@ -188,44 +441,73 @@
 static int MonitorScavengeThreshold = 1000000 ;
 static volatile int ForceMonitorScavenge = 0 ; // Scavenge required and pending
 
-
-// Tunables ...
-// The knob* variables are effectively final.  Once set they should
-// never be modified hence.  Consider using __read_mostly with GCC.
+static markOop ReadStableMark (oop obj) {
+  markOop mark = obj->mark() ;
+  if (!mark->is_being_inflated()) {
+    return mark ;       // normal fast-path return
+  }
 
-static int Knob_LogSpins           = 0 ;       // enable jvmstat tally for spins
-static int Knob_HandOff            = 0 ;
-static int Knob_Verbose            = 0 ;
-static int Knob_ReportSettings     = 0 ;
+  int its = 0 ;
+  for (;;) {
+    markOop mark = obj->mark() ;
+    if (!mark->is_being_inflated()) {
+      return mark ;    // normal fast-path return
+    }
+
+    // The object is being inflated by some other thread.
+    // The caller of ReadStableMark() must wait for inflation to complete.
+    // Avoid live-lock
+    // TODO: consider calling SafepointSynchronize::do_call_back() while
+    // spinning to see if there's a safepoint pending.  If so, immediately
+    // yielding or blocking would be appropriate.  Avoid spinning while
+    // there is a safepoint pending.
+    // TODO: add inflation contention performance counters.
+    // TODO: restrict the aggregate number of spinners.
 
-static int Knob_SpinLimit          = 5000 ;    // derived by an external tool -
-static int Knob_SpinBase           = 0 ;       // Floor AKA SpinMin
-static int Knob_SpinBackOff        = 0 ;       // spin-loop backoff
-static int Knob_CASPenalty         = -1 ;      // Penalty for failed CAS
-static int Knob_OXPenalty          = -1 ;      // Penalty for observed _owner change
-static int Knob_SpinSetSucc        = 1 ;       // spinners set the _succ field
-static int Knob_SpinEarly          = 1 ;
-static int Knob_SuccEnabled        = 1 ;       // futile wake throttling
-static int Knob_SuccRestrict       = 0 ;       // Limit successors + spinners to at-most-one
-static int Knob_MaxSpinners        = -1 ;      // Should be a function of # CPUs
-static int Knob_Bonus              = 100 ;     // spin success bonus
-static int Knob_BonusB             = 100 ;     // spin success bonus
-static int Knob_Penalty            = 200 ;     // spin failure penalty
-static int Knob_Poverty            = 1000 ;
-static int Knob_SpinAfterFutile    = 1 ;       // Spin after returning from park()
-static int Knob_FixedSpin          = 0 ;
-static int Knob_OState             = 3 ;       // Spinner checks thread state of _owner
-static int Knob_UsePause           = 1 ;
-static int Knob_ExitPolicy         = 0 ;
-static int Knob_PreSpin            = 10 ;      // 20-100 likely better
-static int Knob_ResetEvent         = 0 ;
-static int BackOffMask             = 0 ;
-
-static int Knob_FastHSSEC          = 0 ;
-static int Knob_MoveNotifyee       = 2 ;       // notify() - disposition of notifyee
-static int Knob_QMode              = 0 ;       // EntryList-cxq policy - queue discipline
-static volatile int InitDone       = 0 ;
-
+    ++its ;
+    if (its > 10000 || !os::is_MP()) {
+       if (its & 1) {
+         os::NakedYield() ;
+         TEVENT (Inflate: INFLATING - yield) ;
+       } else {
+         // Note that the following code attenuates the livelock problem but is not
+         // a complete remedy.  A more complete solution would require that the inflating
+         // thread hold the associated inflation lock.  The following code simply restricts
+         // the number of spinners to at most one.  We'll have N-2 threads blocked
+         // on the inflationlock, 1 thread holding the inflation lock and using
+         // a yield/park strategy, and 1 thread in the midst of inflation.
+         // A more refined approach would be to change the encoding of INFLATING
+         // to allow encapsulation of a native thread pointer.  Threads waiting for
+         // inflation to complete would use CAS to push themselves onto a singly linked
+         // list rooted at the markword.  Once enqueued, they'd loop, checking a per-thread flag
+         // and calling park().  When inflation was complete the thread that accomplished inflation
+         // would detach the list and set the markword to inflated with a single CAS and
+         // then for each thread on the list, set the flag and unpark() the thread.
+         // This is conceptually similar to muxAcquire-muxRelease, except that muxRelease
+         // wakes at most one thread whereas we need to wake the entire list.
+         int ix = (intptr_t(obj) >> 5) & (NINFLATIONLOCKS-1) ;
+         int YieldThenBlock = 0 ;
+         assert (ix >= 0 && ix < NINFLATIONLOCKS, "invariant") ;
+         assert ((NINFLATIONLOCKS & (NINFLATIONLOCKS-1)) == 0, "invariant") ;
+         Thread::muxAcquire (InflationLocks + ix, "InflationLock") ;
+         while (obj->mark() == markOopDesc::INFLATING()) {
+           // Beware: NakedYield() is advisory and has almost no effect on some platforms
+           // so we periodically call Self->_ParkEvent->park(1).
+           // We use a mixed spin/yield/block mechanism.
+           if ((YieldThenBlock++) >= 16) {
+              Thread::current()->_ParkEvent->park(1) ;
+           } else {
+              os::NakedYield() ;
+           }
+         }
+         Thread::muxRelease (InflationLocks + ix ) ;
+         TEVENT (Inflate: INFLATING - yield/park) ;
+       }
+    } else {
+       SpinPause() ;       // SMP-polite spinning
+    }
+  }
+}
 
 // hashCode() generation :
 //
@@ -290,416 +572,272 @@
   TEVENT (hashCode: GENERATE) ;
   return value;
 }
+//
+intptr_t ObjectSynchronizer::FastHashCode (Thread * Self, oop obj) {
+  if (UseBiasedLocking) {
+    // NOTE: many places throughout the JVM do not expect a safepoint
+    // to be taken here, in particular most operations on perm gen
+    // objects. However, we only ever bias Java instances and all of
+    // the call sites of identity_hash that might revoke biases have
+    // been checked to make sure they can handle a safepoint. The
+    // added check of the bias pattern is to avoid useless calls to
+    // thread-local storage.
+    if (obj->mark()->has_bias_pattern()) {
+      // Box and unbox the raw reference just in case we cause a STW safepoint.
+      Handle hobj (Self, obj) ;
+      // Relaxing assertion for bug 6320749.
+      assert (Universe::verify_in_progress() ||
+              !SafepointSynchronize::is_at_safepoint(),
+             "biases should not be seen by VM thread here");
+      BiasedLocking::revoke_and_rebias(hobj, false, JavaThread::current());
+      obj = hobj() ;
+      assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+    }
+  }
 
-void BasicLock::print_on(outputStream* st) const {
-  st->print("monitor");
+  // hashCode() is a heap mutator ...
+  // Relaxing assertion for bug 6320749.
+  assert (Universe::verify_in_progress() ||
+          !SafepointSynchronize::is_at_safepoint(), "invariant") ;
+  assert (Universe::verify_in_progress() ||
+          Self->is_Java_thread() , "invariant") ;
+  assert (Universe::verify_in_progress() ||
+         ((JavaThread *)Self)->thread_state() != _thread_blocked, "invariant") ;
+
+  ObjectMonitor* monitor = NULL;
+  markOop temp, test;
+  intptr_t hash;
+  markOop mark = ReadStableMark (obj);
+
+  // object should remain ineligible for biased locking
+  assert (!mark->has_bias_pattern(), "invariant") ;
+
+  if (mark->is_neutral()) {
+    hash = mark->hash();              // this is a normal header
+    if (hash) {                       // if it has hash, just return it
+      return hash;
+    }
+    hash = get_next_hash(Self, obj);  // allocate a new hash code
+    temp = mark->copy_set_hash(hash); // merge the hash code into header
+    // use (machine word version) atomic operation to install the hash
+    test = (markOop) Atomic::cmpxchg_ptr(temp, obj->mark_addr(), mark);
+    if (test == mark) {
+      return hash;
+    }
+    // If atomic operation failed, we must inflate the header
+    // into heavy weight monitor. We could add more code here
+    // for fast path, but it does not worth the complexity.
+  } else if (mark->has_monitor()) {
+    monitor = mark->monitor();
+    temp = monitor->header();
+    assert (temp->is_neutral(), "invariant") ;
+    hash = temp->hash();
+    if (hash) {
+      return hash;
+    }
+    // Skip to the following code to reduce code size
+  } else if (Self->is_lock_owned((address)mark->locker())) {
+    temp = mark->displaced_mark_helper(); // this is a lightweight monitor owned
+    assert (temp->is_neutral(), "invariant") ;
+    hash = temp->hash();              // by current thread, check if the displaced
+    if (hash) {                       // header contains hash code
+      return hash;
+    }
+    // WARNING:
+    //   The displaced header is strictly immutable.
+    // It can NOT be changed in ANY cases. So we have
+    // to inflate the header into heavyweight monitor
+    // even the current thread owns the lock. The reason
+    // is the BasicLock (stack slot) will be asynchronously
+    // read by other threads during the inflate() function.
+    // Any change to stack may not propagate to other threads
+    // correctly.
+  }
+
+  // Inflate the monitor to set hash code
+  monitor = ObjectSynchronizer::inflate(Self, obj);
+  // Load displaced header and check it has hash code
+  mark = monitor->header();
+  assert (mark->is_neutral(), "invariant") ;
+  hash = mark->hash();
+  if (hash == 0) {
+    hash = get_next_hash(Self, obj);
+    temp = mark->copy_set_hash(hash); // merge hash code into header
+    assert (temp->is_neutral(), "invariant") ;
+    test = (markOop) Atomic::cmpxchg_ptr(temp, monitor, mark);
+    if (test != mark) {
+      // The only update to the header in the monitor (outside GC)
+      // is install the hash code. If someone add new usage of
+      // displaced header, please update this code
+      hash = test->hash();
+      assert (test->is_neutral(), "invariant") ;
+      assert (hash != 0, "Trivial unexpected object/monitor header usage.");
+    }
+  }
+  // We finally get the hash
+  return hash;
 }
 
-void BasicLock::move_to(oop obj, BasicLock* dest) {
-  // Check to see if we need to inflate the lock. This is only needed
-  // if an object is locked using "this" lightweight monitor. In that
-  // case, the displaced_header() is unlocked, because the
-  // displaced_header() contains the header for the originally unlocked
-  // object. However the object could have already been inflated. But it
-  // does not matter, the inflation will just a no-op. For other cases,
-  // the displaced header will be either 0x0 or 0x3, which are location
-  // independent, therefore the BasicLock is free to move.
-  //
-  // During OSR we may need to relocate a BasicLock (which contains a
-  // displaced word) from a location in an interpreter frame to a
-  // new location in a compiled frame.  "this" refers to the source
-  // basiclock in the interpreter frame.  "dest" refers to the destination
-  // basiclock in the new compiled frame.  We *always* inflate in move_to().
-  // The always-Inflate policy works properly, but in 1.5.0 it can sometimes
-  // cause performance problems in code that makes heavy use of a small # of
-  // uncontended locks.   (We'd inflate during OSR, and then sync performance
-  // would subsequently plummet because the thread would be forced thru the slow-path).
-  // This problem has been made largely moot on IA32 by inlining the inflated fast-path
-  // operations in Fast_Lock and Fast_Unlock in i486.ad.
-  //
-  // Note that there is a way to safely swing the object's markword from
-  // one stack location to another.  This avoids inflation.  Obviously,
-  // we need to ensure that both locations refer to the current thread's stack.
-  // There are some subtle concurrency issues, however, and since the benefit is
-  // is small (given the support for inflated fast-path locking in the fast_lock, etc)
-  // we'll leave that optimization for another time.
+// Deprecated -- use FastHashCode() instead.
 
-  if (displaced_header()->is_neutral()) {
-    ObjectSynchronizer::inflate_helper(obj);
-    // WARNING: We can not put check here, because the inflation
-    // will not update the displaced header. Once BasicLock is inflated,
-    // no one should ever look at its content.
-  } else {
-    // Typically the displaced header will be 0 (recursive stack lock) or
-    // unused_mark.  Naively we'd like to assert that the displaced mark
-    // value is either 0, neutral, or 3.  But with the advent of the
-    // store-before-CAS avoidance in fast_lock/compiler_lock_object
-    // we can find any flavor mark in the displaced mark.
-  }
-// [RGV] The next line appears to do nothing!
-  intptr_t dh = (intptr_t) displaced_header();
-  dest->set_displaced_header(displaced_header());
+intptr_t ObjectSynchronizer::identity_hash_value_for(Handle obj) {
+  return FastHashCode (Thread::current(), obj()) ;
 }
 
-// -----------------------------------------------------------------------------
 
-// standard constructor, allows locking failures
-ObjectLocker::ObjectLocker(Handle obj, Thread* thread, bool doLock) {
-  _dolock = doLock;
-  _thread = thread;
-  debug_only(if (StrictSafepointChecks) _thread->check_for_valid_safepoint_state(false);)
-  _obj = obj;
+bool ObjectSynchronizer::current_thread_holds_lock(JavaThread* thread,
+                                                   Handle h_obj) {
+  if (UseBiasedLocking) {
+    BiasedLocking::revoke_and_rebias(h_obj, false, thread);
+    assert(!h_obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
+
+  assert(thread == JavaThread::current(), "Can only be called on current thread");
+  oop obj = h_obj();
+
+  markOop mark = ReadStableMark (obj) ;
 
-  if (_dolock) {
-    TEVENT (ObjectLocker) ;
-
-    ObjectSynchronizer::fast_enter(_obj, &_lock, false, _thread);
+  // Uncontended case, header points to stack
+  if (mark->has_locker()) {
+    return thread->is_lock_owned((address)mark->locker());
   }
-}
-
-ObjectLocker::~ObjectLocker() {
-  if (_dolock) {
-    ObjectSynchronizer::fast_exit(_obj(), &_lock, _thread);
+  // Contended case, header points to ObjectMonitor (tagged pointer)
+  if (mark->has_monitor()) {
+    ObjectMonitor* monitor = mark->monitor();
+    return monitor->is_entered(thread) != 0 ;
   }
+  // Unlocked case, header in place
+  assert(mark->is_neutral(), "sanity check");
+  return false;
 }
 
-// -----------------------------------------------------------------------------
+// Be aware of this method could revoke bias of the lock object.
+// This method querys the ownership of the lock handle specified by 'h_obj'.
+// If the current thread owns the lock, it returns owner_self. If no
+// thread owns the lock, it returns owner_none. Otherwise, it will return
+// ower_other.
+ObjectSynchronizer::LockOwnership ObjectSynchronizer::query_lock_ownership
+(JavaThread *self, Handle h_obj) {
+  // The caller must beware this method can revoke bias, and
+  // revocation can result in a safepoint.
+  assert (!SafepointSynchronize::is_at_safepoint(), "invariant") ;
+  assert (self->thread_state() != _thread_blocked , "invariant") ;
 
+  // Possible mark states: neutral, biased, stack-locked, inflated
+
+  if (UseBiasedLocking && h_obj()->mark()->has_bias_pattern()) {
+    // CASE: biased
+    BiasedLocking::revoke_and_rebias(h_obj, false, self);
+    assert(!h_obj->mark()->has_bias_pattern(),
+           "biases should be revoked by now");
+  }
 
-PerfCounter * ObjectSynchronizer::_sync_Inflations                  = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_Deflations                  = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_ContendedLockAttempts       = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_FutileWakeups               = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_Parks                       = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_EmptyNotifications          = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_Notifications               = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_PrivateA                    = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_PrivateB                    = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_SlowExit                    = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_SlowEnter                   = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_SlowNotify                  = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_SlowNotifyAll               = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_FailedSpins                 = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_SuccessfulSpins             = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_MonInCirculation            = NULL ;
-PerfCounter * ObjectSynchronizer::_sync_MonScavenged                = NULL ;
-PerfLongVariable * ObjectSynchronizer::_sync_MonExtant              = NULL ;
+  assert(self == JavaThread::current(), "Can only be called on current thread");
+  oop obj = h_obj();
+  markOop mark = ReadStableMark (obj) ;
+
+  // CASE: stack-locked.  Mark points to a BasicLock on the owner's stack.
+  if (mark->has_locker()) {
+    return self->is_lock_owned((address)mark->locker()) ?
+      owner_self : owner_other;
+  }
 
-// One-shot global initialization for the sync subsystem.
-// We could also defer initialization and initialize on-demand
-// the first time we call inflate().  Initialization would
-// be protected - like so many things - by the MonitorCache_lock.
+  // CASE: inflated. Mark (tagged pointer) points to an objectMonitor.
+  // The Object:ObjectMonitor relationship is stable as long as we're
+  // not at a safepoint.
+  if (mark->has_monitor()) {
+    void * owner = mark->monitor()->_owner ;
+    if (owner == NULL) return owner_none ;
+    return (owner == self ||
+            self->is_lock_owned((address)owner)) ? owner_self : owner_other;
+  }
+
+  // CASE: neutral
+  assert(mark->is_neutral(), "sanity check");
+  return owner_none ;           // it's unlocked
+}
 
-void ObjectSynchronizer::Initialize () {
-  static int InitializationCompleted = 0 ;
-  assert (InitializationCompleted == 0, "invariant") ;
-  InitializationCompleted = 1 ;
-  if (UsePerfData) {
-      EXCEPTION_MARK ;
-      #define NEWPERFCOUNTER(n)   {n = PerfDataManager::create_counter(SUN_RT, #n, PerfData::U_Events,CHECK); }
-      #define NEWPERFVARIABLE(n)  {n = PerfDataManager::create_variable(SUN_RT, #n, PerfData::U_Events,CHECK); }
-      NEWPERFCOUNTER(_sync_Inflations) ;
-      NEWPERFCOUNTER(_sync_Deflations) ;
-      NEWPERFCOUNTER(_sync_ContendedLockAttempts) ;
-      NEWPERFCOUNTER(_sync_FutileWakeups) ;
-      NEWPERFCOUNTER(_sync_Parks) ;
-      NEWPERFCOUNTER(_sync_EmptyNotifications) ;
-      NEWPERFCOUNTER(_sync_Notifications) ;
-      NEWPERFCOUNTER(_sync_SlowEnter) ;
-      NEWPERFCOUNTER(_sync_SlowExit) ;
-      NEWPERFCOUNTER(_sync_SlowNotify) ;
-      NEWPERFCOUNTER(_sync_SlowNotifyAll) ;
-      NEWPERFCOUNTER(_sync_FailedSpins) ;
-      NEWPERFCOUNTER(_sync_SuccessfulSpins) ;
-      NEWPERFCOUNTER(_sync_PrivateA) ;
-      NEWPERFCOUNTER(_sync_PrivateB) ;
-      NEWPERFCOUNTER(_sync_MonInCirculation) ;
-      NEWPERFCOUNTER(_sync_MonScavenged) ;
-      NEWPERFVARIABLE(_sync_MonExtant) ;
-      #undef NEWPERFCOUNTER
+// FIXME: jvmti should call this
+JavaThread* ObjectSynchronizer::get_lock_owner(Handle h_obj, bool doLock) {
+  if (UseBiasedLocking) {
+    if (SafepointSynchronize::is_at_safepoint()) {
+      BiasedLocking::revoke_at_safepoint(h_obj);
+    } else {
+      BiasedLocking::revoke_and_rebias(h_obj, false, JavaThread::current());
+    }
+    assert(!h_obj->mark()->has_bias_pattern(), "biases should be revoked by now");
+  }
+
+  oop obj = h_obj();
+  address owner = NULL;
+
+  markOop mark = ReadStableMark (obj) ;
+
+  // Uncontended case, header points to stack
+  if (mark->has_locker()) {
+    owner = (address) mark->locker();
+  }
+
+  // Contended case, header points to ObjectMonitor (tagged pointer)
+  if (mark->has_monitor()) {
+    ObjectMonitor* monitor = mark->monitor();
+    assert(monitor != NULL, "monitor should be non-null");
+    owner = (address) monitor->owner();
+  }
+
+  if (owner != NULL) {
+    return Threads::owning_thread_from_monitor_owner(owner, doLock);
+  }
+
+  // Unlocked case, header in place
+  // Cannot have assertion since this object may have been
+  // locked by another thread when reaching here.
+  // assert(mark->is_neutral(), "sanity check");
+
+  return NULL;
+}
+// Visitors ...
+
+void ObjectSynchronizer::monitors_iterate(MonitorClosure* closure) {
+  ObjectMonitor* block = gBlockList;
+  ObjectMonitor* mid;
+  while (block) {
+    assert(block->object() == CHAINMARKER, "must be a block header");
+    for (int i = _BLOCKSIZE - 1; i > 0; i--) {
+      mid = block + i;
+      oop object = (oop) mid->object();
+      if (object != NULL) {
+        closure->do_monitor(mid);
+      }
+    }
+    block = (ObjectMonitor*) block->FreeNext;
   }
 }
 
-// Compile-time asserts
-// When possible, it's better to catch errors deterministically at
-// compile-time than at runtime.  The down-side to using compile-time
-// asserts is that error message -- often something about negative array
-// indices -- is opaque.
-
-#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @" INTPTR_FORMAT "\n", (intptr_t)tag); }
-
-void ObjectMonitor::ctAsserts() {
-  CTASSERT(offset_of (ObjectMonitor, _header) == 0);
-}
-
-static int Adjust (volatile int * adr, int dx) {
-  int v ;
-  for (v = *adr ; Atomic::cmpxchg (v + dx, adr, v) != v; v = *adr) ;
-  return v ;
-}
-
-// Ad-hoc mutual exclusion primitives: SpinLock and Mux
-//
-// We employ SpinLocks _only for low-contention, fixed-length
-// short-duration critical sections where we're concerned
-// about native mutex_t or HotSpot Mutex:: latency.
-// The mux construct provides a spin-then-block mutual exclusion
-// mechanism.
-//
-// Testing has shown that contention on the ListLock guarding gFreeList
-// is common.  If we implement ListLock as a simple SpinLock it's common
-// for the JVM to devolve to yielding with little progress.  This is true
-// despite the fact that the critical sections protected by ListLock are
-// extremely short.
-//
-// TODO-FIXME: ListLock should be of type SpinLock.
-// We should make this a 1st-class type, integrated into the lock
-// hierarchy as leaf-locks.  Critically, the SpinLock structure
-// should have sufficient padding to avoid false-sharing and excessive
-// cache-coherency traffic.
-
-
-typedef volatile int SpinLockT ;
-
-void Thread::SpinAcquire (volatile int * adr, const char * LockName) {
-  if (Atomic::cmpxchg (1, adr, 0) == 0) {
-     return ;   // normal fast-path return
-  }
-
-  // Slow-path : We've encountered contention -- Spin/Yield/Block strategy.
-  TEVENT (SpinAcquire - ctx) ;
-  int ctr = 0 ;
-  int Yields = 0 ;
-  for (;;) {
-     while (*adr != 0) {
-        ++ctr ;
-        if ((ctr & 0xFFF) == 0 || !os::is_MP()) {
-           if (Yields > 5) {
-             // Consider using a simple NakedSleep() instead.
-             // Then SpinAcquire could be called by non-JVM threads
-             Thread::current()->_ParkEvent->park(1) ;
-           } else {
-             os::NakedYield() ;
-             ++Yields ;
-           }
-        } else {
-           SpinPause() ;
-        }
-     }
-     if (Atomic::cmpxchg (1, adr, 0) == 0) return ;
-  }
-}
-
-void Thread::SpinRelease (volatile int * adr) {
-  assert (*adr != 0, "invariant") ;
-  OrderAccess::fence() ;      // guarantee at least release consistency.
-  // Roach-motel semantics.
-  // It's safe if subsequent LDs and STs float "up" into the critical section,
-  // but prior LDs and STs within the critical section can't be allowed
-  // to reorder or float past the ST that releases the lock.
-  *adr = 0 ;
+// Get the next block in the block list.
+static inline ObjectMonitor* next(ObjectMonitor* block) {
+  assert(block->object() == CHAINMARKER, "must be a block header");
+  block = block->FreeNext ;
+  assert(block == NULL || block->object() == CHAINMARKER, "must be a block header");
+  return block;
 }
 
-// muxAcquire and muxRelease:
-//
-// *  muxAcquire and muxRelease support a single-word lock-word construct.
-//    The LSB of the word is set IFF the lock is held.
-//    The remainder of the word points to the head of a singly-linked list
-//    of threads blocked on the lock.
-//
-// *  The current implementation of muxAcquire-muxRelease uses its own
-//    dedicated Thread._MuxEvent instance.  If we're interested in
-//    minimizing the peak number of extant ParkEvent instances then
-//    we could eliminate _MuxEvent and "borrow" _ParkEvent as long
-//    as certain invariants were satisfied.  Specifically, care would need
-//    to be taken with regards to consuming unpark() "permits".
-//    A safe rule of thumb is that a thread would never call muxAcquire()
-//    if it's enqueued (cxq, EntryList, WaitList, etc) and will subsequently
-//    park().  Otherwise the _ParkEvent park() operation in muxAcquire() could
-//    consume an unpark() permit intended for monitorenter, for instance.
-//    One way around this would be to widen the restricted-range semaphore
-//    implemented in park().  Another alternative would be to provide
-//    multiple instances of the PlatformEvent() for each thread.  One
-//    instance would be dedicated to muxAcquire-muxRelease, for instance.
-//
-// *  Usage:
-//    -- Only as leaf locks
-//    -- for short-term locking only as muxAcquire does not perform
-//       thread state transitions.
-//
-// Alternatives:
-// *  We could implement muxAcquire and muxRelease with MCS or CLH locks
-//    but with parking or spin-then-park instead of pure spinning.
-// *  Use Taura-Oyama-Yonenzawa locks.
-// *  It's possible to construct a 1-0 lock if we encode the lockword as
-//    (List,LockByte).  Acquire will CAS the full lockword while Release
-//    will STB 0 into the LockByte.  The 1-0 scheme admits stranding, so
-//    acquiring threads use timers (ParkTimed) to detect and recover from
-//    the stranding window.  Thread/Node structures must be aligned on 256-byte
-//    boundaries by using placement-new.
-// *  Augment MCS with advisory back-link fields maintained with CAS().
-//    Pictorially:  LockWord -> T1 <-> T2 <-> T3 <-> ... <-> Tn <-> Owner.
-//    The validity of the backlinks must be ratified before we trust the value.
-//    If the backlinks are invalid the exiting thread must back-track through the
-//    the forward links, which are always trustworthy.
-// *  Add a successor indication.  The LockWord is currently encoded as
-//    (List, LOCKBIT:1).  We could also add a SUCCBIT or an explicit _succ variable
-//    to provide the usual futile-wakeup optimization.
-//    See RTStt for details.
-// *  Consider schedctl.sc_nopreempt to cover the critical section.
-//
 
-
-typedef volatile intptr_t MutexT ;      // Mux Lock-word
-enum MuxBits { LOCKBIT = 1 } ;
-
-void Thread::muxAcquire (volatile intptr_t * Lock, const char * LockName) {
-  intptr_t w = Atomic::cmpxchg_ptr (LOCKBIT, Lock, 0) ;
-  if (w == 0) return ;
-  if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
-     return ;
-  }
-
-  TEVENT (muxAcquire - Contention) ;
-  ParkEvent * const Self = Thread::current()->_MuxEvent ;
-  assert ((intptr_t(Self) & LOCKBIT) == 0, "invariant") ;
-  for (;;) {
-     int its = (os::is_MP() ? 100 : 0) + 1 ;
-
-     // Optional spin phase: spin-then-park strategy
-     while (--its >= 0) {
-       w = *Lock ;
-       if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
-          return ;
-       }
-     }
-
-     Self->reset() ;
-     Self->OnList = intptr_t(Lock) ;
-     // The following fence() isn't _strictly necessary as the subsequent
-     // CAS() both serializes execution and ratifies the fetched *Lock value.
-     OrderAccess::fence();
-     for (;;) {
-        w = *Lock ;
-        if ((w & LOCKBIT) == 0) {
-            if (Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
-                Self->OnList = 0 ;   // hygiene - allows stronger asserts
-                return ;
-            }
-            continue ;      // Interference -- *Lock changed -- Just retry
-        }
-        assert (w & LOCKBIT, "invariant") ;
-        Self->ListNext = (ParkEvent *) (w & ~LOCKBIT );
-        if (Atomic::cmpxchg_ptr (intptr_t(Self)|LOCKBIT, Lock, w) == w) break ;
-     }
-
-     while (Self->OnList != 0) {
-        Self->park() ;
-     }
-  }
-}
-
-void Thread::muxAcquireW (volatile intptr_t * Lock, ParkEvent * ev) {
-  intptr_t w = Atomic::cmpxchg_ptr (LOCKBIT, Lock, 0) ;
-  if (w == 0) return ;
-  if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
-    return ;
-  }
-
-  TEVENT (muxAcquire - Contention) ;
-  ParkEvent * ReleaseAfter = NULL ;
-  if (ev == NULL) {
-    ev = ReleaseAfter = ParkEvent::Allocate (NULL) ;
-  }
-  assert ((intptr_t(ev) & LOCKBIT) == 0, "invariant") ;
-  for (;;) {
-    guarantee (ev->OnList == 0, "invariant") ;
-    int its = (os::is_MP() ? 100 : 0) + 1 ;
-
-    // Optional spin phase: spin-then-park strategy
-    while (--its >= 0) {
-      w = *Lock ;
-      if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
-        if (ReleaseAfter != NULL) {
-          ParkEvent::Release (ReleaseAfter) ;
-        }
-        return ;
+void ObjectSynchronizer::oops_do(OopClosure* f) {
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
+  for (ObjectMonitor* block = gBlockList; block != NULL; block = next(block)) {
+    assert(block->object() == CHAINMARKER, "must be a block header");
+    for (int i = 1; i < _BLOCKSIZE; i++) {
+      ObjectMonitor* mid = &block[i];
+      if (mid->object() != NULL) {
+        f->do_oop((oop*)mid->object_addr());
       }
     }
-
-    ev->reset() ;
-    ev->OnList = intptr_t(Lock) ;
-    // The following fence() isn't _strictly necessary as the subsequent
-    // CAS() both serializes execution and ratifies the fetched *Lock value.
-    OrderAccess::fence();
-    for (;;) {
-      w = *Lock ;
-      if ((w & LOCKBIT) == 0) {
-        if (Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
-          ev->OnList = 0 ;
-          // We call ::Release while holding the outer lock, thus
-          // artificially lengthening the critical section.
-          // Consider deferring the ::Release() until the subsequent unlock(),
-          // after we've dropped the outer lock.
-          if (ReleaseAfter != NULL) {
-            ParkEvent::Release (ReleaseAfter) ;
-          }
-          return ;
-        }
-        continue ;      // Interference -- *Lock changed -- Just retry
-      }
-      assert (w & LOCKBIT, "invariant") ;
-      ev->ListNext = (ParkEvent *) (w & ~LOCKBIT );
-      if (Atomic::cmpxchg_ptr (intptr_t(ev)|LOCKBIT, Lock, w) == w) break ;
-    }
-
-    while (ev->OnList != 0) {
-      ev->park() ;
-    }
   }
 }
 
-// Release() must extract a successor from the list and then wake that thread.
-// It can "pop" the front of the list or use a detach-modify-reattach (DMR) scheme
-// similar to that used by ParkEvent::Allocate() and ::Release().  DMR-based
-// Release() would :
-// (A) CAS() or swap() null to *Lock, releasing the lock and detaching the list.
-// (B) Extract a successor from the private list "in-hand"
-// (C) attempt to CAS() the residual back into *Lock over null.
-//     If there were any newly arrived threads and the CAS() would fail.
-//     In that case Release() would detach the RATs, re-merge the list in-hand
-//     with the RATs and repeat as needed.  Alternately, Release() might
-//     detach and extract a successor, but then pass the residual list to the wakee.
-//     The wakee would be responsible for reattaching and remerging before it
-//     competed for the lock.
-//
-// Both "pop" and DMR are immune from ABA corruption -- there can be
-// multiple concurrent pushers, but only one popper or detacher.
-// This implementation pops from the head of the list.  This is unfair,
-// but tends to provide excellent throughput as hot threads remain hot.
-// (We wake recently run threads first).
 
-void Thread::muxRelease (volatile intptr_t * Lock)  {
-  for (;;) {
-    const intptr_t w = Atomic::cmpxchg_ptr (0, Lock, LOCKBIT) ;
-    assert (w & LOCKBIT, "invariant") ;
-    if (w == LOCKBIT) return ;
-    ParkEvent * List = (ParkEvent *) (w & ~LOCKBIT) ;
-    assert (List != NULL, "invariant") ;
-    assert (List->OnList == intptr_t(Lock), "invariant") ;
-    ParkEvent * nxt = List->ListNext ;
-
-    // The following CAS() releases the lock and pops the head element.
-    if (Atomic::cmpxchg_ptr (intptr_t(nxt), Lock, w) != w) {
-      continue ;
-    }
-    List->OnList = 0 ;
-    OrderAccess::fence() ;
-    List->unpark () ;
-    return ;
-  }
-}
-
+// -----------------------------------------------------------------------------
 // ObjectMonitor Lifecycle
 // -----------------------
 // Inflation unlinks monitors from the global gFreeList and
@@ -718,41 +856,7 @@
 // --   assigned to an object.  The object is inflated and the mark refers
 //      to the objectmonitor.
 //
-// TODO-FIXME:
-//
-// *  We currently protect the gFreeList with a simple lock.
-//    An alternate lock-free scheme would be to pop elements from the gFreeList
-//    with CAS.  This would be safe from ABA corruption as long we only
-//    recycled previously appearing elements onto the list in deflate_idle_monitors()
-//    at STW-time.  Completely new elements could always be pushed onto the gFreeList
-//    with CAS.  Elements that appeared previously on the list could only
-//    be installed at STW-time.
-//
-// *  For efficiency and to help reduce the store-before-CAS penalty
-//    the objectmonitors on gFreeList or local free lists should be ready to install
-//    with the exception of _header and _object.  _object can be set after inflation.
-//    In particular, keep all objectMonitors on a thread's private list in ready-to-install
-//    state with m.Owner set properly.
-//
-// *  We could all diffuse contention by using multiple global (FreeList, Lock)
-//    pairs -- threads could use trylock() and a cyclic-scan strategy to search for
-//    an unlocked free list.
-//
-// *  Add lifecycle tags and assert()s.
-//
-// *  Be more consistent about when we clear an objectmonitor's fields:
-//    A.  After extracting the objectmonitor from a free list.
-//    B.  After adding an objectmonitor to a free list.
-//
 
-ObjectMonitor * ObjectSynchronizer::gBlockList = NULL ;
-ObjectMonitor * volatile ObjectSynchronizer::gFreeList  = NULL ;
-ObjectMonitor * volatile ObjectSynchronizer::gOmInUseList  = NULL ;
-int ObjectSynchronizer::gOmInUseCount = 0;
-static volatile intptr_t ListLock = 0 ;      // protects global monitor free-list cache
-static volatile int MonitorFreeCount  = 0 ;      // # on gFreeList
-static volatile int MonitorPopulation = 0 ;      // # Extant -- in circulation
-#define CHAINMARKER ((oop)-1)
 
 // Constraining monitor pool growth via MonitorBound ...
 //
@@ -768,41 +872,8 @@
 // we'll incur more safepoints, which are harmful to performance.
 // See also: GuaranteedSafepointInterval
 //
-// As noted elsewhere, the correct long-term solution is to deflate at
-// monitorexit-time, in which case the number of inflated objects is bounded
-// by the number of threads.  That policy obviates the need for scavenging at
-// STW safepoint time.   As an aside, scavenging can be time-consuming when the
-// # of extant monitors is large.   Unfortunately there's a day-1 assumption baked
-// into much HotSpot code that the object::monitor relationship, once established
-// or observed, will remain stable except over potential safepoints.
-//
-// We can use either a blocking synchronous VM operation or an async VM operation.
-// -- If we use a blocking VM operation :
-//    Calls to ScavengeCheck() should be inserted only into 'safe' locations in paths
-//    that lead to ::inflate() or ::omAlloc().
-//    Even though the safepoint will not directly induce GC, a GC might
-//    piggyback on the safepoint operation, so the caller should hold no naked oops.
-//    Furthermore, monitor::object relationships are NOT necessarily stable over this call
-//    unless the caller has made provisions to "pin" the object to the monitor, say
-//    by incrementing the monitor's _count field.
-// -- If we use a non-blocking asynchronous VM operation :
-//    the constraints above don't apply.  The safepoint will fire in the future
-//    at a more convenient time.  On the other hand the latency between posting and
-//    running the safepoint introduces or admits "slop" or laxity during which the
-//    monitor population can climb further above the threshold.  The monitor population,
-//    however, tends to converge asymptotically over time to a count that's slightly
-//    above the target value specified by MonitorBound.   That is, we avoid unbounded
-//    growth, albeit with some imprecision.
-//
 // The current implementation uses asynchronous VM operations.
 //
-// Ideally we'd check if (MonitorPopulation > MonitorBound) in omAlloc()
-// immediately before trying to grow the global list via allocation.
-// If the predicate was true then we'd induce a synchronous safepoint, wait
-// for the safepoint to complete, and then again to allocate from the global
-// free list.  This approach is much simpler and precise, admitting no "slop".
-// Unfortunately we can't safely safepoint in the midst of omAlloc(), so
-// instead we use asynchronous safepoints.
 
 static void InduceScavenge (Thread * Self, const char * Whence) {
   // Induce STW safepoint to trim monitors
@@ -812,7 +883,7 @@
   // TODO: assert thread state is reasonable
 
   if (ForceMonitorScavenge == 0 && Atomic::xchg (1, &ForceMonitorScavenge) == 0) {
-    if (Knob_Verbose) {
+    if (ObjectMonitor::Knob_Verbose) {
       ::printf ("Monitor scavenge - Induced STW @%s (%d)\n", Whence, ForceMonitorScavenge) ;
       ::fflush(stdout) ;
     }
@@ -822,7 +893,7 @@
     // The VMThread will delete the op when completed.
     VMThread::execute (new VM_ForceAsyncSafepoint()) ;
 
-    if (Knob_Verbose) {
+    if (ObjectMonitor::Knob_Verbose) {
       ::printf ("Monitor scavenge - STW posted @%s (%d)\n", Whence, ForceMonitorScavenge) ;
       ::fflush(stdout) ;
     }
@@ -844,7 +915,6 @@
    assert(freetally == Self->omFreeCount, "free count off");
 }
 */
-
 ObjectMonitor * ATTR ObjectSynchronizer::omAlloc (Thread * Self) {
     // A large MAXPRIVATE value reduces both list lock contention
     // and list coherency traffic, but also tends to increase the
@@ -974,12 +1044,6 @@
 // attempt failed.  This doesn't allow unbounded #s of monitors to
 // accumulate on a thread's free list.
 //
-// In the future the usage of omRelease() might change and monitors
-// could migrate between free lists.  In that case to avoid excessive
-// accumulation we could  limit omCount to (omProvision*2), otherwise return
-// the objectMonitor to the global list.  We should drain (return) in reasonable chunks.
-// That is, *not* one-at-a-time.
-
 
 void ObjectSynchronizer::omRelease (Thread * Self, ObjectMonitor * m, bool fromPerThreadAlloc) {
     guarantee (m->object() == NULL, "invariant") ;
@@ -1082,15 +1146,6 @@
     TEVENT (omFlush) ;
 }
 
-
-// Get the next block in the block list.
-static inline ObjectMonitor* next(ObjectMonitor* block) {
-  assert(block->object() == CHAINMARKER, "must be a block header");
-  block = block->FreeNext ;
-  assert(block == NULL || block->object() == CHAINMARKER, "must be a block header");
-  return block;
-}
-
 // Fast path code shared by multiple functions
 ObjectMonitor* ObjectSynchronizer::inflate_helper(oop obj) {
   markOop mark = obj->mark();
@@ -1102,79 +1157,10 @@
   return ObjectSynchronizer::inflate(Thread::current(), obj);
 }
 
+
 // Note that we could encounter some performance loss through false-sharing as
 // multiple locks occupy the same $ line.  Padding might be appropriate.
 
-#define NINFLATIONLOCKS 256
-static volatile intptr_t InflationLocks [NINFLATIONLOCKS] ;
-
-static markOop ReadStableMark (oop obj) {
-  markOop mark = obj->mark() ;
-  if (!mark->is_being_inflated()) {
-    return mark ;       // normal fast-path return
-  }
-
-  int its = 0 ;
-  for (;;) {
-    markOop mark = obj->mark() ;
-    if (!mark->is_being_inflated()) {
-      return mark ;    // normal fast-path return
-    }
-
-    // The object is being inflated by some other thread.
-    // The caller of ReadStableMark() must wait for inflation to complete.
-    // Avoid live-lock
-    // TODO: consider calling SafepointSynchronize::do_call_back() while
-    // spinning to see if there's a safepoint pending.  If so, immediately
-    // yielding or blocking would be appropriate.  Avoid spinning while
-    // there is a safepoint pending.
-    // TODO: add inflation contention performance counters.
-    // TODO: restrict the aggregate number of spinners.
-
-    ++its ;
-    if (its > 10000 || !os::is_MP()) {
-       if (its & 1) {
-         os::NakedYield() ;
-         TEVENT (Inflate: INFLATING - yield) ;
-       } else {
-         // Note that the following code attenuates the livelock problem but is not
-         // a complete remedy.  A more complete solution would require that the inflating
-         // thread hold the associated inflation lock.  The following code simply restricts
-         // the number of spinners to at most one.  We'll have N-2 threads blocked
-         // on the inflationlock, 1 thread holding the inflation lock and using
-         // a yield/park strategy, and 1 thread in the midst of inflation.
-         // A more refined approach would be to change the encoding of INFLATING
-         // to allow encapsulation of a native thread pointer.  Threads waiting for
-         // inflation to complete would use CAS to push themselves onto a singly linked
-         // list rooted at the markword.  Once enqueued, they'd loop, checking a per-thread flag
-         // and calling park().  When inflation was complete the thread that accomplished inflation
-         // would detach the list and set the markword to inflated with a single CAS and
-         // then for each thread on the list, set the flag and unpark() the thread.
-         // This is conceptually similar to muxAcquire-muxRelease, except that muxRelease
-         // wakes at most one thread whereas we need to wake the entire list.
-         int ix = (intptr_t(obj) >> 5) & (NINFLATIONLOCKS-1) ;
-         int YieldThenBlock = 0 ;
-         assert (ix >= 0 && ix < NINFLATIONLOCKS, "invariant") ;
-         assert ((NINFLATIONLOCKS & (NINFLATIONLOCKS-1)) == 0, "invariant") ;
-         Thread::muxAcquire (InflationLocks + ix, "InflationLock") ;
-         while (obj->mark() == markOopDesc::INFLATING()) {
-           // Beware: NakedYield() is advisory and has almost no effect on some platforms
-           // so we periodically call Self->_ParkEvent->park(1).
-           // We use a mixed spin/yield/block mechanism.
-           if ((YieldThenBlock++) >= 16) {
-              Thread::current()->_ParkEvent->park(1) ;
-           } else {
-              os::NakedYield() ;
-           }
-         }
-         Thread::muxRelease (InflationLocks + ix ) ;
-         TEVENT (Inflate: INFLATING - yield/park) ;
-       }
-    } else {
-       SpinPause() ;       // SMP-polite spinning
-    }
-  }
-}
 
 ObjectMonitor * ATTR ObjectSynchronizer::inflate (Thread * Self, oop object) {
   // Inflate mutates the heap ...
@@ -1242,7 +1228,7 @@
           m->_Responsible  = NULL ;
           m->OwnerIsThread = 0 ;
           m->_recursions   = 0 ;
-          m->_SpinDuration = Knob_SpinLimit ;   // Consider: maintain by type/class
+          m->_SpinDuration = ObjectMonitor::Knob_SpinLimit ;   // Consider: maintain by type/class
 
           markOop cmp = (markOop) Atomic::cmpxchg_ptr (markOopDesc::INFLATING(), object->mark_addr(), mark) ;
           if (cmp != mark) {
@@ -1302,7 +1288,7 @@
 
           // Hopefully the performance counters are allocated on distinct cache lines
           // to avoid false sharing on MP systems ...
-          if (_sync_Inflations != NULL) _sync_Inflations->inc() ;
+          if (ObjectMonitor::_sync_Inflations != NULL) ObjectMonitor::_sync_Inflations->inc() ;
           TEVENT(Inflate: overwrite stacklock) ;
           if (TraceMonitorInflation) {
             if (object->is_instance()) {
@@ -1335,7 +1321,7 @@
       m->OwnerIsThread = 1 ;
       m->_recursions   = 0 ;
       m->_Responsible  = NULL ;
-      m->_SpinDuration = Knob_SpinLimit ;       // consider: keep metastats by type/class
+      m->_SpinDuration = ObjectMonitor::Knob_SpinLimit ;       // consider: keep metastats by type/class
 
       if (Atomic::cmpxchg_ptr (markOopDesc::encode(m), object->mark_addr(), mark) != mark) {
           m->set_object (NULL) ;
@@ -1352,7 +1338,7 @@
 
       // Hopefully the performance counters are allocated on distinct
       // cache lines to avoid false sharing on MP systems ...
-      if (_sync_Inflations != NULL) _sync_Inflations->inc() ;
+      if (ObjectMonitor::_sync_Inflations != NULL) ObjectMonitor::_sync_Inflations->inc() ;
       TEVENT(Inflate: overwrite neutral) ;
       if (TraceMonitorInflation) {
         if (object->is_instance()) {
@@ -1366,547 +1352,9 @@
   }
 }
 
-
-// This the fast monitor enter. The interpreter and compiler use
-// some assembly copies of this code. Make sure update those code
-// if the following function is changed. The implementation is
-// extremely sensitive to race condition. Be careful.
-
-void ObjectSynchronizer::fast_enter(Handle obj, BasicLock* lock, bool attempt_rebias, TRAPS) {
- if (UseBiasedLocking) {
-    if (!SafepointSynchronize::is_at_safepoint()) {
-      BiasedLocking::Condition cond = BiasedLocking::revoke_and_rebias(obj, attempt_rebias, THREAD);
-      if (cond == BiasedLocking::BIAS_REVOKED_AND_REBIASED) {
-        return;
-      }
-    } else {
-      assert(!attempt_rebias, "can not rebias toward VM thread");
-      BiasedLocking::revoke_at_safepoint(obj);
-    }
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
- }
-
- slow_enter (obj, lock, THREAD) ;
-}
-
-void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) {
-  assert(!object->mark()->has_bias_pattern(), "should not see bias pattern here");
-  // if displaced header is null, the previous enter is recursive enter, no-op
-  markOop dhw = lock->displaced_header();
-  markOop mark ;
-  if (dhw == NULL) {
-     // Recursive stack-lock.
-     // Diagnostics -- Could be: stack-locked, inflating, inflated.
-     mark = object->mark() ;
-     assert (!mark->is_neutral(), "invariant") ;
-     if (mark->has_locker() && mark != markOopDesc::INFLATING()) {
-        assert(THREAD->is_lock_owned((address)mark->locker()), "invariant") ;
-     }
-     if (mark->has_monitor()) {
-        ObjectMonitor * m = mark->monitor() ;
-        assert(((oop)(m->object()))->mark() == mark, "invariant") ;
-        assert(m->is_entered(THREAD), "invariant") ;
-     }
-     return ;
-  }
-
-  mark = object->mark() ;
-
-  // If the object is stack-locked by the current thread, try to
-  // swing the displaced header from the box back to the mark.
-  if (mark == (markOop) lock) {
-     assert (dhw->is_neutral(), "invariant") ;
-     if ((markOop) Atomic::cmpxchg_ptr (dhw, object->mark_addr(), mark) == mark) {
-        TEVENT (fast_exit: release stacklock) ;
-        return;
-     }
-  }
-
-  ObjectSynchronizer::inflate(THREAD, object)->exit (THREAD) ;
-}
-
-// This routine is used to handle interpreter/compiler slow case
-// We don't need to use fast path here, because it must have been
-// failed in the interpreter/compiler code.
-void ObjectSynchronizer::slow_enter(Handle obj, BasicLock* lock, TRAPS) {
-  markOop mark = obj->mark();
-  assert(!mark->has_bias_pattern(), "should not see bias pattern here");
-
-  if (mark->is_neutral()) {
-    // Anticipate successful CAS -- the ST of the displaced mark must
-    // be visible <= the ST performed by the CAS.
-    lock->set_displaced_header(mark);
-    if (mark == (markOop) Atomic::cmpxchg_ptr(lock, obj()->mark_addr(), mark)) {
-      TEVENT (slow_enter: release stacklock) ;
-      return ;
-    }
-    // Fall through to inflate() ...
-  } else
-  if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) {
-    assert(lock != mark->locker(), "must not re-lock the same lock");
-    assert(lock != (BasicLock*)obj->mark(), "don't relock with same BasicLock");
-    lock->set_displaced_header(NULL);
-    return;
-  }
-
-#if 0
-  // The following optimization isn't particularly useful.
-  if (mark->has_monitor() && mark->monitor()->is_entered(THREAD)) {
-    lock->set_displaced_header (NULL) ;
-    return ;
-  }
-#endif
-
-  // The object header will never be displaced to this lock,
-  // so it does not matter what the value is, except that it
-  // must be non-zero to avoid looking like a re-entrant lock,
-  // and must not look locked either.
-  lock->set_displaced_header(markOopDesc::unused_mark());
-  ObjectSynchronizer::inflate(THREAD, obj())->enter(THREAD);
-}
-
-// This routine is used to handle interpreter/compiler slow case
-// We don't need to use fast path here, because it must have
-// failed in the interpreter/compiler code. Simply use the heavy
-// weight monitor should be ok, unless someone find otherwise.
-void ObjectSynchronizer::slow_exit(oop object, BasicLock* lock, TRAPS) {
-  fast_exit (object, lock, THREAD) ;
-}
-
-// NOTE: must use heavy weight monitor to handle jni monitor enter
-void ObjectSynchronizer::jni_enter(Handle obj, TRAPS) { // possible entry from jni enter
-  // the current locking is from JNI instead of Java code
-  TEVENT (jni_enter) ;
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-  THREAD->set_current_pending_monitor_is_from_java(false);
-  ObjectSynchronizer::inflate(THREAD, obj())->enter(THREAD);
-  THREAD->set_current_pending_monitor_is_from_java(true);
-}
-
-// NOTE: must use heavy weight monitor to handle jni monitor enter
-bool ObjectSynchronizer::jni_try_enter(Handle obj, Thread* THREAD) {
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  ObjectMonitor* monitor = ObjectSynchronizer::inflate_helper(obj());
-  return monitor->try_enter(THREAD);
-}
-
-
-// NOTE: must use heavy weight monitor to handle jni monitor exit
-void ObjectSynchronizer::jni_exit(oop obj, Thread* THREAD) {
-  TEVENT (jni_exit) ;
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-  }
-  assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-
-  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj);
-  // If this thread has locked the object, exit the monitor.  Note:  can't use
-  // monitor->check(CHECK); must exit even if an exception is pending.
-  if (monitor->check(THREAD)) {
-     monitor->exit(THREAD);
-  }
-}
-
-// complete_exit()/reenter() are used to wait on a nested lock
-// i.e. to give up an outer lock completely and then re-enter
-// Used when holding nested locks - lock acquisition order: lock1 then lock2
-//  1) complete_exit lock1 - saving recursion count
-//  2) wait on lock2
-//  3) when notified on lock2, unlock lock2
-//  4) reenter lock1 with original recursion count
-//  5) lock lock2
-// NOTE: must use heavy weight monitor to handle complete_exit/reenter()
-intptr_t ObjectSynchronizer::complete_exit(Handle obj, TRAPS) {
-  TEVENT (complete_exit) ;
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj());
-
-  return monitor->complete_exit(THREAD);
-}
-
-// NOTE: must use heavy weight monitor to handle complete_exit/reenter()
-void ObjectSynchronizer::reenter(Handle obj, intptr_t recursion, TRAPS) {
-  TEVENT (reenter) ;
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj());
-
-  monitor->reenter(recursion, THREAD);
-}
-
-// This exists only as a workaround of dtrace bug 6254741
-int dtrace_waited_probe(ObjectMonitor* monitor, Handle obj, Thread* thr) {
-  DTRACE_MONITOR_PROBE(waited, monitor, obj(), thr);
-  return 0;
-}
-
-// NOTE: must use heavy weight monitor to handle wait()
-void ObjectSynchronizer::wait(Handle obj, jlong millis, TRAPS) {
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-  if (millis < 0) {
-    TEVENT (wait - throw IAX) ;
-    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "timeout value is negative");
-  }
-  ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, obj());
-  DTRACE_MONITOR_WAIT_PROBE(monitor, obj(), THREAD, millis);
-  monitor->wait(millis, true, THREAD);
-
-  /* This dummy call is in place to get around dtrace bug 6254741.  Once
-     that's fixed we can uncomment the following line and remove the call */
-  // DTRACE_MONITOR_PROBE(waited, monitor, obj(), THREAD);
-  dtrace_waited_probe(monitor, obj, THREAD);
-}
-
-void ObjectSynchronizer::waitUninterruptibly (Handle obj, jlong millis, TRAPS) {
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-  if (millis < 0) {
-    TEVENT (wait - throw IAX) ;
-    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "timeout value is negative");
-  }
-  ObjectSynchronizer::inflate(THREAD, obj()) -> wait(millis, false, THREAD) ;
-}
-
-void ObjectSynchronizer::notify(Handle obj, TRAPS) {
- if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  markOop mark = obj->mark();
-  if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) {
-    return;
-  }
-  ObjectSynchronizer::inflate(THREAD, obj())->notify(THREAD);
-}
-
-// NOTE: see comment of notify()
-void ObjectSynchronizer::notifyall(Handle obj, TRAPS) {
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(obj, false, THREAD);
-    assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  markOop mark = obj->mark();
-  if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) {
-    return;
-  }
-  ObjectSynchronizer::inflate(THREAD, obj())->notifyAll(THREAD);
-}
-
-intptr_t ObjectSynchronizer::FastHashCode (Thread * Self, oop obj) {
-  if (UseBiasedLocking) {
-    // NOTE: many places throughout the JVM do not expect a safepoint
-    // to be taken here, in particular most operations on perm gen
-    // objects. However, we only ever bias Java instances and all of
-    // the call sites of identity_hash that might revoke biases have
-    // been checked to make sure they can handle a safepoint. The
-    // added check of the bias pattern is to avoid useless calls to
-    // thread-local storage.
-    if (obj->mark()->has_bias_pattern()) {
-      // Box and unbox the raw reference just in case we cause a STW safepoint.
-      Handle hobj (Self, obj) ;
-      // Relaxing assertion for bug 6320749.
-      assert (Universe::verify_in_progress() ||
-              !SafepointSynchronize::is_at_safepoint(),
-             "biases should not be seen by VM thread here");
-      BiasedLocking::revoke_and_rebias(hobj, false, JavaThread::current());
-      obj = hobj() ;
-      assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-    }
-  }
+// Note that we could encounter some performance loss through false-sharing as
+// multiple locks occupy the same $ line.  Padding might be appropriate.
 
-  // hashCode() is a heap mutator ...
-  // Relaxing assertion for bug 6320749.
-  assert (Universe::verify_in_progress() ||
-          !SafepointSynchronize::is_at_safepoint(), "invariant") ;
-  assert (Universe::verify_in_progress() ||
-          Self->is_Java_thread() , "invariant") ;
-  assert (Universe::verify_in_progress() ||
-         ((JavaThread *)Self)->thread_state() != _thread_blocked, "invariant") ;
-
-  ObjectMonitor* monitor = NULL;
-  markOop temp, test;
-  intptr_t hash;
-  markOop mark = ReadStableMark (obj);
-
-  // object should remain ineligible for biased locking
-  assert (!mark->has_bias_pattern(), "invariant") ;
-
-  if (mark->is_neutral()) {
-    hash = mark->hash();              // this is a normal header
-    if (hash) {                       // if it has hash, just return it
-      return hash;
-    }
-    hash = get_next_hash(Self, obj);  // allocate a new hash code
-    temp = mark->copy_set_hash(hash); // merge the hash code into header
-    // use (machine word version) atomic operation to install the hash
-    test = (markOop) Atomic::cmpxchg_ptr(temp, obj->mark_addr(), mark);
-    if (test == mark) {
-      return hash;
-    }
-    // If atomic operation failed, we must inflate the header
-    // into heavy weight monitor. We could add more code here
-    // for fast path, but it does not worth the complexity.
-  } else if (mark->has_monitor()) {
-    monitor = mark->monitor();
-    temp = monitor->header();
-    assert (temp->is_neutral(), "invariant") ;
-    hash = temp->hash();
-    if (hash) {
-      return hash;
-    }
-    // Skip to the following code to reduce code size
-  } else if (Self->is_lock_owned((address)mark->locker())) {
-    temp = mark->displaced_mark_helper(); // this is a lightweight monitor owned
-    assert (temp->is_neutral(), "invariant") ;
-    hash = temp->hash();              // by current thread, check if the displaced
-    if (hash) {                       // header contains hash code
-      return hash;
-    }
-    // WARNING:
-    //   The displaced header is strictly immutable.
-    // It can NOT be changed in ANY cases. So we have
-    // to inflate the header into heavyweight monitor
-    // even the current thread owns the lock. The reason
-    // is the BasicLock (stack slot) will be asynchronously
-    // read by other threads during the inflate() function.
-    // Any change to stack may not propagate to other threads
-    // correctly.
-  }
-
-  // Inflate the monitor to set hash code
-  monitor = ObjectSynchronizer::inflate(Self, obj);
-  // Load displaced header and check it has hash code
-  mark = monitor->header();
-  assert (mark->is_neutral(), "invariant") ;
-  hash = mark->hash();
-  if (hash == 0) {
-    hash = get_next_hash(Self, obj);
-    temp = mark->copy_set_hash(hash); // merge hash code into header
-    assert (temp->is_neutral(), "invariant") ;
-    test = (markOop) Atomic::cmpxchg_ptr(temp, monitor, mark);
-    if (test != mark) {
-      // The only update to the header in the monitor (outside GC)
-      // is install the hash code. If someone add new usage of
-      // displaced header, please update this code
-      hash = test->hash();
-      assert (test->is_neutral(), "invariant") ;
-      assert (hash != 0, "Trivial unexpected object/monitor header usage.");
-    }
-  }
-  // We finally get the hash
-  return hash;
-}
-
-// Deprecated -- use FastHashCode() instead.
-
-intptr_t ObjectSynchronizer::identity_hash_value_for(Handle obj) {
-  return FastHashCode (Thread::current(), obj()) ;
-}
-
-bool ObjectSynchronizer::current_thread_holds_lock(JavaThread* thread,
-                                                   Handle h_obj) {
-  if (UseBiasedLocking) {
-    BiasedLocking::revoke_and_rebias(h_obj, false, thread);
-    assert(!h_obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  assert(thread == JavaThread::current(), "Can only be called on current thread");
-  oop obj = h_obj();
-
-  markOop mark = ReadStableMark (obj) ;
-
-  // Uncontended case, header points to stack
-  if (mark->has_locker()) {
-    return thread->is_lock_owned((address)mark->locker());
-  }
-  // Contended case, header points to ObjectMonitor (tagged pointer)
-  if (mark->has_monitor()) {
-    ObjectMonitor* monitor = mark->monitor();
-    return monitor->is_entered(thread) != 0 ;
-  }
-  // Unlocked case, header in place
-  assert(mark->is_neutral(), "sanity check");
-  return false;
-}
-
-// Be aware of this method could revoke bias of the lock object.
-// This method querys the ownership of the lock handle specified by 'h_obj'.
-// If the current thread owns the lock, it returns owner_self. If no
-// thread owns the lock, it returns owner_none. Otherwise, it will return
-// ower_other.
-ObjectSynchronizer::LockOwnership ObjectSynchronizer::query_lock_ownership
-(JavaThread *self, Handle h_obj) {
-  // The caller must beware this method can revoke bias, and
-  // revocation can result in a safepoint.
-  assert (!SafepointSynchronize::is_at_safepoint(), "invariant") ;
-  assert (self->thread_state() != _thread_blocked , "invariant") ;
-
-  // Possible mark states: neutral, biased, stack-locked, inflated
-
-  if (UseBiasedLocking && h_obj()->mark()->has_bias_pattern()) {
-    // CASE: biased
-    BiasedLocking::revoke_and_rebias(h_obj, false, self);
-    assert(!h_obj->mark()->has_bias_pattern(),
-           "biases should be revoked by now");
-  }
-
-  assert(self == JavaThread::current(), "Can only be called on current thread");
-  oop obj = h_obj();
-  markOop mark = ReadStableMark (obj) ;
-
-  // CASE: stack-locked.  Mark points to a BasicLock on the owner's stack.
-  if (mark->has_locker()) {
-    return self->is_lock_owned((address)mark->locker()) ?
-      owner_self : owner_other;
-  }
-
-  // CASE: inflated. Mark (tagged pointer) points to an objectMonitor.
-  // The Object:ObjectMonitor relationship is stable as long as we're
-  // not at a safepoint.
-  if (mark->has_monitor()) {
-    void * owner = mark->monitor()->_owner ;
-    if (owner == NULL) return owner_none ;
-    return (owner == self ||
-            self->is_lock_owned((address)owner)) ? owner_self : owner_other;
-  }
-
-  // CASE: neutral
-  assert(mark->is_neutral(), "sanity check");
-  return owner_none ;           // it's unlocked
-}
-
-// FIXME: jvmti should call this
-JavaThread* ObjectSynchronizer::get_lock_owner(Handle h_obj, bool doLock) {
-  if (UseBiasedLocking) {
-    if (SafepointSynchronize::is_at_safepoint()) {
-      BiasedLocking::revoke_at_safepoint(h_obj);
-    } else {
-      BiasedLocking::revoke_and_rebias(h_obj, false, JavaThread::current());
-    }
-    assert(!h_obj->mark()->has_bias_pattern(), "biases should be revoked by now");
-  }
-
-  oop obj = h_obj();
-  address owner = NULL;
-
-  markOop mark = ReadStableMark (obj) ;
-
-  // Uncontended case, header points to stack
-  if (mark->has_locker()) {
-    owner = (address) mark->locker();
-  }
-
-  // Contended case, header points to ObjectMonitor (tagged pointer)
-  if (mark->has_monitor()) {
-    ObjectMonitor* monitor = mark->monitor();
-    assert(monitor != NULL, "monitor should be non-null");
-    owner = (address) monitor->owner();
-  }
-
-  if (owner != NULL) {
-    return Threads::owning_thread_from_monitor_owner(owner, doLock);
-  }
-
-  // Unlocked case, header in place
-  // Cannot have assertion since this object may have been
-  // locked by another thread when reaching here.
-  // assert(mark->is_neutral(), "sanity check");
-
-  return NULL;
-}
-
-// Iterate through monitor cache and attempt to release thread's monitors
-// Gives up on a particular monitor if an exception occurs, but continues
-// the overall iteration, swallowing the exception.
-class ReleaseJavaMonitorsClosure: public MonitorClosure {
-private:
-  TRAPS;
-
-public:
-  ReleaseJavaMonitorsClosure(Thread* thread) : THREAD(thread) {}
-  void do_monitor(ObjectMonitor* mid) {
-    if (mid->owner() == THREAD) {
-      (void)mid->complete_exit(CHECK);
-    }
-  }
-};
-
-// Release all inflated monitors owned by THREAD.  Lightweight monitors are
-// ignored.  This is meant to be called during JNI thread detach which assumes
-// all remaining monitors are heavyweight.  All exceptions are swallowed.
-// Scanning the extant monitor list can be time consuming.
-// A simple optimization is to add a per-thread flag that indicates a thread
-// called jni_monitorenter() during its lifetime.
-//
-// Instead of No_Savepoint_Verifier it might be cheaper to
-// use an idiom of the form:
-//   auto int tmp = SafepointSynchronize::_safepoint_counter ;
-//   <code that must not run at safepoint>
-//   guarantee (((tmp ^ _safepoint_counter) | (tmp & 1)) == 0) ;
-// Since the tests are extremely cheap we could leave them enabled
-// for normal product builds.
-
-void ObjectSynchronizer::release_monitors_owned_by_thread(TRAPS) {
-  assert(THREAD == JavaThread::current(), "must be current Java thread");
-  No_Safepoint_Verifier nsv ;
-  ReleaseJavaMonitorsClosure rjmc(THREAD);
-  Thread::muxAcquire(&ListLock, "release_monitors_owned_by_thread");
-  ObjectSynchronizer::monitors_iterate(&rjmc);
-  Thread::muxRelease(&ListLock);
-  THREAD->clear_pending_exception();
-}
-
-// Visitors ...
-
-void ObjectSynchronizer::monitors_iterate(MonitorClosure* closure) {
-  ObjectMonitor* block = gBlockList;
-  ObjectMonitor* mid;
-  while (block) {
-    assert(block->object() == CHAINMARKER, "must be a block header");
-    for (int i = _BLOCKSIZE - 1; i > 0; i--) {
-      mid = block + i;
-      oop object = (oop) mid->object();
-      if (object != NULL) {
-        closure->do_monitor(mid);
-      }
-    }
-    block = (ObjectMonitor*) block->FreeNext;
-  }
-}
-
-void ObjectSynchronizer::oops_do(OopClosure* f) {
-  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
-  for (ObjectMonitor* block = gBlockList; block != NULL; block = next(block)) {
-    assert(block->object() == CHAINMARKER, "must be a block header");
-    for (int i = 1; i < _BLOCKSIZE; i++) {
-      ObjectMonitor* mid = &block[i];
-      if (mid->object() != NULL) {
-        f->do_oop((oop*)mid->object_addr());
-      }
-    }
-  }
-}
 
 // Deflate_idle_monitors() is called at all safepoints, immediately
 // after all mutators are stopped, but before any objects have moved.
@@ -1936,12 +1384,11 @@
 // which in turn can mean large(r) numbers of objectmonitors in circulation.
 // This is an unfortunate aspect of this design.
 //
-// Another refinement would be to refrain from calling deflate_idle_monitors()
-// except at stop-the-world points associated with garbage collections.
-//
-// An even better solution would be to deflate on-the-fly, aggressively,
-// at monitorexit-time as is done in EVM's metalock or Relaxed Locks.
 
+enum ManifestConstants {
+    ClearResponsibleAtSTW   = 0,
+    MaximumRecheckInterval  = 1000
+} ;
 
 // Deflate a single monitor if not in use
 // Return true if deflated, false if in use
@@ -2088,7 +1535,7 @@
 
   // Consider: audit gFreeList to ensure that MonitorFreeCount and list agree.
 
-  if (Knob_Verbose) {
+  if (ObjectMonitor::Knob_Verbose) {
     ::printf ("Deflate: InCirc=%d InUse=%d Scavenged=%d ForceMonitorScavenge=%d : pop=%d free=%d\n",
         nInCirculation, nInuse, nScavenged, ForceMonitorScavenge,
         MonitorPopulation, MonitorFreeCount) ;
@@ -2107,8 +1554,8 @@
   }
   Thread::muxRelease (&ListLock) ;
 
-  if (_sync_Deflations != NULL) _sync_Deflations->inc(nScavenged) ;
-  if (_sync_MonExtant  != NULL) _sync_MonExtant ->set_value(nInCirculation);
+  if (ObjectMonitor::_sync_Deflations != NULL) ObjectMonitor::_sync_Deflations->inc(nScavenged) ;
+  if (ObjectMonitor::_sync_MonExtant  != NULL) ObjectMonitor::_sync_MonExtant ->set_value(nInCirculation);
 
   // TODO: Add objectMonitor leak detection.
   // Audit/inventory the objectMonitors -- make sure they're all accounted for.
@@ -2116,2810 +1563,49 @@
   GVars.stwCycle ++ ;
 }
 
-// A macro is used below because there may already be a pending
-// exception which should not abort the execution of the routines
-// which use this (which is why we don't put this into check_slow and
-// call it with a CHECK argument).
-
-#define CHECK_OWNER()                                                             \
-  do {                                                                            \
-    if (THREAD != _owner) {                                                       \
-      if (THREAD->is_lock_owned((address) _owner)) {                              \
-        _owner = THREAD ;  /* Convert from basiclock addr to Thread addr */       \
-        _recursions = 0;                                                          \
-        OwnerIsThread = 1 ;                                                       \
-      } else {                                                                    \
-        TEVENT (Throw IMSX) ;                                                     \
-        THROW(vmSymbols::java_lang_IllegalMonitorStateException());               \
-      }                                                                           \
-    }                                                                             \
-  } while (false)
-
-// TODO-FIXME: eliminate ObjectWaiters.  Replace this visitor/enumerator
-// interface with a simple FirstWaitingThread(), NextWaitingThread() interface.
-
-ObjectWaiter* ObjectMonitor::first_waiter() {
-  return _WaitSet;
-}
-
-ObjectWaiter* ObjectMonitor::next_waiter(ObjectWaiter* o) {
-  return o->_next;
-}
-
-Thread* ObjectMonitor::thread_of_waiter(ObjectWaiter* o) {
-  return o->_thread;
-}
-
-// initialize the monitor, exception the semaphore, all other fields
-// are simple integers or pointers
-ObjectMonitor::ObjectMonitor() {
-  _header       = NULL;
-  _count        = 0;
-  _waiters      = 0,
-  _recursions   = 0;
-  _object       = NULL;
-  _owner        = NULL;
-  _WaitSet      = NULL;
-  _WaitSetLock  = 0 ;
-  _Responsible  = NULL ;
-  _succ         = NULL ;
-  _cxq          = NULL ;
-  FreeNext      = NULL ;
-  _EntryList    = NULL ;
-  _SpinFreq     = 0 ;
-  _SpinClock    = 0 ;
-  OwnerIsThread = 0 ;
-}
-
-ObjectMonitor::~ObjectMonitor() {
-   // TODO: Add asserts ...
-   // _cxq == 0 _succ == NULL _owner == NULL _waiters == 0
-   // _count == 0 _EntryList  == NULL etc
-}
+// Monitor cleanup on JavaThread::exit
 
-intptr_t ObjectMonitor::is_busy() const {
-  // TODO-FIXME: merge _count and _waiters.
-  // TODO-FIXME: assert _owner == null implies _recursions = 0
-  // TODO-FIXME: assert _WaitSet != null implies _count > 0
-  return _count|_waiters|intptr_t(_owner)|intptr_t(_cxq)|intptr_t(_EntryList ) ;
-}
-
-void ObjectMonitor::Recycle () {
-  // TODO: add stronger asserts ...
-  // _cxq == 0 _succ == NULL _owner == NULL _waiters == 0
-  // _count == 0 EntryList  == NULL
-  // _recursions == 0 _WaitSet == NULL
-  // TODO: assert (is_busy()|_recursions) == 0
-  _succ          = NULL ;
-  _EntryList     = NULL ;
-  _cxq           = NULL ;
-  _WaitSet       = NULL ;
-  _recursions    = 0 ;
-  _SpinFreq      = 0 ;
-  _SpinClock     = 0 ;
-  OwnerIsThread  = 0 ;
-}
-
-// WaitSet management ...
+// Iterate through monitor cache and attempt to release thread's monitors
+// Gives up on a particular monitor if an exception occurs, but continues
+// the overall iteration, swallowing the exception.
+class ReleaseJavaMonitorsClosure: public MonitorClosure {
+private:
+  TRAPS;
 
-inline void ObjectMonitor::AddWaiter(ObjectWaiter* node) {
-  assert(node != NULL, "should not dequeue NULL node");
-  assert(node->_prev == NULL, "node already in list");
-  assert(node->_next == NULL, "node already in list");
-  // put node at end of queue (circular doubly linked list)
-  if (_WaitSet == NULL) {
-    _WaitSet = node;
-    node->_prev = node;
-    node->_next = node;
-  } else {
-    ObjectWaiter* head = _WaitSet ;
-    ObjectWaiter* tail = head->_prev;
-    assert(tail->_next == head, "invariant check");
-    tail->_next = node;
-    head->_prev = node;
-    node->_next = head;
-    node->_prev = tail;
-  }
-}
-
-inline ObjectWaiter* ObjectMonitor::DequeueWaiter() {
-  // dequeue the very first waiter
-  ObjectWaiter* waiter = _WaitSet;
-  if (waiter) {
-    DequeueSpecificWaiter(waiter);
-  }
-  return waiter;
-}
-
-inline void ObjectMonitor::DequeueSpecificWaiter(ObjectWaiter* node) {
-  assert(node != NULL, "should not dequeue NULL node");
-  assert(node->_prev != NULL, "node already removed from list");
-  assert(node->_next != NULL, "node already removed from list");
-  // when the waiter has woken up because of interrupt,
-  // timeout or other spurious wake-up, dequeue the
-  // waiter from waiting list
-  ObjectWaiter* next = node->_next;
-  if (next == node) {
-    assert(node->_prev == node, "invariant check");
-    _WaitSet = NULL;
-  } else {
-    ObjectWaiter* prev = node->_prev;
-    assert(prev->_next == node, "invariant check");
-    assert(next->_prev == node, "invariant check");
-    next->_prev = prev;
-    prev->_next = next;
-    if (_WaitSet == node) {
-      _WaitSet = next;
+public:
+  ReleaseJavaMonitorsClosure(Thread* thread) : THREAD(thread) {}
+  void do_monitor(ObjectMonitor* mid) {
+    if (mid->owner() == THREAD) {
+      (void)mid->complete_exit(CHECK);
     }
   }
-  node->_next = NULL;
-  node->_prev = NULL;
-}
-
-static char * kvGet (char * kvList, const char * Key) {
-    if (kvList == NULL) return NULL ;
-    size_t n = strlen (Key) ;
-    char * Search ;
-    for (Search = kvList ; *Search ; Search += strlen(Search) + 1) {
-        if (strncmp (Search, Key, n) == 0) {
-            if (Search[n] == '=') return Search + n + 1 ;
-            if (Search[n] == 0)   return (char *) "1" ;
-        }
-    }
-    return NULL ;
-}
-
-static int kvGetInt (char * kvList, const char * Key, int Default) {
-    char * v = kvGet (kvList, Key) ;
-    int rslt = v ? ::strtol (v, NULL, 0) : Default ;
-    if (Knob_ReportSettings && v != NULL) {
-        ::printf ("  SyncKnob: %s %d(%d)\n", Key, rslt, Default) ;
-        ::fflush (stdout) ;
-    }
-    return rslt ;
-}
-
-// By convention we unlink a contending thread from EntryList|cxq immediately
-// after the thread acquires the lock in ::enter().  Equally, we could defer
-// unlinking the thread until ::exit()-time.
-
-void ObjectMonitor::UnlinkAfterAcquire (Thread * Self, ObjectWaiter * SelfNode)
-{
-    assert (_owner == Self, "invariant") ;
-    assert (SelfNode->_thread == Self, "invariant") ;
-
-    if (SelfNode->TState == ObjectWaiter::TS_ENTER) {
-        // Normal case: remove Self from the DLL EntryList .
-        // This is a constant-time operation.
-        ObjectWaiter * nxt = SelfNode->_next ;
-        ObjectWaiter * prv = SelfNode->_prev ;
-        if (nxt != NULL) nxt->_prev = prv ;
-        if (prv != NULL) prv->_next = nxt ;
-        if (SelfNode == _EntryList ) _EntryList = nxt ;
-        assert (nxt == NULL || nxt->TState == ObjectWaiter::TS_ENTER, "invariant") ;
-        assert (prv == NULL || prv->TState == ObjectWaiter::TS_ENTER, "invariant") ;
-        TEVENT (Unlink from EntryList) ;
-    } else {
-        guarantee (SelfNode->TState == ObjectWaiter::TS_CXQ, "invariant") ;
-        // Inopportune interleaving -- Self is still on the cxq.
-        // This usually means the enqueue of self raced an exiting thread.
-        // Normally we'll find Self near the front of the cxq, so
-        // dequeueing is typically fast.  If needbe we can accelerate
-        // this with some MCS/CHL-like bidirectional list hints and advisory
-        // back-links so dequeueing from the interior will normally operate
-        // in constant-time.
-        // Dequeue Self from either the head (with CAS) or from the interior
-        // with a linear-time scan and normal non-atomic memory operations.
-        // CONSIDER: if Self is on the cxq then simply drain cxq into EntryList
-        // and then unlink Self from EntryList.  We have to drain eventually,
-        // so it might as well be now.
-
-        ObjectWaiter * v = _cxq ;
-        assert (v != NULL, "invariant") ;
-        if (v != SelfNode || Atomic::cmpxchg_ptr (SelfNode->_next, &_cxq, v) != v) {
-            // The CAS above can fail from interference IFF a "RAT" arrived.
-            // In that case Self must be in the interior and can no longer be
-            // at the head of cxq.
-            if (v == SelfNode) {
-                assert (_cxq != v, "invariant") ;
-                v = _cxq ;          // CAS above failed - start scan at head of list
-            }
-            ObjectWaiter * p ;
-            ObjectWaiter * q = NULL ;
-            for (p = v ; p != NULL && p != SelfNode; p = p->_next) {
-                q = p ;
-                assert (p->TState == ObjectWaiter::TS_CXQ, "invariant") ;
-            }
-            assert (v != SelfNode,  "invariant") ;
-            assert (p == SelfNode,  "Node not found on cxq") ;
-            assert (p != _cxq,      "invariant") ;
-            assert (q != NULL,      "invariant") ;
-            assert (q->_next == p,  "invariant") ;
-            q->_next = p->_next ;
-        }
-        TEVENT (Unlink from cxq) ;
-    }
-
-    // Diagnostic hygiene ...
-    SelfNode->_prev  = (ObjectWaiter *) 0xBAD ;
-    SelfNode->_next  = (ObjectWaiter *) 0xBAD ;
-    SelfNode->TState = ObjectWaiter::TS_RUN ;
-}
-
-// Caveat: TryLock() is not necessarily serializing if it returns failure.
-// Callers must compensate as needed.
-
-int ObjectMonitor::TryLock (Thread * Self) {
-   for (;;) {
-      void * own = _owner ;
-      if (own != NULL) return 0 ;
-      if (Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) {
-         // Either guarantee _recursions == 0 or set _recursions = 0.
-         assert (_recursions == 0, "invariant") ;
-         assert (_owner == Self, "invariant") ;
-         // CONSIDER: set or assert that OwnerIsThread == 1
-         return 1 ;
-      }
-      // The lock had been free momentarily, but we lost the race to the lock.
-      // Interference -- the CAS failed.
-      // We can either return -1 or retry.
-      // Retry doesn't make as much sense because the lock was just acquired.
-      if (true) return -1 ;
-   }
-}
-
-// NotRunnable() -- informed spinning
-//
-// Don't bother spinning if the owner is not eligible to drop the lock.
-// Peek at the owner's schedctl.sc_state and Thread._thread_values and
-// spin only if the owner thread is _thread_in_Java or _thread_in_vm.
-// The thread must be runnable in order to drop the lock in timely fashion.
-// If the _owner is not runnable then spinning will not likely be
-// successful (profitable).
-//
-// Beware -- the thread referenced by _owner could have died
-// so a simply fetch from _owner->_thread_state might trap.
-// Instead, we use SafeFetchXX() to safely LD _owner->_thread_state.
-// Because of the lifecycle issues the schedctl and _thread_state values
-// observed by NotRunnable() might be garbage.  NotRunnable must
-// tolerate this and consider the observed _thread_state value
-// as advisory.
-//
-// Beware too, that _owner is sometimes a BasicLock address and sometimes
-// a thread pointer.  We differentiate the two cases with OwnerIsThread.
-// Alternately, we might tag the type (thread pointer vs basiclock pointer)
-// with the LSB of _owner.  Another option would be to probablistically probe
-// the putative _owner->TypeTag value.
-//
-// Checking _thread_state isn't perfect.  Even if the thread is
-// in_java it might be blocked on a page-fault or have been preempted
-// and sitting on a ready/dispatch queue.  _thread state in conjunction
-// with schedctl.sc_state gives us a good picture of what the
-// thread is doing, however.
-//
-// TODO: check schedctl.sc_state.
-// We'll need to use SafeFetch32() to read from the schedctl block.
-// See RFE #5004247 and http://sac.sfbay.sun.com/Archives/CaseLog/arc/PSARC/2005/351/
-//
-// The return value from NotRunnable() is *advisory* -- the
-// result is based on sampling and is not necessarily coherent.
-// The caller must tolerate false-negative and false-positive errors.
-// Spinning, in general, is probabilistic anyway.
-
-
-int ObjectMonitor::NotRunnable (Thread * Self, Thread * ox) {
-    // Check either OwnerIsThread or ox->TypeTag == 2BAD.
-    if (!OwnerIsThread) return 0 ;
-
-    if (ox == NULL) return 0 ;
-
-    // Avoid transitive spinning ...
-    // Say T1 spins or blocks trying to acquire L.  T1._Stalled is set to L.
-    // Immediately after T1 acquires L it's possible that T2, also
-    // spinning on L, will see L.Owner=T1 and T1._Stalled=L.
-    // This occurs transiently after T1 acquired L but before
-    // T1 managed to clear T1.Stalled.  T2 does not need to abort
-    // its spin in this circumstance.
-    intptr_t BlockedOn = SafeFetchN ((intptr_t *) &ox->_Stalled, intptr_t(1)) ;
-
-    if (BlockedOn == 1) return 1 ;
-    if (BlockedOn != 0) {
-      return BlockedOn != intptr_t(this) && _owner == ox ;
-    }
-
-    assert (sizeof(((JavaThread *)ox)->_thread_state == sizeof(int)), "invariant") ;
-    int jst = SafeFetch32 ((int *) &((JavaThread *) ox)->_thread_state, -1) ; ;
-    // consider also: jst != _thread_in_Java -- but that's overspecific.
-    return jst == _thread_blocked || jst == _thread_in_native ;
-}
-
-
-// Adaptive spin-then-block - rational spinning
-//
-// Note that we spin "globally" on _owner with a classic SMP-polite TATAS
-// algorithm.  On high order SMP systems it would be better to start with
-// a brief global spin and then revert to spinning locally.  In the spirit of MCS/CLH,
-// a contending thread could enqueue itself on the cxq and then spin locally
-// on a thread-specific variable such as its ParkEvent._Event flag.
-// That's left as an exercise for the reader.  Note that global spinning is
-// not problematic on Niagara, as the L2$ serves the interconnect and has both
-// low latency and massive bandwidth.
-//
-// Broadly, we can fix the spin frequency -- that is, the % of contended lock
-// acquisition attempts where we opt to spin --  at 100% and vary the spin count
-// (duration) or we can fix the count at approximately the duration of
-// a context switch and vary the frequency.   Of course we could also
-// vary both satisfying K == Frequency * Duration, where K is adaptive by monitor.
-// See http://j2se.east/~dice/PERSIST/040824-AdaptiveSpinning.html.
-//
-// This implementation varies the duration "D", where D varies with
-// the success rate of recent spin attempts. (D is capped at approximately
-// length of a round-trip context switch).  The success rate for recent
-// spin attempts is a good predictor of the success rate of future spin
-// attempts.  The mechanism adapts automatically to varying critical
-// section length (lock modality), system load and degree of parallelism.
-// D is maintained per-monitor in _SpinDuration and is initialized
-// optimistically.  Spin frequency is fixed at 100%.
-//
-// Note that _SpinDuration is volatile, but we update it without locks
-// or atomics.  The code is designed so that _SpinDuration stays within
-// a reasonable range even in the presence of races.  The arithmetic
-// operations on _SpinDuration are closed over the domain of legal values,
-// so at worst a race will install and older but still legal value.
-// At the very worst this introduces some apparent non-determinism.
-// We might spin when we shouldn't or vice-versa, but since the spin
-// count are relatively short, even in the worst case, the effect is harmless.
-//
-// Care must be taken that a low "D" value does not become an
-// an absorbing state.  Transient spinning failures -- when spinning
-// is overall profitable -- should not cause the system to converge
-// on low "D" values.  We want spinning to be stable and predictable
-// and fairly responsive to change and at the same time we don't want
-// it to oscillate, become metastable, be "too" non-deterministic,
-// or converge on or enter undesirable stable absorbing states.
-//
-// We implement a feedback-based control system -- using past behavior
-// to predict future behavior.  We face two issues: (a) if the
-// input signal is random then the spin predictor won't provide optimal
-// results, and (b) if the signal frequency is too high then the control
-// system, which has some natural response lag, will "chase" the signal.
-// (b) can arise from multimodal lock hold times.  Transient preemption
-// can also result in apparent bimodal lock hold times.
-// Although sub-optimal, neither condition is particularly harmful, as
-// in the worst-case we'll spin when we shouldn't or vice-versa.
-// The maximum spin duration is rather short so the failure modes aren't bad.
-// To be conservative, I've tuned the gain in system to bias toward
-// _not spinning.  Relatedly, the system can sometimes enter a mode where it
-// "rings" or oscillates between spinning and not spinning.  This happens
-// when spinning is just on the cusp of profitability, however, so the
-// situation is not dire.  The state is benign -- there's no need to add
-// hysteresis control to damp the transition rate between spinning and
-// not spinning.
-//
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-//
-// Spin-then-block strategies ...
-//
-// Thoughts on ways to improve spinning :
-//
-// *  Periodically call {psr_}getloadavg() while spinning, and
-//    permit unbounded spinning if the load average is <
-//    the number of processors.  Beware, however, that getloadavg()
-//    is exceptionally fast on solaris (about 1/10 the cost of a full
-//    spin cycle, but quite expensive on linux.  Beware also, that
-//    multiple JVMs could "ring" or oscillate in a feedback loop.
-//    Sufficient damping would solve that problem.
-//
-// *  We currently use spin loops with iteration counters to approximate
-//    spinning for some interval.  Given the availability of high-precision
-//    time sources such as gethrtime(), %TICK, %STICK, RDTSC, etc., we should
-//    someday reimplement the spin loops to duration-based instead of iteration-based.
-//
-// *  Don't spin if there are more than N = (CPUs/2) threads
-//        currently spinning on the monitor (or globally).
-//    That is, limit the number of concurrent spinners.
-//    We might also limit the # of spinners in the JVM, globally.
-//
-// *  If a spinning thread observes _owner change hands it should
-//    abort the spin (and park immediately) or at least debit
-//    the spin counter by a large "penalty".
-//
-// *  Classically, the spin count is either K*(CPUs-1) or is a
-//        simple constant that approximates the length of a context switch.
-//    We currently use a value -- computed by a special utility -- that
-//    approximates round-trip context switch times.
-//
-// *  Normally schedctl_start()/_stop() is used to advise the kernel
-//    to avoid preempting threads that are running in short, bounded
-//    critical sections.  We could use the schedctl hooks in an inverted
-//    sense -- spinners would set the nopreempt flag, but poll the preempt
-//    pending flag.  If a spinner observed a pending preemption it'd immediately
-//    abort the spin and park.   As such, the schedctl service acts as
-//    a preemption warning mechanism.
-//
-// *  In lieu of spinning, if the system is running below saturation
-//    (that is, loadavg() << #cpus), we can instead suppress futile
-//    wakeup throttling, or even wake more than one successor at exit-time.
-//    The net effect is largely equivalent to spinning.  In both cases,
-//    contending threads go ONPROC and opportunistically attempt to acquire
-//    the lock, decreasing lock handover latency at the expense of wasted
-//    cycles and context switching.
-//
-// *  We might to spin less after we've parked as the thread will
-//    have less $ and TLB affinity with the processor.
-//    Likewise, we might spin less if we come ONPROC on a different
-//    processor or after a long period (>> rechose_interval).
-//
-// *  A table-driven state machine similar to Solaris' dispadmin scheduling
-//    tables might be a better design.  Instead of encoding information in
-//    _SpinDuration, _SpinFreq and _SpinClock we'd just use explicit,
-//    discrete states.   Success or failure during a spin would drive
-//    state transitions, and each state node would contain a spin count.
-//
-// *  If the processor is operating in a mode intended to conserve power
-//    (such as Intel's SpeedStep) or to reduce thermal output (thermal
-//    step-down mode) then the Java synchronization subsystem should
-//    forgo spinning.
-//
-// *  The minimum spin duration should be approximately the worst-case
-//    store propagation latency on the platform.  That is, the time
-//    it takes a store on CPU A to become visible on CPU B, where A and
-//    B are "distant".
-//
-// *  We might want to factor a thread's priority in the spin policy.
-//    Threads with a higher priority might spin for slightly longer.
-//    Similarly, if we use back-off in the TATAS loop, lower priority
-//    threads might back-off longer.  We don't currently use a
-//    thread's priority when placing it on the entry queue.  We may
-//    want to consider doing so in future releases.
-//
-// *  We might transiently drop a thread's scheduling priority while it spins.
-//    SCHED_BATCH on linux and FX scheduling class at priority=0 on Solaris
-//    would suffice.  We could even consider letting the thread spin indefinitely at
-//    a depressed or "idle" priority.  This brings up fairness issues, however --
-//    in a saturated system a thread would with a reduced priority could languish
-//    for extended periods on the ready queue.
-//
-// *  While spinning try to use the otherwise wasted time to help the VM make
-//    progress:
-//
-//    -- YieldTo() the owner, if the owner is OFFPROC but ready
-//       Done our remaining quantum directly to the ready thread.
-//       This helps "push" the lock owner through the critical section.
-//       It also tends to improve affinity/locality as the lock
-//       "migrates" less frequently between CPUs.
-//    -- Walk our own stack in anticipation of blocking.  Memoize the roots.
-//    -- Perform strand checking for other thread.  Unpark potential strandees.
-//    -- Help GC: trace or mark -- this would need to be a bounded unit of work.
-//       Unfortunately this will pollute our $ and TLBs.  Recall that we
-//       spin to avoid context switching -- context switching has an
-//       immediate cost in latency, a disruptive cost to other strands on a CMT
-//       processor, and an amortized cost because of the D$ and TLB cache
-//       reload transient when the thread comes back ONPROC and repopulates
-//       $s and TLBs.
-//    -- call getloadavg() to see if the system is saturated.  It'd probably
-//       make sense to call getloadavg() half way through the spin.
-//       If the system isn't at full capacity the we'd simply reset
-//       the spin counter to and extend the spin attempt.
-//    -- Doug points out that we should use the same "helping" policy
-//       in thread.yield().
-//
-// *  Try MONITOR-MWAIT on systems that support those instructions.
-//
-// *  The spin statistics that drive spin decisions & frequency are
-//    maintained in the objectmonitor structure so if we deflate and reinflate
-//    we lose spin state.  In practice this is not usually a concern
-//    as the default spin state after inflation is aggressive (optimistic)
-//    and tends toward spinning.  So in the worst case for a lock where
-//    spinning is not profitable we may spin unnecessarily for a brief
-//    period.  But then again, if a lock is contended it'll tend not to deflate
-//    in the first place.
-
-
-intptr_t ObjectMonitor::SpinCallbackArgument = 0 ;
-int (*ObjectMonitor::SpinCallbackFunction)(intptr_t, int) = NULL ;
-
-// Spinning: Fixed frequency (100%), vary duration
-
-int ObjectMonitor::TrySpin_VaryDuration (Thread * Self) {
-
-    // Dumb, brutal spin.  Good for comparative measurements against adaptive spinning.
-    int ctr = Knob_FixedSpin ;
-    if (ctr != 0) {
-        while (--ctr >= 0) {
-            if (TryLock (Self) > 0) return 1 ;
-            SpinPause () ;
-        }
-        return 0 ;
-    }
-
-    for (ctr = Knob_PreSpin + 1; --ctr >= 0 ; ) {
-      if (TryLock(Self) > 0) {
-        // Increase _SpinDuration ...
-        // Note that we don't clamp SpinDuration precisely at SpinLimit.
-        // Raising _SpurDuration to the poverty line is key.
-        int x = _SpinDuration ;
-        if (x < Knob_SpinLimit) {
-           if (x < Knob_Poverty) x = Knob_Poverty ;
-           _SpinDuration = x + Knob_BonusB ;
-        }
-        return 1 ;
-      }
-      SpinPause () ;
-    }
-
-    // Admission control - verify preconditions for spinning
-    //
-    // We always spin a little bit, just to prevent _SpinDuration == 0 from
-    // becoming an absorbing state.  Put another way, we spin briefly to
-    // sample, just in case the system load, parallelism, contention, or lock
-    // modality changed.
-    //
-    // Consider the following alternative:
-    // Periodically set _SpinDuration = _SpinLimit and try a long/full
-    // spin attempt.  "Periodically" might mean after a tally of
-    // the # of failed spin attempts (or iterations) reaches some threshold.
-    // This takes us into the realm of 1-out-of-N spinning, where we
-    // hold the duration constant but vary the frequency.
-
-    ctr = _SpinDuration  ;
-    if (ctr < Knob_SpinBase) ctr = Knob_SpinBase ;
-    if (ctr <= 0) return 0 ;
-
-    if (Knob_SuccRestrict && _succ != NULL) return 0 ;
-    if (Knob_OState && NotRunnable (Self, (Thread *) _owner)) {
-       TEVENT (Spin abort - notrunnable [TOP]);
-       return 0 ;
-    }
-
-    int MaxSpin = Knob_MaxSpinners ;
-    if (MaxSpin >= 0) {
-       if (_Spinner > MaxSpin) {
-          TEVENT (Spin abort -- too many spinners) ;
-          return 0 ;
-       }
-       // Slighty racy, but benign ...
-       Adjust (&_Spinner, 1) ;
-    }
-
-    // We're good to spin ... spin ingress.
-    // CONSIDER: use Prefetch::write() to avoid RTS->RTO upgrades
-    // when preparing to LD...CAS _owner, etc and the CAS is likely
-    // to succeed.
-    int hits    = 0 ;
-    int msk     = 0 ;
-    int caspty  = Knob_CASPenalty ;
-    int oxpty   = Knob_OXPenalty ;
-    int sss     = Knob_SpinSetSucc ;
-    if (sss && _succ == NULL ) _succ = Self ;
-    Thread * prv = NULL ;
-
-    // There are three ways to exit the following loop:
-    // 1.  A successful spin where this thread has acquired the lock.
-    // 2.  Spin failure with prejudice
-    // 3.  Spin failure without prejudice
-
-    while (--ctr >= 0) {
-
-      // Periodic polling -- Check for pending GC
-      // Threads may spin while they're unsafe.
-      // We don't want spinning threads to delay the JVM from reaching
-      // a stop-the-world safepoint or to steal cycles from GC.
-      // If we detect a pending safepoint we abort in order that
-      // (a) this thread, if unsafe, doesn't delay the safepoint, and (b)
-      // this thread, if safe, doesn't steal cycles from GC.
-      // This is in keeping with the "no loitering in runtime" rule.
-      // We periodically check to see if there's a safepoint pending.
-      if ((ctr & 0xFF) == 0) {
-         if (SafepointSynchronize::do_call_back()) {
-            TEVENT (Spin: safepoint) ;
-            goto Abort ;           // abrupt spin egress
-         }
-         if (Knob_UsePause & 1) SpinPause () ;
-
-         int (*scb)(intptr_t,int) = SpinCallbackFunction ;
-         if (hits > 50 && scb != NULL) {
-            int abend = (*scb)(SpinCallbackArgument, 0) ;
-         }
-      }
-
-      if (Knob_UsePause & 2) SpinPause() ;
-
-      // Exponential back-off ...  Stay off the bus to reduce coherency traffic.
-      // This is useful on classic SMP systems, but is of less utility on
-      // N1-style CMT platforms.
-      //
-      // Trade-off: lock acquisition latency vs coherency bandwidth.
-      // Lock hold times are typically short.  A histogram
-      // of successful spin attempts shows that we usually acquire
-      // the lock early in the spin.  That suggests we want to
-      // sample _owner frequently in the early phase of the spin,
-      // but then back-off and sample less frequently as the spin
-      // progresses.  The back-off makes a good citizen on SMP big
-      // SMP systems.  Oversampling _owner can consume excessive
-      // coherency bandwidth.  Relatedly, if we _oversample _owner we
-      // can inadvertently interfere with the the ST m->owner=null.
-      // executed by the lock owner.
-      if (ctr & msk) continue ;
-      ++hits ;
-      if ((hits & 0xF) == 0) {
-        // The 0xF, above, corresponds to the exponent.
-        // Consider: (msk+1)|msk
-        msk = ((msk << 2)|3) & BackOffMask ;
-      }
-
-      // Probe _owner with TATAS
-      // If this thread observes the monitor transition or flicker
-      // from locked to unlocked to locked, then the odds that this
-      // thread will acquire the lock in this spin attempt go down
-      // considerably.  The same argument applies if the CAS fails
-      // or if we observe _owner change from one non-null value to
-      // another non-null value.   In such cases we might abort
-      // the spin without prejudice or apply a "penalty" to the
-      // spin count-down variable "ctr", reducing it by 100, say.
-
-      Thread * ox = (Thread *) _owner ;
-      if (ox == NULL) {
-         ox = (Thread *) Atomic::cmpxchg_ptr (Self, &_owner, NULL) ;
-         if (ox == NULL) {
-            // The CAS succeeded -- this thread acquired ownership
-            // Take care of some bookkeeping to exit spin state.
-            if (sss && _succ == Self) {
-               _succ = NULL ;
-            }
-            if (MaxSpin > 0) Adjust (&_Spinner, -1) ;
-
-            // Increase _SpinDuration :
-            // The spin was successful (profitable) so we tend toward
-            // longer spin attempts in the future.
-            // CONSIDER: factor "ctr" into the _SpinDuration adjustment.
-            // If we acquired the lock early in the spin cycle it
-            // makes sense to increase _SpinDuration proportionally.
-            // Note that we don't clamp SpinDuration precisely at SpinLimit.
-            int x = _SpinDuration ;
-            if (x < Knob_SpinLimit) {
-                if (x < Knob_Poverty) x = Knob_Poverty ;
-                _SpinDuration = x + Knob_Bonus ;
-            }
-            return 1 ;
-         }
-
-         // The CAS failed ... we can take any of the following actions:
-         // * penalize: ctr -= Knob_CASPenalty
-         // * exit spin with prejudice -- goto Abort;
-         // * exit spin without prejudice.
-         // * Since CAS is high-latency, retry again immediately.
-         prv = ox ;
-         TEVENT (Spin: cas failed) ;
-         if (caspty == -2) break ;
-         if (caspty == -1) goto Abort ;
-         ctr -= caspty ;
-         continue ;
-      }
-
-      // Did lock ownership change hands ?
-      if (ox != prv && prv != NULL ) {
-          TEVENT (spin: Owner changed)
-          if (oxpty == -2) break ;
-          if (oxpty == -1) goto Abort ;
-          ctr -= oxpty ;
-      }
-      prv = ox ;
-
-      // Abort the spin if the owner is not executing.
-      // The owner must be executing in order to drop the lock.
-      // Spinning while the owner is OFFPROC is idiocy.
-      // Consider: ctr -= RunnablePenalty ;
-      if (Knob_OState && NotRunnable (Self, ox)) {
-         TEVENT (Spin abort - notrunnable);
-         goto Abort ;
-      }
-      if (sss && _succ == NULL ) _succ = Self ;
-   }
-
-   // Spin failed with prejudice -- reduce _SpinDuration.
-   // TODO: Use an AIMD-like policy to adjust _SpinDuration.
-   // AIMD is globally stable.
-   TEVENT (Spin failure) ;
-   {
-     int x = _SpinDuration ;
-     if (x > 0) {
-        // Consider an AIMD scheme like: x -= (x >> 3) + 100
-        // This is globally sample and tends to damp the response.
-        x -= Knob_Penalty ;
-        if (x < 0) x = 0 ;
-        _SpinDuration = x ;
-     }
-   }
-
- Abort:
-   if (MaxSpin >= 0) Adjust (&_Spinner, -1) ;
-   if (sss && _succ == Self) {
-      _succ = NULL ;
-      // Invariant: after setting succ=null a contending thread
-      // must recheck-retry _owner before parking.  This usually happens
-      // in the normal usage of TrySpin(), but it's safest
-      // to make TrySpin() as foolproof as possible.
-      OrderAccess::fence() ;
-      if (TryLock(Self) > 0) return 1 ;
-   }
-   return 0 ;
-}
-
-#define TrySpin TrySpin_VaryDuration
-
-static void DeferredInitialize () {
-  if (InitDone > 0) return ;
-  if (Atomic::cmpxchg (-1, &InitDone, 0) != 0) {
-      while (InitDone != 1) ;
-      return ;
-  }
-
-  // One-shot global initialization ...
-  // The initialization is idempotent, so we don't need locks.
-  // In the future consider doing this via os::init_2().
-  // SyncKnobs consist of <Key>=<Value> pairs in the style
-  // of environment variables.  Start by converting ':' to NUL.
-
-  if (SyncKnobs == NULL) SyncKnobs = "" ;
-
-  size_t sz = strlen (SyncKnobs) ;
-  char * knobs = (char *) malloc (sz + 2) ;
-  if (knobs == NULL) {
-     vm_exit_out_of_memory (sz + 2, "Parse SyncKnobs") ;
-     guarantee (0, "invariant") ;
-  }
-  strcpy (knobs, SyncKnobs) ;
-  knobs[sz+1] = 0 ;
-  for (char * p = knobs ; *p ; p++) {
-     if (*p == ':') *p = 0 ;
-  }
-
-  #define SETKNOB(x) { Knob_##x = kvGetInt (knobs, #x, Knob_##x); }
-  SETKNOB(ReportSettings) ;
-  SETKNOB(Verbose) ;
-  SETKNOB(FixedSpin) ;
-  SETKNOB(SpinLimit) ;
-  SETKNOB(SpinBase) ;
-  SETKNOB(SpinBackOff);
-  SETKNOB(CASPenalty) ;
-  SETKNOB(OXPenalty) ;
-  SETKNOB(LogSpins) ;
-  SETKNOB(SpinSetSucc) ;
-  SETKNOB(SuccEnabled) ;
-  SETKNOB(SuccRestrict) ;
-  SETKNOB(Penalty) ;
-  SETKNOB(Bonus) ;
-  SETKNOB(BonusB) ;
-  SETKNOB(Poverty) ;
-  SETKNOB(SpinAfterFutile) ;
-  SETKNOB(UsePause) ;
-  SETKNOB(SpinEarly) ;
-  SETKNOB(OState) ;
-  SETKNOB(MaxSpinners) ;
-  SETKNOB(PreSpin) ;
-  SETKNOB(ExitPolicy) ;
-  SETKNOB(QMode);
-  SETKNOB(ResetEvent) ;
-  SETKNOB(MoveNotifyee) ;
-  SETKNOB(FastHSSEC) ;
-  #undef SETKNOB
-
-  if (os::is_MP()) {
-     BackOffMask = (1 << Knob_SpinBackOff) - 1 ;
-     if (Knob_ReportSettings) ::printf ("BackOffMask=%X\n", BackOffMask) ;
-     // CONSIDER: BackOffMask = ROUNDUP_NEXT_POWER2 (ncpus-1)
-  } else {
-     Knob_SpinLimit = 0 ;
-     Knob_SpinBase  = 0 ;
-     Knob_PreSpin   = 0 ;
-     Knob_FixedSpin = -1 ;
-  }
-
-  if (Knob_LogSpins == 0) {
-     ObjectSynchronizer::_sync_FailedSpins = NULL ;
-  }
-
-  free (knobs) ;
-  OrderAccess::fence() ;
-  InitDone = 1 ;
-}
-
-// Theory of operations -- Monitors lists, thread residency, etc:
-//
-// * A thread acquires ownership of a monitor by successfully
-//   CAS()ing the _owner field from null to non-null.
-//
-// * Invariant: A thread appears on at most one monitor list --
-//   cxq, EntryList or WaitSet -- at any one time.
-//
-// * Contending threads "push" themselves onto the cxq with CAS
-//   and then spin/park.
-//
-// * After a contending thread eventually acquires the lock it must
-//   dequeue itself from either the EntryList or the cxq.
-//
-// * The exiting thread identifies and unparks an "heir presumptive"
-//   tentative successor thread on the EntryList.  Critically, the
-//   exiting thread doesn't unlink the successor thread from the EntryList.
-//   After having been unparked, the wakee will recontend for ownership of
-//   the monitor.   The successor (wakee) will either acquire the lock or
-//   re-park itself.
-//
-//   Succession is provided for by a policy of competitive handoff.
-//   The exiting thread does _not_ grant or pass ownership to the
-//   successor thread.  (This is also referred to as "handoff" succession").
-//   Instead the exiting thread releases ownership and possibly wakes
-//   a successor, so the successor can (re)compete for ownership of the lock.
-//   If the EntryList is empty but the cxq is populated the exiting
-//   thread will drain the cxq into the EntryList.  It does so by
-//   by detaching the cxq (installing null with CAS) and folding
-//   the threads from the cxq into the EntryList.  The EntryList is
-//   doubly linked, while the cxq is singly linked because of the
-//   CAS-based "push" used to enqueue recently arrived threads (RATs).
-//
-// * Concurrency invariants:
-//
-//   -- only the monitor owner may access or mutate the EntryList.
-//      The mutex property of the monitor itself protects the EntryList
-//      from concurrent interference.
-//   -- Only the monitor owner may detach the cxq.
-//
-// * The monitor entry list operations avoid locks, but strictly speaking
-//   they're not lock-free.  Enter is lock-free, exit is not.
-//   See http://j2se.east/~dice/PERSIST/040825-LockFreeQueues.html
-//
-// * The cxq can have multiple concurrent "pushers" but only one concurrent
-//   detaching thread.  This mechanism is immune from the ABA corruption.
-//   More precisely, the CAS-based "push" onto cxq is ABA-oblivious.
-//
-// * Taken together, the cxq and the EntryList constitute or form a
-//   single logical queue of threads stalled trying to acquire the lock.
-//   We use two distinct lists to improve the odds of a constant-time
-//   dequeue operation after acquisition (in the ::enter() epilog) and
-//   to reduce heat on the list ends.  (c.f. Michael Scott's "2Q" algorithm).
-//   A key desideratum is to minimize queue & monitor metadata manipulation
-//   that occurs while holding the monitor lock -- that is, we want to
-//   minimize monitor lock holds times.  Note that even a small amount of
-//   fixed spinning will greatly reduce the # of enqueue-dequeue operations
-//   on EntryList|cxq.  That is, spinning relieves contention on the "inner"
-//   locks and monitor metadata.
-//
-//   Cxq points to the the set of Recently Arrived Threads attempting entry.
-//   Because we push threads onto _cxq with CAS, the RATs must take the form of
-//   a singly-linked LIFO.  We drain _cxq into EntryList  at unlock-time when
-//   the unlocking thread notices that EntryList is null but _cxq is != null.
-//
-//   The EntryList is ordered by the prevailing queue discipline and
-//   can be organized in any convenient fashion, such as a doubly-linked list or
-//   a circular doubly-linked list.  Critically, we want insert and delete operations
-//   to operate in constant-time.  If we need a priority queue then something akin
-//   to Solaris' sleepq would work nicely.  Viz.,
-//   http://agg.eng/ws/on10_nightly/source/usr/src/uts/common/os/sleepq.c.
-//   Queue discipline is enforced at ::exit() time, when the unlocking thread
-//   drains the cxq into the EntryList, and orders or reorders the threads on the
-//   EntryList accordingly.
-//
-//   Barring "lock barging", this mechanism provides fair cyclic ordering,
-//   somewhat similar to an elevator-scan.
-//
-// * The monitor synchronization subsystem avoids the use of native
-//   synchronization primitives except for the narrow platform-specific
-//   park-unpark abstraction.  See the comments in os_solaris.cpp regarding
-//   the semantics of park-unpark.  Put another way, this monitor implementation
-//   depends only on atomic operations and park-unpark.  The monitor subsystem
-//   manages all RUNNING->BLOCKED and BLOCKED->READY transitions while the
-//   underlying OS manages the READY<->RUN transitions.
-//
-// * Waiting threads reside on the WaitSet list -- wait() puts
-//   the caller onto the WaitSet.
-//
-// * notify() or notifyAll() simply transfers threads from the WaitSet to
-//   either the EntryList or cxq.  Subsequent exit() operations will
-//   unpark the notifyee.  Unparking a notifee in notify() is inefficient -
-//   it's likely the notifyee would simply impale itself on the lock held
-//   by the notifier.
-//
-// * An interesting alternative is to encode cxq as (List,LockByte) where
-//   the LockByte is 0 iff the monitor is owned.  _owner is simply an auxiliary
-//   variable, like _recursions, in the scheme.  The threads or Events that form
-//   the list would have to be aligned in 256-byte addresses.  A thread would
-//   try to acquire the lock or enqueue itself with CAS, but exiting threads
-//   could use a 1-0 protocol and simply STB to set the LockByte to 0.
-//   Note that is is *not* word-tearing, but it does presume that full-word
-//   CAS operations are coherent with intermix with STB operations.  That's true
-//   on most common processors.
-//
-// * See also http://blogs.sun.com/dave
-
-
-void ATTR ObjectMonitor::EnterI (TRAPS) {
-    Thread * Self = THREAD ;
-    assert (Self->is_Java_thread(), "invariant") ;
-    assert (((JavaThread *) Self)->thread_state() == _thread_blocked   , "invariant") ;
-
-    // Try the lock - TATAS
-    if (TryLock (Self) > 0) {
-        assert (_succ != Self              , "invariant") ;
-        assert (_owner == Self             , "invariant") ;
-        assert (_Responsible != Self       , "invariant") ;
-        return ;
-    }
-
-    DeferredInitialize () ;
-
-    // We try one round of spinning *before* enqueueing Self.
-    //
-    // If the _owner is ready but OFFPROC we could use a YieldTo()
-    // operation to donate the remainder of this thread's quantum
-    // to the owner.  This has subtle but beneficial affinity
-    // effects.
-
-    if (TrySpin (Self) > 0) {
-        assert (_owner == Self        , "invariant") ;
-        assert (_succ != Self         , "invariant") ;
-        assert (_Responsible != Self  , "invariant") ;
-        return ;
-    }
-
-    // The Spin failed -- Enqueue and park the thread ...
-    assert (_succ  != Self            , "invariant") ;
-    assert (_owner != Self            , "invariant") ;
-    assert (_Responsible != Self      , "invariant") ;
-
-    // Enqueue "Self" on ObjectMonitor's _cxq.
-    //
-    // Node acts as a proxy for Self.
-    // As an aside, if were to ever rewrite the synchronization code mostly
-    // in Java, WaitNodes, ObjectMonitors, and Events would become 1st-class
-    // Java objects.  This would avoid awkward lifecycle and liveness issues,
-    // as well as eliminate a subset of ABA issues.
-    // TODO: eliminate ObjectWaiter and enqueue either Threads or Events.
-    //
-
-    ObjectWaiter node(Self) ;
-    Self->_ParkEvent->reset() ;
-    node._prev   = (ObjectWaiter *) 0xBAD ;
-    node.TState  = ObjectWaiter::TS_CXQ ;
-
-    // Push "Self" onto the front of the _cxq.
-    // Once on cxq/EntryList, Self stays on-queue until it acquires the lock.
-    // Note that spinning tends to reduce the rate at which threads
-    // enqueue and dequeue on EntryList|cxq.
-    ObjectWaiter * nxt ;
-    for (;;) {
-        node._next = nxt = _cxq ;
-        if (Atomic::cmpxchg_ptr (&node, &_cxq, nxt) == nxt) break ;
-
-        // Interference - the CAS failed because _cxq changed.  Just retry.
-        // As an optional optimization we retry the lock.
-        if (TryLock (Self) > 0) {
-            assert (_succ != Self         , "invariant") ;
-            assert (_owner == Self        , "invariant") ;
-            assert (_Responsible != Self  , "invariant") ;
-            return ;
-        }
-    }
-
-    // Check for cxq|EntryList edge transition to non-null.  This indicates
-    // the onset of contention.  While contention persists exiting threads
-    // will use a ST:MEMBAR:LD 1-1 exit protocol.  When contention abates exit
-    // operations revert to the faster 1-0 mode.  This enter operation may interleave
-    // (race) a concurrent 1-0 exit operation, resulting in stranding, so we
-    // arrange for one of the contending thread to use a timed park() operations
-    // to detect and recover from the race.  (Stranding is form of progress failure
-    // where the monitor is unlocked but all the contending threads remain parked).
-    // That is, at least one of the contended threads will periodically poll _owner.
-    // One of the contending threads will become the designated "Responsible" thread.
-    // The Responsible thread uses a timed park instead of a normal indefinite park
-    // operation -- it periodically wakes and checks for and recovers from potential
-    // strandings admitted by 1-0 exit operations.   We need at most one Responsible
-    // thread per-monitor at any given moment.  Only threads on cxq|EntryList may
-    // be responsible for a monitor.
-    //
-    // Currently, one of the contended threads takes on the added role of "Responsible".
-    // A viable alternative would be to use a dedicated "stranding checker" thread
-    // that periodically iterated over all the threads (or active monitors) and unparked
-    // successors where there was risk of stranding.  This would help eliminate the
-    // timer scalability issues we see on some platforms as we'd only have one thread
-    // -- the checker -- parked on a timer.
-
-    if ((SyncFlags & 16) == 0 && nxt == NULL && _EntryList == NULL) {
-        // Try to assume the role of responsible thread for the monitor.
-        // CONSIDER:  ST vs CAS vs { if (Responsible==null) Responsible=Self }
-        Atomic::cmpxchg_ptr (Self, &_Responsible, NULL) ;
-    }
-
-    // The lock have been released while this thread was occupied queueing
-    // itself onto _cxq.  To close the race and avoid "stranding" and
-    // progress-liveness failure we must resample-retry _owner before parking.
-    // Note the Dekker/Lamport duality: ST cxq; MEMBAR; LD Owner.
-    // In this case the ST-MEMBAR is accomplished with CAS().
-    //
-    // TODO: Defer all thread state transitions until park-time.
-    // Since state transitions are heavy and inefficient we'd like
-    // to defer the state transitions until absolutely necessary,
-    // and in doing so avoid some transitions ...
-
-    TEVENT (Inflated enter - Contention) ;
-    int nWakeups = 0 ;
-    int RecheckInterval = 1 ;
-
-    for (;;) {
-
-        if (TryLock (Self) > 0) break ;
-        assert (_owner != Self, "invariant") ;
-
-        if ((SyncFlags & 2) && _Responsible == NULL) {
-           Atomic::cmpxchg_ptr (Self, &_Responsible, NULL) ;
-        }
-
-        // park self
-        if (_Responsible == Self || (SyncFlags & 1)) {
-            TEVENT (Inflated enter - park TIMED) ;
-            Self->_ParkEvent->park ((jlong) RecheckInterval) ;
-            // Increase the RecheckInterval, but clamp the value.
-            RecheckInterval *= 8 ;
-            if (RecheckInterval > 1000) RecheckInterval = 1000 ;
-        } else {
-            TEVENT (Inflated enter - park UNTIMED) ;
-            Self->_ParkEvent->park() ;
-        }
-
-        if (TryLock(Self) > 0) break ;
-
-        // The lock is still contested.
-        // Keep a tally of the # of futile wakeups.
-        // Note that the counter is not protected by a lock or updated by atomics.
-        // That is by design - we trade "lossy" counters which are exposed to
-        // races during updates for a lower probe effect.
-        TEVENT (Inflated enter - Futile wakeup) ;
-        if (ObjectSynchronizer::_sync_FutileWakeups != NULL) {
-           ObjectSynchronizer::_sync_FutileWakeups->inc() ;
-        }
-        ++ nWakeups ;
-
-        // Assuming this is not a spurious wakeup we'll normally find _succ == Self.
-        // We can defer clearing _succ until after the spin completes
-        // TrySpin() must tolerate being called with _succ == Self.
-        // Try yet another round of adaptive spinning.
-        if ((Knob_SpinAfterFutile & 1) && TrySpin (Self) > 0) break ;
-
-        // We can find that we were unpark()ed and redesignated _succ while
-        // we were spinning.  That's harmless.  If we iterate and call park(),
-        // park() will consume the event and return immediately and we'll
-        // just spin again.  This pattern can repeat, leaving _succ to simply
-        // spin on a CPU.  Enable Knob_ResetEvent to clear pending unparks().
-        // Alternately, we can sample fired() here, and if set, forgo spinning
-        // in the next iteration.
-
-        if ((Knob_ResetEvent & 1) && Self->_ParkEvent->fired()) {
-           Self->_ParkEvent->reset() ;
-           OrderAccess::fence() ;
-        }
-        if (_succ == Self) _succ = NULL ;
-
-        // Invariant: after clearing _succ a thread *must* retry _owner before parking.
-        OrderAccess::fence() ;
-    }
-
-    // Egress :
-    // Self has acquired the lock -- Unlink Self from the cxq or EntryList.
-    // Normally we'll find Self on the EntryList .
-    // From the perspective of the lock owner (this thread), the
-    // EntryList is stable and cxq is prepend-only.
-    // The head of cxq is volatile but the interior is stable.
-    // In addition, Self.TState is stable.
-
-    assert (_owner == Self      , "invariant") ;
-    assert (object() != NULL    , "invariant") ;
-    // I'd like to write:
-    //   guarantee (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
-    // but as we're at a safepoint that's not safe.
-
-    UnlinkAfterAcquire (Self, &node) ;
-    if (_succ == Self) _succ = NULL ;
-
-    assert (_succ != Self, "invariant") ;
-    if (_Responsible == Self) {
-        _Responsible = NULL ;
-        // Dekker pivot-point.
-        // Consider OrderAccess::storeload() here
-
-        // We may leave threads on cxq|EntryList without a designated
-        // "Responsible" thread.  This is benign.  When this thread subsequently
-        // exits the monitor it can "see" such preexisting "old" threads --
-        // threads that arrived on the cxq|EntryList before the fence, above --
-        // by LDing cxq|EntryList.  Newly arrived threads -- that is, threads
-        // that arrive on cxq after the ST:MEMBAR, above -- will set Responsible
-        // non-null and elect a new "Responsible" timer thread.
-        //
-        // This thread executes:
-        //    ST Responsible=null; MEMBAR    (in enter epilog - here)
-        //    LD cxq|EntryList               (in subsequent exit)
-        //
-        // Entering threads in the slow/contended path execute:
-        //    ST cxq=nonnull; MEMBAR; LD Responsible (in enter prolog)
-        //    The (ST cxq; MEMBAR) is accomplished with CAS().
-        //
-        // The MEMBAR, above, prevents the LD of cxq|EntryList in the subsequent
-        // exit operation from floating above the ST Responsible=null.
-        //
-        // In *practice* however, EnterI() is always followed by some atomic
-        // operation such as the decrement of _count in ::enter().  Those atomics
-        // obviate the need for the explicit MEMBAR, above.
-    }
-
-    // We've acquired ownership with CAS().
-    // CAS is serializing -- it has MEMBAR/FENCE-equivalent semantics.
-    // But since the CAS() this thread may have also stored into _succ,
-    // EntryList, cxq or Responsible.  These meta-data updates must be
-    // visible __before this thread subsequently drops the lock.
-    // Consider what could occur if we didn't enforce this constraint --
-    // STs to monitor meta-data and user-data could reorder with (become
-    // visible after) the ST in exit that drops ownership of the lock.
-    // Some other thread could then acquire the lock, but observe inconsistent
-    // or old monitor meta-data and heap data.  That violates the JMM.
-    // To that end, the 1-0 exit() operation must have at least STST|LDST
-    // "release" barrier semantics.  Specifically, there must be at least a
-    // STST|LDST barrier in exit() before the ST of null into _owner that drops
-    // the lock.   The barrier ensures that changes to monitor meta-data and data
-    // protected by the lock will be visible before we release the lock, and
-    // therefore before some other thread (CPU) has a chance to acquire the lock.
-    // See also: http://gee.cs.oswego.edu/dl/jmm/cookbook.html.
-    //
-    // Critically, any prior STs to _succ or EntryList must be visible before
-    // the ST of null into _owner in the *subsequent* (following) corresponding
-    // monitorexit.  Recall too, that in 1-0 mode monitorexit does not necessarily
-    // execute a serializing instruction.
-
-    if (SyncFlags & 8) {
-       OrderAccess::fence() ;
-    }
-    return ;
-}
-
-// ExitSuspendEquivalent:
-// A faster alternate to handle_special_suspend_equivalent_condition()
-//
-// handle_special_suspend_equivalent_condition() unconditionally
-// acquires the SR_lock.  On some platforms uncontended MutexLocker()
-// operations have high latency.  Note that in ::enter() we call HSSEC
-// while holding the monitor, so we effectively lengthen the critical sections.
-//
-// There are a number of possible solutions:
-//
-// A.  To ameliorate the problem we might also defer state transitions
-//     to as late as possible -- just prior to parking.
-//     Given that, we'd call HSSEC after having returned from park(),
-//     but before attempting to acquire the monitor.  This is only a
-//     partial solution.  It avoids calling HSSEC while holding the
-//     monitor (good), but it still increases successor reacquisition latency --
-//     the interval between unparking a successor and the time the successor
-//     resumes and retries the lock.  See ReenterI(), which defers state transitions.
-//     If we use this technique we can also avoid EnterI()-exit() loop
-//     in ::enter() where we iteratively drop the lock and then attempt
-//     to reacquire it after suspending.
-//
-// B.  In the future we might fold all the suspend bits into a
-//     composite per-thread suspend flag and then update it with CAS().
-//     Alternately, a Dekker-like mechanism with multiple variables
-//     would suffice:
-//       ST Self->_suspend_equivalent = false
-//       MEMBAR
-//       LD Self_>_suspend_flags
-//
-
-
-bool ObjectMonitor::ExitSuspendEquivalent (JavaThread * jSelf) {
-   int Mode = Knob_FastHSSEC ;
-   if (Mode && !jSelf->is_external_suspend()) {
-      assert (jSelf->is_suspend_equivalent(), "invariant") ;
-      jSelf->clear_suspend_equivalent() ;
-      if (2 == Mode) OrderAccess::storeload() ;
-      if (!jSelf->is_external_suspend()) return false ;
-      // We raced a suspension -- fall thru into the slow path
-      TEVENT (ExitSuspendEquivalent - raced) ;
-      jSelf->set_suspend_equivalent() ;
-   }
-   return jSelf->handle_special_suspend_equivalent_condition() ;
-}
-
-
-// ReenterI() is a specialized inline form of the latter half of the
-// contended slow-path from EnterI().  We use ReenterI() only for
-// monitor reentry in wait().
-//
-// In the future we should reconcile EnterI() and ReenterI(), adding
-// Knob_Reset and Knob_SpinAfterFutile support and restructuring the
-// loop accordingly.
-
-void ATTR ObjectMonitor::ReenterI (Thread * Self, ObjectWaiter * SelfNode) {
-    assert (Self != NULL                , "invariant") ;
-    assert (SelfNode != NULL            , "invariant") ;
-    assert (SelfNode->_thread == Self   , "invariant") ;
-    assert (_waiters > 0                , "invariant") ;
-    assert (((oop)(object()))->mark() == markOopDesc::encode(this) , "invariant") ;
-    assert (((JavaThread *)Self)->thread_state() != _thread_blocked, "invariant") ;
-    JavaThread * jt = (JavaThread *) Self ;
-
-    int nWakeups = 0 ;
-    for (;;) {
-        ObjectWaiter::TStates v = SelfNode->TState ;
-        guarantee (v == ObjectWaiter::TS_ENTER || v == ObjectWaiter::TS_CXQ, "invariant") ;
-        assert    (_owner != Self, "invariant") ;
-
-        if (TryLock (Self) > 0) break ;
-        if (TrySpin (Self) > 0) break ;
-
-        TEVENT (Wait Reentry - parking) ;
-
-        // State transition wrappers around park() ...
-        // ReenterI() wisely defers state transitions until
-        // it's clear we must park the thread.
-        {
-           OSThreadContendState osts(Self->osthread());
-           ThreadBlockInVM tbivm(jt);
-
-           // cleared by handle_special_suspend_equivalent_condition()
-           // or java_suspend_self()
-           jt->set_suspend_equivalent();
-           if (SyncFlags & 1) {
-              Self->_ParkEvent->park ((jlong)1000) ;
-           } else {
-              Self->_ParkEvent->park () ;
-           }
-
-           // were we externally suspended while we were waiting?
-           for (;;) {
-              if (!ExitSuspendEquivalent (jt)) break ;
-              if (_succ == Self) { _succ = NULL; OrderAccess::fence(); }
-              jt->java_suspend_self();
-              jt->set_suspend_equivalent();
-           }
-        }
-
-        // Try again, but just so we distinguish between futile wakeups and
-        // successful wakeups.  The following test isn't algorithmically
-        // necessary, but it helps us maintain sensible statistics.
-        if (TryLock(Self) > 0) break ;
-
-        // The lock is still contested.
-        // Keep a tally of the # of futile wakeups.
-        // Note that the counter is not protected by a lock or updated by atomics.
-        // That is by design - we trade "lossy" counters which are exposed to
-        // races during updates for a lower probe effect.
-        TEVENT (Wait Reentry - futile wakeup) ;
-        ++ nWakeups ;
-
-        // Assuming this is not a spurious wakeup we'll normally
-        // find that _succ == Self.
-        if (_succ == Self) _succ = NULL ;
-
-        // Invariant: after clearing _succ a contending thread
-        // *must* retry  _owner before parking.
-        OrderAccess::fence() ;
-
-        if (ObjectSynchronizer::_sync_FutileWakeups != NULL) {
-          ObjectSynchronizer::_sync_FutileWakeups->inc() ;
-        }
-    }
-
-    // Self has acquired the lock -- Unlink Self from the cxq or EntryList .
-    // Normally we'll find Self on the EntryList.
-    // Unlinking from the EntryList is constant-time and atomic-free.
-    // From the perspective of the lock owner (this thread), the
-    // EntryList is stable and cxq is prepend-only.
-    // The head of cxq is volatile but the interior is stable.
-    // In addition, Self.TState is stable.
-
-    assert (_owner == Self, "invariant") ;
-    assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
-    UnlinkAfterAcquire (Self, SelfNode) ;
-    if (_succ == Self) _succ = NULL ;
-    assert (_succ != Self, "invariant") ;
-    SelfNode->TState = ObjectWaiter::TS_RUN ;
-    OrderAccess::fence() ;      // see comments at the end of EnterI()
-}
-
-bool ObjectMonitor::try_enter(Thread* THREAD) {
-  if (THREAD != _owner) {
-    if (THREAD->is_lock_owned ((address)_owner)) {
-       assert(_recursions == 0, "internal state error");
-       _owner = THREAD ;
-       _recursions = 1 ;
-       OwnerIsThread = 1 ;
-       return true;
-    }
-    if (Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) != NULL) {
-      return false;
-    }
-    return true;
-  } else {
-    _recursions++;
-    return true;
-  }
-}
-
-void ATTR ObjectMonitor::enter(TRAPS) {
-  // The following code is ordered to check the most common cases first
-  // and to reduce RTS->RTO cache line upgrades on SPARC and IA32 processors.
-  Thread * const Self = THREAD ;
-  void * cur ;
-
-  cur = Atomic::cmpxchg_ptr (Self, &_owner, NULL) ;
-  if (cur == NULL) {
-     // Either ASSERT _recursions == 0 or explicitly set _recursions = 0.
-     assert (_recursions == 0   , "invariant") ;
-     assert (_owner      == Self, "invariant") ;
-     // CONSIDER: set or assert OwnerIsThread == 1
-     return ;
-  }
-
-  if (cur == Self) {
-     // TODO-FIXME: check for integer overflow!  BUGID 6557169.
-     _recursions ++ ;
-     return ;
-  }
-
-  if (Self->is_lock_owned ((address)cur)) {
-    assert (_recursions == 0, "internal state error");
-    _recursions = 1 ;
-    // Commute owner from a thread-specific on-stack BasicLockObject address to
-    // a full-fledged "Thread *".
-    _owner = Self ;
-    OwnerIsThread = 1 ;
-    return ;
-  }
-
-  // We've encountered genuine contention.
-  assert (Self->_Stalled == 0, "invariant") ;
-  Self->_Stalled = intptr_t(this) ;
-
-  // Try one round of spinning *before* enqueueing Self
-  // and before going through the awkward and expensive state
-  // transitions.  The following spin is strictly optional ...
-  // Note that if we acquire the monitor from an initial spin
-  // we forgo posting JVMTI events and firing DTRACE probes.
-  if (Knob_SpinEarly && TrySpin (Self) > 0) {
-     assert (_owner == Self      , "invariant") ;
-     assert (_recursions == 0    , "invariant") ;
-     assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
-     Self->_Stalled = 0 ;
-     return ;
-  }
-
-  assert (_owner != Self          , "invariant") ;
-  assert (_succ  != Self          , "invariant") ;
-  assert (Self->is_Java_thread()  , "invariant") ;
-  JavaThread * jt = (JavaThread *) Self ;
-  assert (!SafepointSynchronize::is_at_safepoint(), "invariant") ;
-  assert (jt->thread_state() != _thread_blocked   , "invariant") ;
-  assert (this->object() != NULL  , "invariant") ;
-  assert (_count >= 0, "invariant") ;
-
-  // Prevent deflation at STW-time.  See deflate_idle_monitors() and is_busy().
-  // Ensure the object-monitor relationship remains stable while there's contention.
-  Atomic::inc_ptr(&_count);
-
-  { // Change java thread status to indicate blocked on monitor enter.
-    JavaThreadBlockedOnMonitorEnterState jtbmes(jt, this);
-
-    DTRACE_MONITOR_PROBE(contended__enter, this, object(), jt);
-    if (JvmtiExport::should_post_monitor_contended_enter()) {
-      JvmtiExport::post_monitor_contended_enter(jt, this);
-    }
-
-    OSThreadContendState osts(Self->osthread());
-    ThreadBlockInVM tbivm(jt);
-
-    Self->set_current_pending_monitor(this);
-
-    // TODO-FIXME: change the following for(;;) loop to straight-line code.
-    for (;;) {
-      jt->set_suspend_equivalent();
-      // cleared by handle_special_suspend_equivalent_condition()
-      // or java_suspend_self()
-
-      EnterI (THREAD) ;
-
-      if (!ExitSuspendEquivalent(jt)) break ;
-
-      //
-      // We have acquired the contended monitor, but while we were
-      // waiting another thread suspended us. We don't want to enter
-      // the monitor while suspended because that would surprise the
-      // thread that suspended us.
-      //
-          _recursions = 0 ;
-      _succ = NULL ;
-      exit (Self) ;
-
-      jt->java_suspend_self();
-    }
-    Self->set_current_pending_monitor(NULL);
-  }
-
-  Atomic::dec_ptr(&_count);
-  assert (_count >= 0, "invariant") ;
-  Self->_Stalled = 0 ;
-
-  // Must either set _recursions = 0 or ASSERT _recursions == 0.
-  assert (_recursions == 0     , "invariant") ;
-  assert (_owner == Self       , "invariant") ;
-  assert (_succ  != Self       , "invariant") ;
-  assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
-
-  // The thread -- now the owner -- is back in vm mode.
-  // Report the glorious news via TI,DTrace and jvmstat.
-  // The probe effect is non-trivial.  All the reportage occurs
-  // while we hold the monitor, increasing the length of the critical
-  // section.  Amdahl's parallel speedup law comes vividly into play.
-  //
-  // Another option might be to aggregate the events (thread local or
-  // per-monitor aggregation) and defer reporting until a more opportune
-  // time -- such as next time some thread encounters contention but has
-  // yet to acquire the lock.  While spinning that thread could
-  // spinning we could increment JVMStat counters, etc.
-
-  DTRACE_MONITOR_PROBE(contended__entered, this, object(), jt);
-  if (JvmtiExport::should_post_monitor_contended_entered()) {
-    JvmtiExport::post_monitor_contended_entered(jt, this);
-  }
-  if (ObjectSynchronizer::_sync_ContendedLockAttempts != NULL) {
-     ObjectSynchronizer::_sync_ContendedLockAttempts->inc() ;
-  }
-}
-
-void ObjectMonitor::ExitEpilog (Thread * Self, ObjectWaiter * Wakee) {
-   assert (_owner == Self, "invariant") ;
-
-   // Exit protocol:
-   // 1. ST _succ = wakee
-   // 2. membar #loadstore|#storestore;
-   // 2. ST _owner = NULL
-   // 3. unpark(wakee)
-
-   _succ = Knob_SuccEnabled ? Wakee->_thread : NULL ;
-   ParkEvent * Trigger = Wakee->_event ;
+};
 
-   // Hygiene -- once we've set _owner = NULL we can't safely dereference Wakee again.
-   // The thread associated with Wakee may have grabbed the lock and "Wakee" may be
-   // out-of-scope (non-extant).
-   Wakee  = NULL ;
-
-   // Drop the lock
-   OrderAccess::release_store_ptr (&_owner, NULL) ;
-   OrderAccess::fence() ;                               // ST _owner vs LD in unpark()
-
-   // TODO-FIXME:
-   // If there's a safepoint pending the best policy would be to
-   // get _this thread to a safepoint and only wake the successor
-   // after the safepoint completed.  monitorexit uses a "leaf"
-   // state transition, however, so this thread can't become
-   // safe at this point in time.  (Its stack isn't walkable).
-   // The next best thing is to defer waking the successor by
-   // adding to a list of thread to be unparked after at the
-   // end of the forthcoming STW).
-   if (SafepointSynchronize::do_call_back()) {
-      TEVENT (unpark before SAFEPOINT) ;
-   }
-
-   // Possible optimizations ...
-   //
-   // * Consider: set Wakee->UnparkTime = timeNow()
-   //   When the thread wakes up it'll compute (timeNow() - Self->UnparkTime()).
-   //   By measuring recent ONPROC latency we can approximate the
-   //   system load.  In turn, we can feed that information back
-   //   into the spinning & succession policies.
-   //   (ONPROC latency correlates strongly with load).
-   //
-   // * Pull affinity:
-   //   If the wakee is cold then transiently setting it's affinity
-   //   to the current CPU is a good idea.
-   //   See http://j2se.east/~dice/PERSIST/050624-PullAffinity.txt
-   DTRACE_MONITOR_PROBE(contended__exit, this, object(), Self);
-   Trigger->unpark() ;
-
-   // Maintain stats and report events to JVMTI
-   if (ObjectSynchronizer::_sync_Parks != NULL) {
-      ObjectSynchronizer::_sync_Parks->inc() ;
-   }
-}
-
-
-// exit()
-// ~~~~~~
-// Note that the collector can't reclaim the objectMonitor or deflate
-// the object out from underneath the thread calling ::exit() as the
-// thread calling ::exit() never transitions to a stable state.
-// This inhibits GC, which in turn inhibits asynchronous (and
-// inopportune) reclamation of "this".
-//
-// We'd like to assert that: (THREAD->thread_state() != _thread_blocked) ;
-// There's one exception to the claim above, however.  EnterI() can call
-// exit() to drop a lock if the acquirer has been externally suspended.
-// In that case exit() is called with _thread_state as _thread_blocked,
-// but the monitor's _count field is > 0, which inhibits reclamation.
-//
-// 1-0 exit
-// ~~~~~~~~
-// ::exit() uses a canonical 1-1 idiom with a MEMBAR although some of
-// the fast-path operators have been optimized so the common ::exit()
-// operation is 1-0.  See i486.ad fast_unlock(), for instance.
-// The code emitted by fast_unlock() elides the usual MEMBAR.  This
-// greatly improves latency -- MEMBAR and CAS having considerable local
-// latency on modern processors -- but at the cost of "stranding".  Absent the
-// MEMBAR, a thread in fast_unlock() can race a thread in the slow
-// ::enter() path, resulting in the entering thread being stranding
-// and a progress-liveness failure.   Stranding is extremely rare.
-// We use timers (timed park operations) & periodic polling to detect
-// and recover from stranding.  Potentially stranded threads periodically
-// wake up and poll the lock.  See the usage of the _Responsible variable.
-//
-// The CAS() in enter provides for safety and exclusion, while the CAS or
-// MEMBAR in exit provides for progress and avoids stranding.  1-0 locking
-// eliminates the CAS/MEMBAR from the exist path, but it admits stranding.
-// We detect and recover from stranding with timers.
+// Release all inflated monitors owned by THREAD.  Lightweight monitors are
+// ignored.  This is meant to be called during JNI thread detach which assumes
+// all remaining monitors are heavyweight.  All exceptions are swallowed.
+// Scanning the extant monitor list can be time consuming.
+// A simple optimization is to add a per-thread flag that indicates a thread
+// called jni_monitorenter() during its lifetime.
 //
-// If a thread transiently strands it'll park until (a) another
-// thread acquires the lock and then drops the lock, at which time the
-// exiting thread will notice and unpark the stranded thread, or, (b)
-// the timer expires.  If the lock is high traffic then the stranding latency
-// will be low due to (a).  If the lock is low traffic then the odds of
-// stranding are lower, although the worst-case stranding latency
-// is longer.  Critically, we don't want to put excessive load in the
-// platform's timer subsystem.  We want to minimize both the timer injection
-// rate (timers created/sec) as well as the number of timers active at
-// any one time.  (more precisely, we want to minimize timer-seconds, which is
-// the integral of the # of active timers at any instant over time).
-// Both impinge on OS scalability.  Given that, at most one thread parked on
-// a monitor will use a timer.
-
-void ATTR ObjectMonitor::exit(TRAPS) {
-   Thread * Self = THREAD ;
-   if (THREAD != _owner) {
-     if (THREAD->is_lock_owned((address) _owner)) {
-       // Transmute _owner from a BasicLock pointer to a Thread address.
-       // We don't need to hold _mutex for this transition.
-       // Non-null to Non-null is safe as long as all readers can
-       // tolerate either flavor.
-       assert (_recursions == 0, "invariant") ;
-       _owner = THREAD ;
-       _recursions = 0 ;
-       OwnerIsThread = 1 ;
-     } else {
-       // NOTE: we need to handle unbalanced monitor enter/exit
-       // in native code by throwing an exception.
-       // TODO: Throw an IllegalMonitorStateException ?
-       TEVENT (Exit - Throw IMSX) ;
-       assert(false, "Non-balanced monitor enter/exit!");
-       if (false) {
-          THROW(vmSymbols::java_lang_IllegalMonitorStateException());
-       }
-       return;
-     }
-   }
-
-   if (_recursions != 0) {
-     _recursions--;        // this is simple recursive enter
-     TEVENT (Inflated exit - recursive) ;
-     return ;
-   }
-
-   // Invariant: after setting Responsible=null an thread must execute
-   // a MEMBAR or other serializing instruction before fetching EntryList|cxq.
-   if ((SyncFlags & 4) == 0) {
-      _Responsible = NULL ;
-   }
-
-   for (;;) {
-      assert (THREAD == _owner, "invariant") ;
-
-      // Fast-path monitor exit:
-      //
-      // Observe the Dekker/Lamport duality:
-      // A thread in ::exit() executes:
-      //   ST Owner=null; MEMBAR; LD EntryList|cxq.
-      // A thread in the contended ::enter() path executes the complementary:
-      //   ST EntryList|cxq = nonnull; MEMBAR; LD Owner.
-      //
-      // Note that there's a benign race in the exit path.  We can drop the
-      // lock, another thread can reacquire the lock immediately, and we can
-      // then wake a thread unnecessarily (yet another flavor of futile wakeup).
-      // This is benign, and we've structured the code so the windows are short
-      // and the frequency of such futile wakeups is low.
-      //
-      // We could eliminate the race by encoding both the "LOCKED" state and
-      // the queue head in a single word.  Exit would then use either CAS to
-      // clear the LOCKED bit/byte.  This precludes the desirable 1-0 optimization,
-      // however.
-      //
-      // Possible fast-path ::exit() optimization:
-      // The current fast-path exit implementation fetches both cxq and EntryList.
-      // See also i486.ad fast_unlock().  Testing has shown that two LDs
-      // isn't measurably slower than a single LD on any platforms.
-      // Still, we could reduce the 2 LDs to one or zero by one of the following:
-      //
-      // - Use _count instead of cxq|EntryList
-      //   We intend to eliminate _count, however, when we switch
-      //   to on-the-fly deflation in ::exit() as is used in
-      //   Metalocks and RelaxedLocks.
-      //
-      // - Establish the invariant that cxq == null implies EntryList == null.
-      //   set cxq == EMPTY (1) to encode the state where cxq is empty
-      //   by EntryList != null.  EMPTY is a distinguished value.
-      //   The fast-path exit() would fetch cxq but not EntryList.
-      //
-      // - Encode succ as follows:
-      //   succ = t :  Thread t is the successor -- t is ready or is spinning.
-      //               Exiting thread does not need to wake a successor.
-      //   succ = 0 :  No successor required -> (EntryList|cxq) == null
-      //               Exiting thread does not need to wake a successor
-      //   succ = 1 :  Successor required    -> (EntryList|cxq) != null and
-      //               logically succ == null.
-      //               Exiting thread must wake a successor.
-      //
-      //   The 1-1 fast-exit path would appear as :
-      //     _owner = null ; membar ;
-      //     if (_succ == 1 && CAS (&_owner, null, Self) == null) goto SlowPath
-      //     goto FastPathDone ;
-      //
-      //   and the 1-0 fast-exit path would appear as:
-      //      if (_succ == 1) goto SlowPath
-      //      Owner = null ;
-      //      goto FastPathDone
-      //
-      // - Encode the LSB of _owner as 1 to indicate that exit()
-      //   must use the slow-path and make a successor ready.
-      //   (_owner & 1) == 0 IFF succ != null || (EntryList|cxq) == null
-      //   (_owner & 1) == 0 IFF succ == null && (EntryList|cxq) != null (obviously)
-      //   The 1-0 fast exit path would read:
-      //      if (_owner != Self) goto SlowPath
-      //      _owner = null
-      //      goto FastPathDone
-
-      if (Knob_ExitPolicy == 0) {
-         // release semantics: prior loads and stores from within the critical section
-         // must not float (reorder) past the following store that drops the lock.
-         // On SPARC that requires MEMBAR #loadstore|#storestore.
-         // But of course in TSO #loadstore|#storestore is not required.
-         // I'd like to write one of the following:
-         // A.  OrderAccess::release() ; _owner = NULL
-         // B.  OrderAccess::loadstore(); OrderAccess::storestore(); _owner = NULL;
-         // Unfortunately OrderAccess::release() and OrderAccess::loadstore() both
-         // store into a _dummy variable.  That store is not needed, but can result
-         // in massive wasteful coherency traffic on classic SMP systems.
-         // Instead, I use release_store(), which is implemented as just a simple
-         // ST on x64, x86 and SPARC.
-         OrderAccess::release_store_ptr (&_owner, NULL) ;   // drop the lock
-         OrderAccess::storeload() ;                         // See if we need to wake a successor
-         if ((intptr_t(_EntryList)|intptr_t(_cxq)) == 0 || _succ != NULL) {
-            TEVENT (Inflated exit - simple egress) ;
-            return ;
-         }
-         TEVENT (Inflated exit - complex egress) ;
-
-         // Normally the exiting thread is responsible for ensuring succession,
-         // but if other successors are ready or other entering threads are spinning
-         // then this thread can simply store NULL into _owner and exit without
-         // waking a successor.  The existence of spinners or ready successors
-         // guarantees proper succession (liveness).  Responsibility passes to the
-         // ready or running successors.  The exiting thread delegates the duty.
-         // More precisely, if a successor already exists this thread is absolved
-         // of the responsibility of waking (unparking) one.
-         //
-         // The _succ variable is critical to reducing futile wakeup frequency.
-         // _succ identifies the "heir presumptive" thread that has been made
-         // ready (unparked) but that has not yet run.  We need only one such
-         // successor thread to guarantee progress.
-         // See http://www.usenix.org/events/jvm01/full_papers/dice/dice.pdf
-         // section 3.3 "Futile Wakeup Throttling" for details.
-         //
-         // Note that spinners in Enter() also set _succ non-null.
-         // In the current implementation spinners opportunistically set
-         // _succ so that exiting threads might avoid waking a successor.
-         // Another less appealing alternative would be for the exiting thread
-         // to drop the lock and then spin briefly to see if a spinner managed
-         // to acquire the lock.  If so, the exiting thread could exit
-         // immediately without waking a successor, otherwise the exiting
-         // thread would need to dequeue and wake a successor.
-         // (Note that we'd need to make the post-drop spin short, but no
-         // shorter than the worst-case round-trip cache-line migration time.
-         // The dropped lock needs to become visible to the spinner, and then
-         // the acquisition of the lock by the spinner must become visible to
-         // the exiting thread).
-         //
-
-         // It appears that an heir-presumptive (successor) must be made ready.
-         // Only the current lock owner can manipulate the EntryList or
-         // drain _cxq, so we need to reacquire the lock.  If we fail
-         // to reacquire the lock the responsibility for ensuring succession
-         // falls to the new owner.
-         //
-         if (Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) != NULL) {
-            return ;
-         }
-         TEVENT (Exit - Reacquired) ;
-      } else {
-         if ((intptr_t(_EntryList)|intptr_t(_cxq)) == 0 || _succ != NULL) {
-            OrderAccess::release_store_ptr (&_owner, NULL) ;   // drop the lock
-            OrderAccess::storeload() ;
-            // Ratify the previously observed values.
-            if (_cxq == NULL || _succ != NULL) {
-                TEVENT (Inflated exit - simple egress) ;
-                return ;
-            }
-
-            // inopportune interleaving -- the exiting thread (this thread)
-            // in the fast-exit path raced an entering thread in the slow-enter
-            // path.
-            // We have two choices:
-            // A.  Try to reacquire the lock.
-            //     If the CAS() fails return immediately, otherwise
-            //     we either restart/rerun the exit operation, or simply
-            //     fall-through into the code below which wakes a successor.
-            // B.  If the elements forming the EntryList|cxq are TSM
-            //     we could simply unpark() the lead thread and return
-            //     without having set _succ.
-            if (Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) != NULL) {
-               TEVENT (Inflated exit - reacquired succeeded) ;
-               return ;
-            }
-            TEVENT (Inflated exit - reacquired failed) ;
-         } else {
-            TEVENT (Inflated exit - complex egress) ;
-         }
-      }
-
-      guarantee (_owner == THREAD, "invariant") ;
-
-      // Select an appropriate successor ("heir presumptive") from the EntryList
-      // and make it ready.  Generally we just wake the head of EntryList .
-      // There's no algorithmic constraint that we use the head - it's just
-      // a policy decision.   Note that the thread at head of the EntryList
-      // remains at the head until it acquires the lock.  This means we'll
-      // repeatedly wake the same thread until it manages to grab the lock.
-      // This is generally a good policy - if we're seeing lots of futile wakeups
-      // at least we're waking/rewaking a thread that's like to be hot or warm
-      // (have residual D$ and TLB affinity).
-      //
-      // "Wakeup locality" optimization:
-      // http://j2se.east/~dice/PERSIST/040825-WakeLocality.txt
-      // In the future we'll try to bias the selection mechanism
-      // to preferentially pick a thread that recently ran on
-      // a processor element that shares cache with the CPU on which
-      // the exiting thread is running.   We need access to Solaris'
-      // schedctl.sc_cpu to make that work.
-      //
-      ObjectWaiter * w = NULL ;
-      int QMode = Knob_QMode ;
-
-      if (QMode == 2 && _cxq != NULL) {
-          // QMode == 2 : cxq has precedence over EntryList.
-          // Try to directly wake a successor from the cxq.
-          // If successful, the successor will need to unlink itself from cxq.
-          w = _cxq ;
-          assert (w != NULL, "invariant") ;
-          assert (w->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
-          ExitEpilog (Self, w) ;
-          return ;
-      }
-
-      if (QMode == 3 && _cxq != NULL) {
-          // Aggressively drain cxq into EntryList at the first opportunity.
-          // This policy ensure that recently-run threads live at the head of EntryList.
-          // Drain _cxq into EntryList - bulk transfer.
-          // First, detach _cxq.
-          // The following loop is tantamount to: w = swap (&cxq, NULL)
-          w = _cxq ;
-          for (;;) {
-             assert (w != NULL, "Invariant") ;
-             ObjectWaiter * u = (ObjectWaiter *) Atomic::cmpxchg_ptr (NULL, &_cxq, w) ;
-             if (u == w) break ;
-             w = u ;
-          }
-          assert (w != NULL              , "invariant") ;
-
-          ObjectWaiter * q = NULL ;
-          ObjectWaiter * p ;
-          for (p = w ; p != NULL ; p = p->_next) {
-              guarantee (p->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
-              p->TState = ObjectWaiter::TS_ENTER ;
-              p->_prev = q ;
-              q = p ;
-          }
-
-          // Append the RATs to the EntryList
-          // TODO: organize EntryList as a CDLL so we can locate the tail in constant-time.
-          ObjectWaiter * Tail ;
-          for (Tail = _EntryList ; Tail != NULL && Tail->_next != NULL ; Tail = Tail->_next) ;
-          if (Tail == NULL) {
-              _EntryList = w ;
-          } else {
-              Tail->_next = w ;
-              w->_prev = Tail ;
-          }
-
-          // Fall thru into code that tries to wake a successor from EntryList
-      }
-
-      if (QMode == 4 && _cxq != NULL) {
-          // Aggressively drain cxq into EntryList at the first opportunity.
-          // This policy ensure that recently-run threads live at the head of EntryList.
-
-          // Drain _cxq into EntryList - bulk transfer.
-          // First, detach _cxq.
-          // The following loop is tantamount to: w = swap (&cxq, NULL)
-          w = _cxq ;
-          for (;;) {
-             assert (w != NULL, "Invariant") ;
-             ObjectWaiter * u = (ObjectWaiter *) Atomic::cmpxchg_ptr (NULL, &_cxq, w) ;
-             if (u == w) break ;
-             w = u ;
-          }
-          assert (w != NULL              , "invariant") ;
-
-          ObjectWaiter * q = NULL ;
-          ObjectWaiter * p ;
-          for (p = w ; p != NULL ; p = p->_next) {
-              guarantee (p->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
-              p->TState = ObjectWaiter::TS_ENTER ;
-              p->_prev = q ;
-              q = p ;
-          }
-
-          // Prepend the RATs to the EntryList
-          if (_EntryList != NULL) {
-              q->_next = _EntryList ;
-              _EntryList->_prev = q ;
-          }
-          _EntryList = w ;
-
-          // Fall thru into code that tries to wake a successor from EntryList
-      }
-
-      w = _EntryList  ;
-      if (w != NULL) {
-          // I'd like to write: guarantee (w->_thread != Self).
-          // But in practice an exiting thread may find itself on the EntryList.
-          // Lets say thread T1 calls O.wait().  Wait() enqueues T1 on O's waitset and
-          // then calls exit().  Exit release the lock by setting O._owner to NULL.
-          // Lets say T1 then stalls.  T2 acquires O and calls O.notify().  The
-          // notify() operation moves T1 from O's waitset to O's EntryList. T2 then
-          // release the lock "O".  T2 resumes immediately after the ST of null into
-          // _owner, above.  T2 notices that the EntryList is populated, so it
-          // reacquires the lock and then finds itself on the EntryList.
-          // Given all that, we have to tolerate the circumstance where "w" is
-          // associated with Self.
-          assert (w->TState == ObjectWaiter::TS_ENTER, "invariant") ;
-          ExitEpilog (Self, w) ;
-          return ;
-      }
-
-      // If we find that both _cxq and EntryList are null then just
-      // re-run the exit protocol from the top.
-      w = _cxq ;
-      if (w == NULL) continue ;
-
-      // Drain _cxq into EntryList - bulk transfer.
-      // First, detach _cxq.
-      // The following loop is tantamount to: w = swap (&cxq, NULL)
-      for (;;) {
-          assert (w != NULL, "Invariant") ;
-          ObjectWaiter * u = (ObjectWaiter *) Atomic::cmpxchg_ptr (NULL, &_cxq, w) ;
-          if (u == w) break ;
-          w = u ;
-      }
-      TEVENT (Inflated exit - drain cxq into EntryList) ;
-
-      assert (w != NULL              , "invariant") ;
-      assert (_EntryList  == NULL    , "invariant") ;
-
-      // Convert the LIFO SLL anchored by _cxq into a DLL.
-      // The list reorganization step operates in O(LENGTH(w)) time.
-      // It's critical that this step operate quickly as
-      // "Self" still holds the outer-lock, restricting parallelism
-      // and effectively lengthening the critical section.
-      // Invariant: s chases t chases u.
-      // TODO-FIXME: consider changing EntryList from a DLL to a CDLL so
-      // we have faster access to the tail.
-
-      if (QMode == 1) {
-         // QMode == 1 : drain cxq to EntryList, reversing order
-         // We also reverse the order of the list.
-         ObjectWaiter * s = NULL ;
-         ObjectWaiter * t = w ;
-         ObjectWaiter * u = NULL ;
-         while (t != NULL) {
-             guarantee (t->TState == ObjectWaiter::TS_CXQ, "invariant") ;
-             t->TState = ObjectWaiter::TS_ENTER ;
-             u = t->_next ;
-             t->_prev = u ;
-             t->_next = s ;
-             s = t;
-             t = u ;
-         }
-         _EntryList  = s ;
-         assert (s != NULL, "invariant") ;
-      } else {
-         // QMode == 0 or QMode == 2
-         _EntryList = w ;
-         ObjectWaiter * q = NULL ;
-         ObjectWaiter * p ;
-         for (p = w ; p != NULL ; p = p->_next) {
-             guarantee (p->TState == ObjectWaiter::TS_CXQ, "Invariant") ;
-             p->TState = ObjectWaiter::TS_ENTER ;
-             p->_prev = q ;
-             q = p ;
-         }
-      }
-
-      // In 1-0 mode we need: ST EntryList; MEMBAR #storestore; ST _owner = NULL
-      // The MEMBAR is satisfied by the release_store() operation in ExitEpilog().
-
-      // See if we can abdicate to a spinner instead of waking a thread.
-      // A primary goal of the implementation is to reduce the
-      // context-switch rate.
-      if (_succ != NULL) continue;
-
-      w = _EntryList  ;
-      if (w != NULL) {
-          guarantee (w->TState == ObjectWaiter::TS_ENTER, "invariant") ;
-          ExitEpilog (Self, w) ;
-          return ;
-      }
-   }
-}
-// complete_exit exits a lock returning recursion count
-// complete_exit/reenter operate as a wait without waiting
-// complete_exit requires an inflated monitor
-// The _owner field is not always the Thread addr even with an
-// inflated monitor, e.g. the monitor can be inflated by a non-owning
-// thread due to contention.
-intptr_t ObjectMonitor::complete_exit(TRAPS) {
-   Thread * const Self = THREAD;
-   assert(Self->is_Java_thread(), "Must be Java thread!");
-   JavaThread *jt = (JavaThread *)THREAD;
-
-   DeferredInitialize();
-
-   if (THREAD != _owner) {
-    if (THREAD->is_lock_owned ((address)_owner)) {
-       assert(_recursions == 0, "internal state error");
-       _owner = THREAD ;   /* Convert from basiclock addr to Thread addr */
-       _recursions = 0 ;
-       OwnerIsThread = 1 ;
-    }
-   }
-
-   guarantee(Self == _owner, "complete_exit not owner");
-   intptr_t save = _recursions; // record the old recursion count
-   _recursions = 0;        // set the recursion level to be 0
-   exit (Self) ;           // exit the monitor
-   guarantee (_owner != Self, "invariant");
-   return save;
-}
-
-// reenter() enters a lock and sets recursion count
-// complete_exit/reenter operate as a wait without waiting
-void ObjectMonitor::reenter(intptr_t recursions, TRAPS) {
-   Thread * const Self = THREAD;
-   assert(Self->is_Java_thread(), "Must be Java thread!");
-   JavaThread *jt = (JavaThread *)THREAD;
-
-   guarantee(_owner != Self, "reenter already owner");
-   enter (THREAD);       // enter the monitor
-   guarantee (_recursions == 0, "reenter recursion");
-   _recursions = recursions;
-   return;
-}
-
-// Note: a subset of changes to ObjectMonitor::wait()
-// will need to be replicated in complete_exit above
-void ObjectMonitor::wait(jlong millis, bool interruptible, TRAPS) {
-   Thread * const Self = THREAD ;
-   assert(Self->is_Java_thread(), "Must be Java thread!");
-   JavaThread *jt = (JavaThread *)THREAD;
-
-   DeferredInitialize () ;
-
-   // Throw IMSX or IEX.
-   CHECK_OWNER();
-
-   // check for a pending interrupt
-   if (interruptible && Thread::is_interrupted(Self, true) && !HAS_PENDING_EXCEPTION) {
-     // post monitor waited event.  Note that this is past-tense, we are done waiting.
-     if (JvmtiExport::should_post_monitor_waited()) {
-        // Note: 'false' parameter is passed here because the
-        // wait was not timed out due to thread interrupt.
-        JvmtiExport::post_monitor_waited(jt, this, false);
-     }
-     TEVENT (Wait - Throw IEX) ;
-     THROW(vmSymbols::java_lang_InterruptedException());
-     return ;
-   }
-   TEVENT (Wait) ;
-
-   assert (Self->_Stalled == 0, "invariant") ;
-   Self->_Stalled = intptr_t(this) ;
-   jt->set_current_waiting_monitor(this);
-
-   // create a node to be put into the queue
-   // Critically, after we reset() the event but prior to park(), we must check
-   // for a pending interrupt.
-   ObjectWaiter node(Self);
-   node.TState = ObjectWaiter::TS_WAIT ;
-   Self->_ParkEvent->reset() ;
-   OrderAccess::fence();          // ST into Event; membar ; LD interrupted-flag
-
-   // Enter the waiting queue, which is a circular doubly linked list in this case
-   // but it could be a priority queue or any data structure.
-   // _WaitSetLock protects the wait queue.  Normally the wait queue is accessed only
-   // by the the owner of the monitor *except* in the case where park()
-   // returns because of a timeout of interrupt.  Contention is exceptionally rare
-   // so we use a simple spin-lock instead of a heavier-weight blocking lock.
-
-   Thread::SpinAcquire (&_WaitSetLock, "WaitSet - add") ;
-   AddWaiter (&node) ;
-   Thread::SpinRelease (&_WaitSetLock) ;
-
-   if ((SyncFlags & 4) == 0) {
-      _Responsible = NULL ;
-   }
-   intptr_t save = _recursions; // record the old recursion count
-   _waiters++;                  // increment the number of waiters
-   _recursions = 0;             // set the recursion level to be 1
-   exit (Self) ;                    // exit the monitor
-   guarantee (_owner != Self, "invariant") ;
-
-   // As soon as the ObjectMonitor's ownership is dropped in the exit()
-   // call above, another thread can enter() the ObjectMonitor, do the
-   // notify(), and exit() the ObjectMonitor. If the other thread's
-   // exit() call chooses this thread as the successor and the unpark()
-   // call happens to occur while this thread is posting a
-   // MONITOR_CONTENDED_EXIT event, then we run the risk of the event
-   // handler using RawMonitors and consuming the unpark().
-   //
-   // To avoid the problem, we re-post the event. This does no harm
-   // even if the original unpark() was not consumed because we are the
-   // chosen successor for this monitor.
-   if (node._notified != 0 && _succ == Self) {
-      node._event->unpark();
-   }
-
-   // The thread is on the WaitSet list - now park() it.
-   // On MP systems it's conceivable that a brief spin before we park
-   // could be profitable.
-   //
-   // TODO-FIXME: change the following logic to a loop of the form
-   //   while (!timeout && !interrupted && _notified == 0) park()
-
-   int ret = OS_OK ;
-   int WasNotified = 0 ;
-   { // State transition wrappers
-     OSThread* osthread = Self->osthread();
-     OSThreadWaitState osts(osthread, true);
-     {
-       ThreadBlockInVM tbivm(jt);
-       // Thread is in thread_blocked state and oop access is unsafe.
-       jt->set_suspend_equivalent();
-
-       if (interruptible && (Thread::is_interrupted(THREAD, false) || HAS_PENDING_EXCEPTION)) {
-           // Intentionally empty
-       } else
-       if (node._notified == 0) {
-         if (millis <= 0) {
-            Self->_ParkEvent->park () ;
-         } else {
-            ret = Self->_ParkEvent->park (millis) ;
-         }
-       }
-
-       // were we externally suspended while we were waiting?
-       if (ExitSuspendEquivalent (jt)) {
-          // TODO-FIXME: add -- if succ == Self then succ = null.
-          jt->java_suspend_self();
-       }
-
-     } // Exit thread safepoint: transition _thread_blocked -> _thread_in_vm
-
-
-     // Node may be on the WaitSet, the EntryList (or cxq), or in transition
-     // from the WaitSet to the EntryList.
-     // See if we need to remove Node from the WaitSet.
-     // We use double-checked locking to avoid grabbing _WaitSetLock
-     // if the thread is not on the wait queue.
-     //
-     // Note that we don't need a fence before the fetch of TState.
-     // In the worst case we'll fetch a old-stale value of TS_WAIT previously
-     // written by the is thread. (perhaps the fetch might even be satisfied
-     // by a look-aside into the processor's own store buffer, although given
-     // the length of the code path between the prior ST and this load that's
-     // highly unlikely).  If the following LD fetches a stale TS_WAIT value
-     // then we'll acquire the lock and then re-fetch a fresh TState value.
-     // That is, we fail toward safety.
-
-     if (node.TState == ObjectWaiter::TS_WAIT) {
-         Thread::SpinAcquire (&_WaitSetLock, "WaitSet - unlink") ;
-         if (node.TState == ObjectWaiter::TS_WAIT) {
-            DequeueSpecificWaiter (&node) ;       // unlink from WaitSet
-            assert(node._notified == 0, "invariant");
-            node.TState = ObjectWaiter::TS_RUN ;
-         }
-         Thread::SpinRelease (&_WaitSetLock) ;
-     }
+// Instead of No_Savepoint_Verifier it might be cheaper to
+// use an idiom of the form:
+//   auto int tmp = SafepointSynchronize::_safepoint_counter ;
+//   <code that must not run at safepoint>
+//   guarantee (((tmp ^ _safepoint_counter) | (tmp & 1)) == 0) ;
+// Since the tests are extremely cheap we could leave them enabled
+// for normal product builds.
 
-     // The thread is now either on off-list (TS_RUN),
-     // on the EntryList (TS_ENTER), or on the cxq (TS_CXQ).
-     // The Node's TState variable is stable from the perspective of this thread.
-     // No other threads will asynchronously modify TState.
-     guarantee (node.TState != ObjectWaiter::TS_WAIT, "invariant") ;
-     OrderAccess::loadload() ;
-     if (_succ == Self) _succ = NULL ;
-     WasNotified = node._notified ;
-
-     // Reentry phase -- reacquire the monitor.
-     // re-enter contended monitor after object.wait().
-     // retain OBJECT_WAIT state until re-enter successfully completes
-     // Thread state is thread_in_vm and oop access is again safe,
-     // although the raw address of the object may have changed.
-     // (Don't cache naked oops over safepoints, of course).
-
-     // post monitor waited event. Note that this is past-tense, we are done waiting.
-     if (JvmtiExport::should_post_monitor_waited()) {
-       JvmtiExport::post_monitor_waited(jt, this, ret == OS_TIMEOUT);
-     }
-     OrderAccess::fence() ;
-
-     assert (Self->_Stalled != 0, "invariant") ;
-     Self->_Stalled = 0 ;
-
-     assert (_owner != Self, "invariant") ;
-     ObjectWaiter::TStates v = node.TState ;
-     if (v == ObjectWaiter::TS_RUN) {
-         enter (Self) ;
-     } else {
-         guarantee (v == ObjectWaiter::TS_ENTER || v == ObjectWaiter::TS_CXQ, "invariant") ;
-         ReenterI (Self, &node) ;
-         node.wait_reenter_end(this);
-     }
-
-     // Self has reacquired the lock.
-     // Lifecycle - the node representing Self must not appear on any queues.
-     // Node is about to go out-of-scope, but even if it were immortal we wouldn't
-     // want residual elements associated with this thread left on any lists.
-     guarantee (node.TState == ObjectWaiter::TS_RUN, "invariant") ;
-     assert    (_owner == Self, "invariant") ;
-     assert    (_succ != Self , "invariant") ;
-   } // OSThreadWaitState()
-
-   jt->set_current_waiting_monitor(NULL);
-
-   guarantee (_recursions == 0, "invariant") ;
-   _recursions = save;     // restore the old recursion count
-   _waiters--;             // decrement the number of waiters
-
-   // Verify a few postconditions
-   assert (_owner == Self       , "invariant") ;
-   assert (_succ  != Self       , "invariant") ;
-   assert (((oop)(object()))->mark() == markOopDesc::encode(this), "invariant") ;
-
-   if (SyncFlags & 32) {
-      OrderAccess::fence() ;
-   }
-
-   // check if the notification happened
-   if (!WasNotified) {
-     // no, it could be timeout or Thread.interrupt() or both
-     // check for interrupt event, otherwise it is timeout
-     if (interruptible && Thread::is_interrupted(Self, true) && !HAS_PENDING_EXCEPTION) {
-       TEVENT (Wait - throw IEX from epilog) ;
-       THROW(vmSymbols::java_lang_InterruptedException());
-     }
-   }
-
-   // NOTE: Spurious wake up will be consider as timeout.
-   // Monitor notify has precedence over thread interrupt.
-}
-
-
-// Consider:
-// If the lock is cool (cxq == null && succ == null) and we're on an MP system
-// then instead of transferring a thread from the WaitSet to the EntryList
-// we might just dequeue a thread from the WaitSet and directly unpark() it.
-
-void ObjectMonitor::notify(TRAPS) {
-  CHECK_OWNER();
-  if (_WaitSet == NULL) {
-     TEVENT (Empty-Notify) ;
-     return ;
-  }
-  DTRACE_MONITOR_PROBE(notify, this, object(), THREAD);
-
-  int Policy = Knob_MoveNotifyee ;
-
-  Thread::SpinAcquire (&_WaitSetLock, "WaitSet - notify") ;
-  ObjectWaiter * iterator = DequeueWaiter() ;
-  if (iterator != NULL) {
-     TEVENT (Notify1 - Transfer) ;
-     guarantee (iterator->TState == ObjectWaiter::TS_WAIT, "invariant") ;
-     guarantee (iterator->_notified == 0, "invariant") ;
-     // Disposition - what might we do with iterator ?
-     // a.  add it directly to the EntryList - either tail or head.
-     // b.  push it onto the front of the _cxq.
-     // For now we use (a).
-     if (Policy != 4) {
-        iterator->TState = ObjectWaiter::TS_ENTER ;
-     }
-     iterator->_notified = 1 ;
-
-     ObjectWaiter * List = _EntryList ;
-     if (List != NULL) {
-        assert (List->_prev == NULL, "invariant") ;
-        assert (List->TState == ObjectWaiter::TS_ENTER, "invariant") ;
-        assert (List != iterator, "invariant") ;
-     }
-
-     if (Policy == 0) {       // prepend to EntryList
-         if (List == NULL) {
-             iterator->_next = iterator->_prev = NULL ;
-             _EntryList = iterator ;
-         } else {
-             List->_prev = iterator ;
-             iterator->_next = List ;
-             iterator->_prev = NULL ;
-             _EntryList = iterator ;
-        }
-     } else
-     if (Policy == 1) {      // append to EntryList
-         if (List == NULL) {
-             iterator->_next = iterator->_prev = NULL ;
-             _EntryList = iterator ;
-         } else {
-            // CONSIDER:  finding the tail currently requires a linear-time walk of
-            // the EntryList.  We can make tail access constant-time by converting to
-            // a CDLL instead of using our current DLL.
-            ObjectWaiter * Tail ;
-            for (Tail = List ; Tail->_next != NULL ; Tail = Tail->_next) ;
-            assert (Tail != NULL && Tail->_next == NULL, "invariant") ;
-            Tail->_next = iterator ;
-            iterator->_prev = Tail ;
-            iterator->_next = NULL ;
-        }
-     } else
-     if (Policy == 2) {      // prepend to cxq
-         // prepend to cxq
-         if (List == NULL) {
-             iterator->_next = iterator->_prev = NULL ;
-             _EntryList = iterator ;
-         } else {
-            iterator->TState = ObjectWaiter::TS_CXQ ;
-            for (;;) {
-                ObjectWaiter * Front = _cxq ;
-                iterator->_next = Front ;
-                if (Atomic::cmpxchg_ptr (iterator, &_cxq, Front) == Front) {
-                    break ;
-                }
-            }
-         }
-     } else
-     if (Policy == 3) {      // append to cxq
-        iterator->TState = ObjectWaiter::TS_CXQ ;
-        for (;;) {
-            ObjectWaiter * Tail ;
-            Tail = _cxq ;
-            if (Tail == NULL) {
-                iterator->_next = NULL ;
-                if (Atomic::cmpxchg_ptr (iterator, &_cxq, NULL) == NULL) {
-                   break ;
-                }
-            } else {
-                while (Tail->_next != NULL) Tail = Tail->_next ;
-                Tail->_next = iterator ;
-                iterator->_prev = Tail ;
-                iterator->_next = NULL ;
-                break ;
-            }
-        }
-     } else {
-        ParkEvent * ev = iterator->_event ;
-        iterator->TState = ObjectWaiter::TS_RUN ;
-        OrderAccess::fence() ;
-        ev->unpark() ;
-     }
-
-     if (Policy < 4) {
-       iterator->wait_reenter_begin(this);
-     }
-
-     // _WaitSetLock protects the wait queue, not the EntryList.  We could
-     // move the add-to-EntryList operation, above, outside the critical section
-     // protected by _WaitSetLock.  In practice that's not useful.  With the
-     // exception of  wait() timeouts and interrupts the monitor owner
-     // is the only thread that grabs _WaitSetLock.  There's almost no contention
-     // on _WaitSetLock so it's not profitable to reduce the length of the
-     // critical section.
-  }
-
-  Thread::SpinRelease (&_WaitSetLock) ;
-
-  if (iterator != NULL && ObjectSynchronizer::_sync_Notifications != NULL) {
-     ObjectSynchronizer::_sync_Notifications->inc() ;
-  }
-}
-
-
-void ObjectMonitor::notifyAll(TRAPS) {
-  CHECK_OWNER();
-  ObjectWaiter* iterator;
-  if (_WaitSet == NULL) {
-      TEVENT (Empty-NotifyAll) ;
-      return ;
-  }
-  DTRACE_MONITOR_PROBE(notifyAll, this, object(), THREAD);
-
-  int Policy = Knob_MoveNotifyee ;
-  int Tally = 0 ;
-  Thread::SpinAcquire (&_WaitSetLock, "WaitSet - notifyall") ;
-
-  for (;;) {
-     iterator = DequeueWaiter () ;
-     if (iterator == NULL) break ;
-     TEVENT (NotifyAll - Transfer1) ;
-     ++Tally ;
-
-     // Disposition - what might we do with iterator ?
-     // a.  add it directly to the EntryList - either tail or head.
-     // b.  push it onto the front of the _cxq.
-     // For now we use (a).
-     //
-     // TODO-FIXME: currently notifyAll() transfers the waiters one-at-a-time from the waitset
-     // to the EntryList.  This could be done more efficiently with a single bulk transfer,
-     // but in practice it's not time-critical.  Beware too, that in prepend-mode we invert the
-     // order of the waiters.  Lets say that the waitset is "ABCD" and the EntryList is "XYZ".
-     // After a notifyAll() in prepend mode the waitset will be empty and the EntryList will
-     // be "DCBAXYZ".
-
-     guarantee (iterator->TState == ObjectWaiter::TS_WAIT, "invariant") ;
-     guarantee (iterator->_notified == 0, "invariant") ;
-     iterator->_notified = 1 ;
-     if (Policy != 4) {
-        iterator->TState = ObjectWaiter::TS_ENTER ;
-     }
-
-     ObjectWaiter * List = _EntryList ;
-     if (List != NULL) {
-        assert (List->_prev == NULL, "invariant") ;
-        assert (List->TState == ObjectWaiter::TS_ENTER, "invariant") ;
-        assert (List != iterator, "invariant") ;
-     }
-
-     if (Policy == 0) {       // prepend to EntryList
-         if (List == NULL) {
-             iterator->_next = iterator->_prev = NULL ;
-             _EntryList = iterator ;
-         } else {
-             List->_prev = iterator ;
-             iterator->_next = List ;
-             iterator->_prev = NULL ;
-             _EntryList = iterator ;
-        }
-     } else
-     if (Policy == 1) {      // append to EntryList
-         if (List == NULL) {
-             iterator->_next = iterator->_prev = NULL ;
-             _EntryList = iterator ;
-         } else {
-            // CONSIDER:  finding the tail currently requires a linear-time walk of
-            // the EntryList.  We can make tail access constant-time by converting to
-            // a CDLL instead of using our current DLL.
-            ObjectWaiter * Tail ;
-            for (Tail = List ; Tail->_next != NULL ; Tail = Tail->_next) ;
-            assert (Tail != NULL && Tail->_next == NULL, "invariant") ;
-            Tail->_next = iterator ;
-            iterator->_prev = Tail ;
-            iterator->_next = NULL ;
-        }
-     } else
-     if (Policy == 2) {      // prepend to cxq
-         // prepend to cxq
-         iterator->TState = ObjectWaiter::TS_CXQ ;
-         for (;;) {
-             ObjectWaiter * Front = _cxq ;
-             iterator->_next = Front ;
-             if (Atomic::cmpxchg_ptr (iterator, &_cxq, Front) == Front) {
-                 break ;
-             }
-         }
-     } else
-     if (Policy == 3) {      // append to cxq
-        iterator->TState = ObjectWaiter::TS_CXQ ;
-        for (;;) {
-            ObjectWaiter * Tail ;
-            Tail = _cxq ;
-            if (Tail == NULL) {
-                iterator->_next = NULL ;
-                if (Atomic::cmpxchg_ptr (iterator, &_cxq, NULL) == NULL) {
-                   break ;
-                }
-            } else {
-                while (Tail->_next != NULL) Tail = Tail->_next ;
-                Tail->_next = iterator ;
-                iterator->_prev = Tail ;
-                iterator->_next = NULL ;
-                break ;
-            }
-        }
-     } else {
-        ParkEvent * ev = iterator->_event ;
-        iterator->TState = ObjectWaiter::TS_RUN ;
-        OrderAccess::fence() ;
-        ev->unpark() ;
-     }
-
-     if (Policy < 4) {
-       iterator->wait_reenter_begin(this);
-     }
-
-     // _WaitSetLock protects the wait queue, not the EntryList.  We could
-     // move the add-to-EntryList operation, above, outside the critical section
-     // protected by _WaitSetLock.  In practice that's not useful.  With the
-     // exception of  wait() timeouts and interrupts the monitor owner
-     // is the only thread that grabs _WaitSetLock.  There's almost no contention
-     // on _WaitSetLock so it's not profitable to reduce the length of the
-     // critical section.
-  }
-
-  Thread::SpinRelease (&_WaitSetLock) ;
-
-  if (Tally != 0 && ObjectSynchronizer::_sync_Notifications != NULL) {
-     ObjectSynchronizer::_sync_Notifications->inc(Tally) ;
-  }
+void ObjectSynchronizer::release_monitors_owned_by_thread(TRAPS) {
+  assert(THREAD == JavaThread::current(), "must be current Java thread");
+  No_Safepoint_Verifier nsv ;
+  ReleaseJavaMonitorsClosure rjmc(THREAD);
+  Thread::muxAcquire(&ListLock, "release_monitors_owned_by_thread");
+  ObjectSynchronizer::monitors_iterate(&rjmc);
+  Thread::muxRelease(&ListLock);
+  THREAD->clear_pending_exception();
 }
 
-// check_slow() is a misnomer.  It's called to simply to throw an IMSX exception.
-// TODO-FIXME: remove check_slow() -- it's likely dead.
-
-void ObjectMonitor::check_slow(TRAPS) {
-  TEVENT (check_slow - throw IMSX) ;
-  assert(THREAD != _owner && !THREAD->is_lock_owned((address) _owner), "must not be owner");
-  THROW_MSG(vmSymbols::java_lang_IllegalMonitorStateException(), "current thread not owner");
-}
-
-
-// -------------------------------------------------------------------------
-// The raw monitor subsystem is entirely distinct from normal
-// java-synchronization or jni-synchronization.  raw monitors are not
-// associated with objects.  They can be implemented in any manner
-// that makes sense.  The original implementors decided to piggy-back
-// the raw-monitor implementation on the existing Java objectMonitor mechanism.
-// This flaw needs to fixed.  We should reimplement raw monitors as sui-generis.
-// Specifically, we should not implement raw monitors via java monitors.
-// Time permitting, we should disentangle and deconvolve the two implementations
-// and move the resulting raw monitor implementation over to the JVMTI directories.
-// Ideally, the raw monitor implementation would be built on top of
-// park-unpark and nothing else.
-//
-// raw monitors are used mainly by JVMTI
-// The raw monitor implementation borrows the ObjectMonitor structure,
-// but the operators are degenerate and extremely simple.
-//
-// Mixed use of a single objectMonitor instance -- as both a raw monitor
-// and a normal java monitor -- is not permissible.
-//
-// Note that we use the single RawMonitor_lock to protect queue operations for
-// _all_ raw monitors.  This is a scalability impediment, but since raw monitor usage
-// is deprecated and rare, this is not of concern.  The RawMonitor_lock can not
-// be held indefinitely.  The critical sections must be short and bounded.
-//
-// -------------------------------------------------------------------------
-
-int ObjectMonitor::SimpleEnter (Thread * Self) {
-  for (;;) {
-    if (Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) {
-       return OS_OK ;
-    }
-
-    ObjectWaiter Node (Self) ;
-    Self->_ParkEvent->reset() ;     // strictly optional
-    Node.TState = ObjectWaiter::TS_ENTER ;
-
-    RawMonitor_lock->lock_without_safepoint_check() ;
-    Node._next  = _EntryList ;
-    _EntryList  = &Node ;
-    OrderAccess::fence() ;
-    if (_owner == NULL && Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) {
-        _EntryList = Node._next ;
-        RawMonitor_lock->unlock() ;
-        return OS_OK ;
-    }
-    RawMonitor_lock->unlock() ;
-    while (Node.TState == ObjectWaiter::TS_ENTER) {
-       Self->_ParkEvent->park() ;
-    }
-  }
-}
-
-int ObjectMonitor::SimpleExit (Thread * Self) {
-  guarantee (_owner == Self, "invariant") ;
-  OrderAccess::release_store_ptr (&_owner, NULL) ;
-  OrderAccess::fence() ;
-  if (_EntryList == NULL) return OS_OK ;
-  ObjectWaiter * w ;
-
-  RawMonitor_lock->lock_without_safepoint_check() ;
-  w = _EntryList ;
-  if (w != NULL) {
-      _EntryList = w->_next ;
-  }
-  RawMonitor_lock->unlock() ;
-  if (w != NULL) {
-      guarantee (w ->TState == ObjectWaiter::TS_ENTER, "invariant") ;
-      ParkEvent * ev = w->_event ;
-      w->TState = ObjectWaiter::TS_RUN ;
-      OrderAccess::fence() ;
-      ev->unpark() ;
-  }
-  return OS_OK ;
-}
-
-int ObjectMonitor::SimpleWait (Thread * Self, jlong millis) {
-  guarantee (_owner == Self  , "invariant") ;
-  guarantee (_recursions == 0, "invariant") ;
-
-  ObjectWaiter Node (Self) ;
-  Node._notified = 0 ;
-  Node.TState    = ObjectWaiter::TS_WAIT ;
-
-  RawMonitor_lock->lock_without_safepoint_check() ;
-  Node._next     = _WaitSet ;
-  _WaitSet       = &Node ;
-  RawMonitor_lock->unlock() ;
-
-  SimpleExit (Self) ;
-  guarantee (_owner != Self, "invariant") ;
-
-  int ret = OS_OK ;
-  if (millis <= 0) {
-    Self->_ParkEvent->park();
-  } else {
-    ret = Self->_ParkEvent->park(millis);
-  }
-
-  // If thread still resides on the waitset then unlink it.
-  // Double-checked locking -- the usage is safe in this context
-  // as we TState is volatile and the lock-unlock operators are
-  // serializing (barrier-equivalent).
-
-  if (Node.TState == ObjectWaiter::TS_WAIT) {
-    RawMonitor_lock->lock_without_safepoint_check() ;
-    if (Node.TState == ObjectWaiter::TS_WAIT) {
-      // Simple O(n) unlink, but performance isn't critical here.
-      ObjectWaiter * p ;
-      ObjectWaiter * q = NULL ;
-      for (p = _WaitSet ; p != &Node; p = p->_next) {
-         q = p ;
-      }
-      guarantee (p == &Node, "invariant") ;
-      if (q == NULL) {
-        guarantee (p == _WaitSet, "invariant") ;
-        _WaitSet = p->_next ;
-      } else {
-        guarantee (p == q->_next, "invariant") ;
-        q->_next = p->_next ;
-      }
-      Node.TState = ObjectWaiter::TS_RUN ;
-    }
-    RawMonitor_lock->unlock() ;
-  }
-
-  guarantee (Node.TState == ObjectWaiter::TS_RUN, "invariant") ;
-  SimpleEnter (Self) ;
-
-  guarantee (_owner == Self, "invariant") ;
-  guarantee (_recursions == 0, "invariant") ;
-  return ret ;
-}
-
-int ObjectMonitor::SimpleNotify (Thread * Self, bool All) {
-  guarantee (_owner == Self, "invariant") ;
-  if (_WaitSet == NULL) return OS_OK ;
-
-  // We have two options:
-  // A. Transfer the threads from the WaitSet to the EntryList
-  // B. Remove the thread from the WaitSet and unpark() it.
-  //
-  // We use (B), which is crude and results in lots of futile
-  // context switching.  In particular (B) induces lots of contention.
-
-  ParkEvent * ev = NULL ;       // consider using a small auto array ...
-  RawMonitor_lock->lock_without_safepoint_check() ;
-  for (;;) {
-      ObjectWaiter * w = _WaitSet ;
-      if (w == NULL) break ;
-      _WaitSet = w->_next ;
-      if (ev != NULL) { ev->unpark(); ev = NULL; }
-      ev = w->_event ;
-      OrderAccess::loadstore() ;
-      w->TState = ObjectWaiter::TS_RUN ;
-      OrderAccess::storeload();
-      if (!All) break ;
-  }
-  RawMonitor_lock->unlock() ;
-  if (ev != NULL) ev->unpark();
-  return OS_OK ;
-}
-
-// Any JavaThread will enter here with state _thread_blocked
-int ObjectMonitor::raw_enter(TRAPS) {
-  TEVENT (raw_enter) ;
-  void * Contended ;
-
-  // don't enter raw monitor if thread is being externally suspended, it will
-  // surprise the suspender if a "suspended" thread can still enter monitor
-  JavaThread * jt = (JavaThread *)THREAD;
-  if (THREAD->is_Java_thread()) {
-    jt->SR_lock()->lock_without_safepoint_check();
-    while (jt->is_external_suspend()) {
-      jt->SR_lock()->unlock();
-      jt->java_suspend_self();
-      jt->SR_lock()->lock_without_safepoint_check();
-    }
-    // guarded by SR_lock to avoid racing with new external suspend requests.
-    Contended = Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) ;
-    jt->SR_lock()->unlock();
-  } else {
-    Contended = Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) ;
-  }
-
-  if (Contended == THREAD) {
-     _recursions ++ ;
-     return OM_OK ;
-  }
-
-  if (Contended == NULL) {
-     guarantee (_owner == THREAD, "invariant") ;
-     guarantee (_recursions == 0, "invariant") ;
-     return OM_OK ;
-  }
-
-  THREAD->set_current_pending_monitor(this);
-
-  if (!THREAD->is_Java_thread()) {
-     // No other non-Java threads besides VM thread would acquire
-     // a raw monitor.
-     assert(THREAD->is_VM_thread(), "must be VM thread");
-     SimpleEnter (THREAD) ;
-   } else {
-     guarantee (jt->thread_state() == _thread_blocked, "invariant") ;
-     for (;;) {
-       jt->set_suspend_equivalent();
-       // cleared by handle_special_suspend_equivalent_condition() or
-       // java_suspend_self()
-       SimpleEnter (THREAD) ;
-
-       // were we externally suspended while we were waiting?
-       if (!jt->handle_special_suspend_equivalent_condition()) break ;
-
-       // This thread was externally suspended
-       //
-       // This logic isn't needed for JVMTI raw monitors,
-       // but doesn't hurt just in case the suspend rules change. This
-           // logic is needed for the ObjectMonitor.wait() reentry phase.
-           // We have reentered the contended monitor, but while we were
-           // waiting another thread suspended us. We don't want to reenter
-           // the monitor while suspended because that would surprise the
-           // thread that suspended us.
-           //
-           // Drop the lock -
-       SimpleExit (THREAD) ;
-
-           jt->java_suspend_self();
-         }
-
-     assert(_owner == THREAD, "Fatal error with monitor owner!");
-     assert(_recursions == 0, "Fatal error with monitor recursions!");
-  }
-
-  THREAD->set_current_pending_monitor(NULL);
-  guarantee (_recursions == 0, "invariant") ;
-  return OM_OK;
-}
-
-// Used mainly for JVMTI raw monitor implementation
-// Also used for ObjectMonitor::wait().
-int ObjectMonitor::raw_exit(TRAPS) {
-  TEVENT (raw_exit) ;
-  if (THREAD != _owner) {
-    return OM_ILLEGAL_MONITOR_STATE;
-  }
-  if (_recursions > 0) {
-    --_recursions ;
-    return OM_OK ;
-  }
-
-  void * List = _EntryList ;
-  SimpleExit (THREAD) ;
-
-  return OM_OK;
-}
-
-// Used for JVMTI raw monitor implementation.
-// All JavaThreads will enter here with state _thread_blocked
-
-int ObjectMonitor::raw_wait(jlong millis, bool interruptible, TRAPS) {
-  TEVENT (raw_wait) ;
-  if (THREAD != _owner) {
-    return OM_ILLEGAL_MONITOR_STATE;
-  }
-
-  // To avoid spurious wakeups we reset the parkevent -- This is strictly optional.
-  // The caller must be able to tolerate spurious returns from raw_wait().
-  THREAD->_ParkEvent->reset() ;
-  OrderAccess::fence() ;
-
-  // check interrupt event
-  if (interruptible && Thread::is_interrupted(THREAD, true)) {
-    return OM_INTERRUPTED;
-  }
-
-  intptr_t save = _recursions ;
-  _recursions = 0 ;
-  _waiters ++ ;
-  if (THREAD->is_Java_thread()) {
-    guarantee (((JavaThread *) THREAD)->thread_state() == _thread_blocked, "invariant") ;
-    ((JavaThread *)THREAD)->set_suspend_equivalent();
-  }
-  int rv = SimpleWait (THREAD, millis) ;
-  _recursions = save ;
-  _waiters -- ;
-
-  guarantee (THREAD == _owner, "invariant") ;
-  if (THREAD->is_Java_thread()) {
-     JavaThread * jSelf = (JavaThread *) THREAD ;
-     for (;;) {
-        if (!jSelf->handle_special_suspend_equivalent_condition()) break ;
-        SimpleExit (THREAD) ;
-        jSelf->java_suspend_self();
-        SimpleEnter (THREAD) ;
-        jSelf->set_suspend_equivalent() ;
-     }
-  }
-  guarantee (THREAD == _owner, "invariant") ;
-
-  if (interruptible && Thread::is_interrupted(THREAD, true)) {
-    return OM_INTERRUPTED;
-  }
-  return OM_OK ;
-}
-
-int ObjectMonitor::raw_notify(TRAPS) {
-  TEVENT (raw_notify) ;
-  if (THREAD != _owner) {
-    return OM_ILLEGAL_MONITOR_STATE;
-  }
-  SimpleNotify (THREAD, false) ;
-  return OM_OK;
-}
-
-int ObjectMonitor::raw_notifyAll(TRAPS) {
-  TEVENT (raw_notifyAll) ;
-  if (THREAD != _owner) {
-    return OM_ILLEGAL_MONITOR_STATE;
-  }
-  SimpleNotify (THREAD, true) ;
-  return OM_OK;
-}
-
-#ifndef PRODUCT
-void ObjectMonitor::verify() {
-}
-
-void ObjectMonitor::print() {
-}
-#endif
-
 //------------------------------------------------------------------------------
 // Non-product code
 
--- a/src/share/vm/runtime/synchronizer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/synchronizer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,53 +22,15 @@
  *
  */
 
-class BasicLock VALUE_OBJ_CLASS_SPEC {
-  friend class VMStructs;
- private:
-  volatile markOop _displaced_header;
- public:
-  markOop      displaced_header() const               { return _displaced_header; }
-  void         set_displaced_header(markOop header)   { _displaced_header = header; }
-
-  void print_on(outputStream* st) const;
-
-  // move a basic lock (used during deoptimization
-  void move_to(oop obj, BasicLock* dest);
-
-  static int displaced_header_offset_in_bytes()       { return offset_of(BasicLock, _displaced_header); }
-};
-
-// A BasicObjectLock associates a specific Java object with a BasicLock.
-// It is currently embedded in an interpreter frame.
+#ifndef SHARE_VM_RUNTIME_SYNCHRONIZER_HPP
+#define SHARE_VM_RUNTIME_SYNCHRONIZER_HPP
 
-// Because some machines have alignment restrictions on the control stack,
-// the actual space allocated by the interpreter may include padding words
-// after the end of the BasicObjectLock.  Also, in order to guarantee
-// alignment of the embedded BasicLock objects on such machines, we
-// put the embedded BasicLock at the beginning of the struct.
-
-class BasicObjectLock VALUE_OBJ_CLASS_SPEC {
-  friend class VMStructs;
- private:
-  BasicLock _lock;                                    // the lock, must be double word aligned
-  oop       _obj;                                     // object holds the lock;
+#include "oops/markOop.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/perfData.hpp"
+#include "utilities/top.hpp"
 
- public:
-  // Manipulation
-  oop      obj() const                                { return _obj;  }
-  void set_obj(oop obj)                               { _obj = obj; }
-  BasicLock* lock()                                   { return &_lock; }
-
-  // Note: Use frame::interpreter_frame_monitor_size() for the size of BasicObjectLocks
-  //       in interpreter activation frames since it includes machine-specific padding.
-  static int size()                                   { return sizeof(BasicObjectLock)/wordSize; }
-
-  // GC support
-  void oops_do(OopClosure* f) { f->do_oop(&_obj); }
-
-  static int obj_offset_in_bytes()                    { return offset_of(BasicObjectLock, _obj);  }
-  static int lock_offset_in_bytes()                   { return offset_of(BasicObjectLock, _lock); }
-};
 
 class ObjectMonitor;
 
@@ -163,6 +125,8 @@
   static void verify() PRODUCT_RETURN;
   static int  verify_objmon_isinpool(ObjectMonitor *addr) PRODUCT_RETURN0;
 
+  static void RegisterSpinCallback (int (*)(intptr_t, int), intptr_t) ;
+
  private:
   enum { _BLOCKSIZE = 128 };
   static ObjectMonitor* gBlockList;
@@ -170,30 +134,6 @@
   static ObjectMonitor * volatile gOmInUseList; // for moribund thread, so monitors they inflated still get scanned
   static int gOmInUseCount;
 
- public:
-  static void Initialize () ;
-  static PerfCounter * _sync_ContendedLockAttempts ;
-  static PerfCounter * _sync_FutileWakeups ;
-  static PerfCounter * _sync_Parks ;
-  static PerfCounter * _sync_EmptyNotifications ;
-  static PerfCounter * _sync_Notifications ;
-  static PerfCounter * _sync_SlowEnter ;
-  static PerfCounter * _sync_SlowExit ;
-  static PerfCounter * _sync_SlowNotify ;
-  static PerfCounter * _sync_SlowNotifyAll ;
-  static PerfCounter * _sync_FailedSpins ;
-  static PerfCounter * _sync_SuccessfulSpins ;
-  static PerfCounter * _sync_PrivateA ;
-  static PerfCounter * _sync_PrivateB ;
-  static PerfCounter * _sync_MonInCirculation ;
-  static PerfCounter * _sync_MonScavenged ;
-  static PerfCounter * _sync_Inflations ;
-  static PerfCounter * _sync_Deflations ;
-  static PerfLongVariable * _sync_MonExtant ;
-
- public:
-  static void RegisterSpinCallback (int (*)(intptr_t, int), intptr_t) ;
-
 };
 
 // ObjectLocker enforced balanced locking and can never thrown an
@@ -222,3 +162,5 @@
   intptr_t complete_exit(TRAPS) { return  ObjectSynchronizer::complete_exit(_obj, CHECK_0); }
   void reenter(intptr_t recursion, TRAPS) { ObjectSynchronizer::reenter(_obj, recursion, CHECK); }
 };
+
+#endif // SHARE_VM_RUNTIME_SYNCHRONIZER_HPP
--- a/src/share/vm/runtime/task.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/task.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,23 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_task.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/init.hpp"
+#include "runtime/task.hpp"
+#include "runtime/timer.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 int PeriodicTask::_num_tasks = 0;
 PeriodicTask* PeriodicTask::_tasks[PeriodicTask::max_tasks];
--- a/src/share/vm/runtime/task.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/task.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_TASK_HPP
+#define SHARE_VM_RUNTIME_TASK_HPP
+
+#include "utilities/top.hpp"
+
 // A PeriodicTask has the sole purpose of executing its task
 // function with regular intervals.
 // Usage:
@@ -113,3 +118,5 @@
   // The task to perform at each period
   virtual void task() = 0;
 };
+
+#endif // SHARE_VM_RUNTIME_TASK_HPP
--- a/src/share/vm/runtime/thread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/thread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,84 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_thread.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/scopeDesc.hpp"
+#include "compiler/compileBroker.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolOop.hpp"
+#include "prims/jvm_misc.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "prims/privilegedStack.hpp"
+#include "runtime/aprofiler.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/fprofiler.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/hpi.hpp"
+#include "runtime/init.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/jniPeriodicChecker.hpp"
+#include "runtime/memprofiler.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/statSampler.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/task.hpp"
+#include "runtime/threadCritical.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
+#include "runtime/vframe_hp.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/attachListener.hpp"
+#include "services/management.hpp"
+#include "services/threadService.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/events.hpp"
+#include "utilities/preserveException.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
+#include "gc_implementation/parallelScavenge/pcTasks.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Compiler.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/c2compiler.hpp"
+#include "opto/idealGraphPrinter.hpp"
+#endif
 
 #ifdef DTRACE_ENABLED
 
@@ -1199,6 +1275,7 @@
   _exception_pc  = 0;
   _exception_handler_pc = 0;
   _exception_stack_size = 0;
+  _is_method_handle_return = 0;
   _jvmti_thread_state= NULL;
   _should_post_on_exceptions_flag = JNI_FALSE;
   _jvmti_get_loaded_classes_closure = NULL;
@@ -2921,6 +2998,9 @@
   // So that JDK version can be used as a discrimintor when parsing arguments
   JDK_Version_init();
 
+  // Update/Initialize System properties after JDK version number is known
+  Arguments::init_version_specific_system_properties();
+
   // Parse arguments
   jint parse_result = Arguments::parse(args);
   if (parse_result != JNI_OK) return parse_result;
@@ -2992,8 +3072,8 @@
   // crash Linux VM, see notes in os_linux.cpp.
   main_thread->create_stack_guard_pages();
 
-  // Initialize Java-Leve synchronization subsystem
-  ObjectSynchronizer::Initialize() ;
+  // Initialize Java-Level synchronization subsystem
+  ObjectMonitor::Initialize() ;
 
   // Initialize global modules
   jint status = init_globals();
@@ -3962,215 +4042,272 @@
   }
 }
 
-
-// Lifecycle management for TSM ParkEvents.
-// ParkEvents are type-stable (TSM).
-// In our particular implementation they happen to be immortal.
+// Internal SpinLock and Mutex
+// Based on ParkEvent
+
+// Ad-hoc mutual exclusion primitives: SpinLock and Mux
 //
-// We manage concurrency on the FreeList with a CAS-based
-// detach-modify-reattach idiom that avoids the ABA problems
-// that would otherwise be present in a simple CAS-based
-// push-pop implementation.   (push-one and pop-all)
+// We employ SpinLocks _only for low-contention, fixed-length
+// short-duration critical sections where we're concerned
+// about native mutex_t or HotSpot Mutex:: latency.
+// The mux construct provides a spin-then-block mutual exclusion
+// mechanism.
+//
+// Testing has shown that contention on the ListLock guarding gFreeList
+// is common.  If we implement ListLock as a simple SpinLock it's common
+// for the JVM to devolve to yielding with little progress.  This is true
+// despite the fact that the critical sections protected by ListLock are
+// extremely short.
 //
-// Caveat: Allocate() and Release() may be called from threads
-// other than the thread associated with the Event!
-// If we need to call Allocate() when running as the thread in
-// question then look for the PD calls to initialize native TLS.
-// Native TLS (Win32/Linux/Solaris) can only be initialized or
-// accessed by the associated thread.
-// See also pd_initialize().
-//
-// Note that we could defer associating a ParkEvent with a thread
-// until the 1st time the thread calls park().  unpark() calls to
-// an unprovisioned thread would be ignored.  The first park() call
-// for a thread would allocate and associate a ParkEvent and return
-// immediately.
-
-volatile int ParkEvent::ListLock = 0 ;
-ParkEvent * volatile ParkEvent::FreeList = NULL ;
-
-ParkEvent * ParkEvent::Allocate (Thread * t) {
-  // In rare cases -- JVM_RawMonitor* operations -- we can find t == null.
-  ParkEvent * ev ;
-
-  // Start by trying to recycle an existing but unassociated
-  // ParkEvent from the global free list.
+// TODO-FIXME: ListLock should be of type SpinLock.
+// We should make this a 1st-class type, integrated into the lock
+// hierarchy as leaf-locks.  Critically, the SpinLock structure
+// should have sufficient padding to avoid false-sharing and excessive
+// cache-coherency traffic.
+
+
+typedef volatile int SpinLockT ;
+
+void Thread::SpinAcquire (volatile int * adr, const char * LockName) {
+  if (Atomic::cmpxchg (1, adr, 0) == 0) {
+     return ;   // normal fast-path return
+  }
+
+  // Slow-path : We've encountered contention -- Spin/Yield/Block strategy.
+  TEVENT (SpinAcquire - ctx) ;
+  int ctr = 0 ;
+  int Yields = 0 ;
   for (;;) {
-    ev = FreeList ;
-    if (ev == NULL) break ;
-    // 1: Detach - sequester or privatize the list
-    // Tantamount to ev = Swap (&FreeList, NULL)
-    if (Atomic::cmpxchg_ptr (NULL, &FreeList, ev) != ev) {
-       continue ;
-    }
-
-    // We've detached the list.  The list in-hand is now
-    // local to this thread.   This thread can operate on the
-    // list without risk of interference from other threads.
-    // 2: Extract -- pop the 1st element from the list.
-    ParkEvent * List = ev->FreeNext ;
-    if (List == NULL) break ;
-    for (;;) {
-        // 3: Try to reattach the residual list
-        guarantee (List != NULL, "invariant") ;
-        ParkEvent * Arv =  (ParkEvent *) Atomic::cmpxchg_ptr (List, &FreeList, NULL) ;
-        if (Arv == NULL) break ;
-
-        // New nodes arrived.  Try to detach the recent arrivals.
-        if (Atomic::cmpxchg_ptr (NULL, &FreeList, Arv) != Arv) {
-            continue ;
+     while (*adr != 0) {
+        ++ctr ;
+        if ((ctr & 0xFFF) == 0 || !os::is_MP()) {
+           if (Yields > 5) {
+             // Consider using a simple NakedSleep() instead.
+             // Then SpinAcquire could be called by non-JVM threads
+             Thread::current()->_ParkEvent->park(1) ;
+           } else {
+             os::NakedYield() ;
+             ++Yields ;
+           }
+        } else {
+           SpinPause() ;
         }
-        guarantee (Arv != NULL, "invariant") ;
-        // 4: Merge Arv into List
-        ParkEvent * Tail = List ;
-        while (Tail->FreeNext != NULL) Tail = Tail->FreeNext ;
-        Tail->FreeNext = Arv ;
-    }
-    break ;
-  }
-
-  if (ev != NULL) {
-    guarantee (ev->AssociatedWith == NULL, "invariant") ;
-  } else {
-    // Do this the hard way -- materialize a new ParkEvent.
-    // In rare cases an allocating thread might detach a long list --
-    // installing null into FreeList -- and then stall or be obstructed.
-    // A 2nd thread calling Allocate() would see FreeList == null.
-    // The list held privately by the 1st thread is unavailable to the 2nd thread.
-    // In that case the 2nd thread would have to materialize a new ParkEvent,
-    // even though free ParkEvents existed in the system.  In this case we end up
-    // with more ParkEvents in circulation than we need, but the race is
-    // rare and the outcome is benign.  Ideally, the # of extant ParkEvents
-    // is equal to the maximum # of threads that existed at any one time.
-    // Because of the race mentioned above, segments of the freelist
-    // can be transiently inaccessible.  At worst we may end up with the
-    // # of ParkEvents in circulation slightly above the ideal.
-    // Note that if we didn't have the TSM/immortal constraint, then
-    // when reattaching, above, we could trim the list.
-    ev = new ParkEvent () ;
-    guarantee ((intptr_t(ev) & 0xFF) == 0, "invariant") ;
-  }
-  ev->reset() ;                     // courtesy to caller
-  ev->AssociatedWith = t ;          // Associate ev with t
-  ev->FreeNext       = NULL ;
-  return ev ;
-}
-
-void ParkEvent::Release (ParkEvent * ev) {
-  if (ev == NULL) return ;
-  guarantee (ev->FreeNext == NULL      , "invariant") ;
-  ev->AssociatedWith = NULL ;
-  for (;;) {
-    // Push ev onto FreeList
-    // The mechanism is "half" lock-free.
-    ParkEvent * List = FreeList ;
-    ev->FreeNext = List ;
-    if (Atomic::cmpxchg_ptr (ev, &FreeList, List) == List) break ;
+     }
+     if (Atomic::cmpxchg (1, adr, 0) == 0) return ;
   }
 }
 
-// Override operator new and delete so we can ensure that the
-// least significant byte of ParkEvent addresses is 0.
-// Beware that excessive address alignment is undesirable
-// as it can result in D$ index usage imbalance as
-// well as bank access imbalance on Niagara-like platforms,
-// although Niagara's hash function should help.
-
-void * ParkEvent::operator new (size_t sz) {
-  return (void *) ((intptr_t (CHeapObj::operator new (sz + 256)) + 256) & -256) ;
-}
-
-void ParkEvent::operator delete (void * a) {
-  // ParkEvents are type-stable and immortal ...
-  ShouldNotReachHere();
+void Thread::SpinRelease (volatile int * adr) {
+  assert (*adr != 0, "invariant") ;
+  OrderAccess::fence() ;      // guarantee at least release consistency.
+  // Roach-motel semantics.
+  // It's safe if subsequent LDs and STs float "up" into the critical section,
+  // but prior LDs and STs within the critical section can't be allowed
+  // to reorder or float past the ST that releases the lock.
+  *adr = 0 ;
 }
 
-
-// 6399321 As a temporary measure we copied & modified the ParkEvent::
-// allocate() and release() code for use by Parkers.  The Parker:: forms
-// will eventually be removed as we consolide and shift over to ParkEvents
-// for both builtin synchronization and JSR166 operations.
-
-volatile int Parker::ListLock = 0 ;
-Parker * volatile Parker::FreeList = NULL ;
-
-Parker * Parker::Allocate (JavaThread * t) {
-  guarantee (t != NULL, "invariant") ;
-  Parker * p ;
-
-  // Start by trying to recycle an existing but unassociated
-  // Parker from the global free list.
+// muxAcquire and muxRelease:
+//
+// *  muxAcquire and muxRelease support a single-word lock-word construct.
+//    The LSB of the word is set IFF the lock is held.
+//    The remainder of the word points to the head of a singly-linked list
+//    of threads blocked on the lock.
+//
+// *  The current implementation of muxAcquire-muxRelease uses its own
+//    dedicated Thread._MuxEvent instance.  If we're interested in
+//    minimizing the peak number of extant ParkEvent instances then
+//    we could eliminate _MuxEvent and "borrow" _ParkEvent as long
+//    as certain invariants were satisfied.  Specifically, care would need
+//    to be taken with regards to consuming unpark() "permits".
+//    A safe rule of thumb is that a thread would never call muxAcquire()
+//    if it's enqueued (cxq, EntryList, WaitList, etc) and will subsequently
+//    park().  Otherwise the _ParkEvent park() operation in muxAcquire() could
+//    consume an unpark() permit intended for monitorenter, for instance.
+//    One way around this would be to widen the restricted-range semaphore
+//    implemented in park().  Another alternative would be to provide
+//    multiple instances of the PlatformEvent() for each thread.  One
+//    instance would be dedicated to muxAcquire-muxRelease, for instance.
+//
+// *  Usage:
+//    -- Only as leaf locks
+//    -- for short-term locking only as muxAcquire does not perform
+//       thread state transitions.
+//
+// Alternatives:
+// *  We could implement muxAcquire and muxRelease with MCS or CLH locks
+//    but with parking or spin-then-park instead of pure spinning.
+// *  Use Taura-Oyama-Yonenzawa locks.
+// *  It's possible to construct a 1-0 lock if we encode the lockword as
+//    (List,LockByte).  Acquire will CAS the full lockword while Release
+//    will STB 0 into the LockByte.  The 1-0 scheme admits stranding, so
+//    acquiring threads use timers (ParkTimed) to detect and recover from
+//    the stranding window.  Thread/Node structures must be aligned on 256-byte
+//    boundaries by using placement-new.
+// *  Augment MCS with advisory back-link fields maintained with CAS().
+//    Pictorially:  LockWord -> T1 <-> T2 <-> T3 <-> ... <-> Tn <-> Owner.
+//    The validity of the backlinks must be ratified before we trust the value.
+//    If the backlinks are invalid the exiting thread must back-track through the
+//    the forward links, which are always trustworthy.
+// *  Add a successor indication.  The LockWord is currently encoded as
+//    (List, LOCKBIT:1).  We could also add a SUCCBIT or an explicit _succ variable
+//    to provide the usual futile-wakeup optimization.
+//    See RTStt for details.
+// *  Consider schedctl.sc_nopreempt to cover the critical section.
+//
+
+
+typedef volatile intptr_t MutexT ;      // Mux Lock-word
+enum MuxBits { LOCKBIT = 1 } ;
+
+void Thread::muxAcquire (volatile intptr_t * Lock, const char * LockName) {
+  intptr_t w = Atomic::cmpxchg_ptr (LOCKBIT, Lock, 0) ;
+  if (w == 0) return ;
+  if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
+     return ;
+  }
+
+  TEVENT (muxAcquire - Contention) ;
+  ParkEvent * const Self = Thread::current()->_MuxEvent ;
+  assert ((intptr_t(Self) & LOCKBIT) == 0, "invariant") ;
   for (;;) {
-    p = FreeList ;
-    if (p  == NULL) break ;
-    // 1: Detach
-    // Tantamount to p = Swap (&FreeList, NULL)
-    if (Atomic::cmpxchg_ptr (NULL, &FreeList, p) != p) {
-       continue ;
-    }
-
-    // We've detached the list.  The list in-hand is now
-    // local to this thread.   This thread can operate on the
-    // list without risk of interference from other threads.
-    // 2: Extract -- pop the 1st element from the list.
-    Parker * List = p->FreeNext ;
-    if (List == NULL) break ;
-    for (;;) {
-        // 3: Try to reattach the residual list
-        guarantee (List != NULL, "invariant") ;
-        Parker * Arv =  (Parker *) Atomic::cmpxchg_ptr (List, &FreeList, NULL) ;
-        if (Arv == NULL) break ;
-
-        // New nodes arrived.  Try to detach the recent arrivals.
-        if (Atomic::cmpxchg_ptr (NULL, &FreeList, Arv) != Arv) {
-            continue ;
+     int its = (os::is_MP() ? 100 : 0) + 1 ;
+
+     // Optional spin phase: spin-then-park strategy
+     while (--its >= 0) {
+       w = *Lock ;
+       if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
+          return ;
+       }
+     }
+
+     Self->reset() ;
+     Self->OnList = intptr_t(Lock) ;
+     // The following fence() isn't _strictly necessary as the subsequent
+     // CAS() both serializes execution and ratifies the fetched *Lock value.
+     OrderAccess::fence();
+     for (;;) {
+        w = *Lock ;
+        if ((w & LOCKBIT) == 0) {
+            if (Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
+                Self->OnList = 0 ;   // hygiene - allows stronger asserts
+                return ;
+            }
+            continue ;      // Interference -- *Lock changed -- Just retry
         }
-        guarantee (Arv != NULL, "invariant") ;
-        // 4: Merge Arv into List
-        Parker * Tail = List ;
-        while (Tail->FreeNext != NULL) Tail = Tail->FreeNext ;
-        Tail->FreeNext = Arv ;
-    }
-    break ;
-  }
-
-  if (p != NULL) {
-    guarantee (p->AssociatedWith == NULL, "invariant") ;
-  } else {
-    // Do this the hard way -- materialize a new Parker..
-    // In rare cases an allocating thread might detach
-    // a long list -- installing null into FreeList --and
-    // then stall.  Another thread calling Allocate() would see
-    // FreeList == null and then invoke the ctor.  In this case we
-    // end up with more Parkers in circulation than we need, but
-    // the race is rare and the outcome is benign.
-    // Ideally, the # of extant Parkers is equal to the
-    // maximum # of threads that existed at any one time.
-    // Because of the race mentioned above, segments of the
-    // freelist can be transiently inaccessible.  At worst
-    // we may end up with the # of Parkers in circulation
-    // slightly above the ideal.
-    p = new Parker() ;
-  }
-  p->AssociatedWith = t ;          // Associate p with t
-  p->FreeNext       = NULL ;
-  return p ;
-}
-
-
-void Parker::Release (Parker * p) {
-  if (p == NULL) return ;
-  guarantee (p->AssociatedWith != NULL, "invariant") ;
-  guarantee (p->FreeNext == NULL      , "invariant") ;
-  p->AssociatedWith = NULL ;
-  for (;;) {
-    // Push p onto FreeList
-    Parker * List = FreeList ;
-    p->FreeNext = List ;
-    if (Atomic::cmpxchg_ptr (p, &FreeList, List) == List) break ;
+        assert (w & LOCKBIT, "invariant") ;
+        Self->ListNext = (ParkEvent *) (w & ~LOCKBIT );
+        if (Atomic::cmpxchg_ptr (intptr_t(Self)|LOCKBIT, Lock, w) == w) break ;
+     }
+
+     while (Self->OnList != 0) {
+        Self->park() ;
+     }
   }
 }
 
+void Thread::muxAcquireW (volatile intptr_t * Lock, ParkEvent * ev) {
+  intptr_t w = Atomic::cmpxchg_ptr (LOCKBIT, Lock, 0) ;
+  if (w == 0) return ;
+  if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
+    return ;
+  }
+
+  TEVENT (muxAcquire - Contention) ;
+  ParkEvent * ReleaseAfter = NULL ;
+  if (ev == NULL) {
+    ev = ReleaseAfter = ParkEvent::Allocate (NULL) ;
+  }
+  assert ((intptr_t(ev) & LOCKBIT) == 0, "invariant") ;
+  for (;;) {
+    guarantee (ev->OnList == 0, "invariant") ;
+    int its = (os::is_MP() ? 100 : 0) + 1 ;
+
+    // Optional spin phase: spin-then-park strategy
+    while (--its >= 0) {
+      w = *Lock ;
+      if ((w & LOCKBIT) == 0 && Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
+        if (ReleaseAfter != NULL) {
+          ParkEvent::Release (ReleaseAfter) ;
+        }
+        return ;
+      }
+    }
+
+    ev->reset() ;
+    ev->OnList = intptr_t(Lock) ;
+    // The following fence() isn't _strictly necessary as the subsequent
+    // CAS() both serializes execution and ratifies the fetched *Lock value.
+    OrderAccess::fence();
+    for (;;) {
+      w = *Lock ;
+      if ((w & LOCKBIT) == 0) {
+        if (Atomic::cmpxchg_ptr (w|LOCKBIT, Lock, w) == w) {
+          ev->OnList = 0 ;
+          // We call ::Release while holding the outer lock, thus
+          // artificially lengthening the critical section.
+          // Consider deferring the ::Release() until the subsequent unlock(),
+          // after we've dropped the outer lock.
+          if (ReleaseAfter != NULL) {
+            ParkEvent::Release (ReleaseAfter) ;
+          }
+          return ;
+        }
+        continue ;      // Interference -- *Lock changed -- Just retry
+      }
+      assert (w & LOCKBIT, "invariant") ;
+      ev->ListNext = (ParkEvent *) (w & ~LOCKBIT );
+      if (Atomic::cmpxchg_ptr (intptr_t(ev)|LOCKBIT, Lock, w) == w) break ;
+    }
+
+    while (ev->OnList != 0) {
+      ev->park() ;
+    }
+  }
+}
+
+// Release() must extract a successor from the list and then wake that thread.
+// It can "pop" the front of the list or use a detach-modify-reattach (DMR) scheme
+// similar to that used by ParkEvent::Allocate() and ::Release().  DMR-based
+// Release() would :
+// (A) CAS() or swap() null to *Lock, releasing the lock and detaching the list.
+// (B) Extract a successor from the private list "in-hand"
+// (C) attempt to CAS() the residual back into *Lock over null.
+//     If there were any newly arrived threads and the CAS() would fail.
+//     In that case Release() would detach the RATs, re-merge the list in-hand
+//     with the RATs and repeat as needed.  Alternately, Release() might
+//     detach and extract a successor, but then pass the residual list to the wakee.
+//     The wakee would be responsible for reattaching and remerging before it
+//     competed for the lock.
+//
+// Both "pop" and DMR are immune from ABA corruption -- there can be
+// multiple concurrent pushers, but only one popper or detacher.
+// This implementation pops from the head of the list.  This is unfair,
+// but tends to provide excellent throughput as hot threads remain hot.
+// (We wake recently run threads first).
+
+void Thread::muxRelease (volatile intptr_t * Lock)  {
+  for (;;) {
+    const intptr_t w = Atomic::cmpxchg_ptr (0, Lock, LOCKBIT) ;
+    assert (w & LOCKBIT, "invariant") ;
+    if (w == LOCKBIT) return ;
+    ParkEvent * List = (ParkEvent *) (w & ~LOCKBIT) ;
+    assert (List != NULL, "invariant") ;
+    assert (List->OnList == intptr_t(Lock), "invariant") ;
+    ParkEvent * nxt = List->ListNext ;
+
+    // The following CAS() releases the lock and pops the head element.
+    if (Atomic::cmpxchg_ptr (intptr_t(nxt), Lock, w) != w) {
+      continue ;
+    }
+    List->OnList = 0 ;
+    OrderAccess::fence() ;
+    List->unpark () ;
+    return ;
+  }
+}
+
+
 void Threads::verify() {
   ALL_JAVA_THREADS(p) {
     p->verify();
--- a/src/share/vm/runtime/thread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/thread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,37 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_THREAD_HPP
+#define SHARE_VM_RUNTIME_THREAD_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/threadLocalAllocBuffer.hpp"
+#include "oops/oop.hpp"
+#include "prims/jni.h"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/javaFrameAnchor.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/park.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "runtime/unhandledOops.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/top.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/dirtyCardQueue.hpp"
+#include "gc_implementation/g1/satbQueue.hpp"
+#endif
+#ifdef ZERO
+#ifdef TARGET_ARCH_zero
+# include "stack_zero.hpp"
+#endif
+#endif
+
 class ThreadSafepointState;
 class ThreadProfiler;
 
@@ -30,6 +61,7 @@
 class ThreadStatistics;
 class ConcurrentLocksDump;
 class ParkEvent ;
+class Parker;
 
 class ciEnv;
 class CompileThread;
@@ -544,7 +576,6 @@
   static void muxAcquire  (volatile intptr_t * Lock, const char * Name) ;
   static void muxAcquireW (volatile intptr_t * Lock, ParkEvent * ev) ;
   static void muxRelease  (volatile intptr_t * Lock) ;
-
 };
 
 // Inline implementation of Thread::current()
@@ -1514,7 +1545,25 @@
 #endif // !SERIALGC
 
   // Machine dependent stuff
-  #include "incls/_thread_pd.hpp.incl"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "thread_linux_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "thread_linux_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "thread_linux_zero.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "thread_solaris_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "thread_solaris_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "thread_windows_x86.hpp"
+#endif
+
 
  public:
   void set_blocked_on_compilation(bool value) {
@@ -1769,100 +1818,5 @@
   }
 };
 
-// ParkEvents are type-stable and immortal.
-//
-// Lifecycle: Once a ParkEvent is associated with a thread that ParkEvent remains
-// associated with the thread for the thread's entire lifetime - the relationship is
-// stable. A thread will be associated at most one ParkEvent.  When the thread
-// expires, the ParkEvent moves to the EventFreeList.  New threads attempt to allocate from
-// the EventFreeList before creating a new Event.  Type-stability frees us from
-// worrying about stale Event or Thread references in the objectMonitor subsystem.
-// (A reference to ParkEvent is always valid, even though the event may no longer be associated
-// with the desired or expected thread.  A key aspect of this design is that the callers of
-// park, unpark, etc must tolerate stale references and spurious wakeups).
-//
-// Only the "associated" thread can block (park) on the ParkEvent, although
-// any other thread can unpark a reachable parkevent.  Park() is allowed to
-// return spuriously.  In fact park-unpark a really just an optimization to
-// avoid unbounded spinning and surrender the CPU to be a polite system citizen.
-// A degenerate albeit "impolite" park-unpark implementation could simply return.
-// See http://blogs.sun.com/dave for more details.
-//
-// Eventually I'd like to eliminate Events and ObjectWaiters, both of which serve as
-// thread proxies, and simply make the THREAD structure type-stable and persistent.
-// Currently, we unpark events associated with threads, but ideally we'd just
-// unpark threads.
-//
-// The base-class, PlatformEvent, is platform-specific while the ParkEvent is
-// platform-independent.  PlatformEvent provides park(), unpark(), etc., and
-// is abstract -- that is, a PlatformEvent should never be instantiated except
-// as part of a ParkEvent.
-// Equivalently we could have defined a platform-independent base-class that
-// exported Allocate(), Release(), etc.  The platform-specific class would extend
-// that base-class, adding park(), unpark(), etc.
-//
-// A word of caution: The JVM uses 2 very similar constructs:
-// 1. ParkEvent are used for Java-level "monitor" synchronization.
-// 2. Parkers are used by JSR166-JUC park-unpark.
-//
-// We'll want to eventually merge these redundant facilities and use ParkEvent.
 
-
-class ParkEvent : public os::PlatformEvent {
-  private:
-    ParkEvent * FreeNext ;
-
-    // Current association
-    Thread * AssociatedWith ;
-    intptr_t RawThreadIdentity ;        // LWPID etc
-    volatile int Incarnation ;
-
-    // diagnostic : keep track of last thread to wake this thread.
-    // this is useful for construction of dependency graphs.
-    void * LastWaker ;
-
-  public:
-    // MCS-CLH list linkage and Native Mutex/Monitor
-    ParkEvent * volatile ListNext ;
-    ParkEvent * volatile ListPrev ;
-    volatile intptr_t OnList ;
-    volatile int TState ;
-    volatile int Notified ;             // for native monitor construct
-    volatile int IsWaiting ;            // Enqueued on WaitSet
-
-
-  private:
-    static ParkEvent * volatile FreeList ;
-    static volatile int ListLock ;
-
-    // It's prudent to mark the dtor as "private"
-    // ensuring that it's not visible outside the package.
-    // Unfortunately gcc warns about such usage, so
-    // we revert to the less desirable "protected" visibility.
-    // The other compilers accept private dtors.
-
-  protected:        // Ensure dtor is never invoked
-    ~ParkEvent() { guarantee (0, "invariant") ; }
-
-    ParkEvent() : PlatformEvent() {
-       AssociatedWith = NULL ;
-       FreeNext       = NULL ;
-       ListNext       = NULL ;
-       ListPrev       = NULL ;
-       OnList         = 0 ;
-       TState         = 0 ;
-       Notified       = 0 ;
-       IsWaiting      = 0 ;
-    }
-
-    // We use placement-new to force ParkEvent instances to be
-    // aligned on 256-byte address boundaries.  This ensures that the least
-    // significant byte of a ParkEvent address is always 0.
-
-    void * operator new (size_t sz) ;
-    void operator delete (void * a) ;
-
-  public:
-    static ParkEvent * Allocate (Thread * t) ;
-    static void Release (ParkEvent * e) ;
-} ;
+#endif // SHARE_VM_RUNTIME_THREAD_HPP
--- a/src/share/vm/runtime/threadCritical.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/threadCritical.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_THREADCRITICAL_HPP
+#define SHARE_VM_RUNTIME_THREADCRITICAL_HPP
+
+#include "memory/allocation.hpp"
+
 // ThreadCritical is used to protect short non-blocking critical sections.
 // This class must use no vm facilities that require initialization.
 // It is used very early in the vm's initialization, in allocation
@@ -51,3 +56,5 @@
   ThreadCritical();
   ~ThreadCritical();
 };
+
+#endif // SHARE_VM_RUNTIME_THREADCRITICAL_HPP
--- a/src/share/vm/runtime/threadLocalStorage.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/threadLocalStorage.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_threadLocalStorage.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 // static member initialization
 int ThreadLocalStorage::_thread_index = -1;
--- a/src/share/vm/runtime/threadLocalStorage.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/threadLocalStorage.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_THREADLOCALSTORAGE_HPP
+#define SHARE_VM_RUNTIME_THREADLOCALSTORAGE_HPP
+
+#include "gc_implementation/shared/gcUtil.hpp"
+#include "runtime/os.hpp"
+#include "utilities/top.hpp"
+
 // Interface for thread local storage
 
 // Fast variant of ThreadLocalStorage::get_thread_slow
@@ -37,7 +44,25 @@
   static void    invalidate_all() { pd_invalidate_all(); }
 
   // Machine dependent stuff
-  #include "incls/_threadLS_pd.hpp.incl"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "threadLS_linux_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "threadLS_linux_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "threadLS_linux_zero.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "threadLS_solaris_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "threadLS_solaris_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "threadLS_windows_x86.hpp"
+#endif
+
 
  public:
   // Accessor
@@ -61,3 +86,5 @@
   static void pd_invalidate_all();
 
 };
+
+#endif // SHARE_VM_RUNTIME_THREADLOCALSTORAGE_HPP
--- a/src/share/vm/runtime/timer.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/timer.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_timer.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/ostream.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 
 void elapsedTimer::add(elapsedTimer t) {
--- a/src/share/vm/runtime/timer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/timer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_TIMER_HPP
+#define SHARE_VM_RUNTIME_TIMER_HPP
+
+#include "utilities/globalDefinitions.hpp"
+
 // Timers for simple measurement.
 
 class elapsedTimer VALUE_OBJ_CLASS_SPEC {
@@ -119,3 +124,5 @@
                outputStream *logfile = NULL);
   ~TraceCPUTime();
 };
+
+#endif // SHARE_VM_RUNTIME_TIMER_HPP
--- a/src/share/vm/runtime/unhandledOops.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/unhandledOops.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_unhandledOops.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/gcLocker.inline.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/unhandledOops.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 #ifdef CHECK_UNHANDLED_OOPS
 const int free_list_size = 256;
--- a/src/share/vm/runtime/unhandledOops.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/unhandledOops.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -21,6 +21,10 @@
  * questions.
  *
  */
+
+#ifndef SHARE_VM_RUNTIME_UNHANDLEDOOPS_HPP
+#define SHARE_VM_RUNTIME_UNHANDLEDOOPS_HPP
+
 #ifdef CHECK_UNHANDLED_OOPS
 
 // Detect unhanded oops in VM code
@@ -81,3 +85,5 @@
 const intptr_t BAD_OOP_ADDR =  0xfffffff1;
 #endif // _LP64
 #endif // CHECK_UNHANDLED_OOPS
+
+#endif // SHARE_VM_RUNTIME_UNHANDLEDOOPS_HPP
--- a/src/share/vm/runtime/vframe.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vframe.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,29 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vframe.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeCache.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/objectMonitor.inline.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
+#include "runtime/vframe_hp.hpp"
 
 vframe::vframe(const frame* fr, const RegisterMap* reg_map, JavaThread* thread)
 : _reg_map(reg_map), _thread(thread) {
--- a/src/share/vm/runtime/vframe.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vframe.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,19 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VFRAME_HPP
+#define SHARE_VM_RUNTIME_VFRAME_HPP
+
+#include "code/debugInfo.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/location.hpp"
+#include "oops/oop.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/stackValue.hpp"
+#include "runtime/stackValueCollection.hpp"
+#include "utilities/growableArray.hpp"
+
 // vframes are virtual stack frames representing source level activations.
 // A single frame may hold several source level activations in the case of
 // optimized code. The debugging stored with the optimized code enables
@@ -508,3 +521,5 @@
   _method = method;
   _bci    = bci;
 }
+
+#endif // SHARE_VM_RUNTIME_VFRAME_HPP
--- a/src/share/vm/runtime/vframeArray.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vframeArray.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,25 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vframeArray.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vframeArray.hpp"
+#include "runtime/vframe_hp.hpp"
+#include "utilities/events.hpp"
+#ifdef COMPILER2
+#include "opto/runtime.hpp"
+#endif
 
 
 int vframeArrayElement:: bci(void) const { return (_bci == SynchronizationEntryBCI ? 0 : _bci); }
--- a/src/share/vm/runtime/vframeArray.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vframeArray.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VFRAMEARRAY_HPP
+#define SHARE_VM_RUNTIME_VFRAMEARRAY_HPP
+
+#include "oops/arrayOop.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "utilities/growableArray.hpp"
+
 // A vframeArray is an array used for momentarily storing off stack Java method activations
 // during deoptimization. Essentially it is an array of vframes where each vframe
 // data is stored off stack. This structure will never exist across a safepoint so
@@ -201,3 +210,5 @@
 #endif
 
 };
+
+#endif // SHARE_VM_RUNTIME_VFRAMEARRAY_HPP
--- a/src/share/vm/runtime/vframe_hp.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vframe_hp.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,26 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vframe_hp.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeCache.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/scopeDesc.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/basicLock.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/monitorChunk.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/vframeArray.hpp"
+#include "runtime/vframe_hp.hpp"
+#ifdef COMPILER2
+#include "opto/matcher.hpp"
+#endif
 
 
 // ------------- compiledVFrame --------------
--- a/src/share/vm/runtime/vframe_hp.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vframe_hp.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VFRAME_HP_HPP
+#define SHARE_VM_RUNTIME_VFRAME_HP_HPP
+
+#include "runtime/vframe.hpp"
+
 class compiledVFrame: public javaVFrame {
  public:
   // JVM state
@@ -134,3 +139,5 @@
     int               _index;
 
 };
+
+#endif // SHARE_VM_RUNTIME_VFRAME_HP_HPP
--- a/src/share/vm/runtime/virtualspace.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/virtualspace.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_virtualspace.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/markOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/virtualspace.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 
 // ReservedSpace
--- a/src/share/vm/runtime/virtualspace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/virtualspace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VIRTUALSPACE_HPP
+#define SHARE_VM_RUNTIME_VIRTUALSPACE_HPP
+
+#include "memory/allocation.hpp"
+
 // ReservedSpace is a data structure for reserving a contiguous address range.
 
 class ReservedSpace VALUE_OBJ_CLASS_SPEC {
@@ -223,3 +228,5 @@
   // Debugging
   void print() PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_RUNTIME_VIRTUALSPACE_HPP
--- a/src/share/vm/runtime/vmStructs.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vmStructs.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,152 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmStructs.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/dictionary.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/loaderConstraints.hpp"
+#include "classfile/placeholders.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeBlob.hpp"
+#include "code/codeCache.hpp"
+#include "code/compressedStream.hpp"
+#include "code/location.hpp"
+#include "code/nmethod.hpp"
+#include "code/pcDesc.hpp"
+#include "code/stubs.hpp"
+#include "code/vmreg.hpp"
+#include "compiler/oopMap.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
+#include "gc_implementation/shared/immutableSpace.hpp"
+#include "gc_implementation/shared/markSweep.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/cardTableRS.hpp"
+#include "memory/compactPermGen.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generation.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/heap.hpp"
+#include "memory/permGen.hpp"
+#include "memory/space.hpp"
+#include "memory/tenuredGeneration.hpp"
+#include "memory/universe.hpp"
+#include "memory/watermark.hpp"
+#include "oops/arrayKlass.hpp"
+#include "oops/arrayKlassKlass.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/compiledICHolderKlass.hpp"
+#include "oops/compiledICHolderOop.hpp"
+#include "oops/constMethodKlass.hpp"
+#include "oops/constMethodOop.hpp"
+#include "oops/constantPoolKlass.hpp"
+#include "oops/constantPoolOop.hpp"
+#include "oops/cpCacheKlass.hpp"
+#include "oops/cpCacheOop.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceKlassKlass.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/markOop.hpp"
+#include "oops/methodDataKlass.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodKlass.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/objArrayKlassKlass.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbolKlass.hpp"
+#include "oops/symbolOop.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "oops/typeArrayKlassKlass.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "prims/jvmtiAgentThread.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/perfMemory.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/virtualspace.hpp"
+#include "runtime/vmStructs.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/hashtable.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vmStructs_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vmStructs_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vmStructs_zero.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "vmStructs_linux_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "vmStructs_linux_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "vmStructs_linux_zero.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "vmStructs_solaris_x86.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "vmStructs_solaris_sparc.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "vmStructs_windows_x86.hpp"
+#endif
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
+#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
+#include "gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp"
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/parNew/vmStructs_parNew.hpp"
+#include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
+#include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+#include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/matcher.hpp"
+#ifdef TARGET_ARCH_MODEL_x86_32
+# include "adfiles/adGlobals_x86_32.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_x86_64
+# include "adfiles/adGlobals_x86_64.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_sparc
+# include "adfiles/adGlobals_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_zero
+# include "adfiles/adGlobals_zero.hpp"
+#endif
+#endif
 
 // Note: the cross-product of (c1, c2, product, nonproduct, ...),
 // (nonstatic, static), and (unchecked, checked) has not been taken.
@@ -86,6 +230,7 @@
   nonstatic_field(constantPoolOopDesc,         _tags,                                         typeArrayOop)                          \
   nonstatic_field(constantPoolOopDesc,         _cache,                                        constantPoolCacheOop)                  \
   nonstatic_field(constantPoolOopDesc,         _pool_holder,                                  klassOop)                              \
+  nonstatic_field(constantPoolOopDesc,         _operands,                                     typeArrayOop)                          \
   nonstatic_field(constantPoolOopDesc,         _length,                                       int)                                   \
   nonstatic_field(constantPoolCacheOopDesc,    _length,                                       int)                                   \
   nonstatic_field(constantPoolCacheOopDesc,    _constant_pool,                                constantPoolOop)                       \
@@ -1527,6 +1672,17 @@
                                                                           \
   declare_constant(symbolOopDesc::max_symbol_length)                      \
                                                                           \
+  /*************************************************/                     \
+  /* constantPoolOop layout enum for InvokeDynamic */                     \
+  /*************************************************/                     \
+                                                                          \
+  declare_constant(constantPoolOopDesc::_multi_operand_count_offset)      \
+  declare_constant(constantPoolOopDesc::_multi_operand_base_offset)       \
+  declare_constant(constantPoolOopDesc::_indy_bsm_offset)                 \
+  declare_constant(constantPoolOopDesc::_indy_nt_offset)                  \
+  declare_constant(constantPoolOopDesc::_indy_argc_offset)                \
+  declare_constant(constantPoolOopDesc::_indy_argv_offset)                \
+                                                                          \
   /*********************************************/                         \
   /* ConstantPoolCacheEntry FlagBitValues enum */                         \
   /*********************************************/                         \
--- a/src/share/vm/runtime/vmStructs.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vmStructs.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,16 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VMSTRUCTS_HPP
+#define SHARE_VM_RUNTIME_VMSTRUCTS_HPP
+
+#ifndef VM_STRUCTS_KERNEL
+#include "utilities/debug.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_Runtime1.hpp"
+#endif
+
 // This table encapsulates the debugging information required by the
 // serviceability agent in order to run. Specifically, we need to
 // understand the layout of certain C data structures (offsets, in
@@ -119,3 +129,5 @@
   //  debug_only(static int findType(const char* typeName);)
   static int findType(const char* typeName);
 };
+
+#endif // SHARE_VM_RUNTIME_VMSTRUCTS_HPP
--- a/src/share/vm/runtime/vmThread.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vmThread.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,30 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmThread.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/runtimeService.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/events.hpp"
+#include "utilities/xmlstream.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 HS_DTRACE_PROBE_DECL3(hotspot, vmops__request, char *, uintptr_t, int);
 HS_DTRACE_PROBE_DECL3(hotspot, vmops__begin, char *, uintptr_t, int);
--- a/src/share/vm/runtime/vmThread.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vmThread.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VMTHREAD_HPP
+#define SHARE_VM_RUNTIME_VMTHREAD_HPP
+
+#include "runtime/perfData.hpp"
+#include "runtime/vm_operations.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 //
 // Prioritized queue of VM operations.
 //
@@ -144,3 +159,5 @@
   // Pointer to single-instance of VM thread
   static VMThread*     _vm_thread;
 };
+
+#endif // SHARE_VM_RUNTIME_VMTHREAD_HPP
--- a/src/share/vm/runtime/vm_operations.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vm_operations.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,27 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_operations.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/compilerOracle.hpp"
+#include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/sweeper.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/threadService.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 #define VM_OP_NAME_INITIALIZE(name) #name,
 
@@ -100,7 +119,7 @@
 
 
 void VM_DeoptimizeFrame::doit() {
-  Deoptimization::deoptimize_frame(_thread, _id);
+  Deoptimization::deoptimize_frame_internal(_thread, _id);
 }
 
 
--- a/src/share/vm/runtime/vm_operations.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vm_operations.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
+#define SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
+
+#include "classfile/javaClasses.hpp"
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "runtime/thread.hpp"
+#include "utilities/top.hpp"
+
 // The following classes are used for operations
 // initiated by a Java thread but that must
 // take place in the VMThread.
@@ -231,12 +240,18 @@
   bool allow_nested_vm_operations() const        { return true; }
 };
 
+
+// Deopt helper that can deoptimize frames in threads other than the
+// current thread.  Only used through Deoptimization::deoptimize_frame.
 class VM_DeoptimizeFrame: public VM_Operation {
+  friend class Deoptimization;
+
  private:
   JavaThread* _thread;
   intptr_t*   _id;
+  VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id);
+
  public:
-  VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id);
   VMOp_Type type() const                         { return VMOp_DeoptimizeFrame; }
   void doit();
   bool allow_nested_vm_operations() const        { return true;  }
@@ -380,3 +395,5 @@
   VMOp_Type type() const { return VMOp_Exit; }
   void doit();
 };
+
+#endif // SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
--- a/src/share/vm/runtime/vm_version.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vm_version.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/arguments.hpp"
+#ifdef TARGET_ARCH_x86
+# include "vm_version_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "vm_version_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "vm_version_zero.hpp"
+#endif
 
 const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();
 const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();
--- a/src/share/vm/runtime/vm_version.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/runtime/vm_version.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_RUNTIME_VM_VERSION_HPP
+#define SHARE_VM_RUNTIME_VM_VERSION_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/ostream.hpp"
+
 // VM_Version provides information about the VM.
 
 class Abstract_VM_Version: AllStatic {
@@ -88,3 +94,5 @@
   // be VM version specific.
   static unsigned int calc_parallel_worker_threads();
 };
+
+#endif // SHARE_VM_RUNTIME_VM_VERSION_HPP
--- a/src/share/vm/services/attachListener.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/attachListener.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_attachListener.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/os.hpp"
+#include "services/attachListener.hpp"
+#include "services/heapDumper.hpp"
 
 volatile bool AttachListener::_initialized;
 
--- a/src/share/vm/services/attachListener.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/attachListener.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_ATTACHLISTENER_HPP
+#define SHARE_VM_SERVICES_ATTACHLISTENER_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/ostream.hpp"
+
 // The AttachListener thread services a queue of operations that are enqueued
 // by client tools. Each operation is identified by a name and has up to 3
 // arguments. The operation name is mapped to a function which performs the
@@ -145,3 +152,5 @@
   virtual void complete(jint result, bufferedStream* result_stream) = 0;
 };
 #endif // SERVICES_KERNEL
+
+#endif // SHARE_VM_SERVICES_ATTACHLISTENER_HPP
--- a/src/share/vm/services/classLoadingService.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/classLoadingService.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,15 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_classLoadingService.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/allocation.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "services/classLoadingService.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/dtrace.hpp"
 
 #ifdef DTRACE_ENABLED
 
--- a/src/share/vm/services/classLoadingService.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/classLoadingService.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_CLASSLOADINGSERVICE_HPP
+#define SHARE_VM_SERVICES_CLASSLOADINGSERVICE_HPP
+
+#include "runtime/handles.hpp"
+#include "runtime/perfData.hpp"
+#include "utilities/growableArray.hpp"
+
 class instanceKlass;
 
 // VM monitoring and management support for the Class Loading subsystem
@@ -133,3 +140,5 @@
     _loaded_classes->append(h);
   }
 };
+
+#endif // SHARE_VM_SERVICES_CLASSLOADINGSERVICE_HPP
--- a/src/share/vm/services/dtraceAttacher.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/dtraceAttacher.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_dtraceAttacher.cpp.incl"
+#include "precompiled.hpp"
+#include "code/codeCache.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/dtraceAttacher.hpp"
 
 #ifdef SOLARIS
 
--- a/src/share/vm/services/dtraceAttacher.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/dtraceAttacher.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_DTRACEATTACHER_HPP
+#define SHARE_VM_SERVICES_DTRACEATTACHER_HPP
+
 #define DTRACE_ALLOC_PROBES    0x1
 #define DTRACE_METHOD_PROBES   0x2
 #define DTRACE_MONITOR_PROBES  0x4
@@ -44,3 +47,5 @@
   // set DTraceMonitorProbes flag
   static void set_monitor_dprobes(bool value);
 };
+
+#endif // SHARE_VM_SERVICES_DTRACEATTACHER_HPP
--- a/src/share/vm/services/g1MemoryPool.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/g1MemoryPool.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,12 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_g1MemoryPool.cpp.incl"
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/g1/g1CollectorPolicy.hpp"
+#include "gc_implementation/g1/heapRegion.hpp"
+#include "services/g1MemoryPool.hpp"
 
 G1MemoryPoolSuper::G1MemoryPoolSuper(G1CollectedHeap* g1h,
                                      const char* name,
--- a/src/share/vm/services/g1MemoryPool.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/g1MemoryPool.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_G1MEMORYPOOL_HPP
+#define SHARE_VM_SERVICES_G1MEMORYPOOL_HPP
+
+#ifndef SERIALGC
+#include "services/memoryPool.hpp"
+#include "services/memoryUsage.hpp"
+#endif
+
 class G1CollectedHeap;
 
 // This file contains the three classes that represent the memory
@@ -198,3 +206,5 @@
   }
   MemoryUsage get_memory_usage();
 };
+
+#endif // SHARE_VM_SERVICES_G1MEMORYPOOL_HPP
--- a/src/share/vm/services/heapDumper.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/heapDumper.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,26 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_heapDumper.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_implementation/shared/vmGCOperations.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/universe.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/reflectionUtils.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/heapDumper.hpp"
+#include "services/threadService.hpp"
+#include "utilities/ostream.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#endif
 
 /*
  * HPROF binary format - description copied from:
--- a/src/share/vm/services/heapDumper.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/heapDumper.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_HEAPDUMPER_HPP
+#define SHARE_VM_SERVICES_HEAPDUMPER_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/oop.hpp"
+#include "runtime/os.hpp"
+
 // HeapDumper is used to dump the java heap to file in HPROF binary format:
 //
 //  { HeapDumper dumper(true /* full GC before heap dump */);
@@ -73,3 +81,5 @@
 
   static void dump_heap_from_oome()    KERNEL_RETURN;
 };
+
+#endif // SHARE_VM_SERVICES_HEAPDUMPER_HPP
--- a/src/share/vm/services/jmm.h	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/jmm.h	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/src/share/vm/services/lowMemoryDetector.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/lowMemoryDetector.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_lowMemoryDetector.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "services/lowMemoryDetector.hpp"
+#include "services/management.hpp"
 
 LowMemoryDetectorThread* LowMemoryDetector::_detector_thread = NULL;
 volatile bool LowMemoryDetector::_enabled_for_collected_pools = false;
--- a/src/share/vm/services/lowMemoryDetector.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/lowMemoryDetector.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_LOWMEMORYDETECTOR_HPP
+#define SHARE_VM_SERVICES_LOWMEMORYDETECTOR_HPP
+
+#include "memory/allocation.hpp"
+#include "services/memoryPool.hpp"
+#include "services/memoryService.hpp"
+
 // Low Memory Detection Support
 // Two memory alarms in the JDK (we called them sensors).
 //   - Heap memory sensor
@@ -283,3 +290,5 @@
     LowMemoryDetector::enable();
   }
 };
+
+#endif // SHARE_VM_SERVICES_LOWMEMORYDETECTOR_HPP
--- a/src/share/vm/services/management.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/management.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,31 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_management.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "compiler/compileBroker.hpp"
+#include "memory/iterator.hpp"
+#include "memory/oopFactory.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/klass.hpp"
+#include "oops/klassOop.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/os.hpp"
+#include "services/classLoadingService.hpp"
+#include "services/heapDumper.hpp"
+#include "services/lowMemoryDetector.hpp"
+#include "services/management.hpp"
+#include "services/memoryManager.hpp"
+#include "services/memoryPool.hpp"
+#include "services/memoryService.hpp"
+#include "services/runtimeService.hpp"
+#include "services/threadService.hpp"
 
 PerfVariable* Management::_begin_vm_creation_time = NULL;
 PerfVariable* Management::_end_vm_creation_time = NULL;
--- a/src/share/vm/services/management.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/management.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_MANAGEMENT_HPP
+#define SHARE_VM_SERVICES_MANAGEMENT_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/timer.hpp"
+#include "services/jmm.h"
+
 class OopClosure;
 class ThreadSnapshot;
 
@@ -104,3 +112,5 @@
   { Management::record_vm_startup_time(_begin_time, _timer.milliseconds()); }
 
 };
+
+#endif // SHARE_VM_SERVICES_MANAGEMENT_HPP
--- a/src/share/vm/services/memoryManager.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/memoryManager.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_memoryManager.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "services/lowMemoryDetector.hpp"
+#include "services/management.hpp"
+#include "services/memoryManager.hpp"
+#include "services/memoryPool.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/dtrace.hpp"
 
 HS_DTRACE_PROBE_DECL8(hotspot, mem__pool__gc__begin, char*, int, char*, int,
   size_t, size_t, size_t, size_t);
--- a/src/share/vm/services/memoryManager.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/memoryManager.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_MEMORYMANAGER_HPP
+#define SHARE_VM_SERVICES_MEMORYMANAGER_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/timer.hpp"
+#include "services/memoryUsage.hpp"
+
 // A memory manager is responsible for managing one or more memory pools.
 // The garbage collector is one type of memory managers responsible
 // for reclaiming memory occupied by unreachable objects.  A Java virtual
@@ -263,3 +270,5 @@
   MemoryManager::Name kind() { return MemoryManager::G1OldGen; }
   const char* name()         { return "G1 Old Generation"; }
 };
+
+#endif // SHARE_VM_SERVICES_MEMORYMANAGER_HPP
--- a/src/share/vm/services/memoryPool.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/memoryPool.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,16 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_memoryPool.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "services/lowMemoryDetector.hpp"
+#include "services/management.hpp"
+#include "services/memoryManager.hpp"
+#include "services/memoryPool.hpp"
 
 MemoryPool::MemoryPool(const char* name,
                        PoolType type,
--- a/src/share/vm/services/memoryPool.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/memoryPool.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,18 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_MEMORYPOOL_HPP
+#define SHARE_VM_SERVICES_MEMORYPOOL_HPP
+
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/heap.hpp"
+#include "memory/space.hpp"
+#include "services/memoryUsage.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
+#endif
+
 // A memory pool represents the memory area that the VM manages.
 // The Java virtual machine has at least one memory pool
 // and it may create or remove memory pools during execution.
@@ -210,3 +222,5 @@
   MemoryUsage get_memory_usage();
   size_t used_in_bytes()            { return _codeHeap->allocated_capacity(); }
 };
+
+#endif // SHARE_VM_SERVICES_MEMORYPOOL_HPP
--- a/src/share/vm/services/memoryService.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/memoryService.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,40 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_memoryService.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/generation.hpp"
+#include "memory/generationSpec.hpp"
+#include "memory/heap.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/permGen.hpp"
+#include "memory/tenuredGeneration.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "services/classLoadingService.hpp"
+#include "services/lowMemoryDetector.hpp"
+#include "services/management.hpp"
+#include "services/memoryManager.hpp"
+#include "services/memoryPool.hpp"
+#include "services/memoryService.hpp"
+#include "utilities/growableArray.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+#include "gc_implementation/parNew/parNewGeneration.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "services/g1MemoryPool.hpp"
+#include "services/psMemoryPool.hpp"
+#endif
 
 GrowableArray<MemoryPool*>* MemoryService::_pools_list =
   new (ResourceObj::C_HEAP) GrowableArray<MemoryPool*>(init_pools_list_size, true);
--- a/src/share/vm/services/memoryService.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/memoryService.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_MEMORYSERVICE_HPP
+#define SHARE_VM_SERVICES_MEMORYSERVICE_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/generation.hpp"
+#include "runtime/handles.hpp"
+#include "services/memoryUsage.hpp"
+
 // Forward declaration
 class MemoryPool;
 class MemoryManager;
@@ -200,3 +208,5 @@
   TraceMemoryManagerStats(Generation::Name kind);
   ~TraceMemoryManagerStats();
 };
+
+#endif // SHARE_VM_SERVICES_MEMORYSERVICE_HPP
--- a/src/share/vm/services/memoryUsage.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/memoryUsage.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_MEMORYUSAGE_HPP
+#define SHARE_VM_SERVICES_MEMORYUSAGE_HPP
+
+#include "utilities/globalDefinitions.hpp"
+
 // A memory usage contains the following attributes about memory usage:
 //  initSize - represents the initial amount of memory (in bytes) that
 //     the Java virtual machine requests from the operating system
@@ -75,3 +80,5 @@
   jlong committed_as_jlong() const { return convert_to_jlong(_committed); }
   jlong max_size_as_jlong()  const { return convert_to_jlong(_maxSize); }
 };
+
+#endif // SHARE_VM_SERVICES_MEMORYUSAGE_HPP
--- a/src/share/vm/services/psMemoryPool.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/psMemoryPool.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,8 +22,17 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_psMemoryPool.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "gc_implementation/parallelScavenge/psPermGen.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/javaCalls.hpp"
+#include "services/lowMemoryDetector.hpp"
+#include "services/management.hpp"
+#include "services/memoryManager.hpp"
+#include "services/psMemoryPool.hpp"
 
 PSGenerationPool::PSGenerationPool(PSOldGen* gen,
                                    const char* name,
--- a/src/share/vm/services/psMemoryPool.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/psMemoryPool.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_PSMEMORYPOOL_HPP
+#define SHARE_VM_SERVICES_PSMEMORYPOOL_HPP
+
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
+#include "gc_implementation/parallelScavenge/psYoungGen.hpp"
+#include "gc_implementation/shared/mutableSpace.hpp"
+#include "memory/defNewGeneration.hpp"
+#include "memory/heap.hpp"
+#include "memory/space.hpp"
+#include "services/memoryPool.hpp"
+#include "services/memoryUsage.hpp"
+#endif
+
 class PSGenerationPool : public CollectedMemoryPool {
 private:
   PSOldGen* _gen;
@@ -79,3 +93,5 @@
     return _gen->from_space()->capacity_in_bytes();
   }
 };
+
+#endif // SHARE_VM_SERVICES_PSMEMORYPOOL_HPP
--- a/src/share/vm/services/runtimeService.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/runtimeService.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,13 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_runtimeService.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "services/attachListener.hpp"
+#include "services/management.hpp"
+#include "services/runtimeService.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/exceptions.hpp"
 
 HS_DTRACE_PROBE_DECL(hs_private, safepoint__begin);
 HS_DTRACE_PROBE_DECL(hs_private, safepoint__end);
--- a/src/share/vm/services/runtimeService.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/runtimeService.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_RUNTIMESERVICE_HPP
+#define SHARE_VM_SERVICES_RUNTIMESERVICE_HPP
+
+#include "runtime/perfData.hpp"
+#include "runtime/timer.hpp"
+
 class RuntimeService : public AllStatic {
 private:
   static PerfCounter* _sync_time_ticks;        // Accumulated time spent getting to safepoints
@@ -57,3 +63,5 @@
   static void record_interrupted_during_count();
   static void record_thread_interrupt_signaled_count();
 };
+
+#endif // SHARE_VM_SERVICES_RUNTIMESERVICE_HPP
--- a/src/share/vm/services/serviceUtil.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/serviceUtil.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_SERVICEUTIL_HPP
+#define SHARE_VM_SERVICES_SERVICEUTIL_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "oops/objArrayOop.hpp"
+
 //
 // Serviceability utility functions.
 // (Shared by MM and JVMTI).
@@ -87,3 +93,5 @@
   };   // end of visible_oop()
 
 };
+
+#endif // SHARE_VM_SERVICES_SERVICEUTIL_HPP
--- a/src/share/vm/services/threadService.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/threadService.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_threadService.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "memory/allocation.hpp"
+#include "memory/heapInspection.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vframe.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "services/threadService.hpp"
 
 // TODO: we need to define a naming convention for perf counters
 // to distinguish counters for:
--- a/src/share/vm/services/threadService.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/services/threadService.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,19 @@
  *
  */
 
+#ifndef SHARE_VM_SERVICES_THREADSERVICE_HPP
+#define SHARE_VM_SERVICES_THREADSERVICE_HPP
+
+#include "classfile/javaClasses.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/init.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/objectMonitor.inline.hpp"
+#include "runtime/perfData.hpp"
+#include "services/management.hpp"
+#include "services/serviceUtil.hpp"
+
 class OopClosure;
 class ThreadDumpResult;
 class ThreadStackTrace;
@@ -563,3 +576,5 @@
     }
   }
 };
+
+#endif // SHARE_VM_SERVICES_THREADSERVICE_HPP
--- a/src/share/vm/shark/llvmHeaders.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/llvmHeaders.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,9 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_LLVMHEADERS_HPP
+#define SHARE_VM_SHARK_LLVMHEADERS_HPP
+
 #ifdef assert
   #undef assert
 #endif
@@ -93,3 +96,5 @@
   #define DEBUG
   #undef SHARK_DEBUG
 #endif
+
+#endif // SHARE_VM_SHARK_LLVMHEADERS_HPP
--- a/src/share/vm/shark/llvmValue.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/llvmValue.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,13 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_LLVMVALUE_HPP
+#define SHARE_VM_SHARK_LLVMVALUE_HPP
+
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkContext.hpp"
+#include "shark/sharkType.hpp"
+
 class LLVMValue : public AllStatic {
  public:
   static llvm::ConstantInt* jbyte_constant(jbyte value)
@@ -60,3 +67,5 @@
     return llvm::ConstantInt::get(SharkType::intptr_type(), value, false);
   }
 };
+
+#endif // SHARE_VM_SHARK_LLVMVALUE_HPP
--- a/src/share/vm/shark/sharkBlock.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkBlock.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,17 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkBlock.cpp.incl"
+#include "precompiled.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkBlock.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkConstant.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkValue.hpp"
+#include "shark/shark_globals.hpp"
+#include "utilities/debug.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkBlock.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkBlock.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,20 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKBLOCK_HPP
+#define SHARE_VM_SHARK_SHARKBLOCK_HPP
+
+#include "ci/ciMethod.hpp"
+#include "ci/ciStreams.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkConstant.hpp"
+#include "shark/sharkInvariants.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkValue.hpp"
+#include "utilities/debug.hpp"
+
 class SharkState;
 
 class SharkBlock : public SharkTargetInvariants {
@@ -279,3 +293,5 @@
   virtual void do_monitorenter();
   virtual void do_monitorexit();
 };
+
+#endif // SHARE_VM_SHARK_SHARKBLOCK_HPP
--- a/src/share/vm/shark/sharkBuilder.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkBuilder.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkBuilder.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethod.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/methodOop.hpp"
+#include "runtime/os.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/thread.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkContext.hpp"
+#include "shark/sharkRuntime.hpp"
+#include "utilities/debug.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkBuilder.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkBuilder.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,21 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKBUILDER_HPP
+#define SHARE_VM_SHARK_SHARKBUILDER_HPP
+
+#include "ci/ciType.hpp"
+#include "memory/barrierSet.hpp"
+#include "memory/cardTableModRefBS.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkCodeBuffer.hpp"
+#include "shark/sharkEntry.hpp"
+#include "shark/sharkType.hpp"
+#include "shark/sharkValue.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/sizes.hpp"
+
 class SharkBuilder : public llvm::IRBuilder<> {
   friend class SharkCompileInvariants;
 
@@ -207,3 +222,5 @@
   llvm::BasicBlock* CreateBlock(llvm::BasicBlock* ip,
                                 const char*       name="") const;
 };
+
+#endif // SHARE_VM_SHARK_SHARKBUILDER_HPP
--- a/src/share/vm/shark/sharkCacheDecache.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkCacheDecache.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,14 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkCacheDecache.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethod.hpp"
+#include "code/debugInfoRec.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkCacheDecache.hpp"
+#include "shark/sharkFunction.hpp"
+#include "shark/sharkState.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkCacheDecache.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkCacheDecache.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,15 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKCACHEDECACHE_HPP
+#define SHARE_VM_SHARK_SHARKCACHEDECACHE_HPP
+
+#include "ci/ciMethod.hpp"
+#include "code/debugInfoRec.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkFunction.hpp"
+#include "shark/sharkStateScanner.hpp"
+
 // Class hierarchy:
 // - SharkStateScanner
 //   - SharkCacherDecacher
@@ -415,3 +424,5 @@
  private:
   llvm::Value* CreateAddressOfOSRBufEntry(int offset, const llvm::Type* type);
 };
+
+#endif // SHARE_VM_SHARK_SHARKCACHEDECACHE_HPP
--- a/src/share/vm/shark/sharkCodeBuffer.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkCodeBuffer.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,13 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKCODEBUFFER_HPP
+#define SHARE_VM_SHARK_SHARKCODEBUFFER_HPP
+
+#include "asm/codeBuffer.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+
 class SharkCodeBuffer : public StackObj {
  public:
   SharkCodeBuffer(MacroAssembler* masm)
@@ -85,3 +92,5 @@
     return offset;
   }
 };
+
+#endif // SHARE_VM_SHARK_SHARKCODEBUFFER_HPP
--- a/src/share/vm/shark/sharkCompiler.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkCompiler.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,26 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkCompiler.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciEnv.hpp"
+#include "ci/ciMethod.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/dependencies.hpp"
+#include "code/exceptionHandlerTable.hpp"
+#include "code/oopRecorder.hpp"
+#include "compiler/abstractCompiler.hpp"
+#include "compiler/oopMap.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkCodeBuffer.hpp"
+#include "shark/sharkCompiler.hpp"
+#include "shark/sharkContext.hpp"
+#include "shark/sharkEntry.hpp"
+#include "shark/sharkFunction.hpp"
+#include "shark/sharkMemoryManager.hpp"
+#include "shark/sharkNativeWrapper.hpp"
+#include "shark/shark_globals.hpp"
+#include "utilities/debug.hpp"
 
 #include <fnmatch.h>
 
--- a/src/share/vm/shark/sharkCompiler.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkCompiler.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,16 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKCOMPILER_HPP
+#define SHARE_VM_SHARK_SHARKCOMPILER_HPP
+
+#include "ci/ciEnv.hpp"
+#include "ci/ciMethod.hpp"
+#include "compiler/abstractCompiler.hpp"
+#include "compiler/compileBroker.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkMemoryManager.hpp"
+
 class SharkContext;
 
 class SharkCompiler : public AbstractCompiler {
@@ -116,3 +126,5 @@
                             const char*     name);
   void free_queued_methods();
 };
+
+#endif // SHARE_VM_SHARK_SHARKCOMPILER_HPP
--- a/src/share/vm/shark/sharkConstant.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkConstant.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkConstant.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciStreams.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkConstant.hpp"
+#include "shark/sharkValue.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkConstant.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkConstant.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,14 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKCONSTANT_HPP
+#define SHARE_VM_SHARK_SHARKCONSTANT_HPP
+
+#include "ci/ciStreams.hpp"
+#include "memory/allocation.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkValue.hpp"
+
 class SharkConstant : public ResourceObj {
  public:
   static SharkConstant* for_ldc(ciBytecodeStream* iter);
@@ -62,3 +70,5 @@
     return _value;
   }
 };
+
+#endif // SHARE_VM_SHARK_SHARKCONSTANT_HPP
--- a/src/share/vm/shark/sharkContext.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkContext.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkContext.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/oop.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkContext.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkContext.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkContext.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKCONTEXT_HPP
+#define SHARE_VM_SHARK_SHARKCONTEXT_HPP
+
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkCompiler.hpp"
+
 // The LLVMContext class allows multiple instances of LLVM to operate
 // independently of each other in a multithreaded context.  We extend
 // this here to store things in Shark that are LLVMContext-specific.
@@ -185,3 +191,5 @@
   void push_to_free_queue(llvm::Function* function);
   llvm::Function* pop_from_free_queue();
 };
+
+#endif // SHARE_VM_SHARK_SHARKCONTEXT_HPP
--- a/src/share/vm/shark/sharkEntry.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkEntry.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,11 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKENTRY_HPP
+#define SHARE_VM_SHARK_SHARKENTRY_HPP
+
+#include "shark/llvmHeaders.hpp"
+
 class SharkContext;
 
 class SharkEntry : public ZeroEntry {
@@ -56,3 +61,5 @@
     _function = function;
   }
 };
+
+#endif // SHARE_VM_SHARK_SHARKENTRY_HPP
--- a/src/share/vm/shark/sharkFunction.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkFunction.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,18 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkFunction.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkEntry.hpp"
+#include "shark/sharkFunction.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkTopLevelBlock.hpp"
+#include "shark/shark_globals.hpp"
+#include "utilities/debug.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkFunction.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkFunction.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,20 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKFUNCTION_HPP
+#define SHARE_VM_SHARK_SHARKFUNCTION_HPP
+
+#include "ci/ciEnv.hpp"
+#include "ci/ciStreams.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkContext.hpp"
+#include "shark/sharkInvariants.hpp"
+#include "shark/sharkStack.hpp"
+
 class SharkTopLevelBlock;
 class DeferredZeroCheck;
 
@@ -109,3 +123,5 @@
  private:
   void do_deferred_zero_checks();
 };
+
+#endif // SHARE_VM_SHARK_SHARKFUNCTION_HPP
--- a/src/share/vm/shark/sharkInliner.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkInliner.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,19 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkInliner.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciStreams.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+#include "shark/sharkBlock.hpp"
+#include "shark/sharkConstant.hpp"
+#include "shark/sharkInliner.hpp"
+#include "shark/sharkIntrinsics.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkValue.hpp"
+#include "shark/shark_globals.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkInliner.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkInliner.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,14 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKINLINER_HPP
+#define SHARE_VM_SHARK_SHARKINLINER_HPP
+
+#include "ci/ciMethod.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkState.hpp"
+
 class SharkInliner : public AllStatic {
  public:
   static bool attempt_inline(ciMethod* target, SharkState* state);
@@ -30,3 +38,5 @@
  private:
   static bool may_be_inlinable(ciMethod* target);
 };
+
+#endif // SHARE_VM_SHARK_SHARKINLINER_HPP
--- a/src/share/vm/shark/sharkIntrinsics.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkIntrinsics.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,13 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkIntrinsics.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciMethod.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkIntrinsics.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkValue.hpp"
+#include "shark/shark_globals.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkIntrinsics.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkIntrinsics.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,14 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKINTRINSICS_HPP
+#define SHARE_VM_SHARK_SHARKINTRINSICS_HPP
+
+#include "ci/ciMethod.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkState.hpp"
+
 class SharkIntrinsics : public SharkTargetInvariants {
  public:
   static bool is_intrinsic(ciMethod* target);
@@ -52,3 +60,5 @@
   void do_Thread_currentThread();
   void do_Unsafe_compareAndSwapInt();
 };
+
+#endif // SHARE_VM_SHARK_SHARKINTRINSICS_HPP
--- a/src/share/vm/shark/sharkInvariants.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkInvariants.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,8 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkInvariants.cpp.incl"
+#include "precompiled.hpp"
+#include "shark/sharkInvariants.hpp"
 
 int SharkTargetInvariants::count_monitors() {
   int result = 0;
--- a/src/share/vm/shark/sharkInvariants.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkInvariants.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,19 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKINVARIANTS_HPP
+#define SHARE_VM_SHARK_SHARKINVARIANTS_HPP
+
+#include "ci/ciEnv.hpp"
+#include "ci/ciInstanceKlass.hpp"
+#include "ci/ciMethod.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "code/debugInfoRec.hpp"
+#include "code/dependencies.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkBuilder.hpp"
+
 // Base classes used to track various values through the compilation.
 // SharkCompileInvariants is used to track values which remain the
 // same for the top-level method and any inlined methods it may have
@@ -165,3 +178,5 @@
     return target()->is_synchronized();
   }
 };
+
+#endif // SHARE_VM_SHARK_SHARKINVARIANTS_HPP
--- a/src/share/vm/shark/sharkMemoryManager.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkMemoryManager.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkMemoryManager.cpp.incl"
+#include "precompiled.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkEntry.hpp"
+#include "shark/sharkMemoryManager.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkMemoryManager.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkMemoryManager.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,12 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKMEMORYMANAGER_HPP
+#define SHARE_VM_SHARK_SHARKMEMORYMANAGER_HPP
+
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkEntry.hpp"
+
 // SharkMemoryManager wraps the LLVM JIT Memory Manager.  We could use
 // this to run our own memory allocation policies, but for now all we
 // use it for is figuring out where the resulting native code ended up.
@@ -86,3 +92,5 @@
   unsigned char *allocateSpace(intptr_t Size,
                                unsigned int Alignment);
 };
+
+#endif // SHARE_VM_SHARK_SHARKMEMORYMANAGER_HPP
--- a/src/share/vm/shark/sharkNativeWrapper.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkNativeWrapper.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,10 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkNativeWrapper.cpp.incl"
+#include "precompiled.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkNativeWrapper.hpp"
+#include "shark/sharkType.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkNativeWrapper.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkNativeWrapper.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,16 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKNATIVEWRAPPER_HPP
+#define SHARE_VM_SHARK_SHARKNATIVEWRAPPER_HPP
+
+#include "runtime/handles.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkContext.hpp"
+#include "shark/sharkInvariants.hpp"
+#include "shark/sharkStack.hpp"
+
 class SharkNativeWrapper : public SharkCompileInvariants {
   friend class SharkStackWithNativeFrame;
 
@@ -180,3 +190,5 @@
       pending_exception_address(), "pending_exception");
   }
 };
+
+#endif // SHARE_VM_SHARK_SHARKNATIVEWRAPPER_HPP
--- a/src/share/vm/shark/sharkRuntime.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkRuntime.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkRuntime.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/klassOop.hpp"
+#include "runtime/biasedLocking.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/thread.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkRuntime.hpp"
+#ifdef TARGET_ARCH_zero
+# include "stack_zero.inline.hpp"
+#endif
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkRuntime.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkRuntime.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,15 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKRUNTIME_HPP
+#define SHARE_VM_SHARK_SHARKRUNTIME_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/klassOop.hpp"
+#include "runtime/thread.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+
 class SharkRuntime : public AllStatic {
   // VM calls
  public:
@@ -81,3 +90,5 @@
   static bool is_subtype_of(klassOop check_klass, klassOop object_klass);
   static int uncommon_trap(JavaThread* thread, int trap_request);
 };
+
+#endif // SHARE_VM_SHARK_SHARKRUNTIME_HPP
--- a/src/share/vm/shark/sharkStack.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkStack.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkStack.cpp.incl"
+#include "precompiled.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkFunction.hpp"
+#include "shark/sharkNativeWrapper.hpp"
+#include "shark/sharkStack.hpp"
+#include "shark/sharkType.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkStack.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkStack.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,13 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKSTACK_HPP
+#define SHARE_VM_SHARK_SHARKSTACK_HPP
+
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkInvariants.hpp"
+#include "shark/sharkType.hpp"
+
 class SharkFunction;
 class SharkNativeWrapper;
 class SharkStackWithNormalFrame;
@@ -288,3 +295,5 @@
  private:
   address interpreter_entry_point() const;
 };
+
+#endif // SHARE_VM_SHARK_SHARKSTACK_HPP
--- a/src/share/vm/shark/sharkState.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkState.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkState.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciType.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "memory/allocation.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkCacheDecache.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkTopLevelBlock.hpp"
+#include "shark/sharkType.hpp"
+#include "shark/sharkValue.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkState.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkState.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,16 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKSTATE_HPP
+#define SHARE_VM_SHARK_SHARKSTATE_HPP
+
+#include "ci/ciMethod.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkInvariants.hpp"
+#include "shark/sharkValue.hpp"
+
 class SharkState : public SharkTargetInvariants {
  public:
   SharkState(const SharkTargetInvariants* parent)
@@ -186,3 +196,5 @@
  public:
   void add_incoming(SharkState* incoming_state);
 };
+
+#endif // SHARE_VM_SHARK_SHARKSTATE_HPP
--- a/src/share/vm/shark/sharkStateScanner.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkStateScanner.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkStateScanner.cpp.incl"
+#include "precompiled.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkStateScanner.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkStateScanner.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkStateScanner.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,14 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKSTATESCANNER_HPP
+#define SHARE_VM_SHARK_SHARKSTATESCANNER_HPP
+
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkFunction.hpp"
+#include "shark/sharkInvariants.hpp"
+
 class SharkState;
 
 class SharkStateScanner : public SharkTargetInvariants {
@@ -73,3 +81,5 @@
   void stack_integrity_checks(SharkState* state) PRODUCT_RETURN;
   void locals_integrity_checks(SharkState* state) PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_SHARK_SHARKSTATESCANNER_HPP
--- a/src/share/vm/shark/sharkTopLevelBlock.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkTopLevelBlock.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,27 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkTopLevelBlock.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciStreams.hpp"
+#include "ci/ciType.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/deoptimization.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkCacheDecache.hpp"
+#include "shark/sharkConstant.hpp"
+#include "shark/sharkInliner.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkTopLevelBlock.hpp"
+#include "shark/sharkValue.hpp"
+#include "shark/shark_globals.hpp"
+#include "utilities/debug.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkTopLevelBlock.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkTopLevelBlock.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,21 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKTOPLEVELBLOCK_HPP
+#define SHARE_VM_SHARK_SHARKTOPLEVELBLOCK_HPP
+
+#include "ci/ciStreams.hpp"
+#include "ci/ciType.hpp"
+#include "ci/ciTypeFlow.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkBlock.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkFunction.hpp"
+#include "shark/sharkState.hpp"
+#include "shark/sharkValue.hpp"
+
 class SharkTopLevelBlock : public SharkBlock {
  public:
   SharkTopLevelBlock(SharkFunction* function, ciTypeFlow::Block* ciblock)
@@ -428,3 +443,5 @@
   void do_monitorenter();
   void do_monitorexit();
 };
+
+#endif // SHARE_VM_SHARK_SHARKTOPLEVELBLOCK_HPP
--- a/src/share/vm/shark/sharkType.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkType.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,15 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKTYPE_HPP
+#define SHARE_VM_SHARK_SHARKTYPE_HPP
+
+#include "ci/ciType.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/sharkContext.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 class SharkType : public AllStatic {
  private:
   static SharkContext& context() {
@@ -110,3 +119,5 @@
     return to_arrayType(type->basic_type());
   }
 };
+
+#endif // SHARE_VM_SHARK_SHARKTYPE_HPP
--- a/src/share/vm/shark/sharkValue.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkValue.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,8 +23,12 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_sharkValue.cpp.incl"
+#include "precompiled.hpp"
+#include "ci/ciType.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkBuilder.hpp"
+#include "shark/sharkValue.hpp"
 
 using namespace llvm;
 
--- a/src/share/vm/shark/sharkValue.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/sharkValue.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,15 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARKVALUE_HPP
+#define SHARE_VM_SHARK_SHARKVALUE_HPP
+
+#include "ci/ciType.hpp"
+#include "memory/allocation.hpp"
+#include "shark/llvmHeaders.hpp"
+#include "shark/llvmValue.hpp"
+#include "shark/sharkType.hpp"
+
 // Items on the stack and in local variables are tracked using
 // SharkValue objects.
 //
@@ -330,3 +339,5 @@
 inline SharkValue* SharkValue::address_constant(int bci) {
   return new SharkAddressValue(bci);
 }
+
+#endif // SHARE_VM_SHARK_SHARKVALUE_HPP
--- a/src/share/vm/shark/shark_globals.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/shark_globals.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,7 +23,7 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_shark_globals.cpp.incl"
+#include "precompiled.hpp"
+#include "shark/shark_globals.hpp"
 
 SHARK_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, MATERIALIZE_DIAGNOSTIC_FLAG, MATERIALIZE_NOTPRODUCT_FLAG)
--- a/src/share/vm/shark/shark_globals.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/shark/shark_globals.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -23,6 +23,14 @@
  *
  */
 
+#ifndef SHARE_VM_SHARK_SHARK_GLOBALS_HPP
+#define SHARE_VM_SHARK_SHARK_GLOBALS_HPP
+
+#include "runtime/globals.hpp"
+#ifdef TARGET_ARCH_zero
+# include "shark_globals_zero.hpp"
+#endif
+
 #define SHARK_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct) \
                                                                               \
   product(intx, MaxNodeLimit, 65000,                                          \
@@ -52,3 +60,5 @@
           "Warn about things that could be made faster")                      \
 
 SHARK_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG)
+
+#endif // SHARE_VM_SHARK_SHARK_GLOBALS_HPP
--- a/src/share/vm/utilities/accessFlags.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/accessFlags.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_accessFlags.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "utilities/accessFlags.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 
 void AccessFlags::atomic_set_bits(jint bits) {
--- a/src/share/vm/utilities/accessFlags.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/accessFlags.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_ACCESSFLAGS_HPP
+#define SHARE_VM_UTILITIES_ACCESSFLAGS_HPP
+
+#include "prims/jvm.h"
+#include "utilities/top.hpp"
+
 // AccessFlags is an abstraction over Java access flags.
 
 
@@ -226,3 +232,5 @@
   af._flags = flags;
   return af;
 }
+
+#endif // SHARE_VM_UTILITIES_ACCESSFLAGS_HPP
--- a/src/share/vm/utilities/array.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/array.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,8 +22,18 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_array.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/resourceArea.hpp"
+#include "utilities/array.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 #ifdef ASSERT
--- a/src/share/vm/utilities/array.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/array.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_ARRAY_HPP
+#define SHARE_VM_UTILITIES_ARRAY_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+
 // correct linkage required to compile w/o warnings
 // (must be on file level - cannot be local)
 extern "C" { typedef int (*ftype)(const void*, const void*); }
@@ -285,3 +291,5 @@
 
 define_array(boolArray, bool)          define_stack(boolStack, boolArray)
 define_array(intArray , int )          define_stack(intStack , intArray )
+
+#endif // SHARE_VM_UTILITIES_ARRAY_HPP
--- a/src/share/vm/utilities/bitMap.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/bitMap.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,19 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_bitMap.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "utilities/bitMap.inline.hpp"
+#include "utilities/copy.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
 
 
 BitMap::BitMap(bm_word_t* map, idx_t size_in_bits) :
--- a/src/share/vm/utilities/bitMap.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/bitMap.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_BITMAP_HPP
+#define SHARE_VM_UTILITIES_BITMAP_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/top.hpp"
+
 // Forward decl;
 class BitMapClosure;
 
@@ -365,3 +371,5 @@
   // return of false indicates that the bitmap iteration should terminate.
   virtual bool do_bit(BitMap::idx_t offset) = 0;
 };
+
+#endif // SHARE_VM_UTILITIES_BITMAP_HPP
--- a/src/share/vm/utilities/bitMap.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/bitMap.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_BITMAP_INLINE_HPP
+#define SHARE_VM_UTILITIES_BITMAP_INLINE_HPP
+
+#include "runtime/atomic.hpp"
+#include "utilities/bitMap.hpp"
+
 #ifdef ASSERT
 inline void BitMap::verify_index(idx_t index) const {
   assert(index < _size, "BitMap index out of bounds");
@@ -319,3 +325,5 @@
 inline void BitMap2D::clear() {
   _map.clear();
 }
+
+#endif // SHARE_VM_UTILITIES_BITMAP_INLINE_HPP
--- a/src/share/vm/utilities/constantTag.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/constantTag.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,8 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_constantTag.cpp.incl"
+#include "precompiled.hpp"
+#include "utilities/constantTag.hpp"
 
 #ifndef PRODUCT
 
--- a/src/share/vm/utilities/constantTag.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/constantTag.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_CONSTANTTAG_HPP
+#define SHARE_VM_UTILITIES_CONSTANTTAG_HPP
+
+#include "prims/jvm.h"
+#include "utilities/top.hpp"
+
 // constant tags in Java .class files
 
 
@@ -82,6 +88,13 @@
   bool is_method_handle() const            { return _tag == JVM_CONSTANT_MethodHandle; }
   bool is_invoke_dynamic() const           { return _tag == JVM_CONSTANT_InvokeDynamic; }
 
+  bool is_loadable_constant() const {
+    return ((_tag >= JVM_CONSTANT_Integer && _tag <= JVM_CONSTANT_String) ||
+            is_method_type() || is_method_handle() ||
+            is_unresolved_klass() || is_unresolved_string() ||
+            is_object());
+  }
+
   constantTag() {
     _tag = JVM_CONSTANT_Invalid;
   }
@@ -100,3 +113,5 @@
 
   void print_on(outputStream* st) const PRODUCT_RETURN;
 };
+
+#endif // SHARE_VM_UTILITIES_CONSTANTTAG_HPP
--- a/src/share/vm/utilities/copy.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/copy.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_copy.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "utilities/copy.hpp"
 
 
 // Copy bytes; larger units are filled atomically if everything is aligned.
--- a/src/share/vm/utilities/copy.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/copy.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_COPY_HPP
+#define SHARE_VM_UTILITIES_COPY_HPP
+
+#include "runtime/stubRoutines.hpp"
+
 // Assembly code for platforms that need it.
 extern "C" {
   void _Copy_conjoint_words(HeapWord* from, HeapWord* to, size_t count);
@@ -317,5 +322,16 @@
   }
 
   // Platform dependent implementations of the above methods.
-  #include "incls/_copy_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "copy_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "copy_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "copy_zero.hpp"
+#endif
+
 };
+
+#endif // SHARE_VM_UTILITIES_COPY_HPP
--- a/src/share/vm/utilities/debug.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/debug.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,46 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_debug.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "code/icBuffer.hpp"
+#include "code/nmethod.hpp"
+#include "code/vtableStubs.hpp"
+#include "compiler/compileBroker.hpp"
+#include "compiler/disassembler.hpp"
+#include "gc_implementation/shared/markSweep.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "interpreter/bytecodeHistogram.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/privilegedStack.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/java.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubCodeGenerator.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/vframe.hpp"
+#include "services/heapDumper.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/events.hpp"
+#include "utilities/top.hpp"
+#include "utilities/vmError.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+# include "thread_windows.inline.hpp"
+#endif
 
 #ifndef ASSERT
 #  ifdef _DEBUG
@@ -51,14 +89,16 @@
 
 
 void warning(const char* format, ...) {
-  // In case error happens before init or during shutdown
-  if (tty == NULL) ostream_init();
+  if (PrintWarnings) {
+    // In case error happens before init or during shutdown
+    if (tty == NULL) ostream_init();
 
-  tty->print("%s warning: ", VM_Version::vm_name());
-  va_list ap;
-  va_start(ap, format);
-  tty->vprint_cr(format, ap);
-  va_end(ap);
+    tty->print("%s warning: ", VM_Version::vm_name());
+    va_list ap;
+    va_start(ap, format);
+    tty->vprint_cr(format, ap);
+    va_end(ap);
+  }
   if (BreakAtWarning) BREAKPOINT;
 }
 
--- a/src/share/vm/utilities/debug.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/debug.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_DEBUG_HPP
+#define SHARE_VM_UTILITIES_DEBUG_HPP
+
+#include "utilities/globalDefinitions.hpp"
+
 #include <stdarg.h>
 
 // Simple class to format the ctor arguments into a fixed-sized buffer.
@@ -169,3 +174,5 @@
 
 void pd_ps(frame f);
 void pd_obfuscate_location(char *buf, size_t buflen);
+
+#endif // SHARE_VM_UTILITIES_DEBUG_HPP
--- a/src/share/vm/utilities/defaultStream.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/defaultStream.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_DEFAULTSTREAM_HPP
+#define SHARE_VM_UTILITIES_DEFAULTSTREAM_HPP
+
+#include "utilities/xmlstream.hpp"
+
 class defaultStream : public xmlTextStream {
   friend void ostream_abort();
  public:
@@ -88,3 +93,5 @@
 
   static defaultStream* instance;  // sole instance
 };
+
+#endif // SHARE_VM_UTILITIES_DEFAULTSTREAM_HPP
--- a/src/share/vm/utilities/dtrace.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/dtrace.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_DTRACE_HPP
+#define SHARE_VM_UTILITIES_DTRACE_HPP
+
 #if defined(SOLARIS) && defined(DTRACE_ENABLED)
 
 #include <sys/sdt.h>
@@ -129,3 +132,5 @@
   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
     (uintptr_t)a8,(uintptr_t)a9))
+
+#endif // SHARE_VM_UTILITIES_DTRACE_HPP
--- a/src/share/vm/utilities/events.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/events.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,22 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_events.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/osThread.hpp"
+#include "runtime/threadLocalStorage.hpp"
+#include "runtime/timer.hpp"
+#include "utilities/events.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 #ifndef PRODUCT
--- a/src/share/vm/utilities/events.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/events.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_EVENTS_HPP
+#define SHARE_VM_UTILITIES_EVENTS_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/top.hpp"
+
 // Events and EventMark provide interfaces to log events taking place in the vm.
 // This facility is extremly useful for post-mortem debugging. The eventlog
 // often provides crucial information about events leading up to the crash.
@@ -62,3 +68,5 @@
 };
 
 int print_all_events(outputStream *st);
+
+#endif // SHARE_VM_UTILITIES_EVENTS_HPP
--- a/src/share/vm/utilities/exceptions.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/exceptions.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,26 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_exceptions.cpp.incl"
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/java.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/threadCritical.hpp"
+#include "utilities/events.hpp"
+#include "utilities/exceptions.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 
 // Implementation of ThreadShadow
@@ -61,6 +79,18 @@
    ShouldNotReachHere();
   }
 
+#ifdef ASSERT
+  // Check for trying to throw stack overflow before initialization is complete
+  // to prevent infinite recursion trying to initialize stack overflow without
+  // adequate stack space.
+  // This can happen with stress testing a large value of StackShadowPages
+  if (h_exception()->klass() == SystemDictionary::StackOverflowError_klass()) {
+    instanceKlass* ik = instanceKlass::cast(h_exception->klass());
+    assert(ik->is_initialized(),
+           "need to increase min_stack_allowed calculation");
+  }
+#endif // ASSERT
+
   if (thread->is_VM_thread()
       || thread->is_Compiler_thread() ) {
     // We do not care what kind of exception we get for the vm-thread or a thread which
@@ -91,7 +121,6 @@
     thread->set_pending_exception(Universe::vm_exception(), file, line);
     return true;
   }
-
   return false;
 }
 
@@ -193,6 +222,7 @@
     klassOop k = SystemDictionary::StackOverflowError_klass();
     oop e = instanceKlass::cast(k)->allocate_instance(CHECK);
     exception = Handle(THREAD, e);  // fill_in_stack trace does gc
+    assert(instanceKlass::cast(k)->is_initialized(), "need to increase min_stack_allowed calculation");
     if (StackTraceInThrowable) {
       java_lang_Throwable::fill_in_stack_trace(exception);
     }
--- a/src/share/vm/utilities/exceptions.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/exceptions.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_EXCEPTIONS_HPP
+#define SHARE_VM_UTILITIES_EXCEPTIONS_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oopsHierarchy.hpp"
+#include "utilities/sizes.hpp"
+
 // This file provides the basic support for exception handling in the VM.
 // Note: We do not use C++ exceptions to avoid compiler dependencies and
 // unpredictable performance.
@@ -276,3 +283,5 @@
 // exceptions.
 
 #define EXCEPTION_MARK                           Thread* THREAD; ExceptionMark __em(THREAD);
+
+#endif // SHARE_VM_UTILITIES_EXCEPTIONS_HPP
--- a/src/share/vm/utilities/globalDefinitions.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/globalDefinitions.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_globalDefinitions.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/os.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/top.hpp"
+
 // Basic error support
 
 // Info for oops within a java object.  Defaults are zero so
--- a/src/share/vm/utilities/globalDefinitions.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/globalDefinitions.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,21 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_GLOBALDEFINITIONS_HPP
+#define SHARE_VM_UTILITIES_GLOBALDEFINITIONS_HPP
+
+#ifdef TARGET_COMPILER_gcc
+# include "utilities/globalDefinitions_gcc.hpp"
+#endif
+#ifdef TARGET_COMPILER_visCPP
+# include "utilities/globalDefinitions_visCPP.hpp"
+#endif
+#ifdef TARGET_COMPILER_sparcWorks
+# include "utilities/globalDefinitions_sparcWorks.hpp"
+#endif
+
+#include "utilities/macros.hpp"
+
 // This file holds all globally used constants & types, class (forward)
 // declarations and a few frequently used utility functions.
 
@@ -304,7 +319,16 @@
 
 // Machine dependent stuff
 
-#include "incls/_globalDefinitions_pd.hpp.incl"
+#ifdef TARGET_ARCH_x86
+# include "globalDefinitions_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "globalDefinitions_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "globalDefinitions_zero.hpp"
+#endif
+
 
 // The byte alignment to be used by Arena::Amalloc.  See bugid 4169348.
 // Note: this value must be a power of 2
@@ -1217,3 +1241,5 @@
 # endif /* ASSERT */
 
 #define ARRAY_SIZE(array) (sizeof(array)/sizeof((array)[0]))
+
+#endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_HPP
--- a/src/share/vm/utilities/globalDefinitions_gcc.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/globalDefinitions_gcc.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_GLOBALDEFINITIONS_GCC_HPP
+#define SHARE_VM_UTILITIES_GLOBALDEFINITIONS_GCC_HPP
+
+#include "prims/jni.h"
+
 // This file holds compiler-dependent includes,
 // globally used constants & types, class (forward)
 // declarations and a few frequently used utility functions.
@@ -289,3 +294,5 @@
 # undef offsetof
 #endif
 #define offsetof(klass,field) offset_of(klass,field)
+
+#endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_GCC_HPP
--- a/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_GLOBALDEFINITIONS_SPARCWORKS_HPP
+#define SHARE_VM_UTILITIES_GLOBALDEFINITIONS_SPARCWORKS_HPP
+
+#include "prims/jni.h"
+
 // This file holds compiler-dependent includes,
 // globally used constants & types, class (forward)
 // declarations and a few frequently used utility functions.
@@ -263,3 +268,5 @@
 #endif // _LP64
 
 #define offset_of(klass,field) offsetof(klass,field)
+
+#endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_SPARCWORKS_HPP
--- a/src/share/vm/utilities/globalDefinitions_visCPP.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/globalDefinitions_visCPP.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_GLOBALDEFINITIONS_VISCPP_HPP
+#define SHARE_VM_UTILITIES_GLOBALDEFINITIONS_VISCPP_HPP
+
+#include "prims/jni.h"
+
 // This file holds compiler-dependent includes,
 // globally used constants & types, class (forward)
 // declarations and a few frequently used utility functions.
@@ -194,3 +199,5 @@
 #define FORMAT64_MODIFIER "I64"
 
 #define offset_of(klass,field) offsetof(klass,field)
+
+#endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_VISCPP_HPP
--- a/src/share/vm/utilities/growableArray.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/growableArray.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -21,9 +21,19 @@
  * questions.
  *
  */
-# include "incls/_precompiled.incl"
-# include "incls/_growableArray.cpp.incl"
 
+#include "precompiled.hpp"
+#include "memory/resourceArea.hpp"
+#include "utilities/growableArray.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 #ifdef ASSERT
 void GenericGrowableArray::set_nesting() {
   if (on_stack()) {
--- a/src/share/vm/utilities/growableArray.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/growableArray.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,15 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_GROWABLEARRAY_HPP
+#define SHARE_VM_UTILITIES_GROWABLEARRAY_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/top.hpp"
+
 // A growable array.
 
 /*************************************************************************/
@@ -360,3 +369,5 @@
     for (int i = 0; i < _len; i++) tty->print(INTPTR_FORMAT " ", *(intptr_t*)&(_data[i]));
     tty->print("}\n");
 }
+
+#endif // SHARE_VM_UTILITIES_GROWABLEARRAY_HPP
--- a/src/share/vm/utilities/hashtable.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/hashtable.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,8 +22,14 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_hashtable.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/safepoint.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/hashtable.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 HS_DTRACE_PROBE_DECL4(hs_private, hashtable__new_entry,
   void*, unsigned int, oop, void*);
--- a/src/share/vm/utilities/hashtable.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/hashtable.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,14 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_HASHTABLE_HPP
+#define SHARE_VM_UTILITIES_HASHTABLE_HPP
+
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "oops/symbolOop.hpp"
+#include "runtime/handles.hpp"
+
 // This is a generic hashtable, designed to be used for the symbol
 // and string tables.
 //
@@ -278,3 +286,5 @@
     return hash_to_index(compute_hash(name, loader));
   }
 };
+
+#endif // SHARE_VM_UTILITIES_HASHTABLE_HPP
--- a/src/share/vm/utilities/hashtable.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/hashtable.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_HASHTABLE_INLINE_HPP
+#define SHARE_VM_UTILITIES_HASHTABLE_INLINE_HPP
+
+#include "memory/allocation.inline.hpp"
+#include "utilities/hashtable.hpp"
+
 // Inline function definitions for hashtable.hpp.
 
 
@@ -124,3 +130,5 @@
   _free_list = entry;
   --_number_of_entries;
 }
+
+#endif // SHARE_VM_UTILITIES_HASHTABLE_INLINE_HPP
--- a/src/share/vm/utilities/histogram.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/histogram.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,9 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_histogram.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "utilities/histogram.hpp"
 
 #ifdef ASSERT
 
--- a/src/share/vm/utilities/histogram.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/histogram.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,22 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_HISTOGRAM_HPP
+#define SHARE_VM_UTILITIES_HISTOGRAM_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/os.hpp"
+#include "utilities/growableArray.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "os_windows.inline.hpp"
+#endif
+
 // This class provides a framework for collecting various statistics.
 // The current implementation is oriented towards counting invocations
 // of various types, but that can be easily changed.
@@ -89,3 +105,5 @@
 };
 
 #endif
+
+#endif // SHARE_VM_UTILITIES_HISTOGRAM_HPP
--- a/src/share/vm/utilities/intHisto.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/intHisto.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,8 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_intHisto.cpp.incl"
+#include "precompiled.hpp"
+#include "utilities/intHisto.hpp"
 
 IntHistogram::IntHistogram(int est, int max) : _max(max), _tot(0) {
   assert(0 <= est && est <= max, "Preconditions");
--- a/src/share/vm/utilities/intHisto.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/intHisto.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_INTHISTO_HPP
+#define SHARE_VM_UTILITIES_INTHISTO_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/growableArray.hpp"
+
 // This class implements a simple histogram.
 
 // A histogram summarizes a series of "measurements", each of which is
@@ -68,3 +74,5 @@
   // Print the histogram on the given output stream.
   void print_on(outputStream* st) const;
 };
+
+#endif // SHARE_VM_UTILITIES_INTHISTO_HPP
--- a/src/share/vm/utilities/macros.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/macros.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_MACROS_HPP
+#define SHARE_VM_UTILITIES_MACROS_HPP
+
 // Use this to mark code that needs to be cleaned up (for development only)
 #define NEEDS_CLEANUP
 
@@ -234,3 +237,5 @@
 #endif
 
 #define define_pd_global(type, name, value) const type pd_##name = value;
+
+#endif // SHARE_VM_UTILITIES_MACROS_HPP
--- a/src/share/vm/utilities/numberSeq.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/numberSeq.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_numberSeq.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.inline.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/numberSeq.hpp"
 
 AbsSeq::AbsSeq(double alpha) :
   _num(0), _sum(0.0), _sum_of_squares(0.0),
--- a/src/share/vm/utilities/numberSeq.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/numberSeq.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -22,6 +22,9 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_NUMBERSEQ_HPP
+#define SHARE_VM_UTILITIES_NUMBERSEQ_HPP
+
 /**
  **  This file contains a few classes that represent number sequence,
  **  x1, x2, x3, ..., xN, and can calculate their avg, max, and sd.
@@ -125,3 +128,5 @@
   // Debugging/Printing
   virtual void dump_on(outputStream* s);
 };
+
+#endif // SHARE_VM_UTILITIES_NUMBERSEQ_HPP
--- a/src/share/vm/utilities/ostream.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/ostream.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,27 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_ostream.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileLog.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/hpi.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/ostream.hpp"
+#include "utilities/top.hpp"
+#include "utilities/xmlstream.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "hpi_linux.hpp"
+# include "os_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "hpi_solaris.hpp"
+# include "os_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "hpi_windows.hpp"
+# include "os_windows.inline.hpp"
+#endif
 
 extern "C" void jio_print(const char* s); // Declarationtion of jvm method
 
--- a/src/share/vm/utilities/ostream.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/ostream.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_OSTREAM_HPP
+#define SHARE_VM_UTILITIES_OSTREAM_HPP
+
+#include "memory/allocation.hpp"
+#include "runtime/timer.hpp"
+
 // Output streams for printing
 //
 // Printing guidelines:
@@ -245,3 +251,5 @@
 };
 
 #endif
+
+#endif // SHARE_VM_UTILITIES_OSTREAM_HPP
--- a/src/share/vm/utilities/preserveException.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/preserveException.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,8 +22,9 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_preserveException.cpp.incl"
+#include "precompiled.hpp"
+#include "runtime/handles.inline.hpp"
+#include "utilities/preserveException.hpp"
 
 // TODO: These three classes should be refactored
 
--- a/src/share/vm/utilities/preserveException.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/preserveException.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_PRESERVEEXCEPTION_HPP
+#define SHARE_VM_UTILITIES_PRESERVEEXCEPTION_HPP
+
+#include "runtime/handles.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // This file provides more support for exception handling; see also exceptions.hpp
 class PreserveExceptionMark {
  private:
@@ -83,3 +97,5 @@
 // use global exception mark when allowing pending exception to be set and
 // saving and restoring them
 #define PRESERVE_EXCEPTION_MARK                    Thread* THREAD; PreserveExceptionMark __em(THREAD);
+
+#endif // SHARE_VM_UTILITIES_PRESERVEEXCEPTION_HPP
--- a/src/share/vm/utilities/sizes.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/sizes.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,5 +22,6 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_sizes.cpp.incl"
+#include "precompiled.hpp"
+#include "utilities/sizes.hpp"
+
--- a/src/share/vm/utilities/sizes.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/sizes.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_SIZES_HPP
+#define SHARE_VM_UTILITIES_SIZES_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/globalDefinitions.hpp"
+
 // The following two classes are used to represent 'sizes' and 'offsets' in the VM;
 // they serve as 'unit' types. ByteSize is used for sizes measured in bytes, while
 // WordSize is used for sizes measured in machine words (i.e., 32bit or 64bit words
@@ -142,3 +148,5 @@
 // Use the following #define to get C++ field member offsets
 
 #define byte_offset_of(klass,field)   in_ByteSize((int)offset_of(klass, field))
+
+#endif // SHARE_VM_UTILITIES_SIZES_HPP
--- a/src/share/vm/utilities/stack.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/stack.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2009, 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
@@ -16,12 +16,17 @@
  * 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * 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.
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_STACK_HPP
+#define SHARE_VM_UTILITIES_STACK_HPP
+
+#include "memory/allocation.inline.hpp"
+
 // Class Stack (below) grows and shrinks by linking together "segments" which
 // are allocated on demand.  Segments are arrays of the element type (E) plus an
 // extra pointer-sized field to store the segment link.  Recently emptied
@@ -202,3 +207,5 @@
 #ifdef __GNUC__
 #undef inline
 #endif // __GNUC__
+
+#endif // SHARE_VM_UTILITIES_STACK_HPP
--- a/src/share/vm/utilities/stack.inline.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/stack.inline.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2009, 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
@@ -16,12 +16,17 @@
  * 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * 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.
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_STACK_INLINE_HPP
+#define SHARE_VM_UTILITIES_STACK_INLINE_HPP
+
+#include "utilities/stack.hpp"
+
 StackBase::StackBase(size_t segment_size, size_t max_cache_size,
                      size_t max_size):
   _seg_size(segment_size),
@@ -271,3 +276,5 @@
   }
   return _cur_seg + --_cur_seg_size;
 }
+
+#endif // SHARE_VM_UTILITIES_STACK_INLINE_HPP
--- a/src/share/vm/utilities/taskqueue.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/taskqueue.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,21 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_taskqueue.cpp.incl"
+#include "precompiled.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/os.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/stack.inline.hpp"
+#include "utilities/taskqueue.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
 
 #ifdef TRACESPINNING
 uint ParallelTaskTerminator::_total_yields = 0;
--- a/src/share/vm/utilities/taskqueue.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/taskqueue.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,32 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_TASKQUEUE_HPP
+#define SHARE_VM_UTILITIES_TASKQUEUE_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/mutex.hpp"
+#include "utilities/stack.hpp"
+#ifdef TARGET_OS_ARCH_linux_x86
+# include "orderAccess_linux_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_sparc
+# include "orderAccess_linux_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_zero
+# include "orderAccess_linux_zero.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_x86
+# include "orderAccess_solaris_x86.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_solaris_sparc
+# include "orderAccess_solaris_sparc.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_windows_x86
+# include "orderAccess_windows_x86.inline.hpp"
+#endif
+
 // Simple TaskQueue stats that are collected by default in debug builds.
 
 #if !defined(TASKQUEUE_STATS) && defined(ASSERT)
@@ -764,3 +790,5 @@
 typedef OverflowTaskQueue<size_t>             RegionTaskQueue;
 typedef GenericTaskQueueSet<RegionTaskQueue>  RegionTaskQueueSet;
 
+
+#endif // SHARE_VM_UTILITIES_TASKQUEUE_HPP
--- a/src/share/vm/utilities/top.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/top.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,5 +22,28 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_TOP_HPP
+#define SHARE_VM_UTILITIES_TOP_HPP
+
+#include "oops/oopsHierarchy.hpp"
+#include "runtime/globals.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+#include "utilities/ostream.hpp"
+#include "utilities/sizes.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/g1/g1_globals.hpp"
+#endif
+#ifdef COMPILER1
+#include "c1/c1_globals.hpp"
+#endif
+#ifdef COMPILER2
+#include "opto/c2_globals.hpp"
+#endif
+
 // THIS FILE IS INTESIONALLY LEFT EMPTY
 // IT IS USED TO MINIMIZE THE NUMBER OF DEPENDENCIES IN includeDB
+
+#endif // SHARE_VM_UTILITIES_TOP_HPP
--- a/src/share/vm/utilities/utf8.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/utf8.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,8 +22,8 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_utf8.cpp.incl"
+#include "precompiled.hpp"
+#include "utilities/utf8.hpp"
 
 // Assume the utf8 string is in legal form and has been
 // checked in the class file parser/format checker.
--- a/src/share/vm/utilities/utf8.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/utf8.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_UTF8_HPP
+#define SHARE_VM_UTILITIES_UTF8_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/top.hpp"
+
 // Low-level interface for UTF8 strings
 
 class UTF8 : AllStatic {
@@ -74,3 +80,5 @@
   static char* as_utf8(jchar* base, int length);
   static char* as_utf8(jchar* base, int length, char* buf, int buflen);
 };
+
+#endif // SHARE_VM_UTILITIES_UTF8_HPP
--- a/src/share/vm/utilities/vmError.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/vmError.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,20 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_vmError.cpp.incl"
+#include "precompiled.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/init.hpp"
+#include "runtime/os.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/vmThread.hpp"
+#include "runtime/vm_operations.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/defaultStream.hpp"
+#include "utilities/top.hpp"
+#include "utilities/vmError.hpp"
 
 // List of environment variables that should be reported in error log file.
 const char *env_list[] = {
@@ -455,6 +467,14 @@
        st->cr();
      }
 
+  STEP(105, "(printing register info)")
+
+     // decode register contents if possible
+     if (_verbose && _context && Universe::is_fully_initialized()) {
+       os::print_register_info(st, _context);
+       st->cr();
+     }
+
   STEP(110, "(printing stack bounds)" )
 
      if (_verbose) {
@@ -522,7 +542,7 @@
   STEP(135, "(printing target Java thread stack)" )
 
      // printing Java thread stack trace if it is involved in GC crash
-     if (_verbose && (_thread->is_Named_thread())) {
+     if (_verbose && _thread && (_thread->is_Named_thread())) {
        JavaThread*  jt = ((NamedThread *)_thread)->processed_thread();
        if (jt != NULL) {
          st->print_cr("JavaThread " PTR_FORMAT " (nid = " UINTX_FORMAT ") was being processed", jt, jt->osthread()->thread_id());
@@ -608,6 +628,14 @@
        st->cr();
      }
 
+  STEP(195, "(printing code cache information)" )
+
+     if (_verbose && Universe::is_fully_initialized()) {
+       // print code cache information before vm abort
+       CodeCache::print_bounds(st);
+       st->cr();
+     }
+
   STEP(200, "(printing dynamic libraries)" )
 
      if (_verbose) {
--- a/src/share/vm/utilities/vmError.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/vmError.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,11 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_VMERROR_HPP
+#define SHARE_VM_UTILITIES_VMERROR_HPP
+
+#include "utilities/globalDefinitions.hpp"
+
 
 class VM_ReportJavaOutOfMemory;
 
@@ -116,3 +121,5 @@
   // check to see if fatal error reporting is in progress
   static bool fatal_error_in_progress() { return first_error != NULL; }
 };
+
+#endif // SHARE_VM_UTILITIES_VMERROR_HPP
--- a/src/share/vm/utilities/workgroup.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/workgroup.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,11 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_workgroup.cpp.incl"
+#include "precompiled.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/os.hpp"
+#include "utilities/workgroup.hpp"
 
 // Definitions of WorkGang methods.
 
--- a/src/share/vm/utilities/workgroup.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/workgroup.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,20 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_WORKGROUP_HPP
+#define SHARE_VM_UTILITIES_WORKGROUP_HPP
+
+#include "utilities/taskqueue.hpp"
+#ifdef TARGET_OS_FAMILY_linux
+# include "thread_linux.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_solaris
+# include "thread_solaris.inline.hpp"
+#endif
+#ifdef TARGET_OS_FAMILY_windows
+# include "thread_windows.inline.hpp"
+#endif
+
 // Forward declarations of classes defined here
 
 class WorkGang;
@@ -458,3 +472,5 @@
 
   void release_par_id(int id);
 };
+
+#endif // SHARE_VM_UTILITIES_WORKGROUP_HPP
--- a/src/share/vm/utilities/xmlstream.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/xmlstream.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,8 +22,16 @@
  *
  */
 
-#include "incls/_precompiled.incl"
-#include "incls/_xmlstream.cpp.incl"
+#include "precompiled.hpp"
+#include "code/nmethod.hpp"
+#include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/xmlstream.hpp"
 
 void xmlStream::initialize(outputStream* out) {
   _out = out;
--- a/src/share/vm/utilities/xmlstream.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/xmlstream.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -22,6 +22,12 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_XMLSTREAM_HPP
+#define SHARE_VM_UTILITIES_XMLSTREAM_HPP
+
+#include "runtime/handles.hpp"
+#include "utilities/ostream.hpp"
+
 class xmlStream;
 class defaultStream;
 
@@ -175,3 +181,5 @@
 extern xmlStream* xtty;
 
 // Note:  If ::xtty != NULL, ::tty == ::xtty->text().
+
+#endif // SHARE_VM_UTILITIES_XMLSTREAM_HPP
--- a/src/share/vm/utilities/yieldingWorkgroup.cpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/yieldingWorkgroup.cpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,8 +22,10 @@
  *
  */
 
-# include "incls/_precompiled.incl"
-# include "incls/_yieldingWorkgroup.cpp.incl"
+#include "precompiled.hpp"
+#ifndef SERIALGC
+#include "utilities/yieldingWorkgroup.hpp"
+#endif
 
 // Forward declaration of classes declared here.
 
--- a/src/share/vm/utilities/yieldingWorkgroup.hpp	Tue Nov 30 18:07:18 2010 -0800
+++ b/src/share/vm/utilities/yieldingWorkgroup.hpp	Tue Nov 30 18:10:20 2010 -0800
@@ -22,6 +22,13 @@
  *
  */
 
+#ifndef SHARE_VM_UTILITIES_YIELDINGWORKGROUP_HPP
+#define SHARE_VM_UTILITIES_YIELDINGWORKGROUP_HPP
+
+#ifndef SERIALGC
+#include "utilities/workgroup.hpp"
+#endif
+
 
 // Forward declarations
 class YieldingFlexibleWorkGang;
@@ -211,3 +218,5 @@
   friend class YieldingFlexibleGangWorker;
   void reset(); // NYI
 };
+
+#endif // SHARE_VM_UTILITIES_YIELDINGWORKGROUP_HPP
--- a/test/Makefile	Tue Nov 30 18:07:18 2010 -0800
+++ b/test/Makefile	Tue Nov 30 18:10:20 2010 -0800
@@ -78,7 +78,11 @@
 TEST_ROOT := $(shell pwd)
 
 # Root of all test results
-ABS_BUILD_ROOT = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)
+ifdef ALT_OUTPUTDIR
+  ABS_BUILD_ROOT = $(ALT_OUTPUTDIR)/$(PLATFORM)-$(ARCH)
+else
+  ABS_BUILD_ROOT = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)
+endif
 ABS_TEST_OUTPUT_DIR = $(ABS_BUILD_ROOT)/testoutput
 
 # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
--- a/test/compiler/6603011/Test.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/test/compiler/6603011/Test.java	Tue Nov 30 18:10:20 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 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
@@ -108,8 +108,10 @@
 
     if (quo != quo0 || rem != rem0) {
       if (VERBOSE) {
-        System.out.println("  " + dividend + " / " + divisor() + " = " +
-                           quo + ", " + dividend + " % " + divisor() + " = " + rem);
+        System.out.println("Computed: " + dividend + " / " + divisor() + " = " +
+                           quo  + ", " + dividend + " % " + divisor() + " = " + rem );
+        System.out.println("expected: " + dividend + " / " + divisor() + " = " +
+                           quo0 + ", " + dividend + " % " + divisor() + " = " + rem0);
         // Report sign of rem failure
         if (rem != 0 && (rem ^ dividend) < 0) {
           System.out.println("  rem & dividend have different signs");
@@ -168,7 +170,7 @@
     for (int i = start; i <= end; i++) {
       for (int s = 0; s < 64; s += 4) {
         total++;
-        long dividend = i << s;
+        long dividend = ((long)i) << s;
         if (!checkL(dividend)) {
           wrong++;
           // Stop on the first failure
--- a/test/compiler/6857159/Test6857159.java	Tue Nov 30 18:07:18 2010 -0800
+++ b/test/compiler/6857159/Test6857159.java	Tue Nov 30 18:10:20 2010 -0800
@@ -54,7 +54,7 @@
     }
 
     public static void main(String[] args) throws Exception {
-        for (int i = 0; i < 100000; i++) {
+        for (int i = 0; i < 20000; i++) {
             Thread t = null;
             switch (i % 3) {
               case 0: t = new ct0(); break;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/6991596/Test6991596.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,447 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 6991596
+ * @summary JSR 292 unimplemented adapter_opt_i2i and adapter_opt_l2i on SPARC
+ *
+ * @run main/othervm -ea -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles -XX:+EnableInvokeDynamic -XX:+UnlockDiagnosticVMOptions -XX:+VerifyMethodHandles Test6991596
+ */
+
+import java.dyn.*;
+
+public class Test6991596 {
+    private static final Class   CLASS = Test6991596.class;
+    private static final String  NAME  = "foo";
+    private static final boolean DEBUG = false;
+
+    public static void main(String[] args) throws Throwable {
+        testboolean();
+        testbyte();
+        testchar();
+        testshort();
+        testint();
+        testlong();
+    }
+
+    // Helpers to get various methods.
+    static MethodHandle getmh1(Class ret, Class arg) {
+        return MethodHandles.lookup().findStatic(CLASS, NAME, MethodType.methodType(ret, arg));
+    }
+    static MethodHandle getmh2(MethodHandle mh1, Class ret, Class arg) {
+        return MethodHandles.convertArguments(mh1, MethodType.methodType(ret, arg));
+    }
+    static MethodHandle getmh3(MethodHandle mh1, Class ret, Class arg) {
+        return MethodHandles.convertArguments(mh1, MethodType.methodType(ret, arg));
+    }
+
+    // test adapter_opt_i2i
+    static void testboolean() throws Throwable {
+        boolean[] a = new boolean[] {
+            true,
+            false
+        };
+        for (int i = 0; i < a.length; i++) {
+            doboolean(a[i]);
+        }
+    }
+    static void doboolean(boolean x) throws Throwable {
+        if (DEBUG)  System.out.println("boolean=" + x);
+
+        // boolean
+        {
+            MethodHandle mh1 = getmh1(     boolean.class, boolean.class);
+            MethodHandle mh2 = getmh2(mh1, boolean.class, boolean.class);
+            // TODO add this for all cases when the bugs are fixed.
+            //MethodHandle mh3 = getmh3(mh1, boolean.class, boolean.class);
+            boolean a = mh1.<boolean>invokeExact((boolean) x);
+            boolean b = mh2.<boolean>invokeExact(x);
+            //boolean c = mh3.<boolean>invokeExact((boolean) x);
+            assert a == b : a + " != " + b;
+            //assert c == x : c + " != " + x;
+        }
+
+        // byte
+        {
+            MethodHandle mh1 = getmh1(     byte.class,    byte.class   );
+            MethodHandle mh2 = getmh2(mh1, byte.class,    boolean.class);
+            byte    a = mh1.<byte>invokeExact((byte) (x ? 1 : 0));
+            byte    b = mh2.<byte>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // char
+        {
+            MethodHandle mh1 = getmh1(     char.class, char.class);
+            MethodHandle mh2 = getmh2(mh1, char.class, boolean.class);
+            char a = mh1.<char>invokeExact((char) (x ? 1 : 0));
+            char b = mh2.<char>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // short
+        {
+            MethodHandle mh1 = getmh1(     short.class, short.class);
+            MethodHandle mh2 = getmh2(mh1, short.class, boolean.class);
+            short a = mh1.<short>invokeExact((short) (x ? 1 : 0));
+            short b = mh2.<short>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+    }
+
+    static void testbyte() throws Throwable {
+        byte[] a = new byte[] {
+            Byte.MIN_VALUE,
+            Byte.MIN_VALUE + 1,
+            -0x0F,
+            -1,
+            0,
+            1,
+            0x0F,
+            Byte.MAX_VALUE - 1,
+            Byte.MAX_VALUE
+        };
+        for (int i = 0; i < a.length; i++) {
+            dobyte(a[i]);
+        }
+    }
+    static void dobyte(byte x) throws Throwable {
+        if (DEBUG)  System.out.println("byte=" + x);
+
+        // boolean
+        {
+            MethodHandle mh1 = getmh1(     boolean.class, boolean.class);
+            MethodHandle mh2 = getmh2(mh1, boolean.class, byte.class);
+            boolean a = mh1.<boolean>invokeExact((x & 1) == 1);
+            boolean b = mh2.<boolean>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // byte
+        {
+            MethodHandle mh1 = getmh1(     byte.class, byte.class);
+            MethodHandle mh2 = getmh2(mh1, byte.class, byte.class);
+            byte a = mh1.<byte>invokeExact((byte) x);
+            byte b = mh2.<byte>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // char
+        {
+            MethodHandle mh1 = getmh1(     char.class, char.class);
+            MethodHandle mh2 = getmh2(mh1, char.class, byte.class);
+            char a = mh1.<char>invokeExact((char) x);
+            char b = mh2.<char>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // short
+        {
+            MethodHandle mh1 = getmh1(     short.class, short.class);
+            MethodHandle mh2 = getmh2(mh1, short.class, byte.class);
+            short a = mh1.<short>invokeExact((short) x);
+            short b = mh2.<short>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+    }
+
+    static void testchar() throws Throwable {
+        char[] a = new char[] {
+            Character.MIN_VALUE,
+            Character.MIN_VALUE + 1,
+            0x000F,
+            0x00FF,
+            0x0FFF,
+            Character.MAX_VALUE - 1,
+            Character.MAX_VALUE
+        };
+        for (int i = 0; i < a.length; i++) {
+            dochar(a[i]);
+        }
+    }
+    static void dochar(char x) throws Throwable {
+        if (DEBUG)  System.out.println("char=" + x);
+
+        // boolean
+        {
+            MethodHandle mh1 = getmh1(     boolean.class, boolean.class);
+            MethodHandle mh2 = getmh2(mh1, boolean.class, char.class);
+            boolean a = mh1.<boolean>invokeExact((x & 1) == 1);
+            boolean b = mh2.<boolean>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // byte
+        {
+            MethodHandle mh1 = getmh1(     byte.class, byte.class);
+            MethodHandle mh2 = getmh2(mh1, byte.class, char.class);
+            byte a = mh1.<byte>invokeExact((byte) x);
+            byte b = mh2.<byte>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // char
+        {
+            MethodHandle mh1 = getmh1(     char.class, char.class);
+            MethodHandle mh2 = getmh2(mh1, char.class, char.class);
+            char a = mh1.<char>invokeExact((char) x);
+            char b = mh2.<char>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // short
+        {
+            MethodHandle mh1 = getmh1(     short.class, short.class);
+            MethodHandle mh2 = getmh2(mh1, short.class, char.class);
+            short a = mh1.<short>invokeExact((short) x);
+            short b = mh2.<short>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+    }
+
+    static void testshort() throws Throwable {
+        short[] a = new short[] {
+            Short.MIN_VALUE,
+            Short.MIN_VALUE + 1,
+            -0x0FFF,
+            -0x00FF,
+            -0x000F,
+            -1,
+            0,
+            1,
+            0x000F,
+            0x00FF,
+            0x0FFF,
+            Short.MAX_VALUE - 1,
+            Short.MAX_VALUE
+        };
+        for (int i = 0; i < a.length; i++) {
+            doshort(a[i]);
+        }
+    }
+    static void doshort(short x) throws Throwable {
+        if (DEBUG)  System.out.println("short=" + x);
+
+        // boolean
+        {
+            MethodHandle mh1 = getmh1(     boolean.class, boolean.class);
+            MethodHandle mh2 = getmh2(mh1, boolean.class, short.class);
+            boolean a = mh1.<boolean>invokeExact((x & 1) == 1);
+            boolean b = mh2.<boolean>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // byte
+        {
+            MethodHandle mh1 = getmh1(     byte.class, byte.class);
+            MethodHandle mh2 = getmh2(mh1, byte.class, short.class);
+            byte a = mh1.<byte>invokeExact((byte) x);
+            byte b = mh2.<byte>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // char
+        {
+            MethodHandle mh1 = getmh1(     char.class, char.class);
+            MethodHandle mh2 = getmh2(mh1, char.class, short.class);
+            char a = mh1.<char>invokeExact((char) x);
+            char b = mh2.<char>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // short
+        {
+            MethodHandle mh1 = getmh1(     short.class, short.class);
+            MethodHandle mh2 = getmh2(mh1, short.class, short.class);
+            short a = mh1.<short>invokeExact((short) x);
+            short b = mh2.<short>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+    }
+
+    static void testint() throws Throwable {
+        int[] a = new int[] {
+            Integer.MIN_VALUE,
+            Integer.MIN_VALUE + 1,
+            -0x0FFFFFFF,
+            -0x00FFFFFF,
+            -0x000FFFFF,
+            -0x0000FFFF,
+            -0x00000FFF,
+            -0x000000FF,
+            -0x0000000F,
+            -1,
+            0,
+            1,
+            0x0000000F,
+            0x000000FF,
+            0x00000FFF,
+            0x0000FFFF,
+            0x000FFFFF,
+            0x00FFFFFF,
+            0x0FFFFFFF,
+            Integer.MAX_VALUE - 1,
+            Integer.MAX_VALUE
+        };
+        for (int i = 0; i < a.length; i++) {
+            doint(a[i]);
+        }
+    }
+    static void doint(int x) throws Throwable {
+        if (DEBUG)  System.out.println("int=" + x);
+
+        // boolean
+        {
+            MethodHandle mh1 = getmh1(     boolean.class, boolean.class);
+            MethodHandle mh2 = getmh2(mh1, boolean.class, int.class);
+            boolean a = mh1.<boolean>invokeExact((x & 1) == 1);
+            boolean b = mh2.<boolean>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // byte
+        {
+            MethodHandle mh1 = getmh1(     byte.class, byte.class);
+            MethodHandle mh2 = getmh2(mh1, byte.class, int.class);
+            byte a = mh1.<byte>invokeExact((byte) x);
+            byte b = mh2.<byte>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // char
+        {
+            MethodHandle mh1 = getmh1(     char.class, char.class);
+            MethodHandle mh2 = getmh2(mh1, char.class, int.class);
+            char a = mh1.<char>invokeExact((char) x);
+            char b = mh2.<char>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // short
+        {
+            MethodHandle mh1 = getmh1(     short.class, short.class);
+            MethodHandle mh2 = getmh2(mh1, short.class, int.class);
+            short a = mh1.<short>invokeExact((short) x);
+            short b = mh2.<short>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // int
+        {
+            MethodHandle mh1 = getmh1(     int.class, int.class);
+            MethodHandle mh2 = getmh2(mh1, int.class, int.class);
+            int a = mh1.<int>invokeExact((int) x);
+            int b = mh2.<int>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+    }
+
+    // test adapter_opt_l2i
+    static void testlong() throws Throwable {
+        long[] a = new long[] {
+            Long.MIN_VALUE,
+            Long.MIN_VALUE + 1,
+            -0x000000000FFFFFFFL,
+            -0x0000000000FFFFFFL,
+            -0x00000000000FFFFFL,
+            -0x000000000000FFFFL,
+            -0x0000000000000FFFL,
+            -0x00000000000000FFL,
+            -0x000000000000000FL,
+            -1L,
+            0L,
+            1L,
+            0x000000000000000FL,
+            0x00000000000000FFL,
+            0x0000000000000FFFL,
+            0x0000000000000FFFL,
+            0x000000000000FFFFL,
+            0x00000000000FFFFFL,
+            0x0000000000FFFFFFL,
+            0x000000000FFFFFFFL,
+            Long.MAX_VALUE - 1,
+            Long.MAX_VALUE
+        };
+        for (int i = 0; i < a.length; i++) {
+            dolong(a[i]);
+        }
+    }
+    static void dolong(long x) throws Throwable {
+        if (DEBUG)  System.out.println("long=" + x);
+
+        // boolean
+        {
+            MethodHandle mh1 = getmh1(     boolean.class, boolean.class);
+            MethodHandle mh2 = getmh2(mh1, boolean.class, long.class);
+            boolean a = mh1.<boolean>invokeExact((x & 1L) == 1L);
+            boolean b = mh2.<boolean>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // byte
+        {
+            MethodHandle mh1 = getmh1(     byte.class, byte.class);
+            MethodHandle mh2 = getmh2(mh1, byte.class, long.class);
+            byte a = mh1.<byte>invokeExact((byte) x);
+            byte b = mh2.<byte>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // char
+        {
+            MethodHandle mh1 = getmh1(     char.class, char.class);
+            MethodHandle mh2 = getmh2(mh1, char.class, long.class);
+            char a = mh1.<char>invokeExact((char) x);
+            char b = mh2.<char>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // short
+        {
+            MethodHandle mh1 = getmh1(     short.class, short.class);
+            MethodHandle mh2 = getmh2(mh1, short.class, long.class);
+            short a = mh1.<short>invokeExact((short) x);
+            short b = mh2.<short>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+        // int
+        {
+            MethodHandle mh1 = getmh1(     int.class, int.class);
+            MethodHandle mh2 = getmh2(mh1, int.class, long.class);
+            int a = mh1.<int>invokeExact((int) x);
+            int b = mh2.<int>invokeExact(x);
+            assert a == b : a + " != " + b;
+        }
+
+    }
+
+    // to int
+    public static boolean foo(boolean i) { return i; }
+    public static byte    foo(byte    i) { return i; }
+    public static char    foo(char    i) { return i; }
+    public static short   foo(short   i) { return i; }
+    public static int     foo(int     i) { return i; }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/runtime/6981737/Test6981737.java	Tue Nov 30 18:10:20 2010 -0800
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/*
+ * @test Test6981737.java
+ * @bug 6981737
+ * @summary check for correct vm properties
+ * @run main Test6981737
+ * @author kamg
+*/
+
+public class Test6981737 {
+
+    /**
+     * Check the 'vendor' properties java.vm.specification.version
+     * property.  Before jdk7, they should be "Sun Micro..." and "1.0".
+     * In jdk7 onwards they should be "Oracle..." and "1.<major_version>"
+     */
+    public static void main(String[] args) throws Exception {
+
+        String version = verifyProperty("java.version", "[0-9]+\\.[0-9]+\\..*");
+        String major_version_spec = version.split("\\.")[1];
+        int major_version = new Integer(major_version_spec).intValue();
+
+        String vendor_re = "Oracle Corporation";
+        String vm_spec_version_re = "1\\." + major_version_spec;
+        if (major_version < 7) {
+            vendor_re = "Sun Microsystems Inc\\.";
+            vm_spec_version_re = "1\\.0";
+        }
+        verifyProperty("java.vendor", vendor_re);
+        verifyProperty("java.vm.vendor", vendor_re);
+        verifyProperty("java.vm.specification.vendor", vendor_re);
+        verifyProperty("java.specification.vendor", vendor_re);
+        verifyProperty("java.vm.specification.version", vm_spec_version_re);
+        System.out.println("PASS");
+    }
+
+    public static String verifyProperty(String name, String expected_re) {
+        String value = System.getProperty(name, "");
+        System.out.print("Checking " + name + ": \"" + value +
+          "\".matches(\"" + expected_re + "\")... ");
+        if (!value.matches(expected_re)) {
+            System.out.println("no.");
+            throw new RuntimeException("FAIL: Wrong value for " + name +
+                " property, \"" + value + "\", expected to be of form: \"" +
+                expected_re + "\"");
+        }
+        System.out.println("yes.");
+        return value;
+    }
+}