Uwe Schindler created LUCENE-6964:
-------------------------------------
Summary: 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]