Mercurial > hg > graal-compiler
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); + } }