
| Key: |
RVM-116
|
| Type: |
Improvement
|
| Status: |
Open
|
| Priority: |
Major
|
| Assignee: |
Unassigned
|
| Reporter: |
Ian Rogers
|
| Votes: |
0
|
| Watchers: |
0
|
|
If you were logged in you would be able to see more operations.
|
|
|
In MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanThread.java there are 3 rather worrying comments highlighting issues from Steve:
(1)
/**
- When an exception occurs, registers are saved temporarily. If
- the stack being scanned is in this state, we need to scan those
- registers for code pointers. If the codeLocations deque is null,
- then scanning for code pointers is not required, so we don't need
- to do anything. (SB: Why only code pointers?)
*
- @param verbosity The level of verbosity to be used when
- performing the scan.
*/
private void getHWExceptionRegisters(int verbosity) {
...
(2)
/**
- Identify all pointers into code pointers associated with a frame.
- There are two cases to be considered: a) the instruction pointer
- associated with each frame (stored in the thread's metadata for
- the top frame and as a return address for all subsequent frames),
- and b) local variables on the stack which happen to be pointers
- to code.<p>
*
- FIXME: SB: Why is it that JNI frames are skipped when considering
- top of stack frames, while boot image frames are skipped when
- considering other frames. Shouldn't they both be considered in
- both cases?
*
- @param verbosity The level of verbosity to be used when
- performing the scan.
*/
private void processFrameForCode(int verbosity) {
...
(3)
/**
- AIX-specific code.<p>
*
- If we are scanning the stack of a thread that entered the VM via
- a createVM or attachVM then the "bottom" of the stack had native
- C frames instead of the usual java frames. The JNIEnv for the
- thread may still contain jniRefs that have been returned to the
- native C code, but have not been reported for GC. calling
- getNextReferenceAddress without first calling setup... will
- report the remaining jniRefs in the current "frame" of the
- jniRefs stack. (this should be the bottom frame)
*
- FIXME: SB: Why is this AIX specific? Why depend on the
- preprocessor?
*
- @param verbosity The level of verbosity to be used when
- performing the scan.
*/
private void checkJNIBase(int verbosity) {
...
These issues should be addressed, fixing the possible problems and the comments removed.
|
|
Description
|
In MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanThread.java there are 3 rather worrying comments highlighting issues from Steve:
(1)
/**
- When an exception occurs, registers are saved temporarily. If
- the stack being scanned is in this state, we need to scan those
- registers for code pointers. If the codeLocations deque is null,
- then scanning for code pointers is not required, so we don't need
- to do anything. (SB: Why only code pointers?)
*
- @param verbosity The level of verbosity to be used when
- performing the scan.
*/
private void getHWExceptionRegisters(int verbosity) {
...
(2)
/**
- Identify all pointers into code pointers associated with a frame.
- There are two cases to be considered: a) the instruction pointer
- associated with each frame (stored in the thread's metadata for
- the top frame and as a return address for all subsequent frames),
- and b) local variables on the stack which happen to be pointers
- to code.<p>
*
- FIXME: SB: Why is it that JNI frames are skipped when considering
- top of stack frames, while boot image frames are skipped when
- considering other frames. Shouldn't they both be considered in
- both cases?
*
- @param verbosity The level of verbosity to be used when
- performing the scan.
*/
private void processFrameForCode(int verbosity) {
...
(3)
/**
- AIX-specific code.<p>
*
- If we are scanning the stack of a thread that entered the VM via
- a createVM or attachVM then the "bottom" of the stack had native
- C frames instead of the usual java frames. The JNIEnv for the
- thread may still contain jniRefs that have been returned to the
- native C code, but have not been reported for GC. calling
- getNextReferenceAddress without first calling setup... will
- report the remaining jniRefs in the current "frame" of the
- jniRefs stack. (this should be the bottom frame)
*
- FIXME: SB: Why is this AIX specific? Why depend on the
- preprocessor?
*
- @param verbosity The level of verbosity to be used when
- performing the scan.
*/
private void checkJNIBase(int verbosity) {
...
These issues should be addressed, fixing the possible problems and the comments removed. |
Show » |
|