Hi Jesse, Thanks for the detailed report and reproducer. I’m looking into the issue and will let you know when I find out more.
Hannes > Am 27.06.2017 um 00:23 schrieb Jesse Schulman <je...@dreamtsoft.com>: > > In our application we expose some of our java classes to javascript via the > JSObject interface, one of which provides a commons-js type require > function. We also use Class from prototypejs and most of the javascript > that is returned from require calls is returning a "Class" that is created > by Class.create() from prototypejs. > > We recently started having an issue when a certain code pattern is hit > where it seems that an incorrect signature is cached for the klass function > that is part of the constructor functionality of Class.create, we found > that accessing arguments within the klass function seems to prevent that > caching, but this seems to be a workaround for what feels like a bigger > issue. > > We have reproduced this outside our application and pushed to a github repo > https://github.com/jesseschulman/nashorn_issue, along with some debugging > notes in the readme. > > Note that this repo represents our code path that caused the issue, but it > seems the same issue happens with other code paths, such as not involving > SubClass.js and only calling SuperClass.js (as noted in comments). > > In Class.js there are two fixes commented out starting at line 33, they > both workaround/resolve our issue but seem to produce slightly different > invoker signatures for the MethodHandle as noted in the comments. > > Please let me know if there are any questions or if there is more > information that we can provide to help with this. > > Thanks! > Jesse