@@ -178,16 +178,17 @@ abstract static class ReadMember {
178
178
static Object doShared (Klass receiver , String member ,
179
179
@ CachedLibrary ("receiver" ) InteropLibrary lib ,
180
180
@ Bind ("$node" ) Node node ,
181
+ @ Cached @ Shared InlinedBranchProfile error ,
181
182
@ Bind ("getLang(lib)" ) @ SuppressWarnings ("unused" ) EspressoLanguage language ) throws UnknownIdentifierException {
182
- return readMember (receiver , member , LookupFieldNodeGen .getUncached (), LookupDeclaredMethodNodeGen .getUncached (), node , InlinedBranchProfile . getUncached () , lib , language );
183
+ return readMember (receiver , member , LookupFieldNodeGen .getUncached (), LookupDeclaredMethodNodeGen .getUncached (), node , error , lib , language );
183
184
}
184
185
185
186
@ Specialization
186
187
static Object readMember (Klass receiver , String member ,
187
188
@ Shared ("lookupField" ) @ Cached LookupFieldNode lookupFieldNode ,
188
189
@ Shared ("lookupMethod" ) @ Cached LookupDeclaredMethod lookupMethod ,
189
190
@ Bind ("$node" ) Node node ,
190
- @ Cached InlinedBranchProfile error ,
191
+ @ Cached @ Shared InlinedBranchProfile error ,
191
192
@ CachedLibrary ("receiver" ) InteropLibrary lib ,
192
193
@ Bind ("getLang(lib)" ) @ SuppressWarnings ("unused" ) EspressoLanguage language ) throws UnknownIdentifierException {
193
194
EspressoContext ctx = EspressoContext .get (lib );
@@ -264,17 +265,18 @@ abstract static class WriteMember {
264
265
@ Specialization (guards = "language.isShared()" )
265
266
static void doShared (Klass receiver , String member , Object value ,
266
267
@ Bind ("$node" ) Node node ,
268
+ @ Cached @ Shared InlinedBranchProfile error ,
267
269
@ CachedLibrary ("receiver" ) @ SuppressWarnings ("unused" ) InteropLibrary lib ,
268
270
@ Bind ("getLang(lib)" ) @ SuppressWarnings ("unused" ) EspressoLanguage language ) throws UnknownIdentifierException , UnsupportedTypeException {
269
- writeMember (receiver , member , value , LookupFieldNodeGen .getUncached (), ToEspressoNodeFactory .DynamicToEspressoNodeGen .getUncached (), node , InlinedBranchProfile . getUncached () );
271
+ writeMember (receiver , member , value , LookupFieldNodeGen .getUncached (), ToEspressoNodeFactory .DynamicToEspressoNodeGen .getUncached (), node , error );
270
272
}
271
273
272
274
@ Specialization
273
275
static void writeMember (Klass receiver , String member , Object value ,
274
276
@ Shared ("lookupField" ) @ Cached LookupFieldNode lookupFieldNode ,
275
277
@ Exclusive @ Cached ToEspressoNode .DynamicToEspresso toEspressoNode ,
276
278
@ Bind ("$node" ) Node node ,
277
- @ Cached InlinedBranchProfile error ) throws UnknownIdentifierException , UnsupportedTypeException {
279
+ @ Cached @ Shared InlinedBranchProfile error ) throws UnknownIdentifierException , UnsupportedTypeException {
278
280
Field field = lookupFieldNode .execute (receiver , member , true );
279
281
// Can only write to non-final fields.
280
282
if (field != null && !field .isFinalFlagSet ()) {
@@ -309,9 +311,11 @@ abstract static class InvokeMember {
309
311
// Specialization prevents caching a node that would leak the context
310
312
@ Specialization (guards = "language.isShared()" )
311
313
static Object doShared (Klass receiver , String member , Object [] arguments ,
314
+ @ Bind ("$node" ) Node node ,
315
+ @ Cached @ Shared InlinedBranchProfile error ,
312
316
@ CachedLibrary ("receiver" ) @ SuppressWarnings ("unused" ) InteropLibrary receiverInterop ,
313
317
@ Bind ("getLang(receiverInterop)" ) @ SuppressWarnings ("unused" ) EspressoLanguage language ) throws ArityException , UnknownIdentifierException , UnsupportedTypeException {
314
- return invokeMember (receiver , member , arguments , null , receiverInterop , InlinedBranchProfile . getUncached () , InteropLookupAndInvokeFactory .NonVirtualNodeGen .getUncached ());
318
+ return invokeMember (receiver , member , arguments , node , receiverInterop , error , InteropLookupAndInvokeFactory .NonVirtualNodeGen .getUncached ());
315
319
}
316
320
317
321
@ Specialization
0 commit comments