Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
asm
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
4
Issues
4
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
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
Show 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 {
case
INTERNAL:
return
opcode
+
(
Opcodes
.
AALOAD
-
Opcodes
.
IALOAD
);
case
METHOD:
case
VOID:
throw
new
UnsupportedOperationException
();
default
:
throw
new
AssertionError
();
}
}
else
{
switch
(
sort
)
{
case
VOID:
if
(
opcode
!=
Opcodes
.
IRETURN
)
{
throw
new
UnsupportedOperationException
();
}
return
Opcodes
.
RETURN
;
case
BOOLEAN:
case
BYTE:
case
CHAR:
...
...
@@ -815,14 +821,18 @@ public class Type {
case
INT:
return
opcode
;
case
FLOAT:
return
opcode
+
(
Opcodes
.
F
LOAD
-
Opcodes
.
ILOAD
);
return
opcode
+
(
Opcodes
.
F
RETURN
-
Opcodes
.
IRETURN
);
case
LONG:
return
opcode
+
(
Opcodes
.
L
LOAD
-
Opcodes
.
ILOAD
);
return
opcode
+
(
Opcodes
.
L
RETURN
-
Opcodes
.
IRETURN
);
case
DOUBLE:
return
opcode
+
(
Opcodes
.
D
LOAD
-
Opcodes
.
ILOAD
);
return
opcode
+
(
Opcodes
.
D
RETURN
-
Opcodes
.
IRETURN
);
case
ARRAY:
case
OBJECT:
case
INTERNAL:
if
(
opcode
!=
Opcodes
.
ILOAD
&&
opcode
!=
Opcodes
.
ISTORE
&&
opcode
!=
Opcodes
.
IRETURN
)
{
throw
new
UnsupportedOperationException
();
}
return
opcode
+
(
Opcodes
.
ARETURN
-
Opcodes
.
IRETURN
);
case
METHOD:
throw
new
UnsupportedOperationException
();
default
:
...
...
asm/src/test/java/org/objectweb/asm/TypeTest.java
View file @
4084b2db
...
...
@@ -322,6 +322,23 @@ public class TypeTest implements Opcodes {
assertEquals
(
AALOAD
,
Type
.
getObjectType
(
"java/lang/Object"
).
getOpcode
(
IALOAD
));
assertEquals
(
AASTORE
,
Type
.
getType
(
"Ljava/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
.
BYTE_TYPE
.
getOpcode
(
IADD
));
assertEquals
(
IADD
,
Type
.
CHAR_TYPE
.
getOpcode
(
IADD
));
...
...
@@ -332,6 +349,9 @@ public class TypeTest implements Opcodes {
assertEquals
(
DADD
,
Type
.
DOUBLE_TYPE
.
getOpcode
(
IADD
));
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
(
"[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