1# Copyright (C) 2016 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15.class public LMain; 16.super LMyThreadSet; 17 18.method public static ArgumentType_ResolvedClass(Ljava/lang/Thread;)V 19 .registers 1 20 return-void 21.end method 22 23.method public static ArgumentType_ResolvedReferenceArray([Ljava/lang/Thread;)V 24 .registers 1 25 return-void 26.end method 27 28.method public static ArgumentType_ResolvedPrimitiveArray([B)V 29 .registers 1 30 return-void 31.end method 32 33.method public static ArgumentType_UnresolvedClass(LUnresolvedClass;)V 34 .registers 1 35 return-void 36.end method 37 38.method public static ArgumentType_UnresolvedSuper(LMySetWithUnresolvedSuper;)V 39 .registers 1 40 return-void 41.end method 42 43.method public static ReturnType_Reference(Ljava/lang/IllegalStateException;)Ljava/lang/Throwable; 44 .registers 1 45 return-object p0 46.end method 47 48.method public static ReturnType_Array([Ljava/lang/IllegalStateException;)[Ljava/lang/Integer; 49 .registers 1 50 return-object p0 51.end method 52 53.method public static InvokeArgumentType(Ljava/text/SimpleDateFormat;Ljava/util/SimpleTimeZone;)V 54 .registers 2 55 invoke-virtual {p0, p1}, Ljava/text/SimpleDateFormat;->setTimeZone(Ljava/util/TimeZone;)V 56 return-void 57.end method 58 59.method public static MergeTypes_RegisterLines(Z)Ljava/lang/Object; 60 .registers 2 61 if-eqz p0, :else 62 63 new-instance v0, LMySocketTimeoutException; 64 invoke-direct {v0}, LMySocketTimeoutException;-><init>()V 65 goto :merge 66 67 :else 68 new-instance v0, Ljava/util/concurrent/TimeoutException; 69 invoke-direct {v0}, Ljava/util/concurrent/TimeoutException;-><init>()V 70 goto :merge 71 72 :merge 73 return-object v0 74.end method 75 76.method public static MergeTypes_IfInstanceOf(Ljava/net/SocketTimeoutException;)V 77 .registers 2 78 instance-of v0, p0, Ljava/util/concurrent/TimeoutException; 79 if-eqz v0, :else 80 return-void 81 :else 82 return-void 83.end method 84 85.method public static MergeTypes_Unresolved(ZZLUnresolvedClassA;)Ljava/lang/Object; 86 .registers 5 87 if-eqz p0, :else1 88 89 move-object v0, p2 90 goto :merge 91 92 :else1 93 if-eqz p1, :else2 94 95 new-instance v0, Ljava/util/concurrent/TimeoutException; 96 invoke-direct {v0}, Ljava/util/concurrent/TimeoutException;-><init>()V 97 goto :merge 98 99 :else2 100 new-instance v0, Ljava/net/SocketTimeoutException; 101 invoke-direct {v0}, Ljava/net/SocketTimeoutException;-><init>()V 102 goto :merge 103 104 :merge 105 return-object v0 106.end method 107 108.method public static ConstClass_Resolved()V 109 .registers 1 110 const-class v0, Ljava/lang/IllegalStateException; 111 return-void 112.end method 113 114.method public static ConstClass_Unresolved()V 115 .registers 1 116 const-class v0, LUnresolvedClass; 117 return-void 118.end method 119 120.method public static CheckCast_Resolved(Ljava/lang/Object;)V 121 .registers 1 122 check-cast p0, Ljava/lang/IllegalStateException; 123 return-void 124.end method 125 126.method public static CheckCast_Unresolved(Ljava/lang/Object;)V 127 .registers 1 128 check-cast p0, LUnresolvedClass; 129 return-void 130.end method 131 132.method public static InstanceOf_Resolved(Ljava/lang/Object;)Z 133 .registers 1 134 instance-of p0, p0, Ljava/lang/IllegalStateException; 135 return p0 136.end method 137 138.method public static InstanceOf_Unresolved(Ljava/lang/Object;)Z 139 .registers 1 140 instance-of p0, p0, LUnresolvedClass; 141 return p0 142.end method 143 144.method public static NewInstance_Resolved()V 145 .registers 1 146 new-instance v0, Ljava/lang/IllegalStateException; 147 return-void 148.end method 149 150.method public static NewInstance_Unresolved()V 151 .registers 1 152 new-instance v0, LUnresolvedClass; 153 return-void 154.end method 155 156.method public static NewArray_Resolved()V 157 .registers 1 158 const/4 v0, 0x1 159 new-array v0, v0, [Ljava/lang/IllegalStateException; 160 return-void 161.end method 162 163.method public static NewArray_Unresolved()V 164 .registers 2 165 const/4 v0, 0x1 166 new-array v0, v0, [LUnresolvedClass; 167 return-void 168.end method 169 170.method public static Throw(Ljava/lang/IllegalStateException;)V 171 .registers 2 172 throw p0 173.end method 174 175.method public static MoveException_Resolved()Ljava/lang/Object; 176 .registers 1 177 :try_start 178 invoke-static {}, Ljava/lang/System;->nanoTime()J 179 :try_end 180 .catch Ljava/net/SocketTimeoutException; {:try_start .. :try_end} :catch_block 181 .catch Ljava/io/InterruptedIOException; {:try_start .. :try_end} :catch_block 182 .catch Ljava/util/zip/ZipException; {:try_start .. :try_end} :catch_block 183 const/4 v0, 0x0 184 return-object v0 185 186 :catch_block 187 move-exception v0 188 return-object v0 189.end method 190 191.method public static MoveException_Unresolved()Ljava/lang/Object; 192 .registers 1 193 :try_start 194 invoke-static {}, Ljava/lang/System;->nanoTime()J 195 :try_end 196 .catch LUnresolvedException; {:try_start .. :try_end} :catch_block 197 const/4 v0, 0x0 198 return-object v0 199 200 :catch_block 201 move-exception v0 202 return-object v0 203.end method 204 205.method public static StaticField_Resolved_DeclaredInReferenced()V 206 .registers 1 207 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; 208 return-void 209.end method 210 211.method public static StaticField_Resolved_DeclaredInSuperclass1()V 212 .registers 1 213 sget v0, Ljava/util/SimpleTimeZone;->LONG:I 214 return-void 215.end method 216 217.method public static StaticField_Resolved_DeclaredInSuperclass2()V 218 .registers 1 219 sget v0, LMySimpleTimeZone;->SHORT:I 220 return-void 221.end method 222 223.method public static StaticField_Resolved_DeclaredInInterface1()V 224 .registers 1 225 # Case 1: DOMResult implements Result 226 sget-object v0, Ljavax/xml/transform/dom/DOMResult;->PI_ENABLE_OUTPUT_ESCAPING:Ljava/lang/String; 227 return-void 228.end method 229 230.method public static StaticField_Resolved_DeclaredInInterface2()V 231 .registers 1 232 # Case 2: MyDOMResult extends DOMResult, DOMResult implements Result 233 sget-object v0, LMyDOMResult;->PI_ENABLE_OUTPUT_ESCAPING:Ljava/lang/String; 234 return-void 235.end method 236 237.method public static StaticField_Resolved_DeclaredInInterface3()V 238 .registers 1 239 # Case 3: MyResult implements Result 240 sget-object v0, LMyResult;->PI_ENABLE_OUTPUT_ESCAPING:Ljava/lang/String; 241 return-void 242.end method 243 244.method public static StaticField_Resolved_DeclaredInInterface4()V 245 .registers 1 246 # Case 4: MyDocument implements Document, Document extends Node 247 sget-short v0, LMyDocument;->ELEMENT_NODE:S 248 return-void 249.end method 250 251.method public static StaticField_Unresolved_ReferrerInBoot()V 252 .registers 1 253 sget v0, Ljava/util/TimeZone;->x:I 254 return-void 255.end method 256 257.method public static StaticField_Unresolved_ReferrerInDex()V 258 .registers 1 259 sget v0, LMyThreadSet;->x:I 260 return-void 261.end method 262 263.method public static InstanceField_Resolved_DeclaredInReferenced(LMySocketTimeoutException;)V 264 .registers 1 265 iget v0, p0, Ljava/io/InterruptedIOException;->bytesTransferred:I 266 return-void 267.end method 268 269.method public static InstanceField_Resolved_DeclaredInSuperclass1(LMySocketTimeoutException;)V 270 .registers 1 271 iget v0, p0, Ljava/net/SocketTimeoutException;->bytesTransferred:I 272 return-void 273.end method 274 275.method public static InstanceField_Resolved_DeclaredInSuperclass2(LMySocketTimeoutException;)V 276 .registers 1 277 iget v0, p0, LMySocketTimeoutException;->bytesTransferred:I 278 return-void 279.end method 280 281.method public static InstanceField_Unresolved_ReferrerInBoot(LMySocketTimeoutException;)V 282 .registers 1 283 iget v0, p0, Ljava/io/InterruptedIOException;->x:I 284 return-void 285.end method 286 287.method public static InstanceField_Unresolved_ReferrerInDex(LMyThreadSet;)V 288 .registers 1 289 iget v0, p0, LMyThreadSet;->x:I 290 return-void 291.end method 292 293.method public static InvokeStatic_Resolved_DeclaredInReferenced()V 294 .registers 1 295 const v0, 0x0 296 invoke-static {v0}, Ljava/net/Socket;->setSocketImplFactory(Ljava/net/SocketImplFactory;)V 297 return-void 298.end method 299 300.method public static InvokeStatic_Resolved_DeclaredInSuperclass1()V 301 .registers 1 302 const v0, 0x0 303 invoke-static {v0}, Ljavax/net/ssl/SSLSocket;->setSocketImplFactory(Ljava/net/SocketImplFactory;)V 304 return-void 305.end method 306 307.method public static InvokeStatic_Resolved_DeclaredInSuperclass2()V 308 .registers 1 309 const v0, 0x0 310 invoke-static {v0}, LMySSLSocket;->setSocketImplFactory(Ljava/net/SocketImplFactory;)V 311 return-void 312.end method 313 314.method public static InvokeStatic_DeclaredInInterface1()V 315 .registers 1 316 invoke-static {}, Ljava/util/Map$Entry;->comparingByKey()Ljava/util/Comparator; 317 return-void 318.end method 319 320.method public static InvokeStatic_DeclaredInInterface2()V 321 .registers 1 322 # AbstractMap$SimpleEntry implements Map$Entry 323 # INVOKE_STATIC does not resolve to methods in superinterfaces. This will 324 # therefore result in an unresolved method. 325 invoke-static {}, Ljava/util/AbstractMap$SimpleEntry;->comparingByKey()Ljava/util/Comparator; 326 return-void 327.end method 328 329.method public static InvokeStatic_Unresolved1()V 330 .registers 1 331 invoke-static {}, Ljavax/net/ssl/SSLSocket;->x()V 332 return-void 333.end method 334 335.method public static InvokeStatic_Unresolved2()V 336 .registers 1 337 invoke-static {}, LMySSLSocket;->x()V 338 return-void 339.end method 340 341.method public static InvokeDirect_Resolved_DeclaredInReferenced()V 342 .registers 1 343 new-instance v0, Ljava/net/Socket; 344 invoke-direct {v0}, Ljava/net/Socket;-><init>()V 345 return-void 346.end method 347 348.method public static InvokeDirect_Resolved_DeclaredInSuperclass1(LMySSLSocket;)V 349 .registers 1 350 invoke-direct {p0}, Ljavax/net/ssl/SSLSocket;->checkOldImpl()V 351 return-void 352.end method 353 354.method public static InvokeDirect_Resolved_DeclaredInSuperclass2(LMySSLSocket;)V 355 .registers 1 356 invoke-direct {p0}, LMySSLSocket;->checkOldImpl()V 357 return-void 358.end method 359 360.method public static InvokeDirect_Unresolved1(LMySSLSocket;)V 361 .registers 1 362 invoke-direct {p0}, Ljavax/net/ssl/SSLSocket;->x()V 363 return-void 364.end method 365 366.method public static InvokeDirect_Unresolved2(LMySSLSocket;)V 367 .registers 1 368 invoke-direct {p0}, LMySSLSocket;->x()V 369 return-void 370.end method 371 372.method public static InvokeVirtual_Resolved_DeclaredInReferenced(LMySocketTimeoutException;)V 373 .registers 1 374 invoke-virtual {p0}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String; 375 return-void 376.end method 377 378.method public static InvokeVirtual_Resolved_DeclaredInSuperclass1(LMySocketTimeoutException;)V 379 .registers 1 380 invoke-virtual {p0}, Ljava/io/InterruptedIOException;->getMessage()Ljava/lang/String; 381 return-void 382.end method 383 384.method public static InvokeVirtual_Resolved_DeclaredInSuperclass2(LMySocketTimeoutException;)V 385 .registers 1 386 invoke-virtual {p0}, LMySocketTimeoutException;->getMessage()Ljava/lang/String; 387 return-void 388.end method 389 390.method public static InvokeVirtual_Resolved_DeclaredInSuperinterface(LMyThreadSet;)V 391 .registers 1 392 invoke-virtual {p0}, LMyThreadSet;->size()I 393 return-void 394.end method 395 396.method public static InvokeVirtual_Unresolved1(LMySocketTimeoutException;)V 397 .registers 1 398 invoke-virtual {p0}, Ljava/io/InterruptedIOException;->x()V 399 return-void 400.end method 401 402.method public static InvokeVirtual_Unresolved2(LMySocketTimeoutException;)V 403 .registers 1 404 invoke-virtual {p0}, LMySocketTimeoutException;->x()V 405 return-void 406.end method 407 408.method public static InvokeInterface_Resolved_DeclaredInReferenced(LMyThread;)V 409 .registers 1 410 invoke-interface {p0}, Ljava/lang/Runnable;->run()V 411 return-void 412.end method 413 414.method public static InvokeInterface_Resolved_DeclaredInSuperclass(LMyThread;)V 415 .registers 1 416 # Method join() is declared in the superclass of MyThread. As such, it should 417 # be called with invoke-virtual. However, the lookup type does not depend 418 # on the invoke type, so it shall be resolved here anyway. 419 # TODO: Maybe we should not record dependency if the invoke type does not match the lookup type. 420 invoke-interface {p0}, LMyThread;->join()V 421 return-void 422.end method 423 424.method public static InvokeInterface_Resolved_DeclaredInSuperinterface1(LMyThreadSet;)V 425 .registers 1 426 # Verification will fail because the referring class is not an interface. 427 # However, the lookup type does not depend on the invoke type, so it shall be resolved here anyway. 428 # TODO: Maybe we should not record dependency if the invoke type does not match the lookup type. 429 invoke-interface {p0}, LMyThreadSet;->run()V 430 return-void 431.end method 432 433.method public static InvokeInterface_Resolved_DeclaredInSuperinterface2(LMyThreadSet;)V 434 .registers 1 435 # Verification will fail because the referring class is not an interface. 436 invoke-interface {p0}, LMyThreadSet;->isEmpty()Z 437 return-void 438.end method 439 440.method public static InvokeInterface_Unresolved1(LMyThread;)V 441 .registers 1 442 invoke-interface {p0}, Ljava/lang/Runnable;->x()V 443 return-void 444.end method 445 446.method public static InvokeInterface_Unresolved2(LMyThread;)V 447 .registers 1 448 invoke-interface {p0}, LMyThreadSet;->x()V 449 return-void 450.end method 451 452.method public static InvokeSuper_ThisAssignable(Ljava/lang/Thread;)V 453 .registers 1 454 invoke-super {p0}, Ljava/lang/Runnable;->run()V 455 return-void 456.end method 457 458.method public static InvokeSuper_ThisNotAssignable(Ljava/lang/Integer;)V 459 .registers 1 460 invoke-super {p0}, Ljava/lang/Integer;->intValue()I 461 return-void 462.end method 463