8145117: PPC64: Remove cpp interpreter implementation
authorgoetz
Thu, 10 Dec 2015 16:18:25 +0100
changeset 35166 23125410af16
parent 35165 7f80c81ddb05
child 35167 45801556e636
child 35169 e75913632d00
child 35172 30645dca868e
8145117: PPC64: Remove cpp interpreter implementation Reviewed-by: coleenp, mdoerr
hotspot/src/cpu/ppc/vm/frame_ppc.cpp
hotspot/src/cpu/ppc/vm/frame_ppc.hpp
hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp
hotspot/src/cpu/ppc/vm/globalDefinitions_ppc.hpp
hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp
hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.hpp
hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp
hotspot/src/cpu/ppc/vm/interpreter_ppc.hpp
hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp
hotspot/src/cpu/ppc/vm/register_ppc.hpp
hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp
hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp
hotspot/src/cpu/ppc/vm/templateTable_ppc_64.cpp
--- a/hotspot/src/cpu/ppc/vm/frame_ppc.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/frame_ppc.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -84,10 +84,7 @@
 
 frame frame::sender_for_interpreter_frame(RegisterMap *map) const {
   // Pass callers initial_caller_sp as unextended_sp.
-  return frame(sender_sp(), sender_pc(),
-               CC_INTERP_ONLY((intptr_t*)((parent_ijava_frame_abi *)callers_abi())->initial_caller_sp)
-               NOT_CC_INTERP((intptr_t*)get_ijava_state()->sender_sp)
-               );
+  return frame(sender_sp(), sender_pc(), (intptr_t*)get_ijava_state()->sender_sp);
 }
 
 frame frame::sender_for_compiled_frame(RegisterMap *map) const {
@@ -168,14 +165,8 @@
   if (method->is_native()) {
     // Prior to calling into the runtime to notify the method exit the possible
     // result value is saved into the interpreter frame.
-#ifdef CC_INTERP
-    interpreterState istate = get_interpreterState();
-    address lresult = (address)istate + in_bytes(BytecodeInterpreter::native_lresult_offset());
-    address fresult = (address)istate + in_bytes(BytecodeInterpreter::native_fresult_offset());
-#else
     address lresult = (address)&(get_ijava_state()->lresult);
     address fresult = (address)&(get_ijava_state()->fresult);
-#endif
 
     switch (method->result_type()) {
       case T_OBJECT:
@@ -226,31 +217,6 @@
 
 void frame::describe_pd(FrameValues& values, int frame_no) {
   if (is_interpreted_frame()) {
-#ifdef CC_INTERP
-    interpreterState istate = get_interpreterState();
-    values.describe(frame_no, (intptr_t*)istate, "istate");
-    values.describe(frame_no, (intptr_t*)&(istate->_thread), " thread");
-    values.describe(frame_no, (intptr_t*)&(istate->_bcp), " bcp");
-    values.describe(frame_no, (intptr_t*)&(istate->_locals), " locals");
-    values.describe(frame_no, (intptr_t*)&(istate->_constants), " constants");
-    values.describe(frame_no, (intptr_t*)&(istate->_method), err_msg(" method = %s", istate->_method->name_and_sig_as_C_string()));
-    values.describe(frame_no, (intptr_t*)&(istate->_mdx), " mdx");
-    values.describe(frame_no, (intptr_t*)&(istate->_stack), " stack");
-    values.describe(frame_no, (intptr_t*)&(istate->_msg), err_msg(" msg = %s", BytecodeInterpreter::C_msg(istate->_msg)));
-    values.describe(frame_no, (intptr_t*)&(istate->_result), " result");
-    values.describe(frame_no, (intptr_t*)&(istate->_prev_link), " prev_link");
-    values.describe(frame_no, (intptr_t*)&(istate->_oop_temp), " oop_temp");
-    values.describe(frame_no, (intptr_t*)&(istate->_stack_base), " stack_base");
-    values.describe(frame_no, (intptr_t*)&(istate->_stack_limit), " stack_limit");
-    values.describe(frame_no, (intptr_t*)&(istate->_monitor_base), " monitor_base");
-    values.describe(frame_no, (intptr_t*)&(istate->_frame_bottom), " frame_bottom");
-    values.describe(frame_no, (intptr_t*)&(istate->_last_Java_pc), " last_Java_pc");
-    values.describe(frame_no, (intptr_t*)&(istate->_last_Java_fp), " last_Java_fp");
-    values.describe(frame_no, (intptr_t*)&(istate->_last_Java_sp), " last_Java_sp");
-    values.describe(frame_no, (intptr_t*)&(istate->_self_link), " self_link");
-    values.describe(frame_no, (intptr_t*)&(istate->_native_fresult), " native_fresult");
-    values.describe(frame_no, (intptr_t*)&(istate->_native_lresult), " native_lresult");
-#else
 #define DESCRIBE_ADDRESS(name) \
   values.describe(frame_no, (intptr_t*)&(get_ijava_state()->name), #name);
 
@@ -266,7 +232,6 @@
       DESCRIBE_ADDRESS(oop_tmp);
       DESCRIBE_ADDRESS(lresult);
       DESCRIBE_ADDRESS(fresult);
-#endif
   }
 }
 #endif
--- a/hotspot/src/cpu/ppc/vm/frame_ppc.hpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/frame_ppc.hpp	Thu Dec 10 16:18:25 2015 +0100
@@ -193,33 +193,48 @@
   #define _spill_nonvolatiles_neg(_component) \
      (int)(-frame::spill_nonvolatiles_size + offset_of(frame::spill_nonvolatiles, _component))
 
-
-
-#ifndef CC_INTERP
-  //  Frame layout for the Java template interpreter on PPC64.
+  // Frame layout for the Java template interpreter on PPC64.
+  //
+  // In these figures the stack grows upwards, while memory grows
+  // downwards. Square brackets denote regions possibly larger than
+  // single 64 bit slots.
   //
-  //  Diffs to the CC_INTERP are marked with 'X'.
+  //  STACK (interpreter is active):
+  //    0       [TOP_IJAVA_FRAME]
+  //            [PARENT_IJAVA_FRAME]
+  //            ...
+  //            [PARENT_IJAVA_FRAME]
+  //            [ENTRY_FRAME]
+  //            [C_FRAME]
+  //            ...
+  //            [C_FRAME]
   //
+  //  With the following frame layouts:
   //  TOP_IJAVA_FRAME:
-  //
   //    0       [TOP_IJAVA_FRAME_ABI]
   //            alignment (optional)
   //            [operand stack]
   //            [monitors] (optional)
-  //           X[IJAVA_STATE]
+  //            [IJAVA_STATE]
   //            note: own locals are located in the caller frame.
   //
   //  PARENT_IJAVA_FRAME:
-  //
   //    0       [PARENT_IJAVA_FRAME_ABI]
   //            alignment (optional)
   //            [callee's Java result]
   //            [callee's locals w/o arguments]
   //            [outgoing arguments]
   //            [used part of operand stack w/o arguments]
-  //            [monitors]      (optional)
-  //           X[IJAVA_STATE]
+  //            [monitors] (optional)
+  //            [IJAVA_STATE]
   //
+  //  ENTRY_FRAME:
+  //    0       [PARENT_IJAVA_FRAME_ABI]
+  //            alignment (optional)
+  //            [callee's Java result]
+  //            [callee's locals w/o arguments]
+  //            [outgoing arguments]
+  //            [ENTRY_FRAME_LOCALS]
 
   struct parent_ijava_frame_abi : abi_minframe {
   };
@@ -269,113 +284,6 @@
 #define _ijava_state_neg(_component) \
         (int) (-frame::ijava_state_size + offset_of(frame::ijava_state, _component))
 
-#else // CC_INTERP:
-
-  //  Frame layout for the Java C++ interpreter on PPC64.
-  //
-  //  This frame layout provides a C-like frame for every Java frame.
-  //
-  //  In these figures the stack grows upwards, while memory grows
-  //  downwards. Square brackets denote regions possibly larger than
-  //  single 64 bit slots.
-  //
-  //  STACK (no JNI, no compiled code, no library calls,
-  //         interpreter-loop is active):
-  //    0       [InterpretMethod]
-  //            [TOP_IJAVA_FRAME]
-  //            [PARENT_IJAVA_FRAME]
-  //            ...
-  //            [PARENT_IJAVA_FRAME]
-  //            [ENTRY_FRAME]
-  //            [C_FRAME]
-  //            ...
-  //            [C_FRAME]
-  //
-  //  TOP_IJAVA_FRAME:
-  //    0       [TOP_IJAVA_FRAME_ABI]
-  //            alignment (optional)
-  //            [operand stack]
-  //            [monitors] (optional)
-  //            [cInterpreter object]
-  //            result, locals, and arguments are in parent frame!
-  //
-  //  PARENT_IJAVA_FRAME:
-  //    0       [PARENT_IJAVA_FRAME_ABI]
-  //            alignment (optional)
-  //            [callee's Java result]
-  //            [callee's locals w/o arguments]
-  //            [outgoing arguments]
-  //            [used part of operand stack w/o arguments]
-  //            [monitors] (optional)
-  //            [cInterpreter object]
-  //
-  //  ENTRY_FRAME:
-  //    0       [PARENT_IJAVA_FRAME_ABI]
-  //            alignment (optional)
-  //            [callee's Java result]
-  //            [callee's locals w/o arguments]
-  //            [outgoing arguments]
-  //            [ENTRY_FRAME_LOCALS]
-  //
-  //  PARENT_IJAVA_FRAME_ABI:
-  //    0       [ABI_MINFRAME]
-  //            top_frame_sp
-  //            initial_caller_sp
-  //
-  //  TOP_IJAVA_FRAME_ABI:
-  //    0       [PARENT_IJAVA_FRAME_ABI]
-  //            carg_3_unused
-  //            carg_4_unused
-  //            carg_5_unused
-  //            carg_6_unused
-  //            carg_7_unused
-  //            frame_manager_lr
-  //
-
-  // PARENT_IJAVA_FRAME_ABI
-
-  struct parent_ijava_frame_abi : abi_minframe {
-    // SOE registers.
-    // C2i adapters spill their top-frame stack-pointer here.
-    uint64_t top_frame_sp;                        //      carg_1
-    // Sp of calling compiled frame before it was resized by the c2i
-    // adapter or sp of call stub. Does not contain a valid value for
-    // non-initial frames.
-    uint64_t initial_caller_sp;                   //      carg_2
-    // aligned to frame::alignment_in_bytes (16)
-  };
-
-  enum {
-    parent_ijava_frame_abi_size = sizeof(parent_ijava_frame_abi)
-  };
-
-  #define _parent_ijava_frame_abi(_component) \
-          (offset_of(frame::parent_ijava_frame_abi, _component))
-
-  // TOP_IJAVA_FRAME_ABI
-
-  struct top_ijava_frame_abi : parent_ijava_frame_abi {
-    uint64_t carg_3_unused;                       //      carg_3
-    uint64_t card_4_unused;                       //_16   carg_4
-    uint64_t carg_5_unused;                       //      carg_5
-    uint64_t carg_6_unused;                       //_16   carg_6
-    uint64_t carg_7_unused;                       //      carg_7
-    // Use arg8 for storing frame_manager_lr. The size of
-    // top_ijava_frame_abi must match abi_reg_args.
-    uint64_t frame_manager_lr;                    //_16   carg_8
-    // nothing to add here!
-    // aligned to frame::alignment_in_bytes (16)
-  };
-
-  enum {
-    top_ijava_frame_abi_size = sizeof(top_ijava_frame_abi)
-  };
-
-  #define _top_ijava_frame_abi(_component) \
-          (offset_of(frame::top_ijava_frame_abi, _component))
-
-#endif // CC_INTERP
-
   // ENTRY_FRAME
 
   struct entry_frame_locals {
@@ -496,10 +404,6 @@
 
  public:
 
-#ifdef CC_INTERP
-  // Additional interface for interpreter frames:
-  inline interpreterState get_interpreterState() const;
-#else
   inline ijava_state* get_ijava_state() const;
   // Some convenient register frame setters/getters for deoptimization.
   inline intptr_t* interpreter_frame_esp() const;
@@ -507,7 +411,6 @@
   inline void interpreter_frame_set_esp(intptr_t* esp);
   inline void interpreter_frame_set_top_frame_sp(intptr_t* top_frame_sp);
   inline void interpreter_frame_set_sender_sp(intptr_t* sender_sp);
-#endif // CC_INTERP
 
   // Size of a monitor in bytes.
   static int interpreter_frame_monitor_size_in_bytes();
--- a/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp	Thu Dec 10 16:18:25 2015 +0100
@@ -123,84 +123,6 @@
   return fp();
 }
 
-#ifdef CC_INTERP
-
-inline interpreterState frame::get_interpreterState() const {
-  return (interpreterState)(((address)callers_abi())
-                            - frame::interpreter_frame_cinterpreterstate_size_in_bytes());
-}
-
-inline intptr_t** frame::interpreter_frame_locals_addr() const {
-  interpreterState istate = get_interpreterState();
-  return (intptr_t**)&istate->_locals;
-}
-
-inline intptr_t* frame::interpreter_frame_bcp_addr() const {
-  interpreterState istate = get_interpreterState();
-  return (intptr_t*)&istate->_bcp;
-}
-
-inline intptr_t* frame::interpreter_frame_mdp_addr() const {
-  interpreterState istate = get_interpreterState();
-  return (intptr_t*)&istate->_mdx;
-}
-
-inline intptr_t* frame::interpreter_frame_expression_stack() const {
-  return (intptr_t*)interpreter_frame_monitor_end() - 1;
-}
-
-inline jint frame::interpreter_frame_expression_stack_direction() {
-  return -1;
-}
-
-// top of expression stack
-inline intptr_t* frame::interpreter_frame_tos_address() const {
-  interpreterState istate = get_interpreterState();
-  return istate->_stack + 1;
-}
-
-inline intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
-  return &interpreter_frame_tos_address()[offset];
-}
-
-// monitor elements
-
-// in keeping with Intel side: end is lower in memory than begin;
-// and beginning element is oldest element
-// Also begin is one past last monitor.
-
-inline BasicObjectLock* frame::interpreter_frame_monitor_begin() const {
-  return get_interpreterState()->monitor_base();
-}
-
-inline BasicObjectLock* frame::interpreter_frame_monitor_end() const {
-  return (BasicObjectLock*)get_interpreterState()->stack_base();
-}
-
-inline int frame::interpreter_frame_cinterpreterstate_size_in_bytes() {
-  // Size of an interpreter object. Not aligned with frame size.
-  return round_to(sizeof(BytecodeInterpreter), 8);
-}
-
-inline Method** frame::interpreter_frame_method_addr() const {
-  interpreterState istate = get_interpreterState();
-  return &istate->_method;
-}
-
-// Constant pool cache
-
-inline ConstantPoolCache** frame::interpreter_frame_cpoolcache_addr() const {
-  interpreterState istate = get_interpreterState();
-  return &istate->_constants; // should really use accessor
-}
-
-inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const {
-  interpreterState istate = get_interpreterState();
-  return &istate->_constants;
-}
-
-#else // !CC_INTERP
-
 // Template Interpreter frame value accessors.
 
 inline frame::ijava_state* frame::get_ijava_state() const {
@@ -267,8 +189,6 @@
   return &interpreter_frame_tos_address()[offset];
 }
 
-#endif // CC_INTERP
-
 inline int frame::interpreter_frame_monitor_size() {
   // Number of stack slots for a monitor.
   return round_to(BasicObjectLock::size(),  // number of stack slots
--- a/hotspot/src/cpu/ppc/vm/globalDefinitions_ppc.hpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/globalDefinitions_ppc.hpp	Thu Dec 10 16:18:25 2015 +0100
@@ -26,6 +26,10 @@
 #ifndef CPU_PPC_VM_GLOBALDEFINITIONS_PPC_HPP
 #define CPU_PPC_VM_GLOBALDEFINITIONS_PPC_HPP
 
+#ifdef CC_INTERP
+#error "CC_INTERP no more supported. Removed in change 8145117."
+#endif
+
 // Size of PPC Instructions
 const int BytesPerInstWord = 4;
 
--- a/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012, 2015 SAP AG. All rights reserved.
+ * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
  * 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,11 +38,7 @@
 #endif
 
 void InterpreterMacroAssembler::null_check_throw(Register a, int offset, Register temp_reg) {
-#ifdef CC_INTERP
-  address exception_entry = StubRoutines::throw_NullPointerException_at_call_entry();
-#else
   address exception_entry = Interpreter::throw_NullPointerException_entry();
-#endif
   MacroAssembler::null_check_throw(a, offset, temp_reg, exception_entry);
 }
 
@@ -57,8 +53,6 @@
   }
 }
 
-#ifndef CC_INTERP
-
 void InterpreterMacroAssembler::dispatch_next(TosState state, int bcp_incr) {
   Register bytecode = R12_scratch2;
   if (bcp_incr != 0) {
@@ -207,7 +201,8 @@
   }
 }
 
-void InterpreterMacroAssembler::dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify) {
+void InterpreterMacroAssembler::dispatch_Lbyte_code(TosState state, Register bytecode,
+                                                    address* table, bool verify) {
   if (verify) {
     unimplemented("dispatch_Lbyte_code: verify"); // See Sparc Implementation to implement this
   }
@@ -394,7 +389,8 @@
 //
 // Kills / writes:
 //   - Rdst, Rscratch
-void InterpreterMacroAssembler::get_cache_index_at_bcp(Register Rdst, int bcp_offset, size_t index_size) {
+void InterpreterMacroAssembler::get_cache_index_at_bcp(Register Rdst, int bcp_offset,
+                                                       size_t index_size) {
   assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
   // Cache index is always in the native format, courtesy of Rewriter.
   if (index_size == sizeof(u2)) {
@@ -416,7 +412,8 @@
   // Rdst now contains cp cache index.
 }
 
-void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, int bcp_offset, size_t index_size) {
+void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, int bcp_offset,
+                                                           size_t index_size) {
   get_cache_index_at_bcp(cache, bcp_offset, index_size);
   sldi(cache, cache, exact_log2(in_words(ConstantPoolCacheEntry::size()) * BytesPerWord));
   add(cache, R27_constPoolCache, cache);
@@ -514,7 +511,8 @@
 // and put arrayOop + shifted_index into res.
 // Note: res is still shy of address by array offset into object.
 
-void InterpreterMacroAssembler::index_check_without_pop(Register Rarray, Register Rindex, int index_shift, Register Rtmp, Register Rres) {
+void InterpreterMacroAssembler::index_check_without_pop(Register Rarray, Register Rindex,
+                                                        int index_shift, Register Rtmp, Register Rres) {
   // Check that index is in range for array, then shift index by index_shift,
   // and put arrayOop + shifted_index into res.
   // Note: res is still shy of address by array offset into object.
@@ -566,7 +564,8 @@
   add(Rres, RsxtIndex, Rarray);
 }
 
-void InterpreterMacroAssembler::index_check(Register array, Register index, int index_shift, Register tmp, Register res) {
+void InterpreterMacroAssembler::index_check(Register array, Register index,
+                                            int index_shift, Register tmp, Register res) {
   // pop array
   pop_ptr(array);
 
@@ -637,7 +636,8 @@
     Label Lunlock;
     // If it's still locked, everything is ok, unlock it.
     ld(Rmonitor_base, 0, R1_SP);
-    addi(Rmonitor_base, Rmonitor_base, - (frame::ijava_state_size + frame::interpreter_frame_monitor_size_in_bytes())); // Monitor base
+    addi(Rmonitor_base, Rmonitor_base,
+         -(frame::ijava_state_size + frame::interpreter_frame_monitor_size_in_bytes())); // Monitor base
 
     ld(R0, BasicObjectLock::obj_offset_in_bytes(), Rmonitor_base);
     cmpdi(CCR0, R0, 0);
@@ -677,7 +677,8 @@
       subf_(Riterations, R26_monitor, Rmonitor_base);
       ble(CCR0, Lno_unlock);
 
-      addi(Rcurrent_obj_addr, Rmonitor_base, BasicObjectLock::obj_offset_in_bytes() - frame::interpreter_frame_monitor_size_in_bytes());
+      addi(Rcurrent_obj_addr, Rmonitor_base,
+           BasicObjectLock::obj_offset_in_bytes() - frame::interpreter_frame_monitor_size_in_bytes());
       // Check if any monitor is on stack, bail out if not
       srdi(Riterations, Riterations, exact_log2(delta));
       mtctr(Riterations);
@@ -727,7 +728,8 @@
 }
 
 // Support function for remove_activation & Co.
-void InterpreterMacroAssembler::merge_frames(Register Rsender_sp, Register return_pc, Register Rscratch1, Register Rscratch2) {
+void InterpreterMacroAssembler::merge_frames(Register Rsender_sp, Register return_pc,
+                                             Register Rscratch1, Register Rscratch2) {
   // Pop interpreter frame.
   ld(Rscratch1, 0, R1_SP); // *SP
   ld(Rsender_sp, _ijava_state_neg(sender_sp), Rscratch1); // top_frame_sp
@@ -779,8 +781,6 @@
   mtlr(R0);
 }
 
-#endif // !CC_INTERP
-
 // Lock object
 //
 // Registers alive
@@ -791,7 +791,7 @@
 void InterpreterMacroAssembler::lock_object(Register monitor, Register object) {
   if (UseHeavyMonitors) {
     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorenter),
-            monitor, /*check_for_exceptions=*/true CC_INTERP_ONLY(&& false));
+            monitor, /*check_for_exceptions=*/true);
   } else {
     // template code:
     //
@@ -888,7 +888,7 @@
     // slow case of monitor enter.
     bind(slow_case);
     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorenter),
-            monitor, /*check_for_exceptions=*/true CC_INTERP_ONLY(&& false));
+            monitor, /*check_for_exceptions=*/true);
     // }
     align(32, 12);
     bind(done);
@@ -905,7 +905,7 @@
 void InterpreterMacroAssembler::unlock_object(Register monitor, bool check_for_exceptions) {
   if (UseHeavyMonitors) {
     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit),
-            monitor, check_for_exceptions CC_INTERP_ONLY(&& false));
+            monitor, check_for_exceptions);
   } else {
 
     // template code:
@@ -978,7 +978,7 @@
     // we need to get into the slow case.
     bind(slow_case);
     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit),
-            monitor, check_for_exceptions CC_INTERP_ONLY(&& false));
+            monitor, check_for_exceptions);
     // }
 
     Label done;
@@ -993,8 +993,6 @@
   }
 }
 
-#ifndef CC_INTERP
-
 // Load compiled (i2c) or interpreter entry when calling from interpreted and
 // do the call. Centralized so that all interpreter calls will do the same actions.
 // If jvmti single stepping is on for a thread we must not call compiled code.
@@ -1004,7 +1002,8 @@
 //   - Rret_addr:      return address
 //   - 2 scratch regs
 //
-void InterpreterMacroAssembler::call_from_interpreter(Register Rtarget_method, Register Rret_addr, Register Rscratch1, Register Rscratch2) {
+void InterpreterMacroAssembler::call_from_interpreter(Register Rtarget_method, Register Rret_addr,
+                                                      Register Rscratch1, Register Rscratch2) {
   assert_different_registers(Rscratch1, Rscratch2, Rtarget_method, Rret_addr);
   // Assume we want to go compiled if available.
   const Register Rtarget_addr = Rscratch1;
@@ -1488,7 +1487,8 @@
 }
 
 // Count a ret in the bytecodes.
-void InterpreterMacroAssembler::profile_ret(TosState state, Register return_bci, Register scratch1, Register scratch2) {
+void InterpreterMacroAssembler::profile_ret(TosState state, Register return_bci,
+                                            Register scratch1, Register scratch2) {
   if (ProfileInterpreter) {
     Label profile_continue;
     uint row;
@@ -1684,7 +1684,8 @@
 // Argument and return type profilig.
 // kills: tmp, tmp2, R0, CR0, CR1
 void InterpreterMacroAssembler::profile_obj_type(Register obj, Register mdo_addr_base,
-                                                 RegisterOrConstant mdo_addr_offs, Register tmp, Register tmp2) {
+                                                 RegisterOrConstant mdo_addr_offs,
+                                                 Register tmp, Register tmp2) {
   Label do_nothing, do_update;
 
   // tmp2 = obj is allowed
@@ -1730,7 +1731,9 @@
   bind(do_nothing);
 }
 
-void InterpreterMacroAssembler::profile_arguments_type(Register callee, Register tmp1, Register tmp2, bool is_virtual) {
+void InterpreterMacroAssembler::profile_arguments_type(Register callee,
+                                                       Register tmp1, Register tmp2,
+                                                       bool is_virtual) {
   if (!ProfileInterpreter) {
     return;
   }
@@ -1742,7 +1745,8 @@
 
     test_method_data_pointer(profile_continue);
 
-    int off_to_start = is_virtual ? in_bytes(VirtualCallData::virtual_call_data_size()) : in_bytes(CounterData::counter_data_size());
+    int off_to_start = is_virtual ?
+      in_bytes(VirtualCallData::virtual_call_data_size()) : in_bytes(CounterData::counter_data_size());
 
     lbz(tmp1, in_bytes(DataLayout::tag_offset()) - off_to_start, R28_mdx);
     cmpwi(CCR0, tmp1, is_virtual ? DataLayout::virtual_call_type_data_tag : DataLayout::call_type_data_tag);
@@ -1792,7 +1796,8 @@
         // argument. tmp1 is the number of cells left in the
         // CallTypeData/VirtualCallTypeData to reach its end. Non null
         // if there's a return to profile.
-        assert(ReturnTypeEntry::static_cell_count() < TypeStackSlotEntries::per_arg_count(), "can't move past ret type");
+        assert(ReturnTypeEntry::static_cell_count() < TypeStackSlotEntries::per_arg_count(),
+               "can't move past ret type");
         sldi(tmp1, tmp1, exact_log2(DataLayout::cell_size));
         add(R28_mdx, tmp1, R28_mdx);
       }
@@ -1841,7 +1846,8 @@
   }
 }
 
-void InterpreterMacroAssembler::profile_parameters_type(Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
+void InterpreterMacroAssembler::profile_parameters_type(Register tmp1, Register tmp2,
+                                                        Register tmp3, Register tmp4) {
   if (ProfileInterpreter && MethodData::profile_parameters()) {
     Label profile_continue, done;
 
@@ -1984,7 +1990,9 @@
 // Kills:
 //   - Rdst_value
 //   - Rdst_address
-void InterpreterMacroAssembler::load_local_ptr(Register Rdst_value, Register Rdst_address, Register Rindex) {
+void InterpreterMacroAssembler::load_local_ptr(Register Rdst_value,
+                                               Register Rdst_address,
+                                               Register Rindex) {
   sldi(Rdst_address, Rindex, Interpreter::logStackElementSize);
   subf(Rdst_address, Rdst_address, R18_locals);
   ld(Rdst_value, 0, Rdst_address);
@@ -1995,7 +2003,9 @@
 // Kills:
 //   - Rdst_value
 //   - Rdst_address
-void InterpreterMacroAssembler::load_local_float(FloatRegister Rdst_value, Register Rdst_address, Register Rindex) {
+void InterpreterMacroAssembler::load_local_float(FloatRegister Rdst_value,
+                                                 Register Rdst_address,
+                                                 Register Rindex) {
   sldi(Rdst_address, Rindex, Interpreter::logStackElementSize);
   subf(Rdst_address, Rdst_address, R18_locals);
   lfs(Rdst_value, 0, Rdst_address);
@@ -2006,7 +2016,9 @@
 // Kills:
 //   - Rdst_value
 //   - Rdst_address
-void InterpreterMacroAssembler::load_local_double(FloatRegister Rdst_value, Register Rdst_address, Register Rindex) {
+void InterpreterMacroAssembler::load_local_double(FloatRegister Rdst_value,
+                                                  Register Rdst_address,
+                                                  Register Rindex) {
   sldi(Rdst_address, Rindex, Interpreter::logStackElementSize);
   subf(Rdst_address, Rdst_address, R18_locals);
   lfd(Rdst_value, -8, Rdst_address);
@@ -2102,13 +2114,16 @@
   }
 }
 
-void InterpreterMacroAssembler::call_VM(Register oop_result, address entry_point, Register arg_1, bool check_exceptions) {
+void InterpreterMacroAssembler::call_VM(Register oop_result, address entry_point,
+                                        Register arg_1, bool check_exceptions) {
   // ARG1 is reserved for the thread.
   mr_if_needed(R4_ARG2, arg_1);
   call_VM(oop_result, entry_point, check_exceptions);
 }
 
-void InterpreterMacroAssembler::call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, bool check_exceptions) {
+void InterpreterMacroAssembler::call_VM(Register oop_result, address entry_point,
+                                        Register arg_1, Register arg_2,
+                                        bool check_exceptions) {
   // ARG1 is reserved for the thread.
   mr_if_needed(R4_ARG2, arg_1);
   assert(arg_2 != R4_ARG2, "smashed argument");
@@ -2116,7 +2131,9 @@
   call_VM(oop_result, entry_point, check_exceptions);
 }
 
-void InterpreterMacroAssembler::call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, Register arg_3, bool check_exceptions) {
+void InterpreterMacroAssembler::call_VM(Register oop_result, address entry_point,
+                                        Register arg_1, Register arg_2, Register arg_3,
+                                        bool check_exceptions) {
   // ARG1 is reserved for the thread.
   mr_if_needed(R4_ARG2, arg_1);
   assert(arg_2 != R4_ARG2, "smashed argument");
@@ -2168,8 +2185,6 @@
 #endif
 }
 
-#endif // !CC_INTERP
-
 void InterpreterMacroAssembler::get_method_counters(Register method,
                                                     Register Rcounters,
                                                     Label& skip) {
@@ -2188,7 +2203,9 @@
   bind(has_counters);
 }
 
-void InterpreterMacroAssembler::increment_invocation_counter(Register Rcounters, Register iv_be_count, Register Rtmp_r0) {
+void InterpreterMacroAssembler::increment_invocation_counter(Register Rcounters,
+                                                             Register iv_be_count,
+                                                             Register Rtmp_r0) {
   assert(UseCompiler || LogTouchedMethods, "incrementing must be useful");
   Register invocation_count = iv_be_count;
   Register backedge_count   = Rtmp_r0;
@@ -2230,7 +2247,6 @@
   if (state == atos) { MacroAssembler::verify_oop(reg); }
 }
 
-#ifndef CC_INTERP
 // Local helper function for the verify_oop_or_return_address macro.
 static bool verify_return_address(Method* m, int bci) {
 #ifndef PRODUCT
@@ -2287,7 +2303,6 @@
   verify_oop(reg);
   bind(skip);
 }
-#endif // !CC_INTERP
 
 // Inline assembly for:
 //
@@ -2311,7 +2326,7 @@
     cmpwi(CCR0, R0, 0);
     beq(CCR0, jvmti_post_done);
     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_entry),
-            /*check_exceptions=*/true CC_INTERP_ONLY(&& false));
+            /*check_exceptions=*/true);
 
     bind(jvmti_post_done);
   }
@@ -2345,11 +2360,10 @@
     lwz(R0, in_bytes(JavaThread::interp_only_mode_offset()), R16_thread);
     cmpwi(CCR0, R0, 0);
     beq(CCR0, jvmti_post_done);
-    CC_INTERP_ONLY(assert(is_native_method && !check_exceptions, "must not push state"));
-    if (!is_native_method) push(state); // Expose tos to GC.
+    if (!is_native_method) { push(state); } // Expose tos to GC.
     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_exit),
             /*check_exceptions=*/check_exceptions);
-    if (!is_native_method) pop(state);
+    if (!is_native_method) { pop(state); }
 
     align(32, 12);
     bind(jvmti_post_done);
@@ -2358,124 +2372,3 @@
   // Dtrace support not implemented.
 }
 
-#ifdef CC_INTERP
-// Convert the current TOP_IJAVA_FRAME into a PARENT_IJAVA_FRAME
-// (using parent_frame_resize) and push a new interpreter
-// TOP_IJAVA_FRAME (using frame_size).
-void InterpreterMacroAssembler::push_interpreter_frame(Register top_frame_size, Register parent_frame_resize,
-                                                       Register tmp1, Register tmp2, Register tmp3,
-                                                       Register tmp4, Register pc) {
-  assert_different_registers(top_frame_size, parent_frame_resize, tmp1, tmp2, tmp3, tmp4);
-  ld(tmp1, _top_ijava_frame_abi(frame_manager_lr), R1_SP);
-  mr(tmp2/*top_frame_sp*/, R1_SP);
-  // Move initial_caller_sp.
-  ld(tmp4, _top_ijava_frame_abi(initial_caller_sp), R1_SP);
-  neg(parent_frame_resize, parent_frame_resize);
-  resize_frame(parent_frame_resize/*-parent_frame_resize*/, tmp3);
-
-  // Set LR in new parent frame.
-  std(tmp1, _abi(lr), R1_SP);
-  // Set top_frame_sp info for new parent frame.
-  std(tmp2, _parent_ijava_frame_abi(top_frame_sp), R1_SP);
-  std(tmp4, _parent_ijava_frame_abi(initial_caller_sp), R1_SP);
-
-  // Push new TOP_IJAVA_FRAME.
-  push_frame(top_frame_size, tmp2);
-
-  get_PC_trash_LR(tmp3);
-  std(tmp3, _top_ijava_frame_abi(frame_manager_lr), R1_SP);
-  // Used for non-initial callers by unextended_sp().
-  std(R1_SP, _top_ijava_frame_abi(initial_caller_sp), R1_SP);
-}
-
-// Pop the topmost TOP_IJAVA_FRAME and convert the previous
-// PARENT_IJAVA_FRAME back into a TOP_IJAVA_FRAME.
-void InterpreterMacroAssembler::pop_interpreter_frame(Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
-  assert_different_registers(tmp1, tmp2, tmp3, tmp4);
-
-  ld(tmp1/*caller's sp*/, _abi(callers_sp), R1_SP);
-  ld(tmp3, _abi(lr), tmp1);
-
-  ld(tmp4, _parent_ijava_frame_abi(initial_caller_sp), tmp1);
-
-  ld(tmp2/*caller's caller's sp*/, _abi(callers_sp), tmp1);
-  // Merge top frame.
-  std(tmp2, _abi(callers_sp), R1_SP);
-
-  ld(tmp2, _parent_ijava_frame_abi(top_frame_sp), tmp1);
-
-  // Update C stack pointer to caller's top_abi.
-  resize_frame_absolute(tmp2/*addr*/, tmp1/*tmp*/, tmp2/*tmp*/);
-
-  // Update LR in top_frame.
-  std(tmp3, _top_ijava_frame_abi(frame_manager_lr), R1_SP);
-
-  std(tmp4, _top_ijava_frame_abi(initial_caller_sp), R1_SP);
-
-  // Store the top-frame stack-pointer for c2i adapters.
-  std(R1_SP, _top_ijava_frame_abi(top_frame_sp), R1_SP);
-}
-
-// Turn state's interpreter frame into the current TOP_IJAVA_FRAME.
-void InterpreterMacroAssembler::pop_interpreter_frame_to_state(Register state, Register tmp1, Register tmp2, Register tmp3) {
-  assert_different_registers(R14_state, R15_prev_state, tmp1, tmp2, tmp3);
-
-  if (state == R14_state) {
-    ld(tmp1/*state's fp*/, state_(_last_Java_fp));
-    ld(tmp2/*state's sp*/, state_(_last_Java_sp));
-  } else if (state == R15_prev_state) {
-    ld(tmp1/*state's fp*/, prev_state_(_last_Java_fp));
-    ld(tmp2/*state's sp*/, prev_state_(_last_Java_sp));
-  } else {
-    ShouldNotReachHere();
-  }
-
-  // Merge top frames.
-  std(tmp1, _abi(callers_sp), R1_SP);
-
-  // Tmp2 is new SP.
-  // Tmp1 is parent's SP.
-  resize_frame_absolute(tmp2/*addr*/, tmp1/*tmp*/, tmp2/*tmp*/);
-
-  // Update LR in top_frame.
-  // Must be interpreter frame.
-  get_PC_trash_LR(tmp3);
-  std(tmp3, _top_ijava_frame_abi(frame_manager_lr), R1_SP);
-  // Used for non-initial callers by unextended_sp().
-  std(R1_SP, _top_ijava_frame_abi(initial_caller_sp), R1_SP);
-}
-
-// Set SP to initial caller's sp, but before fix the back chain.
-void InterpreterMacroAssembler::resize_frame_to_initial_caller(Register tmp1, Register tmp2) {
-  ld(tmp1, _parent_ijava_frame_abi(initial_caller_sp), R1_SP);
-  ld(tmp2, _parent_ijava_frame_abi(callers_sp), R1_SP);
-  std(tmp2, _parent_ijava_frame_abi(callers_sp), tmp1); // Fix back chain ...
-  mr(R1_SP, tmp1); // ... and resize to initial caller.
-}
-
-// Pop the current interpreter state (without popping the correspoding
-// frame) and restore R14_state and R15_prev_state accordingly.
-// Use prev_state_may_be_0 to indicate whether prev_state may be 0
-// in order to generate an extra check before retrieving prev_state_(_prev_link).
-void InterpreterMacroAssembler::pop_interpreter_state(bool prev_state_may_be_0)
-{
-  // Move prev_state to state and restore prev_state from state_(_prev_link).
-  Label prev_state_is_0;
-  mr(R14_state, R15_prev_state);
-
-  // Don't retrieve /*state==*/prev_state_(_prev_link)
-  // if /*state==*/prev_state is 0.
-  if (prev_state_may_be_0) {
-    cmpdi(CCR0, R15_prev_state, 0);
-    beq(CCR0, prev_state_is_0);
-  }
-
-  ld(R15_prev_state, /*state==*/prev_state_(_prev_link));
-  bind(prev_state_is_0);
-}
-
-void InterpreterMacroAssembler::restore_prev_state() {
-  // _prev_link is private, but cInterpreter is a friend.
-  ld(R15_prev_state, state_(_prev_link));
-}
-#endif // CC_INTERP
--- a/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.hpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.hpp	Thu Dec 10 16:18:25 2015 +0100
@@ -45,14 +45,6 @@
 #define thread_(field_name) in_bytes(JavaThread::field_name ## _offset()), R16_thread
 #define method_(field_name) in_bytes(Method::field_name ## _offset()), R19_method
 
-#ifdef CC_INTERP
-#define state_(field_name)  in_bytes(byte_offset_of(BytecodeInterpreter, field_name)), R14_state
-#define prev_state_(field_name)  in_bytes(byte_offset_of(BytecodeInterpreter, field_name)), R15_prev_state
-  void pop (TosState state) {};           // Not needed.
-  void push(TosState state) {};           // Not needed.
-#endif
-
-#ifndef CC_INTERP
   virtual void check_and_handle_popframe(Register java_thread);
   virtual void check_and_handle_earlyret(Register java_thread);
 
@@ -207,7 +199,6 @@
 
   void record_static_call_in_profile(Register Rentry, Register Rtmp);
   void record_receiver_call_in_profile(Register Rklass, Register Rentry, Register Rtmp);
-#endif // !CC_INTERP
 
   void get_method_counters(Register method, Register Rcounters, Label& skip);
   void increment_invocation_counter(Register iv_be_count, Register Rtmp1, Register Rtmp2_r0);
@@ -216,8 +207,6 @@
   void lock_object  (Register lock_reg, Register obj_reg);
   void unlock_object(Register lock_reg, bool check_for_exceptions = true);
 
-#ifndef CC_INTERP
-
   // Interpreter profiling operations
   void set_method_data_pointer_for_bcp();
   void test_method_data_pointer(Label& zero_continue);
@@ -260,14 +249,10 @@
   void profile_return_type(Register ret, Register tmp1, Register tmp2);
   void profile_parameters_type(Register tmp1, Register tmp2, Register tmp3, Register tmp4);
 
-#endif // !CC_INTERP
-
   // Debugging
   void verify_oop(Register reg, TosState state = atos);    // only if +VerifyOops && state == atos
-#ifndef CC_INTERP
   void verify_oop_or_return_address(Register reg, Register rtmp); // for astore
   void verify_FPU(int stack_depth, TosState state = ftos);
-#endif // !CC_INTERP
 
   typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode;
 
@@ -275,33 +260,6 @@
   void notify_method_entry();
   void notify_method_exit(bool is_native_method, TosState state,
                           NotifyMethodExitMode mode, bool check_exceptions);
-
-#ifdef CC_INTERP
-  // Convert the current TOP_IJAVA_FRAME into a PARENT_IJAVA_FRAME
-  // (using parent_frame_resize) and push a new interpreter
-  // TOP_IJAVA_FRAME (using frame_size).
-  void push_interpreter_frame(Register top_frame_size, Register parent_frame_resize,
-                              Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register pc=noreg);
-
-  // Pop the topmost TOP_IJAVA_FRAME and convert the previous
-  // PARENT_IJAVA_FRAME back into a TOP_IJAVA_FRAME.
-  void pop_interpreter_frame(Register tmp1, Register tmp2, Register tmp3, Register tmp4);
-
-  // Turn state's interpreter frame into the current TOP_IJAVA_FRAME.
-  void pop_interpreter_frame_to_state(Register state, Register tmp1, Register tmp2, Register tmp3);
-
-  // Set SP to initial caller's sp, but before fix the back chain.
-  void resize_frame_to_initial_caller(Register tmp1, Register tmp2);
-
-  // Pop the current interpreter state (without popping the
-  // correspoding frame) and restore R14_state and R15_prev_state
-  // accordingly. Use prev_state_may_be_0 to indicate whether
-  // prev_state may be 0 in order to generate an extra check before
-  // retrieving prev_state_(_prev_link).
-  void pop_interpreter_state(bool prev_state_may_be_0);
-
-  void restore_prev_state();
-#endif
 };
 
 #endif // CPU_PPC_VM_INTERP_MASM_PPC_64_HPP
--- a/hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -457,17 +457,12 @@
   // Reset JavaFrameAnchor from call_VM_leaf above.
   __ reset_last_Java_frame();
 
-#ifdef CC_INTERP
-  // Return to frame manager, it will handle the pending exception.
-  __ blr();
-#else
   // We don't know our caller, so jump to the general forward exception stub,
   // which will also pop our full frame off. Satisfy the interface of
   // SharedRuntime::generate_forward_exception()
   __ load_const_optimized(R11_scratch1, StubRoutines::forward_exception_entry(), R0);
   __ mtctr(R11_scratch1);
   __ bctr();
-#endif
 
   return entry;
 }
@@ -518,7 +513,7 @@
     // continue and the thread will safepoint at the next bytecode dispatch.
 
     // If the receiver is null then it is OK to jump to the slow path.
-    __ ld(R3_RET, Interpreter::stackElementSize, CC_INTERP_ONLY(R17_tos) NOT_CC_INTERP(R15_esp)); // get receiver
+    __ ld(R3_RET, Interpreter::stackElementSize, R15_esp); // get receiver
 
     // Check if receiver == NULL and go the slow path.
     __ cmpdi(CCR0, R3_RET, 0);
--- a/hotspot/src/cpu/ppc/vm/interpreter_ppc.hpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/interpreter_ppc.hpp	Thu Dec 10 16:18:25 2015 +0100
@@ -39,12 +39,10 @@
     return stackElementWords * i;
   }
 
-#ifndef CC_INTERP
   // The offset in bytes to access a expression stack slot
   // relative to the esp pointer.
   static int expr_offset_in_bytes(int slot) {
     return stackElementSize * slot + wordSize;
   }
-#endif
 
 #endif // CPU_PPC_VM_INTERPRETER_PPC_HPP
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -2822,12 +2822,8 @@
   // sp points to a TOP_IJAVA_FRAME, retrieve frame's PC via
   // TOP_IJAVA_FRAME_ABI.
   // FIXME: assert that we really have a TOP_IJAVA_FRAME here!
-#ifdef CC_INTERP
-  ld(tmp1/*pc*/, _top_ijava_frame_abi(frame_manager_lr), sp);
-#else
   address entry = pc();
   load_const_optimized(tmp1, entry);
-#endif
 
   set_last_Java_frame(/*sp=*/sp, /*pc=*/tmp1);
 }
--- a/hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012, 2014 SAP AG. All rights reserved.
+ * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,12 +32,6 @@
 
 #define __ _masm->
 
-#ifdef CC_INTERP
-#define EXCEPTION_ENTRY StubRoutines::throw_NullPointerException_at_call_entry()
-#else
-#define EXCEPTION_ENTRY Interpreter::throw_NullPointerException_entry()
-#endif
-
 #ifdef PRODUCT
 #define BLOCK_COMMENT(str) // nothing
 #else
@@ -51,10 +45,12 @@
   return RegisterOrConstant(value);
 }
 
-void MethodHandles::load_klass_from_Class(MacroAssembler* _masm, Register klass_reg, Register temp_reg, Register temp2_reg) {
-  if (VerifyMethodHandles)
-    verify_klass(_masm, klass_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_Class), temp_reg, temp2_reg,
-                 "MH argument is a Class");
+void MethodHandles::load_klass_from_Class(MacroAssembler* _masm, Register klass_reg,
+                                          Register temp_reg, Register temp2_reg) {
+  if (VerifyMethodHandles) {
+    verify_klass(_masm, klass_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_Class),
+                 temp_reg, temp2_reg, "MH argument is a Class");
+  }
   __ ld(klass_reg, java_lang_Class::klass_offset_in_bytes(), klass_reg);
 }
 
@@ -187,7 +183,7 @@
                         sizeof(u2), /*is_signed*/ false);
     // assert(sizeof(u2) == sizeof(ConstMethod::_size_of_parameters), "");
     Label L;
-    __ ld(temp2, __ argument_offset(temp2, temp2, 0), CC_INTERP_ONLY(R17_tos) NOT_CC_INTERP(R15_esp));
+    __ ld(temp2, __ argument_offset(temp2, temp2, 0), R15_esp);
     __ cmpd(CCR1, temp2, recv);
     __ beq(CCR1, L);
     __ stop("receiver not on stack");
@@ -214,7 +210,7 @@
     return NULL;
   }
 
-  Register argbase    = CC_INTERP_ONLY(R17_tos) NOT_CC_INTERP(R15_esp); // parameter (preserved)
+  Register argbase    = R15_esp; // parameter (preserved)
   Register argslot    = R3;
   Register temp1      = R6;
   Register param_size = R7;
@@ -317,10 +313,12 @@
       __ verify_oop(receiver_reg);
       if (iid == vmIntrinsics::_linkToSpecial) {
         // Don't actually load the klass; just null-check the receiver.
-        __ null_check_throw(receiver_reg, -1, temp1, EXCEPTION_ENTRY);
+        __ null_check_throw(receiver_reg, -1, temp1,
+                            Interpreter::throw_NullPointerException_entry());
       } else {
         // load receiver klass itself
-        __ null_check_throw(receiver_reg, oopDesc::klass_offset_in_bytes(), temp1, EXCEPTION_ENTRY);
+        __ null_check_throw(receiver_reg, oopDesc::klass_offset_in_bytes(), temp1,
+                            Interpreter::throw_NullPointerException_entry());
         __ load_klass(temp1_recv_klass, receiver_reg);
         __ verify_klass_ptr(temp1_recv_klass);
       }
--- a/hotspot/src/cpu/ppc/vm/register_ppc.hpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/register_ppc.hpp	Thu Dec 10 16:18:25 2015 +0100
@@ -578,27 +578,17 @@
 
 // Register declarations to be used in frame manager assembly code.
 // Use only non-volatile registers in order to keep values across C-calls.
-#ifdef CC_INTERP
-REGISTER_DECLARATION(Register, R14_state,      R14);      // address of new cInterpreter.
-REGISTER_DECLARATION(Register, R15_prev_state, R15);      // address of old cInterpreter
-#else // CC_INTERP
 REGISTER_DECLARATION(Register, R14_bcp,        R14);
 REGISTER_DECLARATION(Register, R15_esp,        R15);
 REGISTER_DECLARATION(FloatRegister, F15_ftos,  F15);
-#endif // CC_INTERP
 REGISTER_DECLARATION(Register, R16_thread,     R16);      // address of current thread
 REGISTER_DECLARATION(Register, R17_tos,        R17);      // address of Java tos (prepushed).
 REGISTER_DECLARATION(Register, R18_locals,     R18);      // address of first param slot (receiver).
 REGISTER_DECLARATION(Register, R19_method,     R19);      // address of current method
 #ifndef DONT_USE_REGISTER_DEFINES
-#ifdef CC_INTERP
-#define R14_state         AS_REGISTER(Register, R14)
-#define R15_prev_state    AS_REGISTER(Register, R15)
-#else // CC_INTERP
 #define R14_bcp           AS_REGISTER(Register, R14)
 #define R15_esp           AS_REGISTER(Register, R15)
 #define F15_ftos          AS_REGISTER(FloatRegister, F15)
-#endif // CC_INTERP
 #define R16_thread        AS_REGISTER(Register, R16)
 #define R17_tos           AS_REGISTER(Register, R17)
 #define R18_locals        AS_REGISTER(Register, R18)
@@ -619,13 +609,11 @@
 REGISTER_DECLARATION(Register, R27_tmp7, R27);
 REGISTER_DECLARATION(Register, R28_tmp8, R28);
 REGISTER_DECLARATION(Register, R29_tmp9, R29);
-#ifndef CC_INTERP
 REGISTER_DECLARATION(Register, R24_dispatch_addr,     R24);
 REGISTER_DECLARATION(Register, R25_templateTableBase, R25);
 REGISTER_DECLARATION(Register, R26_monitor,           R26);
 REGISTER_DECLARATION(Register, R27_constPoolCache,    R27);
 REGISTER_DECLARATION(Register, R28_mdx,               R28);
-#endif // CC_INTERP
 
 #ifndef DONT_USE_REGISTER_DEFINES
 #define R21_tmp1         AS_REGISTER(Register, R21)
@@ -637,7 +625,6 @@
 #define R27_tmp7         AS_REGISTER(Register, R27)
 #define R28_tmp8         AS_REGISTER(Register, R28)
 #define R29_tmp9         AS_REGISTER(Register, R29)
-#ifndef CC_INTERP
 //    Lmonitors  : monitor pointer
 //    LcpoolCache: constant pool cache
 //    mdx: method data index
@@ -649,7 +636,6 @@
 #endif
 
 #define CCR4_is_synced AS_REGISTER(ConditionRegister, CCR4)
-#endif
 
 // Scratch registers are volatile.
 REGISTER_DECLARATION(Register, R11_scratch1, R11);
--- a/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012, 2015 SAP AG. All rights reserved.
+ * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -954,15 +954,10 @@
 
   // Jump to the interpreter just as if interpreter was doing it.
 
-#ifdef CC_INTERP
-  const Register tos = R17_tos;
-#else
-  const Register tos = R15_esp;
   __ load_const_optimized(R25_templateTableBase, (address)Interpreter::dispatch_table((TosState)0), R11_scratch1);
-#endif
 
   // load TOS
-  __ addi(tos, R1_SP, st_off);
+  __ addi(R15_esp, R1_SP, st_off);
 
   // Frame_manager expects initial_caller_sp (= SP without resize by c2i) in R21_tmp1.
   assert(sender_SP == R21_sender_SP, "passing initial caller's SP in wrong register");
@@ -996,12 +991,7 @@
   // save code can segv when fxsave instructions find improperly
   // aligned stack pointer.
 
-#ifdef CC_INTERP
-  const Register ld_ptr = R17_tos;
-#else
   const Register ld_ptr = R15_esp;
-#endif
-
   const Register value_regs[] = { R22_tmp2, R23_tmp3, R24_tmp4, R25_tmp5, R26_tmp6 };
   const int num_value_regs = sizeof(value_regs) / sizeof(Register);
   int value_regs_index = 0;
@@ -2593,15 +2583,11 @@
   __ ld(frame_size_reg, 0, frame_sizes_reg);
   __ std(pc_reg, _abi(lr), R1_SP);
   __ push_frame(frame_size_reg, R0/*tmp*/);
-#ifdef CC_INTERP
-  __ std(R1_SP, _parent_ijava_frame_abi(initial_caller_sp), R1_SP);
-#else
 #ifdef ASSERT
   __ load_const_optimized(pc_reg, 0x5afe);
   __ std(pc_reg, _ijava_state_neg(ijava_reserved), R1_SP);
 #endif
   __ std(R1_SP, _ijava_state_neg(sender_sp), R1_SP);
-#endif // CC_INTERP
   __ addi(number_of_frames_reg, number_of_frames_reg, -1);
   __ addi(frame_sizes_reg, frame_sizes_reg, wordSize);
   __ addi(pcs_reg, pcs_reg, wordSize);
@@ -2673,15 +2659,11 @@
   __ std(R12_scratch2, _abi(lr), R1_SP);
 
   // Initialize initial_caller_sp.
-#ifdef CC_INTERP
-  __ std(frame_size_reg/*old_sp*/, _parent_ijava_frame_abi(initial_caller_sp), R1_SP);
-#else
 #ifdef ASSERT
  __ load_const_optimized(pc_reg, 0x5afe);
  __ std(pc_reg, _ijava_state_neg(ijava_reserved), R1_SP);
 #endif
  __ std(frame_size_reg, _ijava_state_neg(sender_sp), R1_SP);
-#endif // CC_INTERP
 
 #ifdef ASSERT
   // Make sure that there is at least one entry in the array.
@@ -2708,9 +2690,6 @@
   // Store it in the top interpreter frame.
   __ std(R0, _abi(lr), R1_SP);
   // Initialize frame_manager_lr of interpreter top frame.
-#ifdef CC_INTERP
-  __ std(R0, _top_ijava_frame_abi(frame_manager_lr), R1_SP);
-#endif
 }
 #endif
 
@@ -2899,16 +2878,8 @@
   // optional c2i, caller of deoptee, ...).
 
   // Initialize R14_state.
-#ifdef CC_INTERP
-  __ ld(R14_state, 0, R1_SP);
-  __ addi(R14_state, R14_state, -frame::interpreter_frame_cinterpreterstate_size_in_bytes());
-  // Also inititialize R15_prev_state.
-  __ restore_prev_state();
-#else
   __ restore_interpreter_state(R11_scratch1);
   __ load_const_optimized(R25_templateTableBase, (address)Interpreter::dispatch_table((TosState)0), R11_scratch1);
-#endif // CC_INTERP
-
 
   // Return to the interpreter entry point.
   __ blr();
@@ -3034,16 +3005,8 @@
   // stack: (top interpreter frame, ..., optional interpreter frame,
   // optional c2i, caller of deoptee, ...).
 
-#ifdef CC_INTERP
-  // Initialize R14_state, ...
-  __ ld(R11_scratch1, 0, R1_SP);
-  __ addi(R14_state, R11_scratch1, -frame::interpreter_frame_cinterpreterstate_size_in_bytes());
-  // also initialize R15_prev_state.
-  __ restore_prev_state();
-#else
   __ restore_interpreter_state(R11_scratch1);
   __ load_const_optimized(R25_templateTableBase, (address)Interpreter::dispatch_table((TosState)0), R11_scratch1);
-#endif // CC_INTERP
 
   // Return to the interpreter entry point.
   __ blr();
--- a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -225,11 +225,8 @@
       //   R16_thread  -  JavaThread*
 
       // Tos must point to last argument - element_size.
-#ifdef CC_INTERP
-      const Register tos = R17_tos;
-#else
       const Register tos = R15_esp;
-#endif
+
       __ addi(tos, r_top_of_arguments_addr, -Interpreter::stackElementSize);
 
       // initialize call_stub locals (step 2)
@@ -243,11 +240,7 @@
       assert(tos != r_arg_thread && R19_method != r_arg_thread, "trashed r_arg_thread");
 
       // Set R15_prev_state to 0 for simplifying checks in callee.
-#ifdef CC_INTERP
-      __ li(R15_prev_state, 0);
-#else
       __ load_const_optimized(R25_templateTableBase, (address)Interpreter::dispatch_table((TosState)0), R11_scratch1);
-#endif
       // Stack on entry to frame manager / native entry:
       //
       //      F0      [TOP_IJAVA_FRAME_ABI]
--- a/hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -24,7 +24,6 @@
  */
 
 #include "precompiled.hpp"
-#ifndef CC_INTERP
 #include "asm/macroAssembler.inline.hpp"
 #include "interpreter/bytecodeHistogram.hpp"
 #include "interpreter/interpreter.hpp"
@@ -1799,4 +1798,3 @@
 }
 
 #endif // !PRODUCT
-#endif // !CC_INTERP
--- a/hotspot/src/cpu/ppc/vm/templateTable_ppc_64.cpp	Tue Dec 15 11:28:23 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/templateTable_ppc_64.cpp	Thu Dec 10 16:18:25 2015 +0100
@@ -39,8 +39,6 @@
 #include "runtime/synchronizer.hpp"
 #include "utilities/macros.hpp"
 
-#ifndef CC_INTERP
-
 #undef __
 #define __ _masm->
 
@@ -4145,4 +4143,3 @@
   __ bctr();
   // Note: the bcp increment step is part of the individual wide bytecode implementations.
 }
-#endif // !CC_INTERP