This question feels silly, but it really puzzles me. When I look at the source code of gem5, I always come across classes like typedef typename CPUPol::IQ IQ; typedef typename Impl::DynInstPtr DynInstPtr;. I want to see what functions are in these classes. But in vscode, I cannot jump to where they are defined. I can't even search for them. I also didn't find some files having similiar names with the class names.
In gem5, how do I know the specific location of the class?
250 Views Asked by Gerrie At
1
There are 1 best solutions below
Related Questions in VISUAL-STUDIO-CODE
- Is there a way to prevent vscode from forwarding ssh agent to remote dev container?
- flutter Null check error: did not show file and line number
- vscode, debug angular, first time, doesn't debug, 2nd time stops at main.js then it's ok
- trouble with creating a project for Pymakr in vscode
- Compiling c++ code by VS Code is always blocked by clang-tidy error 'Error running 'clang-tidy'
- Disable typescript in VS Code
- couldn't sign in visual studio code
- I can't add text to "Message" in VS Code when committing to Git
- Cannot type single backtick in VSCode
- WebScraping doesnt work, even without error
- Visual Studio Code keeps discovering python interpreters forever and vscode-server on remote is busy 100%
- vscode uses different cocoapods version when running a task
- Live server extension in VS Code works in background but do not pop the web browser
- How to recover deleted files from create vite react project
- Autocomplete not working for apache spark in java vscode
Related Questions in GEM5
- How to change the gem5 RVV vector length
- running SPEC in gem5 using the SimPoint methodology
- Can gem5 ensure consistent execution time for the same code?
- warn: MOVNTDQ: Ignoring non-temporal hint, modeling as cacheable!, While simulating x86 with spec2006 benchamrks I am getting stuck in warn message
- how to simulate NUMA in gem5?
- stdio.h error when creating a binary for C code to target x86
- ssh is disconnected when gem5 is compiled
- How to configure Hybrid memory in Gem5
- Modifying CPU Paramteres in Gem5 From Config
- Error while building DSENT to model power & area of NoC
- Issues regarding Gem5 Indirect Memory Prefetcher
- L1 Misses in Gem5 not matching L2 Hits+Misses
- Issues cross-compiling on WSL2 -> RISCV in order to simulate with GEM5
- How should I set the valid bit of cache block to "1" for the first time in Gem5 without error?
- If I want to observe the prediction accuracy of different branches of O3cpu in gem5, should I modify the O3 code? If so, do I need to rebuild gem5
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
gem5 uses in some points this horrible impl template pattern instead of virtual methods. Someone explained it to me why but I forgot.
Then IDEs such as Eclipse which I've tested with are not able to resolve "a list of templates used", here's a minimal test for that.
In the specific case of
typedef typename Impl::DynInstPtr DynInstPtrI managed to find the definition as follows in Eclipse. This would likely also work on vscode.Start from one of the typedefs e.g.:
Search for usages of
BaseDynInst(Ctrl + Alt + G). The first usage luckily is:which is an explicit template instantiation.
So now I just jump to the definition of
O3CPUImpland there it is:So yes, in this case I got lucky. If there was no explicit instantiation done, I would have had to search for all usages of the constructor that built the object to find what type was being set on the template.
Also, with the hindsight of the result, we could have noticed earlier that when searching for the definition of
DynInstPtr(Ctrl + Shift + T), any results in a class named*Implwould be the interesting ones, due to the gem5 naming pattern used.Finally, another guerrilla technique you could use you be to just:
which points us to
O3CPUImplwith several entries of type:Some of this had been briefly mentioned here.
Tested on gem5 0d5a80cb469f515b95e03f23ddaf70c9fd2ecbf2.