Sorry, disregard the message below, it was meant for a different e-mail thread :-)
> On 01 Dec 2016, at 13:53, Attila Szegedi <szege...@gmail.com> wrote: > > Okay, I tracked this down to an incorrect optimization in code generator for > when you use >>=0 to coerce to an uint32 :-( > > There is a special case for exactly this usage, where the right-hand-side > operand is a literal 0, so we avoid emitting a no-op “ICONST_0; IUSHR” > bytecode sequence. It unfortunately wasn’t working correctly for when the > left-hand-side operand of a compound-assignment-shift-right was either a > property or element access expression (either “obj.foo” or “obj[x]”) > > Decomposing the compound assignment into an explicit shift and assignment > would work around the problem for now: > > this.length = this.length >>> 0; // Coerce to uint32. > > I filed <https://bugs.openjdk.java.net/browse/JDK-8170594 > <https://bugs.openjdk.java.net/browse/JDK-8170594>> and have a fix for it. > > Attila. > >> On 01 Dec 2016, at 07:44, Sundararajan Athijegannathan >> <sundararajan.athijegannat...@oracle.com >> <mailto:sundararajan.athijegannat...@oracle.com>> wrote: >> >> We do not aim to provide complete compatibility with other JS >> implementations on the non-standard properties such as "stack". stack tries >> to mimic whatever is done for Java code (no column number for eg.). But, as >> you've noted there are enough information on Error objects via other >> properties like lineNumber, columnNumber, fileName. It should be possible to >> write a simple utility function to format stack string as desired for >> specific applications. >> >> Thanks, >> -Sundar >> >> On 01/12/16, 3:32 AM, Art Fiedler wrote: >>> When making an implementation of console.count([label]) part of the >>> Mozilla's developer docs >>> https://developer.mozilla.org/en-US/docs/Web/API/Console/count >>> <https://developer.mozilla.org/en-US/docs/Web/API/Console/count> >>> mentions when label is omitted, the function will count the number of times >>> count() was called >>> on that line... however, if the javascript code has been minified all lines >>> of code may be on the >>> same line... messing up all console.count() calls... >>> >>> I was providing that implementation by using new Error().stack and parsing >>> the current file:line... >>> however I could fix the minify issue if new Error().stack output the column >>> also for instance... >>> other browser seem to be doing file:line:column in the stack trace. >>> Including nodejs see: >>> https://nodejs.org/api/errors.html#errors_error_stack >>> <https://nodejs.org/api/errors.html#errors_error_stack> >>> >>> Microsoft Edge's dev console outputs... >>> new Error().stack: >>> "Error >>> at eval code (eval code:1:1)" >>> Firefox since FF30: >>> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/stack >>> >>> <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/stack> >>> >>> Currently nashorn error stacks only include the line number... >>> public static void main(String[] args) throws Exception { >>> NashornScriptEngineFactory factory = new >>> NashornScriptEngineFactory(); >>> ScriptEngine scriptEngine = factory.getScriptEngine(); >>> scriptEngine.put(ScriptEngine.FILENAME, "myfile.js"); >>> scriptEngine.eval("print('fileName: ' + new Error().fileName);"); >>> scriptEngine.eval("print('lineNumber: ' + new >>> Error().lineNumber);"); >>> scriptEngine.eval("print('columnNumber: ' + new >>> Error().columnNumber);"); >>> scriptEngine.eval("print('stack: ' + new Error().stack);"); >>> } >>> /* >>> fileName: myfile.js >>> lineNumber: 1 >>> columnNumber: -1 >>> stack: Error >>> at<program> (myfile.js:1) >>> */ >>> >>> Would be nice to add the column number to the stacks and error object in >>> nashorn. >>> >>> Thanks, >>> Arthur Fiedler >