Skip to content

Commit

Permalink
[Truffle] Finish draining the util swamp.
Browse files Browse the repository at this point in the history
chrisseaton committed Dec 11, 2016

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 530f3b1 commit cd313f3
Showing 46 changed files with 636 additions and 748 deletions.
3 changes: 1 addition & 2 deletions truffle/src/main/java/org/jruby/truffle/Main.java
Original file line number Diff line number Diff line change
@@ -49,9 +49,8 @@
import org.jruby.truffle.options.OptionsCatalog;
import org.jruby.truffle.options.OutputStrings;
import org.jruby.truffle.options.RubyInstanceConfig;
import org.jruby.truffle.util.MainExitException;
import org.jruby.truffle.options.MainExitException;

import java.io.InputStream;
import java.lang.management.ManagementFactory;

public class Main {
12 changes: 12 additions & 0 deletions truffle/src/main/java/org/jruby/truffle/RubyLanguage.java
Original file line number Diff line number Diff line change
@@ -10,13 +10,15 @@
package org.jruby.truffle;

import com.oracle.truffle.api.CallTarget;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.TruffleLanguage;
import com.oracle.truffle.api.frame.MaterializedFrame;
import com.oracle.truffle.api.instrumentation.ProvidedTags;
import com.oracle.truffle.api.instrumentation.StandardTags;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.core.kernel.TraceManager;
import org.jruby.truffle.language.LazyRubyRootNode;
import org.jruby.truffle.language.RubyGuards;
@@ -57,6 +59,16 @@ private RubyLanguage() {

public static final RubyLanguage INSTANCE = new RubyLanguage();

@CompilerDirectives.TruffleBoundary
public static String fileLine(SourceSection section) {
Source source = section.getSource();
if (section.isAvailable()) {
return String.format("%s:%d", source.getName(), section.getStartLine());
} else {
return source.getName();
}
}

@Override
public RubyContext createContext(Env env) {
// TODO CS 3-Dec-16 need to parse RUBY_OPT here if it hasn't been already?
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the EPL, the GPL or the LGPL.
***** END LICENSE BLOCK *****/
package org.jruby.truffle.util;
package org.jruby.truffle.algorithms;

import java.util.Arrays;

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.jruby.truffle.util;
package org.jruby.truffle.algorithms;

import java.nio.ByteBuffer;

@@ -10,7 +10,7 @@
*
* @author nahi@ruby-lang.org
*/
public class SipHashInline {
public class SipHash {

public static long hash24(long k0, long k1, byte[] data) {
return hash24(k0, k1, data, 0, data.length);
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
import org.jruby.truffle.builtins.CoreClass;
import org.jruby.truffle.builtins.CoreMethod;
import org.jruby.truffle.builtins.CoreMethodArrayArgumentsNode;
import org.jruby.truffle.collections.Memo;
import org.jruby.truffle.datastructures.Memo;

@CoreClass("Truffle::Binding")
public abstract class TruffleBindingNodes {
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.Layouts;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.RubyLanguage;
import org.jruby.truffle.builtins.CoreClass;
import org.jruby.truffle.builtins.CoreMethod;
import org.jruby.truffle.builtins.CoreMethodArrayArgumentsNode;
@@ -37,7 +38,6 @@
import org.jruby.truffle.language.control.ReturnException;
import org.jruby.truffle.language.methods.UnsupportedOperationBehavior;
import org.jruby.truffle.platform.UnsafeGroup;
import org.jruby.truffle.util.SourceSectionUtils;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue;
@@ -70,7 +70,7 @@ private static DynamicObject createFiber(RubyContext context, DynamicObject thre

public static void initialize(final RubyContext context, final DynamicObject fiber, final DynamicObject block, final Node currentNode) {
final SourceSection sourceSection = Layouts.PROC.getSharedMethodInfo(block).getSourceSection();
final String name = "Ruby Fiber@" + SourceSectionUtils.fileLine(sourceSection);
final String name = "Ruby Fiber@" + RubyLanguage.fileLine(sourceSection);
final Thread thread = new Thread(() -> handleFiberExceptions(context, fiber, block, currentNode));
thread.setName(name);
thread.start();
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.core.string.StringUtils;
import org.jruby.truffle.language.RubyGuards;
import org.jruby.truffle.util.BoundaryUtils.BoundaryIterable;
import org.jruby.truffle.datastructures.BoundaryIterable;

import java.util.Collections;
import java.util.Iterator;
Original file line number Diff line number Diff line change
@@ -96,7 +96,7 @@
import org.jruby.truffle.parser.ParserContext;
import org.jruby.truffle.parser.Translator;
import org.jruby.truffle.platform.UnsafeGroup;
import org.jruby.truffle.util.IdUtil;
import org.jruby.truffle.parser.Identifiers;

import java.util.ArrayList;
import java.util.Arrays;
@@ -532,7 +532,7 @@ public AutoloadNode(RubyContext context, SourceSection sourceSection) {
@TruffleBoundary
@Specialization(guards = "isRubyString(filename)")
public DynamicObject autoload(DynamicObject module, String name, DynamicObject filename) {
if (!IdUtil.isValidConstantName19(name)) {
if (!Identifiers.isValidConstantName19(name)) {
throw new RaiseException(coreExceptions().nameError(StringUtils.format("autoload must be constant name: %s", name), module, name, this));
}

@@ -975,7 +975,7 @@ public RubyNode coerceToString(RubyNode name) {
@TruffleBoundary
@Specialization
public Object setConstant(DynamicObject module, String name, Object value) {
if (!IdUtil.isValidConstantName19(name)) {
if (!Identifiers.isValidConstantName19(name)) {
throw new RaiseException(coreExceptions().nameError(StringUtils.format("wrong constant name %s", name), module, name, this));
}

Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@
import org.jruby.truffle.language.control.RaiseException;
import org.jruby.truffle.language.methods.InternalMethod;
import org.jruby.truffle.language.objects.shared.SharedObjects;
import org.jruby.truffle.util.IdUtil;
import org.jruby.truffle.parser.Identifiers;

import java.util.HashMap;
import java.util.Map;
@@ -183,7 +183,7 @@ public static RubyConstant lookupScopedConstant(RubyContext context, DynamicObje
}

final String lastSegment = fullName.substring(start);
if (!IdUtil.isValidConstantName19(lastSegment)) {
if (!Identifiers.isValidConstantName19(lastSegment)) {
throw new RaiseException(context.getCoreExceptions().nameError(StringUtils.format("wrong constant name %s", fullName), module, fullName, currentNode));
}

@@ -194,7 +194,7 @@ public static RubyConstant lookupScopedConstant(RubyContext context, DynamicObje
public static RubyConstant lookupConstantWithInherit(RubyContext context, DynamicObject module, String name, boolean inherit, Node currentNode) {
assert RubyGuards.isRubyModule(module);

if (!IdUtil.isValidConstantName19(name)) {
if (!Identifiers.isValidConstantName19(name)) {
throw new RaiseException(context.getCoreExceptions().nameError(StringUtils.format("wrong constant name %s", name), module, name, currentNode));
}

Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@
import org.jruby.truffle.language.dispatch.CallDispatchHeadNode;
import org.jruby.truffle.language.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.language.methods.UnsupportedOperationBehavior;
import org.jruby.truffle.util.SipHashInline;
import org.jruby.truffle.algorithms.SipHash;

import java.math.BigInteger;
import java.nio.ByteBuffer;
@@ -1211,7 +1211,7 @@ public long memhashLongLong(long a, long b) {
final ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES * 2);
buffer.putLong(a);
buffer.putLong(b);
return SipHashInline.hash24(Hashing.SEED_K0, Hashing.SEED_K1, buffer.array());
return SipHash.hash24(Hashing.SEED_K0, Hashing.SEED_K1, buffer.array());
}


Original file line number Diff line number Diff line change
@@ -52,7 +52,7 @@
import org.jruby.truffle.core.string.EncodingUtils;
import org.jruby.truffle.core.string.StringSupport;
import org.jruby.truffle.parser.ReOptions;
import org.jruby.truffle.collections.WeakValuedMap;
import org.jruby.truffle.datastructures.WeakValuedMap;

import java.nio.charset.StandardCharsets;
import java.util.Iterator;
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@
import org.jruby.truffle.core.string.StringSupport;
import org.jruby.truffle.core.string.StringUtils;
import org.jruby.truffle.language.RubyGuards;
import org.jruby.truffle.collections.Memo;
import org.jruby.truffle.datastructures.Memo;

import java.nio.ByteBuffer;
import java.nio.charset.Charset;
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
import com.oracle.truffle.api.object.DynamicObjectFactory;
import com.oracle.truffle.api.object.dsl.Layout;
import org.jruby.truffle.core.basicobject.BasicObjectLayout;
import org.jruby.truffle.util.Random;
import org.jruby.truffle.algorithms.Random;

@Layout
public interface RandomizerLayout extends BasicObjectLayout {
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@ public static abstract class RandomizerAllocatePrimitiveNode extends PrimitiveAr

@Specialization
public DynamicObject randomizerAllocate() {
return Layouts.RANDOMIZER.createRandomizer(coreLibrary().getRandomizerFactory(), new org.jruby.truffle.util.Random());
return Layouts.RANDOMIZER.createRandomizer(coreLibrary().getRandomizerFactory(), new org.jruby.truffle.algorithms.Random());
}

}
@@ -51,14 +51,14 @@ public DynamicObject randomizerSeed(DynamicObject randomizer, long seed) {
}

@TruffleBoundary
protected static org.jruby.truffle.util.Random randomFromLong(long seed) {
return org.jruby.truffle.util.Random.randomFromLong(seed);
protected static org.jruby.truffle.algorithms.Random randomFromLong(long seed) {
return org.jruby.truffle.algorithms.Random.randomFromLong(seed);
}

public static int N = 624;

@TruffleBoundary
public static org.jruby.truffle.util.Random randomFromBigInteger(BigInteger big) {
public static org.jruby.truffle.algorithms.Random randomFromBigInteger(BigInteger big) {
if (big.signum() < 0) {
big = big.abs();
}
@@ -70,9 +70,9 @@ public static org.jruby.truffle.util.Random randomFromBigInteger(BigInteger big)
int len = Math.min((buflen + 3) / 4, N);
int[] ints = bigEndianToInts(buf, len);
if (len <= 1) {
return new org.jruby.truffle.util.Random(ints[0]);
return new org.jruby.truffle.algorithms.Random(ints[0]);
} else {
return new org.jruby.truffle.util.Random(ints);
return new org.jruby.truffle.algorithms.Random(ints);
}
}

@@ -110,7 +110,7 @@ public static abstract class RandomizerRandFloatPrimitiveNode extends PrimitiveA
@Specialization
public double randomizerRandFloat(DynamicObject randomizer) {
// Logic copied from org.jruby.util.Random
final org.jruby.truffle.util.Random r = Layouts.RANDOMIZER.getRandom(randomizer);
final org.jruby.truffle.algorithms.Random r = Layouts.RANDOMIZER.getRandom(randomizer);
final int a = randomInt(r) >>> 5;
final int b = randomInt(r) >>> 6;
return (a * 67108864.0 + b) * (1.0 / 9007199254740992.0);
@@ -123,22 +123,22 @@ public static abstract class RandomizerRandIntPrimitiveNode extends PrimitiveArr

@Specialization
public int randomizerRandInt(DynamicObject randomizer, int limit) {
final org.jruby.truffle.util.Random r = Layouts.RANDOMIZER.getRandom(randomizer);
final org.jruby.truffle.algorithms.Random r = Layouts.RANDOMIZER.getRandom(randomizer);
return (int) randInt(r, (long) limit);
}

@Specialization
public long randomizerRandInt(DynamicObject randomizer, long limit) {
final org.jruby.truffle.util.Random r = Layouts.RANDOMIZER.getRandom(randomizer);
final org.jruby.truffle.algorithms.Random r = Layouts.RANDOMIZER.getRandom(randomizer);
return randInt(r, limit);
}

@TruffleBoundary
protected static long randInt(org.jruby.truffle.util.Random r, long limit) {
protected static long randInt(org.jruby.truffle.algorithms.Random r, long limit) {
return randLimitedFixnumInner(r, limit);
}

public static long randLimitedFixnumInner(org.jruby.truffle.util.Random random, long limit) {
public static long randLimitedFixnumInner(org.jruby.truffle.algorithms.Random random, long limit) {
long val;
if (limit == 0) {
val = 0;
@@ -203,7 +203,7 @@ public static abstract class RandomizerBytesPrimitiveNode extends PrimitiveArray
@TruffleBoundary
@Specialization
public DynamicObject genRandBytes(DynamicObject randomizer, int length) {
final org.jruby.truffle.util.Random random = Layouts.RANDOMIZER.getRandom(randomizer);
final org.jruby.truffle.algorithms.Random random = Layouts.RANDOMIZER.getRandom(randomizer);
final byte[] bytes = new byte[length];
int idx = 0;
for (; length >= 4; length -= 4) {
@@ -225,7 +225,7 @@ public DynamicObject genRandBytes(DynamicObject randomizer, int length) {
}

@TruffleBoundary
private static int randomInt(org.jruby.truffle.util.Random random) {
private static int randomInt(org.jruby.truffle.algorithms.Random random) {
return random.genrandInt32();
}

Loading

0 comments on commit cd313f3

Please sign in to comment.