Skip to content

Commit 9054816

Browse files
committed
Completed DEV_BUILD, including creation of employee.fdb
1 parent 1ab5457 commit 9054816

File tree

18 files changed

+147
-126
lines changed

18 files changed

+147
-126
lines changed

src/dsql/ExprNodes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12759,7 +12759,7 @@ DmlNode* UdfCallNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch*
1275912759
}
1276012760
}
1276112761

12762-
HazardPtr<Function> func;
12762+
HazardPtr<Function> func(FB_FUNCTION);
1276312763
if (!node->function)
1276412764
{
1276512765
func = Function::lookup(tdbb, name, false);

src/dsql/StmtNodes.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,7 +2927,7 @@ DmlNode* ExecProcedureNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScr
29272927
SET_TDBB(tdbb);
29282928

29292929
jrd_prc* procedure = NULL;
2930-
HazardPtr<jrd_prc> proc;
2930+
HazardPtr<jrd_prc> proc(FB_FUNCTION);
29312931
QualifiedName name;
29322932

29332933
if (blrOp == blr_exec_pid)
@@ -10669,7 +10669,7 @@ static RelationSourceNode* pass1Update(thread_db* tdbb, CompilerScratch* csb, jr
1066910669

1067010670
for (FB_SIZE_T i = 0; i < trigger->getCount(tdbb); i++)
1067110671
{
10672-
HazardPtr<Trigger> tr;
10672+
HazardPtr<Trigger> tr(FB_FUNCTION);
1067310673
if (!trigger->load(tdbb, i, tr))
1067410674
continue;
1067510675
if (!tr->sysTrigger)

src/jrd/ExtEngineManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1621,7 +1621,7 @@ void ExtEngineManager::makeTrigger(thread_db* tdbb, CompilerScratch* csb, Jrd::T
16211621
trg->extTrigger);
16221622
mainNode->statements.add(extTriggerNode);
16231623

1624-
HazardPtr<jrd_rel> rel;
1624+
HazardPtr<jrd_rel> rel(FB_FUNCTION);
16251625
rel.safePointer(trg->relation);
16261626
PAR_preparsed_node(tdbb, rel, mainNode, NULL, &csb, &trg->statement, true, 0);
16271627
}

src/jrd/Function.epp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ HazardPtr<Function> Function::lookup(thread_db* tdbb, USHORT id, bool return_del
6262
{
6363
Attachment* const attachment = tdbb->getAttachment();
6464
Database* const dbb = tdbb->getDatabase();
65-
HazardPtr<Function> check_function(tdbb);
65+
HazardPtr<Function> check_function(tdbb, FB_FUNCTION);
6666

6767
HazardPtr<Function> function = dbb->dbb_mdc->getFunction(tdbb, id);
6868

src/jrd/HazardPtr.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ HazardDelayedDelete* HazardBase::getHazardDelayed(Attachment* att)
6666
return &att->att_delayed_delete;
6767
}
6868

69-
void HazardDelayedDelete::add(const void* ptr)
69+
void HazardDelayedDelete::add(const void* ptr, const char* from)
7070
{
71+
HZ_DEB(fprintf(stderr, "HazardDelayedDelete::add %s %p\n", from, ptr));
7172
// as long as we access our own hazard pointers use of write accessor is always OK
7273
auto hp = hazardPointers.writeAccessor();
7374

@@ -91,8 +92,9 @@ void HazardDelayedDelete::add(const void* ptr)
9192
*(hp->add()) = ptr;
9293
}
9394

94-
void HazardDelayedDelete::remove(const void* ptr)
95+
void HazardDelayedDelete::remove(const void* ptr, const char* from)
9596
{
97+
HZ_DEB(fprintf(stderr, "HazardDelayedDelete::remove %s %p\n", from, ptr));
9698
// as long as we access our own hazard pointers use of write accessor is always OK
9799
auto hp = hazardPointers.writeAccessor();
98100

@@ -187,7 +189,7 @@ void HazardDelayedDelete::garbageCollect(GarbageCollectMethod gcMethod)
187189
database->dbb_delayed_delete.garbageCollect(GarbageCollectMethod::GC_NORMAL);
188190
for (unsigned i = 0; i < toDelete.getCount(); ++i)
189191
{
190-
database->dbb_delayed_delete.add(toDelete[i]);
192+
database->dbb_delayed_delete.add(toDelete[i], FB_FUNCTION);
191193
toDelete[i] = nullptr;
192194
}
193195
toDelete.shrink(0);

src/jrd/HazardPtr.h

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ namespace Jrd {
7272
: hazardDelayed(nullptr)
7373
{ }
7474

75-
inline void add(const void* hazardPointer);
76-
inline void remove(const void* hazardPointer);
75+
inline void add(const void* hazardPointer, const char* from);
76+
inline void remove(const void* hazardPointer, const char* from);
7777

7878
private:
7979
HazardDelayedDelete* hazardDelayed;
@@ -87,50 +87,58 @@ namespace Jrd {
8787
class HazardPtr : public HazardBase
8888
{
8989
public:
90-
HazardPtr()
91-
: hazardPointer(nullptr)
90+
HazardPtr(const char* F)
91+
: hazardPointer(nullptr),
92+
frm(F)
9293
{ }
9394

9495
template <class DDS>
95-
explicit HazardPtr(DDS* par)
96+
explicit HazardPtr(DDS* par, const char* F)
9697
: HazardBase(par),
97-
hazardPointer(nullptr)
98+
hazardPointer(nullptr),
99+
frm(F)
98100
{ }
99101

100102
template <class DDS>
101-
HazardPtr(DDS* par, const std::atomic<T*>& from)
103+
HazardPtr(DDS* par, const std::atomic<T*>& from, const char* F)
102104
: HazardBase(par),
103-
hazardPointer(nullptr)
105+
hazardPointer(nullptr),
106+
frm(F)
104107
{
105108
set(from);
106109
}
107110

108-
HazardPtr(HazardPtr& copy)
111+
HazardPtr(const HazardPtr& copy)
109112
: HazardBase(copy),
110-
hazardPointer(nullptr)
113+
hazardPointer(nullptr),
114+
frm(copy.frm)
111115
{
112116
reset(copy.hazardPointer);
117+
frm = copy.frm;
113118
}
114119

115120
HazardPtr(HazardPtr&& move)
116121
: HazardBase(move),
117-
hazardPointer(nullptr)
122+
hazardPointer(nullptr),
123+
frm(move.frm)
118124
{
119125
hazardPointer = move.releasePointer();
120126
}
121127

122128
template <class T2>
123-
HazardPtr(HazardPtr<T2>& copy)
129+
HazardPtr(const HazardPtr<T2>& copy)
124130
: HazardBase(copy),
125-
hazardPointer(nullptr)
131+
hazardPointer(nullptr),
132+
frm(copy.frm)
126133
{
127134
reset(copy.getPointer());
128135
}
129136

130137
template <class T2>
131138
HazardPtr(HazardPtr<T2>&& move)
132139
: HazardBase(move),
133-
hazardPointer(nullptr)
140+
hazardPointer(nullptr),
141+
frm(move.frm)
134142
{
135143
hazardPointer = move.releasePointer();
136144
}
@@ -233,7 +241,7 @@ namespace Jrd {
233241
HazardPtr& operator=(HazardPtr&& moveAssign)
234242
{
235243
if (hazardPointer)
236-
remove(hazardPointer);
244+
remove(hazardPointer, frm);
237245
HazardBase::operator=(moveAssign);
238246
hazardPointer = moveAssign.releasePointer();
239247
return *this;
@@ -250,7 +258,7 @@ namespace Jrd {
250258
HazardPtr& operator=(HazardPtr<T2>&& moveAssign)
251259
{
252260
if (hazardPointer)
253-
remove(hazardPointer);
261+
remove(hazardPointer, FB_FUNCTION);
254262
HazardBase::operator=(moveAssign);
255263
hazardPointer = moveAssign.releasePointer();
256264
return *this;
@@ -267,16 +275,19 @@ namespace Jrd {
267275
if (newPtr != hazardPointer)
268276
{
269277
if (hazardPointer)
270-
remove(hazardPointer);
278+
remove(hazardPointer, frm);
271279
if (newBase)
272280
HazardBase::operator=(*newBase);
273281
if (newPtr)
274-
add(newPtr);
282+
add(newPtr, frm);
275283
hazardPointer = newPtr;
276284
}
277285
}
278286

279287
T* hazardPointer;
288+
289+
public:
290+
const char* frm;
280291
};
281292

282293
template <typename T>
@@ -300,7 +311,7 @@ namespace Jrd {
300311

301312
// Shared read here means that any thread can read from vector using HP.
302313
// It can be modified only in single thread, and it's caller's responsibility that modifying thread is single.
303-
// It's also callers resposibility to destroy Generation when deleting SharedReadVector:
314+
// It's also callers responsibility to destroy Generation when deleting SharedReadVector:
304315
// in dtor we do not have enough information to do it correctly, default delayedDelete() may be already wrong.
305316

306317
template <typename T, FB_SIZE_T CAP, bool GC_ENABLED = true>
@@ -386,7 +397,7 @@ namespace Jrd {
386397
template <class DDS>
387398
HazardPtr<Generation> readAccessor(DDS* par) const
388399
{
389-
return HazardPtr<Generation>(par, v);
400+
return HazardPtr<Generation>(par, v, FB_FUNCTION);
390401
}
391402

392403
inline void grow(HazardDelayedDelete* dd, FB_SIZE_T newSize = 0);
@@ -416,8 +427,8 @@ namespace Jrd {
416427
hazardPointers(getPool())
417428
{ }
418429

419-
void add(const void* ptr);
420-
void remove(const void* ptr);
430+
void add(const void* ptr, const char* from);
431+
void remove(const void* ptr, const char* from);
421432

422433
void delayedDelete(HazardObject* mem, bool gc = true);
423434
void garbageCollect(GarbageCollectMethod gcMethod);
@@ -434,18 +445,18 @@ namespace Jrd {
434445
};
435446

436447

437-
inline void HazardBase::add(const void* hazardPointer)
448+
inline void HazardBase::add(const void* hazardPointer, const char* from)
438449
{
439450
if (!hazardDelayed)
440451
hazardDelayed = getHazardDelayed();
441-
hazardDelayed->add(hazardPointer);
452+
hazardDelayed->add(hazardPointer, from);
442453
}
443454

444-
inline void HazardBase::remove(const void* hazardPointer)
455+
inline void HazardBase::remove(const void* hazardPointer, const char* from)
445456
{
446457
if (!hazardDelayed)
447458
hazardDelayed = getHazardDelayed();
448-
hazardDelayed->remove(hazardPointer);
459+
hazardDelayed->remove(hazardPointer, from);
449460
}
450461

451462
template <typename T, FB_SIZE_T CAP, bool GC_ENABLED>
@@ -495,7 +506,7 @@ namespace Jrd {
495506

496507
for (SubArrayElement* end = &sub[SUBARRAY_SIZE]; sub < end--;)
497508
{
498-
HazardPtr<Object> val(tdbb, *end);
509+
HazardPtr<Object> val(tdbb, *end, FB_FUNCTION);
499510
if (val.hasData() && val->getKey() == key)
500511
{
501512
if (object)
@@ -575,7 +586,7 @@ namespace Jrd {
575586
oldVal->delayedDelete(tdbb);
576587
}
577588

578-
return HazardPtr<Object>(tdbb, *sub);
589+
return HazardPtr<Object>(tdbb, *sub, FB_FUNCTION);
579590
}
580591

581592
bool replace(thread_db* tdbb, FB_SIZE_T id, HazardPtr<Object>& oldVal, Object* const newVal)
@@ -617,7 +628,7 @@ namespace Jrd {
617628
template <class DDS>
618629
HazardPtr<Object> load(DDS* par, FB_SIZE_T id) const
619630
{
620-
HazardPtr<Object> val;
631+
HazardPtr<Object> val(FB_FUNCTION);
621632
if (!load(par, id, val))
622633
val.clear();
623634
return val;
@@ -677,7 +688,7 @@ namespace Jrd {
677688

678689
HazardPtr<Object> get()
679690
{
680-
HazardPtr<Object> rc(hd);
691+
HazardPtr<Object> rc(hd, FB_FUNCTION);
681692
if (!snap->load(index, rc))
682693
rc.clear();
683694
return rc;

src/jrd/RecordSourceNodes.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ RelationSourceNode* RelationSourceNode::parse(thread_db* tdbb, CompilerScratch*
561561
// Find relation either by id or by name
562562
string* aliasString = NULL;
563563
MetaName name;
564-
HazardPtr<jrd_rel> rel;
564+
HazardPtr<jrd_rel> rel(FB_FUNCTION);
565565

566566
switch (blrOp)
567567
{
@@ -898,7 +898,7 @@ ProcedureSourceNode* ProcedureSourceNode::parse(thread_db* tdbb, CompilerScratch
898898
jrd_prc* procedure = NULL;
899899
string* aliasString = NULL;
900900
QualifiedName name;
901-
HazardPtr<jrd_prc> proc;
901+
HazardPtr<jrd_prc> proc(FB_FUNCTION);
902902

903903
switch (blrOp)
904904
{

src/jrd/Relation.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -667,7 +667,7 @@ HazardPtr<IndexLock> jrd_rel::getIndexLock(thread_db* tdbb, USHORT id)
667667
SET_TDBB(tdbb);
668668
Database* dbb = tdbb->getDatabase();
669669

670-
HazardPtr<IndexLock> indexLock;
670+
HazardPtr<IndexLock> indexLock(FB_FUNCTION);
671671
if (rel_id < (USHORT) rel_MAX)
672672
return indexLock;
673673

@@ -693,4 +693,4 @@ const char* IndexLock::c_name() const
693693
}
694694

695695
//extern
696-
HazardPtr<jrd_rel> Jrd::nullRel;
696+
HazardPtr<jrd_rel> Jrd::nullRel(FB_FUNCTION);

src/jrd/Statement.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ void Statement::verifyAccess(thread_db* tdbb)
387387

388388
for (ExternalAccess* item = external.begin(); item != external.end(); ++item)
389389
{
390-
HazardPtr<Routine> routine(tdbb);
390+
HazardPtr<Routine> routine(tdbb, FB_FUNCTION);
391391
int aclType;
392392

393393
if (item->exa_action == ExternalAccess::exa_procedure)
@@ -614,7 +614,7 @@ void Statement::verifyTriggerAccess(thread_db* tdbb, const HazardPtr<jrd_rel>& o
614614

615615
for (FB_SIZE_T i = 0; i < triggers->getCount(tdbb); i++)
616616
{
617-
HazardPtr<Trigger> t(tdbb);
617+
HazardPtr<Trigger> t(tdbb, FB_FUNCTION);
618618
if (!triggers->load(tdbb, i, t))
619619
continue;
620620

@@ -679,7 +679,7 @@ inline void Statement::triggersExternalAccess(thread_db* tdbb, ExternalAccessLis
679679

680680
for (FB_SIZE_T i = 0; i < tvec->getCount(tdbb); i++)
681681
{
682-
HazardPtr<Trigger> t(tdbb);
682+
HazardPtr<Trigger> t(tdbb, FB_FUNCTION);
683683
if (!tvec->load(tdbb, i, t))
684684
continue;
685685

0 commit comments

Comments
 (0)