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() }); } } }
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); }
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() }; } }
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 }
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); }
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()); }
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); }
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); }
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); }
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(); }