corda/sgx-jvm/avian/classpath/avian/ConstantPool.java

280 lines
8.1 KiB
Java
Raw Normal View History

2015-03-13 18:52:59 +00:00
/* Copyright (c) 2008-2015, Avian Contributors
Permission to use, copy, modify, and/or distribute this software
for any purpose with or without fee is hereby granted, provided
that the above copyright notice and this permission notice appear
in all copies.
There is NO WARRANTY for this software. See license.txt for
details. */
package avian;
import static avian.Stream.write1;
import static avian.Stream.write2;
import static avian.Stream.write4;
import java.util.List;
import java.io.OutputStream;
import java.io.IOException;
public class ConstantPool {
private static final int CONSTANT_Integer = 3;
private static final int CONSTANT_Utf8 = 1;
private static final int CONSTANT_String = 8;
private static final int CONSTANT_Class = 7;
private static final int CONSTANT_NameAndType = 12;
private static final int CONSTANT_Fieldref = 9;
private static final int CONSTANT_Methodref = 10;
Squashed commit of the following: (#15) commit fabf4dd0cca19118c59c925f572a655d1d9c4092 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:36:06 2017 -0600 reserve a little more stack space for worst-case lambda expressions commit 24b95016dd6f62fa4a82312310fcb5c55cc22f93 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:33:39 2017 -0600 support constructor references commit a329416f4f37840d2a5d7976874585413cd4c6af Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:11:19 2017 -0600 normalize class name in Classes.forName This fixes a Tomcat classloading issue when using the OpenJDK class library. commit ecafdf40baf2f3cde4835620e9af4380b1081fe7 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 16:58:04 2017 -0600 fix some lambda bugs commit 552dfd779baf077cc6445b4042588e4b6e34f3d2 Merge: 63dda56 aa2f25d Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:57:59 2017 -0600 Merge remote-tracking branch 'corda/chrisr3-invoking-extension' commit 63dda560f8648a793bdb609879076ab729b17e19 Merge: 3ec983d e589f10 Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:54:53 2017 -0600 Merge pull request #538 from dicej/master avoid definePackage infinite recursion with OpenJDK class library commit aa2f25da404b2fc168a672392df939b52ea250ab Author: Chris Rankin <chris.rankin@r3.com> Date: Mon Jul 3 17:26:41 2017 +0100 Add support for "invokevirtual" and "invokeinterface". The "invokeinterface" support seems to be broken for lambdas that require native types to be boxed/unboxed. commit e589f105741ea36d07bba1e300c7ed69c33a22d1 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 2 19:43:36 2017 -0600 avoid definePackage infinite recursion with OpenJDK class library commit 3ec983dd82e01b36fb96411df345a54119a68181 Merge: 6f6bdd7 78881d4 Author: Joel Dice <joel.dice@gmail.com> Date: Tue Jun 13 09:50:49 2017 -0600 Merge pull request #534 from lwahlmeier/fileGetParentFile fixed File.getParent when getting parent returns root commit 78881d427cd474c14f5ce94484f5253de564074b Author: Luke Wahlmeier <lwahlmeier@gmail.com> Date: Tue May 30 13:42:56 2017 -0600 fixed File.getParent when getting parent returns root commit 6f6bdd7d5c171e0c4c807d0a4f3aa676461307de Merge: 8b694f9 b22343e Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:58:09 2017 -0600 Merge pull request #529 from mikehearn/proguard-fixes Some fixes to the ProGuard files commit 8b694f961496f2d47a377254f61153b0338335fd Merge: dfae414 61c82e1 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:54 2017 -0600 Merge pull request #531 from mikehearn/fileinputstream-compat FileInputStream has wrapped some more native methods commit dfae414da8da57049076c16c43472cc32bdeb07c Merge: 16dd804 d7a6f68 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:38 2017 -0600 Merge pull request #532 from mikehearn/use-symlinks Symlink OpenJDK files rather than hardlink commit d7a6f68235b2d42c03aba36f1bb48d173adb4fa6 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:42:06 2017 +0200 Symlink OpenJDK files rather than hardlink commit 61c82e1070d857bcdc7a4f086d13836d9608da00 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:40:52 2017 +0200 FileInputStream has wrapped some more native methods in recent OpenJDK releases commit b22343eb6731f1df2631635e2fcf9d51817273fe Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:38:09 2017 +0200 Some fixes to the ProGuard files commit 16dd804f392168497fa17ab682978f938e291bfb Merge: e2d3270 19deadd Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:30 2017 -0600 Merge pull request #526 from MaartenR/arrays-binsearch Added integer array binary search methods to Arrays class commit e2d3270fe8e92203b6107b95f862ff5bd245c37a Merge: dee99d6 545b9c8 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:20 2017 -0600 Merge pull request #527 from MaartenR/integer-nolz Added numberOfLeadingZeros method to Integer class commit 545b9c8732a6ea026285b1edf976a79eb541ef2e Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 11:23:36 2017 +0100 Tested more negative numbers commit b45bcf09535daef99ed31451ae55db8bec83164c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 10:47:27 2017 +0100 Added unit test for numberOfLeadingZeros method of the Integer class commit 19deadd36bbfc02a8c13e6d91963e41f5125057f Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Mon Mar 13 12:19:17 2017 +0100 Fixed mistake with end index being exclusive commit 7271c0b7077ae3bef473e036aa0f0298a9eb0601 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Mar 10 11:17:13 2017 +0100 Added numberOfLeadingZeros method to Integer class commit 023bb69acd071348f29cd43ff954d3dcf2856c7c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Thu Mar 9 13:43:03 2017 +0100 Added integer array binary search methods to Arrays class commit dee99d6dd60b743a870d1a2c58183649c8a6449c Merge: f7a651d 6c90953 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 1 08:39:32 2017 -0700 Merge pull request #525 from MaartenR/master Added functionality to HttpURLConnection for obtaining content length commit 6c90953745be5451ac9a028639f94e3fcc43d7f3 Author: Maarten Raaphorst <raaphorst@serviceplanet.nl> Date: Wed Mar 1 14:19:51 2017 +0100 Made http headers case insensitive commit 2c3a82d2b387251a8932ddb6575e718c2c1785a7 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Feb 3 05:42:56 2017 -0800 Added functionality to HttpURLConnection for obtaining content length
2017-07-10 16:01:56 +00:00
private static final int CONSTANT_InterfaceMethodref = 11;
public static int add(List<PoolEntry> pool, PoolEntry e) {
int i = 0;
for (PoolEntry existing: pool) {
if (existing.equals(e)) {
return i;
} else {
++i;
}
}
pool.add(e);
return pool.size() - 1;
}
public static int addInteger(List<PoolEntry> pool, int value) {
return add(pool, new IntegerPoolEntry(value));
}
public static int addUtf8(List<PoolEntry> pool, String value) {
return add(pool, new Utf8PoolEntry(value));
}
public static int addString(List<PoolEntry> pool, String value) {
return add(pool, new StringPoolEntry(addUtf8(pool, value)));
}
public static int addClass(List<PoolEntry> pool, String name) {
return add(pool, new ClassPoolEntry(addUtf8(pool, name)));
}
public static int addNameAndType(List<PoolEntry> pool,
String name,
String type)
{
return add(pool, new NameAndTypePoolEntry
(addUtf8(pool, name),
addUtf8(pool, type)));
}
public static int addFieldRef(List<PoolEntry> pool,
String className,
String name,
String spec)
{
return add(pool, new FieldRefPoolEntry
(addClass(pool, className),
addNameAndType(pool, name, spec)));
}
public static int addMethodRef(List<PoolEntry> pool,
String className,
String name,
String spec)
{
return add(pool, new MethodRefPoolEntry
(addClass(pool, className),
addNameAndType(pool, name, spec)));
}
Squashed commit of the following: (#15) commit fabf4dd0cca19118c59c925f572a655d1d9c4092 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:36:06 2017 -0600 reserve a little more stack space for worst-case lambda expressions commit 24b95016dd6f62fa4a82312310fcb5c55cc22f93 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:33:39 2017 -0600 support constructor references commit a329416f4f37840d2a5d7976874585413cd4c6af Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:11:19 2017 -0600 normalize class name in Classes.forName This fixes a Tomcat classloading issue when using the OpenJDK class library. commit ecafdf40baf2f3cde4835620e9af4380b1081fe7 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 16:58:04 2017 -0600 fix some lambda bugs commit 552dfd779baf077cc6445b4042588e4b6e34f3d2 Merge: 63dda56 aa2f25d Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:57:59 2017 -0600 Merge remote-tracking branch 'corda/chrisr3-invoking-extension' commit 63dda560f8648a793bdb609879076ab729b17e19 Merge: 3ec983d e589f10 Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:54:53 2017 -0600 Merge pull request #538 from dicej/master avoid definePackage infinite recursion with OpenJDK class library commit aa2f25da404b2fc168a672392df939b52ea250ab Author: Chris Rankin <chris.rankin@r3.com> Date: Mon Jul 3 17:26:41 2017 +0100 Add support for "invokevirtual" and "invokeinterface". The "invokeinterface" support seems to be broken for lambdas that require native types to be boxed/unboxed. commit e589f105741ea36d07bba1e300c7ed69c33a22d1 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 2 19:43:36 2017 -0600 avoid definePackage infinite recursion with OpenJDK class library commit 3ec983dd82e01b36fb96411df345a54119a68181 Merge: 6f6bdd7 78881d4 Author: Joel Dice <joel.dice@gmail.com> Date: Tue Jun 13 09:50:49 2017 -0600 Merge pull request #534 from lwahlmeier/fileGetParentFile fixed File.getParent when getting parent returns root commit 78881d427cd474c14f5ce94484f5253de564074b Author: Luke Wahlmeier <lwahlmeier@gmail.com> Date: Tue May 30 13:42:56 2017 -0600 fixed File.getParent when getting parent returns root commit 6f6bdd7d5c171e0c4c807d0a4f3aa676461307de Merge: 8b694f9 b22343e Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:58:09 2017 -0600 Merge pull request #529 from mikehearn/proguard-fixes Some fixes to the ProGuard files commit 8b694f961496f2d47a377254f61153b0338335fd Merge: dfae414 61c82e1 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:54 2017 -0600 Merge pull request #531 from mikehearn/fileinputstream-compat FileInputStream has wrapped some more native methods commit dfae414da8da57049076c16c43472cc32bdeb07c Merge: 16dd804 d7a6f68 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:38 2017 -0600 Merge pull request #532 from mikehearn/use-symlinks Symlink OpenJDK files rather than hardlink commit d7a6f68235b2d42c03aba36f1bb48d173adb4fa6 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:42:06 2017 +0200 Symlink OpenJDK files rather than hardlink commit 61c82e1070d857bcdc7a4f086d13836d9608da00 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:40:52 2017 +0200 FileInputStream has wrapped some more native methods in recent OpenJDK releases commit b22343eb6731f1df2631635e2fcf9d51817273fe Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:38:09 2017 +0200 Some fixes to the ProGuard files commit 16dd804f392168497fa17ab682978f938e291bfb Merge: e2d3270 19deadd Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:30 2017 -0600 Merge pull request #526 from MaartenR/arrays-binsearch Added integer array binary search methods to Arrays class commit e2d3270fe8e92203b6107b95f862ff5bd245c37a Merge: dee99d6 545b9c8 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:20 2017 -0600 Merge pull request #527 from MaartenR/integer-nolz Added numberOfLeadingZeros method to Integer class commit 545b9c8732a6ea026285b1edf976a79eb541ef2e Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 11:23:36 2017 +0100 Tested more negative numbers commit b45bcf09535daef99ed31451ae55db8bec83164c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 10:47:27 2017 +0100 Added unit test for numberOfLeadingZeros method of the Integer class commit 19deadd36bbfc02a8c13e6d91963e41f5125057f Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Mon Mar 13 12:19:17 2017 +0100 Fixed mistake with end index being exclusive commit 7271c0b7077ae3bef473e036aa0f0298a9eb0601 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Mar 10 11:17:13 2017 +0100 Added numberOfLeadingZeros method to Integer class commit 023bb69acd071348f29cd43ff954d3dcf2856c7c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Thu Mar 9 13:43:03 2017 +0100 Added integer array binary search methods to Arrays class commit dee99d6dd60b743a870d1a2c58183649c8a6449c Merge: f7a651d 6c90953 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 1 08:39:32 2017 -0700 Merge pull request #525 from MaartenR/master Added functionality to HttpURLConnection for obtaining content length commit 6c90953745be5451ac9a028639f94e3fcc43d7f3 Author: Maarten Raaphorst <raaphorst@serviceplanet.nl> Date: Wed Mar 1 14:19:51 2017 +0100 Made http headers case insensitive commit 2c3a82d2b387251a8932ddb6575e718c2c1785a7 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Feb 3 05:42:56 2017 -0800 Added functionality to HttpURLConnection for obtaining content length
2017-07-10 16:01:56 +00:00
public static int addInterfaceMethodRef(List<PoolEntry> pool,
String interfaceName,
String name,
String spec)
{
return add(pool, new InterfaceMethodRefPoolEntry
(addClass(pool, interfaceName),
addNameAndType(pool, name, spec)));
}
public interface PoolEntry {
public void writeTo(OutputStream out) throws IOException;
}
private static class IntegerPoolEntry implements PoolEntry {
private final int value;
public IntegerPoolEntry(int value) {
this.value = value;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_Integer);
write4(out, value);
}
public boolean equals(Object o) {
return o instanceof IntegerPoolEntry
&& ((IntegerPoolEntry) o).value == value;
}
}
private static class Utf8PoolEntry implements PoolEntry {
private final String data;
public Utf8PoolEntry(String data) {
this.data = data;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_Utf8);
byte[] bytes = data.getBytes("UTF-8");
write2(out, bytes.length);
out.write(bytes);
}
public boolean equals(Object o) {
return o instanceof Utf8PoolEntry
&& ((Utf8PoolEntry) o).data.equals(data);
}
}
private static class StringPoolEntry implements PoolEntry {
private final int valueIndex;
public StringPoolEntry(int valueIndex) {
this.valueIndex = valueIndex;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_String);
write2(out, valueIndex + 1);
}
public boolean equals(Object o) {
return o instanceof StringPoolEntry
&& ((StringPoolEntry) o).valueIndex == valueIndex;
}
}
private static class ClassPoolEntry implements PoolEntry {
private final int nameIndex;
public ClassPoolEntry(int nameIndex) {
this.nameIndex = nameIndex;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_Class);
write2(out, nameIndex + 1);
}
public boolean equals(Object o) {
return o instanceof ClassPoolEntry
&& ((ClassPoolEntry) o).nameIndex == nameIndex;
}
}
private static class NameAndTypePoolEntry implements PoolEntry {
private final int nameIndex;
private final int typeIndex;
public NameAndTypePoolEntry(int nameIndex, int typeIndex) {
this.nameIndex = nameIndex;
this.typeIndex = typeIndex;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_NameAndType);
write2(out, nameIndex + 1);
write2(out, typeIndex + 1);
}
public boolean equals(Object o) {
if (o instanceof NameAndTypePoolEntry) {
NameAndTypePoolEntry other = (NameAndTypePoolEntry) o;
return other.nameIndex == nameIndex && other.typeIndex == typeIndex;
} else {
return false;
}
}
}
private static class FieldRefPoolEntry implements PoolEntry {
private final int classIndex;
private final int nameAndTypeIndex;
public FieldRefPoolEntry(int classIndex, int nameAndTypeIndex) {
this.classIndex = classIndex;
this.nameAndTypeIndex = nameAndTypeIndex;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_Fieldref);
write2(out, classIndex + 1);
write2(out, nameAndTypeIndex + 1);
}
public boolean equals(Object o) {
if (o instanceof FieldRefPoolEntry) {
FieldRefPoolEntry other = (FieldRefPoolEntry) o;
return other.classIndex == classIndex
&& other.nameAndTypeIndex == nameAndTypeIndex;
} else {
return false;
}
}
}
private static class MethodRefPoolEntry implements PoolEntry {
private final int classIndex;
private final int nameAndTypeIndex;
public MethodRefPoolEntry(int classIndex, int nameAndTypeIndex) {
this.classIndex = classIndex;
this.nameAndTypeIndex = nameAndTypeIndex;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_Methodref);
write2(out, classIndex + 1);
write2(out, nameAndTypeIndex + 1);
}
public boolean equals(Object o) {
if (o instanceof MethodRefPoolEntry) {
MethodRefPoolEntry other = (MethodRefPoolEntry) o;
return other.classIndex == classIndex
&& other.nameAndTypeIndex == nameAndTypeIndex;
} else {
return false;
}
}
}
Squashed commit of the following: (#15) commit fabf4dd0cca19118c59c925f572a655d1d9c4092 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:36:06 2017 -0600 reserve a little more stack space for worst-case lambda expressions commit 24b95016dd6f62fa4a82312310fcb5c55cc22f93 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:33:39 2017 -0600 support constructor references commit a329416f4f37840d2a5d7976874585413cd4c6af Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:11:19 2017 -0600 normalize class name in Classes.forName This fixes a Tomcat classloading issue when using the OpenJDK class library. commit ecafdf40baf2f3cde4835620e9af4380b1081fe7 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 16:58:04 2017 -0600 fix some lambda bugs commit 552dfd779baf077cc6445b4042588e4b6e34f3d2 Merge: 63dda56 aa2f25d Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:57:59 2017 -0600 Merge remote-tracking branch 'corda/chrisr3-invoking-extension' commit 63dda560f8648a793bdb609879076ab729b17e19 Merge: 3ec983d e589f10 Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:54:53 2017 -0600 Merge pull request #538 from dicej/master avoid definePackage infinite recursion with OpenJDK class library commit aa2f25da404b2fc168a672392df939b52ea250ab Author: Chris Rankin <chris.rankin@r3.com> Date: Mon Jul 3 17:26:41 2017 +0100 Add support for "invokevirtual" and "invokeinterface". The "invokeinterface" support seems to be broken for lambdas that require native types to be boxed/unboxed. commit e589f105741ea36d07bba1e300c7ed69c33a22d1 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 2 19:43:36 2017 -0600 avoid definePackage infinite recursion with OpenJDK class library commit 3ec983dd82e01b36fb96411df345a54119a68181 Merge: 6f6bdd7 78881d4 Author: Joel Dice <joel.dice@gmail.com> Date: Tue Jun 13 09:50:49 2017 -0600 Merge pull request #534 from lwahlmeier/fileGetParentFile fixed File.getParent when getting parent returns root commit 78881d427cd474c14f5ce94484f5253de564074b Author: Luke Wahlmeier <lwahlmeier@gmail.com> Date: Tue May 30 13:42:56 2017 -0600 fixed File.getParent when getting parent returns root commit 6f6bdd7d5c171e0c4c807d0a4f3aa676461307de Merge: 8b694f9 b22343e Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:58:09 2017 -0600 Merge pull request #529 from mikehearn/proguard-fixes Some fixes to the ProGuard files commit 8b694f961496f2d47a377254f61153b0338335fd Merge: dfae414 61c82e1 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:54 2017 -0600 Merge pull request #531 from mikehearn/fileinputstream-compat FileInputStream has wrapped some more native methods commit dfae414da8da57049076c16c43472cc32bdeb07c Merge: 16dd804 d7a6f68 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:38 2017 -0600 Merge pull request #532 from mikehearn/use-symlinks Symlink OpenJDK files rather than hardlink commit d7a6f68235b2d42c03aba36f1bb48d173adb4fa6 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:42:06 2017 +0200 Symlink OpenJDK files rather than hardlink commit 61c82e1070d857bcdc7a4f086d13836d9608da00 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:40:52 2017 +0200 FileInputStream has wrapped some more native methods in recent OpenJDK releases commit b22343eb6731f1df2631635e2fcf9d51817273fe Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:38:09 2017 +0200 Some fixes to the ProGuard files commit 16dd804f392168497fa17ab682978f938e291bfb Merge: e2d3270 19deadd Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:30 2017 -0600 Merge pull request #526 from MaartenR/arrays-binsearch Added integer array binary search methods to Arrays class commit e2d3270fe8e92203b6107b95f862ff5bd245c37a Merge: dee99d6 545b9c8 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:20 2017 -0600 Merge pull request #527 from MaartenR/integer-nolz Added numberOfLeadingZeros method to Integer class commit 545b9c8732a6ea026285b1edf976a79eb541ef2e Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 11:23:36 2017 +0100 Tested more negative numbers commit b45bcf09535daef99ed31451ae55db8bec83164c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 10:47:27 2017 +0100 Added unit test for numberOfLeadingZeros method of the Integer class commit 19deadd36bbfc02a8c13e6d91963e41f5125057f Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Mon Mar 13 12:19:17 2017 +0100 Fixed mistake with end index being exclusive commit 7271c0b7077ae3bef473e036aa0f0298a9eb0601 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Mar 10 11:17:13 2017 +0100 Added numberOfLeadingZeros method to Integer class commit 023bb69acd071348f29cd43ff954d3dcf2856c7c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Thu Mar 9 13:43:03 2017 +0100 Added integer array binary search methods to Arrays class commit dee99d6dd60b743a870d1a2c58183649c8a6449c Merge: f7a651d 6c90953 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 1 08:39:32 2017 -0700 Merge pull request #525 from MaartenR/master Added functionality to HttpURLConnection for obtaining content length commit 6c90953745be5451ac9a028639f94e3fcc43d7f3 Author: Maarten Raaphorst <raaphorst@serviceplanet.nl> Date: Wed Mar 1 14:19:51 2017 +0100 Made http headers case insensitive commit 2c3a82d2b387251a8932ddb6575e718c2c1785a7 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Feb 3 05:42:56 2017 -0800 Added functionality to HttpURLConnection for obtaining content length
2017-07-10 16:01:56 +00:00
private static class InterfaceMethodRefPoolEntry implements PoolEntry {
private final int classIndex;
private final int nameAndTypeIndex;
public InterfaceMethodRefPoolEntry(int classIndex, int nameAndTypeIndex) {
this.classIndex = classIndex;
this.nameAndTypeIndex = nameAndTypeIndex;
}
public void writeTo(OutputStream out) throws IOException {
write1(out, CONSTANT_InterfaceMethodref);
write2(out, classIndex + 1);
write2(out, nameAndTypeIndex + 1);
}
public boolean equals(Object o) {
if (o instanceof InterfaceMethodRefPoolEntry) {
InterfaceMethodRefPoolEntry other = (InterfaceMethodRefPoolEntry) o;
return other.classIndex == classIndex
&& other.nameAndTypeIndex == nameAndTypeIndex;
} else {
return false;
}
}
}
}