Skip to content

Commit

Permalink
Merge branch 'master' into truffle-head
Browse files Browse the repository at this point in the history
Conflicts:
	truffle/src/main/java/org/jruby/truffle/nodes/core/PrimitiveNodes.java
	truffle/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java
	truffle/src/main/java/org/jruby/truffle/nodes/core/SymbolNodes.java
	truffle/src/main/java/org/jruby/truffle/nodes/core/TrufflePrimitiveNodes.java
	truffle/src/main/java/org/jruby/truffle/runtime/RubyContext.java
	truffle/src/main/java/org/jruby/truffle/runtime/core/RubyHash.java
	truffle/src/main/java/org/jruby/truffle/runtime/core/RubyString.java
  • Loading branch information
chrisseaton committed Feb 28, 2015
2 parents 658e1b3 + c7e83bd commit 9700ff3
Show file tree
Hide file tree
Showing 122 changed files with 4,742 additions and 3,733 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -59,6 +59,7 @@ lib/ruby/stdlib/test*
lib/ruby/stdlib/hoe*
lib/ruby/stdlib/minitest*
lib/ruby/stdlib/power_assert*
lib/ruby/stdlib/psych*
release.properties
share
spaces test
Expand Down
15 changes: 5 additions & 10 deletions BUILDING.md
Expand Up @@ -3,7 +3,8 @@ Building JRuby from Source

Prerequisites:

* A Java 7-compatible (or higher) Java development kit (JDK)
* A Java 7-compatible (or higher) Java development kit (JDK).
MAKE SURE JAVA_HOME IS SET ON OS X!
* Maven 3+
* Apache Ant 1.8+ (see https://github.com/jruby/jruby/issues/2236)
* make and a C++ compiler for installing the jruby-launcher gem
Expand All @@ -22,19 +23,13 @@ command to execute is:
mvn
```

Or if you prefer to be more explicit, the default "install" goal can
be specified:

```
mvn install
```

This will do all of the following:
This will run the default "install" goal (```mvn install```) and will do all of the following:

* Compile JRuby
* Compile JRuby-Truffle
* Build `lib/jruby.jar`, needed for running at command line
* It will install the default gems specifications `lib/ruby/gems/shared/specifications/default/` and the ruby files of those gems in `lib/ruby/stdlib/`.
* It will install the default gems specifications `lib/ruby/gems/shared/specifications/default/` and the ruby files of
those gems in `lib/ruby/stdlib/`.

The environment is now suitable for running Ruby applications.

Expand Down
43 changes: 25 additions & 18 deletions core/src/main/java/org/jruby/java/invokers/ConstructorInvoker.java
Expand Up @@ -14,43 +14,50 @@
import org.jruby.runtime.builtin.IRubyObject;

public class ConstructorInvoker extends RubyToJavaInvoker {

public ConstructorInvoker(RubyModule host, List<Constructor> ctors) {
super(host, ctors.toArray(new Constructor[ctors.size()]));

trySetAccessible(getAccessibleObjects());
}

@Override
protected JavaCallable createCallable(Ruby ruby, Member member) {
return JavaConstructor.create(ruby, (Constructor)member);
}

@Override
protected JavaCallable[] createCallableArray(JavaCallable callable) {
return new JavaConstructor[] {(JavaConstructor)callable};
}

@Override
protected JavaCallable[] createCallableArray(int size) {
return new JavaConstructor[size];
}

@Override
protected JavaCallable[][] createCallableArrayArray(int size) {
return new JavaConstructor[size][];
}

@Override
protected Class[] getMemberParameterTypes(Member member) {
return ((Constructor)member).getParameterTypes();
return ((Constructor) member).getParameterTypes();
}

@Override
protected boolean isMemberVarArgs(Member member) {
return ((Constructor)member).isVarArgs();
return ((Constructor) member).isVarArgs();
}

@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
JavaProxy proxy = castJavaProxy(self);

int len = args.length;
Object[] convertedArgs = new Object[len];
JavaConstructor constructor = (JavaConstructor)findCallable(self, name, args, len);
final Object[] convertedArgs;
JavaConstructor constructor = (JavaConstructor) findCallable(self, name, args, len);
if (constructor.isVarArgs()) {
len = constructor.getParameterTypes().length - 1;
convertedArgs = new Object[len + 1];
Expand All @@ -64,7 +71,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
convertedArgs[i] = convertArg(args[i], constructor, i);
}
}

proxy.setObject(constructor.newInstanceDirect(context, convertedArgs));

return self;
Expand All @@ -74,7 +81,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) {
if (javaVarargsCallables != null) return call(context, self, clazz, name, IRubyObject.NULL_ARRAY);
JavaProxy proxy = castJavaProxy(self);
JavaConstructor constructor = (JavaConstructor)findCallableArityZero(self, name);
JavaConstructor constructor = (JavaConstructor) findCallableArityZero(self, name);

proxy.setObject(constructor.newInstanceDirect(context));

Expand All @@ -85,7 +92,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0) {
if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0});
JavaProxy proxy = castJavaProxy(self);
JavaConstructor constructor = (JavaConstructor)findCallableArityOne(self, name, arg0);
JavaConstructor constructor = (JavaConstructor) findCallableArityOne(self, name, arg0);
Object cArg0 = convertArg(arg0, constructor, 0);

proxy.setObject(constructor.newInstanceDirect(context, cArg0));
Expand All @@ -97,7 +104,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1) {
if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0, arg1});
JavaProxy proxy = castJavaProxy(self);
JavaConstructor constructor = (JavaConstructor)findCallableArityTwo(self, name, arg0, arg1);
JavaConstructor constructor = (JavaConstructor) findCallableArityTwo(self, name, arg0, arg1);
Object cArg0 = convertArg(arg0, constructor, 0);
Object cArg1 = convertArg(arg1, constructor, 1);

Expand All @@ -110,7 +117,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) {
if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0, arg1, arg2});
JavaProxy proxy = castJavaProxy(self);
JavaConstructor constructor = (JavaConstructor)findCallableArityThree(self, name, arg0, arg1, arg2);
JavaConstructor constructor = (JavaConstructor) findCallableArityThree(self, name, arg0, arg1, arg2);
Object cArg0 = convertArg(arg0, constructor, 0);
Object cArg1 = convertArg(arg1, constructor, 1);
Object cArg2 = convertArg(arg2, constructor, 2);
Expand All @@ -120,18 +127,18 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
return self;
}

@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) {
if (block.isGiven()) {
Ruby runtime = context.runtime;
JavaProxy proxy = castJavaProxy(self);

int len = args.length;
// too much array creation!
Object[] convertedArgs = new Object[len + 1];
IRubyObject[] intermediate = new IRubyObject[len + 1];
System.arraycopy(args, 0, intermediate, 0, len);
intermediate[len] = RubyProc.newProc(runtime, block, block.type);
JavaConstructor constructor = (JavaConstructor)findCallable(self, name, intermediate, len + 1);
intermediate[len] = RubyProc.newProc(context.runtime, block, block.type);
JavaConstructor constructor = (JavaConstructor) findCallable(self, name, intermediate, len + 1);
for (int i = 0; i < len + 1; i++) {
convertedArgs[i] = convertArg(intermediate[i], constructor, i);
}
Expand All @@ -150,7 +157,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
JavaProxy proxy = castJavaProxy(self);

RubyProc proc = RubyProc.newProc(context.runtime, block, block.type);
JavaConstructor constructor = (JavaConstructor)findCallableArityOne(self, name, proc);
JavaConstructor constructor = (JavaConstructor) findCallableArityOne(self, name, proc);
Object cArg0 = convertArg(proc, constructor, 0);

proxy.setObject(constructor.newInstanceDirect(context, cArg0));
Expand All @@ -167,7 +174,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
JavaProxy proxy = castJavaProxy(self);

RubyProc proc = RubyProc.newProc(context.runtime, block, block.type);
JavaConstructor constructor = (JavaConstructor)findCallableArityTwo(self, name, arg0, proc);
JavaConstructor constructor = (JavaConstructor) findCallableArityTwo(self, name, arg0, proc);
Object cArg0 = convertArg(arg0, constructor, 0);
Object cArg1 = convertArg(proc, constructor, 1);

Expand All @@ -185,7 +192,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
JavaProxy proxy = castJavaProxy(self);

RubyProc proc = RubyProc.newProc(context.runtime, block, block.type);
JavaConstructor constructor = (JavaConstructor)findCallableArityThree(self, name, arg0, arg1, proc);
JavaConstructor constructor = (JavaConstructor) findCallableArityThree(self, name, arg0, arg1, proc);
Object cArg0 = convertArg(arg0, constructor, 0);
Object cArg1 = convertArg(arg1, constructor, 1);
Object cArg2 = convertArg(proc, constructor, 2);
Expand All @@ -204,7 +211,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
JavaProxy proxy = castJavaProxy(self);

RubyProc proc = RubyProc.newProc(context.runtime, block, block.type);
JavaConstructor constructor = (JavaConstructor)findCallableArityFour(self, name, arg0, arg1, arg2, proc);
JavaConstructor constructor = (JavaConstructor) findCallableArityFour(self, name, arg0, arg1, arg2, proc);
Object cArg0 = convertArg(arg0, constructor, 0);
Object cArg1 = convertArg(arg1, constructor, 1);
Object cArg2 = convertArg(arg2, constructor, 2);
Expand Down
Expand Up @@ -7,7 +7,8 @@
import org.jruby.runtime.Visibility;

public abstract class FieldMethodOne extends JavaMethodOne {
Field field;

final Field field;

FieldMethodOne(String name, RubyModule host, Field field) {
super(host, Visibility.PUBLIC);
Expand Down
Expand Up @@ -8,7 +8,8 @@
import org.jruby.runtime.builtin.IRubyObject;

public abstract class FieldMethodZero extends JavaMethodZero {
Field field;

final Field field;

FieldMethodZero(String name, RubyModule host, Field field) {
super(host, Visibility.PUBLIC);
Expand Down
11 changes: 9 additions & 2 deletions core/src/main/java/org/jruby/java/invokers/MethodInvoker.java
Expand Up @@ -19,27 +19,34 @@ public abstract class MethodInvoker extends RubyToJavaInvoker {
trySetAccessible(getAccessibleObjects());
}

@Override
protected JavaCallable createCallable(Ruby ruby, Member member) {
return JavaMethod.create(ruby, (Method)member);
}

@Override
protected JavaCallable[] createCallableArray(JavaCallable callable) {
return new JavaMethod[] {(JavaMethod)callable};
}

@Override
protected JavaCallable[] createCallableArray(int size) {
return new JavaMethod[size];
}

@Override
protected JavaCallable[][] createCallableArrayArray(int size) {
return new JavaMethod[size][];
}

@Override
protected Class[] getMemberParameterTypes(Member member) {
return ((Method)member).getParameterTypes();
return ((Method) member).getParameterTypes();
}

@Override
protected boolean isMemberVarArgs(Member member) {
return ((Method)member).isVarArgs();
return ((Method) member).isVarArgs();
}

}

0 comments on commit 9700ff3

Please sign in to comment.