From 4b4072f4ddc519bf5634c947674696d4b491d80f Mon Sep 17 00:00:00 2001 From: Adam Ruka Date: Mon, 18 Dec 2023 01:03:46 -0800 Subject: [PATCH] Fix the basic benchmark by: 1. Changing the limit of ObjectPropertyWriteNode.writeProperty() from 1 to 2. 2. Stop invalidating the writtenToAssumption in ClassInstanceObject. --- .../nodes/exprs/properties/ObjectPropertyWriteNode.java | 9 ++++----- .../truffle/part_13/runtime/ClassInstanceObject.java | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/part-13/src/main/java/com/endoflineblog/truffle/part_13/nodes/exprs/properties/ObjectPropertyWriteNode.java b/part-13/src/main/java/com/endoflineblog/truffle/part_13/nodes/exprs/properties/ObjectPropertyWriteNode.java index e544da3e..4d707b7b 100644 --- a/part-13/src/main/java/com/endoflineblog/truffle/part_13/nodes/exprs/properties/ObjectPropertyWriteNode.java +++ b/part-13/src/main/java/com/endoflineblog/truffle/part_13/nodes/exprs/properties/ObjectPropertyWriteNode.java @@ -18,17 +18,16 @@ public abstract class ObjectPropertyWriteNode extends Node { public abstract Object executePropertyWrite(Object target, Object property, Object rvalue); - @Specialization(guards = "interopLibrary.isMemberWritable(target, propertyName)", limit = "1") + // yes, this has to be limit=2 - limit=1 makes the benchmark slow (!) + @Specialization(guards = "interopLibrary.isMemberWritable(target, propertyName)", limit = "2") protected Object writeProperty(Object target, String propertyName, Object rvalue, @CachedLibrary("target") InteropLibrary interopLibrary) { try { interopLibrary.writeMember(target, propertyName, rvalue); - return rvalue; - } catch (UnknownIdentifierException e) { - return Undefined.INSTANCE; - } catch (UnsupportedMessageException | UnsupportedTypeException e) { + } catch (UnsupportedMessageException | UnsupportedTypeException | UnknownIdentifierException e) { throw new EasyScriptException(this, e.getMessage()); } + return rvalue; } /** diff --git a/part-13/src/main/java/com/endoflineblog/truffle/part_13/runtime/ClassInstanceObject.java b/part-13/src/main/java/com/endoflineblog/truffle/part_13/runtime/ClassInstanceObject.java index 15de1aae..fc8feadc 100644 --- a/part-13/src/main/java/com/endoflineblog/truffle/part_13/runtime/ClassInstanceObject.java +++ b/part-13/src/main/java/com/endoflineblog/truffle/part_13/runtime/ClassInstanceObject.java @@ -96,7 +96,7 @@ boolean isMemberInsertable(String member, @ExportMessage void writeMember(String member, Object value, @CachedLibrary("this") DynamicObjectLibrary dynamicObjectLibrary) { - this.writtenToAssumption.invalidate(); +// this.writtenToAssumption.invalidate(); dynamicObjectLibrary.put(this, member, value); } }