INCLUDE "debug.ml"
+INCLUDE "trace.ml"
INCLUDE "utils.ml"
open Format
Translist.fold (fun t (a1, a2) ->
let _, _, _, f = Transition.node t in
let (_, _, fs1), (_, _, fs2) = Formula.st f in
- (StateSet.union s1 fs1, StateSet.union s2 fs2)
+ (StateSet.union a1 fs1, StateSet.union a2 fs2)
) trl (StateSet.empty, StateSet.empty)
in
let ns1 = StateSet.inter s1 orig_s1
DEFINE LOOP (t, states, ctx) = (
let _t = (t) in
+ TRACE("top-down-run", 3,
+ __ "Entering node %i with loop (tag %s, context %i) with states %a\n%!"
+ (Node.to_int _t)
+ (Tag.to_string (Tree.tag tree _t))
+ (Node.to_int (ctx))
+ (StateSet.print) (states));
if _t == Tree.nil then nil_res
else
let tag = Tree.tag tree _t in
DEFINE LOOP_TAG (t, states, tag, ctx) = (
let _t = (t) in (* to avoid duplicating expression t *)
+ TRACE("top-down-run", 3,
+ __ "Entering node %i with loop_tag (tag %s, context %i) with states %a\n%!"
+ (Node.to_int _t)
+ (Tag.to_string (tag))
+ (Node.to_int (ctx))
+ (StateSet.print) (states));
if _t == Tree.nil then nil_res
else
l2jit_dispatch
| L2JIT.NOP () -> nil_res
| L2JIT.FIRST_CHILD s -> LOOP ((Tree.first_child tree t), s, ctx)
| L2JIT.NEXT_SIBLING s -> LOOP ((Tree.next_sibling tree t), s, ctx)
+(* | L2JIT.NEXT_SIBLING s -> LOOP ((Tree.next_node_before tree t ctx), s, ctx) *)
| L2JIT.FIRST_ELEMENT s -> LOOP ((Tree.first_element tree t), s, ctx)
- | L2JIT.NEXT_ELEMENT s -> LOOP ((Tree.next_element tree t), s, ctx)
+ | L2JIT.NEXT_ELEMENT s -> LOOP ((Tree.next_element tree t), s, ctx)
+(* | L2JIT.NEXT_ELEMENT s -> LOOP ((Tree.next_node_before tree t ctx), s, ctx) *)
| L2JIT.TAGGED_DESCENDANT (s, tag) ->
LOOP_TAG ((Tree.tagged_descendant tree t tag), s, tag, ctx)