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]

Reply via email to