# HG changeset patch # User Christian Wimmer # Date 1400637668 25200 # Node ID 6fe57ff3f02cf9d53ab5ddbb98cae98e6c35dd79 # Parent faebb143dab29143668fd7fa5bff2a6dd2d3a5bb Rename methods to have consistent names, allow subclasses of bytecode parsers diff -r faebb143dab2 -r 6fe57ff3f02c 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 Tue May 20 18:59:45 2014 -0700 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Tue May 20 19:01:08 2014 -0700 @@ -137,7 +137,7 @@ FrameMap frameMap = backend.newFrameMap(null); TargetDescription target = backend.getTarget(); CallingConvention cc = CodeUtil.getCallingConvention(backend.getProviders().getCodeCache(), CallingConvention.Type.JavaCallee, method, false); - this.lirGenRes = backend.newLIRGenerationResult(lir, frameMap, null); + this.lirGenRes = backend.newLIRGenerationResult(lir, frameMap, method, null); this.gen = backend.newLIRGenerator(cc, lirGenRes); this.lirBuilder = backend.newBytecodeLIRBuilder(gen, this); @@ -441,13 +441,13 @@ } @Override - protected Value genCheckCast(ResolvedJavaType type, Value object, JavaTypeProfile profileForTypeCheck, boolean b) { + protected Value createCheckCast(ResolvedJavaType type, Value object, JavaTypeProfile profileForTypeCheck, boolean b) { // TODO Auto-generated method stub throw GraalInternalError.unimplemented("Auto-generated method stub"); } @Override - protected Value genInstanceOf(ResolvedJavaType type, Value object, JavaTypeProfile profileForTypeCheck) { + protected Value createInstanceOf(ResolvedJavaType type, Value object, JavaTypeProfile profileForTypeCheck) { // TODO Auto-generated method stub throw GraalInternalError.unimplemented("Auto-generated method stub"); } diff -r faebb143dab2 -r 6fe57ff3f02c graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Tue May 20 18:59:45 2014 -0700 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Tue May 20 19:01:08 2014 -0700 @@ -583,7 +583,7 @@ } } - protected abstract T genCheckCast(ResolvedJavaType type, T object, JavaTypeProfile profileForTypeCheck, boolean b); + protected abstract T createCheckCast(ResolvedJavaType type, T object, JavaTypeProfile profileForTypeCheck, boolean forStoreCheck); private void genCheckCast() { int cpi = getStream().readCPI(); @@ -591,14 +591,14 @@ T object = frameState.apop(); if (type instanceof ResolvedJavaType) { JavaTypeProfile profileForTypeCheck = getProfileForTypeCheck((ResolvedJavaType) type); - T checkCastNode = append(genCheckCast((ResolvedJavaType) type, object, profileForTypeCheck, false)); + T checkCastNode = append(createCheckCast((ResolvedJavaType) type, object, profileForTypeCheck, false)); frameState.apush(checkCastNode); } else { handleUnresolvedCheckCast(type, object); } } - protected abstract T genInstanceOf(ResolvedJavaType type, T object, JavaTypeProfile profileForTypeCheck); + protected abstract T createInstanceOf(ResolvedJavaType type, T object, JavaTypeProfile profileForTypeCheck); protected abstract T genConditional(T x); @@ -608,7 +608,7 @@ T object = frameState.apop(); if (type instanceof ResolvedJavaType) { ResolvedJavaType resolvedType = (ResolvedJavaType) type; - T instanceOfNode = genInstanceOf((ResolvedJavaType) type, object, getProfileForTypeCheck(resolvedType)); + T instanceOfNode = createInstanceOf((ResolvedJavaType) type, object, getProfileForTypeCheck(resolvedType)); frameState.ipush(append(genConditional(genUnique(instanceOfNode)))); } else { handleUnresolvedInstanceOf(type, object); diff -r faebb143dab2 -r 6fe57ff3f02c graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue May 20 18:59:45 2014 -0700 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue May 20 19:01:08 2014 -0700 @@ -150,7 +150,7 @@ methodSynchronizedObject = null; this.currentGraph = graph; HIRFrameStateBuilder frameState = new HIRFrameStateBuilder(method, graph, graphBuilderConfig.eagerResolving()); - this.parser = new BytecodeParser(metaAccess, method, graphBuilderConfig, optimisticOpts, frameState, new BytecodeStream(method.getCode()), profilingInfo, method.getConstantPool(), + this.parser = createBytecodeParser(metaAccess, method, graphBuilderConfig, optimisticOpts, frameState, new BytecodeStream(method.getCode()), profilingInfo, method.getConstantPool(), entryBCI); TTY.Filter filter = new TTY.Filter(PrintFilter.getValue(), method); try { @@ -163,6 +163,12 @@ ComputeLoopFrequenciesClosure.compute(graph); } + @SuppressWarnings("hiding") + protected BytecodeParser createBytecodeParser(MetaAccessProvider metaAccess, ResolvedJavaMethod method, GraphBuilderConfiguration graphBuilderConfig, OptimisticOptimizations optimisticOpts, + HIRFrameStateBuilder frameState, BytecodeStream stream, ProfilingInfo profilingInfo, ConstantPool constantPool, int entryBCI) { + return new BytecodeParser(metaAccess, method, graphBuilderConfig, optimisticOpts, frameState, stream, profilingInfo, constantPool, entryBCI); + } + @Override protected String getDetailedName() { return getName() + " " + MetaUtil.format("%H.%n(%p):%r", parser.getMethod()); @@ -190,7 +196,7 @@ } } - class BytecodeParser extends AbstractBytecodeParser { + public class BytecodeParser extends AbstractBytecodeParser { private BciBlock[] loopHeaders; private LocalLiveness liveness; @@ -433,12 +439,13 @@ dispatchBegin.setStateAfter(dispatchState.create(bci)); } else { dispatchBegin = currentGraph.add(new DispatchBeginNode()); + dispatchState.apush(exceptionObject); dispatchBegin.setStateAfter(dispatchState.create(bci)); - dispatchState.apush(exceptionObject); dispatchState.setRethrowException(true); } + FixedWithNextNode finishedDispatch = finishInstruction(dispatchBegin, dispatchState); FixedNode target = createTarget(dispatchBlock, dispatchState); - finishInstruction(dispatchBegin, dispatchState).setNext(target); + finishedDispatch.setNext(target); return dispatchBegin; } @@ -600,12 +607,12 @@ } @Override - protected ValueNode genCheckCast(ResolvedJavaType type, ValueNode object, JavaTypeProfile profileForTypeCheck, boolean b) { - return new CheckCastNode(type, object, profileForTypeCheck, b); + protected ValueNode createCheckCast(ResolvedJavaType type, ValueNode object, JavaTypeProfile profileForTypeCheck, boolean forStoreCheck) { + return new CheckCastNode(type, object, profileForTypeCheck, forStoreCheck); } @Override - protected ValueNode genInstanceOf(ResolvedJavaType type, ValueNode object, JavaTypeProfile profileForTypeCheck) { + protected ValueNode createInstanceOf(ResolvedJavaType type, ValueNode object, JavaTypeProfile profileForTypeCheck) { return new InstanceOfNode(type, object, profileForTypeCheck); }