OpenJDK / graal / graal-jvmci-8
changeset 2959:84a7b7069ffb
Improved performance for looking up primitive types.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Tue, 14 Jun 2011 15:10:46 +0200 |
parents | 8b2953f6d325 |
children | 49a8b14e9d24 |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/Compiler.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/CompilerImpl.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotSignature.java |
diffstat | 4 files changed, 42 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java Tue Jun 14 11:03:14 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java Tue Jun 14 15:10:46 2011 +0200 @@ -26,7 +26,6 @@ import com.oracle.max.graal.compiler.debug.*; import com.oracle.max.graal.graph.*; -import com.sun.cri.bytecode.*; import com.sun.cri.ci.*; import com.sun.cri.ri.*;
--- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/Compiler.java Tue Jun 14 11:03:14 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/Compiler.java Tue Jun 14 15:10:46 2011 +0200 @@ -23,11 +23,13 @@ package com.oracle.max.graal.runtime; import com.oracle.max.graal.compiler.*; +import com.sun.cri.ri.*; public interface Compiler { VMEntries getVMEntries(); VMExits getVMExits(); GraalCompiler getCompiler(); + RiType lookupType(String returnType, HotSpotTypeResolved accessingClass); }
--- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/CompilerImpl.java Tue Jun 14 11:03:14 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/CompilerImpl.java Tue Jun 14 15:10:46 2011 +0200 @@ -155,4 +155,42 @@ return vmExits; } + @Override + public RiType lookupType(String returnType, HotSpotTypeResolved accessingClass) { + if (returnType.length() == 1 && vmExits instanceof VMExitsNative) { + VMExitsNative exitsNative = (VMExitsNative) vmExits; + CiKind kind = CiKind.fromPrimitiveOrVoidTypeChar(returnType.charAt(0)); + switch(kind) { + case Boolean: + return exitsNative.typeBoolean; + case Byte: + return exitsNative.typeByte; + case Char: + return exitsNative.typeChar; + case Double: + return exitsNative.typeDouble; + case Float: + return exitsNative.typeFloat; + case Illegal: + break; + case Int: + return exitsNative.typeInt; + case Jsr: + break; + case Long: + return exitsNative.typeLong; + case Object: + break; + case Short: + return exitsNative.typeShort; + case Void: + return exitsNative.typeVoid; + case Word: + break; + + } + } + return vmEntries.RiSignature_lookupType(returnType, accessingClass); + } + }
--- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotSignature.java Tue Jun 14 11:03:14 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotSignature.java Tue Jun 14 15:10:46 2011 +0200 @@ -117,7 +117,7 @@ } RiType type = argumentTypes[index]; if (type == null) { - type = compiler.getVMEntries().RiSignature_lookupType(arguments.get(index), (HotSpotTypeResolved) accessingClass); + type = compiler.lookupType(arguments.get(index), (HotSpotTypeResolved) accessingClass); argumentTypes[index] = type; } return type; @@ -136,7 +136,7 @@ @Override public RiType returnType(RiType accessingClass) { if (returnTypeCache == null) { - returnTypeCache = compiler.getVMEntries().RiSignature_lookupType(returnType, (HotSpotTypeResolved) accessingClass); + returnTypeCache = compiler.lookupType(returnType, (HotSpotTypeResolved) accessingClass); } return returnTypeCache; }