#include "src/codegen/source-position-table.h"
#include "src/base/export-template.h"
#include "src/base/logging.h"
#include "src/common/assert-scope.h"
#include "src/heap/local-factory-inl.h"
#include "src/objects/objects-inl.h"
#include "src/objects/objects.h"
namespace v8 {
namespace internal {
namespace {
using MoreBit = base::BitField8<bool, 7, 1>;
using ValueBits = base::BitField8<unsigned, 0, 7>;
void AddAndSetEntry(PositionTableEntry* value,
const PositionTableEntry& other) { … }
void SubtractFromEntry(PositionTableEntry* value,
const PositionTableEntry& other) { … }
template <typename T>
void EncodeInt(ZoneVector<uint8_t>* bytes, T value) { … }
void EncodeEntry(ZoneVector<uint8_t>* bytes, const PositionTableEntry& entry) { … }
template <typename T>
T DecodeInt(base::Vector<const uint8_t> bytes, int* index) { … }
void DecodeEntry(base::Vector<const uint8_t> bytes, int* index,
PositionTableEntry* entry) { … }
base::Vector<const uint8_t> VectorFromByteArray(
Tagged<TrustedByteArray> byte_array) { … }
#ifdef ENABLE_SLOW_DCHECKS
void CheckTableEquals(const ZoneVector<PositionTableEntry>& raw_entries,
SourcePositionTableIterator* encoded) {
auto raw = raw_entries.begin();
for (; !encoded->done(); encoded->Advance(), raw++) {
DCHECK(raw != raw_entries.end());
DCHECK_EQ(encoded->code_offset(), raw->code_offset);
DCHECK_EQ(encoded->source_position().raw(), raw->source_position);
DCHECK_EQ(encoded->is_statement(), raw->is_statement);
}
DCHECK(raw == raw_entries.end());
}
#endif
}
SourcePositionTableBuilder::SourcePositionTableBuilder(
Zone* zone, SourcePositionTableBuilder::RecordingMode mode)
: … { … }
void SourcePositionTableBuilder::AddPosition(size_t code_offset,
SourcePosition source_position,
bool is_statement) { … }
V8_INLINE void SourcePositionTableBuilder::AddEntry(
const PositionTableEntry& entry) { … }
template <typename IsolateT>
Handle<TrustedByteArray> SourcePositionTableBuilder::ToSourcePositionTable(
IsolateT* isolate) { … }
template EXPORT_TEMPLATE_DEFINE(…)
Handle<TrustedByteArray> SourcePositionTableBuilder::ToSourcePositionTable(
Isolate* isolate);
template EXPORT_TEMPLATE_DEFINE(…)
Handle<TrustedByteArray> SourcePositionTableBuilder::ToSourcePositionTable(
LocalIsolate* isolate);
base::OwnedVector<uint8_t>
SourcePositionTableBuilder::ToSourcePositionTableVector() { … }
void SourcePositionTableIterator::Initialize() { … }
SourcePositionTableIterator::SourcePositionTableIterator(
Tagged<TrustedByteArray> byte_array, IterationFilter iteration_filter,
FunctionEntryFilter function_entry_filter)
: … { … }
SourcePositionTableIterator::SourcePositionTableIterator(
Handle<TrustedByteArray> byte_array, IterationFilter iteration_filter,
FunctionEntryFilter function_entry_filter)
: … { … }
SourcePositionTableIterator::SourcePositionTableIterator(
base::Vector<const uint8_t> bytes, IterationFilter iteration_filter,
FunctionEntryFilter function_entry_filter)
: … { … }
void SourcePositionTableIterator::Advance() { … }
}
}