A very long invocation of the invokedynamic instruction caused the program to not respond
- Dominant language
- Java
- Stars
- 7.4k
- Forks
- 538
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the bug**
I use 4.0.0 recaf. This is built by the latest master branch.
I use recaf to modify a method, and I found when I try to use the vertical slider to view the following content, the program will not respond.
In this method, there are many, many invokedynamic such as the following form. I reduced the quantity of \u0020. When the amount of \u0020 is stacked enough, the scrollbar will no longer function.
```text
invokedynamic \u0020\u0020\u0020\u0020\u0020\u0020, (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/invoke/CallSite; } { "ߕߞ߉ߞޑߓߞߑߘޑ߬߆ߌߋߚߒ", "ߘߚߋߚߑ߉", "ޗ߳ߕߞ߉ߞސߓߞߑߘސ߬ߋߍߖߑߘބޖ߳ߕߞ߉ߞސߓߞߑߘސ߬ߋߍߖߑߘބ", 0 }
```
I hope that if there are many identical forms, such as a long string of \u0020, they can be folded up. This may reduce the jam.
Contributor guide
Research direction
Reproduce the hang in Recaf 4.0.0 by opening a method containing many invokedynamic instructions and dragging the vertical scrollbar. Start by investigating the editor's rendering and scrolling behavior for repeated long whitespace or invokedynamic forms. Done means the method remains responsive and the repeated content can be folded or otherwise displayed without the scrollbar becoming unusable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- desktop, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100