Ejemplo n.º 1
0
void IRMetadataUpdater::register_inst(const Vinstr& inst) {
  // Update HHIR mappings for AsmInfo.
  if (m_asm_info) {
    auto& snippets = block_info();
    auto const frontier = m_env.cb->frontier();

    if (!snippets.empty()) {
      auto& snip = snippets.back();
      snip.range = TcaRange { snip.range.start(), frontier };
    }
    snippets.push_back(
      Snippet { inst.origin, TcaRange { frontier, nullptr } }
    );
  }
  m_origin = inst.origin;

  // Update HHBC mappings for the TransDB.
  if (m_bcmap && m_origin) {
    auto const sk = inst.origin->marker().sk();
    if (m_bcmap->empty() ||
        m_bcmap->back().md5 != sk.unit()->md5() ||
        m_bcmap->back().bcStart != sk.offset()) {
      m_bcmap->push_back(TransBCMapping{
        sk.unit()->md5(),
        sk.offset(),
        m_env.text.main().code.frontier(),
        m_env.text.cold().code.frontier(),
        m_env.text.frozen().code.frontier()
      });
    }
  }
}
Ejemplo n.º 2
0
RawArray<const Vector<super_t,2>,4> readable_block_store_t::get_raw(section_t section, Vector<uint8_t,4> block) const {
  const auto& info = block_info(section,block);
  GEODE_ASSERT(!info.missing_dimensions);
  const auto shape = block_shape(section.shape(),block);
  GEODE_ASSERT(0<=info.nodes.lo && info.nodes.hi<=all_data.size());
  return RawArray<const Vector<super_t,2>,4>(shape,all_data.data()+info.nodes.lo);
}
Ejemplo n.º 3
0
void IRMetadataUpdater::register_block_end() {
  if (!m_asm_info) return;
  auto& snippets = block_info();

  if (!snippets.empty()) {
    auto& snip = snippets.back();
    snip.range = TcaRange { snip.range.start(), m_env.cb->frontier() };
  }
}
Ejemplo n.º 4
0
void restart_block_store_t::set(local_id_t local_id, RawArray<Vector<super_t,2>> new_data) {
  const auto& info = block_info(local_id);
  const int flat_id = info.flat_id;
  const event_t event = block_event(info.section,info.block);
#if !PENTAGO_MPI_COMPRESS
  const auto local_data = all_data.slice(info.nodes);
  GEODE_ASSERT(local_data.size()==new_data.size());
  spin_t spin(info.lock);
  GEODE_ASSERT(info.missing_dimensions);
  info.missing_dimensions = 0;
  local_data = new_data;
#else // PENTAGO_MPI_COMPRESS
  spin_t spin(info.lock);
  GEODE_ASSERT(info.missing_dimensions);
  info.missing_dimensions = 0;
  compacting_store_t::lock_t alock(store,flat_id);
  // Compress data into place
  const auto new_compressed = local_fast_compress(new_data,event);
  thread_time_t time(compacting_kind,event);
  alock.set(new_compressed);
#endif
}
Ejemplo n.º 5
0
RawArray<const uint8_t> readable_block_store_t::get_compressed(local_id_t local_id) const {
  const auto& info = block_info(local_id);
  GEODE_ASSERT(!info.missing_dimensions);
  return store.get_frozen(info.flat_id);
}
Ejemplo n.º 6
0
RawArray<Vector<super_t,2>,4> readable_block_store_t::uncompress_and_get(local_id_t local_id, event_t event) const {
  const auto flat = uncompress_and_get_flat(local_id,event);
  const auto& info = block_info(local_id);
  const auto shape = block_shape(info.section.shape(),info.block);
  return RawArray<Vector<super_t,2>,4>(shape,flat.data());
}
Ejemplo n.º 7
0
event_t readable_block_store_t::local_block_lines_event(local_id_t local_id, dimensions_t dimensions) const {
  const auto& info = block_info(local_id);
  return block_lines_event(info.section,dimensions,info.block);
}
Ejemplo n.º 8
0
event_t readable_block_store_t::local_block_line_event(local_id_t local_id, uint8_t dimension) const {
  if (dimension>=4)
    die("readable_block_store_t::local_block_line_event: local_id %d, blocks %d, dimension %d",local_id.id,total_blocks(),dimension);
  const auto& info = block_info(local_id);
  return block_line_event(info.section,dimension,info.block);
}
Ejemplo n.º 9
0
event_t readable_block_store_t::local_block_event(local_id_t local_id) const {
  const auto& info = block_info(local_id);
  return block_event(info.section,info.block);
}
Ejemplo n.º 10
0
void readable_block_store_t::assert_contains(section_t section, Vector<uint8_t,4> block) const {
  block_info(section,block);
}
void encoded_block::release() {
  m_block.m_data.reset();
  m_block.m_block_info = block_info();
}