Skip to content

Commit 1cd7eac

Browse files
committed
Merge v07-develop
2 parents b8e51a6 + c5233be commit 1cd7eac

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

msgpack-core/src/main/java/org/msgpack/core/buffer/MessageBuffer.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,19 @@ public class MessageBuffer {
4141
isJavaAtLeast7 = false;
4242
}
4343
else {
44-
int major = Integer.parseInt(javaVersion.substring(0, dotPos));
45-
int minor = Integer.parseInt(javaVersion.substring(dotPos + 1));
46-
isJavaAtLeast7 = major > 1 || (major == 1 && minor >= 7);
44+
try {
45+
int major = Integer.parseInt(javaVersion.substring(0, dotPos));
46+
int minor = Integer.parseInt(javaVersion.substring(dotPos + 1));
47+
isJavaAtLeast7 = major > 1 || (major == 1 && minor >= 7);
48+
}
49+
catch(NumberFormatException e) {
50+
e.printStackTrace(System.err);
51+
}
4752
}
4853

49-
// Fetch theUnsafe object for Orackle JDK and OpenJDK
5054
// Detect android VM
5155
boolean isAndroid = System.getProperty("java.runtime.name", "").toLowerCase().contains("android");
56+
// Fetch theUnsafe object for Orackle JDK and OpenJDK
5257
Unsafe u;
5358
if(!isAndroid) {
5459
// Fetch theUnsafe object for Oracle JDK and OpenJDK
@@ -111,6 +116,8 @@ public class MessageBuffer {
111116
assert false;
112117
}
113118

119+
// We need to use reflection to find MessageBuffer implementation classes because
120+
// importing these classes creates TypeProfile and adds some overhead to method calls.
114121
String bufferClsName;
115122
if(!isAndroid && isJavaAtLeast7) {
116123
if(isLittleEndian)

msgpack-core/src/main/java/org/msgpack/core/buffer/MessageBufferU.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public double getDouble(int index) {
7575
public void getBytes(int index, int len, ByteBuffer dst) {
7676
try {
7777
reference.position(index);
78-
reference.limit(index+len);
78+
reference.limit(index + len);
7979
dst.put(reference);
8080
}
8181
finally {
@@ -114,7 +114,7 @@ public void putDouble(int index, double v) {
114114
public ByteBuffer toByteBuffer(int index, int length) {
115115
try {
116116
reference.position(index);
117-
reference.limit(index+length);
117+
reference.limit(index + length);
118118
return reference.slice();
119119
}
120120
finally {
@@ -142,15 +142,19 @@ public void putByteBuffer(int index, ByteBuffer src, int len) {
142142
assert (len <= src.remaining());
143143

144144
if(src.hasArray()) {
145-
byte[] srcArray = src.array();
146-
putBytes(index, srcArray, src.position(), len);
147-
148-
} else {
149-
for(int i = 0; i < len; ++i) {
150-
putByte(index + i, src.get());
145+
putBytes(index, src.array(), src.position(), len);
146+
src.position(src.position() + len);
147+
}
148+
else {
149+
int prevSrcLimit = src.limit();
150+
try {
151+
src.limit(src.position() + len);
152+
reference.put(src);
153+
}
154+
finally {
155+
src.limit(prevSrcLimit);
151156
}
152157
}
153-
src.position(src.position() + len);
154158
}
155159

156160
@Override

msgpack-jackson/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ To use this module on Maven-based projects, use following dependency:
1111
<dependency>
1212
<groupId>org.msgpack</groupId>
1313
<artifactId>jackson-dataformat-msgpack</artifactId>
14-
<version>0.7.0-p2</version>
14+
<version>0.7.0-p3</version>
1515
</dependency>
1616
```
1717

0 commit comments

Comments
 (0)