Sorry, forgot to specify the link: 
http://cr.openjdk.java.net/~attila/8133300/webrev.jdk8u-dev 
<http://cr.openjdk.java.net/~attila/8133300/webrev.jdk8u-dev>

> On Sep 15, 2015, at 5:29 PM, Attila Szegedi <attila.szeg...@oracle.com> wrote:
> 
> Folks, I’m preparing to backport this to 8u-dev. I had to prepare a separate 
> webrev, as I had to change few things, namely:
> 
> - I resolved a conflict in CompilationPhase.java stemming from Sundar’s 
> 8055917 being committed to 8u-dev before this change (this was BTW also the 
> reason poor Sundar himself had a conflict and had to manually prepare a 
> 8u-dev webrev…)
> - Some omitted type parameters in 9 can’t be omitted in 8 because of weaker 
> type parameter inference, hence some more explicit type specializations were 
> used in few places
> - use of lambdas in RecompilableScriptFunctionData was not compatible with 
> Nashorn using source -1.7 in 8u-dev.
> 
> Please review so I can request a backport to 8u-dev.
> 
> Thanks,
>  Attila.
> 
>> On Sep 1, 2015, at 9:14 AM, Marcus Lagergren <lagerg...@gmail.com> wrote:
>> 
>> Reviewed new webrev. Happy +1
>> 
>> /M
>> 
>>> On 31 Aug 2015, at 12:09, Attila Szegedi <attila.szeg...@oracle.com> wrote:
>>> 
>>> I posted another webrev, can you please review: 
>>> http://cr.openjdk.java.net/~attila/8133300/webrev.01.jdk9 
>>> <http://cr.openjdk.java.net/~attila/8133300/webrev.01.jdk9>
>>> The only changes are:
>>> - added JavaDoc comments explaining SerializedAst class, as per Marcus’ 
>>> suggestion
>>> - external symbols’ re-marking as global now only happens for non-cached 
>>> split functions (previously, it happened for all non-cached functions). 
>>> Other functions will already have external symbols marked as globals, as 
>>> they’re coming from a lazy compilation.
>>> 
>>> Thanks,
>>> Attila.
>>> 
>>>> On Aug 31, 2015, at 10:58 AM, Attila Szegedi <attila.szeg...@oracle.com> 
>>>> wrote:
>>>> 
>>>> if the FunctionNode object is set as the cached representation of a 
>>>> RecompilableScriptFunctionData using its setCached method, its IS_CACHED 
>>>> flag is set to true. The flag is used in recompilation to determine the 
>>>> necessary compilation phases: if the function is cached, it means phases 
>>>> in Compiler.COMPILE_UPTO_CACHED were already run on it, so they don't need 
>>>> to be repeated. Otherwise the function is freshly reparsed, so the full 
>>>> compiler pipeline needs to be re-run.
>>>> 
>>>> There’s also the issue of re-marking external symbols as globals in 
>>>> RecompilableScriptFunctionData.cloneSymbols(). We normally don’t have to 
>>>> do that – I implemented that back when I was caching pre-pass ASTs. Now 
>>>> that we're only caching AST resulting from lazy compilation, we don't 
>>>> really need it except for split functions, which are incidentally cached 
>>>> from the eager pass :-)
>>>> 
>>>> When we lazily compile a function from scratch, all symbols outside of it 
>>>> are considered global (since AssignSymbols won't find them in the 
>>>> enclosing lexical scope, as the enclosing source text is not reparsed). 
>>>> OTOH, if we cache a FunctionNode resulting from the eager first pass, it 
>>>> will have the full lexical scope, so those symbols won't be marked as 
>>>> "global" (which is rather a misnomer at the moment and should be instead 
>>>> considered “external” instead). We need the cached AST and a lazily parsed 
>>>> AST to be identical though, otherwise things break down further down the 
>>>> line.
>>>> 
>>>> Split functions are cached from eager pre-pass (and before they were 
>>>> serialized from eager pre-pass). They didn't suffer from this problem 
>>>> though as AssignSymbols was re-run every time after deserialization. Now 
>>>> however, I moved AssignSymbols to be a pre-cache phase.
>>>> 
>>>> I'll modify the code though so that this marking of external symbols only 
>>>> happens when we cache a split function.
>>>> 
>>>> Attila.
>>>> 
>>>>> On Aug 30, 2015, at 3:07 PM, Marcus Lagergren <mar...@lagergren.net> 
>>>>> wrote:
>>>>> 
>>>>> Can you elaborate a bit on the isCached mechanism in FunctionNode?
>>>>> 
>>>>> /M
>>>>> 
>>>>>> On 26 Aug 2015, at 14:18, Attila Szegedi <attila.szeg...@oracle.com> 
>>>>>> wrote:
>>>>>> 
>>>>>> Please review JDK-8133300 "Ensure symbol table immutability in Nashorn 
>>>>>> AST" at <http://cr.openjdk.java.net/~attila/8133300/webrev.jdk9> for 
>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8133300>
>>>>>> 
>>>>>> Implementation notes for reviewers are here: 
>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8133300?focusedCommentId=13837384&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13837384
>>>>>>  
>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8133300?focusedCommentId=13837384&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13837384>>
>>>>>> 
>>>>>> Thanks,
>>>>>> Attila.
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to