Skip to content

Commit

Permalink
Merge pull request #345 from scala-native/topic/fix-330
Browse files Browse the repository at this point in the history
Don't tag module names
  • Loading branch information
densh committed Oct 21, 2016
2 parents 0d336c8 + 38479f3 commit a782f95
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -277,14 +277,12 @@ object ClassHierarchy {
isModule = false))

case defn: Defn.Module =>
val name = defn.name tag "module"
val cls = new Class(defn.attrs,
name,
defn.parent,
defn.traits,
isModule = true)
enter(defn.name, cls)
enter(name, cls)
enter(defn.name,
new Class(defn.attrs,
defn.name,
defn.parent,
defn.traits,
isModule = true))

case defn: Defn.Var =>
enter(defn.name, new Field(defn.attrs, defn.name, defn.ty))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,12 @@ import nir._
*/
class ModuleLowering(implicit top: Top, fresh: Fresh) extends Pass {
override def preDefn = {
case Defn.Module(attrs, name @ ClassRef(cls), parent, ifaces) =>
val clsName = name tag "module"
val clsDefn = Defn.Class(attrs, name tag "module", parent, ifaces)
case Defn.Module(attrs, clsName @ ClassRef(cls), parent, ifaces) =>
val clsDefn = Defn.Class(attrs, clsName, parent, ifaces)
val clsTy = Type.Class(clsName)
val clsNull = Val.Zero(clsTy)

val valueName = name tag "value"
val valueName = clsName tag "value"
val valueDefn = Defn.Var(Attrs.None, valueName, clsTy, clsNull)
val value = Val.Global(valueName, Type.Ptr)

Expand All @@ -58,16 +57,16 @@ class ModuleLowering(implicit top: Top, fresh: Fresh) extends Pass {
val cond = Val.Local(fresh(), Type.Bool)
val alloc = Val.Local(fresh(), clsTy)

val initCall = if (isStaticModule(name)) {
val initCall = if (isStaticModule(clsName)) {
Inst.None
} else {
val initSig = Type.Function(Seq(Arg(Type.Class(name))), Type.Void)
val init = Val.Global(name member "init", Type.Ptr)
val initSig = Type.Function(Seq(Arg(Type.Class(clsName))), Type.Void)
val init = Val.Global(clsName member "init", Type.Ptr)

Inst.Let(Op.Call(initSig, init, Seq(alloc)))
}

val loadName = name tag "load"
val loadName = clsName tag "load"
val loadSig = Type.Function(Seq(), clsTy)
val loadDefn = Defn.Define(
Attrs.None,
Expand All @@ -90,7 +89,7 @@ class ModuleLowering(implicit top: Top, fresh: Fresh) extends Pass {

override def preInst = {
case Inst.Let(n, Op.Module(name)) =>
val loadSig = Type.Function(Seq(), Type.Class(name tag "module"))
val loadSig = Type.Function(Seq(), Type.Class(name))
val load = Val.Global(name tag "load", Type.Ptr)

Seq(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,10 @@ class UnitLowering(implicit fresh: Fresh) extends Pass {
object UnitLowering extends PassCompanion {
def apply(ctx: Ctx) = new UnitLowering()(ctx.fresh)

val unitName = Global.Top("scala.scalanative.runtime.BoxedUnit$")
val unit = Val.Global(unitName, Type.Ptr)
val unitTy = Type.Struct(unitName tag "module" tag "class", Seq(Type.Ptr))
val unitConst =
Val.Global(unitName tag "module" tag "class" tag "type", Type.Ptr)
val unitName = Global.Top("scala.scalanative.runtime.BoxedUnit$")
val unit = Val.Global(unitName, Type.Ptr)
val unitTy = Type.Struct(unitName tag "class", Seq(Type.Ptr))
val unitConst = Val.Global(unitName tag "class" tag "type", Type.Ptr)
val unitValue = Val.Struct(unitTy.name, Seq(unitConst))
val unitDefn = Defn.Const(Attrs.None, unitName, unitTy, unitValue)

Expand Down

0 comments on commit a782f95

Please sign in to comment.