Col-E / Col-E/Recaf

A very long invocation of the invokedynamic instruction caused the program to not respond

Open
#914 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.