MCPcopy Index your code
hub / github.com/nodejs/node / ReadUpToGC

Method ReadUpToGC

deps/v8/tools/profiling/ll_prof.py:377–432  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

375 ("address", pointer_type)])
376
377 def ReadUpToGC(self):
378 while self.log_pos < self.log.size():
379 tag = self.log[self.log_pos:self.log_pos + 1]
380 self.log_pos += 1
381
382 if tag == LogReader._CODE_MOVING_GC_TAG:
383 return
384
385 if tag == LogReader._CODE_CREATE_TAG:
386 event = self.code_create_struct.from_buffer(self.log, self.log_pos)
387 self.log_pos += ctypes.sizeof(event)
388 start_address = event.code_address
389 end_address = start_address + event.code_size
390 name = self.log[self.log_pos:self.log_pos + event.name_size].decode()
391 origin = JS_ORIGIN
392 self.log_pos += event.name_size
393 origin_offset = self.log_pos
394 self.log_pos += event.code_size
395 code = Code(name, start_address, end_address, origin, origin_offset)
396 conficting_code = self.code_map.Find(start_address)
397 if conficting_code:
398 if not (conficting_code.start_address == code.start_address and
399 conficting_code.end_address == code.end_address):
400 self.code_map.Remove(conficting_code)
401 else:
402 LogReader._HandleCodeConflict(conficting_code, code)
403 # TODO(vitalyr): this warning is too noisy because of our
404 # attempts to reconstruct code log from the snapshot.
405 # print >>sys.stderr, \
406 # "Warning: Skipping duplicate code log entry %s" % code
407 continue
408 self.code_map.Add(code)
409 continue
410
411 if tag == LogReader._CODE_MOVE_TAG:
412 event = self.code_move_struct.from_buffer(self.log, self.log_pos)
413 self.log_pos += ctypes.sizeof(event)
414 old_start_address = event.from_address
415 new_start_address = event.to_address
416 if old_start_address == new_start_address:
417 # Skip useless code move entries.
418 continue
419 code = self.code_map.Find(old_start_address)
420 if not code:
421 print("Warning: Not found %x" % old_start_address, file=sys.stderr)
422 continue
423 assert code.start_address == old_start_address, \
424 "Inexact move address %x for %s" % (old_start_address, code)
425 self.code_map.Remove(code)
426 size = code.end_address - code.start_address
427 code.start_address = new_start_address
428 code.end_address = new_start_address + size
429 self.code_map.Add(code)
430 continue
431
432 assert False, "Unknown tag %s" % tag
433
434 def Dispose(self):

Callers 1

ll_prof.pyFile · 0.80

Calls 8

_HandleCodeConflictMethod · 0.80
CodeClass · 0.70
decodeMethod · 0.65
printFunction · 0.50
sizeMethod · 0.45
FindMethod · 0.45
RemoveMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected