instanceOf: class hierarchy are considered properly now
[mate.git] / Mate / ClassPool.hs
index c99478a17e0930a7c3bab71c6f70cf986d1739b6..0e188a6f5a80f22f6ad0ca972d4c0067859437e2 100644 (file)
@@ -43,6 +43,7 @@ import Mate.Types
 import Mate.Debug
 import Mate.GarbageAlloc
 import Mate.NativeSizes
+import {-# SOURCE #-} Mate.ClassHierarchy
 
 getClassInfo :: B.ByteString -> IO ClassInfo
 getClassInfo path = do
@@ -165,6 +166,13 @@ readClass path = do
       class_map <- getClassMap
       let new_ci = ClassInfo path cfile staticmap fieldmap methodmap mbase False
       setClassMap $ M.insert path new_ci class_map
+
+      -- add Class to Hierarchy
+      super_mtable <- case superclass of
+        Nothing -> return 0
+        Just x -> getMethodTable $ ciName x
+      addClassEntry mbase super_mtable
+
       return new_ci