Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
f50ae1cf
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f50ae1cf
编写于
9月 02, 2011
作者:
D
darcy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6989067: BigInteger's array copiers should be converted to System.arraycopy()
Reviewed-by: mduigou, forax
上级
de8f2a63
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
11 addition
and
21 deletion
+11
-21
src/share/classes/java/math/BigInteger.java
src/share/classes/java/math/BigInteger.java
+11
-21
未找到文件。
src/share/classes/java/math/BigInteger.java
浏览文件 @
f50ae1cf
...
@@ -31,6 +31,7 @@ package java.math;
...
@@ -31,6 +31,7 @@ package java.math;
import
java.util.Random
;
import
java.util.Random
;
import
java.io.*
;
import
java.io.*
;
import
java.util.Arrays
;
/**
/**
* Immutable arbitrary-precision integers. All operations behave as if
* Immutable arbitrary-precision integers. All operations behave as if
...
@@ -1612,14 +1613,12 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -1612,14 +1613,12 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
}
else
{
// Array must be resized
}
else
{
// Array must be resized
if
(
nBits
<=
(
32
-
bitsInHighWord
))
{
if
(
nBits
<=
(
32
-
bitsInHighWord
))
{
int
result
[]
=
new
int
[
nInts
+
len
];
int
result
[]
=
new
int
[
nInts
+
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
System
.
arraycopy
(
a
,
0
,
result
,
0
,
len
);
result
[
i
]
=
a
[
i
];
primitiveLeftShift
(
result
,
result
.
length
,
nBits
);
primitiveLeftShift
(
result
,
result
.
length
,
nBits
);
return
result
;
return
result
;
}
else
{
}
else
{
int
result
[]
=
new
int
[
nInts
+
len
+
1
];
int
result
[]
=
new
int
[
nInts
+
len
+
1
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
System
.
arraycopy
(
a
,
0
,
result
,
0
,
len
);
result
[
i
]
=
a
[
i
];
primitiveRightShift
(
result
,
result
.
length
,
32
-
nBits
);
primitiveRightShift
(
result
,
result
.
length
,
32
-
nBits
);
return
result
;
return
result
;
}
}
...
@@ -1907,9 +1906,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -1907,9 +1906,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
b
=
montReduce
(
b
,
mod
,
modLen
,
inv
);
b
=
montReduce
(
b
,
mod
,
modLen
,
inv
);
// Set t to high half of b
// Set t to high half of b
int
[]
t
=
new
int
[
modLen
];
int
[]
t
=
Arrays
.
copyOf
(
b
,
modLen
);
for
(
int
i
=
0
;
i
<
modLen
;
i
++)
t
[
i
]
=
b
[
i
];
// Fill in the table with odd powers of the base
// Fill in the table with odd powers of the base
for
(
int
i
=
1
;
i
<
tblmask
;
i
++)
{
for
(
int
i
=
1
;
i
<
tblmask
;
i
++)
{
...
@@ -2006,14 +2003,11 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -2006,14 +2003,11 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
// Convert result out of Montgomery form and return
// Convert result out of Montgomery form and return
int
[]
t2
=
new
int
[
2
*
modLen
];
int
[]
t2
=
new
int
[
2
*
modLen
];
for
(
int
i
=
0
;
i
<
modLen
;
i
++)
System
.
arraycopy
(
b
,
0
,
t2
,
modLen
,
modLen
);
t2
[
i
+
modLen
]
=
b
[
i
];
b
=
montReduce
(
t2
,
mod
,
modLen
,
inv
);
b
=
montReduce
(
t2
,
mod
,
modLen
,
inv
);
t2
=
new
int
[
modLen
];
t2
=
Arrays
.
copyOf
(
b
,
modLen
);
for
(
int
i
=
0
;
i
<
modLen
;
i
++)
t2
[
i
]
=
b
[
i
];
return
new
BigInteger
(
1
,
t2
);
return
new
BigInteger
(
1
,
t2
);
}
}
...
@@ -2154,8 +2148,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -2154,8 +2148,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
// Copy remaining ints of mag
// Copy remaining ints of mag
int
numInts
=
(
p
+
31
)
>>>
5
;
int
numInts
=
(
p
+
31
)
>>>
5
;
int
[]
mag
=
new
int
[
numInts
];
int
[]
mag
=
new
int
[
numInts
];
for
(
int
i
=
0
;
i
<
numInts
;
i
++)
System
.
arraycopy
(
this
.
mag
,
(
this
.
mag
.
length
-
numInts
),
mag
,
0
,
numInts
);
mag
[
i
]
=
this
.
mag
[
i
+
(
this
.
mag
.
length
-
numInts
)];
// Mask out any excess bits
// Mask out any excess bits
int
excessBits
=
(
numInts
<<
5
)
-
p
;
int
excessBits
=
(
numInts
<<
5
)
-
p
;
...
@@ -2221,7 +2214,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -2221,7 +2214,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
return
shiftRight
(-
n
);
return
shiftRight
(-
n
);
}
}
}
}
int
[]
newMag
=
shiftLeft
(
mag
,
n
);
int
[]
newMag
=
shiftLeft
(
mag
,
n
);
return
new
BigInteger
(
newMag
,
signum
);
return
new
BigInteger
(
newMag
,
signum
);
}
}
...
@@ -2234,8 +2227,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -2234,8 +2227,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
if
(
nBits
==
0
)
{
if
(
nBits
==
0
)
{
newMag
=
new
int
[
magLen
+
nInts
];
newMag
=
new
int
[
magLen
+
nInts
];
for
(
int
i
=
0
;
i
<
magLen
;
i
++)
System
.
arraycopy
(
mag
,
0
,
newMag
,
0
,
magLen
);
newMag
[
i
]
=
mag
[
i
];
}
else
{
}
else
{
int
i
=
0
;
int
i
=
0
;
int
nBits2
=
32
-
nBits
;
int
nBits2
=
32
-
nBits
;
...
@@ -2288,9 +2280,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -2288,9 +2280,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
if
(
nBits
==
0
)
{
if
(
nBits
==
0
)
{
int
newMagLen
=
magLen
-
nInts
;
int
newMagLen
=
magLen
-
nInts
;
newMag
=
new
int
[
newMagLen
];
newMag
=
Arrays
.
copyOf
(
mag
,
newMagLen
);
for
(
int
i
=
0
;
i
<
newMagLen
;
i
++)
newMag
[
i
]
=
mag
[
i
];
}
else
{
}
else
{
int
i
=
0
;
int
i
=
0
;
int
highBits
=
mag
[
0
]
>>>
nBits
;
int
highBits
=
mag
[
0
]
>>>
nBits
;
...
@@ -2561,7 +2551,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
...
@@ -2561,7 +2551,7 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
if
(
signum
<
0
)
{
if
(
signum
<
0
)
{
// Check if magnitude is a power of two
// Check if magnitude is a power of two
boolean
pow2
=
(
Integer
.
bitCount
(
mag
[
0
])
==
1
);
boolean
pow2
=
(
Integer
.
bitCount
(
mag
[
0
])
==
1
);
for
(
int
i
=
1
;
i
<
len
&&
pow2
;
i
++)
for
(
int
i
=
1
;
i
<
len
&&
pow2
;
i
++)
pow2
=
(
mag
[
i
]
==
0
);
pow2
=
(
mag
[
i
]
==
0
);
n
=
(
pow2
?
magBitLength
-
1
:
magBitLength
);
n
=
(
pow2
?
magBitLength
-
1
:
magBitLength
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录