changeset 7735:a7a93887b4c4

fix Solaris build and initial SPARC support
author twisti
date Wed, 06 Feb 2013 18:01:07 -0800
parents a0cfabe195c6
children 6a78ed71be90
files make/solaris/makefiles/compiler1.make make/solaris/makefiles/compiler2.make make/solaris/makefiles/debug.make make/solaris/makefiles/fastdebug.make make/solaris/makefiles/jvmg.make make/solaris/makefiles/optimized.make make/solaris/makefiles/product.make make/solaris/makefiles/tiered.make make/solaris/makefiles/vm.make src/cpu/sparc/vm/c2_globals_sparc.hpp src/cpu/sparc/vm/frame_sparc.inline.hpp src/cpu/sparc/vm/graalGlobals_sparc.hpp src/cpu/sparc/vm/jniTypes_sparc.hpp src/cpu/x86/vm/frame_x86.hpp src/share/vm/code/dependencies.cpp src/share/vm/code/stubs.cpp src/share/vm/code/stubs.hpp src/share/vm/graal/graalCodeInstaller.cpp src/share/vm/graal/graalCodeInstaller.hpp src/share/vm/graal/graalCompilerToVM.cpp src/share/vm/graal/graalRuntime.cpp src/share/vm/runtime/fieldDescriptor.hpp src/share/vm/runtime/frame.cpp src/share/vm/runtime/frame.hpp src/share/vm/utilities/machineCodePrinter.cpp src/share/vm/utilities/machineCodePrinter.hpp
diffstat 26 files changed, 139 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/make/solaris/makefiles/compiler1.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/compiler1.make	Wed Feb 06 18:01:07 2013 -0800
@@ -29,3 +29,7 @@
 VM_SUBDIR = client
 
 CFLAGS += -DCOMPILER1
+
+ifndef OMIT_GRAAL
+  CFLAGS += -DGRAAL
+endif
--- a/make/solaris/makefiles/compiler2.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/compiler2.make	Wed Feb 06 18:01:07 2013 -0800
@@ -29,3 +29,7 @@
 VM_SUBDIR = server
 
 CFLAGS += -DCOMPILER2
+
+ifndef OMIT_GRAAL
+  CFLAGS += -DGRAAL
+endif
--- a/make/solaris/makefiles/debug.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/debug.make	Wed Feb 06 18:01:07 2013 -0800
@@ -43,7 +43,7 @@
 MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers \
           $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-debug
 #ifdef GRAAL
-MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-graal
+MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-GRAAL
 #endif
 
 # This mapfile is only needed when compiling with dtrace support, 
--- a/make/solaris/makefiles/fastdebug.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/fastdebug.make	Wed Feb 06 18:01:07 2013 -0800
@@ -118,7 +118,7 @@
 MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers \
 	  $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-debug
 #ifdef GRAAL
-MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-graal
+MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-GRAAL
 #endif
 
 # This mapfile is only needed when compiling with dtrace support, 
--- a/make/solaris/makefiles/jvmg.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/jvmg.make	Wed Feb 06 18:01:07 2013 -0800
@@ -47,7 +47,7 @@
 MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers \
           $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-debug
 #ifdef GRAAL
-MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-graal
+MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-GRAAL
 #endif
 
 # This mapfile is only needed when compiling with dtrace support,
--- a/make/solaris/makefiles/optimized.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/optimized.make	Wed Feb 06 18:01:07 2013 -0800
@@ -55,7 +55,7 @@
 # Linker mapfiles
 MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers
 #ifdef GRAAL
-MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-graal
+MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-GRAAL
 #endif
 
 # This mapfile is only needed when compiling with dtrace support, 
--- a/make/solaris/makefiles/product.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/product.make	Wed Feb 06 18:01:07 2013 -0800
@@ -67,7 +67,7 @@
 # Linker mapfiles
 MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers
 ifdef GRAAL
-MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-graal
+MAPFILE += $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-GRAAL
 endif
 
 ifndef USE_GCC
--- a/make/solaris/makefiles/tiered.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/tiered.make	Wed Feb 06 18:01:07 2013 -0800
@@ -29,3 +29,7 @@
 VM_SUBDIR = server
 
 CFLAGS += -DCOMPILER2 -DCOMPILER1
+
+ifndef OMIT_GRAAL
+  CFLAGS += -DGRAAL
+endif
--- a/make/solaris/makefiles/vm.make	Wed Feb 06 15:14:15 2013 +0100
+++ b/make/solaris/makefiles/vm.make	Wed Feb 06 18:01:07 2013 -0800
@@ -192,11 +192,11 @@
 
 # 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/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS) $(GRAAL_PATHS)
+Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS) $(GRAAL_PATHS)
+Src_Dirs/TIERED    := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS) $(GRAAL_PATHS)
 Src_Dirs/ZERO      := $(CORE_PATHS)
-Src_Dirs/SHARK     := $(CORE_PATHS)
+Src_Dirs/SHARK     := $(CORE_PATHS) $(SHARK_PATHS)
 Src_Dirs/GRAAL     := $(CORE_PATHS) $(GRAAL_PATHS)
 Src_Dirs := $(Src_Dirs/$(TYPE))
 
@@ -216,7 +216,7 @@
 Src_Files_EXCLUDE/TIERED    := $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) $(GRAAL_SPECIFIC_FILES)
 Src_Files_EXCLUDE/ZERO      := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) $(GRAAL_SPECIFIC_FILES) ciTypeFlow.cpp
 Src_Files_EXCLUDE/SHARK     := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(GRAAL_SPECIFIC_FILES)
-Src_Files_EXCLUDE/GRAAL     := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) $(GRAAL_SPECIFIC_FILES) ciTypeFlow.cpp
+Src_Files_EXCLUDE/GRAAL     := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
 
 Src_Files_EXCLUDE +=  $(Src_Files_EXCLUDE/$(TYPE))
 
--- a/src/cpu/sparc/vm/c2_globals_sparc.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/cpu/sparc/vm/c2_globals_sparc.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -37,6 +37,7 @@
 define_pd_global(bool, PreferInterpreterNativeStubs, false);
 define_pd_global(bool, ProfileTraps,                 true);
 define_pd_global(bool, UseOnStackReplacement,        true);
+define_pd_global(intx, TypeProfileWidth,             2   );
 #ifdef CC_INTERP
 define_pd_global(bool, ProfileInterpreter,           false);
 #else
--- a/src/cpu/sparc/vm/frame_sparc.inline.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/cpu/sparc/vm/frame_sparc.inline.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -74,7 +74,8 @@
 
 // return address:
 
-inline address  frame::sender_pc()        const    { return *I7_addr() + pc_return_offset; }
+inline address* frame::sender_pc_addr()   const { return (address*) (I7_addr() + pc_return_offset); }
+inline address  frame::sender_pc()        const { return *sender_pc_addr(); }
 
 inline address* frame::I7_addr() const  { return (address*) &sp()[ I7->sp_offset_in_saved_window()]; }
 inline address* frame::I0_addr() const  { return (address*) &sp()[ I0->sp_offset_in_saved_window()]; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/sparc/vm/graalGlobals_sparc.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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 CPU_SPARC_VM_GRAALGLOBALS_SPARC_HPP
+#define CPU_SPARC_VM_GRAALGLOBALS_SPARC_HPP
+
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/macros.hpp"
+
+// Sets the default values for platform dependent flags used by the Graal compiler.
+// (see graalGlobals.hpp)
+
+define_pd_global(intx, GraalSafepointPollOffset,     0    );
+
+#endif // CPU_SPARC_VM_GRAALGLOBALS_SPARC_HPP
--- a/src/cpu/sparc/vm/jniTypes_sparc.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/cpu/sparc/vm/jniTypes_sparc.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -112,6 +112,25 @@
                                                           return *(jdouble *)&jl; }
 #endif
 
+  static inline jint    get_int   (intptr_t *from, int& pos) {
+    return get_int(from + pos++);
+  }
+  static inline jlong   get_long  (intptr_t *from, int& pos) {
+    jlong result = get_long(from + pos);
+    pos += 2;
+    return result;
+  }
+  static inline oop     get_obj   (intptr_t *from, int& pos) {
+    return get_obj(from + pos++);
+  }
+  static inline jfloat  get_float (intptr_t *from, int& pos) {
+    return get_float(from + pos++);
+  }
+  static inline jdouble get_double(intptr_t *from, int& pos) {
+    jdouble result = get_double(from + pos);
+    pos += 2;
+    return result;
+  }
 };
 
 #endif // CPU_SPARC_VM_JNITYPES_SPARC_HPP
--- a/src/cpu/x86/vm/frame_x86.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/cpu/x86/vm/frame_x86.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -191,8 +191,6 @@
   // Note: not necessarily the real 'frame pointer' (see real_fp)
   intptr_t*   fp() const { return _fp; }
 
-  inline address* sender_pc_addr() const;
-
   // return address of param, zero origin index.
   inline address* native_param_addr(int idx) const;
 
--- a/src/share/vm/code/dependencies.cpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/code/dependencies.cpp	Wed Feb 06 18:01:07 2013 -0800
@@ -30,6 +30,7 @@
 #include "code/dependencies.hpp"
 #include "compiler/compileLog.hpp"
 #include "oops/oop.inline.hpp"
+#include "oops/objArrayKlass.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
 #include "utilities/copy.hpp"
--- a/src/share/vm/code/stubs.cpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/code/stubs.cpp	Wed Feb 06 18:01:07 2013 -0800
@@ -254,7 +254,7 @@
   guarantee(_queue_begin != _queue_end || n == 0, "buffer indices must be the same");
 }
 
-void StubQueue::print_on(outputStream* st) {
+void StubQueue::print_on(outputStream* st) const {
   MutexLockerEx lock(_mutex);
   for (Stub* s = first(); s != NULL; s = next(s)) {
     stub_print(s, st);
--- a/src/share/vm/code/stubs.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/code/stubs.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -107,20 +107,21 @@
  public:
   // Initialization/finalization
   virtual void    initialize(Stub* self, int size,
-                             CodeComments& comments)       = 0; // called after creation (called twice if allocated via (request, commit))
-  virtual void    finalize(Stub* self)                     = 0; // called before deallocation
+                             CodeComments& comments)           = 0; // called after creation (called twice if allocated via (request, commit))
+  virtual void    finalize(Stub* self)                         = 0; // called before deallocation
 
   // General info/converters
-  virtual int     size(Stub* self) const                   = 0; // the total size of the stub in bytes (must be a multiple of CodeEntryAlignment)
-  virtual int     code_size_to_size(int code_size) const   = 0; // computes the total stub size in bytes given the code size in bytes
+  virtual int     size(Stub* self) const                       = 0; // the total size of the stub in bytes (must be a multiple of CodeEntryAlignment)
+  virtual int     code_size_to_size(int code_size) const       = 0; // computes the total stub size in bytes given the code size in bytes
 
   // Code info
-  virtual address code_begin(Stub* self) const             = 0; // points to the first code byte
-  virtual address code_end(Stub* self) const               = 0; // points to the first byte after the code
+  virtual address code_begin(Stub* self) const                 = 0; // points to the first code byte
+  virtual address code_end(Stub* self) const                   = 0; // points to the first byte after the code
 
   // Debugging
-  virtual void    verify(Stub* self)                       = 0; // verifies the stub
-  virtual void    print_on(Stub* self, outputStream* st)   = 0; // prints information about the stub
+  virtual void    verify(Stub* self) const                     = 0; // verifies the stub
+  NOT_PRODUCT(using AllocatedObj::print_on;)
+  virtual void    print_on(Stub* self, outputStream* st) const = 0; // prints information about the stub
 };
 
 
@@ -128,28 +129,29 @@
 // class, forwarding stub interface calls to the corresponding
 // stub calls.
 
-#define DEF_STUB_INTERFACE(stub)                           \
-  class stub##Interface: public StubInterface {            \
-   private:                                                \
-    static stub*    cast(Stub* self)                       { return (stub*)self; }                 \
-                                                           \
-   public:                                                 \
-    /* Initialization/finalization */                      \
-    virtual void    initialize(Stub* self, int size,       \
-                               CodeComments& comments)     { cast(self)->initialize(size, comments); } \
-    virtual void    finalize(Stub* self)                   { cast(self)->finalize(); }             \
-                                                           \
-    /* General info */                                     \
-    virtual int     size(Stub* self) const                 { return cast(self)->size(); }          \
-    virtual int     code_size_to_size(int code_size) const { return stub::code_size_to_size(code_size); } \
-                                                           \
-    /* Code info */                                        \
-    virtual address code_begin(Stub* self) const           { return cast(self)->code_begin(); }    \
-    virtual address code_end(Stub* self) const             { return cast(self)->code_end(); }      \
-                                                           \
-    /* Debugging */                                        \
-    virtual void    verify(Stub* self)                     { cast(self)->verify(); }               \
-    virtual void    print_on(Stub* self, outputStream* st) { cast(self)->print_on(st); }           \
+#define DEF_STUB_INTERFACE(stub)                                 \
+  class stub##Interface: public StubInterface {                  \
+   private:                                                      \
+    static stub*    cast(Stub* self)                             { return (stub*)self; }                 \
+                                                                 \
+   public:                                                       \
+    /* Initialization/finalization */                            \
+    virtual void    initialize(Stub* self, int size,             \
+                               CodeComments& comments)           { cast(self)->initialize(size, comments); } \
+    virtual void    finalize(Stub* self)                         { cast(self)->finalize(); }             \
+                                                                 \
+    /* General info */                                           \
+    virtual int     size(Stub* self) const                       { return cast(self)->size(); }          \
+    virtual int     code_size_to_size(int code_size) const       { return stub::code_size_to_size(code_size); } \
+                                                                 \
+    /* Code info */                                              \
+    virtual address code_begin(Stub* self) const                 { return cast(self)->code_begin(); }    \
+    virtual address code_end(Stub* self) const                   { return cast(self)->code_end(); }      \
+                                                                 \
+    /* Debugging */                                              \
+    virtual void    verify(Stub* self) const                     { cast(self)->verify(); }               \
+    NOT_PRODUCT(using AllocatedObj::print_on;)                   \
+    virtual void    print_on(Stub* self, outputStream* st) const { cast(self)->print_on(st); }           \
   };
 
 
@@ -182,7 +184,7 @@
   bool  stub_contains(Stub* s, address pc) const { return _stub_interface->code_begin(s) <= pc && pc < _stub_interface->code_end(s); }
   int   stub_code_size_to_size(int code_size) const { return _stub_interface->code_size_to_size(code_size); }
   void  stub_verify(Stub* s)                     { _stub_interface->verify(s); }
-  void  stub_print(Stub* s, outputStream* st)    { _stub_interface->print_on(s, st); }
+  void  stub_print(Stub* s, outputStream* st) const { _stub_interface->print_on(s, st); }
 
   static void register_queue(StubQueue*);
 
@@ -226,9 +228,9 @@
   address stub_code_end(Stub* s) const           { return _stub_interface->code_end(s);   }
 
   // Debugging/printing
-  void  verify();                                // verifies the stub queue
-  void  print()                                  { print_on(tty); }
-  void  print_on(outputStream* st);
+  void verify();                                 // verifies the stub queue
+  virtual void print() const                     { print_on(tty); }
+  virtual void print_on(outputStream* st) const;
 };
 
 #endif // SHARE_VM_CODE_STUBS_HPP
--- a/src/share/vm/graal/graalCodeInstaller.cpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/graal/graalCodeInstaller.cpp	Wed Feb 06 18:01:07 2013 -0800
@@ -22,6 +22,7 @@
  */
 
 #include "precompiled.hpp"
+#include "compiler/disassembler.hpp"
 #include "runtime/javaCalls.hpp"
 #include "graal/graalEnv.hpp"
 #include "graal/graalCompiler.hpp"
--- a/src/share/vm/graal/graalCodeInstaller.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/graal/graalCodeInstaller.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -48,7 +48,7 @@
     MARK_POLL_NEAR                  = 0x3001,
     MARK_POLL_RETURN_NEAR           = 0x3002,
     MARK_POLL_FAR                   = 0x3003,
-    MARK_POLL_RETURN_FAR            = 0x3004,
+    MARK_POLL_RETURN_FAR            = 0x3004
   };
 
   Arena         _arena;
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Wed Feb 06 18:01:07 2013 -0800
@@ -30,6 +30,7 @@
 #include "graal/graalRuntime.hpp"
 #include "compiler/compileBroker.hpp"
 #include "compiler/compilerOracle.hpp"
+#include "compiler/disassembler.hpp"
 #include "graal/graalCompilerToVM.hpp"
 #include "graal/graalCompiler.hpp"
 #include "graal/graalEnv.hpp"
--- a/src/share/vm/graal/graalRuntime.cpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/graal/graalRuntime.cpp	Wed Feb 06 18:01:07 2013 -0800
@@ -22,12 +22,13 @@
  */
 
 #include "precompiled.hpp"
-#include "runtime/interfaceSupport.hpp"
-#include "prims/jvm.h"
+#include "asm/codeBuffer.hpp"
 #include "graal/graalRuntime.hpp"
 #include "graal/graalVMToCompiler.hpp"
-#include "asm/codeBuffer.hpp"
+#include "memory/oopFactory.hpp"
+#include "prims/jvm.h"
 #include "runtime/biasedLocking.hpp"
+#include "runtime/interfaceSupport.hpp"
 
 // Implementation of GraalStubAssembler
 
@@ -128,7 +129,7 @@
     // These stubs don't need to have an oopmap
     case graal_slow_subtype_check_id:
 #if defined(SPARC) || defined(PPC)
-    case handle_exception_nofpu_id:  // Unused on sparc
+    case graal_handle_exception_nofpu_id:  // Unused on sparc
 #endif
     case graal_verify_oop_id:
     case graal_unwind_exception_call_id:
--- a/src/share/vm/runtime/fieldDescriptor.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/runtime/fieldDescriptor.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -25,7 +25,10 @@
 #ifndef SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
 #define SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
 
+#include "oops/annotations.hpp"
 #include "oops/constantPool.hpp"
+#include "oops/fieldInfo.hpp"
+#include "oops/instanceKlass.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/fieldType.hpp"
 #include "utilities/accessFlags.hpp"
--- a/src/share/vm/runtime/frame.cpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/runtime/frame.cpp	Wed Feb 06 18:01:07 2013 -0800
@@ -637,8 +637,10 @@
   st->print("; ");
   interpreter_frame_method()->print_name(st);
   st->cr();
+#ifdef AMD64
   // last sp
   st->print_cr(" - last sp       at " INTPTR_FORMAT " = " INTPTR_FORMAT, interpreter_frame_last_sp_addr(), *interpreter_frame_last_sp_addr());
+#endif
   // sender sp
   st->print_cr(" - sender sp     at " INTPTR_FORMAT " = " INTPTR_FORMAT, interpreter_frame_sender_sp_addr(), *interpreter_frame_sender_sp_addr());
   // old fp
--- a/src/share/vm/runtime/frame.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/runtime/frame.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -208,6 +208,7 @@
   void set_link(intptr_t* addr);
 
   // Return address
+  address* sender_pc_addr() const;
   address  sender_pc() const;
 
   // Support for deoptimization
--- a/src/share/vm/utilities/machineCodePrinter.cpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/utilities/machineCodePrinter.cpp	Wed Feb 06 18:01:07 2013 -0800
@@ -21,7 +21,10 @@
  * questions.
  */
 
-#include "precompiled.hpp"
+#include "precompiled.hpp"
+#include "code/stubs.hpp"
+#include "compiler/disassembler.hpp"
+#include "runtime/thread.hpp"
 #include "utilities/machineCodePrinter.hpp"
 #include "utilities/ostream.hpp"
 
--- a/src/share/vm/utilities/machineCodePrinter.hpp	Wed Feb 06 15:14:15 2013 +0100
+++ b/src/share/vm/utilities/machineCodePrinter.hpp	Wed Feb 06 18:01:07 2013 -0800
@@ -23,6 +23,9 @@
 
 #ifndef SHARE_VM_UTILITIES_MACHINE_CODE_PRINTER_HPP
 #define SHARE_VM_UTILITIES_MACHINE_CODE_PRINTER_HPP
+
+#include "memory/allocation.hpp"
+#include "utilities/ostream.hpp"
 
 class MachineCodePrinter : public AllStatic {
 private: