Lines Matching refs:code
8 # * Redistributions of source code must retain the above copyright
220 """Group of adjacent code objects."""
242 def Add(self, code):
243 self.code_objects.append(code)
245 def Remove(self, code):
246 self.code_objects.remove(code)
250 for i, code in enumerate(code_objects):
251 if code.start_address <= pc < code.end_address:
252 code_objects[0], code_objects[i] = code, code_objects[0]
253 return code
268 def Add(self, code, max_pages=-1):
269 page_id = CodePage.PageId(code.start_address)
270 limit_id = CodePage.PageId(code.end_address + CodePage.SIZE - 1)
275 max_pages, code.name, code.origin), file=sys.stderr)
282 page.Add(code)
285 self.min_address = min(self.min_address, code.start_address)
286 self.max_address = max(self.max_address, code.end_address)
288 def Remove(self, code):
289 page_id = CodePage.PageId(code.start_address)
290 limit_id = CodePage.PageId(code.end_address + CodePage.SIZE - 1)
297 page.Remove(code)
304 for code in page:
305 if CodePage.PageAddress(code.start_address) == page.address:
306 yield code
309 for code in self.AllCode():
310 if code.IsUsed():
311 yield code
314 for code in self.AllCode():
315 print(code)
327 """Generic info about generated code objects."""
391 code = Code(name, start_address, end_address, origin, origin_offset)
394 if not (conficting_code.start_address == code.start_address and
395 conficting_code.end_address == code.end_address):
398 LogReader._HandleCodeConflict(conficting_code, code)
400 # attempts to reconstruct code log from the snapshot.
402 # "Warning: Skipping duplicate code log entry %s" % code
404 self.code_map.Add(code)
413 # Skip useless code move entries.
415 code = self.code_map.Find(old_start_address)
416 if not code:
419 assert code.start_address == old_start_address, \
420 "Inexact move address %x for %s" % (old_start_address, code)
421 self.code_map.Remove(code)
422 size = code.end_address - code.start_address
423 code.start_address = new_start_address
424 code.end_address = new_start_address + size
425 self.code_map.Add(code)
444 "Conficting code log entries %s and %s" % (old_code, new_code)
795 code = None
802 if code:
803 code.end_address = start_address
804 code_map.Add(code, 16)
805 code = Code(name, start_address, end_address, "kernel", 0)
811 used_code = [code for code in code_map.UsedCode()]
813 for i, code in enumerate(used_code):
814 code_ticks = code.self_ticks
816 code.FullName(), code.origin))
818 code.PrintAnnotated(arch, options)
831 for code in code_map.UsedCode():
832 if code.self_ticks < 10:
834 print("n%d [shape=box,label=\"%s\"];" % (code.id, code.name))
835 if code.callee_ticks:
836 for callee, ticks in code.callee_ticks.iteritems():
837 print("n%d -> n%d [label=\"%d\"];" % (code.id, callee.id, ticks))
910 print("Generated code architecture: %s" % log_reader.arch)
914 # Process the code and trace logs.
943 code = code_map.Find(sample.ip)
944 if code:
945 code.Tick(sample.ip)
946 if code.codetype == Code.OPTIMIZED:
948 elif code.codetype == Code.FULL_CODEGEN:
950 elif code.codetype == Code.V8INTERNAL:
954 if not library_repo.Tick(sample.ip) and not code:
960 if code:
961 caller_code.CalleeTick(code)
962 code = caller_code
983 PrintTicks(optimized_ticks, ticks, "ticks in optimized code")
984 PrintTicks(generated_ticks, ticks, "ticks in other lazily compiled code")