common_test.h revision 578bbdc684db8ed68e9fedbc678669d27fa68b6e
1934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// Copyright 2011 Google Inc. All Rights Reserved. 2934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom 3578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "base64.h" 4578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "heap.h" 5578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "thread.h" 6578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "class_linker.h" 7578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "dex_file.h" 8a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom 9a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom#include "gtest/gtest.h" 10a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom 11934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstromnamespace art { 12934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom 13a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// package java.lang; 14a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// public class Object {} 15a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// 16a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// package java.lang; 17a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// public interface Cloneable {} 18a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// 19a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// package java.io; 20a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom// public interface Serializable {} 21a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstromstatic const char kJavaLangDex[] = 22a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "ZGV4CjAzNQAdS5NB20pfz7Z3u9Jh2IVuB3Hxe6BzR9FAAgAAcAAAAHhWNBIAAAAAAAAAALgBAAAI" 23a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "AAAAcAAAAAQAAACQAAAAAQAAAKAAAAAAAAAAAAAAAAEAAACsAAAAAwAAALQAAAAsAQAAFAEAACgB" 24a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "AAAwAQAAQAEAAFgBAABvAQAAgwEAAJABAACjAQAAAgAAAAMAAAAEAAAABwAAAAcAAAADAAAAAAAA" 25a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "AAIAAAAAAAAAAgAAAAEAAAD/////AAAAAAUAAAAAAAAAqwEAAAAAAAAAAAAAAQYAAAIAAAAAAAAA" 26a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "BgAAAAAAAAAAAAAAAAAAAAEAAAABBgAAAgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQABAAAAAACm" 27a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "AQAAAQAAAA4AAAAGPGluaXQ+AA5DbG9uZWFibGUuamF2YQAWTGphdmEvaW8vU2VyaWFsaXphYmxl" 28a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "OwAVTGphdmEvbGFuZy9DbG9uZWFibGU7ABJMamF2YS9sYW5nL09iamVjdDsAC09iamVjdC5qYXZh" 29a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "ABFTZXJpYWxpemFibGUuamF2YQABVgADAAcOAAAAAQAAgYAElAIAAAALAAAAAAAAAAEAAAAAAAAA" 30a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "AQAAAAgAAABwAAAAAgAAAAQAAACQAAAAAwAAAAEAAACgAAAABQAAAAEAAACsAAAABgAAAAMAAAC0" 31a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "AAAAASAAAAEAAAAUAQAAAiAAAAgAAAAoAQAAAyAAAAEAAACmAQAAACAAAAEAAACrAQAAABAAAAEA" 32a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom "AAC4AQAA"; 33a331b3cc392132c7333d36649a8310f38f4822ccBrian Carlstrom 34934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// package java.lang; 35934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// public class Object {} 36934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// 37934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// class MyClass {} 38934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstromstatic const char kMyClassDex[] = 39934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "ZGV4CjAzNQA5Nm9IrCVm91COwepff7LhIE23GZIxGjgIAgAAcAAAAHhWNBIAAAAAAAAAAIABAAAG" 40934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAcAAAAAMAAACIAAAAAQAAAJQAAAAAAAAAAAAAAAIAAACgAAAAAgAAALAAAAAYAQAA8AAAABwB" 41934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAkAQAALwEAAEMBAABRAQAAXgEAAAEAAAACAAAABQAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAQAA" 42934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAAAABAAAAAQAAAP////8AAAAABAAAAAAAAABrAQAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAA" 43934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAAHUBAAAAAAAAAQABAAAAAABhAQAAAQAAAA4AAAABAAEAAQAAAGYBAAAEAAAAcBABAAAADgAG" 44934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "PGluaXQ+AAlMTXlDbGFzczsAEkxqYXZhL2xhbmcvT2JqZWN0OwAMTXlDbGFzcy5qYXZhAAtPYmpl" 45934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "Y3QuamF2YQABVgACAAcOAAUABw4AAAABAAGBgATwAQAAAQAAgIAEhAIACwAAAAAAAAABAAAAAAAA" 46934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAEAAAAGAAAAcAAAAAIAAAADAAAAiAAAAAMAAAABAAAAlAAAAAUAAAACAAAAoAAAAAYAAAACAAAA" 47934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "sAAAAAEgAAACAAAA8AAAAAIgAAAGAAAAHAEAAAMgAAACAAAAYQEAAAAgAAACAAAAawEAAAAQAAAB" 48934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAgAEAAA=="; 49934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom 50934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// class Nested { 51934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// class Inner { 52934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// } 53934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// } 54934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstromstatic const char kNestedDex[] = 55934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "ZGV4CjAzNQAQedgAe7gM1B/WHsWJ6L7lGAISGC7yjD2IAwAAcAAAAHhWNBIAAAAAAAAAAMQCAAAP" 56934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAcAAAAAcAAACsAAAAAgAAAMgAAAABAAAA4AAAAAMAAADoAAAAAgAAAAABAABIAgAAQAEAAK4B" 57934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAC2AQAAvQEAAM0BAADXAQAA+wEAABsCAAA+AgAAUgIAAF8CAABiAgAAZgIAAHMCAAB5AgAAgQIA" 58934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAkAAAAJAAAABgAAAAAAAAAKAAAABgAAAKgBAAAAAAEA" 59934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "DQAAAAAAAQAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAIAAAAiAEAAKsCAAAA" 60934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAAQAAAAAAAAAFAAAAAAAAAAgAAACYAQAAuAIAAAAAAAACAAAAlAIAAJoCAAABAAAAowIAAAIA" 61934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AgABAAAAiAIAAAYAAABbAQAAcBACAAAADgABAAEAAQAAAI4CAAAEAAAAcBACAAAADgBAAQAAAAAA" 62934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAAAAAAAAATAEAAAAAAAAAAAAAAAAAAAEAAAABAAY8aW5pdD4ABUlubmVyAA5MTmVzdGVkJElu" 63934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "bmVyOwAITE5lc3RlZDsAIkxkYWx2aWsvYW5ub3RhdGlvbi9FbmNsb3NpbmdDbGFzczsAHkxkYWx2" 64934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "aWsvYW5ub3RhdGlvbi9Jbm5lckNsYXNzOwAhTGRhbHZpay9hbm5vdGF0aW9uL01lbWJlckNsYXNz" 65934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "ZXM7ABJMamF2YS9sYW5nL09iamVjdDsAC05lc3RlZC5qYXZhAAFWAAJWTAALYWNjZXNzRmxhZ3MA" 66934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "BG5hbWUABnRoaXMkMAAFdmFsdWUAAgEABw4AAQAHDjwAAgIBDhgBAgMCCwQADBcBAgQBDhwBGAAA" 67934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AQEAAJAgAICABNQCAAABAAGAgATwAgAAEAAAAAAAAAABAAAAAAAAAAEAAAAPAAAAcAAAAAIAAAAH" 68934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAArAAAAAMAAAACAAAAyAAAAAQAAAABAAAA4AAAAAUAAAADAAAA6AAAAAYAAAACAAAAAAEAAAMQ" 69934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAACAAAAQAEAAAEgAAACAAAAVAEAAAYgAAACAAAAiAEAAAEQAAABAAAAqAEAAAIgAAAPAAAArgEA" 70934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAMgAAACAAAAiAIAAAQgAAADAAAAlAIAAAAgAAACAAAAqwIAAAAQAAABAAAAxAIAAA=="; 71934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom 72934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// class ProtoCompare { 73934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// int m1(short x, int y, long z) { return x + y + (int)z; } 74934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// int m2(short x, int y, long z) { return x + y + (int)z; } 75934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// int m3(long x, int y, short z) { return (int)x + y + z; } 76934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// long m4(long x, int y, short z) { return x + y + z; } 77934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// } 78934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstromstatic const char kProtoCompareDex[] = 79934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "ZGV4CjAzNQBLUetu+TVZ8gsYsCOFoij7ecsHaGSEGA8gAwAAcAAAAHhWNBIAAAAAAAAAAIwCAAAP" 80934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAcAAAAAYAAACsAAAABAAAAMQAAAAAAAAAAAAAAAYAAAD0AAAAAQAAACQBAADcAQAARAEAAN4B" 81934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AADmAQAA6QEAAO8BAAD1AQAA+AEAAP4BAAAOAgAAIgIAADUCAAA4AgAAOwIAAD8CAABDAgAARwIA" 82934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAEAAAAEAAAABgAAAAcAAAAJAAAACgAAAAIAAAAAAAAAyAEAAAMAAAAAAAAA1AEAAAUAAAABAAAA" 83934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "yAEAAAoAAAAFAAAAAAAAAAIAAwAAAAAAAgABAAsAAAACAAEADAAAAAIAAAANAAAAAgACAA4AAAAD" 84934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAMAAAAAAAIAAAAAAAAAAwAAAAAAAAAIAAAAAAAAAHACAAAAAAAAAQABAAEAAABLAgAABAAAAHAQ" 85934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "BQAAAA4ABwAFAAAAAABQAgAABQAAAJAAAwSEUbAQDwAAAAcABQAAAAAAWAIAAAUAAACQAAMEhFGw" 86934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "EA8AAAAGAAUAAAAAAGACAAAEAAAAhCCwQLBQDwAJAAUAAAAAAGgCAAAFAAAAgXC7UIGCuyAQAAAA" 87934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AwAAAAEAAAAEAAAAAwAAAAQAAAABAAY8aW5pdD4AAUkABElKSVMABElTSUoAAUoABEpKSVMADkxQ" 88934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "cm90b0NvbXBhcmU7ABJMamF2YS9sYW5nL09iamVjdDsAEVByb3RvQ29tcGFyZS5qYXZhAAFTAAFW" 89934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAJtMQACbTIAAm0zAAJtNAABAAcOAAIDAAAABw4AAwMAAAAHDgAEAwAAAAcOAAUDAAAABw4AAAAB" 90934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "BACAgATEAgEA3AIBAPgCAQCUAwEArAMAAAwAAAAAAAAAAQAAAAAAAAABAAAADwAAAHAAAAACAAAA" 91934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "BgAAAKwAAAADAAAABAAAAMQAAAAFAAAABgAAAPQAAAAGAAAAAQAAACQBAAABIAAABQAAAEQBAAAB" 92934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "EAAAAgAAAMgBAAACIAAADwAAAN4BAAADIAAABQAAAEsCAAAAIAAAAQAAAHACAAAAEAAAAQAAAIwC" 93934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAA="; 94934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom 95934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// class ProtoCompare2 { 96934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// int m1(short x, int y, long z) { return x + y + (int)z; } 97934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// int m2(short x, int y, long z) { return x + y + (int)z; } 98934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// int m3(long x, int y, short z) { return (int)x + y + z; } 99934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// long m4(long x, int y, short z) { return x + y + z; } 100934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom// } 101934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstromstatic const char kProtoCompare2Dex[] = 102934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "ZGV4CjAzNQDVUXj687EpyTTDJZEZPA8dEYnDlm0Ir6YgAwAAcAAAAHhWNBIAAAAAAAAAAIwCAAAP" 103934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAAAcAAAAAYAAACsAAAABAAAAMQAAAAAAAAAAAAAAAYAAAD0AAAAAQAAACQBAADcAQAARAEAAN4B" 104934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AADmAQAA6QEAAO8BAAD1AQAA+AEAAP4BAAAPAgAAIwIAADcCAAA6AgAAPQIAAEECAABFAgAASQIA" 105934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAEAAAAEAAAABgAAAAcAAAAJAAAACgAAAAIAAAAAAAAAyAEAAAMAAAAAAAAA1AEAAAUAAAABAAAA" 106934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "yAEAAAoAAAAFAAAAAAAAAAIAAwAAAAAAAgABAAsAAAACAAEADAAAAAIAAAANAAAAAgACAA4AAAAD" 107934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAMAAAAAAAIAAAAAAAAAAwAAAAAAAAAIAAAAAAAAAHICAAAAAAAAAQABAAEAAABNAgAABAAAAHAQ" 108934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "BQAAAA4ABwAFAAAAAABSAgAABQAAAJAAAwSEUbAQDwAAAAcABQAAAAAAWgIAAAUAAACQAAMEhFGw" 109934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "EA8AAAAGAAUAAAAAAGICAAAEAAAAhCCwQLBQDwAJAAUAAAAAAGoCAAAFAAAAgXC7UIGCuyAQAAAA" 110934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AwAAAAEAAAAEAAAAAwAAAAQAAAABAAY8aW5pdD4AAUkABElKSVMABElTSUoAAUoABEpKSVMAD0xQ" 111934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "cm90b0NvbXBhcmUyOwASTGphdmEvbGFuZy9PYmplY3Q7ABJQcm90b0NvbXBhcmUyLmphdmEAAVMA" 112934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AVYAAm0xAAJtMgACbTMAAm00AAEABw4AAgMAAAAHDgADAwAAAAcOAAQDAAAABw4ABQMAAAAHDgAA" 113934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAEEAICABMQCAQDcAgEA+AIBAJQDAQCsAwwAAAAAAAAAAQAAAAAAAAABAAAADwAAAHAAAAACAAAA" 114934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "BgAAAKwAAAADAAAABAAAAMQAAAAFAAAABgAAAPQAAAAGAAAAAQAAACQBAAABIAAABQAAAEQBAAAB" 115934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "EAAAAgAAAMgBAAACIAAADwAAAN4BAAADIAAABQAAAE0CAAAAIAAAAQAAAHICAAAAEAAAAQAAAIwC" 116934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom "AAA="; 117934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom 118b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// javac MyClass.java && dx --dex --output=MyClass.dex 119b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// --core-library MyClass.class java/lang/Object.class && base64 MyClass.dex 120b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// package java.lang; 121b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// public class Object {} 122b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// class MyClass { 123b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// native void foo(); 124b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// native int fooI(int x); 125b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// native int fooII(int x, int y); 126b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// native double fooDD(double x, double y); 127b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// native Object fooIOO(int x, Object y, Object z); 128b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// static native Object fooSIOO(int x, Object y, Object z); 129df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers// static synchronized native Object fooSSIOO(int x, Object y, Object z); 130b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers// } 131b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogersstatic const char kMyClassNativesDex[] = 132df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "ZGV4CjAzNQA4WWrpXgdlkoTHR8Yubx4LJO4HbGsX1p1EAwAAcAAAAHhWNBIAAAAAAAAAALACAAAT" 133df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AAAAcAAAAAUAAAC8AAAABQAAANAAAAAAAAAAAAAAAAkAAAAMAQAAAgAAAFQBAACwAQAAlAEAAOIB" 134df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AADqAQAA7QEAAPIBAAD1AQAA+QEAAP4BAAAEAgAADwIAACMCAAAxAgAAPgIAAEECAABGAgAATQIA" 135df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AFMCAABaAgAAYgIAAGsCAAABAAAAAwAAAAcAAAAIAAAACwAAAAIAAAAAAAAAwAEAAAQAAAABAAAA" 136df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "yAEAAAUAAAABAAAA0AEAAAYAAAADAAAA2AEAAAsAAAAEAAAAAAAAAAIABAAAAAAAAgAEAAwAAAAC" 137df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AAAADQAAAAIAAQAOAAAAAgACAA8AAAACAAMAEAAAAAIAAwARAAAAAgADABIAAAADAAQAAAAAAAMA" 138df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AAABAAAA/////wAAAAAKAAAAAAAAAH8CAAAAAAAAAgAAAAAAAAADAAAAAAAAAAkAAAAAAAAAiQIA" 139df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AAAAAAABAAEAAAAAAHUCAAABAAAADgAAAAEAAQABAAAAegIAAAQAAABwEAgAAAAOAAIAAAAAAAAA" 140df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AQAAAAEAAAACAAAAAQABAAMAAAABAAMAAwAGPGluaXQ+AAFEAANEREQAAUkAAklJAANJSUkABExJ" 141df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "TEwACUxNeUNsYXNzOwASTGphdmEvbGFuZy9PYmplY3Q7AAxNeUNsYXNzLmphdmEAC09iamVjdC5q" 142df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "YXZhAAFWAANmb28ABWZvb0REAARmb29JAAVmb29JSQAGZm9vSU9PAAdmb29TSU9PAAhmb29TU0lP" 143df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "TwADAAcOAAEABw4AAAABAAiBgASUAwAAAwUAgIAEqAMGiAIAAaiCCAABgAIAAYACAAGAAgABgAIA" 144df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AYACAAwAAAAAAAAAAQAAAAAAAAABAAAAEwAAAHAAAAACAAAABQAAALwAAAADAAAABQAAANAAAAAF" 145df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AAAACQAAAAwBAAAGAAAAAgAAAFQBAAABIAAAAgAAAJQBAAABEAAABAAAAMABAAACIAAAEwAAAOIB" 146df20fe0c097073f75f22d16e72fd3636a31d3ca1Ian Rogers "AAADIAAAAgAAAHUCAAAAIAAAAgAAAH8CAAAAEAAAAQAAALACAAA="; 147b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 148578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstromstatic inline RawDexFile* OpenRawDexFileBase64(const char* base64) { 149578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom CHECK(base64 != NULL); 150578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom size_t length; 151578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom byte* dex_file = DecodeBase64(base64, &length); 152578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom CHECK(dex_file != NULL); 153578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom RawDexFile* raw_dex_file = RawDexFile::OpenPtr(dex_file, length); 154578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom CHECK(raw_dex_file != NULL); 155578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom return raw_dex_file; 156578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom} 157578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom 158578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstromclass RuntimeTest : public testing::Test { 159578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom protected: 160578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom virtual void SetUp() { 161578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom ASSERT_TRUE(Thread::Init()); 162578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom ASSERT_TRUE(Thread::Attach() != NULL); 163578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom ASSERT_TRUE(Heap::Init()); 164578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom 165578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom java_lang_raw_dex_file_.reset(OpenRawDexFileBase64(kJavaLangDex)); 166578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom 167578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom std::vector<RawDexFile*> boot_class_path; 168578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom boot_class_path.push_back(java_lang_raw_dex_file_.get()); 169578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom 170578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom class_linker_.reset(ClassLinker::Create(boot_class_path)); 171578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom CHECK(class_linker_ != NULL); 172578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom } 173578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom 174578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom virtual void TearDown() { 175578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom Heap::Destroy(); 176578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom } 177578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom 178578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom scoped_ptr<RawDexFile> java_lang_raw_dex_file_; 179578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom scoped_ptr<ClassLinker> class_linker_; 180578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom}; 181578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom 182934486cf07c578b6494417ca5dcbae89cf04b019Brian Carlstrom} // namespace art 183