bool read() { if (!reader_.more()) return false; offset_ = reader_.readUnsigned(); extOffset_ = reader_.readUnsigned(); return true; }
RResumePoint::RResumePoint(CompactBufferReader &reader) { pcOffset_ = reader.readUnsigned(); numOperands_ = reader.readUnsigned(); JitSpew(JitSpew_IonSnapshots, "Read RResumePoint (pc offset %u, nslots %u)", pcOffset_, numOperands_); }
static void TraceDataRelocations(JSTracer *trc, uint8 *buffer, CompactBufferReader &reader) { while (reader.more()) { size_t offset = reader.readUnsigned(); void **ptr = JSC::X86Assembler::getPointerRef(buffer + offset); // No barrier needed since these are constants. gc::MarkThingOrValueUnbarriered(trc, reinterpret_cast<uintptr_t *>(ptr), "imm-gc-word"); } }
void RInstruction::readRecoverData(CompactBufferReader &reader, RInstructionStorage *raw) { uint32_t op = reader.readUnsigned(); switch (Opcode(op)) { # define MATCH_OPCODES_(op) \ case Recover_##op: \ static_assert(sizeof(R##op) <= sizeof(RInstructionStorage), \ "Storage space is too small to decode R" #op " instructions."); \ new (raw->addr()) R##op(reader); \ break; RECOVER_OPCODE_LIST(MATCH_OPCODES_) # undef MATCH_OPCODES_ case Recover_Invalid: default: MOZ_CRASH("Bad decoding of the previous instruction?"); } }
RArrayState::RArrayState(CompactBufferReader &reader) { numElements_ = reader.readUnsigned(); }
RObjectState::RObjectState(CompactBufferReader &reader) { numSlots_ = reader.readUnsigned(); }
RNewArray::RNewArray(CompactBufferReader &reader) { count_ = reader.readUnsigned(); allocatingBehaviour_ = AllocatingBehaviour(reader.readByte()); }
RHypot::RHypot(CompactBufferReader& reader) : numOperands_(reader.readUnsigned()) { }
RNewArray::RNewArray(CompactBufferReader& reader) { count_ = reader.readUnsigned(); }
RNewArray::RNewArray(CompactBufferReader &reader) { count_ = reader.readUnsigned(); isAllocating_ = reader.readByte(); }