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: 240359790454
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1011130ec55a
Choose a head ref
  • 13 commits
  • 24 files changed
  • 1 contributor

Commits on Apr 6, 2016

  1. Copy the full SHA
    123c9a2 View commit details
  2. Copy the full SHA
    8055726 View commit details
  3. Copy the full SHA
    2e6e4f7 View commit details
  4. [Truffle] Array is safe.

    chrisseaton committed Apr 6, 2016
    Copy the full SHA
    9765a55 View commit details
  5. Copy the full SHA
    947110e View commit details
  6. Copy the full SHA
    360b32e View commit details
  7. Copy the full SHA
    d19be70 View commit details
  8. Copy the full SHA
    fc760c4 View commit details
  9. Copy the full SHA
    1878f0a View commit details
  10. Copy the full SHA
    cff7e50 View commit details
  11. Copy the full SHA
    6b7b30c View commit details
  12. Copy the full SHA
    597e28f View commit details
  13. Copy the full SHA
    1011130 View commit details
Showing with 101 additions and 92 deletions.
  1. +1 −0 core/src/main/java/org/jruby/util/cli/Options.java
  2. +3 −0 truffle/src/main/java/org/jruby/truffle/core/CoreMethodNodeManager.java
  3. +1 −1 truffle/src/main/java/org/jruby/truffle/core/ProcessNodes.java
  4. +1 −1 truffle/src/main/java/org/jruby/truffle/core/rubinius/ArrayPrimitiveNodes.java
  5. +2 −2 truffle/src/main/java/org/jruby/truffle/core/rubinius/BignumPrimitiveNodes.java
  6. +1 −1 truffle/src/main/java/org/jruby/truffle/core/rubinius/ChannelPrimitiveNodes.java
  7. +6 −5 truffle/src/main/java/org/jruby/truffle/core/rubinius/DirPrimitiveNodes.java
  8. +5 −5 truffle/src/main/java/org/jruby/truffle/core/rubinius/EncodingConverterPrimitiveNodes.java
  9. +1 −1 truffle/src/main/java/org/jruby/truffle/core/rubinius/EncodingPrimitiveNodes.java
  10. +1 −1 truffle/src/main/java/org/jruby/truffle/core/rubinius/ExceptionPrimitiveNodes.java
  11. +2 −2 truffle/src/main/java/org/jruby/truffle/core/rubinius/FixnumPrimitiveNodes.java
  12. +3 −3 truffle/src/main/java/org/jruby/truffle/core/rubinius/FloatPrimitiveNodes.java
  13. +2 −2 truffle/src/main/java/org/jruby/truffle/core/rubinius/ObjectPrimitiveNodes.java
  14. +5 −5 truffle/src/main/java/org/jruby/truffle/core/rubinius/RandomizerPrimitiveNodes.java
  15. +7 −7 truffle/src/main/java/org/jruby/truffle/core/rubinius/RegexpPrimitiveNodes.java
  16. +26 −26 truffle/src/main/java/org/jruby/truffle/core/rubinius/StringPrimitiveNodes.java
  17. +1 −1 truffle/src/main/java/org/jruby/truffle/core/rubinius/SymbolPrimitiveNodes.java
  18. +4 −3 truffle/src/main/java/org/jruby/truffle/core/rubinius/ThreadPrimitiveNodes.java
  19. +1 −1 truffle/src/main/java/org/jruby/truffle/core/rubinius/UndefinedPrimitiveNodes.java
  20. +21 −21 truffle/src/main/java/org/jruby/truffle/core/rubinius/VMPrimitiveNodes.java
  21. +3 −3 truffle/src/main/java/org/jruby/truffle/core/rubinius/WeakRefPrimitiveNodes.java
  22. +1 −1 truffle/src/main/java/org/jruby/truffle/extra/TrufflePrimitiveNodes.java
  23. +2 −0 truffle/src/main/java/org/jruby/truffle/language/Options.java
  24. +1 −0 truffle/src/main/java/org/jruby/truffle/platform/UnsafeGroup.java
1 change: 1 addition & 0 deletions core/src/main/java/org/jruby/util/cli/Options.java
Original file line number Diff line number Diff line change
@@ -227,6 +227,7 @@ public class Options {
public static final Option<Boolean> TRUFFLE_PLATFORM_SAFE_IO = bool(TRUFFLE, "truffle.platform.safe.io", TRUFFLE_PLATFORM_SAFE.load(), "Treat any methods that deal perofrm IO as safe.");
public static final Option<Boolean> TRUFFLE_PLATFORM_SAFE_THREADS = bool(TRUFFLE, "truffle.platform.safe.threads", TRUFFLE_PLATFORM_SAFE.load(), "Treat any methods that deal with threads as safe.");
public static final Option<Boolean> TRUFFLE_PLATFORM_SAFE_PROCESSES = bool(TRUFFLE, "truffle.platform.safe.processes", TRUFFLE_PLATFORM_SAFE.load(), "Treat any methods that deal with processes as safe.");
public static final Option<Boolean> TRUFFLE_PLATFORM_SAFE_SIGNALS = bool(TRUFFLE, "truffle.platform.safe.siganls", TRUFFLE_PLATFORM_SAFE.load(), "Treat any methods that deal with signals as safe.");
public static final Option<Boolean> TRUFFLE_PLATFORM_SAFE_EXIT = bool(TRUFFLE, "truffle.platform.safe.exit", TRUFFLE_PLATFORM_SAFE.load(), "Treat #exit! (hard exiting the VM) as safe.");
public static final Option<Boolean> TRUFFLE_PLATFORM_SAFE_AT_EXIT = bool(TRUFFLE, "truffle.platform.safe.at_exit", TRUFFLE_PLATFORM_SAFE.load(), "Treat #at_exit as safe.");
public static final Option<Boolean> TRUFFLE_PLATFORM_SAFE_PUTS = bool(TRUFFLE, "truffle.platform.safe_puts", true, "Treat Truffle::Primitive.safe_puts as safe.");
Original file line number Diff line number Diff line change
@@ -277,6 +277,9 @@ public static boolean isSafe(RubyContext context, UnsafeGroup[] groups) {
case PROCESSES:
option = options.PLATFORM_SAFE_PROCESSES;
break;
case SIGNALS:
option = options.PLATFORM_SAFE_SIGNALS;
break;
case EXIT:
option = options.PLATFORM_SAFE_EXIT;
break;
Original file line number Diff line number Diff line change
@@ -122,7 +122,7 @@ protected static boolean isMonotonicRaw(int clock_id) {

}

@CoreMethod(names = "kill", onSingleton = true, required = 2, unsafe = UnsafeGroup.PROCESSES)
@CoreMethod(names = "kill", onSingleton = true, required = 2, unsafe = {UnsafeGroup.PROCESSES, UnsafeGroup.SIGNALS})
public abstract static class KillNode extends CoreMethodArrayArgumentsNode {

public KillNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@

public abstract class ArrayPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "tuple_copy_from")
@RubiniusPrimitive(name = "tuple_copy_from")
public static abstract class TupleCopyFromPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public TupleCopyFromPrimitiveNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@
*/
public abstract class BignumPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "bignum_compare")
@RubiniusPrimitive(name = "bignum_compare")
public abstract static class BignumCompareNode extends RubiniusPrimitiveArrayArgumentsNode {

public BignumCompareNode(RubyContext context, SourceSection sourceSection) {
@@ -62,7 +62,7 @@ public Object compareFallback(DynamicObject a, DynamicObject b) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "bignum_pow")
@RubiniusPrimitive(name = "bignum_pow")
public static abstract class BignumPowPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

private final ConditionProfile negativeProfile = ConditionProfile.createBinaryProfile();
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@

public abstract class ChannelPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "channel_new")
@RubiniusPrimitive(name = "channel_new")
public static abstract class ChannelNewPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public ChannelNewPrimitiveNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -49,12 +49,13 @@
import org.jruby.truffle.language.control.RaiseException;
import org.jruby.truffle.language.objects.AllocateObjectNode;
import org.jruby.truffle.language.objects.AllocateObjectNodeGen;
import org.jruby.truffle.platform.UnsafeGroup;

import java.io.File;

public abstract class DirPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "dir_allocate")
@RubiniusPrimitive(name = "dir_allocate")
public static abstract class DirAllocatePrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

@Child private AllocateObjectNode allocateNode;
@@ -71,7 +72,7 @@ public DynamicObject allocate(DynamicObject dirClass) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "dir_open")
@RubiniusPrimitive(name = "dir_open", unsafe = UnsafeGroup.IO)
public static abstract class DirOpenPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public DirOpenPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -110,7 +111,7 @@ public DynamicObject openEncoding(DynamicObject dir, DynamicObject path, Dynamic

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "dir_read")
@RubiniusPrimitive(name = "dir_read", unsafe = UnsafeGroup.IO)
public static abstract class DirReadPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public DirReadPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -142,7 +143,7 @@ public Object read(DynamicObject dir) {
}


@RubiniusPrimitive(unsafeNeedsAudit = true, name = "dir_control")
@RubiniusPrimitive(name = "dir_control", unsafe = UnsafeGroup.IO)
public static abstract class DirControlPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public DirControlPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -168,7 +169,7 @@ public Object control(DynamicObject dir, int kind, int position) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "dir_close")
@RubiniusPrimitive(name = "dir_close", unsafe = UnsafeGroup.IO)
public static abstract class DirClosePrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public DirClosePrimitiveNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@
*/
public abstract class EncodingConverterPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "encoding_converter_allocate")
@RubiniusPrimitive(name = "encoding_converter_allocate")
public static abstract class EncodingConverterAllocateNode extends RubiniusPrimitiveArrayArgumentsNode {

public EncodingConverterAllocateNode(RubyContext context, SourceSection sourceSection) {
@@ -57,7 +57,7 @@ public Object encodingConverterAllocate(DynamicObject encodingConverterClass, No

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "encoding_converter_primitive_convert")
@RubiniusPrimitive(name = "encoding_converter_primitive_convert")
public static abstract class PrimitiveConvertNode extends RubiniusPrimitiveArrayArgumentsNode {

@Child private RopeNodes.MakeSubstringNode makeSubstringNode;
@@ -173,7 +173,7 @@ private Object primitiveConvertHelper(DynamicObject encodingConverter, DynamicOb

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "encoding_converter_putback")
@RubiniusPrimitive(name = "encoding_converter_putback")
public static abstract class EncodingConverterPutbackNode extends RubiniusPrimitiveArrayArgumentsNode {

public EncodingConverterPutbackNode(RubyContext context, SourceSection sourceSection) {
@@ -218,7 +218,7 @@ private DynamicObject putback(DynamicObject encodingConverter, int n) {
}
}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "encoding_converter_last_error")
@RubiniusPrimitive(name = "encoding_converter_last_error")
public static abstract class EncodingConverterLastErrorNode extends RubiniusPrimitiveArrayArgumentsNode {

@Child private CallDispatchHeadNode newLookupTableNode;
@@ -273,7 +273,7 @@ private DynamicObject eConvResultToSymbol(EConvResult result) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "encoding_converter_primitive_errinfo")
@RubiniusPrimitive(name = "encoding_converter_primitive_errinfo")
public static abstract class EncodingConverterErrinfoNode extends RubiniusPrimitiveArrayArgumentsNode {

public EncodingConverterErrinfoNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@
*/
public abstract class EncodingPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "encoding_get_object_encoding", needsSelf = false)
@RubiniusPrimitive(name = "encoding_get_object_encoding", needsSelf = false)
public static abstract class EncodingGetObjectEncodingNode extends RubiniusPrimitiveArrayArgumentsNode {

public EncodingGetObjectEncodingNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@
*/
public abstract class ExceptionPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "exception_errno_error", needsSelf = false)
@RubiniusPrimitive(name = "exception_errno_error", needsSelf = false)
public static abstract class ExceptionErrnoErrorPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public ExceptionErrnoErrorPrimitiveNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@
*/
public abstract class FixnumPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "fixnum_coerce")
@RubiniusPrimitive(name = "fixnum_coerce")
public static abstract class FixnumCoercePrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public FixnumCoercePrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -49,7 +49,7 @@ public DynamicObject coerce(int a, Object b) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "fixnum_pow")
@RubiniusPrimitive(name = "fixnum_pow")
public abstract static class FixnumPowPrimitiveNode extends BignumNodes.BignumCoreMethodNode {

private final ConditionProfile negativeProfile = ConditionProfile.createBinaryProfile();
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@
*/
public abstract class FloatPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "float_dtoa")
@RubiniusPrimitive(name = "float_dtoa")
public static abstract class FloatDToAPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public FloatDToAPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -77,7 +77,7 @@ public DynamicObject dToA(double value) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "float_signbit_p")
@RubiniusPrimitive(name = "float_signbit_p")
public static abstract class FloatSignBitNode extends RubiniusPrimitiveArrayArgumentsNode {

public FloatSignBitNode(RubyContext context, SourceSection sourceSection) {
@@ -92,7 +92,7 @@ public boolean floatSignBit(double value) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "float_round")
@RubiniusPrimitive(name = "float_round")
public static abstract class FloatRoundPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

@Child private FixnumOrBignumNode fixnumOrBignum;
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@
*/
public abstract class ObjectPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "object_id")
@RubiniusPrimitive(name = "object_id")
public abstract static class ObjectIDPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public ObjectIDPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -107,7 +107,7 @@ protected WriteObjectFieldNode createWriteObjectIDNode() {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "object_infect", needsSelf = false)
@RubiniusPrimitive(name = "object_infect", needsSelf = false)
public static abstract class ObjectInfectPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

@Child private IsTaintedNode isTaintedNode;
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@

public abstract class RandomizerPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "randomizer_allocate", needsSelf = false)
@RubiniusPrimitive(name = "randomizer_allocate", needsSelf = false)
public static abstract class RandomizerAllocatePrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RandomizerAllocatePrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -36,7 +36,7 @@ public DynamicObject randomizerAllocate() {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "randomizer_seed")
@RubiniusPrimitive(name = "randomizer_seed")
public static abstract class RandomizerSeedPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RandomizerSeedPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -67,7 +67,7 @@ protected static Random randomFromLong(long seed) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "randomizer_rand_float")
@RubiniusPrimitive(name = "randomizer_rand_float")
public static abstract class RandomizerRandFloatPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RandomizerRandFloatPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -85,7 +85,7 @@ public double randomizerRandFloat(DynamicObject randomizer) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "randomizer_rand_int")
@RubiniusPrimitive(name = "randomizer_rand_int")
public static abstract class RandomizerRandIntPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RandomizerRandIntPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -111,7 +111,7 @@ protected static long randInt(Random r, long limit) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "randomizer_gen_seed")
@RubiniusPrimitive(name = "randomizer_gen_seed")
public static abstract class RandomizerGenSeedPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RandomizerGenSeedPrimitiveNode(RubyContext context, SourceSection sourceSection) {
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@
*/
public abstract class RegexpPrimitiveNodes {

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "regexp_fixed_encoding_p")
@RubiniusPrimitive(name = "regexp_fixed_encoding_p")
public static abstract class RegexpFixedEncodingPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RegexpFixedEncodingPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -51,7 +51,7 @@ public boolean fixedEncoding(DynamicObject regexp) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "regexp_initialize", lowerFixnumParameters = 1)
@RubiniusPrimitive(name = "regexp_initialize", lowerFixnumParameters = 1)
@ImportStatic(RegexpGuards.class)
public static abstract class RegexpInitializePrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

@@ -79,7 +79,7 @@ public DynamicObject initialize(DynamicObject regexp, DynamicObject pattern, int

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "regexp_options")
@RubiniusPrimitive(name = "regexp_options")
@ImportStatic(RegexpGuards.class)
public static abstract class RegexpOptionsPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

@@ -100,7 +100,7 @@ public int optionsNotInitialized(DynamicObject regexp) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "regexp_propagate_last_match")
@RubiniusPrimitive(name = "regexp_propagate_last_match")
public static abstract class RegexpPropagateLastMatchPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RegexpPropagateLastMatchPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -115,7 +115,7 @@ public DynamicObject propagateLastMatch(DynamicObject regexpClass) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "regexp_search_region", lowerFixnumParameters = {1, 2})
@RubiniusPrimitive(name = "regexp_search_region", lowerFixnumParameters = {1, 2})
@ImportStatic(RegexpGuards.class)
public static abstract class RegexpSearchRegionPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

@@ -159,7 +159,7 @@ public Object searchRegion(DynamicObject regexp, DynamicObject string, int start

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "regexp_set_last_match")
@RubiniusPrimitive(name = "regexp_set_last_match")
public static abstract class RegexpSetLastMatchPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RegexpSetLastMatchPrimitiveNode(RubyContext context, SourceSection sourceSection) {
@@ -180,7 +180,7 @@ public static void setLastMatch(RubyContext context, Object matchData) {

}

@RubiniusPrimitive(unsafeNeedsAudit = true, name = "regexp_set_block_last_match")
@RubiniusPrimitive(name = "regexp_set_block_last_match")
public static abstract class RegexpSetBlockLastMatchPrimitiveNode extends RubiniusPrimitiveArrayArgumentsNode {

public RegexpSetBlockLastMatchPrimitiveNode(RubyContext context, SourceSection sourceSection) {
Loading