Carl Friedrich Bolz avatar Carl Friedrich Bolz committed 3dbbdca

add some helpful comments

Comments (0)

Files changed (1)

pypy/jit/metainterp/heapcache.py

         self.heap_cache.setdefault(descr, {})[box] = fieldbox
 
     def setfield(self, box, descr, fieldbox):
+        # slightly subtle logic here
         d = self.heap_cache.get(descr, None)
         new_d = {box: fieldbox}
+        # a write to an arbitrary box, all other boxes can alias this one
         if not d or box not in self.new_boxes:
+            # therefore we throw away the cache
             self.heap_cache[descr] = new_d
             return
+        # the object we are writing to is freshly allocated
+        # only remove some boxes from the cache
         for frombox, tobox in d.iteritems():
+            # the other box is *also* freshly allocated
+            # therefore frombox and box *must* contain different objects
+            # thus we can keep it in the cache
             if frombox in self.new_boxes:
                 new_d[frombox] = tobox
         self.heap_cache[descr] = new_d
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.