X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fruntime.ml;fp=src%2Fruntime.ml;h=101aceb5c90135de96df1ec59cd10f733b1aae26;hb=a6baedc6c67cb1de0587a779f8bcddf276b0bf4c;hp=d74c26aefcbf93c8338a2af6f03a3702691b7a5f;hpb=63db110485e97e189313abd1a6ce1bedf941d76d;p=SXSI%2Fxpathcomp.git diff --git a/src/runtime.ml b/src/runtime.ml index d74c26a..101aceb 100644 --- a/src/runtime.ml +++ b/src/runtime.ml @@ -116,7 +116,7 @@ module Make (U : ResJIT.S) : S with type result_set = U.NS.t = 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 @@ -191,7 +191,7 @@ module Make (U : ResJIT.S) : S with type result_set = U.NS.t = DEFINE LOOP (t, states, ctx) = ( let _t = (t) in TRACE("top-down-run", 3, - __ "Entering node %i (tag %s, context %i) with states %a\n%!" + __ "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)) @@ -205,6 +205,12 @@ DEFINE LOOP (t, states, ctx) = ( 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 @@ -254,10 +260,12 @@ DEFINE LOOP_TAG (t, states, tag, ctx) = ( match instr with | 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_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)