A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/InterpFrame_8cpp_source.html below:

clang: lib/AST/ByteCode/InterpFrame.cpp Source File

23using namespace clang

;

27

: Caller(nullptr), S(S), Depth(0),

Func

(nullptr), RetPC(

CodePtr

()),

28

ArgSize(0), Args(nullptr), FrameOffset(0), IsBottom(

true

) {}

32

: Caller(Caller), S(S), Depth(Caller ? Caller->Depth + 1 : 0),

Func

(

Func

),

33

RetPC(RetPC), ArgSize(ArgSize), Args(static_cast<char *>(S.Stk.top())),

34

FrameOffset(S.Stk.size()), IsBottom(!Caller) {

38 unsigned

FrameSize =

Func

->getFrameSize();

42

Locals = std::make_unique<char[]>(FrameSize);

45 new

(localBlock(Local.Offset))

Block

(S.Ctx.getEvalID(), Local.Desc);

63

RVOPtr = stackRef<Pointer>(0);

65 if

(

Func

->hasThisPointer()) {

67

This = stackRef<Pointer>(

sizeof

(

Pointer

));

69

This = stackRef<Pointer>(0);

74 for

(

auto

&Param : Params)

107template

<

typename

T>

110 V

.toAPValue(ASTCtx).printPretty(OS, ASTCtx, Ty);

137 bool

IsMemberCall = isa<CXXMethodDecl>(F) && !isa<CXXConstructorDecl>(F) &&

138

cast<CXXMethodDecl>(F)->isImplicitObjectMemberFunction();

140 if

(

const auto

*MCE = dyn_cast_if_present<CXXMemberCallExpr>(

CallExpr

)) {

141 const Expr

*Object = MCE->getImplicitObjectArgument();

142

Object->printPretty(OS,

nullptr

,

145 if

(Object->getType()->isPointerType())

149

}

else if

(

const auto

*OCE =

150

dyn_cast_if_present<CXXOperatorCallExpr>(

CallExpr

)) {

151

OCE->getArg(0)->printPretty(OS,

nullptr

,

155

}

else if

(

const auto

*M = dyn_cast<CXXMethodDecl>(F)) {

171 for

(

unsigned

I = 0, N = F->

getNumParams

(); I < N; ++I) {

206

assert(Offset < Func->getFrameSize() &&

"Invalid local offset."

);

207 return Pointer

(localBlock(Offset));

212 if

(

auto

Pt = Params.find(Off); Pt != Params.end())

213 return Pointer

(

reinterpret_cast<Block

*

>

(Pt->second.get()));

217 size_t

BlockSize =

sizeof

(

Block

) + Desc.second->getAllocSize();

218 auto

Memory = std::make_unique<char[]>(BlockSize);

223 TYPE_SWITCH

(Desc.first, new (B->data())

T

(stackRef<T>(Off)));

226

Params.insert({Off, std::move(Memory)});

278 if

(DC->isStdNamespace())

Defines the clang::ASTContext interface.

Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate....

Defines the clang::Expr interface and subclasses for C++ expressions.

static void print(llvm::raw_ostream &OS, const T &V, ASTContext &ASTCtx, QualType Ty)

static bool shouldSkipInBacktrace(const Function *F)

static bool funcHasUsableBody(const Function *F)

#define TYPE_SWITCH(Expr, B)

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

QualType getRecordType(const RecordDecl *Decl) const

QualType getLValueReferenceType(QualType T, bool SpelledAsLValue=true) const

Return the uniqued reference to the type for an lvalue reference to the specified type.

const clang::PrintingPolicy & getPrintingPolicy() const

CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).

DeclContext - This is used only as base class of specific decl types that can act as declaration cont...

DeclContext * getParent()

getParent - Returns the containing DeclContext.

bool isImplicit() const

isImplicit - Indicates whether the declaration was implicitly generated by the implementation.

OverloadedOperatorKind getCXXOverloadedOperator() const

If this name is the name of an overloadable operator in C++ (e.g., operator+), retrieve the kind of o...

This represents one expression.

Represents a function declaration or definition.

const ParmVarDecl * getParamDecl(unsigned i) const

unsigned getNumParams() const

Return the number of parameters this function must have based on its FunctionType.

void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const override

Appends a human-readable name for this declaration into the given stream.

DeclarationName getDeclName() const

Get the actual, stored name of the declaration, which may be a special name.

A (possibly-)qualified type.

Encodes a location in the source.

A trivial tuple used to represent a source range.

A memory block, either on the stack or in the heap.

void invokeCtor()

Invokes the constructor.

Pointer into the code segment.

std::optional< PrimType > classify(QualType T) const

Classifies a type.

unsigned getEvalID() const

Base class for stack frames, shared between VM and walker.

Scope & getScope(unsigned Idx)

Returns a specific scope.

bool isDestructor() const

Checks if the function is a destructor.

bool isConstructor() const

Checks if the function is a constructor.

const FunctionDecl * getDecl() const

Returns the original FunctionDecl.

bool hasThisPointer() const

bool isLambdaStaticInvoker() const

Returns whether this function is a lambda static invoker, which we generate custom byte code for.

ParamDescriptor getParamDescriptor(unsigned Offset) const

Returns a parameter descriptor.

llvm::iterator_range< llvm::SmallVector< Scope, 2 >::const_iterator > scopes() const

Range over the scope blocks.

bool hasRVO() const

Checks if the first argument is a RVO pointer.

Frame storing local variables.

InterpFrame(InterpState &S)

Bottom Frame.

const Expr * getExpr(CodePtr PC) const

InterpFrame * Caller

The frame of the previous function.

virtual SourceInfo getSource(CodePtr PC) const

Map a location to a source.

CodePtr getRetPC() const

Returns the return address of the frame.

SourceLocation getLocation(CodePtr PC) const

~InterpFrame()

Destroys the frame, killing all live pointers to stack slots.

const Function * getFunction() const

Returns the current function.

SourceRange getRange(CodePtr PC) const

Pointer getLocalPointer(unsigned Offset) const

Returns a pointer to a local variables.

Frame * getCaller() const override

Returns the parent frame object.

void destroy(unsigned Idx)

Invokes the destructors for a scope.

Pointer getParamPointer(unsigned Offset)

Returns a pointer to an argument - lazily creates a block.

const FunctionDecl * getCallee() const override

Returns the caller.

bool isStdFunction() const

void initScope(unsigned Idx)

SourceRange getCallRange() const override

Returns the location of the call to the frame.

void describe(llvm::raw_ostream &OS) const override

Describes the frame with arguments for diagnostic purposes.

Context & Ctx

Interpreter Context.

ASTContext & getASTContext() const override

SourceInfo getSource(const Function *F, CodePtr PC) const override

Delegates source mapping to the mapper.

SourceLocation EvalLocation

Source location of the evaluating expression.

void deallocate(Block *B)

Deallocates a pointer.

A pointer to a memory block, live or dead.

llvm::iterator_range< LocalVectorTy::const_iterator > locals() const

Describes the statement/declaration an opcode was generated from.

SourceLocation getLocation(const Function *F, CodePtr PC) const

Returns the location from which an opcode originates.

SourceRange getRange(const Function *F, CodePtr PC) const

const Expr * getExpr(const Function *F, CodePtr PC) const

Returns the expression if an opcode belongs to one, null otherwise.

constexpr size_t align(size_t Size)

Aligns a size to the pointer alignment.

PrimType

Enumeration of the primitive types of the VM.

size_t primSize(PrimType Type)

Returns the size of a primitive type in bytes.

The JSON file list parser is used to communicate input to InstallAPI.

@ Result

The result type of a method or function.

const FunctionProtoType * T

__UINTPTR_TYPE__ uintptr_t

An unsigned integer type with the property that any valid pointer to void can be converted to this ty...

Inline descriptor embedded in structures and arrays.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4