20 :
Parent(
Parent), M(M),
P(
P), Stk(Stk), Ctx(Ctx), Current(nullptr) {}
54 char *Memory =
reinterpret_cast<char *
>(malloc(
sizeof(
DeadBlock) + Size));
55 auto *D =
new (Memory)
DeadBlock(DeadBlocks, B);
This represents one expression.
A (possibly-)qualified type.
The base class of the type hierarchy.
A memory block, either on the stack or in the heap.
unsigned getSize() const
Returns the size of the block.
Descriptor * getDescriptor() const
Returns the block's descriptor.
char * data()
Returns a pointer to the stored data.
bool hasPointers() const
Checks if the block has any live pointers.
Holds all information required to evaluate constexpr code in a module.
Descriptor for a dead block.
Base class for stack frames, shared between VM and walker.
Frame storing local variables.
InterpFrame * Caller
The frame of the previous function.
Stack frame storing temporaries and parameters.
bool reportOverflow(const Expr *E, const llvm::APSInt &Value)
Reports overflow and return true if evaluation should continue.
bool noteUndefinedBehavior() override
Frame * getCurrentFrame() override
InterpFrame * Current
The current frame.
InterpState(State &Parent, Program &P, InterpStack &Stk, Context &Ctx, SourceMapper *M=nullptr)
void deallocate(Block *B)
Deallocates a pointer.
The program contains and links the bytecode for all functions.
Interface for classes which map locations to sources.
Interface for the VM to interact with the AST walker's context.
virtual Frame * getCurrentFrame()=0
OptionalDiagnostic CCEDiag(SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0)
Diagnose that the evaluation does not produce a C++11 core constant expression.
Describes a memory block created by an allocation site.