Skip to content

Commit bbc64ad

Browse files
committed
[GR-26397] Use Shape flags for frozen
PullRequest: truffleruby/3172
2 parents 4fc8960 + f26559f commit bbc64ad

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/main/java/org/truffleruby/Layouts.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public abstract class Layouts {
2121
// Standard identifiers
2222

2323
public static final HiddenKey OBJECT_ID_IDENTIFIER = new HiddenKey("object_id"); // long
24-
public static final HiddenKey FROZEN_IDENTIFIER = new HiddenKey("frozen?"); // boolean
2524
public static final HiddenKey OBJECT_LOCK = new HiddenKey("object_lock"); // ReentrantLock
2625
public static final HiddenKey ASSOCIATED_IDENTIFIER = new HiddenKey("associated"); // Pointer[]
2726
public static final HiddenKey FINALIZER_REF_IDENTIFIER = new HiddenKey("finalizerRef"); // FinalizerReference

src/main/java/org/truffleruby/language/RubyDynamicObject.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
import com.oracle.truffle.api.interop.StopIterationException;
1313
import com.oracle.truffle.api.interop.UnknownKeyException;
14-
import org.truffleruby.Layouts;
1514
import org.truffleruby.RubyContext;
1615
import org.truffleruby.RubyLanguage;
1716
import org.truffleruby.core.array.ArrayUtils;
@@ -62,6 +61,8 @@
6261
@ExportLibrary(InteropLibrary.class)
6362
public abstract class RubyDynamicObject extends DynamicObject {
6463

64+
private static final int FROZEN = 1;
65+
6566
private RubyClass metaClass;
6667

6768
public RubyDynamicObject(RubyClass metaClass, Shape shape) {
@@ -98,14 +99,14 @@ public String toString() {
9899
// region RubyLibrary messages
99100
@ExportMessage
100101
public void freeze(
101-
@Exclusive @Cached WriteObjectFieldNode writeFrozenNode) {
102-
writeFrozenNode.execute(this, Layouts.FROZEN_IDENTIFIER, true);
102+
@CachedLibrary("this") DynamicObjectLibrary objLib) {
103+
objLib.setShapeFlags(this, objLib.getShapeFlags(this) | FROZEN);
103104
}
104105

105106
@ExportMessage
106107
public boolean isFrozen(
107-
@CachedLibrary("this") DynamicObjectLibrary readFrozenNode) {
108-
return (boolean) readFrozenNode.getOrDefault(this, Layouts.FROZEN_IDENTIFIER, false);
108+
@CachedLibrary("this") DynamicObjectLibrary objLib) {
109+
return (objLib.getShapeFlags(this) & FROZEN) != 0;
109110
}
110111
// endregion
111112

0 commit comments

Comments
 (0)