[OTLayout] Minor refactoring
diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
index 91bdcc4..71e0aee 100644
--- a/src/hb-ot-layout-gpos-table.hh
+++ b/src/hb-ot-layout-gpos-table.hh
@@ -1029,8 +1029,9 @@
 
     /* now we search backwards for a non-mark glyph */
     hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, c->buffer->idx, 1);
+    skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
     do {
-      if (!skippy_iter.prev (LookupFlag::IgnoreMarks)) return TRACE_RETURN (false);
+      if (!skippy_iter.prev ()) return TRACE_RETURN (false);
       /* We only want to attach to the first of a MultipleSubst sequence.  Reject others. */
       if (0 == get_lig_comp (c->buffer->info[skippy_iter.idx])) break;
       skippy_iter.reject ();
@@ -1132,7 +1133,8 @@
 
     /* now we search backwards for a non-mark glyph */
     hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, c->buffer->idx, 1);
-    if (!skippy_iter.prev (LookupFlag::IgnoreMarks)) return TRACE_RETURN (false);
+    skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
+    if (!skippy_iter.prev ()) return TRACE_RETURN (false);
 
     /* The following assertion is too strong, so we've disabled it. */
     if (!(c->buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE)) {/*return TRACE_RETURN (false);*/}
@@ -1247,7 +1249,8 @@
 
     /* now we search backwards for a suitable mark glyph until a non-mark glyph */
     hb_apply_context_t::skipping_backward_iterator_t skippy_iter (c, c->buffer->idx, 1);
-    if (!skippy_iter.prev (c->lookup_props & ~LookupFlag::IgnoreFlags)) return TRACE_RETURN (false);
+    skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags);
+    if (!skippy_iter.prev ()) return TRACE_RETURN (false);
 
     if (!(c->buffer->info[skippy_iter.idx].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK)) { return TRACE_RETURN (false); }
 
diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh
index bbbb9c1..a9824eb 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -281,9 +281,9 @@
 			has_glyph_classes (gdef.has_glyph_classes ()),
 			debug_depth (0) {}
 
-  void set_recurse_func (recurse_func_t func) { recurse_func = func; }
-  void set_lookup_props (unsigned int lookup_props_) { lookup_props = lookup_props_; }
-  void set_lookup (const Lookup &l) { lookup_props = l.get_props (); }
+  inline void set_recurse_func (recurse_func_t func) { recurse_func = func; }
+  inline void set_lookup_props (unsigned int lookup_props_) { lookup_props = lookup_props_; }
+  inline void set_lookup (const Lookup &l) { lookup_props = l.get_props (); }
 
   struct skipping_forward_iterator_t
   {
@@ -293,12 +293,17 @@
 					bool context_match = false)
     {
       c = c_;
+      lookup_props = c->lookup_props;
       idx = start_index_;
       num_items = num_items_;
       mask = context_match ? -1 : c->lookup_mask;
       syllable = context_match ? 0 : c->buffer->cur().syllable ();
       end = c->buffer->len;
     }
+    inline void set_lookup_props (unsigned int lookup_props_)
+    {
+      lookup_props = lookup_props_;
+    }
     inline bool has_no_chance (void) const
     {
       return unlikely (num_items && idx + num_items >= end);
@@ -307,7 +312,7 @@
     {
       num_items++;
     }
-    inline bool next (unsigned int  lookup_props)
+    inline bool next (void)
     {
       assert (num_items > 0);
       do
@@ -319,14 +324,11 @@
       num_items--;
       return (c->buffer->info[idx].mask & mask) && (!syllable || syllable == c->buffer->info[idx].syllable ());
     }
-    inline bool next (void)
-    {
-      return next (c->lookup_props);
-    }
 
     unsigned int idx;
     protected:
     hb_apply_context_t *c;
+    unsigned int lookup_props;
     unsigned int num_items;
     hb_mask_t mask;
     uint8_t syllable;
@@ -342,11 +344,16 @@
 					 bool match_syllable_ = true)
     {
       c = c_;
+      lookup_props = c->lookup_props;
       idx = start_index_;
       num_items = num_items_;
       mask = mask_ ? mask_ : c->lookup_mask;
       syllable = match_syllable_ ? c->buffer->cur().syllable () : 0;
     }
+    inline void set_lookup_props (unsigned int lookup_props_)
+    {
+      lookup_props = lookup_props_;
+    }
     inline bool has_no_chance (void) const
     {
       return unlikely (idx < num_items);
@@ -355,7 +362,7 @@
     {
       num_items++;
     }
-    inline bool prev (unsigned int  lookup_props)
+    inline bool prev (void)
     {
       assert (num_items > 0);
       do
@@ -367,14 +374,11 @@
       num_items--;
       return (c->buffer->out_info[idx].mask & mask) && (!syllable || syllable == c->buffer->out_info[idx].syllable ());
     }
-    inline bool prev (void)
-    {
-      return prev (c->lookup_props);
-    }
 
     unsigned int idx;
     protected:
     hb_apply_context_t *c;
+    unsigned int lookup_props;
     unsigned int num_items;
     hb_mask_t mask;
     uint8_t syllable;