Expression tree interning

US10318511B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10318511-B2
Application numberUS-201514952589-A
CountryUS
Kind codeB2
Filing dateNov 25, 2015
Priority dateNov 25, 2015
Publication dateJun 11, 2019
Grant dateJun 11, 2019

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

In non-limiting examples of the present disclosure, systems and methods for interning expression trees are provided. Hash code for a plurality of expression tree nodes is recursively computed and a determination is made as to whether hash code for each of a plurality of expression tree nodes is stored in a cached intern pool. Upon determining that at least one of a plurality of expression tree nodes is not stored in a cached intern pool, one or more functions may be run on at least one of a plurality of expression tree nodes for determining whether at least one of a plurality of expression tree nodes should be stored in a cached intern pool. Normalization of expression trees may also be employed to effectuate effective sharing of expression tree nodes.

First claim

Opening claim text (preview).

We claim: 1. A system comprising: at least one processor; and a memory operatively connected with the at least one processor, the memory comprising computer executable instructions that, when executed by the at least one processor, perform a method comprising: recursively computing hash code for a plurality of expression tree nodes of an expression tree; determining whether hash code for each of the plurality of expression tree nodes is stored in a cache; upon determining that at least one of the plurality of expression tree nodes is not stored in the cache, determining whether the at least one of the plurality of expression tree nodes should be stored in the cache; and based on the determination, storing the at least one of the plurality of expression tree nodes in the cache, wherein the at least one of the plurality of expression tree nodes stored in the cache may be reused to construct additional expression trees. 2. The system according to claim 1 , further comprising normalizing the expression tree prior to recursively computing the hash code. 3. The system according to claim 1 , further comprising, determining that at least one node of the expression trees is sharable amongst a plurality of expression trees. 4. The system according to claim 3 , wherein determining that at least one node of the expression tree is sharable amongst the plurality of expression trees further comprises determining whether the at least one sharable node of the expression tree is desirable to share. 5. The system according to claim 4 , wherein determining whether the at least one sharable node of the expression tree is desirable to share further comprises: analyzing the memory costs associated with storing the at least one sharable node; and performing a live metrics analysis to determine how frequently the at least one sharable node is utilized. 6. The system according to claim 5 , further comprising performing a live metrics analysis to determine whether the at least one sharable node is amongst a most recently used expression tree node. 7. The system according to claim 3 , wherein upon determining that at least one node of the expression tree is sharable amongst a plurality of expression trees, determining whether at least one shared parameter associated with at least one of the plurality of expression trees from the cache should be evicted. 8. The system according to claim 7 , further comprising evicting at least one shared parameter associated with at least one of the plurality of expression trees from the cache. 9. A computer-implemented method for interning expression trees comprising: recursively computing at least one hash codes for a plurality of expression tree nodes of an expression tree; determining whether the at least one hash code for each of the plurality of expression tree nodes is stored in one or more intern pools; upon determining that at least one of the plurality of expression tree nodes is not stored in the one or more intern pools, running at least one function on at least one of the plurality of tree nodes for determining whether the at least one of the plurality of expression tree nodes should be stored in the one or more intern pools; and based on the determination, storing the at least one of the plurality of expression tree nodes in the one or more intern pools, wherein the at least one of the plurality of expression tree nodes stored in the cache may be reused to construct additional expression trees. 10. The computer-implemented method according to claim 9 , further comprising performing normalization amongst the plurality of expression trees that have matching parameter types. 11. The computer implemented method according to claim 10 , wherein performing normalization amongst the plurality of expression trees further comprises reusing at least one inner lambda expression for at least one portion of at least one of the plurality of expression trees. 12. The computer implemented method according to claim 11 , wherein performing normalization amongst the plurality of expression trees further comprises utilizing De Bruijn indices to erase lambda parameters based on names by an index-based scheme. 13. The computer implemented method according to claim 9 , further comprising, determining that at least one node of the expression trees is sharable amongst a plurality of expression trees. 14. The computer implemented method according to claim 13 , wherein determining that at least one node of the expression tree is sharable amongst a plurality of expression trees further comprises determining whether the at least one sharable node of the expression tree is desirable to share. 15. The computer implemented method according to claim 14 , wherein determining whether the at least one sharable node of the expression tree is desirable to share further comprises: analyzing the memory cost associated with storing the at least one sharable node; and performing a live metrics analysis to determine how frequently the at least one sharable node is utilized. 16. The computer implemented method according to claim 15 , further comprising performing a live metrics analysis to determine whether the at least one sharable node is amongst a most recently used expression tree node. 17. The computer implemented method according to claim 13 , wherein upon determining that at least one node of the expression tree is sharable amongst a plurality of expression trees, determining whether at least one shared parameter associated with at least one of the plurality of expression trees from the cache should be evicted. 18. The computer implemented method according to claim 17 , further comprising evicting at least one shared parameter associated with at least one of the plurality of expression trees from the cache. 19. The computer implemented method according to claim 17 , wherein determining whether at least one shared parameter associated with at least one of the plurality of expression trees from the cache should be evicted further comprises: analyzing the memory cost associated with storing the at least one shared parameter; and calculating how frequently the at least one shared parameter has been utilized. 20. A computer-storage medium encoding computer executable instructions that, when executed by at least one processor, perform a method for interning expression trees comprising: recursively computing hash code for a plurality of expression tree nodes of an expression tree; determining whether hash code for each of the plurality of expression tree nodes is stored in an intern pool; upon determining that at least one of the plurality of expression tree nodes is not stored in the intern pool, running at least one function on at least one of the plurality of tree nodes for determining whether the at least one of the plurality of expression tree nodes should be stored in the intern pool; and based on the determination, storing the at least one of the plurality of expression tree nodes in the intern pool, wherein the at least one of the plurality of expression tree nodes stored in the cache may be reused to construct additional expression trees.

Assignees

Inventors

Classifications

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10318511B2 cover?
In non-limiting examples of the present disclosure, systems and methods for interning expression trees are provided. Hash code for a plurality of expression tree nodes is recursively computed and a determination is made as to whether hash code for each of a plurality of expression tree nodes is stored in a cached intern pool. Upon determining that at least one of a plurality of expression tree …
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F16/2246. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jun 11 2019 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).