Alessandro Di Federico
bf6cefc05a
Externalize functions to improve build times
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
fe1dffcffd
Add some missing includes
...
This is in preparation of reducing headers in Debug.h.
2024-05-03 21:52:40 +02:00
Ivan Krysak
b25a32de2a
Stop using std:: prefix for std::size_t
2024-01-29 11:57:54 +02:00
Massimo Fioravanti
f6ff8e544d
Add tracking debug infrastructure
...
Add a mechanism to make the program crash when a given element of the
model is read or written.
2024-01-02 11:14:56 +01:00
Massimo Fioravanti
c276a439b5
Add pipeline invalidation
...
Replace the stub implementation of invalidation with the proper
implementation. A ReadPathCache is added to each global so that it can
keep tracks of what target are associated to which read paths.
2024-01-02 11:14:56 +01:00
Giacomo Vercesi
bc7cde4cf7
tuple_tree.ts: fix diffing for abstract types
...
The previous `makeDiff` implementation did account nor have enough
information to be able to upcast abstract types. This commit introduces
the necessary information for this to happen.
2023-11-03 16:30:40 +01:00
Giacomo Vercesi
29b229455f
Tuple Tree: rename Parent in struct.h.tpl
...
Rename the Parent attribute of a struct to BaseClass to avoid conflicts
with Tuple Tree structs that might need that attribute.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
786d01925a
tuple_tree_gen.ts.tpl: fix Global name alias
...
Fix the case in the typescript tuple tree generator where the global
name coincides with the name of the root object.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
90ea42b695
model/_util.py: move into tupletree.py
...
Move the contents of `model/_util.py` into `tupletree.py` as it's
model-agnostic and used by all generated Python tuple-tree wrappers.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
d2967d2a49
Tuple Tree Generator: remove Model headers
...
This commit removes the inclusion of the `Binary.h` header in
Tuple-Tree Generator files, allowing Model-independent Tuple Trees to be
generated.
2023-09-14 15:44:32 +02:00
Giacomo Vercesi
2a99f50040
revng-model.ts: allow individual serdes
...
Allow the serialization and deserialization of individual model objects,
this is useful when these need to be exchanged individually across an
IPC boundary.
2023-07-31 16:05:52 +02:00
Ivan Krysak
7893d53ef8
TTG: add Parent using definition
2023-07-21 17:25:24 +02:00
Ivan Krysak
b4061793f3
TTG: fix accessor comment and constness
...
Also improve whitespace adjacent formatting
2023-07-21 17:25:24 +02:00
Giacomo Vercesi
27c065a54b
model.ts: implement makeDiff speedups
...
Make `makeDiff` run faster by:
* Utilizing the information exposed by TYPE_HINTS which avoids having
expensive runtime checks
* Optimize some of the hot parts of the codebase to lower run times
2023-07-21 13:19:04 +02:00
Giacomo Vercesi
3a006422d3
typescript/python model wrappers: fix structure
...
Change the way the python and typescript model wrappers handle
attributes in struct fields. Now all fields are populated and none of
the use `None`.
2023-07-21 09:34:00 +02:00
Massimo Fioravanti
69aafd4181
TupleTree: implement tracking data manipulation
...
Implement the core visits that are able to inspect the model bypassing
the instrumentation.
2023-04-21 17:51:05 +02:00
Massimo Fioravanti
254dc99fcb
TupleTreeGenerator: emit tracking machinery
2023-04-21 17:50:16 +02:00
Ivan Krysak
1248f8532d
TTG: enable vectors of enumerations
2023-03-15 10:19:01 +01:00
Ivan Krysak
11c0d7f02e
Stop using \brief doxygen command
2023-03-15 10:19:01 +01:00
Giacomo Vercesi
31bb77237f
typescript: add setElementByPath function
...
add the setElementByPath function which allows setting a value in a
tuple tree give a tuple tree path to apply it to
Also apply some small fixes to the `tuple_tree.ts` codebase
2023-02-07 16:54:35 +01:00
Massimo Fioravanti
742e1a0c56
TupleTree: switch from public fields to accessors
2022-12-12 18:36:57 +01:00
Alessandro Di Federico
5fb9ba4313
TupleTree diff: externalize
2022-12-09 10:11:27 +01:00
Alessandro Di Federico
daf4a85364
llvm::yaml::yamlize: externalize
2022-12-09 10:11:27 +01:00
Alessandro Di Federico
0245bf81d7
stringAsPath: externalize
2022-12-09 10:11:27 +01:00
Alessandro Di Federico
a96270a8aa
TupleTree::visit: externalize
2022-12-09 10:11:27 +01:00
Alessandro Di Federico
22c1ec78eb
TupleTree: handle type-erased visitors
...
This commit reduces build times by introducing a type-erasure layer when
performing a visit on TupleTrees. Basically instead of propagating the
type of the visitor along all of the template castle, we wrap the
visitor into a virtual class with one method for each possible type in
the TupleTree.
This enables a single instatiation of visit algorithm.
2022-12-09 09:10:39 +01:00
Alessandro Di Federico
bffbd58434
tuple_tree_generator: generate one .cpp only
2022-12-09 09:07:06 +01:00
Giacomo Vercesi
bf4122ed0a
Introduce v2 of revng-check-conventions
2022-09-29 15:21:59 +02:00
Alessandro Di Federico
52755aa4b4
TTG: fix temporary file leak in TypeScript backend
2022-09-26 18:09:01 +02:00
Giacomo Vercesi
ae5522e861
tuple_tree_generator: minor TypeScript fixes
2022-09-02 03:49:54 +02:00
Alessandro Di Federico
1d91ed9beb
tuple_tree_generator: make C++ just a regular backend
...
The `tuple_tree_generator` component was still heavily treating C++ as a
special citizen.
This commit normalizes the situation.
2022-08-11 16:20:42 +02:00
Alessandro Di Federico
6f93a7503f
tuple_tree_generator: more informative errors
2022-08-08 13:55:25 +02:00
Ivan Krysak
65d1a016d4
Standardize concept naming across the codebase
2022-08-05 17:27:56 +03:00
Giacomo Vercesi
b18dc3ac86
TypeScript: add toString to string types
2022-07-28 08:48:16 +02:00
Giacomo Vercesi
cc8c6ea203
TupleTree: add ScalarTraits for non-composite keys
...
Non-composite keys are single-element tuples, therefore they don't
directly inherit the YAML serialization of their only element.
This commit enables building `ScalarTraits` for keys in all cases.
2022-07-28 08:44:57 +02:00
Giacomo Vercesi
4486167d92
revng.model: add TypedList
...
Add a specialized list class to be used in the model. This will do
runtime instance checking to make sure that list-like fields in the
model only contain object of the correct type.
2022-07-22 14:56:15 +02:00
Giacomo Vercesi
cac78b9604
revng.model: fix required sequence fields
...
Fix the constructor for required sequence fields, now they use a
`default_factory` with `list` to construct an empty list when none is
passed to the constructor.
2022-07-22 14:56:15 +02:00
Giacomo Vercesi
116d965117
revng.model: implement kw_only
...
Implement a constructor override for model classes that checks that the
constructor does not have positional arguments passed to it. This can
be dropped post-3.10 since it is implemented natively by kw_only.
2022-07-22 14:56:15 +02:00
Giacomo Vercesi
018518d783
revng.model: remove tags from dumper
...
Tags in the yaml have been deprecated for a while, remove them from
being outputted from YAML dumper.
2022-07-22 14:56:15 +02:00
Giacomo Vercesi
a741e39f76
revng-check-conventions: introduce prettier
...
Adds the formatting tool prettier to allow formatting JS, TS, JSON,
YAML and HTML files.
2022-06-28 15:29:09 +02:00
Alessandro Di Federico
450b0b4013
Minor changes
2022-05-11 09:29:45 +02:00
Giacomo Vercesi
a4ca82b50b
Introduce TypeScript model generator
2022-05-09 13:37:35 +02:00
Giacomo Vercesi
a98a7bb5d5
tuple_tree_generator: python_type -> type_info
...
This is part of an effort to generalize our current generator to make it
easier to support multiple backends.
2022-05-09 13:35:59 +02:00
Alessandro Di Federico
422d5d88e4
Minor changes
...
Apply fixes due to `isort` misconfiguration.
2022-05-09 13:32:07 +02:00
Giacomo Vercesi
bbce0b33e5
revng-check-conventions: introduce isort
2022-04-20 09:57:08 +02:00
Giacomo Vercesi
46821cee5f
revng-check-conventions: introduce mypy
2022-04-20 09:57:01 +02:00
Giacomo Vercesi
31a836e48c
revng-check-conventions: introduce flake8
2022-04-20 09:56:44 +02:00
Massimo Fioravanti
44720eedbd
Redesign TupleTreeDiff
...
`TupleTreeDiff` is now type-safe and owns the changes.
2022-04-15 15:14:13 +02:00
Giacomo Vercesi
a2b5dbb1dc
TupleTreeGenerator: autogenerate Kind
2022-04-08 17:36:59 +02:00
Giacomo Vercesi
457d782ea8
UpcastablePointer::YAMLTraits: use Kind
2022-04-08 17:32:12 +02:00