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: ddbcb76e450b
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 4e3399ace1ea
Choose a head ref
  • 2 commits
  • 34 files changed
  • 1 contributor

Commits on Aug 26, 2016

  1. Copy the full SHA
    2e78dca View commit details
  2. Copy the full SHA
    4e3399a View commit details
Showing with 96 additions and 101 deletions.
  1. +6 −4 truffle/src/main/java/org/jruby/truffle/core/CoreLibrary.java
  2. +2 −2 truffle/src/main/java/org/jruby/truffle/core/MathNodes.java
  3. +4 −4 truffle/src/main/java/org/jruby/truffle/core/VMPrimitiveNodes.java
  4. +2 −2 truffle/src/main/java/org/jruby/truffle/core/cast/ArrayCastNode.java
  5. +1 −2 truffle/src/main/java/org/jruby/truffle/core/cast/SingleValueCastNode.java
  6. +4 −4 truffle/src/main/java/org/jruby/truffle/core/cast/SplatCastNode.java
  7. +1 −1 truffle/src/main/java/org/jruby/truffle/core/encoding/EncodingConverterNodes.java
  8. +1 −1 truffle/src/main/java/org/jruby/truffle/core/encoding/EncodingNodes.java
  9. +3 −1 truffle/src/main/java/org/jruby/truffle/core/exception/ExceptionOperations.java
  10. +11 −11 truffle/src/main/java/org/jruby/truffle/core/hash/HashNodes.java
  11. +7 −7 truffle/src/main/java/org/jruby/truffle/core/kernel/KernelNodes.java
  12. +1 −1 truffle/src/main/java/org/jruby/truffle/core/method/MethodNodes.java
  13. +1 −1 truffle/src/main/java/org/jruby/truffle/core/method/UnboundMethodNodes.java
  14. +6 −6 truffle/src/main/java/org/jruby/truffle/core/module/ModuleNodes.java
  15. +3 −3 truffle/src/main/java/org/jruby/truffle/core/numeric/BignumNodes.java
  16. +1 −1 truffle/src/main/java/org/jruby/truffle/core/numeric/IntegerNodes.java
  17. +1 −1 truffle/src/main/java/org/jruby/truffle/core/objectspace/ObjectSpaceNodes.java
  18. +1 −1 truffle/src/main/java/org/jruby/truffle/core/proc/ProcNodes.java
  19. +3 −6 truffle/src/main/java/org/jruby/truffle/core/range/RangeNodes.java
  20. +4 −4 truffle/src/main/java/org/jruby/truffle/core/regexp/MatchDataNodes.java
  21. +1 −1 truffle/src/main/java/org/jruby/truffle/core/regexp/RegexpNodes.java
  22. +3 −3 truffle/src/main/java/org/jruby/truffle/core/rubinius/IOPrimitiveNodes.java
  23. +3 −4 truffle/src/main/java/org/jruby/truffle/core/string/StringNodes.java
  24. +1 −1 truffle/src/main/java/org/jruby/truffle/core/symbol/SymbolNodes.java
  25. +1 −1 truffle/src/main/java/org/jruby/truffle/core/thread/ThreadNodes.java
  26. +1 −1 truffle/src/main/java/org/jruby/truffle/core/time/TimeNodes.java
  27. +1 −1 truffle/src/main/java/org/jruby/truffle/debug/TruffleDebugNodes.java
  28. +2 −2 truffle/src/main/java/org/jruby/truffle/language/TruffleBootNodes.java
  29. +4 −3 truffle/src/main/java/org/jruby/truffle/language/arguments/ArgumentDescriptorUtils.java
  30. +1 −3 truffle/src/main/java/org/jruby/truffle/language/arguments/ReadRestArgumentNode.java
  31. +1 −2 truffle/src/main/java/org/jruby/truffle/language/arguments/SingleBlockArgNode.java
  32. +3 −4 truffle/src/main/java/org/jruby/truffle/stdlib/CoverageNodes.java
  33. +8 −8 truffle/src/main/java/org/jruby/truffle/stdlib/bigdecimal/BigDecimalNodes.java
  34. +3 −4 truffle/src/main/java/org/jruby/truffle/stdlib/psych/PsychParserNodes.java
10 changes: 6 additions & 4 deletions truffle/src/main/java/org/jruby/truffle/core/CoreLibrary.java
Original file line number Diff line number Diff line change
@@ -629,6 +629,12 @@ public CoreLibrary(RubyContext context) {
randomizerFactory = Layouts.RANDOMIZER.createRandomizerShape(randomizerClass, randomizerClass);
Layouts.CLASS.setInstanceFactoryUnsafe(randomizerClass, randomizerFactory);

// Standard library

digestClass = defineClass(truffleModule, basicObjectClass, "Digest");
digestFactory = Layouts.DIGEST.createDigestShape(digestClass, digestClass);
Layouts.CLASS.setInstanceFactoryUnsafe(digestClass, digestFactory);

// Include the core modules

includeModules(comparableModule);
@@ -642,10 +648,6 @@ public CoreLibrary(RubyContext context) {

globalVariables = new GlobalVariables(nilObject);

digestClass = defineClass(truffleModule, basicObjectClass, "Digest");
digestFactory = Layouts.DIGEST.createDigestShape(digestClass, digestClass);
Layouts.CLASS.setInstanceFactoryUnsafe(digestClass, digestFactory);

// No need for new version since it's null before which is not cached
assert Layouts.CLASS.getSuperclass(basicObjectClass) == null;
Layouts.CLASS.setSuperclass(basicObjectClass, nilObject);
4 changes: 2 additions & 2 deletions truffle/src/main/java/org/jruby/truffle/core/MathNodes.java
Original file line number Diff line number Diff line change
@@ -329,7 +329,7 @@ public DynamicObject frexp(double a) {
for (; mantissa >= 1.0; mantissa *= 0.5, exponent +=1) { }
}

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[]{sign * mantissa, exponent}, 2);
return createArray(new Object[] { sign * mantissa, exponent }, 2);
}

@Fallback
@@ -536,7 +536,7 @@ public DynamicObject lgamma(double a) {

final RubyMath.NemesLogGamma l = new RubyMath.NemesLogGamma(a);

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[]{l.value, l.sign}, 2);
return createArray(new Object[] { l.value, l.sign }, 2);
}

@Fallback
Original file line number Diff line number Diff line change
@@ -369,7 +369,7 @@ public DynamicObject times() {
final double tutime = 0;
final double tstime = 0;

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new double[]{
return createArray(new double[] {
utime,
stime,
cutime,
@@ -465,11 +465,11 @@ public DynamicObject getSection(DynamicObject section) {
Object[] objects = new Object[]{
createString(StringOperations.encodeRope(key, UTF8Encoding.INSTANCE)),
createString(StringOperations.encodeRope(stringValue, UTF8Encoding.INSTANCE)) };
sectionKeyValues.add(Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length));
sectionKeyValues.add(createArray(objects, objects.length));
}

Object[] objects = sectionKeyValues.toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
@@ -535,7 +535,7 @@ public Integer block() throws InterruptedException {
}

Object[] objects = new Object[]{ output, termsig, stopsig, pid };
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
Original file line number Diff line number Diff line change
@@ -82,10 +82,10 @@ public DynamicObject castArray(DynamicObject array) {
public Object cast(Object nil) {
switch (nilBehavior) {
case EMPTY_ARRAY:
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), null, 0);
return createArray(null, 0);

case ARRAY_WITH_NIL:
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[]{nil()}, 1);
return createArray(new Object[]{nil()}, 1);

case NIL:
return nil;
Original file line number Diff line number Diff line change
@@ -15,7 +15,6 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.object.DynamicObject;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.Layouts;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

@@ -41,7 +40,7 @@ protected Object castSingle(Object[] args) {
@TruffleBoundary
@Specialization(guards = { "!noArguments(args)", "!singleArgument(args)" })
protected DynamicObject castMany(Object[] args) {
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), args, args.length);
return createArray(args, args.length);
}

protected boolean noArguments(Object[] args) {
Original file line number Diff line number Diff line change
@@ -67,10 +67,10 @@ public SplatCastNode(RubyContext context, SourceSection sourceSection, NilBehavi
public Object splatNil(VirtualFrame frame, Object nil) {
switch (nilBehavior) {
case EMPTY_ARRAY:
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), null, 0);
return createArray(null, 0);

case ARRAY_WITH_NIL:
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[]{nil()}, 1);
return createArray(new Object[] { nil() }, 1);

case CONVERT:
return toA.call(frame, nil, "to_a");
@@ -102,14 +102,14 @@ public DynamicObject splat(VirtualFrame frame, Object object,
if (RubyGuards.isRubyArray(array)) {
return (DynamicObject) array;
} else if (array == nil() || array == DispatchNode.MISSING) {
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[] { object }, 1);
return createArray(new Object[] { object }, 1);
} else {
errorProfile.enter();
throw new RaiseException(coreExceptions().typeErrorCantConvertTo(object, "Array", Layouts.SYMBOL.getString(conversionMethod), array, this));
}
}

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[] { object }, 1);
return createArray(new Object[] { object }, 1);
}

}
Original file line number Diff line number Diff line change
@@ -433,7 +433,7 @@ public Object encodingConverterLastError(DynamicObject encodingConverter) {
ret[4] = createString(new ByteList(ec.lastError.getErrorBytes(), ec.lastError.getErrorBytesP() + ec.lastError.getErrorBytesLength(), ec.lastError.getReadAgainLength()));
}

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), ret, ret.length);
return createArray(ret, ret.length);
}

}
Original file line number Diff line number Diff line change
@@ -414,7 +414,7 @@ public DynamicObject list() {

System.arraycopy(encodings, 0, arrayStore, 0, encodings.length);

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), arrayStore, arrayStore.length);
return createArray(arrayStore, arrayStore.length);
}
}

Original file line number Diff line number Diff line change
@@ -11,9 +11,11 @@

import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.object.DynamicObject;

import org.jcodings.specific.UTF8Encoding;
import org.jruby.truffle.Layouts;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.core.array.ArrayHelpers;
import org.jruby.truffle.core.string.StringOperations;
import org.jruby.truffle.language.backtrace.Backtrace;
import org.jruby.truffle.language.backtrace.BacktraceFormatter;
@@ -40,7 +42,7 @@ public static DynamicObject backtraceAsRubyStringArray(RubyContext context, Dyna
StringOperations.encodeRope(lines.get(n), UTF8Encoding.INSTANCE));
}

return Layouts.ARRAY.createArray(context.getCoreLibrary().getArrayFactory(), array, array.length);
return ArrayHelpers.createArray(context, array, array.length);
}

// because the factory is not constant
22 changes: 11 additions & 11 deletions truffle/src/main/java/org/jruby/truffle/core/hash/HashNodes.java
Original file line number Diff line number Diff line change
@@ -103,18 +103,18 @@ public Object construct(
final Object pair = store[n];

if (!RubyGuards.isRubyArray(pair)) {
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), args, args.length));
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", createArray(args, args.length));
}

final DynamicObject pairArray = (DynamicObject) pair;
final Object pairStore = Layouts.ARRAY.getStore(pairArray);

if (pairStore != null && pairStore.getClass() != Object[].class) {
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), args, args.length));
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", createArray(args, args.length));
}

if (Layouts.ARRAY.getSize(pairArray) != 2) {
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), args, args.length));
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", createArray(args, args.length));
}

final Object[] pairObjectStore = (Object[]) pairStore;
@@ -137,7 +137,7 @@ public Object constructFallback(
DynamicObject hashClass,
Object[] args,
@Cached("new()") SnippetNode snippetNode) {
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), args, args.length));
return snippetNode.execute(frame, "_constructor_fallback(*args)", "args", createArray(args, args.length));
}

public boolean isSmallArrayOfPairs(Object[] args) {
@@ -648,7 +648,7 @@ public Object each(VirtualFrame frame, DynamicObject hash, NotProvided block) {
}

private Object yieldPair(VirtualFrame frame, DynamicObject block, Object key, Object value) {
return yield(frame, block, Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[] { key, value }, 2));
return yield(frame, block, createArray(new Object[] { key, value }, 2));
}

}
@@ -802,7 +802,7 @@ public abstract static class MapNode extends YieldingCoreMethodNode {
public DynamicObject mapNull(VirtualFrame frame, DynamicObject hash, DynamicObject block) {
assert HashOperations.verifyStore(getContext(), hash);

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), null, 0);
return createArray(null, 0);
}

@ExplodeLoop
@@ -830,7 +830,7 @@ public DynamicObject mapPackedArray(VirtualFrame frame, DynamicObject hash, Dyna
}
}

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), arrayBuilderNode.finish(resultStore, length), length);
return createArray(arrayBuilderNode.finish(resultStore, length), length);
}

@Specialization(guards = "isBucketHash(hash)")
@@ -854,11 +854,11 @@ public DynamicObject mapBuckets(VirtualFrame frame, DynamicObject hash, DynamicO
}
}

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), arrayBuilderNode.finish(store, length), length);
return createArray(arrayBuilderNode.finish(store, length), length);
}

private Object yieldPair(VirtualFrame frame, DynamicObject block, Object key, Object value) {
return yield(frame, block, Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), new Object[] { key, value }, 2));
return yield(frame, block, createArray(new Object[] { key, value }, 2));
}

}
@@ -1256,7 +1256,7 @@ public DynamicObject shiftPackedArray(DynamicObject hash) {
assert HashOperations.verifyStore(getContext(), hash);

Object[] objects = new Object[]{key, value};
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

@Specialization(guards = {"!isEmptyHash(hash)", "isBucketHash(hash)"})
@@ -1316,7 +1316,7 @@ public DynamicObject shiftBuckets(DynamicObject hash) {
assert HashOperations.verifyStore(getContext(), hash);

Object[] objects = new Object[]{key, value};
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
Original file line number Diff line number Diff line change
@@ -378,7 +378,7 @@ public DynamicObject callerLocations(int omit, int length) {
locations[n] = Layouts.THREAD_BACKTRACE_LOCATION.createThreadBacktraceLocation(coreLibrary().getThreadBacktraceLocationFactory(), activation);
}

return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), locations, locations.length);
return createArray(locations, locations.length);
}
}

@@ -1243,7 +1243,7 @@ public DynamicObject methodsRegular(Object self, boolean regular,
final DynamicObject metaClass = metaClassNode.executeMetaClass(self);

Object[] objects = Layouts.MODULE.getFields(metaClass).filterMethodsOnObject(getContext(), regular, MethodFilter.PUBLIC_PROTECTED).toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

@Specialization(guards = "!regular")
@@ -1296,7 +1296,7 @@ public DynamicObject privateMethods(Object self, boolean includeAncestors) {
DynamicObject metaClass = metaClassNode.executeMetaClass(self);

Object[] objects = Layouts.MODULE.getFields(metaClass).filterMethodsOnObject(getContext(), includeAncestors, MethodFilter.PRIVATE).toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
@@ -1343,7 +1343,7 @@ public DynamicObject protectedMethods(Object self, boolean includeAncestors) {
final DynamicObject metaClass = metaClassNode.executeMetaClass(self);

Object[] objects = Layouts.MODULE.getFields(metaClass).filterMethodsOnObject(getContext(), includeAncestors, MethodFilter.PROTECTED).toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
@@ -1373,7 +1373,7 @@ public DynamicObject publicMethods(Object self, boolean includeAncestors) {
final DynamicObject metaClass = metaClassNode.executeMetaClass(self);

Object[] objects = Layouts.MODULE.getFields(metaClass).filterMethodsOnObject(getContext(), includeAncestors, MethodFilter.PUBLIC).toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
@@ -1641,11 +1641,11 @@ public DynamicObject singletonMethods(Object self, boolean includeAncestors) {
final DynamicObject metaClass = metaClassNode.executeMetaClass(self);

if (!Layouts.CLASS.getIsSingleton(metaClass)) {
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), null, 0);
return createArray(null, 0);
}

Object[] objects = Layouts.MODULE.getFields(metaClass).filterSingletonMethods(getContext(), includeAncestors, MethodFilter.PUBLIC_PROTECTED).toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
Original file line number Diff line number Diff line change
@@ -150,7 +150,7 @@ public Object sourceLocation(DynamicObject method) {
} else {
DynamicObject file = createString(StringOperations.encodeRope(sourceSection.getSource().getName(), UTF8Encoding.INSTANCE));
Object[] objects = new Object[] { file, sourceSection.getStartLine() };
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}
}

Original file line number Diff line number Diff line change
@@ -156,7 +156,7 @@ public Object sourceLocation(DynamicObject unboundMethod) {
} else {
DynamicObject file = createString(StringOperations.encodeRope(sourceSection.getSource().getName(), UTF8Encoding.INSTANCE));
Object[] objects = new Object[]{file, sourceSection.getStartLine()};
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}
}

Original file line number Diff line number Diff line change
@@ -324,7 +324,7 @@ public DynamicObject ancestors(DynamicObject self) {
}

Object[] objects = ancestors.toArray(new Object[ancestors.size()]);
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}
}

@@ -802,7 +802,7 @@ public DynamicObject constants(DynamicObject module, boolean inherit) {
}

Object[] objects = constantsArray.toArray(new Object[constantsArray.size()]);
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
@@ -1223,7 +1223,7 @@ public DynamicObject includedModules(DynamicObject module) {
}

Object[] objects = modules.toArray(new Object[modules.size()]);
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}
}

@@ -1319,7 +1319,7 @@ public DynamicObject nesting() {
}

Object[] objects = modules.toArray(new Object[modules.size()]);
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}
}

@@ -1485,7 +1485,7 @@ public RubyNode coerceToBoolean(RubyNode includeAncestors) {
@TruffleBoundary
public DynamicObject getInstanceMethods(DynamicObject module, boolean includeAncestors) {
Object[] objects = Layouts.MODULE.getFields(module).filterMethods(getContext(), includeAncestors, MethodFilter.by(visibility)).toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}

}
@@ -1586,7 +1586,7 @@ public RubyNode coerceToBoolean(RubyNode includeAncestors) {
@Specialization
public DynamicObject instanceMethods(DynamicObject module, boolean includeAncestors) {
Object[] objects = Layouts.MODULE.getFields(module).filterMethods(getContext(), includeAncestors, MethodFilter.PUBLIC_PROTECTED).toArray();
return Layouts.ARRAY.createArray(coreLibrary().getArrayFactory(), objects, objects.length);
return createArray(objects, objects.length);
}
}

Loading