[10] RFR(L): 8132547: [AOT] support invokedynamic instructions

dean.long at oracle.com dean.long at oracle.com
Fri Oct 20 06:01:58 UTC 2017


Sorry, I need to make one additional change:


diff -r 578d216b57ad src/hotspot/share/jvmci/compilerRuntime.cpp
--- a/src/hotspot/share/jvmci/compilerRuntime.cpp    Thu Oct 19 19:23:48 
2017 -0700
+++ b/src/hotspot/share/jvmci/compilerRuntime.cpp    Thu Oct 19 22:59:49 
2017 -0700
@@ -24,7 +24,9 @@
  #include "precompiled.hpp"
  #include "classfile/stringTable.hpp"
  #include "classfile/symbolTable.hpp"
+#include "interpreter/linkResolver.hpp"
  #include "jvmci/compilerRuntime.hpp"
+#include "oops/oop.inline.hpp"
  #include "runtime/compilationPolicy.hpp"
  #include "runtime/deoptimization.hpp"
  #include "runtime/interfaceSupport.hpp"


JPRT caught the missing header files in the open solaris build without 
precompiled headers.

dl


On 10/18/17 10:53 AM, Vladimir Kozlov wrote:
> New code is good I think.
>
> Thanks,
> Vladimir
>
> On 10/17/17 6:36 PM, dean.long at oracle.com wrote:
>> On 10/17/17 3:30 PM, Vladimir Kozlov wrote:
>>
>>>
>>> On 10/17/17 1:41 PM, dean.long at oracle.com wrote:
>>>> Comment below...
>>>>
>>>>
>>>> On 10/17/17 11:15 AM, Vladimir Kozlov wrote:
>>>>>>>  Why removing !result->is_anonymous() check is not enough?:
>>>>>>>
>>>>>>>  if (InstanceKlass::should_store_fingerprint()) {
>>>>>>> result->store_fingerprint(stream->compute_fingerprint());
>>>>>>>
>>>>>>
>>>>>> Because InstanceKlass::should_store_fingerprint() will return 
>>>>>> false for an anonymous class.
>>>>>
>>>>> should_store_fingerprint() only checks flags. Do you mean it to 
>>>>> return 'true' during execution too for anonymous classes? But next 
>>>>> code will recalculate fingerprint for all classes!!! when you need 
>>>>> compute only for anonymous:
>>>>>
>>>>> +  if (result->has_stored_fingerprint()) {
>>>>> + result->store_fingerprint(stream->compute_fingerprint());
>>>>>    }
>>>>>
>>>>
>>>> It should be for anonymous only (in AOT mode), unless I'm missing 
>>>> something:
>>>>
>>>> 1982 bool InstanceKlass::has_stored_fingerprint() const {
>>>> 1983 #if INCLUDE_AOT
>>>> 1984 return should_store_fingerprint(is_anonymous()) || is_shared();
>>>
>>> I mean should_store_fingerprint() will return true for all klasses 
>>> in CDS too. So you recalculating them.
>>>
>>
>> I see what you mean now.  New webrev:
>>
>> http://cr.openjdk.java.net/~dlong/8132547//hs.3/
>>
>> dl
>>
>>> Vladimir
>>>
>>>> 1985 #else
>>>> 1986   return false;
>>>> 1987 #endif
>>>> 1988 }
>>>>
>>>> 1960 bool InstanceKlass::should_store_fingerprint(bool 
>>>> is_anonymous) { [...]1971 if (UseAOT && is_anonymous) {
>>>> 1972 // (3) We are using AOT code from a shared library and see an 
>>>> anonymous class
>>>> 1973 return true;
>>>> 1974 } dl
>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>
>>



More information about the hotspot-compiler-dev mailing list