This file is indexed.

/usr/share/doc/libserp-java/api/src-html/serp/bytecode/TypedInstruction.html is in libserp-java-doc 1.15.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>package serp.bytecode;<a name="line.1"></a>
<span class="sourceLineNo">002</span><a name="line.2"></a>
<span class="sourceLineNo">003</span>import java.util.*;<a name="line.3"></a>
<span class="sourceLineNo">004</span><a name="line.4"></a>
<span class="sourceLineNo">005</span>import serp.bytecode.lowlevel.*;<a name="line.5"></a>
<span class="sourceLineNo">006</span>import serp.util.*;<a name="line.6"></a>
<span class="sourceLineNo">007</span><a name="line.7"></a>
<span class="sourceLineNo">008</span>/**<a name="line.8"></a>
<span class="sourceLineNo">009</span> * Any typed instruction.<a name="line.9"></a>
<span class="sourceLineNo">010</span> *<a name="line.10"></a>
<span class="sourceLineNo">011</span> * @author Abe White<a name="line.11"></a>
<span class="sourceLineNo">012</span> */<a name="line.12"></a>
<span class="sourceLineNo">013</span>public abstract class TypedInstruction extends Instruction {<a name="line.13"></a>
<span class="sourceLineNo">014</span>    private static final Set _opcodeTypes = new HashSet();<a name="line.14"></a>
<span class="sourceLineNo">015</span>    static {<a name="line.15"></a>
<span class="sourceLineNo">016</span>        _opcodeTypes.add(int.class.getName());<a name="line.16"></a>
<span class="sourceLineNo">017</span>        _opcodeTypes.add(long.class.getName());<a name="line.17"></a>
<span class="sourceLineNo">018</span>        _opcodeTypes.add(float.class.getName());<a name="line.18"></a>
<span class="sourceLineNo">019</span>        _opcodeTypes.add(double.class.getName());<a name="line.19"></a>
<span class="sourceLineNo">020</span>        _opcodeTypes.add(Object.class.getName());<a name="line.20"></a>
<span class="sourceLineNo">021</span>        _opcodeTypes.add(byte.class.getName());<a name="line.21"></a>
<span class="sourceLineNo">022</span>        _opcodeTypes.add(char.class.getName());<a name="line.22"></a>
<span class="sourceLineNo">023</span>        _opcodeTypes.add(short.class.getName());<a name="line.23"></a>
<span class="sourceLineNo">024</span>        _opcodeTypes.add(boolean.class.getName());<a name="line.24"></a>
<span class="sourceLineNo">025</span>        _opcodeTypes.add(void.class.getName());<a name="line.25"></a>
<span class="sourceLineNo">026</span>    }<a name="line.26"></a>
<span class="sourceLineNo">027</span><a name="line.27"></a>
<span class="sourceLineNo">028</span>    TypedInstruction(Code owner) {<a name="line.28"></a>
<span class="sourceLineNo">029</span>        super(owner);<a name="line.29"></a>
<span class="sourceLineNo">030</span>    }<a name="line.30"></a>
<span class="sourceLineNo">031</span><a name="line.31"></a>
<span class="sourceLineNo">032</span>    TypedInstruction(Code owner, int opcode) {<a name="line.32"></a>
<span class="sourceLineNo">033</span>        super(owner, opcode);<a name="line.33"></a>
<span class="sourceLineNo">034</span>    }<a name="line.34"></a>
<span class="sourceLineNo">035</span><a name="line.35"></a>
<span class="sourceLineNo">036</span>    /**<a name="line.36"></a>
<span class="sourceLineNo">037</span>     * Return the type for the given name. Takes into account<a name="line.37"></a>
<span class="sourceLineNo">038</span>     * the given mappings and the demote flag.<a name="line.38"></a>
<span class="sourceLineNo">039</span>     *<a name="line.39"></a>
<span class="sourceLineNo">040</span>     * @param mappings mappings of one type to another; for example,<a name="line.40"></a>
<span class="sourceLineNo">041</span>     * array instruction treat booleans as ints, so<a name="line.41"></a>
<span class="sourceLineNo">042</span>     * to reflect that there should be an index x of the<a name="line.42"></a>
<span class="sourceLineNo">043</span>     * array such that mappings[x][0] = boolean.class and<a name="line.43"></a>
<span class="sourceLineNo">044</span>     * mappings[x][1] = int.class; may be null if no special mappings are needed<a name="line.44"></a>
<span class="sourceLineNo">045</span>     * @param demote if true, all object types will be demoted to Object.class<a name="line.45"></a>
<span class="sourceLineNo">046</span>     */<a name="line.46"></a>
<span class="sourceLineNo">047</span>    String mapType(String type, Class[][] mappings, boolean demote) {<a name="line.47"></a>
<span class="sourceLineNo">048</span>        if (type == null)<a name="line.48"></a>
<span class="sourceLineNo">049</span>            return null;<a name="line.49"></a>
<span class="sourceLineNo">050</span><a name="line.50"></a>
<span class="sourceLineNo">051</span>        type = getProject().getNameCache().getExternalForm(type, false);<a name="line.51"></a>
<span class="sourceLineNo">052</span>        if (!_opcodeTypes.contains(type) &amp;&amp; demote)<a name="line.52"></a>
<span class="sourceLineNo">053</span>            type = Object.class.getName();<a name="line.53"></a>
<span class="sourceLineNo">054</span><a name="line.54"></a>
<span class="sourceLineNo">055</span>        if (mappings != null)<a name="line.55"></a>
<span class="sourceLineNo">056</span>            for (int i = 0; i &lt; mappings.length; i++)<a name="line.56"></a>
<span class="sourceLineNo">057</span>                if (mappings[i][0].getName().equals(type))<a name="line.57"></a>
<span class="sourceLineNo">058</span>                    type = mappings[i][1].getName();<a name="line.58"></a>
<span class="sourceLineNo">059</span>        return type;<a name="line.59"></a>
<span class="sourceLineNo">060</span>    }<a name="line.60"></a>
<span class="sourceLineNo">061</span><a name="line.61"></a>
<span class="sourceLineNo">062</span>    /**<a name="line.62"></a>
<span class="sourceLineNo">063</span>     * Return the type name for this instruction.<a name="line.63"></a>
<span class="sourceLineNo">064</span>     * If the type has not been set, this method will return null.<a name="line.64"></a>
<span class="sourceLineNo">065</span>     */<a name="line.65"></a>
<span class="sourceLineNo">066</span>    public abstract String getTypeName();<a name="line.66"></a>
<span class="sourceLineNo">067</span><a name="line.67"></a>
<span class="sourceLineNo">068</span>    /**<a name="line.68"></a>
<span class="sourceLineNo">069</span>     * Return the type for this instruction.<a name="line.69"></a>
<span class="sourceLineNo">070</span>     * If the type has not been set, this method will return null.<a name="line.70"></a>
<span class="sourceLineNo">071</span>     */<a name="line.71"></a>
<span class="sourceLineNo">072</span>    public Class getType() {<a name="line.72"></a>
<span class="sourceLineNo">073</span>        String type = getTypeName();<a name="line.73"></a>
<span class="sourceLineNo">074</span>        if (type == null)<a name="line.74"></a>
<span class="sourceLineNo">075</span>            return null;<a name="line.75"></a>
<span class="sourceLineNo">076</span>        return Strings.toClass(type, getClassLoader());<a name="line.76"></a>
<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
<span class="sourceLineNo">078</span><a name="line.78"></a>
<span class="sourceLineNo">079</span>    /**<a name="line.79"></a>
<span class="sourceLineNo">080</span>     * Return the type for this instruction.<a name="line.80"></a>
<span class="sourceLineNo">081</span>     * If the type has not been set, this method will return null.<a name="line.81"></a>
<span class="sourceLineNo">082</span>     */<a name="line.82"></a>
<span class="sourceLineNo">083</span>    public BCClass getTypeBC() {<a name="line.83"></a>
<span class="sourceLineNo">084</span>        String type = getTypeName();<a name="line.84"></a>
<span class="sourceLineNo">085</span>        if (type == null)<a name="line.85"></a>
<span class="sourceLineNo">086</span>            return null;<a name="line.86"></a>
<span class="sourceLineNo">087</span>        return getProject().loadClass(type, getClassLoader());<a name="line.87"></a>
<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
<span class="sourceLineNo">089</span><a name="line.89"></a>
<span class="sourceLineNo">090</span>    /**<a name="line.90"></a>
<span class="sourceLineNo">091</span>     * Set the type of this instruction. Types that have no direct<a name="line.91"></a>
<span class="sourceLineNo">092</span>     * support will be converted accordingly.<a name="line.92"></a>
<span class="sourceLineNo">093</span>     *<a name="line.93"></a>
<span class="sourceLineNo">094</span>     * @return this instruction, for method chaining<a name="line.94"></a>
<span class="sourceLineNo">095</span>     */<a name="line.95"></a>
<span class="sourceLineNo">096</span>    public abstract TypedInstruction setType(String type);<a name="line.96"></a>
<span class="sourceLineNo">097</span><a name="line.97"></a>
<span class="sourceLineNo">098</span>    /**<a name="line.98"></a>
<span class="sourceLineNo">099</span>     * Set the type of this instruction. Types that have no direct<a name="line.99"></a>
<span class="sourceLineNo">100</span>     * support will be converted accordingly.<a name="line.100"></a>
<span class="sourceLineNo">101</span>     *<a name="line.101"></a>
<span class="sourceLineNo">102</span>     * @return this instruction, for method chaining<a name="line.102"></a>
<span class="sourceLineNo">103</span>     */<a name="line.103"></a>
<span class="sourceLineNo">104</span>    public TypedInstruction setType(Class type) {<a name="line.104"></a>
<span class="sourceLineNo">105</span>        if (type == null)<a name="line.105"></a>
<span class="sourceLineNo">106</span>            return setType((String) null);<a name="line.106"></a>
<span class="sourceLineNo">107</span>        return setType(type.getName());<a name="line.107"></a>
<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
<span class="sourceLineNo">109</span><a name="line.109"></a>
<span class="sourceLineNo">110</span>    /**<a name="line.110"></a>
<span class="sourceLineNo">111</span>     * Set the type of this instruction. Types that have no direct<a name="line.111"></a>
<span class="sourceLineNo">112</span>     * support will be converted accordingly.<a name="line.112"></a>
<span class="sourceLineNo">113</span>     *<a name="line.113"></a>
<span class="sourceLineNo">114</span>     * @return this instruction, for method chaining<a name="line.114"></a>
<span class="sourceLineNo">115</span>     */<a name="line.115"></a>
<span class="sourceLineNo">116</span>    public TypedInstruction setType(BCClass type) {<a name="line.116"></a>
<span class="sourceLineNo">117</span>        if (type == null)<a name="line.117"></a>
<span class="sourceLineNo">118</span>            return setType((String) null);<a name="line.118"></a>
<span class="sourceLineNo">119</span>        return setType(type.getName());<a name="line.119"></a>
<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
<span class="sourceLineNo">121</span>}<a name="line.121"></a>




























































</pre>
</div>
</body>
</html>