Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Jamie Mansfield
asm
Commits
e10e36d2
Commit
e10e36d2
authored
Jun 13, 2018
by
trask
Browse files
Fix java.lang.VerifyError: Operand stack overflow
parent
d209ecc3
Changes
2
Hide whitespace changes
Inline
Side-by-side
asm/src/main/java/org/objectweb/asm/MethodWriter.java
View file @
e10e36d2
...
...
@@ -854,7 +854,13 @@ final class MethodWriter extends MethodVisitor {
if
(
compute
==
COMPUTE_MAX_STACK_AND_LOCAL_FROM_FRAMES
)
{
relativeStackSize
=
nStack
;
if
(
nStack
>
maxRelativeStackSize
)
{
for
(
int
i
=
0
;
i
<
nStack
;
++
i
)
{
Object
st
=
stack
[
i
];
if
(
st
==
Opcodes
.
LONG
||
st
==
Opcodes
.
DOUBLE
)
{
relativeStackSize
++;
}
}
if
(
relativeStackSize
>
maxRelativeStackSize
)
{
maxRelativeStackSize
=
relativeStackSize
;
}
}
...
...
asm/src/test/java/org/objectweb/asm/ClassWriterComputeMaxsTest.java
View file @
e10e36d2
...
...
@@ -1128,4 +1128,19 @@ public class ClassWriterComputeMaxsTest {
assertMaxs
(
1
,
1
);
}
@Test
public
void
testComputeMaxsFromFrameWithLong
()
{
init
(
Opcodes
.
V1_7
);
Label
l0
=
new
Label
();
methodVisitor
.
visitMethodInsn
(
Opcodes
.
INVOKESTATIC
,
"ABC"
,
"get"
,
"()J"
,
false
);
GOTO
(
l0
);
LABEL
(
l0
);
methodVisitor
.
visitFrame
(
Opcodes
.
F_NEW
,
0
,
null
,
1
,
new
Object
[]
{
Opcodes
.
LONG
});
ACONST_NULL
();
RETURN
();
assertMaxs
(
3
,
1
);
}
}
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