RFR(S) 8204209: [Graal] Compilation fails during nmethod printing with "assert(bci == 0 || 0 <= bci && bci < code_size()) failed: illegal bci"

Igor Veresov igor.veresov at oracle.com
Fri Jun 22 15:04:52 UTC 2018



> On Jun 21, 2018, at 10:02 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
> 
> It is a little confusing that BeforeBci is the same as SynchronizationEntryBCI.

Yes, they mean the same thing. BeforeBci == SyncronizationEntryBCI == InvocationEntryBci == -1.
However BytecodeFrame::BEFORE_BCI() is currently -2. In Infopoints that come from Graal it’s -2 and it has to be changed to -1 when we synthesize ScopeDescs. Unfortunate choice of values that I hope we can soon reconcile but for now we have to do the remapping.

> In nmethod.cpp you check SynchronizationEntryBCI while in jvmciCodeInstaller.cpp you check BEFORE_BCI. So one is for legacy Hotspot code and BeforeBci is for Graal code. Right?

Right.

> 
> Spacing of '\' is wrong in jvmciJavaClasses.hpp.

Sorry I don’t see it, which line is that?
> 
> How you chose the order of fields in jvmciJavaClasses.hpp? Can it be the same as order of values in MethodCompilation (compilerDefinitions.hpp)?
> 

Currently they are in the order they are defined in BytecodeFrame.java, which they refer to. But the order doesn’t matter, do you want me to change it?

igor

> Thanks,
> Vladimir
> 
> On 6/21/18 9:33 PM, Igor Veresov wrote:
>> After discussing this with Tom, we decided that it would be a bad idea to change values of final static fields as this would break compatibility (since javac inlines these values). So, for now, we’d have to do re-mapping.
>> Webrev: http://cr.openjdk.java.net/~iveresov/8204209/webrev.01
>> Thanks,
>> igor
>>> On Jun 18, 2018, at 10:12 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>> wrote:
>>> 
>>> CCing to runtime group.
>>> 
>>> Seems fine to me.
>>> 
>>> Thanks,
>>> Vladimir
>>> 
>>> On 6/18/18 6:28 PM, Igor Veresov wrote:
>>>> Make hotspot tolerate negative placeholder BCIs that are produced by Graal.
>>>> Should this fix be deemed acceptable I’ll backport it to graal-jvmci-8.
>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8204209
>>>> Webrev: http://cr.openjdk.java.net/~iveresov/8204209/webrev/
>>>> Thanks,
>>>> igor



More information about the hotspot-compiler-dev mailing list