state_transition.py: improve hit filter AND add miss filter
This commit is contained in:
parent
d9fbdb7b6b
commit
7522ed5ef7
|
@ -144,18 +144,28 @@ def invalid_filter(s):
|
|||
|
||||
def hit_filter(s):
|
||||
if s.self_dir.hit_state == HitState.HIT:
|
||||
if s.block_state.self_block == Block.NULL:
|
||||
if s.block_state.self_block != s.block_state.req_block:
|
||||
return False
|
||||
if s.self_dir.tl_state == TLState.INVALID:
|
||||
return False
|
||||
for c, b in zip(s.client_dirs, s.block_state.client_blocks):
|
||||
if c.hit_state == HitState.HIT:
|
||||
if b == Block.NULL:
|
||||
if b != s.block_state.req_block:
|
||||
return False
|
||||
if c.tl_state == TLState.INVALID:
|
||||
return False
|
||||
return True
|
||||
|
||||
def miss_filter(s):
|
||||
if s.self_dir.hit_state == HitState.MISS:
|
||||
if s.block_state.self_block == s.block_state.req_block:
|
||||
return False
|
||||
for c, b in zip(s.client_dirs, s.block_state.client_blocks):
|
||||
if c.hit_state == HitState.MISS:
|
||||
if b == s.block_state.req_block:
|
||||
return False
|
||||
return True
|
||||
|
||||
def retrieve_name(var):
|
||||
for fi in reversed(inspect.stack()):
|
||||
names = [var_name for var_name, var_val in fi.frame.f_locals.items() if var_val is var]
|
||||
|
@ -164,7 +174,8 @@ def retrieve_name(var):
|
|||
|
||||
filters = [
|
||||
invalid_filter,
|
||||
hit_filter
|
||||
hit_filter,
|
||||
miss_filter
|
||||
]
|
||||
|
||||
for f in filters:
|
||||
|
|
Loading…
Reference in New Issue