[
https://issues.apache.org/jira/browse/LUCENE-6964?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Uwe Schindler updated LUCENE-6964:
----------------------------------
Attachment: LUCENE-6964.patch
Patch.
> Small changes in expressions module
> -----------------------------------
>
> Key: LUCENE-6964
> URL: https://issues.apache.org/jira/browse/LUCENE-6964
> Project: Lucene - Core
> Issue Type: Improvement
> Components: modules/expressions
> Affects Versions: 5.4
> Reporter: Uwe Schindler
> Assignee: Uwe Schindler
> Fix For: 5.5, Trunk
>
> Attachments: LUCENE-6964.patch
>
>
> This patch is not really worth an issue, but it has 2 small changes in
> expression's JavaScriptCompiler:
> - On the OpenJDK mailinglists from time to time people want to have "nice
> stack traces" (this got worse with Lambda expressions). Since Java 8u60 they
> now hide some stack frames automatically. Under discussion was to use the
> "synthetic" bytecode attribute for that. They did not do that; instead they
> have a new annotation ({{@LambdaForm.Hidden}}). In any case, I will remove
> the synthetic annotation from the generated class file, because it is not
> really applicable (and also brings nothing): "A class member that does not
> appear in the source code must be marked using a Synthetic attribute, or else
> it must have its ACC_SYNTHETIC flag set. The only exceptions to this
> requirement are compiler-generated methods which are not considered
> implementation artifacts, namely the instance initialization method
> representing a default constructor of the Java programming language (§2.9),
> the class initialization method (§2.9), and the Enum.values() and
> Enum.valueOf() methods.". In our case the expressions class has source code
> (just not Java), so we should not make it synthetic. So there is also no risk
> that the stack frames get hidden in future (if OpenJDK thinks different).
> - The code has currently some string-based method signatures. They tend to
> get broken because we have no compile-time checks. I replaced those with
> compile-time class constants using Java 7's MethodType to create the
> descriptor. For me the code is more readable. The change is a no-op as its
> constants only.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]