New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linker requires dummy forwarders to implement Java APIs #375

Closed
densh opened this Issue Nov 8, 2016 · 0 comments

Comments

Projects
None yet
1 participant
@densh
Copy link
Member

densh commented Nov 8, 2016

This has been discovered by @soc in #373. The issue can be clearly seen in the implementation of ArrayList:

package java.util

class ArrayList[E] ... {
  ...

  override def subList(fromIndex: Int, toIndex: Int): List[E] =
    super.subList(fromIndex, toIndex)

  override def listIterator(): ListIterator[E] = super.listIterator(0)

  override def listIterator(index: Int): ListIterator[E] =
    super.listIterator(index)
}

The last three methods should not have been necessary.

@densh densh added this to the 0.1 milestone Nov 8, 2016

@densh densh added the bug label Nov 25, 2016

@densh densh modified the milestones: Backlog, 0.1 Jan 20, 2017

@densh densh modified the milestones: 0.4, Backlog May 20, 2017

matil019 added a commit to matil019/scala-native that referenced this issue Jun 8, 2017

Improve comments
* mention scala-native#375 for nativeLinkNIR errors
* put `TODO` to unimplemented methods
* un-javadoc the comments on the value parameters

@densh densh modified the milestones: 0.4, Backlog Jan 9, 2018

@densh densh referenced this issue Jul 27, 2018

Open

NIR format refresh #1287

8 of 11 tasks complete

@densh densh closed this in #1323 Aug 28, 2018

densh added a commit that referenced this issue Aug 28, 2018

Fix that linker thing (part 2): semantic reachability (#1323)
This PR is a follow-up to #1313 that completely eliminates override and pin attributes from NIR. Those were used previously to perform name-based reachability analysis (aka linking step of the nativeLink).

Instead, we do a Scala.js-like reachability and semantic analysis in the same pass. This improves precision of the reachability as it now knows about NIR semantics, not just loads all reachable names from the entry point. Smaller reachable set improves compilation time (less code to transform) and the resulting binary size (less code to emit).

Resolves #375 and probably a few more issues related to null-dereferencing segfaults and linking errors when calling across JDK boundary.

@densh densh modified the milestones: Backlog, 0.3.9 Aug 28, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment