|
From: <fra...@us...> - 2009-08-10 07:42:51
|
Revision: 1817
http://javapathfinder.svn.sourceforge.net/javapathfinder/?rev=1817&view=rev
Author: frankrimlinger
Date: 2009-08-10 07:42:45 +0000 (Mon, 10 Aug 2009)
Log Message:
-----------
The tree filter still exhibited some bunching up, eliminated by further gradation of the WILD key type. The idea is to consider mutually exclusive classes of requirements. A subset of requirements is partitioned by the relation r~s if some Hitem satisfies both r and s. Each partition then becomes a type, and the balance of the requirements contribute a WILD type. The symbol and typing requirements in particular have easily deduced mutually exclusive classes. Accordingly, the type of an argument is the type of its requirement if present, otherwise WILD.
With all this in place, the filter is now quite respectable. Here are the stats:
Max bucket size: 34
Number of oversize buckets: 11
Number of buckets: 3589
Average bucket size: 1.05
A printout of the offending buckets show that more work could be done to split them, but clearly into diminishing returns.
It remains to write the expression matching code against the filter tree and test drive the rewriter.
Modified Paths:
--------------
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/BaseStack.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/BinderFrame.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/BinderHeap.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/BinderStack.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/BinderStat.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/ConjunctionSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/EquationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/HeapItemSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/HeapObjectSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/InequationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/LocalVar.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/OpStack.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/OpVar.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/binder/StatItemSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/BaseInvariantAgentProxySym.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/InstanceManagerProxySymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/LoopInvocationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/MethodInvocationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/ModuleHypothesisSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/ModuleInvocationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/ParamSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/function/UserInvocationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/AlphaSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/CodeSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/FoundationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/GateSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/GenericMethodNameSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/InstructionNameReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/InstructionSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/InvocationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/LoopSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/MethodEntrySymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/MethodInstanceSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/MethodSymType.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/ModuleReadOnlySymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/PathSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/ResolvedInvocationNameSym.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/StringReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/TranslationSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/UconSymReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/ClassNameSymbolReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/FrameReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/FunctionReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/HeapReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/InvocationNameSymbolReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/PredTransformerReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/PredicateReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/StackReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/StringValue.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/UconReq.java
branches/mango/Mango/Mango/src/mango/worker/engine/hash/Cons.java
branches/mango/Mango/Mango/src/mango/worker/engine/hash/Kons.java
branches/mango/Mango/Mango/src/mango/worker/engine/rule/Req.java
branches/mango/Mango/Mango/src/mango/worker/engine/rule/RuleFilter.java
branches/mango/Mango/Mango/src/mango/worker/engine/rule/RuleFilterManager.java
branches/mango/Mango/Mango/src/mango/worker/msg/NewWorkerMsg.java
Added Paths:
-----------
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/LocalVarReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/OpVarReq.java
branches/mango/Mango/Mango/src/mango/worker/engine/rule/RuleFilterStat.java
Removed Paths:
-------------
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/UnknownLocalVarReq.java
branches/mango/Mango/Mango/src/mango/ruleRequirement/typing/UnknownOpVarReq.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|