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: a9b4d28c8eeb
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: dc63be146d0f
Choose a head ref
  • 18 commits
  • 50 files changed
  • 3 contributors

Commits on Mar 21, 2018

  1. fix for #5086, RegexpError invalid pattern in look-behind for certain…

    … Regexps since 9.1.16.0
    lopex authored and headius committed Mar 21, 2018
    1
    Copy the full SHA
    a72224d View commit details

Commits on Mar 26, 2018

  1. Copy the full SHA
    936e2b3 View commit details
  2. Copy the full SHA
    4ef8992 View commit details
  3. Copy the full SHA
    5e6feb4 View commit details
  4. Copy the full SHA
    d2c30bd View commit details
  5. Copy the full SHA
    6cd4115 View commit details
  6. Copy the full SHA
    877c609 View commit details
  7. Copy the full SHA
    e15f74e View commit details
  8. Fix most deprecated calls.

    headius committed Mar 26, 2018
    Copy the full SHA
    bc950ea View commit details
  9. Copy the full SHA
    5e2fc23 View commit details

Commits on Mar 27, 2018

  1. Copy the full SHA
    4811ad2 View commit details
  2. Revert "Finally eliminate use of WrapperMethod."

    This reverts commit 5e2fc23.
    headius committed Mar 27, 2018
    Copy the full SHA
    c29f66a View commit details
  3. WrapperMethod is still needed for visibility.

    This commit sets in stone that we need WrapperMethod. I have
    renamed it to better reflect its behavior and added javadoc
    indicating why similar delegating wrappers are not suitable.
    headius committed Mar 27, 2018
    Copy the full SHA
    6bf2323 View commit details
  4. Copy the full SHA
    2a265b1 View commit details
  5. Copy the full SHA
    1718c4a View commit details
  6. Copy the full SHA
    682626e View commit details
  7. Merge branch 'jruby-9.1'

    * jruby-9.1:
      [fix] cast nsec nanos to long to avoid "overflow" with double value
      Handle this deprecation differently.
      Default to Java 9 bytecode for any java.specification.version>1.8.
      WrapperMethod is still needed for visibility.
      Revert "Finally eliminate use of WrapperMethod."
      Eliminate deprecation warnings in test suite.
      Finally eliminate use of WrapperMethod.
      Fix most deprecated calls.
      Handle error when attempting to connect to IP6 with default INET4.
      Add test_coverage to jruby.index.
      Add test for null filename in coverage. #5111
      Do not attempt to add coverage for null filename. Fixes #5111.
      Add basic specs for Exception#backtrace_locations.
      Exception.backtrace_locations should persist and be mutable.
      Return nil if no backtrace has been captured. Fixes #5099.
      fix for #5086, RegexpError invalid pattern in look-behind for certain Regexps since 9.1.16.0
    kares committed Mar 27, 2018
    Copy the full SHA
    ad6d793 View commit details
  8. Merge branch 'master' of github.com:jruby/jruby

    * 'master' of github.com:jruby/jruby:
      Add tags for failing specs
      Update to ruby/spec@a585ec3
      Update to ruby/mspec@8b54bf3
    kares committed Mar 27, 2018
    Copy the full SHA
    dc63be1 View commit details
Showing with 427 additions and 139 deletions.
  1. +1 −1 core/src/main/java/org/jruby/Ruby.java
  2. +2 −3 core/src/main/java/org/jruby/RubyInteger.java
  3. +2 −2 core/src/main/java/org/jruby/RubyMethod.java
  4. +2 −3 core/src/main/java/org/jruby/RubyModule.java
  5. +10 −16 core/src/main/java/org/jruby/RubyTime.java
  6. +6 −6 core/src/main/java/org/jruby/TopSelfFactory.java
  7. +6 −1 core/src/main/java/org/jruby/anno/IndyBinder.java
  8. +6 −0 core/src/main/java/org/jruby/ext/coverage/CoverageData.java
  9. +9 −0 core/src/main/java/org/jruby/ext/socket/RubyUDPSocket.java
  10. +1 −1 core/src/main/java/org/jruby/internal/runtime/methods/DynamicMethod.java
  11. +1 −0 core/src/main/java/org/jruby/internal/runtime/methods/InvocationMethodFactory.java
  12. +13 −6 .../main/java/org/jruby/internal/runtime/methods/{WrapperMethod.java → PartialDelegatingMethod.java}
  13. +6 −1 core/src/main/java/org/jruby/ir/targets/ArrayDerefInvokeSite.java
  14. +6 −1 core/src/main/java/org/jruby/ir/targets/BignumObjectSite.java
  15. +72 −12 core/src/main/java/org/jruby/ir/targets/Bootstrap.java
  16. +6 −1 core/src/main/java/org/jruby/ir/targets/ConstantLookupSite.java
  17. +6 −1 core/src/main/java/org/jruby/ir/targets/DRegexpObjectSite.java
  18. +5 −1 core/src/main/java/org/jruby/ir/targets/FixnumObjectSite.java
  19. +6 −1 core/src/main/java/org/jruby/ir/targets/FloatObjectSite.java
  20. +6 −1 core/src/main/java/org/jruby/ir/targets/IRBytecodeAdapter7.java
  21. +30 −5 core/src/main/java/org/jruby/ir/targets/JVMVisitor.java
  22. +6 −1 core/src/main/java/org/jruby/ir/targets/NormalInvokeSite.java
  23. +6 −1 core/src/main/java/org/jruby/ir/targets/RegexpObjectSite.java
  24. +6 −1 core/src/main/java/org/jruby/ir/targets/SelfInvokeSite.java
  25. +6 −1 core/src/main/java/org/jruby/ir/targets/SuperInvokeSite.java
  26. +6 −2 core/src/main/java/org/jruby/ir/targets/SymbolObjectSite.java
  27. +6 −1 core/src/main/java/org/jruby/ir/targets/YieldSite.java
  28. +3 −3 core/src/main/java/org/jruby/java/invokers/FieldMethodOne.java
  29. +3 −3 core/src/main/java/org/jruby/java/invokers/FieldMethodZero.java
  30. +1 −1 core/src/main/java/org/jruby/java/proxies/ArrayJavaProxy.java
  31. +7 −7 core/src/main/java/org/jruby/java/proxies/JavaInterfaceTemplate.java
  32. +3 −3 core/src/main/java/org/jruby/javasupport/Java.java
  33. +1 −1 core/src/main/java/org/jruby/javasupport/binding/Initializer.java
  34. +3 −3 core/src/main/java/org/jruby/javasupport/ext/JavaIo.java
  35. +2 −2 core/src/main/java/org/jruby/javasupport/ext/JavaLang.java
  36. +1 −1 core/src/main/java/org/jruby/javasupport/ext/JavaNet.java
  37. +7 −9 core/src/main/java/org/jruby/javasupport/ext/Kernel.java
  38. +0 −1 core/src/test/java/org/jruby/embed/ScriptingContainerTest.java
  39. +28 −30 core/src/test/java/org/jruby/java/dispatch/CallableSelectorTest.java
  40. +23 −0 core/src/test/java/org/jruby/test/TestMethodFactories.java
  41. +2 −1 core/src/test/java/org/jruby/test/TestRuby.java
  42. +2 −2 core/src/test/java/org/jruby/test/TestRubyBigDecimal.java
  43. +1 −1 core/src/test/java/org/jruby/util/JRubyThreadContextTest.java
  44. +1 −0 core/src/test/java/org/jruby/util/log/LoggerFactoryTest.java
  45. +39 −0 spec/ruby/core/exception/backtrace_locations_spec.rb
  46. +9 −1 spec/ruby/core/exception/fixtures/common.rb
  47. +1 −0 test/jruby.index
  48. +11 −0 test/jruby/test_coverage.rb
  49. +41 −0 test/jruby/test_time.rb
  50. BIN test/jruby/testapp/testapp
2 changes: 1 addition & 1 deletion core/src/main/java/org/jruby/Ruby.java
Original file line number Diff line number Diff line change
@@ -5259,7 +5259,7 @@ private void setNetworkStack() {
deprecatedNetworkStackProperty();
}

@SuppressWarnings("deprecated")
@SuppressWarnings("deprecation")
private void deprecatedNetworkStackProperty() {
if (Options.PREFER_IPV4.load()) {
LOG.warn("Warning: not setting network stack system property because socket subsystem may already be booted."
5 changes: 2 additions & 3 deletions core/src/main/java/org/jruby/RubyInteger.java
Original file line number Diff line number Diff line change
@@ -321,17 +321,16 @@ public IRubyObject succ(ThreadContext context) {
}

static final ByteList[] SINGLE_CHAR_BYTELISTS;
@Deprecated
public static final ByteList[] SINGLE_CHAR_BYTELISTS19;
static {
SINGLE_CHAR_BYTELISTS = new ByteList[256];
for (int i = 0; i < 256; i++) {
ByteList bytes = new ByteList(new byte[] { (byte) i }, false);
SINGLE_CHAR_BYTELISTS[i] = bytes;
bytes.setEncoding(i < 0x80 ? USASCIIEncoding.INSTANCE : ASCIIEncoding.INSTANCE);
}
SINGLE_CHAR_BYTELISTS19 = SINGLE_CHAR_BYTELISTS;
}
@Deprecated
public static final ByteList[] SINGLE_CHAR_BYTELISTS19 = SINGLE_CHAR_BYTELISTS;

static ByteList singleCharByteList(final byte index) {
return SINGLE_CHAR_BYTELISTS[index & 0xFF];
4 changes: 2 additions & 2 deletions core/src/main/java/org/jruby/RubyMethod.java
Original file line number Diff line number Diff line change
@@ -35,10 +35,10 @@
import org.jruby.anno.JRubyMethod;
import org.jruby.anno.JRubyClass;
import org.jruby.internal.runtime.methods.AliasMethod;
import org.jruby.internal.runtime.methods.DelegatingDynamicMethod;
import org.jruby.internal.runtime.methods.DynamicMethod;
import org.jruby.internal.runtime.methods.IRMethodArgs;
import org.jruby.internal.runtime.methods.ProcMethod;
import org.jruby.internal.runtime.methods.WrapperMethod;
import org.jruby.runtime.ArgumentDescriptor;
import org.jruby.runtime.Block;
import org.jruby.runtime.ClassIndex;
@@ -253,7 +253,7 @@ public IRubyObject inspect() {
RubyModule definedClass;
RubyModule mklass = originModule;

if (method instanceof AliasMethod || method instanceof WrapperMethod) {
if (method instanceof AliasMethod || method instanceof DelegatingDynamicMethod) {
definedClass = method.getRealMethod().getDefinedClass();
}
else {
5 changes: 2 additions & 3 deletions core/src/main/java/org/jruby/RubyModule.java
Original file line number Diff line number Diff line change
@@ -77,10 +77,10 @@
import org.jruby.internal.runtime.methods.DynamicMethod;
import org.jruby.internal.runtime.methods.JavaMethod;
import org.jruby.internal.runtime.methods.NativeCallMethod;
import org.jruby.internal.runtime.methods.PartialDelegatingMethod;
import org.jruby.internal.runtime.methods.ProcMethod;
import org.jruby.internal.runtime.methods.SynchronizedDynamicMethod;
import org.jruby.internal.runtime.methods.UndefinedMethod;
import org.jruby.internal.runtime.methods.WrapperMethod;
import org.jruby.ir.IRClosure;
import org.jruby.ir.IRMethod;
import org.jruby.ir.runtime.IRRuntimeHelpers;
@@ -105,7 +105,6 @@
import org.jruby.runtime.ivars.MethodData;
import org.jruby.runtime.marshal.MarshalStream;
import org.jruby.runtime.marshal.UnmarshalStream;
import org.jruby.runtime.opto.ConstantInvalidator;
import org.jruby.runtime.opto.Invalidator;
import org.jruby.runtime.opto.OptoFactory;
import org.jruby.runtime.profile.MethodEnhancer;
@@ -1851,7 +1850,7 @@ public void exportMethod(String name, Visibility visibility) {
if (this == method.getImplementationClass()) {
method.setVisibility(visibility);
} else {
DynamicMethod newMethod = new WrapperMethod(this, method, visibility);
DynamicMethod newMethod = new PartialDelegatingMethod(this, method, visibility);

methodLocation.addMethod(name, newMethod);
}
26 changes: 10 additions & 16 deletions core/src/main/java/org/jruby/RubyTime.java
Original file line number Diff line number Diff line change
@@ -1555,20 +1555,15 @@ private static RubyTime createTime(ThreadContext context, RubyClass klass, IRuby
RubyTime time = new RubyTime(runtime, klass, dt);
// Ignores usec if 8 args (for compatibility with parse-date) or if not supplied.
if (args.length != 8 && args[6] != context.nil) {
boolean fractionalUSecGiven = args[6] instanceof RubyFloat || args[6] instanceof RubyRational;

if (fractionalUSecGiven) {
if (args[6] instanceof RubyRational) {
RubyRational usecRat = (RubyRational) args[6];
RubyRational nsecRat = (RubyRational) usecRat.op_mul(context, runtime.newFixnum(1000));
double tmpNanos = nsecRat.getDoubleValue(context);
time.dt = dt.withMillis((long) (dt.getMillis() + (tmpNanos / 1000000)));
nanos = (long) tmpNanos % 1000000;
} else {
double micros = RubyNumeric.num2dbl(args[6]);
time.dt = dt.withMillis(dt.getMillis() + (long) (micros / 1000));
nanos = (long) Math.rint((micros * 1000) % 1000000);
}
if (args[6] instanceof RubyRational) {
RubyRational nsec = (RubyRational) ((RubyRational) args[6]).op_mul(context, runtime.newFixnum(1000));
long tmpNanos = (long) nsec.getDoubleValue(context);
time.dt = dt.withMillis(dt.getMillis() + (tmpNanos / 1_000_000));
nanos = tmpNanos % 1_000_000;
} else if (args[6] instanceof RubyFloat) {
double micros = ((RubyFloat) args[6]).getDoubleValue();
time.dt = dt.withMillis(dt.getMillis() + (long) (micros / 1000));
nanos = (long) Math.rint((micros * 1000) % 1_000_000);
} else {
int usec = i_args4 % 1000;
int msec = i_args4 / 1000;
@@ -1582,8 +1577,7 @@ private static RubyTime createTime(ThreadContext context, RubyClass klass, IRuby
}
}

if (nanos != 0)
time.setNSec(nanos);
if (nanos != 0) time.setNSec(nanos);

time.callInit(IRubyObject.NULL_ARRAY, Block.NULL_BLOCK);
time.setIsTzRelative(setTzRelative);
12 changes: 6 additions & 6 deletions core/src/main/java/org/jruby/TopSelfFactory.java
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ public static IRubyObject createTopSelf(final Ruby runtime, final boolean wrappe

final RubyClass singletonClass = topSelf.getSingletonClass();

singletonClass.addMethod("to_s", new JavaMethod.JavaMethodZero(singletonClass, Visibility.PUBLIC) {
singletonClass.addMethod("to_s", new JavaMethod.JavaMethodZero(singletonClass, Visibility.PUBLIC, "to_s") {
@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) {
return runtime.newString("main");
@@ -70,29 +70,29 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz

// The following three methods must be defined fast, since they expect to modify the current frame
// (i.e. they expect no frame will be allocated for them). JRUBY-1185.
singletonClass.addMethod("include", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE) {
singletonClass.addMethod("include", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE, "include") {
@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
return context.runtime.getObject().include(args);
}
});

singletonClass.addMethod("public", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE) {
singletonClass.addMethod("public", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE, "public") {
@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
return context.runtime.getObject().rbPublic(context, args);
}
});

singletonClass.addMethod("private", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE) {
singletonClass.addMethod("private", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE, "private") {
@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
return context.runtime.getObject().rbPrivate(context, args);
}
});

final RubyClass klass = wrapper ? singletonClass : runtime.getObject();
singletonClass.addMethod("define_method", new JavaMethod.JavaMethodOneOrTwoBlock(singletonClass, Visibility.PRIVATE) {
singletonClass.addMethod("define_method", new JavaMethod.JavaMethodOneOrTwoBlock(singletonClass, Visibility.PRIVATE, "define_method") {
@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, Block block) {
if (klass == singletonClass) warnWrapper(context);
@@ -106,7 +106,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
}
});

singletonClass.addMethod("using", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE) {
singletonClass.addMethod("using", new JavaMethod.JavaMethodN(singletonClass, Visibility.PRIVATE, "using") {
@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
Arity.checkArgumentCount(context.runtime, args, 1, 1);
7 changes: 6 additions & 1 deletion core/src/main/java/org/jruby/anno/IndyBinder.java
Original file line number Diff line number Diff line change
@@ -357,7 +357,12 @@ public void processMethodDeclarationMulti(List<ExecutableElement> methods) {
}
buffer.append(')');

Handle handle = new Handle(isStatic ? H_INVOKESTATIC : H_INVOKEVIRTUAL, qualifiedName.toString().replace('.', '/'), method.getSimpleName().toString(), Method.getMethod(buffer.toString()).getDescriptor());
Handle handle = new Handle(
isStatic ? H_INVOKESTATIC : H_INVOKEVIRTUAL,
qualifiedName.toString().replace('.', '/'),
method.getSimpleName().toString(),
Method.getMethod(buffer.toString()).getDescriptor(),
false);

int handleOffset = calculateHandleOffset(method.getParameters().size(), anno.required(), anno.optional(), anno.rest(), isStatic, hasContext, hasBlock);

6 changes: 6 additions & 0 deletions core/src/main/java/org/jruby/ext/coverage/CoverageData.java
Original file line number Diff line number Diff line change
@@ -93,6 +93,12 @@ private boolean hasCodeBeenPartiallyCovered(int[] lines) {
public synchronized Map<String, int[]> prepareCoverage(String filename, int[] lines) {
assert lines != null;

if (filename == null) {
// null filename from certain evals, Ruby.executeScript, etc (jruby/jruby#5111)
// we opt to ignore scripts with no filename, since coverage means nothing
return coverage;
}

Map<String, int[]> coverage = this.coverage;

if (coverage != null) {
9 changes: 9 additions & 0 deletions core/src/main/java/org/jruby/ext/socket/RubyUDPSocket.java
Original file line number Diff line number Diff line change
@@ -41,6 +41,7 @@
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.MulticastSocket;
import java.net.SocketOption;
import java.net.StandardProtocolFamily;
import java.net.UnknownHostException;
import java.net.DatagramPacket;
@@ -49,6 +50,7 @@
import java.nio.channels.Channel;
import java.nio.channels.DatagramChannel;
import java.nio.channels.NotYetConnectedException;
import java.nio.channels.UnsupportedAddressTypeException;

import jnr.constants.platform.AddressFamily;
import jnr.netdb.Service;
@@ -124,6 +126,7 @@ public IRubyObject initialize(ThreadContext context, ProtocolFamily family) {
Ruby runtime = context.runtime;

try {
this.family = family;
DatagramChannel channel = DatagramChannel.open(family);
initSocket(newChannelFD(runtime, channel));
} catch (ConnectException e) {
@@ -189,6 +192,11 @@ else if (host instanceof RubyFixnum) {

return RubyFixnum.zero(runtime);
}
catch (UnsupportedAddressTypeException e) {
// This may not be the appropriate message for all such exceptions
ProtocolFamily family = this.family == null ? StandardProtocolFamily.INET : this.family;
throw SocketUtils.sockerr(runtime, "bind: unsupported address " + host.inspect() + " for protocol family " + family);
}
catch (UnknownHostException e) {
throw SocketUtils.sockerr(runtime, "bind: name or service not known");
}
@@ -634,6 +642,7 @@ private static IRubyObject doReceiveMulticast(RubyBasicSocket socket, final Ruby
}

private volatile Class<? extends InetAddress> explicitFamily;
private volatile ProtocolFamily family;

@Deprecated
public IRubyObject bind(IRubyObject host, IRubyObject port) {
Original file line number Diff line number Diff line change
@@ -395,7 +395,7 @@ public Arity getArity() {
/**
* Get the "real" method contained within this method. This simply returns
* self except in cases where a method is wrapped to give it a new
* name or new implementation class (AliasMethod, WrapperMethod, ...).
* name or new implementation class (AliasMethod, PartialDelegatingMethod, ...).
*
* @return The "real" method associated with this one
*/
Original file line number Diff line number Diff line change
@@ -343,6 +343,7 @@ public DynamicMethod getAnnotatedMethod(RubyModule implementationClass, JavaMeth
}
}

@SuppressWarnings("deprecation")
public JavaMethod constructJavaMethod(RubyModule implementationClass, JavaMethodDescriptor desc, String name, Class c) throws InstantiationException, IllegalAccessException, java.lang.reflect.InvocationTargetException, NoSuchMethodException {
// In order to support older versions of generated JavaMethod invokers, we check for the Version
// annotation to be present and > 0. If absent, we use a thread local to allow the deprecated constructor
Original file line number Diff line number Diff line change
@@ -37,18 +37,25 @@
import org.jruby.runtime.builtin.IRubyObject;

/**
*
* This is similar to {@link DelegatingDynamicMethod} except that it does not delegate most properties of DynamicMethod.
* Visibility, etc, set on an instance of {@link PartialDelegatingMethod} will not be delegated to the contained method.
*
* This type of method is used primarily for altering the visibility of a parent class's method in a child class.
*
* Note that {@link AliasMethod} is not a suitable substitute since it always passes the method's original name to the
* delegate, and {@link DelegatingDynamicMethod} is not a suitable substitute since it delegates all properties to the
* delegate.
*
* @author jpetersen
*/
@Deprecated
public class WrapperMethod extends DynamicMethod {
public class PartialDelegatingMethod extends DynamicMethod {
private DynamicMethod method;

/**
* Constructor for WrapperCallable.
* Constructor for PartialDelegatingMethod.
* @param visibility
*/
public WrapperMethod(RubyModule implementationClass, DynamicMethod method, Visibility visibility) {
public PartialDelegatingMethod(RubyModule implementationClass, DynamicMethod method, Visibility visibility) {
super(implementationClass, visibility, method.getName() );
this.method = method;
}
@@ -94,7 +101,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klaz
}

public DynamicMethod dup() {
return new WrapperMethod(getImplementationClass(), method, getVisibility());
return new PartialDelegatingMethod(getImplementationClass(), method, getVisibility());
}

public long getSerialNumber() {
Original file line number Diff line number Diff line change
@@ -34,7 +34,12 @@ public ArrayDerefInvokeSite(MethodType type, String file, int line) {
super(type, "[]", false, file, line);
}

public static final Handle BOOTSTRAP = new Handle(Opcodes.H_INVOKESTATIC, p(ArrayDerefInvokeSite.class), "bootstrap", sig(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class, int.class));
public static final Handle BOOTSTRAP = new Handle(
Opcodes.H_INVOKESTATIC,
p(ArrayDerefInvokeSite.class),
"bootstrap",
sig(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class, int.class),
false);

public static CallSite bootstrap(MethodHandles.Lookup lookup, String name, MethodType type, String file, int line) {
InvokeSite site = new ArrayDerefInvokeSite(type, file, line);
Original file line number Diff line number Diff line change
@@ -25,7 +25,12 @@ public BignumObjectSite(MethodType type, String value) {
this.value = value;
}

public static final Handle BOOTSTRAP = new Handle(Opcodes.H_INVOKESTATIC, p(BignumObjectSite.class), "bootstrap", sig(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class));
public static final Handle BOOTSTRAP = new Handle(
Opcodes.H_INVOKESTATIC,
p(BignumObjectSite.class),
"bootstrap",
sig(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class),
false);

public static CallSite bootstrap(MethodHandles.Lookup lookup, String name, MethodType type, String value) {
return new BignumObjectSite(type, value).bootstrap(lookup);
Loading