File tree Expand file tree Collapse file tree 1 file changed +7
-1
lines changed
src/main/java/org/truffleruby/language/objects Expand file tree Collapse file tree 1 file changed +7
-1
lines changed Original file line number Diff line number Diff line change @@ -39,11 +39,17 @@ boolean isFrozen(RubyString object) {
39
39
40
40
@ Specialization (guards = { "!isRubyObjectRange(object)" , "isNotRubyString(object)" },
41
41
limit = "getDynamicObjectCacheLimit()" )
42
- boolean isFrozen (RubyDynamicObject object ,
42
+ boolean isFrozenCached (RubyDynamicObject object ,
43
43
@ CachedLibrary ("object" ) DynamicObjectLibrary objectLibrary ) {
44
44
return (objectLibrary .getShapeFlags (object ) & FROZEN_FLAG ) != 0 ;
45
45
}
46
46
47
+ // Avoid the uncached DynamicObjectLibrary: this is much faster as it does not have any Shape check/library overhead
48
+ @ Specialization (guards = { "!isRubyObjectRange(object)" , "isNotRubyString(object)" }, replaces = "isFrozenCached" )
49
+ boolean isFrozenUncached (RubyDynamicObject object ) {
50
+ return (object .getShape ().getFlags () & FROZEN_FLAG ) != 0 ;
51
+ }
52
+
47
53
@ Specialization
48
54
boolean isFrozen (RubyObjectRange object ) {
49
55
return object .frozen ;
You can’t perform that action at this time.
0 commit comments