[vm/bytecode] Ignore source positions not denoting a debug point in debugger.

The CheckStack bytecode does not denote a debug point anymore after the
introduction of the DebugCheck bytecode.
Fix caller/callee determination in mixed mode.
Factorize some code.

Change-Id: Ide1e0bbad022a83e6113243dc996396f9f5d2f3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108565
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
Régis Crelier
2019-07-12 00:18:21 +00:00
committed by commit-bot@chromium.org
parent 96906936b4
commit 55b67e9eae
10 changed files with 245 additions and 116 deletions
+8
View File
@@ -456,10 +456,18 @@ DART_FORCE_INLINE static uword ParamAddress(uword fp, intptr_t reverse_index) {
return fp + (kParamEndSlotFromFp * kWordSize) + (reverse_index * kWordSize);
}
// Both fp and other_fp are compiled code frame pointers.
// See stack_frame_dbc.h for the DBC version.
DART_FORCE_INLINE static bool IsCalleeFrameOf(uword fp, uword other_fp) {
return other_fp < fp;
}
// Both fp and other_fp are bytecode frame pointers.
DART_FORCE_INLINE static bool IsBytecodeCalleeFrameOf(uword fp,
uword other_fp) {
return other_fp > fp;
}
// Value for stack limit that is used to cause an interrupt.
// Note that on DBC stack is growing upwards so interrupt limit is 0 unlike
// on all other architectures.