Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
asm
asm
Commits
4084b2db
Commit
4084b2db
authored
Jan 07, 2018
by
Remi Forax
1
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix-317805' into 'master'
Fix for
#317805
Closes
#317805
See merge request
!90
parents
be3e73d1
2530c4b4
Pipeline
#583
passed with stage
in 5 minutes and 41 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
3 deletions
+33
-3
asm/src/main/java/org/objectweb/asm/Type.java
asm/src/main/java/org/objectweb/asm/Type.java
+13
-3
asm/src/test/java/org/objectweb/asm/TypeTest.java
asm/src/test/java/org/objectweb/asm/TypeTest.java
+20
-0
No files found.
asm/src/main/java/org/objectweb/asm/Type.java
View file @
4084b2db
...
@@ -802,12 +802,18 @@ public class Type {
...
@@ -802,12 +802,18 @@ public class Type {
case
INTERNAL:
case
INTERNAL:
return
opcode
+
(
Opcodes
.
AALOAD
-
Opcodes
.
IALOAD
);
return
opcode
+
(
Opcodes
.
AALOAD
-
Opcodes
.
IALOAD
);
case
METHOD:
case
METHOD:
case
VOID:
throw
new
UnsupportedOperationException
();
throw
new
UnsupportedOperationException
();
default
:
default
:
throw
new
AssertionError
();
throw
new
AssertionError
();
}
}
}
else
{
}
else
{
switch
(
sort
)
{
switch
(
sort
)
{
case
VOID:
if
(
opcode
!=
Opcodes
.
IRETURN
)
{
throw
new
UnsupportedOperationException
();
}
return
Opcodes
.
RETURN
;
case
BOOLEAN:
case
BOOLEAN:
case
BYTE:
case
BYTE:
case
CHAR:
case
CHAR:
...
@@ -815,14 +821,18 @@ public class Type {
...
@@ -815,14 +821,18 @@ public class Type {
case
INT:
case
INT:
return
opcode
;
return
opcode
;
case
FLOAT:
case
FLOAT:
return
opcode
+
(
Opcodes
.
F
LOAD
-
Opcodes
.
I
LOAD
);
return
opcode
+
(
Opcodes
.
F
RETURN
-
Opcodes
.
I
RETURN
);
case
LONG:
case
LONG:
return
opcode
+
(
Opcodes
.
L
LOAD
-
Opcodes
.
I
LOAD
);
return
opcode
+
(
Opcodes
.
L
RETURN
-
Opcodes
.
I
RETURN
);
case
DOUBLE:
case
DOUBLE:
return
opcode
+
(
Opcodes
.
D
LOAD
-
Opcodes
.
I
LOAD
);
return
opcode
+
(
Opcodes
.
D
RETURN
-
Opcodes
.
I
RETURN
);
case
ARRAY:
case
ARRAY:
case
OBJECT:
case
OBJECT:
case
INTERNAL:
case
INTERNAL:
if
(
opcode
!=
Opcodes
.
ILOAD
&&
opcode
!=
Opcodes
.
ISTORE
&&
opcode
!=
Opcodes
.
IRETURN
)
{
throw
new
UnsupportedOperationException
();
}
return
opcode
+
(
Opcodes
.
ARETURN
-
Opcodes
.
IRETURN
);
case
METHOD:
case
METHOD:
throw
new
UnsupportedOperationException
();
throw
new
UnsupportedOperationException
();
default
:
default
:
...
...
asm/src/test/java/org/objectweb/asm/TypeTest.java
View file @
4084b2db
...
@@ -322,6 +322,23 @@ public class TypeTest implements Opcodes {
...
@@ -322,6 +322,23 @@ public class TypeTest implements Opcodes {
assertEquals
(
AALOAD
,
Type
.
getObjectType
(
"java/lang/Object"
).
getOpcode
(
IALOAD
));
assertEquals
(
AALOAD
,
Type
.
getObjectType
(
"java/lang/Object"
).
getOpcode
(
IALOAD
));
assertEquals
(
AASTORE
,
Type
.
getType
(
"Ljava/lang/Object;"
).
getOpcode
(
IASTORE
));
assertEquals
(
AASTORE
,
Type
.
getType
(
"Ljava/lang/Object;"
).
getOpcode
(
IASTORE
));
assertEquals
(
AASTORE
,
Type
.
getObjectType
(
"java/lang/Object"
).
getOpcode
(
IASTORE
));
assertEquals
(
AASTORE
,
Type
.
getObjectType
(
"java/lang/Object"
).
getOpcode
(
IASTORE
));
assertEquals
(
AASTORE
,
Type
.
getType
(
"[I"
).
getOpcode
(
IASTORE
));
assertEquals
(
RETURN
,
Type
.
VOID_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
IRETURN
,
Type
.
BOOLEAN_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
IRETURN
,
Type
.
BYTE_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
IRETURN
,
Type
.
CHAR_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
IRETURN
,
Type
.
SHORT_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
IRETURN
,
Type
.
INT_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
FRETURN
,
Type
.
FLOAT_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
LRETURN
,
Type
.
LONG_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
DRETURN
,
Type
.
DOUBLE_TYPE
.
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
ARETURN
,
Type
.
getType
(
"Ljava/lang/Object;"
).
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
ARETURN
,
Type
.
getObjectType
(
"java/lang/Object"
).
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
ARETURN
,
Type
.
getType
(
"Ljava/lang/Object;"
).
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
ARETURN
,
Type
.
getObjectType
(
"java/lang/Object"
).
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
ARETURN
,
Type
.
getType
(
"[I"
).
getOpcode
(
Opcodes
.
IRETURN
));
assertEquals
(
IADD
,
Type
.
BOOLEAN_TYPE
.
getOpcode
(
IADD
));
assertEquals
(
IADD
,
Type
.
BOOLEAN_TYPE
.
getOpcode
(
IADD
));
assertEquals
(
IADD
,
Type
.
BYTE_TYPE
.
getOpcode
(
IADD
));
assertEquals
(
IADD
,
Type
.
BYTE_TYPE
.
getOpcode
(
IADD
));
assertEquals
(
IADD
,
Type
.
CHAR_TYPE
.
getOpcode
(
IADD
));
assertEquals
(
IADD
,
Type
.
CHAR_TYPE
.
getOpcode
(
IADD
));
...
@@ -332,6 +349,9 @@ public class TypeTest implements Opcodes {
...
@@ -332,6 +349,9 @@ public class TypeTest implements Opcodes {
assertEquals
(
DADD
,
Type
.
DOUBLE_TYPE
.
getOpcode
(
IADD
));
assertEquals
(
DADD
,
Type
.
DOUBLE_TYPE
.
getOpcode
(
IADD
));
Class
<
UnsupportedOperationException
>
expectedException
=
UnsupportedOperationException
.
class
;
Class
<
UnsupportedOperationException
>
expectedException
=
UnsupportedOperationException
.
class
;
assertThrows
(
expectedException
,
()
->
Type
.
VOID_TYPE
.
getOpcode
(
IADD
));
assertThrows
(
expectedException
,
()
->
Type
.
VOID_TYPE
.
getOpcode
(
ILOAD
));
assertThrows
(
expectedException
,
()
->
Type
.
VOID_TYPE
.
getOpcode
(
IALOAD
));
assertThrows
(
expectedException
,
()
->
Type
.
getType
(
"LI;"
).
getOpcode
(
IADD
));
assertThrows
(
expectedException
,
()
->
Type
.
getType
(
"LI;"
).
getOpcode
(
IADD
));
assertThrows
(
expectedException
,
()
->
Type
.
getType
(
"[I"
).
getOpcode
(
IADD
));
assertThrows
(
expectedException
,
()
->
Type
.
getType
(
"[I"
).
getOpcode
(
IADD
));
assertThrows
(
expectedException
,
()
->
Type
.
getObjectType
(
"I"
).
getOpcode
(
IADD
));
assertThrows
(
expectedException
,
()
->
Type
.
getObjectType
(
"I"
).
getOpcode
(
IADD
));
...
...
ksrini
@ksrini
mentioned in issue
#317808 (closed)
·
Jan 09, 2018
mentioned in issue
#317808 (closed)
mentioned in issue #317808
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment