Skip to content

Commit

Permalink
Merge branch 'jruby-1_7'
Browse files Browse the repository at this point in the history
* jruby-1_7:
  fix compilation error left-over from 7774be5
  some more var-args tests - make sure var-arg (overload) methods are covered
  move ALLOCATOR into a static field
  guess the ivar list size (most objects have only @ variables)
  private can be static
  handle Ruby super -> Java constructor with var-args correctly (fixes cases in #2375)
  mark generated proxy class constructor with @java.lang.SafeVarargs if super is var-args
  time to start sharing the generic (handles var-args) argument toJava conversion
  use (and cache) the more Java [array] version of the API to retrieve proxy constructors
  avoid deprecated JavaMethod.create + make sub-class helpers final
  do the toJava conversion on site instead of constant indirection esp. in loops

Conflicts:
	core/src/main/java/org/jruby/RubyModule.java
	core/src/main/java/org/jruby/java/invokers/ConstructorInvoker.java
	core/src/main/java/org/jruby/java/invokers/InstanceMethodInvoker.java
	core/src/main/java/org/jruby/java/invokers/SingletonMethodInvoker.java
	core/src/main/java/org/jruby/java/invokers/StaticMethodInvoker.java
	test/test_higher_javasupport.rb
  • Loading branch information
kares committed Apr 7, 2015
2 parents be01825 + aaf1681 commit 487938c
Show file tree
Hide file tree
Showing 19 changed files with 806 additions and 540 deletions.
18 changes: 10 additions & 8 deletions core/src/main/java/org/jruby/RubyBasicObject.java
Expand Up @@ -1497,11 +1497,12 @@ public IRubyObject removeInstanceVariable(String name) {
@Override
public List<Variable<IRubyObject>> getInstanceVariableList() {
Map<String, VariableAccessor> ivarAccessors = metaClass.getVariableAccessorsForRead();
ArrayList<Variable<IRubyObject>> list = new ArrayList<Variable<IRubyObject>>();
ArrayList<Variable<IRubyObject>> list = new ArrayList<Variable<IRubyObject>>(ivarAccessors.size());
for (Map.Entry<String, VariableAccessor> entry : ivarAccessors.entrySet()) {
Object value = entry.getValue().get(this);
if (value == null || !(value instanceof IRubyObject) || !IdUtil.isInstanceVariable(entry.getKey())) continue;
list.add(new VariableEntry<IRubyObject>(entry.getKey(), (IRubyObject)value));
final String key = entry.getKey();
final Object value = entry.getValue().get(this);
if (value == null || !(value instanceof IRubyObject) || !IdUtil.isInstanceVariable(key)) continue;
list.add(new VariableEntry<IRubyObject>(key, (IRubyObject) value));
}
return list;
}
Expand All @@ -1513,11 +1514,12 @@ public List<Variable<IRubyObject>> getInstanceVariableList() {
@Override
public List<String> getInstanceVariableNameList() {
Map<String, VariableAccessor> ivarAccessors = metaClass.getVariableAccessorsForRead();
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list = new ArrayList<String>(ivarAccessors.size());
for (Map.Entry<String, VariableAccessor> entry : ivarAccessors.entrySet()) {
Object value = entry.getValue().get(this);
if (value == null || !(value instanceof IRubyObject) || !IdUtil.isInstanceVariable(entry.getKey())) continue;
list.add(entry.getKey());
final String key = entry.getKey();
final Object value = entry.getValue().get(this);
if (value == null || !(value instanceof IRubyObject) || !IdUtil.isInstanceVariable(key)) continue;
list.add(key);
}
return list;
}
Expand Down

0 comments on commit 487938c

Please sign in to comment.