public LinkedSetDispatchNode( String attributeId, AttributeWriteNode write, PythonObject primary, SetDispatchNode next) { super(attributeId); this.check = LayoutCheckNode.create(primary, attributeId, true); this.write = write; this.next = next; }
@Override public void setBooleanValue(VirtualFrame frame, PythonObject primary, boolean value) { try { if (check.accept(primary)) { write.setBooleanValueUnsafe(primary, value); } else { next.setBooleanValue(frame, primary, value); } } catch (InvalidAssumptionException | StorageLocationGeneralizeException e) { rewrite(next).setValue(frame, primary, value); } }