• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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