Stacktraces from dynamically-constructed functions not as expected
Vivin Suresh Paliath
vivin.paliath at gmail.com
Thu May 12 13:59:40 UTC 2016
I tried this out on in chrome and I get the expected stack trace there. Is
this a bug?
On May 6, 2016 3:39 PM, "Vivin Suresh Paliath" <vivin.paliath at gmail.com>
wrote:
> I have the following code:
>
> *var f = (function() {*
> * return function foo() {*
> * try {*
> * throw new Error();*
> * } catch(e) {*
> * print(e.stack);*
> * }*
> * }*
> *})();*
>
>
> When I call the function, I get the following stacktrace as expected
> (mostly; I was expecting *foo* instead of *f$foo*).
>
> *Error*
> * at f$foo (<shell>:1)*
> * at <program> (<shell>:1)*
>
>
> However, if I dynamically construct the function as follows:
>
> *var f = new Function([], "return function foo() { try { throw new
> Error(); } catch(e) { print(e.stack); } }")()*
>
>
> I get:
>
>
> *Error*
> * at <anonymous> (<function>:2)*
> * at <program> (<shell>:1)*
>
>
> Is there a reason for this discrepancy? Isn't the second version
> effectively the same as the first? Also, why is it *f$foo* instead of
> *foo* in the first case?
>
> I am running jdk8u92.
>
> Thanks!
>
> --
> Ruin untold;
> And thine own sadness,
> Sing in the grass,
> When eve has forgot, that no more hear common things that gleam and pass;
> But seek alone to lip, sad Rose of love and ruin untold;
> And thine own mother
> Can know it as I know
> More than another
> What makes your own sadness,
> Set in her eyes.
>
> map{@n=split//;$j.=$n[0]x$n[1]}split/:/,"01:11:02".
> ":11:01:11:02:13:01:11:01:11:01:13:02:12:01:13:01".
> ":11:04:11:06:12:04:11:01:12:01:13:02:12:01:14:01".
> ":13:01:11:03:12:01:11:04:12:02:11:01:11:01:13:02".
> ":11:03:11:06:11:01:11:05:12:02:11:01:11:01:13:02".
> ":11:02:12:01:12:04:11:06:12:01:11:04:12:04:11:01".
> ":12:03:12:01:12:01:11:01:12:01:12:02:11:01:11:01".
> ":13:02:11:01:02:11:01:12:02";map{print chr unpack"
> i",pack"B32",$_}$j=~m/.{8}/g
>
More information about the nashorn-dev
mailing list