Skip to content

Commit 1247f83

Browse files
committed
Fix profiling of isFrozen() in Kernel#freeze
1 parent c1f33be commit 1247f83

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

src/main/java/org/truffleruby/core/kernel/KernelNodes.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ protected RubyDynamicObject clone(RubyDynamicObject object, Object freeze,
567567
}
568568

569569
// Default behavior - is just to copy the frozen state of the original object
570-
if (forceFrozen(freeze) || (copyFrozen && rubyLibrary.isFrozen(object))) {
570+
if (forceFrozen(freeze) || (copyFrozen && rubyLibrary.isFrozen(object))) { // Profiled through lazy usage of rubyLibraryFreeze
571571
rubyLibraryFreeze.freeze(newObject);
572572
}
573573

@@ -857,14 +857,13 @@ protected Object freeze(Object self,
857857
protected Object freezeDynamicObject(Object self,
858858
@CachedLibrary("self") RubyLibrary rubyLibrary,
859859
@CachedLibrary(limit = "1") RubyLibrary rubyLibraryMetaClass,
860-
@Cached ConditionProfile singletonProfile,
860+
@Cached ConditionProfile singletonClassUnfrozenProfile,
861861
@Cached MetaClassNode metaClassNode) {
862862
final RubyClass metaClass = metaClassNode.execute(self);
863-
if (singletonProfile.profile(metaClass.isSingleton &&
864-
!(RubyGuards.isRubyClass(self) && ((RubyClass) self).isSingleton))) {
865-
if (!rubyLibraryMetaClass.isFrozen(metaClass)) {
866-
rubyLibraryMetaClass.freeze(metaClass);
867-
}
863+
if (singletonClassUnfrozenProfile.profile(metaClass.isSingleton &&
864+
!(RubyGuards.isRubyClass(self) && ((RubyClass) self).isSingleton) &&
865+
!rubyLibraryMetaClass.isFrozen(metaClass))) {
866+
rubyLibraryMetaClass.freeze(metaClass);
868867
}
869868
rubyLibrary.freeze(self);
870869
return self;

0 commit comments

Comments
 (0)