Skip to content

Instantly share code, notes, and snippets.

View VladUreche's full-sized avatar

Vlad Ureche VladUreche

View GitHub Profile
$ ls
A.scala B.scala
$ cat A.scala
class A[@specialized T](t: T)
$ scalac A.scala
$ cat B.scala
object Test extends App {
$ cat C.scala
class C[@specialized T](t: T)
class D[@specialized T](t: T) extends C[T](t)
$ scalac C.scala
C.scala:2: warning: class C must be a trait. Specialized version of class D will inherit generic C[Boolean]
class D[@specialized T](t: T) extends C[T](t)
^
one warning found
@VladUreche
VladUreche / miniboxing-challenge-gsoc14.md
Last active August 29, 2015 13:57
Miniboxing Challenge

GSOC 2014 Challenge

####Fix the following bug miniboxing/miniboxing-plugin#63.

Short Explanation

In miniboxing, the optimized data representation stores values encoded on a long integer. Still, whenever the program needs to perform operations on the actual data, it is transformed to its original type.

For example, when doing the following operation:

@VladUreche
VladUreche / infer-issue
Created June 10, 2014 22:00
Type inference issue
$ cat infer.scala
package p
class ann extends annotation.StaticAnnotation with annotation.TypeConstraint
class Seq[T] {
def map[U](f: T => U): Seq[U] = ???
}
object Test {
@VladUreche
VladUreche / patmat.scala
Created August 25, 2014 14:50
Pattern matcher + ClassTags => incorrect trees
$ cat test.scala
class Worker {
def receive[Id: scala.reflect.ClassTag] =
(x: Any) => x match {
case source: Id =>
val src: Id = source
}
}
@VladUreche
VladUreche / bug188-details.md
Last active August 29, 2015 14:17
JVM Debug output for miniboxing bug #188

Bug: miniboxing/miniboxing-plugin#188

For the record, here's the full VM output (the flags I used there are only available in debug builds of the JVM, which, although they are also dead slow, make the same inlining decisions as the normal VM):

Full output

Miniboxed:

$ mb-scala -J-XX:+PrintCompilation -J-XX:+PrintInlining -J-XX:+TraceDeoptimization brique.Test
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
@VladUreche
VladUreche / bug188-gc.md
Last active August 29, 2015 14:17
JVM GC output for minboxing bug #188

Bug: miniboxing/miniboxing-plugin#188

Below are the full outputs. But let's take a typical loop in the generic code:

restarting timing
[GC 631036K->45244K(2043392K), 0.0217070 secs]
[GC 636604K->50652K(2049024K), 0.0495480 secs]
[GC 649692K->40220K(2045952K), 0.0023550 secs]
805 ms for 100 iterations
@VladUreche
VladUreche / coverage.md
Created May 14, 2015 00:49
Coverage log
sun@sun-cpu:~/workspace/dev/test$ git clone https://github.com/miniboxing/miniboxing-plugin.git
Cloning into 'miniboxing-plugin'...
remote: Counting objects: 15469, done.
remote: Compressing objects: 100% (180/180), done.
remote: Total 15469 (delta 93), reused 0 (delta 0), pack-reused 15234
Receiving objects: 100% (15469/15469), 19.93 MiB | 2.43 MiB/s, done.
Resolving deltas: 100% (7734/7734), done.
Checking connectivity... done.
sun@sun-cpu:~/workspace/dev/test$ sbt miniboxing-plugin/coverage test coverageReport coverageAggregate
sun@sun-cpu:~/workspace/dev/test/miniboxing-plugin(wip)$ cat target/scala-2.11/coverage-report/cobertura.xml
<?xml version="1.0"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage line-rate="0.87" lines-covered="5505" lines-valid="4789" branches-covered="451" branches-valid="388" branch-rate="0.86" complexity="0" version="1.0" timestamp="1431564530915">
<sources>
<source>/src/main/scala</source>
</sources>
<packages>
<package name="miniboxing.plugin" line-rate="0.78" branch-rate="0.70" complexity="0">
<classes>
This file has been truncated, but you can view the full file.
Codecov v0.0.2 - Uploader
url: https://codecov.io
No CI detected, using git for branch and commit sha.
Searching for coverage reports... ok
Detecting file structure... ok
Reading reports....ok
query: package=bash-v0.0.2&branch=wip&commit=db72e704d5b258bf75904c9ea5722249fe571d37
https://codecov.io/upload/v2?package=bash-v0.0.2&branch=wip&commit=db72e704d5b258bf75904c9ea5722249fe571d37
.
./mb-scalac