diff --git a/src/limiters.jl b/src/limiters.jl
index c6c388ec659c02efc73af3e375b87b989fb842fc..d561ebf773df6a0eb800a22a070f4afd2d7ca1e5 100644
--- a/src/limiters.jl
+++ b/src/limiters.jl
@@ -207,16 +207,22 @@ function limit_slope_convex_hull!(var::AbstractArray, mask::AbstractArray,
       idxs_lhs, idxs_rhs = cellindices.(Ref(mesh), (k-1,k+1))
       vvar_lhs, vvar_rhs = view.(Ref(var), (idxs_lhs,idxs_rhs))
 
-      vtmp_var[1] = vvar[1] + (vvar_lhs[end]-vvar[1])*w
-      vtmp_var[end] = vvar[end] + (vvar_rhs[1]-vvar[end])*w
-      for i in 2:Npts-1
-        ul, uc, ur = vvar[i-1], vvar[i], vvar[i+1]
-        xl, xc, xr = vx[i-1], vx[i], vx[i+1]
-        um = ul + (ur-ul)/(xr-xl)*(xc-xl)
-        vtmp_var[i] = uc + (um-uc)*w
-      end
+      impl_limit_slope_convex_hull!(vtmp_var, vvar, vvar_lhs, vvar_rhs, vx, w)
     end
 
     copyto!(var, tmp_var)
   end
 end
+
+
+@inline function impl_limit_slope_convex_hull!(vtmp_var, vvar, vvar_lhs, vvar_rhs, vx, w)
+    vtmp_var[1] = vvar[1] + (vvar_lhs[end]-vvar[1])*w
+    vtmp_var[end] = vvar[end] + (vvar_rhs[1]-vvar[end])*w
+    Npts = length(vvar)
+    for i in 2:Npts-1
+      ul, uc, ur = vvar[i-1], vvar[i], vvar[i+1]
+      xl, xc, xr = vx[i-1], vx[i], vx[i+1]
+      um = ul + (ur-ul)/(xr-xl)*(xc-xl)
+      vtmp_var[i] = uc + (um-uc)*w
+    end
+end