diff graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotCompiledMethod.java @ 4993:897b7d18bebc

added RiCompiledMethod.execute and the required VM infrastructure
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 28 Feb 2012 18:00:35 +0100
parents 5c80ccb80036
children b5dc2403c1e7
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotCompiledMethod.java	Tue Feb 28 17:53:07 2012 +0100
+++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotCompiledMethod.java	Tue Feb 28 18:00:35 2012 +0100
@@ -22,17 +22,25 @@
  */
 package com.oracle.max.graal.hotspot.ri;
 
+import java.lang.reflect.*;
+
+import com.oracle.max.cri.ci.*;
 import com.oracle.max.cri.ri.*;
+import com.oracle.max.graal.hotspot.*;
+import com.oracle.max.graal.hotspot.Compiler;
 
 /**
  * Implementation of RiCompiledMethod for HotSpot. Stores a reference to the nmethod which contains the compiled code.
  */
-public class HotSpotCompiledMethod implements RiCompiledMethod {
+public class HotSpotCompiledMethod extends CompilerObject implements RiCompiledMethod {
+
+    private static final long serialVersionUID = 156632908220561612L;
 
     private final RiResolvedMethod method;
     private long nmethod;
 
-    public HotSpotCompiledMethod(RiResolvedMethod method) {
+    public HotSpotCompiledMethod(Compiler compiler, RiResolvedMethod method) {
+        super(compiler);
         this.method = method;
     }
 
@@ -50,4 +58,13 @@
     public String toString() {
         return "compiled method " + method + " @" + nmethod;
     }
+
+    @Override
+    public Object execute(Object arg1, Object arg2, Object arg3) {
+        assert method.signature().argumentCount(!Modifier.isStatic(method.accessFlags())) == 3;
+        assert method.signature().argumentKindAt(0, false) == CiKind.Object;
+        assert method.signature().argumentKindAt(1, false) == CiKind.Object;
+        assert !Modifier.isStatic(method.accessFlags()) || method.signature().argumentKindAt(2, false) == CiKind.Object;
+        return compiler.getVMEntries().executeCompiledMethod(this, arg1, arg2, arg3);
+    }
 }