Skip to content

Initial support for static fields in JcInterpreter#30

Merged
dvvrd merged 3 commits into
mainfrom
saloed/statics
Jul 17, 2023
Merged

Initial support for static fields in JcInterpreter#30
dvvrd merged 3 commits into
mainfrom
saloed/statics

Conversation

@Saloed

@Saloed Saloed commented Jun 29, 2023

Copy link
Copy Markdown
Collaborator

Initial support for static fields

  • Represent statics with UFieldLValue using unique concrete address for each JcClass.
  • Analyze static initializers on first access.

@Saloed Saloed force-pushed the saloed/statics branch 2 times, most recently from b4b4e72 to 0d23a17 Compare June 30, 2023 19:12
Comment thread usvm-jvm/src/main/kotlin/org/usvm/machine/JcExprResolver.kt Outdated
Comment thread usvm-jvm/src/main/kotlin/org/usvm/machine/JcExprResolver.kt Outdated
Comment thread usvm-jvm/src/main/kotlin/org/usvm/machine/JcExprResolver.kt Outdated
@CaelmBleidd

Copy link
Copy Markdown
Member

I didn't get, how it works with initialization time. To resolve static values in results we have to have some kind of initial memory for them, and it is different from the one we use for regular fields. How does resolve for static fields work?

@Saloed

Saloed commented Jul 11, 2023

Copy link
Copy Markdown
Collaborator Author

I didn't get, how it works with initialization time. To resolve static values in results we have to have some kind of initial memory for them, and it is different from the one we use for regular fields. How does resolve for static fields work?

We currently don't have a mode when statics are treated as input values. For now, we run the static initializer once on a first access as if we were analyzing the entrypoint in a fresh environment.

@dvvrd dvvrd merged commit ccc8d8e into main Jul 17, 2023
@sergeypospelov sergeypospelov mentioned this pull request Jul 17, 2023
57 tasks
@Saloed Saloed deleted the saloed/statics branch July 26, 2023 07:54
petrukhinandrew pushed a commit to petrukhinandrew/usvm that referenced this pull request May 8, 2025
* [feat] Exception tests

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Path variables breaking

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Refactor PVs

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Make @repository classes not break USVM

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [feat] Rework mocks (+ primitive PV) (+ move methods to JSA)

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Used immutable list for mocks

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Refactor (used mocked calls instead of state) (narrowed types for exceptions) (remove unnecessary lists)

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

---------

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>
petrukhinandrew pushed a commit to petrukhinandrew/usvm that referenced this pull request Jun 19, 2025
* [feat] Exception tests

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Path variables breaking

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Refactor PVs

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Make @repository classes not break USVM

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [feat] Rework mocks (+ primitive PV) (+ move methods to JSA)

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Used immutable list for mocks

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Refactor (used mocked calls instead of state) (narrowed types for exceptions) (remove unnecessary lists)

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

---------

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>
petrukhinandrew pushed a commit to petrukhinandrew/usvm that referenced this pull request Aug 15, 2025
* [feat] Exception tests

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Path variables breaking

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Refactor PVs

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Make @repository classes not break USVM

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [feat] Rework mocks (+ primitive PV) (+ move methods to JSA)

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Used immutable list for mocks

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

* [fix] Refactor (used mocked calls instead of state) (narrowed types for exceptions) (remove unnecessary lists)

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>

---------

Signed-off-by: Arthur Alekseev <arthur100500@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants