Closed
Bug 398169
Opened 18 years ago
Closed 17 years ago
PPC mac GET_STACK_EXTENTS problem for large binaries (from AIR team)
Categories
(Tamarin Graveyard :: Garbage Collection (mmGC), defect)
Tracking
(Not tracked)
VERIFIED
FIXED
People
(Reporter: treilly, Assigned: treilly)
Details
I saw an error just like that when building the AIR runtime for PPC with xcode a long time ago. I remember tracking it down to some inline PPC assembly that had a jump instruction that was "jumping forward" to a label it should have been "jumping backward" to. The code in question can be viewed here ( it is actually in the new action script vm ): http://hg.mozilla.org/tamarin-central/?file/e14dd259de12/MMgc/GC.h Line 102.
Here is the fixed code:
#define MMGC_GET_STACK_EXENTS(_gc, _stack, _size) \
int __ppcregs[20]; \
asm("stmw r13,0(%0)" : : "b" (__ppcregs));\
_stack = __ppcregs;\
void *__stackBase;\
asm ("mr r3,r1\n"\
"1: mr %0,r3\n" \
"lwz r3,0(%0)\n"\
"rlwinm r3,r3,0,0,30\n"\
"cmpi cr0,r3,0\n"\
"bne 1b" : "=b" (__stackBase) :: "r3"); \
_size = (uintptr) __stackBase - (uintptr) _stack;
Notice the bne instruction at the end now uses the 1b label, which means the lable 1 above. The code in the MMgc main line is using an absolute lable which will not work if the binary gets too big.
Chris
Comment 1•17 years ago
|
||
Tom thought is probably fixed. How can we confirm it is fixed?
Flags: flashplayer-triage+
Flags: flashplayer-qrb?
Comment 2•17 years ago
|
||
The redux code for gcc mac looks like the "fixed" code above. For gcc, ppc, non-mac (linux ppc?) and for non-gcc (codewarrior) the code is still the old incorrect code.
afaik we don't support codewarrior or linux-ppc, but before closing this bug we should either fix the code or remove and replace with #error.
Updated•17 years ago
|
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Updated•17 years ago
|
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
| Assignee | ||
Comment 3•17 years ago
|
||
closing, this is no longer done with assembly
Status: REOPENED → RESOLVED
Closed: 17 years ago → 17 years ago
Resolution: --- → FIXED
Updated•16 years ago
|
Status: RESOLVED → VERIFIED
You need to log in
before you can comment on or make changes to this bug.
Description
•