Skip to content

Commit

Permalink
early exit SCC lookup and enhanced cycle detection
Browse files Browse the repository at this point in the history
  • Loading branch information
Tamas Szabo committed Jan 28, 2016
1 parent e8e0f40 commit c22d98a
Show file tree
Hide file tree
Showing 6 changed files with 945 additions and 703 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16937,6 +16937,20 @@
</node>
</node>
</node>
<node concept="13i0hz" id="2G8yZXxNStd" role="13h7CS">
<property role="13i0iv" value="false" />
<property role="13i0it" value="true" />
<property role="TrG5h" value="getErrorMessageForElementInCycle" />
<node concept="3Tm1VV" id="2G8yZXxNSte" role="1B3o_S" />
<node concept="3clFbS" id="2G8yZXxNStf" role="3clF47">
<node concept="3cpWs6" id="2G8yZXxNSFQ" role="3cqZAp">
<node concept="Xl_RD" id="17fjvcLFfFr" role="3cqZAk">
<property role="Xl_RC" value="Involved in cyclic dependency!" />
</node>
</node>
</node>
<node concept="17QB3L" id="2G8yZXxNSFN" role="3clF45" />
</node>
<node concept="13i0hz" id="59HbAIOYtvQ" role="13h7CS">
<property role="TrG5h" value="isInvolvedInCycle" />
<node concept="3Tm1VV" id="59HbAIOYtvR" role="1B3o_S" />
Expand Down Expand Up @@ -17212,56 +17226,20 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="4ISByPoWhY0" role="3cqZAp">
<node concept="3cpWsn" id="4ISByPoWhY1" role="3cpWs9">
<property role="TrG5h" value="sccs" />
<node concept="2hMVRd" id="4ISByPoWhXR" role="1tU5fm">
<node concept="2hMVRd" id="4ISByPoWhXY" role="2hN53Y">
<node concept="3Tqbb2" id="4ISByPoWhXZ" role="2hN53Y">
<ref role="ehGHo" to="vs0r:59HbAIOYkEn" resolve="IDetectCycle" />
</node>
</node>
</node>
<node concept="2YIFZM" id="4ISByPoWhY2" role="33vP2m">
<ref role="1Pybhc" to="gtp9:59VTJR_XXJb" resolve="GraphUtil" />
<ref role="37wK5l" to="gtp9:4kDlJ5bgbgK" resolve="computeSCC" />
<node concept="37vLTw" id="4ISByPoWhY3" role="37wK5m">
<ref role="3cqZAo" node="4ISByPoWhTf" resolve="graph" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="4ISByPoWqWy" role="3cqZAp">
<node concept="3cpWsn" id="4ISByPoWqWz" role="3cpWs9">
<node concept="3cpWs8" id="2G8yZXxK829" role="3cqZAp">
<node concept="3cpWsn" id="2G8yZXxK82a" role="3cpWs9">
<property role="TrG5h" value="result" />
<node concept="2hMVRd" id="4ISByPoWqWq" role="1tU5fm">
<node concept="3Tqbb2" id="4ISByPoWqWt" role="2hN53Y">
<node concept="2hMVRd" id="2G8yZXxK825" role="1tU5fm">
<node concept="3Tqbb2" id="2G8yZXxK828" role="2hN53Y">
<ref role="ehGHo" to="vs0r:59HbAIOYkEn" resolve="IDetectCycle" />
</node>
</node>
<node concept="2OqwBi" id="4ISByPoWqW$" role="33vP2m">
<node concept="37vLTw" id="4ISByPoWqW_" role="2Oq$k0">
<ref role="3cqZAo" node="4ISByPoWhY1" resolve="sccs" />
</node>
<node concept="1z4cxt" id="4ISByPoWqWA" role="2OqNvi">
<node concept="1bVj0M" id="4ISByPoWqWB" role="23t8la">
<node concept="3clFbS" id="4ISByPoWqWC" role="1bW5cS">
<node concept="3clFbF" id="4ISByPoWqWD" role="3cqZAp">
<node concept="2OqwBi" id="4ISByPoWqWE" role="3clFbG">
<node concept="37vLTw" id="4ISByPoWqWF" role="2Oq$k0">
<ref role="3cqZAo" node="4ISByPoWqWI" resolve="it" />
</node>
<node concept="3JPx81" id="4ISByPoWqWG" role="2OqNvi">
<node concept="13iPFW" id="4ISByPoWqWH" role="25WWJ7" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="4ISByPoWqWI" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="4ISByPoWqWJ" role="1tU5fm" />
</node>
</node>
<node concept="2YIFZM" id="2G8yZXxK82b" role="33vP2m">
<ref role="37wK5l" to="gtp9:2G8yZXxJf6X" resolve="computeSCCSingle" />
<ref role="1Pybhc" to="gtp9:59VTJR_XXJb" resolve="GraphUtil" />
<node concept="13iPFW" id="2G8yZXxK82c" role="37wK5m" />
<node concept="37vLTw" id="2G8yZXxK82d" role="37wK5m">
<ref role="3cqZAo" node="4ISByPoWhTf" resolve="graph" />
</node>
</node>
</node>
Expand All @@ -17270,7 +17248,7 @@
<node concept="3y3z36" id="4ISByPoWs1t" role="1gVkn0">
<node concept="10Nm6u" id="4ISByPoWs1Y" role="3uHU7w" />
<node concept="37vLTw" id="4ISByPoWrNO" role="3uHU7B">
<ref role="3cqZAo" node="4ISByPoWqWz" resolve="result" />
<ref role="3cqZAo" node="2G8yZXxK82a" resolve="result" />
</node>
</node>
</node>
Expand All @@ -17279,7 +17257,7 @@
<node concept="3clFbS" id="4ISByPp632P" role="3clFbx">
<node concept="3cpWs6" id="4ISByPp64qv" role="3cqZAp">
<node concept="37vLTw" id="4ISByPp64qT" role="3cqZAk">
<ref role="3cqZAo" node="4ISByPoWqWz" resolve="result" />
<ref role="3cqZAo" node="2G8yZXxK82a" resolve="result" />
</node>
</node>
</node>
Expand All @@ -17289,7 +17267,7 @@
</node>
<node concept="2OqwBi" id="4ISByPp63pb" role="3uHU7B">
<node concept="37vLTw" id="4ISByPp63bC" role="2Oq$k0">
<ref role="3cqZAo" node="4ISByPoWqWz" resolve="result" />
<ref role="3cqZAo" node="2G8yZXxK82a" resolve="result" />
</node>
<node concept="34oBXx" id="4ISByPp63YC" role="2OqNvi" />
</node>
Expand All @@ -17314,7 +17292,7 @@
<node concept="3clFbC" id="4ISByPp65W6" role="3uHU7B">
<node concept="2OqwBi" id="4ISByPp64WT" role="3uHU7B">
<node concept="37vLTw" id="4ISByPp64Je" role="2Oq$k0">
<ref role="3cqZAo" node="4ISByPoWqWz" resolve="result" />
<ref role="3cqZAo" node="2G8yZXxK82a" resolve="result" />
</node>
<node concept="34oBXx" id="4ISByPp65yu" role="2OqNvi" />
</node>
Expand Down Expand Up @@ -17344,7 +17322,7 @@
</node>
<node concept="3cpWs6" id="4ISByPp67dV" role="3cqZAp">
<node concept="37vLTw" id="4ISByPp67es" role="3cqZAk">
<ref role="3cqZAo" node="4ISByPoWqWz" resolve="result" />
<ref role="3cqZAo" node="2G8yZXxK82a" resolve="result" />
</node>
</node>
</node>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2163,8 +2163,13 @@
</node>
<node concept="3clFbS" id="4ISByPoZ7Gr" role="2LFqv$">
<node concept="2MkqsV" id="17fjvcLFfFc" role="3cqZAp">
<node concept="Xl_RD" id="17fjvcLFfFr" role="2MkJ7o">
<property role="Xl_RC" value="Involved in cyclic dependency!" />
<node concept="2OqwBi" id="2G8yZXxNY_o" role="2MkJ7o">
<node concept="1YBJjd" id="2G8yZXxNYya" role="2Oq$k0">
<ref role="1YBMHb" node="59HbAIOYAw1" resolve="source" />
</node>
<node concept="2qgKlT" id="2G8yZXxNYJK" role="2OqNvi">
<ref role="37wK5l" to="hwgx:2G8yZXxNStd" resolve="getErrorMessageForElementInCycle" />
</node>
</node>
<node concept="2GrUjf" id="4ISByPoZ7HO" role="2OEOjV">
<ref role="2Gs0qQ" node="4ISByPoZ7Gp" resolve="element" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4124,8 +4124,13 @@
<ref role="3cqZAo" node="4ISByPp7zSr" resolve="result" />
</node>
<node concept="TSZUe" id="4ISByPp7$JW" role="2OqNvi">
<node concept="2GrUjf" id="4ISByPp7$P4" role="25WWJ7">
<ref role="2Gs0qQ" node="4ISByPp7tfO" resolve="member" />
<node concept="2OqwBi" id="2G8yZXxNX$T" role="25WWJ7">
<node concept="2GrUjf" id="4ISByPp7$P4" role="2Oq$k0">
<ref role="2Gs0qQ" node="4ISByPp7tfO" resolve="member" />
</node>
<node concept="3TrEf2" id="2G8yZXxNY5Z" role="2OqNvi">
<ref role="3Tt5mk" to="mj1l:hEaDaGor64" />
</node>
</node>
</node>
</node>
Expand Down Expand Up @@ -4174,6 +4179,21 @@
<node concept="3Tqbb2" id="4ISByPp7qQK" role="2hN53Y" />
</node>
</node>
<node concept="13i0hz" id="2G8yZXxNWlk" role="13h7CS">
<property role="13i0iv" value="false" />
<property role="13i0it" value="false" />
<property role="TrG5h" value="getErrorMessageForElementInCycle" />
<ref role="13i0hy" to="hwgx:2G8yZXxNStd" resolve="getErrorMessageForElementInCycle" />
<node concept="3Tm1VV" id="2G8yZXxNWll" role="1B3o_S" />
<node concept="3clFbS" id="2G8yZXxNWlq" role="3clF47">
<node concept="3cpWs6" id="2G8yZXxNXfd" role="3cqZAp">
<node concept="Xl_RD" id="2G8yZXxNXh1" role="3cqZAk">
<property role="Xl_RC" value="Cyclic dependency makes this type incomplete!" />
</node>
</node>
</node>
<node concept="17QB3L" id="2G8yZXxNWlr" role="3clF45" />
</node>
<node concept="13hLZK" id="6a5SBPfZs1y" role="13h7CW">
<node concept="3clFbS" id="6a5SBPfZs1z" role="2VODD2" />
</node>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,6 @@
<concept id="540871147943773365" name="jetbrains.mps.baseLanguage.collections.structure.SingleArgumentSequenceOperation" flags="nn" index="25WWJ4">
<child id="540871147943773366" name="argument" index="25WWJ7" />
</concept>
<concept id="1204980550705" name="jetbrains.mps.baseLanguage.collections.structure.VisitAllOperation" flags="nn" index="2es0OD" />
<concept id="1151688443754" name="jetbrains.mps.baseLanguage.collections.structure.ListType" flags="in" index="_YKpA">
<child id="1151688676805" name="elementType" index="_ZDj9" />
</concept>
Expand Down Expand Up @@ -2324,99 +2323,6 @@
<ref role="1YaFvo" to="clbe:6a5SBPfXGBP" resolve="SUDeclaration" />
</node>
</node>
<node concept="18kY7G" id="59HbAIOWhug">
<property role="TrG5h" value="check_StructDeclaration" />
<property role="3GE5qa" value="su.struct" />
<node concept="3clFbS" id="59HbAIOWhuh" role="18ibNy">
<node concept="3clFbF" id="59HbAIOWiGX" role="3cqZAp">
<node concept="2OqwBi" id="59HbAIOWRMi" role="3clFbG">
<node concept="2OqwBi" id="59HbAIOWlm4" role="2Oq$k0">
<node concept="2OqwBi" id="59HbAIOWiM$" role="2Oq$k0">
<node concept="1YBJjd" id="59HbAIOWiGW" role="2Oq$k0">
<ref role="1YBMHb" node="59HbAIOWhuj" resolve="sd" />
</node>
<node concept="2qgKlT" id="59HbAIOWjKa" role="2OqNvi">
<ref role="37wK5l" to="2rho:7TdHRrCpjWZ" resolve="membersIncludingTransparent" />
</node>
</node>
<node concept="3zZkjj" id="59HbAIOWvJw" role="2OqNvi">
<node concept="1bVj0M" id="59HbAIOWvJy" role="23t8la">
<node concept="3clFbS" id="59HbAIOWvJz" role="1bW5cS">
<node concept="3clFbF" id="59HbAIOWwbb" role="3cqZAp">
<node concept="1Wc70l" id="59HbAIOWAX0" role="3clFbG">
<node concept="3clFbC" id="59HbAIOWQ6f" role="3uHU7w">
<node concept="1YBJjd" id="59HbAIOWR62" role="3uHU7w">
<ref role="1YBMHb" node="59HbAIOWhuj" resolve="sd" />
</node>
<node concept="2OqwBi" id="59HbAIOWHQE" role="3uHU7B">
<node concept="1PxgMI" id="59HbAIOWGSb" role="2Oq$k0">
<ref role="1PxNhF" to="clbe:5yYXyc4Z0CS" resolve="StructType" />
<node concept="2OqwBi" id="59HbAIOWBSF" role="1PxMeX">
<node concept="37vLTw" id="59HbAIOWBlX" role="2Oq$k0">
<ref role="3cqZAo" node="59HbAIOWvJ$" resolve="it" />
</node>
<node concept="3JvlWi" id="59HbAIOWF81" role="2OqNvi" />
</node>
</node>
<node concept="2qgKlT" id="59HbAIOWPuo" role="2OqNvi">
<ref role="37wK5l" to="2rho:3bHYGwztGSo" resolve="getSUDeclaration" />
</node>
</node>
</node>
<node concept="2OqwBi" id="59HbAIOW_pQ" role="3uHU7B">
<node concept="2OqwBi" id="59HbAIOWwvn" role="2Oq$k0">
<node concept="37vLTw" id="59HbAIOWwba" role="2Oq$k0">
<ref role="3cqZAo" node="59HbAIOWvJ$" resolve="it" />
</node>
<node concept="3JvlWi" id="59HbAIOWz$S" role="2OqNvi" />
</node>
<node concept="1mIQ4w" id="59HbAIOW_YT" role="2OqNvi">
<node concept="chp4Y" id="59HbAIOWApJ" role="cj9EA">
<ref role="cht4Q" to="clbe:5yYXyc4Z0CS" resolve="StructType" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="59HbAIOWvJ$" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="59HbAIOWvJ_" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="2es0OD" id="59HbAIOWTDM" role="2OqNvi">
<node concept="1bVj0M" id="59HbAIOWTDO" role="23t8la">
<node concept="3clFbS" id="59HbAIOWTDP" role="1bW5cS">
<node concept="2MkqsV" id="59HbAIOWUfU" role="3cqZAp">
<node concept="Xl_RD" id="59HbAIOWUJy" role="2MkJ7o">
<property role="Xl_RC" value="struct cannot contain itself (only as a pointer)" />
</node>
<node concept="2OqwBi" id="59HbAIOX15q" role="2OEOjV">
<node concept="37vLTw" id="59HbAIOX0nO" role="2Oq$k0">
<ref role="3cqZAo" node="59HbAIOWTDQ" resolve="it" />
</node>
<node concept="3TrEf2" id="59HbAIOX4t8" role="2OqNvi">
<ref role="3Tt5mk" to="mj1l:hEaDaGor64" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="59HbAIOWTDQ" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="59HbAIOWTDR" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1YaCAy" id="59HbAIOWhuj" role="1YuTPh">
<property role="TrG5h" value="sd" />
<ref role="1YaFvo" to="clbe:5yYXyc4Z0CJ" resolve="StructDeclaration" />
</node>
</node>
<node concept="1YbPZF" id="3qdsM6yQr4m">
<property role="TrG5h" value="typeof_ArbitraryMemeberRef" />
<property role="3GE5qa" value="su" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3099,11 +3099,7 @@
<property role="2c7vTL" value="false" />
<ref role="1sgJKq" node="59HbAIOWeRM" resolve="recursive" />
<node concept="7CXmI" id="59HbAIOXlQy" role="lGtFl">
<node concept="1TM$A" id="1zouAvzWN6p" role="7EUXB">
<node concept="2PYRI3" id="1zouAvzWN6q" role="3lydEf">
<ref role="39XzEq" to="fvu6:59HbAIOWUfU" />
</node>
</node>
<node concept="1TM$A" id="1zouAvzWN6p" role="7EUXB" />
</node>
</node>
</node>
Expand All @@ -3119,13 +3115,6 @@
</node>
</node>
</node>
<node concept="7CXmI" id="59HbAIP7vKX" role="lGtFl">
<node concept="1TM$A" id="1zouAvzRYIW" role="7EUXB">
<node concept="2PYRI3" id="1zouAvzRYIX" role="3lydEf">
<ref role="39XzEq" to="9zoj:59HbAIOYAV$" />
</node>
</node>
</node>
</node>
<node concept="2NXPZ9" id="59HbAIOVXTZ" role="N3F5h">
<property role="TrG5h" value="empty_1397467096947_2" />
Expand All @@ -3138,12 +3127,8 @@
<property role="2caQfQ" value="false" />
<property role="2c7vTL" value="false" />
<ref role="1sgJKq" node="59HbAIOY4sV" resolve="cyclicStructs2" />
</node>
</node>
<node concept="7CXmI" id="59HbAIP7vKG" role="lGtFl">
<node concept="1TM$A" id="1zouAvzUTFN" role="7EUXB">
<node concept="2PYRI3" id="1zouAvzUTFO" role="3lydEf">
<ref role="39XzEq" to="9zoj:59HbAIOYAV$" />
<node concept="7CXmI" id="2G8yZXxP4lH" role="lGtFl">
<node concept="1TM$A" id="2G8yZXxP4lI" role="7EUXB" />
</node>
</node>
</node>
Expand All @@ -3159,12 +3144,8 @@
<property role="2caQfQ" value="false" />
<property role="2c7vTL" value="false" />
<ref role="1sgJKq" node="59HbAIOY4p_" resolve="cyclicStructs1" />
</node>
</node>
<node concept="7CXmI" id="59HbAIP7vMo" role="lGtFl">
<node concept="1TM$A" id="1zouAvzWsXU" role="7EUXB">
<node concept="2PYRI3" id="1zouAvzWsXV" role="3lydEf">
<ref role="39XzEq" to="9zoj:59HbAIOYAV$" />
<node concept="7CXmI" id="2G8yZXxP4mG" role="lGtFl">
<node concept="1TM$A" id="2G8yZXxP4mH" role="7EUXB" />
</node>
</node>
</node>
Expand Down
Loading

0 comments on commit c22d98a

Please sign in to comment.