You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2017/09/12 21:20:52 UTC
svn commit: r1808171 - in
/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl:
CASImpl.java XmiCasDeserializer.java
Author: schor
Date: Tue Sep 12 21:20:52 2017
New Revision: 1808171
URL: http://svn.apache.org/viewvc?rev=1808171&view=rev
Log:
[UIMA-5564] reuse 0 length arrays. was already reusing 0 length lists.
Modified:
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1808171&r1=1808170&r2=1808171&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Tue Sep 12 21:20:52 2017
@@ -4782,6 +4782,30 @@ public class CASImpl extends AbstractCas
return svd.emptyStringList;
}
+ public CommonArrayFS getEmptyArray(TypeImpl type) {
+ switch (type.getCode()) {
+ case TypeSystemConstants.booleanArrayTypeCode :
+ return getEmptyBooleanArray();
+ case TypeSystemConstants.byteArrayTypeCode :
+ return getEmptyByteArray();
+ case TypeSystemConstants.shortArrayTypeCode :
+ return getEmptyShortArray();
+ case TypeSystemConstants.intArrayTypeCode :
+ return getEmptyIntegerArray();
+ case TypeSystemConstants.floatArrayTypeCode :
+ return getEmptyFloatArray();
+ case TypeSystemConstants.longArrayTypeCode :
+ return getEmptyLongArray();
+ case TypeSystemConstants.doubleArrayTypeCode :
+ return getEmptyDoubleArray();
+ case TypeSystemConstants.stringArrayTypeCode :
+ return getEmptyStringArray();
+ case TypeSystemConstants.fsArrayTypeCode :
+ return getEmptyFSArray();
+ default: throw Misc.internalError();
+ }
+ }
+
public FloatArray getEmptyFloatArray() {
if (null == svd.emptyFloatArray) {
svd.emptyFloatArray = new FloatArray(this.getJCas(), 0);
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java?rev=1808171&r1=1808170&r2=1808171&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java Tue Sep 12 21:20:52 2017
@@ -1312,7 +1312,9 @@ public class XmiCasDeserializer {
*/
private CommonArrayFS createNewArray(TypeImpl type, List<String> values) {
final int sz = values.size();
- CommonArrayFS fs = (CommonArrayFS) casBeingFilled.createArray(type, sz);
+ CommonArrayFS fs = (sz == 0)
+ ? casBeingFilled.getEmptyArray(type)
+ : (CommonArrayFS) casBeingFilled.createArray(type, sz);
if (fs instanceof FSArray) {
final FSArray fsArray = (FSArray) fs;
for (int i = 0; i < sz; i++) {