# HG changeset patch # User Josef Eisl # Date 1399536255 -7200 # Node ID 0fc03510437065745c9552ce400d61bfbdffedca # Parent db5e9c70d829e41d3dbc5f2134a7182191ca88a0 Baseline: add support for getstatic. diff -r db5e9c70d829 -r 0fc035104370 graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java --- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Thu May 08 14:57:28 2014 +0200 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Thu May 08 10:04:15 2014 +0200 @@ -478,6 +478,14 @@ @Override protected Value genLoadField(Value receiver, ResolvedJavaField field) { + if (field.isStatic()) { + Value classRef = lirBuilder.getClassConstant(field.getDeclaringClass()); + long displacement = lirBuilder.getFieldOffset(field); + Value address = gen.emitAddress(classRef, displacement, Value.ILLEGAL, 0); + PlatformKind readKind = gen.getPlatformKind(StampFactory.forKind(field.getKind())); + LIRFrameState state = createFrameState(frameState); + return gen.emitLoad(readKind, address, state); + } // TODO Auto-generated method stub throw GraalInternalError.unimplemented("Auto-generated method stub"); } diff -r db5e9c70d829 -r 0fc035104370 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/BytecodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/BytecodeLIRBuilder.java Thu May 08 14:57:28 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/BytecodeLIRBuilder.java Thu May 08 10:04:15 2014 +0200 @@ -63,4 +63,8 @@ public abstract int getArrayLengthOffset(); + public abstract Constant getClassConstant(ResolvedJavaType declaringClass); + + public abstract int getFieldOffset(ResolvedJavaField field); + } \ No newline at end of file diff -r db5e9c70d829 -r 0fc035104370 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java Thu May 08 14:57:28 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java Thu May 08 10:04:15 2014 +0200 @@ -28,6 +28,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.gen.*; import com.oracle.graal.hotspot.amd64.AMD64HotSpotLIRGenerator.SaveRbp; +import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.lir.StandardOp.NoOp; import com.oracle.graal.lir.gen.*; @@ -84,4 +85,14 @@ return getGen().config.arrayLengthOffset; } + @Override + public Constant getClassConstant(ResolvedJavaType declaringClass) { + return HotSpotObjectConstant.forObject(((HotSpotResolvedJavaType) declaringClass).mirror()); + } + + @Override + public int getFieldOffset(ResolvedJavaField field) { + return ((HotSpotResolvedJavaField) field).offset(); + } + } diff -r db5e9c70d829 -r 0fc035104370 test/whitelist_baseline.txt --- a/test/whitelist_baseline.txt Thu May 08 14:57:28 2014 +0200 +++ b/test/whitelist_baseline.txt Thu May 08 10:04:15 2014 +0200 @@ -17,3 +17,11 @@ com.oracle.graal.jtt.bytecode.BC_iconst com.oracle.graal.jtt.bytecode.BC_ireturn com.oracle.graal.jtt.bytecode.BC_lreturn +com.oracle.graal.jtt.bytecode.BC_getstatic_b +com.oracle.graal.jtt.bytecode.BC_getstatic_c +com.oracle.graal.jtt.bytecode.BC_getstatic_d +com.oracle.graal.jtt.bytecode.BC_getstatic_f +com.oracle.graal.jtt.bytecode.BC_getstatic_i +com.oracle.graal.jtt.bytecode.BC_getstatic_l +com.oracle.graal.jtt.bytecode.BC_getstatic_s +com.oracle.graal.jtt.bytecode.BC_getstatic_z