]> granicus.if.org Git - re2c/commitdiff
Moved hot functions to header to enable inlining.
authorUlya Trofimovich <skvadrik@gmail.com>
Wed, 27 Feb 2019 10:44:15 +0000 (10:44 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Wed, 27 Feb 2019 10:44:15 +0000 (10:44 +0000)
re2c/src/dfa/determinization.h
re2c/src/dfa/posix_precedence.cc

index 6a363d4618ce227a2d3e3408cf6e9a20813e72ab..465d5254e2db37d9f17f4b218399f83583b8ea6e 100644 (file)
@@ -177,6 +177,34 @@ bool cmp_gtop_t::operator() (const nfa_state_t *x, const nfa_state_t *y) const
     return x->topord < y->topord;
 }
 
+inline int32_t unpack_longest(int32_t packed)
+{
+    // take lower 30 bits and sign-extend
+    return static_cast<int32_t>(static_cast<uint32_t>(packed) << 2u) >> 2u;
+}
+
+inline int32_t unpack_leftmost(int32_t packed)
+{
+    // take higher 2 bits and sign-extend
+    return packed >> 30u;
+}
+
+inline int32_t pack(int32_t longest, int32_t leftmost)
+{
+    // avoid signed overflows by using unsigned arithmetics
+    uint32_t u_longest = static_cast<uint32_t>(longest);
+    uint32_t u_leftmost = static_cast<uint32_t>(leftmost);
+
+    // leftmost: higher 2 bits, longest: lower 30 bits
+    uint32_t u_packed = (u_longest & 0x3fffFFFF) | (u_leftmost << 30u);
+    int32_t packed = static_cast<int32_t>(u_packed);
+
+    DASSERT(unpack_longest(packed) == longest
+        && unpack_leftmost(packed) == leftmost);
+
+    return packed;
+}
+
 } // namespace re2c
 
 #endif // _RE2C_DFA_DETERMINIZATION_
index 66691f8c048df465f8f3ca66d43636db83ce608e..d7a89e3d2c8172a0e513fb373c59a2c21c2d5216 100644 (file)
@@ -98,32 +98,4 @@ int32_t precedence(determ_context_t &ctx, const clos_t &x, const clos_t &y
     return prec;
 }
 
-int32_t unpack_longest(int32_t packed)
-{
-    // take lower 30 bits and sign-extend
-    return static_cast<int32_t>(static_cast<uint32_t>(packed) << 2u) >> 2u;
-}
-
-int32_t unpack_leftmost(int32_t packed)
-{
-    // take higher 2 bits and sign-extend
-    return packed >> 30u;
-}
-
-int32_t pack(int32_t longest, int32_t leftmost)
-{
-    // avoid signed overflows by using unsigned arithmetics
-    uint32_t u_longest = static_cast<uint32_t>(longest);
-    uint32_t u_leftmost = static_cast<uint32_t>(leftmost);
-
-    // leftmost: higher 2 bits, longest: lower 30 bits
-    uint32_t u_packed = (u_longest & 0x3fffFFFF) | (u_leftmost << 30u);
-    int32_t packed = static_cast<int32_t>(u_packed);
-
-    DASSERT(unpack_longest(packed) == longest
-        && unpack_leftmost(packed) == leftmost);
-
-    return packed;
-}
-
 } // namespace re2c