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

Commits on Mar 5, 2015

  1. Copy the full SHA
    2543086 View commit details
  2. Copy the full SHA
    50701dc View commit details
Showing with 27 additions and 40 deletions.
  1. +27 −38 truffle/src/main/java/org/jruby/truffle/nodes/core/EncodingNodes.java
  2. +0 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java
Original file line number Diff line number Diff line change
@@ -112,8 +112,6 @@ public Object isCompatible(RubyEncoding encoding) {
@CoreMethod(names = "compatible?", needsSelf = false, onSingleton = true, required = 2)
public abstract static class CompatibleQueryNode extends CoreMethodNode {

ConditionProfile compatibleEncodingProfile = ConditionProfile.createBinaryProfile();

public CompatibleQueryNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
}
@@ -122,117 +120,108 @@ public CompatibleQueryNode(CompatibleQueryNode prev) {
super(prev);
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubyString first, RubyString second) {
notDesignedForCompilation();

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first, second);
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first, second);

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubyEncoding first, RubyEncoding second) {
notDesignedForCompilation();

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getEncoding(), second.getEncoding());
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getEncoding(), second.getEncoding());

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubyString first, RubyRegexp second) {
notDesignedForCompilation();
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getByteList().getEncoding(), second.getRegex().getEncoding());

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getByteList().getEncoding(), second.getRegex().getEncoding());

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubyRegexp first, RubyString second) {
notDesignedForCompilation();

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getRegex().getEncoding(), second.getByteList().getEncoding());
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getRegex().getEncoding(), second.getByteList().getEncoding());

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubyRegexp first, RubyRegexp second) {
notDesignedForCompilation();

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getRegex().getEncoding(), second.getRegex().getEncoding());
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getRegex().getEncoding(), second.getRegex().getEncoding());

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubyRegexp first, RubySymbol second) {
notDesignedForCompilation();
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getRegex().getEncoding(), second.getByteList().getEncoding());

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getRegex().getEncoding(), second.getByteList().getEncoding());

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubySymbol first, RubyRegexp second) {
notDesignedForCompilation();
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getByteList().getEncoding(), second.getRegex().getEncoding());

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first.getByteList().getEncoding(), second.getRegex().getEncoding());

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubyString first, RubySymbol second) {
notDesignedForCompilation();

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first, second);
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first, second);

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
}
}

@TruffleBoundary
@Specialization
public Object isCompatible(RubySymbol first, RubySymbol second) {
notDesignedForCompilation();

Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first, second);
final Encoding compatibleEncoding = org.jruby.RubyEncoding.areCompatible(first, second);

if (compatibleEncodingProfile.profile(compatibleEncoding != null)) {
if (compatibleEncoding != null) {
return RubyEncoding.getEncoding(compatibleEncoding);
} else {
return getContext().getCoreLibrary().getNilObject();
Original file line number Diff line number Diff line change
@@ -1011,14 +1011,12 @@ public ForceEncodingNode(ForceEncodingNode prev) {

@Specialization
public RubyString forceEncoding(RubyString string, RubyString encodingName) {
notDesignedForCompilation();
final RubyEncoding encoding = RubyEncoding.getEncoding(encodingName.toString());
return forceEncoding(string, encoding);
}

@Specialization
public RubyString forceEncoding(RubyString string, RubyEncoding encoding) {
notDesignedForCompilation();
string.forceEncoding(encoding.getEncoding());
return string;
}