ART: Make test 913-heaps more robust

Record the expected sizes of classes with GetObjectSize and replace
them with a serial to make the code robust to the Java runtime and
bitness used.

Bug: 65459070
Test: art/test/testrunner/testrunner.py -b --host -t 913
Change-Id: Iefcb7b896eee5e8b420b9b2a143c16ad15137306
diff --git a/test/913-heaps/expected.txt b/test/913-heaps/expected.txt
index 6144881..57c2dc6 100644
--- a/test/913-heaps/expected.txt
+++ b/test/913-heaps/expected.txt
@@ -5,43 +5,43 @@
 root@root --(stack-local[id=1,tag=3000,depth=3,method=doFollowReferencesTest,vreg=1,location= 28])--> 3000@0 [size=136, length=-1]
 root@root --(stack-local[id=1,tag=3000,depth=5,method=run,vreg=2,location= 0])--> 3000@0 [size=136, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780000, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780004, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780001, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780003, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780001, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780002, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780000, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780004, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780001, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780003, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780001, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780002, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780000, length=-1]
 ---
 root@root --(jni-global)--> 1@1000 [size=16, length=-1]
 root@root --(jni-local[id=1,tag=3000,depth=0,method=followReferences])--> 1@1000 [size=16, length=-1]
@@ -52,51 +52,51 @@
 root@root --(stack-local[id=1,tag=3000,depth=5,method=run,vreg=2,location= 0])--> 3000@0 [size=136, length=-1]
 root@root --(thread)--> 1@1000 [size=16, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780005, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780009, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780006, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780008, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780006, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780007, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780005, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780009, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780006, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780008, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780006, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780007, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780005, length=-1]
 ---
 root@root --(thread)--> 3000@0 [size=136, length=-1]
 ---
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780011, length=-1]
 ---
 root@root --(thread)--> 3000@0 [size=136, length=-1]
 ---
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780016, length=-1]
 ---
 root@root --(jni-local[id=1,tag=3000,depth=0,method=followReferences])--> 3000@0 [size=136, length=-1]
 root@root --(stack-local[id=1,tag=3000,depth=2,method=doFollowReferencesTestNonRoot,vreg=13,location= 30])--> 1@1000 [size=16, length=-1]
@@ -104,8 +104,8 @@
 root@root --(stack-local[id=1,tag=3000,depth=5,method=run,vreg=2,location= 0])--> 3000@0 [size=136, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780020, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780021, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
 ---
@@ -119,8 +119,8 @@
 root@root --(thread)--> 1@1000 [size=16, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780025, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780026, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
 ---
@@ -202,43 +202,43 @@
 root@root --(stack-local[id=1,tag=3000,depth=3,method=doFollowReferencesTest,vreg=1,location= 28])--> 3000@0 [size=136, length=-1]
 root@root --(stack-local[id=1,tag=3000,depth=5,method=run,vreg=2,location= 0])--> 3000@0 [size=136, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780050, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780054, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780051, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780053, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780051, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780052, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780050, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780054, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780051, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780053, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780051, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780052, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780050, length=-1]
 ---
 root@root --(jni-global)--> 1@1000 [size=16, length=-1]
 root@root --(jni-local[id=1,tag=3000,depth=0,method=followReferences])--> 1@1000 [size=16, length=-1]
@@ -249,99 +249,99 @@
 root@root --(stack-local[id=1,tag=3000,depth=5,method=run,vreg=2,location= 0])--> 3000@0 [size=136, length=-1]
 root@root --(thread)--> 1@1000 [size=16, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780055, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780059, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780056, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780058, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780056, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780057, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780055, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780059, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780056, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
 1@1000 --(field@2)--> 2@1000 [size=16, length=-1]
 1@1000 --(field@3)--> 3@1001 [size=24, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780058, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780056, length=-1]
 3@1001 --(field@4)--> 4@1000 [size=16, length=-1]
 3@1001 --(field@5)--> 5@1002 [size=36, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
 500@0 --(array-element@1)--> 2@1000 [size=16, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780057, length=-1]
 5@1002 --(field@10)--> 1@1000 [size=16, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
 5@1002 --(field@9)--> 6@1000 [size=16, length=-1]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780055, length=-1]
 ---
 ---- tagged classes
 root@root --(jni-local[id=1,tag=3000,depth=0,method=followReferences])--> 3000@0 [size=136, length=-1]
 root@root --(stack-local[id=1,tag=3000,depth=3,method=doFollowReferencesTest,vreg=1,location= 28])--> 3000@0 [size=136, length=-1]
 root@root --(stack-local[id=1,tag=3000,depth=5,method=run,vreg=2,location= 0])--> 3000@0 [size=136, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780060, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780064, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780061, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780063, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780061, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780062, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780060, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780064, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780061, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780063, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780061, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780062, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780060, length=-1]
 ---
 root@root --(jni-local[id=1,tag=3000,depth=0,method=followReferences])--> 3000@0 [size=136, length=-1]
 root@root --(stack-local[id=1,tag=3000,depth=5,method=run,vreg=2,location= 0])--> 3000@0 [size=136, length=-1]
 root@root --(thread)--> 3000@0 [size=136, length=-1]
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780065, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780069, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780066, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780068, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780066, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780067, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
 ---
-1001@0 --(superclass)--> 1000@0 [size=123, length=-1]
-1002@0 --(interface)--> 2001@0 [size=124, length=-1]
-1002@0 --(superclass)--> 1001@0 [size=123, length=-1]
-1@1000 --(class)--> 1000@0 [size=123, length=-1]
-2001@0 --(interface)--> 2000@0 [size=124, length=-1]
-2@1000 --(class)--> 1000@0 [size=123, length=-1]
-3@1001 --(class)--> 1001@0 [size=123, length=-1]
-4@1000 --(class)--> 1000@0 [size=123, length=-1]
-5@1002 --(class)--> 1002@0 [size=123, length=-1]
+1001@0 --(superclass)--> 1000@0 [size=123456780065, length=-1]
+1002@0 --(interface)--> 2001@0 [size=123456780069, length=-1]
+1002@0 --(superclass)--> 1001@0 [size=123456780066, length=-1]
+1@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
+2001@0 --(interface)--> 2000@0 [size=123456780068, length=-1]
+2@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
+3@1001 --(class)--> 1001@0 [size=123456780066, length=-1]
+4@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
+5@1002 --(class)--> 1002@0 [size=123456780067, length=-1]
 5@1002 --(field@8)--> 500@0 [size=20, length=2]
-6@1000 --(class)--> 1000@0 [size=123, length=-1]
+6@1000 --(class)--> 1000@0 [size=123456780065, length=-1]
 ---
 ---- untagged classes
 root@root --(stack-local[id=1,tag=3000,depth=2,method=doFollowReferencesTestNonRoot,vreg=13,location= 30])--> 1@1000 [size=16, length=-1]
diff --git a/test/913-heaps/heaps.cc b/test/913-heaps/heaps.cc
index f7862c7..00a7ea7 100644
--- a/test/913-heaps/heaps.cc
+++ b/test/913-heaps/heaps.cc
@@ -19,6 +19,7 @@
 #include <cstdio>
 #include <cstring>
 #include <iostream>
+#include <map>
 #include <sstream>
 #include <vector>
 
@@ -50,6 +51,36 @@
   JvmtiErrorToException(env, jvmti_env, ret);
 }
 
+// Collect sizes of objects (classes) ahead of time, to be able to normalize.
+struct ClassData {
+  jlong size;    // Size as reported by GetObjectSize.
+  jlong serial;  // Computed serial that should be printed instead of the size.
+};
+
+// Stores a map from tags to ClassData.
+static std::map<jlong, ClassData> sClassData;
+static size_t sClassDataSerial = 0;
+// Large enough number that a collision with a test object is unlikely.
+static constexpr jlong kClassDataSerialBase = 123456780000;
+
+// Register a class (or general object) in the class-data map. The serial number is determined by
+// the order of calls to this function (so stable Java code leads to stable numbering).
+extern "C" JNIEXPORT void JNICALL Java_art_Test913_registerClass(
+    JNIEnv* env, jclass klass ATTRIBUTE_UNUSED, jlong tag, jobject obj) {
+  ClassData data;
+  if (JvmtiErrorToException(env, jvmti_env, jvmti_env->GetObjectSize(obj, &data.size))) {
+    return;
+  }
+  data.serial = kClassDataSerialBase + sClassDataSerial++;
+  // Remove old element, if it exists.
+  auto old = sClassData.find(tag);
+  if (old != sClassData.end()) {
+    sClassData.erase(old);
+  }
+  // Now insert the new mapping.
+  sClassData.insert(std::pair<jlong, ClassData>(tag, data));
+}
+
 class IterationConfig {
  public:
   IterationConfig() {}
@@ -195,11 +226,17 @@
       }
 
       jlong adapted_size = size;
-      if (*tag_ptr >= 1000) {
+      if (*tag_ptr != 0) {
         // This is a class or interface, the size of which will be dependent on the architecture.
         // Do not print the size, but detect known values and "normalize" for the golden file.
-        if ((sizeof(void*) == 4 && size == 172) || (sizeof(void*) == 8 && size == 224)) {
-          adapted_size = 123;
+        auto it = sClassData.find(*tag_ptr);
+        if (it != sClassData.end()) {
+          const ClassData& class_data = it->second;
+          if (class_data.size == size) {
+            adapted_size = class_data.serial;
+          } else {
+            adapted_size = 0xDEADDEAD;
+          }
         }
       }
 
diff --git a/test/913-heaps/src/art/Test913.java b/test/913-heaps/src/art/Test913.java
index b999001..4fffa88 100644
--- a/test/913-heaps/src/art/Test913.java
+++ b/test/913-heaps/src/art/Test913.java
@@ -404,17 +404,22 @@
 
     private static void tagClasses(Verifier v) {
       setTag(A.class, 1000);
+      registerClass(1000, A.class);
 
       setTag(B.class, 1001);
+      registerClass(1001, B.class);
       v.add("1001@0", "1000@0");  // B.class --(superclass)--> A.class.
 
       setTag(C.class, 1002);
+      registerClass(1002, C.class);
       v.add("1002@0", "1001@0");  // C.class --(superclass)--> B.class.
       v.add("1002@0", "2001@0");  // C.class --(interface)--> I2.class.
 
       setTag(I1.class, 2000);
+      registerClass(2000, I1.class);
 
       setTag(I2.class, 2001);
+      registerClass(2001, I2.class);
       v.add("2001@0", "2000@0");  // I2.class --(interface)--> I1.class.
     }
 
@@ -751,4 +756,6 @@
   public static native String followReferencesPrimitiveFields(Object initialObject);
 
   private static native void iterateThroughHeapExt();
+
+  private static native void registerClass(long tag, Object obj);
 }