diff --git a/TypeNodes.py b/TypeNodes.py index 484e80c15685dac354c5d7dbe9c4b8a340bd4ee1..da61b931971c93d0bed08955eee270d5ecc01908 100644 --- a/TypeNodes.py +++ b/TypeNodes.py @@ -315,6 +315,9 @@ class ClassNode(ClassInterNode): self.data = "" # For writeable data section # print("This is the super class: {}".format(self.superClass)) + if self.canonName == "java.lang.Object": + self.data += p("global", "I_SIT_" + self.name) + # Generate class label self.label = pLabel(name=self.name, type="class") self.data += ";START OF CLASS MEMORY LAYOUT FOR CLASS: " + self.canonName + "\n" @@ -405,18 +408,16 @@ class ClassNode(ClassInterNode): # fill in SIT self.code += "\n; Filling in SIT\n" self.code += p("mov", "eax", "I_SIT_spot_" + self.name) - if self.canonName == "java.lang.Object": - self.code += p("global", "I_SIT_" + self.name) self.code += p("mov", "[eax]", "dword I_SIT_" + self.name) for m in self.contains: if m.__class__.__name__ == "MethodNode": sm = m.getTopReplace() - if sm != m and sm.isInterM: - dlabel = "I_SIT_" + str(sm.methodOffset / 4) + if sm.typeName != m.typeName and sm.isInterM: + dlabel = "I_SIT_" + str(sm.methodOffset // 4) className = m.typeName imLabel = "M_" + className + "_" + m.name + "_" + m.paramTypes - if className != self.typeName: + if className != self.name: self.code += p("extern", imLabel) self.code += p("mov", "eax", dlabel) self.code += p("mov", "[eax]", "dword " + imLabel)