Skip to content

Commit

Permalink
Showing 2 changed files with 42 additions and 50 deletions.
Original file line number Diff line number Diff line change
@@ -18,41 +18,34 @@
import com.oracle.truffle.api.object.DynamicObject;
import com.oracle.truffle.api.profiles.ConditionProfile;

public class SnippetIfNoBlockNode extends RubyNode
{

@Child
private RubyNode method;
@Child
private SnippetNode snippetNode;
private final ConditionProfile noBlockProfile = ConditionProfile.createBinaryProfile();
private final String snippet;

public SnippetIfNoBlockNode(String snippet, RubyNode method)
{
super(method.getContext(), method.getEncapsulatingSourceSection());
this.method = method;
this.snippet = snippet;
}

@Override
public Object execute(VirtualFrame frame)
{
final DynamicObject block = RubyArguments.getBlock(frame);

if (noBlockProfile.profile(block == null))
{
if (snippetNode == null)
{
CompilerDirectives.transferToInterpreterAndInvalidate();
snippetNode = insert(new SnippetNode());
}
return snippetNode.execute(frame, this.snippet);
}
else
{
return method.execute(frame);
}
}
public class SnippetIfNoBlockNode extends RubyNode {

@Child
private RubyNode method;
@Child
private SnippetNode snippetNode;
private final ConditionProfile noBlockProfile = ConditionProfile.createBinaryProfile();
private final String snippet;

public SnippetIfNoBlockNode(String snippet, RubyNode method) {
super(method.getContext(), method.getEncapsulatingSourceSection());
this.method = method;
this.snippet = snippet;
}

@Override
public Object execute(VirtualFrame frame) {
final DynamicObject block = RubyArguments.getBlock(frame);

if (noBlockProfile.profile(block == null)) {
if (snippetNode == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
snippetNode = insert(new SnippetNode());
}
return snippetNode.execute(frame, this.snippet);
} else {
return method.execute(frame);
}
}

}
Original file line number Diff line number Diff line change
@@ -36,22 +36,21 @@
*/
package org.jruby.truffle.core.rubinius;

public abstract class RubiniusSnippets
{
public static final String ARRAY_DELETE_IF_TO_ENUM = "to_enum(:delete_if) { size }";
public static final String ARRAY_EACH_TO_ENUM = "to_enum(:each) { size }";
public static final String ARRAY_EACH_WITH_INDEX_TO_ENUM = "to_enum(:each_with_index) { size }";
public static final String ARRAY_MAP_TO_ENUM = "to_enum(:map) { size }";
public static final String ARRAY_MAP_BANG_TO_ENUM = "to_enum(:map!) { size }";
public static final String ARRAY_REJECT_TO_ENUM = "to_enum(:reject) { size }";
public static final String ARRAY_REJECT_BANG_TO_ENUM = "to_enum(:reject!) { size }";
public static final String ARRAY_SELECT_TO_ENUM = "to_enum(:select) { size }";
public abstract class RubiniusSnippets {
public static final String ARRAY_DELETE_IF_TO_ENUM = "to_enum(:delete_if) { size }";
public static final String ARRAY_EACH_TO_ENUM = "to_enum(:each) { size }";
public static final String ARRAY_EACH_WITH_INDEX_TO_ENUM = "to_enum(:each_with_index) { size }";
public static final String ARRAY_MAP_TO_ENUM = "to_enum(:map) { size }";
public static final String ARRAY_MAP_BANG_TO_ENUM = "to_enum(:map!) { size }";
public static final String ARRAY_REJECT_TO_ENUM = "to_enum(:reject) { size }";
public static final String ARRAY_REJECT_BANG_TO_ENUM = "to_enum(:reject!) { size }";
public static final String ARRAY_SELECT_TO_ENUM = "to_enum(:select) { size }";

public static final String HASH_EACH_TO_ENUM = "to_enum(:each) { size }";
public static final String HASH_EACH_TO_ENUM = "to_enum(:each) { size }";

public static final String RANGE_EACH_TO_ENUM = "to_enum { size }";
public static final String RANGE_EACH_TO_ENUM = "to_enum { size }";

public static final String STRING_EACH_BYTE_TO_ENUM = "to_enum(:each_byte) { bytesize }";
public static final String STRING_EACH_CHAR_TO_ENUM = "to_enum(:each_char) { size }";
public static final String STRING_EACH_BYTE_TO_ENUM = "to_enum(:each_byte) { bytesize }";
public static final String STRING_EACH_CHAR_TO_ENUM = "to_enum(:each_char) { size }";

}

0 comments on commit ea904ae

Please sign in to comment.