Skip to content

Commit 02fc589

Browse files
committed
Use Cached branch profiles even in the shared language case..
1 parent 5ce5068 commit 02fc589

File tree

1 file changed

+9
-5
lines changed
  • espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/impl

1 file changed

+9
-5
lines changed

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/impl/Klass.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -178,16 +178,17 @@ abstract static class ReadMember {
178178
static Object doShared(Klass receiver, String member,
179179
@CachedLibrary("receiver") InteropLibrary lib,
180180
@Bind("$node") Node node,
181+
@Cached @Shared InlinedBranchProfile error,
181182
@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);
183184
}
184185

185186
@Specialization
186187
static Object readMember(Klass receiver, String member,
187188
@Shared("lookupField") @Cached LookupFieldNode lookupFieldNode,
188189
@Shared("lookupMethod") @Cached LookupDeclaredMethod lookupMethod,
189190
@Bind("$node") Node node,
190-
@Cached InlinedBranchProfile error,
191+
@Cached @Shared InlinedBranchProfile error,
191192
@CachedLibrary("receiver") InteropLibrary lib,
192193
@Bind("getLang(lib)") @SuppressWarnings("unused") EspressoLanguage language) throws UnknownIdentifierException {
193194
EspressoContext ctx = EspressoContext.get(lib);
@@ -264,17 +265,18 @@ abstract static class WriteMember {
264265
@Specialization(guards = "language.isShared()")
265266
static void doShared(Klass receiver, String member, Object value,
266267
@Bind("$node") Node node,
268+
@Cached @Shared InlinedBranchProfile error,
267269
@CachedLibrary("receiver") @SuppressWarnings("unused") InteropLibrary lib,
268270
@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);
270272
}
271273

272274
@Specialization
273275
static void writeMember(Klass receiver, String member, Object value,
274276
@Shared("lookupField") @Cached LookupFieldNode lookupFieldNode,
275277
@Exclusive @Cached ToEspressoNode.DynamicToEspresso toEspressoNode,
276278
@Bind("$node") Node node,
277-
@Cached InlinedBranchProfile error) throws UnknownIdentifierException, UnsupportedTypeException {
279+
@Cached @Shared InlinedBranchProfile error) throws UnknownIdentifierException, UnsupportedTypeException {
278280
Field field = lookupFieldNode.execute(receiver, member, true);
279281
// Can only write to non-final fields.
280282
if (field != null && !field.isFinalFlagSet()) {
@@ -309,9 +311,11 @@ abstract static class InvokeMember {
309311
// Specialization prevents caching a node that would leak the context
310312
@Specialization(guards = "language.isShared()")
311313
static Object doShared(Klass receiver, String member, Object[] arguments,
314+
@Bind("$node") Node node,
315+
@Cached @Shared InlinedBranchProfile error,
312316
@CachedLibrary("receiver") @SuppressWarnings("unused") InteropLibrary receiverInterop,
313317
@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());
315319
}
316320

317321
@Specialization

0 commit comments

Comments
 (0)