Closed
Bug 592843
Opened 14 years ago
Closed 14 years ago
Remove mmgc.supp and use client requests
Categories
(Tamarin Graveyard :: Garbage Collection (mmGC), defect)
Tamarin Graveyard
Garbage Collection (mmGC)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: treilly, Assigned: treilly)
References
Details
Attachments
(1 file, 3 obsolete files)
8.54 KB,
patch
|
lhansen
:
review+
|
Details | Diff | Splinter Review |
This will take a couple refactorings and patches to get right, worth a dedicated bug
Assignee | ||
Updated•14 years ago
|
Assignee: nobody → treilly
Status: NEW → ASSIGNED
Assignee | ||
Comment 1•14 years ago
|
||
This consolidates a lot of VALGRIND client requests into one place. Thoughts? Concerns about landing? The generated assembly code for Release builds is no different than before where it counts except for some reason a little more stack space is needed (in particular GCAlloc::Alloc went from 0x20 to 0x30 bytes gcc, mac 4.2).
Attachment #471277 -
Flags: feedback?(lhansen)
Comment 2•14 years ago
|
||
Comment on attachment 471277 [details] [diff] [review]
Replace linked list code with helper object
Personally I'm pretty averse to this style of programming (iterators) and in particular to non-functional "list" structures - ECMAScript Arrays have scarred me for life. Tastes differ though.
There's no file here with the LinkedList implementation itself. Calling it LinkedList may be a bit too much, if it threads through the first (?) word in the object it stores. I never see it used with anything but void*, does it need to be a templated type?
More stack space may be needed because variables are not properly enregistered in iterations, I would guess, or perhaps likely, the iterator needs multiple values stored next to each other. (Speculation obviously.)
What's the motivation behind this change? All the Valgrind calls in this patch don't touch the lists at all.
In summary, yes, I have concerns about landing this. But we should talk more.
Attachment #471277 -
Flags: feedback?(lhansen) → feedback-
Assignee | ||
Comment 3•14 years ago
|
||
Attachment #471277 -
Attachment is obsolete: true
Attachment #471485 -
Flags: feedback?(lhansen)
Assignee | ||
Comment 4•14 years ago
|
||
I like this approach better, whaddya think? Where should I put FL* functions?
Attachment #471575 -
Flags: feedback?(lhansen)
Assignee | ||
Comment 5•14 years ago
|
||
Attachment #471485 -
Attachment is obsolete: true
Attachment #471575 -
Attachment is obsolete: true
Attachment #472626 -
Flags: review?(lhansen)
Attachment #471485 -
Flags: feedback?(lhansen)
Attachment #471575 -
Flags: feedback?(lhansen)
Comment 6•14 years ago
|
||
Comment on attachment 472626 [details] [diff] [review]
Use simple helpers to consolidate freelist code
The abstraction is nice.
I don't understand why FLSeed is called that. FLCarveOffBlock or somesuch seems more descriptive (open to suggestions).
I dislike that utilities defined in FixedAlloc code is used in GC code; a separate header may seem like overkill but it would still be cleaner (if we can't find a better place).
FLPopAndZero is used just once, and in a situation where the old code did not in fact clear the first word (ie FLPop was being used). Motivation?
Assignee | ||
Comment 7•14 years ago
|
||
(In reply to comment #6)
> I don't understand why FLSeed is called that. FLCarveOffBlock or somesuch
> seems more descriptive (open to suggestions).
Cause we're seeding the freelist with its initial values? How about FLWrite?
> I dislike that utilities defined in FixedAlloc code is used in GC code; a
> separate header may seem like overkill but it would still be cleaner (if we
> can't find a better place).
Agreed
> FLPopAndZero is used just once, and in a situation where the old code did not
> in fact clear the first word (ie FLPop was being used). Motivation?
The old code had this but it was a couple lines later:
// Clear free header, the rest was cleared in Free()
p[0] = 0;
Comment 8•14 years ago
|
||
(In reply to comment #7)
> (In reply to comment #6)
> > I don't understand why FLSeed is called that. FLCarveOffBlock or somesuch
> > seems more descriptive (open to suggestions).
>
> Cause we're seeding the freelist with its initial values?
Aha.
> How about FLWrite?
Sounds too much like FLPush. How about FLAllocateAndPush?
> > I dislike that utilities defined in FixedAlloc code is used in GC code; a
> > separate header may seem like overkill but it would still be cleaner (if we
> > can't find a better place).
>
> Agreed
OK, I'm assuming you'll come up with something snazzy here.
> > FLPopAndZero is used just once, and in a situation where the old code did not
> > in fact clear the first word (ie FLPop was being used). Motivation?
>
> The old code had this but it was a couple lines later:
>
> // Clear free header, the rest was cleared in Free()
> p[0] = 0;
Gotcha.
Updated•14 years ago
|
Attachment #472626 -
Flags: review?(lhansen) → review+
Assignee | ||
Comment 9•14 years ago
|
||
Assignee | ||
Updated•14 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•