diff src/cpu/sparc/vm/sharedRuntime_sparc.cpp @ 10684:6ff467cdb105

Code installer changes for SPARC.
author twisti
date Tue, 09 Jul 2013 14:39:34 -0700
parents 0d40e1cf70db
children 6b0fd0964b87
line wrap: on
line diff
--- a/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Jul 09 22:05:40 2013 +0200
+++ b/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Jul 09 14:39:34 2013 -0700
@@ -1826,6 +1826,31 @@
   verify_oop_args(masm, method, sig_bt, regs);
   vmIntrinsics::ID iid = method->intrinsic_id();
 
+#ifdef GRAAL
+  if (iid == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod) {
+    // We are called from compiled code here. The three object arguments
+    // are already in the correct registers (j_rarg0, jrarg1, jrarg2). The
+    // fourth argument (j_rarg3) is a pointer to the HotSpotInstalledCode object.
+
+    // Load the nmethod pointer from the HotSpotInstalledCode object
+//    __ movq(j_rarg3, Address(j_rarg3, sizeof(oopDesc)));
+
+    // Check whether the nmethod was invalidated
+//    __ testq(j_rarg3, j_rarg3);
+//    Label invalid_nmethod;
+//    __ jcc(Assembler::zero, invalid_nmethod);
+
+    // Perform a tail call to the verified entry point of the nmethod.
+//    __ jmp(Address(j_rarg3, nmethod::verified_entry_point_offset()));
+
+//    __ bind(invalid_nmethod);
+
+//    __ jump(RuntimeAddress(StubRoutines::throw_InvalidInstalledCodeException_entry()));
+    __ stop("_CompilerToVMImpl_executeCompiledMethod not implemented");
+    return;
+  }
+#endif
+
   // Now write the args into the outgoing interpreter space
   bool     has_receiver   = false;
   Register receiver_reg   = noreg;