From a7e148fddfd912d75efcc63f87b00efebaed94e5 Mon Sep 17 00:00:00 2001 From: Kevin Menard Date: Sat, 7 Mar 2015 15:33:38 -0500 Subject: [PATCH] Revert "[Truffle] Fixed class variable lookup from singleton classes by attaching their companion class to them." This reverts commit 0e29b6b8c8f801f35a164b3382d0365b3ae37cb0. The approach needs overall refinement. --- .../truffle/runtime/ModuleOperations.java | 8 -------- .../truffle/runtime/core/RubyBasicObject.java | 9 ++------- .../jruby/truffle/runtime/core/RubyClass.java | 19 +++---------------- 3 files changed, 5 insertions(+), 31 deletions(-) diff --git a/truffle/src/main/java/org/jruby/truffle/runtime/ModuleOperations.java b/truffle/src/main/java/org/jruby/truffle/runtime/ModuleOperations.java index a73be882e48..dc237008174 100644 --- a/truffle/src/main/java/org/jruby/truffle/runtime/ModuleOperations.java +++ b/truffle/src/main/java/org/jruby/truffle/runtime/ModuleOperations.java @@ -243,14 +243,6 @@ public static Object lookupClassVariable(RubyModule module, String name) { } } - if (module instanceof RubyClass) { - RubyClass klass = (RubyClass) module; - - if (klass.isSingleton()) { - return lookupClassVariable(((RubyClass) module).getAttached(), name); - } - } - // Nothing found return null; diff --git a/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBasicObject.java b/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBasicObject.java index 2af2b66e946..f06ae4339c0 100644 --- a/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBasicObject.java +++ b/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBasicObject.java @@ -104,13 +104,8 @@ public RubyClass getSingletonClass(Node currentNode) { final RubyClass logicalClass = metaClass; - if (this instanceof RubyModule) { - metaClass = RubyClass.createSingletonClassOfObject(getContext(), logicalClass, (RubyModule) this, - String.format("#>", logicalClass.getName(), getObjectID())); - } else { - metaClass = RubyClass.createSingletonClassOfObject(getContext(), logicalClass, logicalClass, - String.format("#>", logicalClass.getName(), getObjectID())); - } + metaClass = RubyClass.createSingletonClassOfObject(getContext(), logicalClass, + String.format("#>", logicalClass.getName(), getObjectID())); if (DebugOperations.verySlowIsFrozen(this)) { DebugOperations.verySlowFreeze(metaClass); diff --git a/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyClass.java b/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyClass.java index ecf9f440530..ac2c1e5f857 100644 --- a/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyClass.java +++ b/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyClass.java @@ -33,7 +33,6 @@ public class RubyClass extends RubyModule { private final boolean isSingleton; private final Set subClasses = Collections.newSetFromMap(new WeakHashMap()); - @CompilationFinal private RubyModule attached; /** * This constructor supports initialization and solves boot-order problems and should not @@ -49,10 +48,10 @@ public RubyClass(RubyContext context, RubyModule lexicalParent, RubyClass superc ensureSingletonConsistency(); } - protected static RubyClass createSingletonClassOfObject(RubyContext context, RubyClass superclass, RubyModule attached, String name) { + protected static RubyClass createSingletonClassOfObject(RubyContext context, RubyClass superclass, String name) { // We also need to create the singleton class of a singleton class for proper lookup and consistency. // See rb_singleton_class() documentation in MRI. - return new RubyClass(context, superclass.getLogicalClass(), null, superclass, name, true, attached).ensureSingletonConsistency(); + return new RubyClass(context, superclass.getLogicalClass(), null, superclass, name, true).ensureSingletonConsistency(); } protected RubyClass(RubyContext context, RubyClass classClass, RubyModule lexicalParent, RubyClass superclass, String name, boolean isSingleton) { @@ -65,14 +64,6 @@ protected RubyClass(RubyContext context, RubyClass classClass, RubyModule lexica } } - protected RubyClass(RubyContext context, RubyClass classClass, RubyModule lexicalParent, RubyClass superclass, String name, boolean isSingleton, RubyModule attached) { - this(context, classClass, lexicalParent, superclass, name, isSingleton); - - assert isSingleton == true; - - this.attached = attached; - } - public void initialize(RubyClass superclass) { unsafeSetSuperclass(superclass); ensureSingletonConsistency(); @@ -133,7 +124,7 @@ private RubyClass createOneSingletonClass() { } metaClass = new RubyClass(getContext(), - getLogicalClass(), null, singletonSuperclass, String.format("#", getName()), true, this); + getLogicalClass(), null, singletonSuperclass, String.format("#", getName()), true); return metaClass; } @@ -146,10 +137,6 @@ public boolean isSingleton() { return isSingleton; } - public RubyModule getAttached() { - return attached; - } - public RubyClass getSuperClass() { CompilerAsserts.neverPartOfCompilation();