# HG changeset patch # User Christian Wimmer # Date 1440625257 25200 # Node ID 6203830a4f9abda3d1b798836af7f04724f226d0 # Parent 8b72dfac5cc794805cf2a70274a554de7863f990 Bugfix: createCachedAccess can throw an exception, so cacheLength must not be incremented before it returns diff -r 8b72dfac5cc7 -r 6203830a4f9a truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java --- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java Wed Aug 26 14:39:11 2015 -0700 +++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java Wed Aug 26 14:40:57 2015 -0700 @@ -46,8 +46,8 @@ ForeignObjectAccessHeadNode nthParent = (ForeignObjectAccessHeadNode) NodeUtil.getNthParent(this, cacheLength); ObjectAccessNode first = nthParent.getFirst(); if (cacheLength < CACHE_SIZE) { + CachedObjectAccessNode createCachedAccess = createCachedAccess(receiver, nthParent.getAccessTree(), first); cacheLength++; - CachedObjectAccessNode createCachedAccess = createCachedAccess(receiver, nthParent.getAccessTree(), first); return first.replace(createCachedAccess).executeWith(frame, receiver, arguments); } else { return first.replace(createGenericAccess(nthParent.getAccessTree())).executeWith(frame, receiver, arguments);