Skip to content

Commit 237dd24

Browse files
committed
Drop useless common name aliases
1 parent c3eb66c commit 237dd24

File tree

4 files changed

+36
-207
lines changed

4 files changed

+36
-207
lines changed

src/main/scala/scalacl/impl/KernelSymbolsAnalysis.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@ trait KernelSymbolsAnalysis
9696
override def traverse(tree: Tree) = tree match {
9797
case Ident(n) =>
9898
declare(tree.symbol, tree.tpe, UsageKind.Input)
99-
case Apply(Select(target, updateName()), List(index, value)) =>
99+
case Apply(Select(target, N("update")), List(index, value)) =>
100100
declare(target.symbol, target.tpe, UsageKind.Output)
101101
super.traverse(index)
102102
super.traverse(value)
103-
case Apply(Select(target, applyName()), List(index)) =>
103+
case Apply(Select(target, N("apply")), List(index)) =>
104104
declare(target.symbol, target.tpe, UsageKind.Input)
105105
super.traverse(index)
106106
case ValDef(_, _, _, _) =>

src/main/scala/scalacl/impl/OpenCLCodeFlattening.scala

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,26 @@ trait OpenCLCodeFlattening
168168
result
169169
}
170170

171+
object NumberConversion {
172+
private[this] val namesToTypes = Map(
173+
"toSizeT" -> "size_t",
174+
"toLong" -> "long",
175+
"toInt" -> "int",
176+
"toShort" -> "short",
177+
"toByte" -> "char",
178+
"toChar" -> "short",
179+
"toDouble" -> "double",
180+
"toFloat" -> "float"
181+
)
182+
183+
def unapply(tree: Tree): Option[(Tree, String)] = tree match {
184+
case Select(expr, n) =>
185+
namesToTypes.get(n.toString).map(expr -> _)
186+
case _ =>
187+
None
188+
}
189+
}
190+
171191
class TuplesAndBlockFlattener(val tupleAnalyzer: TupleAnalyzer) {
172192
import tupleAnalyzer._
173193

@@ -182,31 +202,14 @@ trait OpenCLCodeFlattening
182202

183203
var sliceReplacements = new scala.collection.mutable.HashMap[TupleSlice, TreeGen]()
184204

185-
object NumberConversion {
186-
def unapply(tree: Tree): Option[(Tree, String)] = tree match {
187-
case Select(expr, n) =>
188-
Option(n) collect {
189-
case toSizeTName() => (expr, "size_t")
190-
case toLongName() => (expr, "long")
191-
case toIntName() => (expr, "int")
192-
case toShortName() => (expr, "short")
193-
case toByteName() => (expr, "char")
194-
case toCharName() => (expr, "short")
195-
case toDoubleName() => (expr, "double")
196-
case toFloatName() => (expr, "float")
197-
}
198-
case _ =>
199-
None
200-
}
201-
}
202205
def isUnitOrNoType(tpe: Type) = tpe == NoType || tpe == UnitTpe
203206

204207
def makeValuesSideEffectFree(code: FlatCode[Tree], symbolOwner: Symbol) = {
205208
//code /*
206209
var hasNewStatements = false
207210
val vals = for (value <- code.values) yield {
208211
value match {
209-
case Select(ScalaMathFunction(_, _, _), toFloatName()) =>
212+
case Select(ScalaMathFunction(_, _, _), N("toFloat")) =>
210213
// special case for non-double math :
211214
// exp(20: Float).toFloat
212215
(Seq(), value)
@@ -374,7 +377,7 @@ trait OpenCLCodeFlattening
374377
case Seq(l, r) =>
375378
Seq(Assign(l, r))
376379
}
377-
case Apply(Select(target, updateName()), List(index, value)) if isTupleType(getType(value)) =>
380+
case Apply(Select(target, N("update")), List(index, value)) if isTupleType(getType(value)) =>
378381
val targetTpe = normalize(target.tpe).asInstanceOf[TypeRef]
379382
// val indexVal = q"val index: ${index.tpe} = $index" // TODO fresh
380383
val indexVal = newVal("index", index, index.tpe)
@@ -385,7 +388,7 @@ trait OpenCLCodeFlattening
385388
flatTarget.outerDefinitions ++ flatValue.outerDefinitions,
386389
flatTarget.statements ++ Seq(indexVal.definition) ++ flatValue.statements,
387390
for ((t, v) <- flatTarget.values.zip(flatValue.values)) yield {
388-
Apply(Select(t, updateName()), List(indexVal(), v))
391+
Apply(Select(t, N("update")), List(indexVal(), v))
389392
}
390393
)
391394
// println("UPDATE TUP(" + getType(value) + ") tree = " + tree + ", res = " + res)

src/main/scala/scalacl/impl/OpenCLConverter.scala

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ trait OpenCLConverter
141141
sc ++ rs,
142142
rv
143143
)
144-
case Apply(Select(target, applyName()), List(singleArg)) =>
144+
case Apply(Select(target, N("apply")), List(singleArg)) =>
145145
merge(Seq(target, singleArg).map(convert): _*) { case Seq(t, a) => Seq(t + "[" + a + "]") }
146-
case Apply(Select(target, updateName()), List(index, value)) =>
146+
case Apply(Select(target, N("update")), List(index, value)) =>
147147
val convs = Seq(target, index, value).map(convert)
148148
merge(convs: _*) { case Seq(t, i, v) => Seq(t + "[" + i + "] = " + v + ";") }
149149
case Assign(lhs, rhs) =>
@@ -201,14 +201,10 @@ trait OpenCLConverter
201201
//}
202202
//Match(Ident("x0$1"), List(CaseDef(Apply(TypeTree(), List(Bind(i, Ident("_")), Bind(c, Ident("_"))), EmptyTree Apply(Select(Ident("i"), "$plus"), List(Ident("c")
203203
convert(body)
204-
case Select(expr, toSizeTName()) => cast(expr, "size_t")
205-
case Select(expr, toLongName()) => cast(expr, "long")
206-
case Select(expr, toIntName()) => cast(expr, "int")
207-
case Select(expr, toShortName()) => cast(expr, "short")
208-
case Select(expr, toByteName()) => cast(expr, "char")
209-
case Select(expr, toCharName()) => cast(expr, "short")
210-
case Select(expr, toDoubleName()) => cast(expr, "double")
211-
case Select(expr, toFloatName()) => cast(expr, "float")
204+
205+
case NumberConversion(expr, typeName) =>
206+
cast(expr, typeName)
207+
212208
// TODO
213209
//case ScalaMathFunction(functionType, funName, args) =>
214210
// convertMathFunction(functionType, funName, args)
@@ -231,7 +227,7 @@ trait OpenCLConverter
231227
s"\tleft.sym = ${left.symbol}\n" +
232228
s"\targs = $args\n" +
233229
s"\tbody = $body\n" +
234-
s"\ttree: ${body.getClass.getName} (${updateName.unapply(name)})")
230+
s"\ttree: ${body.getClass.getName}")
235231
valueCode("/* Error: failed to convert " + body + " */")
236232
}
237233
case s @ Select(expr, fun) =>
@@ -285,7 +281,7 @@ trait OpenCLConverter
285281
outers ++= Seq("#pragma OPENCL EXTENSION cl_khr_fp64: enable")
286282

287283
val normalizedArgs = args.map {
288-
case Select(a, toDoubleName()) => a
284+
case Select(a, N("toDouble")) => a
289285
case arg => arg
290286
}
291287
val convArgs = normalizedArgs.map(convert)

src/main/scala/scalacl/impl/conversion/CommonScalaNames.scala

Lines changed: 3 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -13,181 +13,11 @@ trait CommonScalaNames extends Utils {
1313
import global._
1414
import definitions._
1515

16-
// class N(val s: String) {
17-
// def unapply(n: Name): Boolean = n.toString == s
18-
// def apply() = TermName(s)
19-
// }
20-
// object N {
21-
// def apply(s: String) = new N(s)
22-
// def unapply(n: Name): Option[String] = Option(n).map(_.toString)
23-
// }
24-
// implicit def N2TermName(n: N) = n()
25-
//implicit def N2TypeName(n: N) = newTypeName(n.s)
16+
lazy val ScalaMathPackage =
17+
rootMirror.staticModule("scala.math.package")
2618

27-
def encode(str: String): TermName = {
28-
assert(str != null)
29-
TermName(NameTransformer.encode(str))
30-
}
31-
32-
lazy val ADD = encode("+")
33-
lazy val AND = encode("&")
34-
lazy val ASR = encode(">>")
35-
lazy val DIV = encode("/")
36-
lazy val EQ = encode("==")
37-
lazy val EQL = encode("=")
38-
lazy val GE = encode(">=")
39-
lazy val GT = encode(">")
40-
lazy val HASHHASH = encode("##")
41-
lazy val LE = encode("<=")
42-
lazy val LSL = encode("<<")
43-
lazy val LSR = encode(">>>")
44-
lazy val LT = encode("<")
45-
lazy val MINUS = encode("-")
46-
lazy val MOD = encode("%")
47-
lazy val MUL = encode("*")
48-
lazy val NE = encode("!=")
49-
lazy val OR = encode("|")
50-
lazy val PLUS = ADD
51-
lazy val SUB = MINUS
52-
lazy val UNARY_~ = encode("unary_~")
53-
lazy val UNARY_+ = encode("unary_+")
54-
lazy val UNARY_- = encode("unary_-")
55-
lazy val UNARY_! = encode("unary_!")
56-
lazy val XOR = encode("^")
57-
lazy val ZAND = encode("&&")
58-
lazy val ZOR = encode("||")
59-
60-
lazy val THIS = TermName("this")
61-
lazy val SELF = TermName("self")
62-
63-
val addAssignName = N(NameTransformer.encode("+="))
64-
val toArrayName = N("toArray")
65-
// val toListName = N("toList")
66-
// val toSeqName = N("toSeq")
67-
// val toSetName = N("toSet")
68-
// val toIndexedSeqName = N("toIndexedSeq")
69-
// val toVectorName = N("toVector")
70-
// val toMapName = N("toMap")
71-
val resultName = N("result")
72-
val scalaName = N("scala")
73-
val ArrayName = N("Array")
74-
// val intWrapperName = N("intWrapper")
75-
// val longWrapperName = N("longWrapper")
76-
// val tabulateName = N("tabulate")
77-
// val toName = N("to")
78-
// val byName = N("by")
79-
// val withFilterName = N("withFilter")
80-
val untilName = N("until")
81-
val isEmptyName = N("isEmpty")
82-
// val sumName = N("sum")
83-
// val productName = N("product")
84-
// val minName = N("min")
85-
// val maxName = N("max")
86-
val headName = N("head")
87-
val tailName = N("tail")
88-
// val foreachName = N("foreach")
89-
// val foldLeftName = N("foldLeft")
90-
// val foldRightName = N("foldRight")
91-
// val zipWithIndexName = N("zipWithIndex")
92-
// val zipName = N("zip")
93-
// val reverseName = N("reverse")
94-
// val reduceLeftName = N("reduceLeft")
95-
// val reduceRightName = N("reduceRight")
96-
// val scanLeftName = N("scanLeft")
97-
// val scanRightName = N("scanRight")
98-
// val mapName = N("map")
99-
// val collectName = N("collect")
100-
val canBuildFromName = N("canBuildFrom")
101-
// val filterName = N("filter")
102-
// val filterNotName = N("filterNot")
103-
// val takeWhileName = N("takeWhile")
104-
// val dropWhileName = N("dropWhile")
105-
// val countName = N("count")
106-
val lengthName = N("length")
107-
// val forallName = N("forall")
108-
// val existsName = N("exists")
109-
// val findName = N("find")
110-
val updateName = N("update")
111-
val toSizeTName = N("toSizeT")
112-
val toLongName = N("toLong")
113-
val toIntName = N("toInt")
114-
val toShortName = N("toShort")
115-
val toByteName = N("toByte")
116-
val toCharName = N("toChar")
117-
val toDoubleName = N("toDouble")
118-
val toFloatName = N("toFloat")
119-
val mathName = N("math")
120-
val packageName = N("package")
121-
val applyName = N("apply")
122-
val thisName = N("this")
123-
val superName = N("super")
124-
125-
def C(name: String) = rootMirror.staticClass(name)
126-
def M(name: String) = rootMirror.staticModule(name)
127-
def P(name: String) = rootMirror.staticPackage(name)
128-
129-
lazy val ScalaReflectPackage = P("scala.reflect")
130-
lazy val ScalaCollectionPackage = P("scala.collection")
131-
lazy val ScalaMathPackage = M("scala.math.package")
13219
lazy val ScalaMathPackageClass =
133-
ScalaMathPackage.moduleClass //.asModule.moduleClass
134-
//lazy val ScalaMathCommonClass = C("scala.MathCommon")
135-
136-
lazy val SeqModule = M("scala.collection.Seq")
137-
lazy val SeqClass = C("scala.collection.Seq")
138-
lazy val SetModule = M("scala.collection.Set")
139-
lazy val SetClass = C("scala.collection.Set")
140-
lazy val VectorModule = M("scala.collection.Set")
141-
lazy val VectorClass = C("scala.collection.Set")
142-
lazy val ListClass = C("scala.List")
143-
lazy val ImmutableListClass = C("scala.collection.immutable.List")
144-
lazy val NonEmptyListClass = C("scala.collection.immutable.$colon$colon")
145-
lazy val IndexedSeqModule = M("scala.collection.IndexedSeq")
146-
lazy val IndexedSeqClass = C("scala.collection.IndexedSeq")
147-
lazy val OptionModule = M("scala.Option")
148-
lazy val OptionClass = C("scala.Option")
149-
lazy val SomeModule = M("scala.Some")
150-
lazy val NoneModule = M("scala.None")
151-
lazy val StringOpsClass = C("scala.collection.immutable.StringOps")
152-
lazy val ArrayOpsClass = C("scala.collection.mutable.ArrayOps")
153-
154-
lazy val VectorBuilderClass = C("scala.collection.immutable.VectorBuilder")
155-
lazy val ListBufferClass = C("scala.collection.mutable.ListBuffer")
156-
lazy val ArrayBufferClass = C("scala.collection.mutable.ArrayBuffer")
157-
lazy val WrappedArrayBuilderClass = C("scala.collection.mutable.WrappedArrayBuilder")
158-
lazy val RefArrayBuilderClass = C("scala.collection.mutable.ArrayBuilder.ofRef")
159-
lazy val RefArrayOpsClass = C("scala.collection.mutable.ArrayOps.ofRef")
160-
lazy val SetBuilderClass = C("scala.collection.mutable.SetBuilder")
161-
162-
lazy val RichWrappers: Set[Symbol] =
163-
Array("Byte", "Short", "Int", "Char", "Long", "Float", "Double", "Boolean").
164-
map(n => C("scala.runtime.Rich" + n)).toSet
165-
166-
lazy val CanBuildFromClass = C("scala.collection.generic.CanBuildFrom")
167-
168-
lazy val ArrayIndexOutOfBoundsExceptionClass = C("java.lang.ArrayIndexOutOfBoundsException")
169-
170-
lazy val primArrayNames = Array(
171-
(IntTpe, "ofInt"),
172-
(LongTpe, "ofLong"),
173-
(ShortTpe, "ofShort"),
174-
(ByteTpe, "ofByte"),
175-
(CharTpe, "ofChar"),
176-
(BooleanTpe, "ofBoolean"),
177-
(FloatTpe, "ofFloat"),
178-
(DoubleTpe, "ofDouble"),
179-
(UnitTpe, "ofUnit")
180-
)
181-
182-
lazy val primArrayBuilderClasses = primArrayNames.map {
183-
case (sym, n) =>
184-
(sym, C("scala.collection.mutable.ArrayBuilder." + n))
185-
} toMap
186-
187-
lazy val primArrayOpsClasses = primArrayNames.map {
188-
case (sym, n) =>
189-
(sym, C("scala.collection.mutable.ArrayOps." + n))
190-
} toMap
20+
ScalaMathPackage.moduleClass
19121

19222
object ScalaMathFunction {
19323
/**

0 commit comments

Comments
 (0)