1 package shark.internal 2 3 import shark.HeapObject 4 import shark.HeapObject.HeapClass 5 import shark.HeapObject.HeapInstance 6 import shark.HeapObject.HeapObjectArray 7 import shark.HeapObject.HeapPrimitiveArray 8 9 internal class DelegatingObjectReferenceReader( 10 private val classReferenceReader: ReferenceReader<HeapClass>, 11 private val instanceReferenceReader: ReferenceReader<HeapInstance>, 12 private val objectArrayReferenceReader: ReferenceReader<HeapObjectArray>, 13 ) : ReferenceReader<HeapObject> { readnull14 override fun read(source: HeapObject): Sequence<Reference> { 15 return when(source) { 16 is HeapClass -> classReferenceReader.read(source) 17 is HeapInstance -> instanceReferenceReader.read(source) 18 is HeapObjectArray -> objectArrayReferenceReader.read(source) 19 is HeapPrimitiveArray -> emptySequence() 20 } 21 } 22 } 23