--- /dev/null 2017-03-16 11:03:49.895616831 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.graphio/src/org/graalvm/graphio/ProtocolImpl.java 2017-08-03 22:43:02.769967698 -0700 @@ -0,0 +1,273 @@ +/* + * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package org.graalvm.graphio; + +import java.io.IOException; +import java.nio.channels.WritableByteChannel; +import java.util.Collection; +import java.util.Map; + +final class ProtocolImpl + extends GraphProtocol { + private final GraphStructure structure; + private final GraphTypes types; + private final GraphBlocks blocks; + private final GraphElements elements; + + ProtocolImpl(GraphStructure structure, GraphTypes enums, GraphBlocks blocks, + GraphElements elements, WritableByteChannel channel) throws IOException { + super(channel); + this.structure = structure; + this.types = enums; + this.blocks = blocks; + this.elements = elements; + } + + @Override + protected Graph findGraph(Graph current, Object obj) { + return structure.graph(current, obj); + } + + @Override + protected NodeClass findNodeClass(Object obj) { + return structure.nodeClass(obj); + } + + @Override + protected String findNameTemplate(NodeClass clazz) { + return structure.nameTemplate(clazz); + } + + @Override + protected int findNodeId(Node n) { + return structure.nodeId(n); + } + + @Override + protected boolean hasPredecessor(Node node) { + return structure.nodeHasPredecessor(node); + } + + @Override + protected int findNodesCount(Graph info) { + return structure.nodesCount(info); + } + + @Override + protected Iterable findNodes(Graph info) { + return structure.nodes(info); + } + + @Override + protected void findNodeProperties(Node node, Map props, Graph info) { + structure.nodeProperties(info, node, props); + } + + @Override + protected Port findClassEdges(NodeClass nodeClass, boolean dumpInputs) { + if (dumpInputs) { + return structure.portInputs(nodeClass); + } else { + return structure.portOutputs(nodeClass); + } + } + + @Override + protected int findSize(Port edges) { + return structure.portSize(edges); + } + + @Override + protected boolean isDirect(Port edges, int i) { + return structure.edgeDirect(edges, i); + } + + @Override + protected String findName(Port edges, int i) { + return structure.edgeName(edges, i); + } + + @Override + protected Object findType(Port edges, int i) { + return structure.edgeType(edges, i); + } + + @Override + protected Collection findNodes(Graph graph, Node node, Port port, int i) { + return structure.edgeNodes(graph, node, port, i); + } + + @Override + protected Object findJavaClass(NodeClass clazz) { + return structure.nodeClassType(clazz); + } + + @Override + protected Object findEnumClass(Object enumValue) { + return types.enumClass(enumValue); + } + + @Override + protected int findEnumOrdinal(Object obj) { + return types.enumOrdinal(obj); + } + + @Override + protected String[] findEnumTypeValues(Object clazz) { + return types.enumTypeValues(clazz); + } + + @Override + protected String findJavaTypeName(Object obj) { + return types.typeName(obj); + } + + @Override + protected Collection findBlockNodes(Graph info, Block block) { + return blocks.blockNodes(info, block); + } + + @Override + protected int findBlockId(Block block) { + return blocks.blockId(block); + } + + @Override + protected Collection findBlocks(Graph graph) { + return blocks.blocks(graph); + } + + @Override + protected Collection findBlockSuccessors(Block block) { + return blocks.blockSuccessors(block); + } + + @Override + protected ResolvedJavaMethod findMethod(Object obj) { + return elements == null ? null : elements.method(obj); + } + + @Override + protected byte[] findMethodCode(ResolvedJavaMethod method) { + return elements.methodCode(method); + } + + @Override + protected int findMethodModifiers(ResolvedJavaMethod method) { + return elements.methodModifiers(method); + } + + @Override + protected Signature findMethodSignature(ResolvedJavaMethod method) { + return elements.methodSignature(method); + } + + @Override + protected String findMethodName(ResolvedJavaMethod method) { + return elements.methodName(method); + } + + @Override + protected Object findMethodDeclaringClass(ResolvedJavaMethod method) { + return elements.methodDeclaringClass(method); + } + + @Override + protected int findFieldModifiers(ResolvedJavaField field) { + return elements.fieldModifiers(field); + } + + @Override + protected String findFieldTypeName(ResolvedJavaField field) { + return elements.fieldTypeName(field); + } + + @Override + protected String findFieldName(ResolvedJavaField field) { + return elements.fieldName(field); + } + + @Override + protected Object findFieldDeclaringClass(ResolvedJavaField field) { + return elements.fieldDeclaringClass(field); + } + + @Override + protected ResolvedJavaField findJavaField(Object object) { + return elements == null ? null : elements.field(object); + } + + @Override + protected Signature findSignature(Object object) { + return elements == null ? null : elements.signature(object); + } + + @Override + protected int findSignatureParameterCount(Signature signature) { + return elements.signatureParameterCount(signature); + } + + @Override + protected String findSignatureParameterTypeName(Signature signature, int index) { + return elements.signatureParameterTypeName(signature, index); + } + + @Override + protected String findSignatureReturnTypeName(Signature signature) { + return elements.signatureReturnTypeName(signature); + } + + @Override + protected NodeSourcePosition findNodeSourcePosition(Object object) { + return elements == null ? null : elements.nodeSourcePosition(object); + } + + @Override + protected ResolvedJavaMethod findNodeSourcePositionMethod(NodeSourcePosition pos) { + return elements.nodeSourcePositionMethod(pos); + } + + @Override + protected NodeSourcePosition findNodeSourcePositionCaller(NodeSourcePosition pos) { + return elements.nodeSourcePositionCaller(pos); + } + + @Override + protected int findNodeSourcePositionBCI(NodeSourcePosition pos) { + return elements.nodeSourcePositionBCI(pos); + } + + @Override + protected StackTraceElement findMethodStackTraceElement(ResolvedJavaMethod method, int bci, NodeSourcePosition pos) { + return elements.methodStackTraceElement(method, bci, pos); + } + + @Override + protected void findExtraNodes(Node node, Collection extraNodes) { + } + + @Override + protected String formatTitle(Graph graph, int id, String format, Object... args) { + return String.format(format, args) + " [" + id + "]"; + } +}