This flag collides with the GCTraceableObject, ie if you are using this new operator and you change your class from GCTraceableObject/GCObject the same code continues to compile and bad things happen, specifically the compiler with auto cast the args to conform to these two: GCTraceableObject: static void *operator new(size_t size, GC *gc, GCExactFlag flag, size_t extra) GCObject: static void *operator new(size_t size, GC *gc, size_t extra, GC::AllocFlags flags) Luckily the AllocFlags form is new and only used in two places in the player and is being removed so the GCObject form can go. Ideally the set of new operators exposed by all the GCObject subclasses would be expressed in one place so this can't happen. I have to go remind myself why we can't just have GCObject be the baseclass for everything, we could use macros to plop the new operator def in or something.
Created attachment 516912 [details] [diff] [review] gonzo
Attachment #516912 - Flags: review?(lhansen)
Comment on attachment 516912 [details] [diff] [review] gonzo Banzai.
Attachment #516912 - Flags: review?(lhansen) → review+
changeset: 6048:6eeb74d0b65e user: Tommy Reilly <firstname.lastname@example.org> summary: Bug 637653 - Remove AllocFlags GCObject new operator (r=lhansen) http://hg.mozilla.org/tamarin-redux/rev/6eeb74d0b65e
Status: ASSIGNED → RESOLVED
Last Resolved: 7 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.