Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 5e7b193910fa
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: f1dd839c9135
Choose a head ref
  • 2 commits
  • 7 files changed
  • 1 contributor

Commits on Oct 12, 2015

  1. [Truffle] Simplify is-only-a-module checks.

    * Fixes b1fb222.
    eregon committed Oct 12, 2015
    Copy the full SHA
    6adaca6 View commit details
  2. Copy the full SHA
    f1dd839 View commit details
Original file line number Diff line number Diff line change
@@ -80,10 +80,10 @@ public static DynamicObject createBootClass(RubyContext context, DynamicObject c

if (superclass != null) {
assert RubyGuards.isRubyClass(superclass);
assert RubyGuards.isRubyClass(Layouts.MODULE.getFields(rubyClass).rubyModuleObject);
assert RubyGuards.isRubyClass(rubyClass);

Layouts.MODULE.getFields(rubyClass).parentModule = Layouts.MODULE.getFields(superclass).start;
Layouts.MODULE.getFields(superclass).addDependent(Layouts.MODULE.getFields(rubyClass).rubyModuleObject);
Layouts.MODULE.getFields(superclass).addDependent(rubyClass);

Layouts.MODULE.getFields(rubyClass).newVersion();
}
@@ -123,10 +123,9 @@ public static DynamicObject createRubyClass(RubyContext context, DynamicObject c

if (superclass != null) {
assert RubyGuards.isRubyClass(superclass);
assert RubyGuards.isRubyClass(Layouts.MODULE.getFields(rubyClass).rubyModuleObject);

Layouts.MODULE.getFields(rubyClass).parentModule = Layouts.MODULE.getFields(superclass).start;
Layouts.MODULE.getFields(superclass).addDependent(Layouts.MODULE.getFields(rubyClass).rubyModuleObject);
Layouts.MODULE.getFields(superclass).addDependent(rubyClass);

Layouts.MODULE.getFields(rubyClass).newVersion();
}
Original file line number Diff line number Diff line change
@@ -87,7 +87,7 @@ private void addCoreMethod(MethodDetails methodDetails) {
}
}

assert module != null : fullName;
assert RubyGuards.isRubyModule(module) : fullName;

final CoreMethod method = methodDetails.getMethodAnnotation();

@@ -106,7 +106,7 @@ private void addCoreMethod(MethodDetails methodDetails) {
if (method.constructor()) {
System.err.println("WARNING: Either constructor or isModuleFunction for " + methodDetails.getIndicativeName());
}
if (!(RubyGuards.isRubyModule(Layouts.MODULE.getFields(module).rubyModuleObject) && !RubyGuards.isRubyClass(Layouts.MODULE.getFields(module).rubyModuleObject))) {
if (RubyGuards.isRubyClass(module)) {
System.err.println("WARNING: Using isModuleFunction on a Class for " + methodDetails.getIndicativeName());
}
}
Original file line number Diff line number Diff line change
@@ -1230,7 +1230,7 @@ public DynamicObject includedModules(DynamicObject module) {
final List<DynamicObject> modules = new ArrayList<>();

for (DynamicObject included : Layouts.MODULE.getFields(module).ancestors()) {
if (RubyGuards.isRubyModule(Layouts.MODULE.getFields(included).rubyModuleObject) && !RubyGuards.isRubyClass(Layouts.MODULE.getFields(included).rubyModuleObject) && included != module) {
if (!RubyGuards.isRubyClass(included) && included != module) {
modules.add(included);
}
}
Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@ public Object execute(VirtualFrame frame) {
definingModule = ModuleNodes.createRubyModule(getContext(), getContext().getCoreLibrary().getModuleClass(), lexicalParent, name, this);
} else {
Object module = constant.getValue();
if (!(RubyGuards.isRubyModule(module)) || !(RubyGuards.isRubyModule(Layouts.MODULE.getFields((DynamicObject) module).rubyModuleObject) && !RubyGuards.isRubyClass(Layouts.MODULE.getFields((DynamicObject) module).rubyModuleObject))) {
if (!RubyGuards.isRubyModule(module) || RubyGuards.isRubyClass(module)) {
throw new RaiseException(getContext().getCoreLibrary().typeErrorIsNotA(name, "module", this));
}
definingModule = (DynamicObject) module;
Original file line number Diff line number Diff line change
@@ -103,7 +103,7 @@ public static RubyConstant lookupConstant(RubyContext context, DynamicObject mod

private static RubyConstant lookupConstantInObject(RubyContext context, DynamicObject module, String name) {
// Look in Object and its included modules for modules (not for classes)
if (!RubyGuards.isRubyClass(Layouts.MODULE.getFields(module).rubyModuleObject)) {
if (!RubyGuards.isRubyClass(module)) {
final DynamicObject objectClass = context.getCoreLibrary().getObjectClass();

RubyConstant constant = Layouts.MODULE.getFields(objectClass).getConstants().get(name);
Original file line number Diff line number Diff line change
@@ -255,7 +255,7 @@ public CoreLibrary(RubyContext context) {

// Close the cycles
Layouts.MODULE.getFields(classClass).parentModule = Layouts.MODULE.getFields(moduleClass).start;
Layouts.MODULE.getFields(moduleClass).addDependent(Layouts.MODULE.getFields(classClass).rubyModuleObject);
Layouts.MODULE.getFields(moduleClass).addDependent(classClass);
Layouts.MODULE.getFields(classClass).newVersion();

Layouts.MODULE.getFields(classClass).getAdoptedByLexicalParent(context, objectClass, "Class", node);
Original file line number Diff line number Diff line change
@@ -240,7 +240,7 @@ public void prepend(RubyContext context, Node currentNode, DynamicObject module)

ModuleChain mod = Layouts.MODULE.getFields(module).start;
ModuleChain cur = start;
while (mod != null && !(RubyGuards.isRubyModule(mod) && RubyGuards.isRubyClass(((ModuleFields) mod).rubyModuleObject))) {
while (mod != null && !(mod instanceof ModuleFields && RubyGuards.isRubyClass(((ModuleFields) mod).rubyModuleObject))) {
if (!(mod instanceof PrependMarker)) {
if (!ModuleOperations.includesModule(rubyModuleObject, mod.getActualModule())) {
cur.insertAfter(mod.getActualModule());
@@ -376,7 +376,7 @@ public InternalMethod deepMethodSearch(RubyContext context, String name) {
}

// Also search on Object if we are a Module. JRuby calls it deepMethodSearch().
if (RubyGuards.isRubyModule(rubyModuleObject) && !RubyGuards.isRubyClass(rubyModuleObject)) { // TODO: handle undefined methods
if (!RubyGuards.isRubyClass(rubyModuleObject)) { // TODO: handle undefined methods
method = ModuleOperations.lookupMethod(context.getCoreLibrary().getObjectClass(), name);

if (method != null && !method.isUndefined()) {