MCPcopy Create free account
hub / github.com/beefytech/Beef / GetSymbol

Method GetSymbol

IDEHelper/Backend/BeCOFFObject.cpp:2443–2479  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2441}
2442
2443BeMCSymbol* BeCOFFObject::GetSymbol(BeValue* value, bool allowCreate)
2444{
2445 /*auto itr = mSymbolMap.find(value);
2446 if (itr != mSymbolMap.end())
2447 return itr->second;*/
2448 BeMCSymbol** symbolPtr = NULL;
2449 if (mSymbolMap.TryGetValue(value, &symbolPtr))
2450 return *symbolPtr;
2451
2452 if (allowCreate)
2453 {
2454 if (auto func = BeValueDynCast<BeFunction>(value))
2455 {
2456 mFuncWorkList.Add(func);
2457
2458 BeMCSymbol* sym = mSymbols.Alloc();
2459 sym->mType = func->GetType();
2460 sym->mName = func->mName;
2461 sym->mIsStatic = func->mLinkageType == BfIRLinkageType_Internal;
2462 if (func->mBlocks.empty())
2463 {
2464 sym->mSymKind = BeMCSymbolKind_External;
2465 }
2466 else
2467 {
2468 sym->mSymKind = BeMCSymbolKind_Function;
2469 }
2470 sym->mIdx = (int)mSymbols.size() - 1;
2471 sym->mBeFunction = func;
2472
2473 mSymbolMap[func] = sym;
2474 return sym;
2475 }
2476 }
2477
2478 return NULL;
2479}
2480
2481BeMCSymbol* BeCOFFObject::GetSymbolRef(const StringImpl& name)
2482{

Callers 2

GetOperandMethod · 0.45
DoCodeEmissionMethod · 0.45

Calls 6

TryGetValueMethod · 0.80
AddMethod · 0.45
AllocMethod · 0.45
GetTypeMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected