From e4f8f1cedd549cf591536ada4ee9d449f7ee0943 Mon Sep 17 00:00:00 2001 From: "wsharp%adobe.com" Date: Wed, 29 Nov 2006 14:39:14 +0000 Subject: [PATCH] bug 361388. More 64-bit fixes. r:stejohns git-svn-id: svn://10.0.0.236/trunk@216061 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/tamarin/MMgc/GCAlloc.cpp | 2 +- mozilla/js/tamarin/MMgc/GCHeap.cpp | 10 ++-- mozilla/js/tamarin/codegen/Amd64Assembler.cpp | 41 ++++++++----- mozilla/js/tamarin/codegen/CodegenMIR.cpp | 35 ++++++----- mozilla/js/tamarin/codegen/CodegenMIR.h | 2 +- mozilla/js/tamarin/core/AbstractFunction.cpp | 12 ++-- mozilla/js/tamarin/core/ArrayObject.cpp | 22 +++---- mozilla/js/tamarin/core/ArrayObject.h | 43 +++++++------- mozilla/js/tamarin/core/AvmCore.cpp | 58 +++++++++---------- mozilla/js/tamarin/core/AvmCore.h | 2 + mozilla/js/tamarin/core/Exception.cpp | 3 +- mozilla/js/tamarin/core/Exception.h | 16 +++-- mozilla/js/tamarin/core/MathUtils.cpp | 4 +- mozilla/js/tamarin/core/avmbuild.h | 9 --- 14 files changed, 135 insertions(+), 124 deletions(-) diff --git a/mozilla/js/tamarin/MMgc/GCAlloc.cpp b/mozilla/js/tamarin/MMgc/GCAlloc.cpp index 2b6b754b41f..73571fd8178 100644 --- a/mozilla/js/tamarin/MMgc/GCAlloc.cpp +++ b/mozilla/js/tamarin/MMgc/GCAlloc.cpp @@ -250,7 +250,7 @@ start: item = b->firstFree; b->firstFree = *((void**)item); // clear free list pointer, the rest was zero'd in free - *(int*) item = 0; + *(sintptr*) item = 0; #ifdef MEMORY_INFO // ensure previously used item wasn't written to // -1 because write back pointer space isn't poisoned. diff --git a/mozilla/js/tamarin/MMgc/GCHeap.cpp b/mozilla/js/tamarin/MMgc/GCHeap.cpp index 10e1ff9b19a..6d68ac06606 100644 --- a/mozilla/js/tamarin/MMgc/GCHeap.cpp +++ b/mozilla/js/tamarin/MMgc/GCHeap.cpp @@ -136,7 +136,7 @@ namespace MMgc HeapBlock *block = &blocks[i]; if(block->baseAddr) { - uintptr megamapIndex = ((uintptr)block->baseAddr) >> 12; + uint32 megamapIndex = ((uint32)(uintptr)block->baseAddr) >> 12; GCAssert(m_megamap[megamapIndex] == 0); } if(block->inUse() && block->baseAddr) @@ -182,7 +182,7 @@ namespace MMgc // Check for debug builds only: // Use the megamap to double-check that we haven't handed // any of these pages out already. - uintptr megamapIndex = ((uintptr)block->baseAddr)>>12; + uint32 megamapIndex = ((uint32)(uintptr)block->baseAddr)>>12; for (int i=0; ibaseAddr) >> 12; + uint32 megamapIndex = ((uint32)(uintptr)block->baseAddr) >> 12; for (int i=0; isize; i++) { if(m_megamap[megamapIndex] != 1) { GCAssertMsg(false, "Megamap is screwed up, are you freeing freed memory?"); @@ -725,7 +725,7 @@ namespace MMgc void GCHeap::AddToFreeList(HeapBlock *block) { - GCAssert(m_megamap[((uintptr)block->baseAddr)>>12] == 0); + GCAssert(m_megamap[((uint32)(uintptr)block->baseAddr)>>12] == 0); int index = GetFreeListIndex(block->size); HeapBlock *freelist = &freelists[index]; @@ -765,7 +765,7 @@ namespace MMgc // Try to coalesce this block with its predecessor HeapBlock *prevBlock = block - block->sizePrevious; if (!prevBlock->inUse() && prevBlock->committed) { - GCAssert(m_megamap[((uintptr)prevBlock->baseAddr)>>12] == 0); + GCAssert(m_megamap[((uint32)(uintptr)prevBlock->baseAddr)>>12] == 0); // Remove predecessor block from free list RemoveFromList(prevBlock); diff --git a/mozilla/js/tamarin/codegen/Amd64Assembler.cpp b/mozilla/js/tamarin/codegen/Amd64Assembler.cpp index f5ce9d980f6..73e4e7f0f44 100644 --- a/mozilla/js/tamarin/codegen/Amd64Assembler.cpp +++ b/mozilla/js/tamarin/codegen/Amd64Assembler.cpp @@ -92,7 +92,7 @@ namespace avmplus #endif // AVMPLUS_VERBOSE - void CodegenMIR::REX(Register a, Register b) + void CodegenMIR::REX(Register a, Register b, bool set64bit) { // Needs REX prefix byte since we are working with a 64-bit register // bits 7:4 - 0100 - 0x40 @@ -110,7 +110,9 @@ namespace avmplus if ((a >= 8) || (b >= 8)) { - int val = 0x48; + int val = 0x40; + if (set64bit) + val |= 0x08; if (a >= 16) val |= 0x04; if (b >= 16) @@ -445,16 +447,18 @@ namespace avmplus } #endif /* AVMPLUS_VERBOSE */ - if ((r >= 8) || (base >= 8)) - AvmAssertMsg (0, "need support for REX byte?"); if (!is32bit(disp)) AvmAssertMsg (0, "need support for 64-bit displacement?"); - mip[0] = op>>16; - mip[1] = op>>8; - mip[2] = op; - mip += 3; + *mip++ = op>>16; + + if ((r >= 8) || (base >= 16)) + REX(r, base, false); + + mip[0] = op>>8; + mip[1] = op; + mip += 2; MODRM(r, disp, base); } @@ -863,6 +867,8 @@ namespace avmplus */ void CodegenMIR::emitNativeThunk(NativeMethod *info) { + //pool->verbose = true; + code = mip = mipStart = getMDBuffer(pool); if (!code) { @@ -875,11 +881,14 @@ namespace avmplus #if 0 asm ( + // NOT VALID "mov $0xabcd12345678, 8(%rsp)\n" + + "movsd 8(%r10), %xmm0\n" //"push %eax\n" - "push %rdi\n" - "push %r10\n" - "pop %rax\n" - "pop %r11\n" + //"push %rdi\n" + //"push %r10\n" + //"pop %rax\n" + //"pop %r11\n" // not valid - 8 byte push "push $0x1212345678" // "mov $0xab12345678, %r10\n" // 49 bA bytes of immediate data @@ -1069,12 +1078,14 @@ namespace avmplus if (floatParameterCount < FLOATREGCOUNT) { // !!@ better way to do this? - MOV (-8, RSP, dp); + MOV (R11, dp); + MOV (-8, RSP, R11); MOVSD (floatRegUsage[floatParameterCount], -8, RSP); } else { - MOV (push_count, RSP, dp); + MOV (R11, dp); + MOV (push_count, RSP, R11); } } else @@ -1271,6 +1282,8 @@ namespace avmplus RET (); bindMethod(info); + + //pool->verbose = false; } /////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/mozilla/js/tamarin/codegen/CodegenMIR.cpp b/mozilla/js/tamarin/codegen/CodegenMIR.cpp index 27f905ef5be..d01a4832602 100644 --- a/mozilla/js/tamarin/codegen/CodegenMIR.cpp +++ b/mozilla/js/tamarin/codegen/CodegenMIR.cpp @@ -52,14 +52,6 @@ jmp_buf buf; #endif // AVMPLUS_ARM #endif // _MSC_VER -#ifdef AVMPLUS_NOVIRTUAL -// Hack for Mac/Unix/Arm; can't take addr of a virtual function -#define getUintProperty _getUintProperty -#define getIntProperty _getIntProperty -#define setUintProperty _setUintProperty -#define setIntProperty _setIntProperty -#endif - #ifdef AVMPLUS_ARM #ifdef _MSC_VER #define RETURN_METHOD_PTR(_class, _method) \ @@ -1620,10 +1612,10 @@ namespace avmplus names->add(ENVADDR(MethodEnv::astype), "MethodEnv::astype"); names->add(TOPLEVELADDR(Toplevel::instanceof), "Toplevel::instanceof"); names->add(TOPLEVELADDR(Toplevel::getproperty), "Toplevel::getproperty"); - names->add(ARRAYADDR(ArrayObject::getUintProperty), "ArrayObject::getUintProperty"); - names->add(ARRAYADDR(ArrayObject::getIntProperty), "ArrayObject::getIntProperty"); - names->add(ARRAYADDR(ArrayObject::setUintProperty), "ArrayObject::setUintProperty"); - names->add(ARRAYADDR(ArrayObject::setIntProperty), "ArrayObject::setIntProperty"); + names->add(ARRAYADDR(ArrayObject::_getUintProperty), "ArrayObject::_getUintProperty"); + names->add(ARRAYADDR(ArrayObject::_getIntProperty), "ArrayObject::_getIntProperty"); + names->add(ARRAYADDR(ArrayObject::_setUintProperty), "ArrayObject::_setUintProperty"); + names->add(ARRAYADDR(ArrayObject::_setIntProperty), "ArrayObject::_setIntProperty"); names->add(ENVADDR(MethodEnv::getpropertylate_i), "MethodEnv::getpropertylate_i"); names->add(ENVADDR(MethodEnv::getpropertylate_u), "MethodEnv::getpropertylate_u"); names->add(ENVADDR(MethodEnv::npe), "MethodEnv::npe"); @@ -1880,6 +1872,17 @@ namespace avmplus defineArgInsPos(12); #endif /* AVMPLUS_IA32 */ + #ifdef AVMPLUS_AMD64 + // 64bit - completely wrong + // callee saved args + calleeVars = defineArgInsReg(EBX); + defineArgInsReg(ESI); + defineArgInsReg(EDI); + // incoming args either in a register or stack position relative to stack on entry + methodArgs = defineArgInsPos(4); + defineArgInsPos(8); + defineArgInsPos(12); + #endif /* AVMPLUS_IA32 */ #ifdef AVMPLUS_PPC calleeVars = NULL; methodArgs = defineArgInsReg(R3); @@ -3654,7 +3657,7 @@ namespace avmplus OP *value; if (objType == ARRAY_TYPE) { - value = callIns(MIR_cm, ARRAYADDR(ArrayObject::getIntProperty), 2, + value = callIns(MIR_cm, ARRAYADDR(ArrayObject::_getIntProperty), 2, localGet(sp-1), index); } else @@ -3680,7 +3683,7 @@ namespace avmplus OP *value; if (objType == ARRAY_TYPE) { - value = callIns(MIR_cm, ARRAYADDR(ArrayObject::getUintProperty), 2, + value = callIns(MIR_cm, ARRAYADDR(ArrayObject::_getUintProperty), 2, localGet(sp-1), index); } else @@ -3767,7 +3770,7 @@ namespace avmplus if (objType == ARRAY_TYPE) { - callIns(MIR_cm, ARRAYADDR(ArrayObject::setIntProperty), 3, + callIns(MIR_cm, ARRAYADDR(ArrayObject::_setIntProperty), 3, localGet(objDisp), index, value); } else @@ -3790,7 +3793,7 @@ namespace avmplus if (objType == ARRAY_TYPE) { - callIns(MIR_cm, ARRAYADDR(ArrayObject::setUintProperty), 3, + callIns(MIR_cm, ARRAYADDR(ArrayObject::_setUintProperty), 3, localGet(objDisp), index, value); } else diff --git a/mozilla/js/tamarin/codegen/CodegenMIR.h b/mozilla/js/tamarin/codegen/CodegenMIR.h index a1e65e22d9c..ec25356f90f 100644 --- a/mozilla/js/tamarin/codegen/CodegenMIR.h +++ b/mozilla/js/tamarin/codegen/CodegenMIR.h @@ -1537,7 +1537,7 @@ namespace avmplus *(int64*)mip = imm64; mip += 8; } - void REX(Register a, Register b=EAX); + void REX(Register a, Register b=EAX, bool set64bit=true); bool is32bit(sintptr i) { diff --git a/mozilla/js/tamarin/core/AbstractFunction.cpp b/mozilla/js/tamarin/core/AbstractFunction.cpp index 814c893f0c0..c44e16c293b 100644 --- a/mozilla/js/tamarin/core/AbstractFunction.cpp +++ b/mozilla/js/tamarin/core/AbstractFunction.cpp @@ -206,18 +206,18 @@ namespace avmplus } else if (t == INT_TYPE) { - out[i] = core->intToAtom(*(int*) ap); - ap++; + out[i] = core->intToAtom((int32)*(Atom*) ap); + ap += sizeof(Atom) / sizeof(uint32); } else if (t == UINT_TYPE) { - out[i] = core->uintToAtom(*(uint32*) ap); - ap++; + out[i] = core->uintToAtom((uint32)*(Atom*) ap); + ap += sizeof(Atom) / sizeof(uint32); } else if (t == BOOLEAN_TYPE) { - out[i] = (*(int*) ap) ? trueAtom : falseAtom; - ap++; + out[i] = (*(Atom*) ap) ? trueAtom : falseAtom; + ap += sizeof(Atom) / sizeof(uint32); } else if (!t || t == OBJECT_TYPE) { diff --git a/mozilla/js/tamarin/core/ArrayObject.cpp b/mozilla/js/tamarin/core/ArrayObject.cpp index 4695b930314..a0f221b6b49 100644 --- a/mozilla/js/tamarin/core/ArrayObject.cpp +++ b/mozilla/js/tamarin/core/ArrayObject.cpp @@ -134,7 +134,7 @@ namespace avmplus uint32 index; if (core->getIndexFromAtom (name, &index)) { - return setUintProperty (index, value); + return _setUintProperty (index, value); } if (name == core->klength->atom()) @@ -144,7 +144,7 @@ namespace avmplus ScriptObject::setAtomProperty(name, value); } - void ArrayObject::setUintProperty(uint32 index, Atom value) + void ArrayObject::_setUintProperty(uint32 index, Atom value) { if (traits()->needsHashtable) { @@ -222,7 +222,7 @@ namespace avmplus return ScriptObject::getAtomProperty(name); } - Atom ArrayObject::getUintProperty(uint32 index) const + Atom ArrayObject::_getUintProperty(uint32 index) const { if (traits()->needsHashtable) { @@ -236,18 +236,18 @@ namespace avmplus return ScriptObject::getUintProperty (index); } - Atom ArrayObject::getIntProperty(int index) const + Atom ArrayObject::_getIntProperty(int index) const { if (index >= 0) - return getUintProperty(index); + return _getUintProperty(index); else // integer is negative - we must intern it return getStringProperty(core()->internInt(index)); } - void ArrayObject::setIntProperty(int index, Atom value) + void ArrayObject::_setIntProperty(int index, Atom value) { if (index >= 0) - setUintProperty(index, value); + _setUintProperty(index, value); else // integer is negative - we must intern it setStringProperty(core()->internInt(index), value); } @@ -446,7 +446,7 @@ namespace avmplus if (getLength() != 0) { - Atom outAtom = getUintProperty(getLength()-1); + Atom outAtom = _getUintProperty(getLength()-1); setLength(getLength()-1); return outAtom; } @@ -466,7 +466,7 @@ namespace avmplus else { for (int i=0; i < argc; i++) { - setUintProperty(getLength(), argv[i]); + _setUintProperty(getLength(), argv[i]); } } return m_length; @@ -488,11 +488,11 @@ namespace avmplus uint32 len = getLength(); for (i=len; i > 0; ) { // note: i is unsigned, can't check if --i >=0. i--; - setUintProperty(i+argc, getUintProperty(i)); + _setUintProperty(i+argc, _getUintProperty(i)); } for (i=0; i < ((uint32)argc); i++) { - setUintProperty(i, argv[i]); + _setUintProperty(i, argv[i]); } setLength(len+argc); diff --git a/mozilla/js/tamarin/core/ArrayObject.h b/mozilla/js/tamarin/core/ArrayObject.h index d1d1c19215e..12f1fbb7068 100644 --- a/mozilla/js/tamarin/core/ArrayObject.h +++ b/mozilla/js/tamarin/core/ArrayObject.h @@ -74,35 +74,32 @@ namespace avmplus bool hasAtomProperty(Atom name) const; // Faster versions that takes direct indices - Atom getUintProperty(uint32 index) const; - void setUintProperty(uint32 index, Atom value); + Atom getUintProperty(uint32 index) const + { + return _getUintProperty(index); + } + void setUintProperty(uint32 index, Atom value) + { + _setUintProperty(index, value); + } bool delUintProperty(uint32 index); bool hasUintProperty(uint32 i) const; - Atom getIntProperty(int index) const; - void setIntProperty(int index, Atom value); + Atom getIntProperty(int index) const + { + return _getIntProperty(index); + } + void setIntProperty(int index, Atom value) + { + _setIntProperty(index, value); + } bool getAtomPropertyIsEnumerable(Atom name) const; - #ifdef AVMPLUS_NOVIRTUAL - // Hack for Mac; can't take addr of virtual function - Atom _getUintProperty(uint32 index) const - { - return getUintProperty(index); - } - void _setUintProperty(uint32 index, Atom value) - { - setUintProperty(index, value); - } - Atom _getIntProperty(int index) const - { - return getIntProperty(index); - } - void _setIntProperty(int index, Atom value) - { - setIntProperty(index, value); - } - #endif + Atom _getUintProperty(uint32 index) const; + void _setUintProperty(uint32 index, Atom value); + Atom _getIntProperty(int index) const; + void _setIntProperty(int index, Atom value); // Iterator support - for in, for each Atom nextName(int index); diff --git a/mozilla/js/tamarin/core/AvmCore.cpp b/mozilla/js/tamarin/core/AvmCore.cpp index 338a90751d0..1617e38d069 100644 --- a/mozilla/js/tamarin/core/AvmCore.cpp +++ b/mozilla/js/tamarin/core/AvmCore.cpp @@ -1604,7 +1604,7 @@ return the result of the comparison ToPrimitive(x) == y. int exception_count = info->exceptions->exception_count; ExceptionHandler* handler = info->exceptions->exceptions; - int atom = exception->atom; + Atom atom = exception->atom; while (--exception_count >= 0) { @@ -3142,27 +3142,27 @@ return the result of the comparison ToPrimitive(x) == y. } } return allocDouble(n); - #elif AVMPLUS_LINUX - int id3; - asm("movups %1, %%xmm0;" - "cvttsd2si %%xmm0, %%ecx;" - "shl $0x3, %%ecx;" - "mov %%ecx, %%eax;" - "sar $0x3, %%ecx;" - "cvtsi2sd %%ecx, %%xmm1;" - "ucomisd %%xmm1, %%xmm0;" - "jne d2a_alloc;" - "jp d2a_alloc;" - "movl %%eax, %0" : "=r" (id3) : "m" (n)); - - if (id3 != 0 || !MathUtils::isNegZero(n)) - { - return id3 | kIntegerType; - } - - asm("d2a_alloc:"); - #endif - return allocDouble(n); + #elif AVMPLUS_LINUX + int id3; + asm("movups %1, %%xmm0;" + "cvttsd2si %%xmm0, %%ecx;" + "shl $0x3, %%ecx;" + "mov %%ecx, %%eax;" + "sar $0x3, %%ecx;" + "cvtsi2sd %%ecx, %%xmm1;" + "ucomisd %%xmm1, %%xmm0;" + "jne d2a_alloc;" + "jp d2a_alloc;" + "movl %%eax, %0" : "=r" (id3) : "m" (n)); + + if (id3 != 0 || !MathUtils::isNegZero(n)) + { + return id3 | kIntegerType; + } + + asm("d2a_alloc:"); + #endif + return allocDouble(n); } #endif @@ -3656,13 +3656,13 @@ return the result of the comparison ToPrimitive(x) == y. id = _mm_cvttsd_si32(_mm_set_sd(d)); if (id != (int)0x80000000) return id; - #elif AVMPLUS_LINUX - asm("movups %1, %%xmm0;" - "cvttsd2si %%xmm0, %%eax;" - "movl %%eax, %0" : "=r" (id) : "m" (d) : "%eax"); - if (id != 0x80000000) - return id; - #endif + #elif AVMPLUS_LINUX + asm("movups %1, %%xmm0;" + "cvttsd2si %%xmm0, %%eax;" + "movl %%eax, %0" : "=r" (id) : "m" (d) : "%eax"); + if (id != 0x80000000) + return id; + #endif return doubleToInt32(d); } diff --git a/mozilla/js/tamarin/core/AvmCore.h b/mozilla/js/tamarin/core/AvmCore.h index 6911ebc48a6..7aace3775c0 100644 --- a/mozilla/js/tamarin/core/AvmCore.h +++ b/mozilla/js/tamarin/core/AvmCore.h @@ -1017,6 +1017,8 @@ const int kBufferPadding = 16; /** env of the highest catch handler on the call stack, or NULL */ ExceptionFrame *exceptionFrame; + + Exception *exceptionAddr; /** * Searches the exception handler table of info for diff --git a/mozilla/js/tamarin/core/Exception.cpp b/mozilla/js/tamarin/core/Exception.cpp index a8b653ee46d..dc7b36e7be9 100644 --- a/mozilla/js/tamarin/core/Exception.cpp +++ b/mozilla/js/tamarin/core/Exception.cpp @@ -120,7 +120,8 @@ namespace avmplus void ExceptionFrame::throwException(Exception *exception) { - longjmp(jmpbuf, (uintptr)exception); + core->exceptionAddr = exception; + longjmp(jmpbuf, (int)(uintptr)exception); // returning exception ptr still important for MIR 32-bit } void ExceptionFrame::beginCatch() diff --git a/mozilla/js/tamarin/core/Exception.h b/mozilla/js/tamarin/core/Exception.h index 6ce76582f4a..e777e65d4c5 100644 --- a/mozilla/js/tamarin/core/Exception.h +++ b/mozilla/js/tamarin/core/Exception.h @@ -210,26 +210,30 @@ namespace avmplus ExceptionFrame _ef; \ _ef.beginTry(core); \ _ef.catchAction = (CATCH_ACTION); \ - Exception* _ee; \ - if ((_ee=(Exception*)::setjmp(_ef.jmpbuf)) == NULL) + int _setjmpVal = ::setjmp(_ef.jmpbuf); \ + Exception* _ee = core->exceptionAddr; \ + if (!_setjmpVal) #else #define TRY(core, CATCH_ACTION) { \ ExceptionFrame _ef; \ _ef.beginTry(core); \ - Exception* _ee; \ - if ((_ee=(Exception*)::setjmp(_ef.jmpbuf)) == NULL) + int _setjmpVal = ::setjmp(_ef.jmpbuf); \ + Exception* _ee = core->exceptionAddr; \ + if (!_setjmpVal) #endif #ifdef DEBUGGER #define TRY_UNLESS(core,expr,CATCH_ACTION) { \ ExceptionFrame _ef; \ Exception* _ee; \ - if ((expr) || (_ef.beginTry(core), _ef.catchAction=(CATCH_ACTION), (_ee=(Exception*)::setjmp(_ef.jmpbuf)) == NULL)) + int _setjmpVal = 0; \ + if ((expr) || (_ef.beginTry(core), _ef.catchAction=(CATCH_ACTION), _setjmpVal = ::setjmp(_ef.jmpbuf), _ee=core->exceptionAddr, (_setjmpVal == 0))) #else #define TRY_UNLESS(core,expr,CATCH_ACTION) { \ ExceptionFrame _ef; \ Exception* _ee; \ - if ((expr) || (_ef.beginTry(core), (_ee=(Exception*)::setjmp(_ef.jmpbuf)) == NULL)) + int _setjmpVal = 0; \ + if ((expr) || (_ef.beginTry(core), _setjmpVal = ::setjmp(_ef.jmpbuf), _ee=core->exceptionAddr, (_setjmpVal == 0))) #endif #define CATCH(x) else { _ef.beginCatch(); x = _ee; #define END_CATCH } diff --git a/mozilla/js/tamarin/core/MathUtils.cpp b/mozilla/js/tamarin/core/MathUtils.cpp index 56db2677d1f..c2f5dc0a1b7 100644 --- a/mozilla/js/tamarin/core/MathUtils.cpp +++ b/mozilla/js/tamarin/core/MathUtils.cpp @@ -207,9 +207,9 @@ namespace avmplus return NAN; #else #ifdef AVM10_BIG_ENDIAN - unsigned long nan[2]={0x7fffffff, 0xffffffff}; + uint32 nan[2]={0x7fffffff, 0xffffffff}; #else - unsigned long nan[2]= {0xffffffff, 0x7fffffff}; + uint32 nan[2]= {0xffffffff, 0x7fffffff}; #endif double g = *(double*)nan; return g; diff --git a/mozilla/js/tamarin/core/avmbuild.h b/mozilla/js/tamarin/core/avmbuild.h index 3140b03ec07..e74ad383a45 100644 --- a/mozilla/js/tamarin/core/avmbuild.h +++ b/mozilla/js/tamarin/core/avmbuild.h @@ -99,15 +99,6 @@ #endif #endif -// Some platforms need special treatment of virtual funcs -#ifdef AVMPLUS_MAC - #define AVMPLUS_NOVIRTUAL -#endif - -#ifdef AVMPLUS_ARM - #define AVMPLUS_NOVIRTUAL -#endif - #define AVMPLUS_MIR #define AVMPLUS_INTERP