src/jdk.internal.vm.compiler/share/classes/org.graalvm.graphio/src/org/graalvm/graphio/ProtocolImpl.java
author dlong
Tue, 24 Sep 2019 12:47:15 -0400
changeset 58299 6df94ce3ab2f
parent 54084 84f10bbf993f
permissions -rw-r--r--
8229201: Update Graal Reviewed-by: kvn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     1
/*
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 54084
diff changeset
     2
 * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     4
 *
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     7
 * published by the Free Software Foundation.
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     8
 *
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    13
 * accompanied this code).
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    14
 *
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    18
 *
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    21
 * questions.
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    22
 */
50858
2d3e99a72541 8205824: Update Graal
never
parents: 50330
diff changeset
    23
2d3e99a72541 8205824: Update Graal
never
parents: 50330
diff changeset
    24
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    25
package org.graalvm.graphio;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    26
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    27
import java.io.File;
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    28
import java.io.IOException;
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    29
import java.net.URI;
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    30
import java.net.URISyntaxException;
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    31
import java.nio.channels.WritableByteChannel;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    32
import java.util.Collection;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    33
import java.util.Map;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    34
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    35
final class ProtocolImpl<Graph, Node, NodeClass, Port, Block, ResolvedJavaMethod, ResolvedJavaField, Signature, NodeSourcePosition, Location>
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    36
                extends GraphProtocol<Graph, Node, NodeClass, Port, Block, ResolvedJavaMethod, ResolvedJavaField, Signature, NodeSourcePosition, Location> {
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    37
    private final GraphStructure<Graph, Node, NodeClass, Port> structure;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    38
    private final GraphTypes types;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    39
    private final GraphBlocks<Graph, Block, Node> blocks;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    40
    private final GraphElements<ResolvedJavaMethod, ResolvedJavaField, Signature, NodeSourcePosition> elements;
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    41
    private final GraphLocations<ResolvedJavaMethod, NodeSourcePosition, Location> locations;
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    42
54084
84f10bbf993f 8218074: Update Graal
jwilhelm
parents: 52910
diff changeset
    43
    ProtocolImpl(int major, int minor, boolean embedded, GraphStructure<Graph, Node, NodeClass, Port> structure, GraphTypes enums, GraphBlocks<Graph, Block, Node> blocks,
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    44
                    GraphElements<ResolvedJavaMethod, ResolvedJavaField, Signature, NodeSourcePosition> elements,
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    45
                    GraphLocations<ResolvedJavaMethod, NodeSourcePosition, Location> locs,
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    46
                    WritableByteChannel channel) throws IOException {
54084
84f10bbf993f 8218074: Update Graal
jwilhelm
parents: 52910
diff changeset
    47
        super(channel, major, minor, embedded);
47798
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    48
        this.structure = structure;
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    49
        this.types = enums;
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    50
        this.blocks = blocks;
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    51
        this.elements = elements;
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    52
        this.locations = locs;
47798
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    53
    }
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    54
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    55
    ProtocolImpl(GraphProtocol<?, ?, ?, ?, ?, ?, ?, ?, ?, ?> parent, GraphStructure<Graph, Node, NodeClass, Port> structure, GraphTypes enums, GraphBlocks<Graph, Block, Node> blocks,
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    56
                    GraphElements<ResolvedJavaMethod, ResolvedJavaField, Signature, NodeSourcePosition> elements,
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    57
                    GraphLocations<ResolvedJavaMethod, NodeSourcePosition, Location> locs) {
47798
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    58
        super(parent);
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    59
        this.structure = structure;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    60
        this.types = enums;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    61
        this.blocks = blocks;
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    62
        this.elements = elements;
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
    63
        this.locations = locs;
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    64
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    65
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    66
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    67
    protected Graph findGraph(Graph current, Object obj) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    68
        return structure.graph(current, obj);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    69
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    70
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    71
    @Override
47798
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    72
    protected Node findNode(Object obj) {
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    73
        return structure.node(obj);
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    74
    }
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    75
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    76
    @Override
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    77
    protected NodeClass findNodeClass(Object obj) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    78
        return structure.nodeClass(obj);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    79
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    80
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    81
    @Override
47798
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    82
    protected NodeClass findClassForNode(Node obj) {
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents: 49873
diff changeset
    83
        NodeClass clazz = structure.classForNode(obj);
2cbc42a5764b 8202670: Update Graal
dlong
parents: 49873
diff changeset
    84
        if (clazz != null && (findNodeClass(clazz) == null || findNode(clazz) != null)) {
2cbc42a5764b 8202670: Update Graal
dlong
parents: 49873
diff changeset
    85
            throw new IllegalStateException("classForNode method shall return node class representation rather than node: " + clazz);
2cbc42a5764b 8202670: Update Graal
dlong
parents: 49873
diff changeset
    86
        }
2cbc42a5764b 8202670: Update Graal
dlong
parents: 49873
diff changeset
    87
        return clazz;
47798
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    88
    }
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    89
9fe9292f5931 8190710: Update Graal
dlong
parents: 47216
diff changeset
    90
    @Override
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    91
    protected String findNameTemplate(NodeClass clazz) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    92
        return structure.nameTemplate(clazz);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    93
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    94
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    95
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    96
    protected int findNodeId(Node n) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    97
        return structure.nodeId(n);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    98
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
    99
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   100
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   101
    protected boolean hasPredecessor(Node node) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   102
        return structure.nodeHasPredecessor(node);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   103
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   104
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   105
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   106
    protected int findNodesCount(Graph info) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   107
        return structure.nodesCount(info);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   108
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   109
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   110
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   111
    protected Iterable<? extends Node> findNodes(Graph info) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   112
        return structure.nodes(info);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   113
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   114
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   115
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   116
    protected void findNodeProperties(Node node, Map<String, Object> props, Graph info) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   117
        structure.nodeProperties(info, node, props);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   118
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   119
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   120
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   121
    protected Port findClassEdges(NodeClass nodeClass, boolean dumpInputs) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   122
        if (dumpInputs) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   123
            return structure.portInputs(nodeClass);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   124
        } else {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   125
            return structure.portOutputs(nodeClass);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   126
        }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   127
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   128
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   129
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   130
    protected int findSize(Port edges) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   131
        return structure.portSize(edges);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   132
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   133
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   134
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   135
    protected boolean isDirect(Port edges, int i) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   136
        return structure.edgeDirect(edges, i);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   137
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   138
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   139
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   140
    protected String findName(Port edges, int i) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   141
        return structure.edgeName(edges, i);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   142
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   143
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   144
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   145
    protected Object findType(Port edges, int i) {
49451
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   146
        Object type = structure.edgeType(edges, i);
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   147
        if (findEnumOrdinal(type) < 0) {
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   148
            throw new IllegalStateException("edgeType method shall return an enum! Was: " + type);
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   149
        }
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   150
        return type;
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   151
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   152
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   153
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   154
    protected Collection<? extends Node> findNodes(Graph graph, Node node, Port port, int i) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   155
        return structure.edgeNodes(graph, node, port, i);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   156
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   157
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   158
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   159
    protected Object findJavaClass(NodeClass clazz) {
49451
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   160
        final Object type = structure.nodeClassType(clazz);
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   161
        if (!(type instanceof Class<?>) && findJavaTypeName(type) == null) {
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   162
            throw new IllegalStateException("nodeClassType method shall return a Java class (instance of Class)! Was: " + type);
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   163
        }
e06f9607f370 8198969: Update Graal
iveresov
parents: 47798
diff changeset
   164
        return type;
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   165
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   166
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   167
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   168
    protected Object findEnumClass(Object enumValue) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   169
        return types.enumClass(enumValue);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   170
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   171
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   172
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   173
    protected int findEnumOrdinal(Object obj) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   174
        return types.enumOrdinal(obj);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   175
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   176
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   177
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   178
    protected String[] findEnumTypeValues(Object clazz) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   179
        return types.enumTypeValues(clazz);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   180
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   181
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   182
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   183
    protected String findJavaTypeName(Object obj) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   184
        return types.typeName(obj);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   185
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   186
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   187
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   188
    protected Collection<? extends Node> findBlockNodes(Graph info, Block block) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   189
        return blocks.blockNodes(info, block);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   190
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   191
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   192
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   193
    protected int findBlockId(Block block) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   194
        return blocks.blockId(block);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   195
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   196
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   197
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   198
    protected Collection<? extends Block> findBlocks(Graph graph) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   199
        return blocks.blocks(graph);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   200
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   201
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   202
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   203
    protected Collection<? extends Block> findBlockSuccessors(Block block) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   204
        return blocks.blockSuccessors(block);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   205
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   206
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   207
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   208
    protected ResolvedJavaMethod findMethod(Object obj) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   209
        return elements == null ? null : elements.method(obj);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   210
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   211
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   212
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   213
    protected byte[] findMethodCode(ResolvedJavaMethod method) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   214
        return elements.methodCode(method);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   215
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   216
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   217
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   218
    protected int findMethodModifiers(ResolvedJavaMethod method) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   219
        return elements.methodModifiers(method);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   220
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   221
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   222
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   223
    protected Signature findMethodSignature(ResolvedJavaMethod method) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   224
        return elements.methodSignature(method);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   225
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   226
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   227
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   228
    protected String findMethodName(ResolvedJavaMethod method) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   229
        return elements.methodName(method);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   230
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   231
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   232
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   233
    protected Object findMethodDeclaringClass(ResolvedJavaMethod method) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   234
        return elements.methodDeclaringClass(method);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   235
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   236
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   237
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   238
    protected int findFieldModifiers(ResolvedJavaField field) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   239
        return elements.fieldModifiers(field);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   240
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   241
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   242
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   243
    protected String findFieldTypeName(ResolvedJavaField field) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   244
        return elements.fieldTypeName(field);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   245
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   246
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   247
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   248
    protected String findFieldName(ResolvedJavaField field) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   249
        return elements.fieldName(field);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   250
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   251
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   252
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   253
    protected Object findFieldDeclaringClass(ResolvedJavaField field) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   254
        return elements.fieldDeclaringClass(field);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   255
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   256
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   257
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   258
    protected ResolvedJavaField findJavaField(Object object) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   259
        return elements == null ? null : elements.field(object);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   260
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   261
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   262
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   263
    protected Signature findSignature(Object object) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   264
        return elements == null ? null : elements.signature(object);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   265
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   266
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   267
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   268
    protected int findSignatureParameterCount(Signature signature) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   269
        return elements.signatureParameterCount(signature);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   270
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   271
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   272
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   273
    protected String findSignatureParameterTypeName(Signature signature, int index) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   274
        return elements.signatureParameterTypeName(signature, index);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   275
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   276
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   277
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   278
    protected String findSignatureReturnTypeName(Signature signature) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   279
        return elements.signatureReturnTypeName(signature);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   280
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   281
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   282
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   283
    protected NodeSourcePosition findNodeSourcePosition(Object object) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   284
        return elements == null ? null : elements.nodeSourcePosition(object);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   285
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   286
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   287
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   288
    protected ResolvedJavaMethod findNodeSourcePositionMethod(NodeSourcePosition pos) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   289
        return elements.nodeSourcePositionMethod(pos);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   290
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   291
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   292
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   293
    protected NodeSourcePosition findNodeSourcePositionCaller(NodeSourcePosition pos) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   294
        return elements.nodeSourcePositionCaller(pos);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   295
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   296
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   297
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   298
    protected int findNodeSourcePositionBCI(NodeSourcePosition pos) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   299
        return elements.nodeSourcePositionBCI(pos);
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   300
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   301
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   302
    @Override
49873
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   303
    protected Iterable<Location> findLocation(ResolvedJavaMethod method, int bci, NodeSourcePosition pos) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   304
        return locations.methodLocation(method, bci, pos);
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   305
    }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   306
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   307
    @Override
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   308
    protected String findLocationFile(Location loc) throws IOException {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   309
        if (loc == null) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   310
            return null;
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   311
        }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   312
        URI u;
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   313
        try {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   314
            u = locations.locationURI(loc);
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   315
        } catch (URISyntaxException ex) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   316
            throw new IOException(ex);
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   317
        }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   318
        if (u == null) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   319
            return null;
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   320
        }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   321
        if (u.getScheme() == null) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   322
            return u.getPath();
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   323
        }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   324
        if ("file".equals(u.getScheme())) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   325
            return new File(u).getPath();
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   326
        }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   327
        return null;
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   328
    }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   329
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   330
    @Override
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   331
    protected int findLocationLine(Location loc) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   332
        return locations.locationLineNumber(loc);
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   333
    }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   334
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   335
    @Override
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   336
    protected URI findLocationURI(Location loc) throws URISyntaxException {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   337
        return locations.locationURI(loc);
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   338
    }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   339
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   340
    @Override
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   341
    protected String findLocationLanguage(Location loc) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   342
        return locations.locationLanguage(loc);
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   343
    }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   344
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   345
    @Override
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   346
    protected int findLocationStart(Location loc) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   347
        return locations.locationOffsetStart(loc);
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   348
    }
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   349
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   350
    @Override
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   351
    protected int findLocationEnd(Location loc) {
26ebfe8ce852 8199755: Update Graal
dlong
parents: 49451
diff changeset
   352
        return locations.locationOffsetEnd(loc);
46762
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   353
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   354
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   355
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   356
    protected void findExtraNodes(Node node, Collection<? super Node> extraNodes) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   357
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   358
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   359
    @Override
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   360
    protected String formatTitle(Graph graph, int id, String format, Object... args) {
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   361
        return String.format(format, args) + " [" + id + "]";
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   362
    }
f7defa99f173 8185829: Update Graal
dlong
parents:
diff changeset
   363
}