Changeset 636 for trunk/src


Ignore:
Timestamp:
Mar 5, 2010, 7:50:20 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

webkit: Appliied r592 to a local javaScriptCore.

Location:
trunk/src/3rdparty/webkit/JavaScriptCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp

    r561 r636  
    3737    munmap(m_buffer, ((m_max - m_start) + m_maxGlobals) * sizeof(Register));
    3838#elif HAVE(VIRTUALALLOC)
     39
     40
     41
    3942#if PLATFORM(WINCE)
    4043    VirtualFree(m_buffer, DWORD(m_commitEnd) - DWORD(m_buffer), MEM_DECOMMIT);
    4144#endif
    4245    VirtualFree(m_buffer, 0, MEM_RELEASE);
     46
    4347#else
    4448    fastFree(m_buffer);
     
    5155    while (madvise(m_start, (m_max - m_start) * sizeof(Register), MADV_FREE) == -1 && errno == EAGAIN) { }
    5256#elif HAVE(VIRTUALALLOC)
     57
     58
     59
     60
    5361    VirtualFree(m_start, (m_max - m_start) * sizeof(Register), MEM_DECOMMIT);
    5462    m_commitEnd = m_start;
     63
    5564#endif
    5665    m_maxUsed = m_start;
  • trunk/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h

    r561 r636  
    4242#endif
    4343
     44
     45
     46
     47
     48
    4449namespace JSC {
    4550
     
    130135        bool grow(Register* newEnd);
    131136        void shrink(Register* newEnd);
    132        
     137
    133138        void setNumGlobals(size_t numGlobals) { m_numGlobals = numGlobals; }
    134139        int numGlobals() const { return m_numGlobals; }
     
    136141
    137142        Register* lastGlobal() const { return m_start - m_numGlobals; }
    138        
     143
    139144        void markGlobals(MarkStack& markStack, Heap* heap) { heap->markConservatively(markStack, lastGlobal(), m_start); }
    140145        void markCallFrames(MarkStack& markStack, Heap* heap) { heap->markConservatively(markStack, m_start, m_end); }
     
    185190        }
    186191    #elif HAVE(VIRTUALALLOC)
     192
     193
     194
     195
     196
     197
     198
     199
     200
     201
     202
     203
     204
     205
    187206        m_buffer = static_cast<Register*>(VirtualAlloc(0, roundUpAllocationSize(bufferLength, commitSize), MEM_RESERVE, PAGE_READWRITE));
    188207        if (!m_buffer) {
     
    205224        }
    206225        m_commitEnd = reinterpret_cast<Register*>(reinterpret_cast<char*>(m_buffer) + committedSize);
    207     #else
    208         /*
     226#endif
     227    #else
     228        /*
    209229         * If neither MMAP nor VIRTUALALLOC are available - use fastMalloc instead.
    210230         *
     
    240260
    241261#if !HAVE(MMAP) && HAVE(VIRTUALALLOC)
     262
     263
     264
     265
     266
     267
     268
     269
     270
     271
     272
    242273        if (newEnd > m_commitEnd) {
    243274            size_t size = roundUpAllocationSize(reinterpret_cast<char*>(newEnd) - reinterpret_cast<char*>(m_commitEnd), commitSize);
     
    253284        }
    254285#endif
     286
    255287
    256288        if (newEnd > m_maxUsed)
  • trunk/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp

    r561 r636  
    6464namespace JSC {
    6565
    66 #if PLATFORM(DARWIN) || PLATFORM(WIN_OS)
     66#if PLATFORM(DARWIN) || PLATFORM(WIN_OS)
    6767#define SYMBOL_STRING(name) "_" #name
    6868#else
     
    143143    "ret" "\n"
    144144);
    145    
     145
    146146asm volatile (
    147147".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     
    155155    "ret" "\n"
    156156);
    157    
     157
    158158#elif COMPILER(GCC) && PLATFORM(X86_64)
    159159
     
    405405    "ret" "\n"
    406406);
    407    
     407
    408408asm volatile (
    409409".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     
    417417    "ret" "\n"
    418418);
    419    
     419
    420420#elif COMPILER(GCC) && PLATFORM(X86_64)
    421421
     
    648648        }
    649649    }
    650      
     650
    651651     __declspec(naked) void ctiOpThrowNotCaught()
    652652     {
     
    709709        return;
    710710    }
    711    
     711
    712712    JSCell* baseCell = asCell(baseValue);
    713713    Structure* structure = baseCell->structure();
     
    741741        return;
    742742    }
    743    
     743
    744744    stubInfo->initPutByIdReplace(structure);
    745745
     
    757757        return;
    758758    }
    759    
     759
    760760    JSGlobalData* globalData = &callFrame->globalData();
    761761
     
    764764        return;
    765765    }
    766    
     766
    767767    if (isJSString(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
    768768        // The tradeoff of compiling an patched inline string length access routine does not seem
     
    810810        if (slotBaseObject->structure()->isDictionary())
    811811            slotBaseObject->setStructure(Structure::fromDictionaryTransition(slotBaseObject->structure()));
    812        
     812
    813813        stubInfo->initGetByIdProto(structure, slotBaseObject->structure());
    814814
     
    840840extern "C" {
    841841
    842 static void jscGeneratedNativeCode() 
     842static void jscGeneratedNativeCode()
    843843{
    844844    // When executing a JIT stub function (which might do an allocation), we hack the return address
     
    850850
    851851struct StackHack {
    852     ALWAYS_INLINE StackHack(JITStackFrame& stackFrame) 
     852    ALWAYS_INLINE StackHack(JITStackFrame& stackFrame)
    853853        : stackFrame(stackFrame)
    854854        , savedReturnAddress(*stackFrame.returnAddressSlot())
     
    857857    }
    858858
    859     ALWAYS_INLINE ~StackHack() 
    860     { 
     859    ALWAYS_INLINE ~StackHack()
     860    {
    861861        *stackFrame.returnAddressSlot() = savedReturnAddress;
    862862    }
     
    996996    if (rightIsNumber && v1.getNumber(left))
    997997        return JSValue::encode(jsNumber(stackFrame.globalData, left + right));
    998    
     998
    999999    CallFrame* callFrame = stackFrame.callFrame;
    10001000
     
    10431043{
    10441044    STUB_INIT_STACK_FRAME(stackFrame);
    1045    
     1045
    10461046    JSGlobalData* globalData = stackFrame.globalData;
    10471047    TimeoutChecker& timeoutChecker = globalData->timeoutChecker;
     
    10511051        VM_THROW_EXCEPTION_AT_END();
    10521052    }
    1053    
     1053
    10541054    return timeoutChecker.ticksUntilNextCheck();
    10551055}
     
    13381338        ASSERT_NOT_REACHED();
    13391339    }
    1340    
     1340
    13411341    ASSERT(listIndex < POLYMORPHIC_LIST_CACHE_SIZE);
    13421342    return prototypeStructureList;
     
    14581458    // At least one of these checks must have failed to get to the slow case.
    14591459    ASSERT(!value.isCell() || !baseVal.isCell() || !proto.isCell()
    1460            || !value.isObject() || !baseVal.isObject() || !proto.isObject() 
     1460           || !value.isObject() || !baseVal.isObject() || !proto.isObject()
    14611461           || (asObject(baseVal)->structure()->typeInfo().flags() & (ImplementsHasInstance | OverridesHasInstance)) != ImplementsHasInstance);
    14621462
     
    14951495
    14961496    CallFrame* callFrame = stackFrame.callFrame;
    1497    
     1497
    14981498    JSObject* baseObj = stackFrame.args[0].jsValue().toObject(callFrame);
    14991499
     
    16001600    ExecutableBase* executable = callee->executable();
    16011601    JITCode& jitCode = executable->generatedJITCode();
    1602    
     1602
    16031603    CodeBlock* codeBlock = 0;
    16041604    if (!executable->isHostFunction())
     
    18661866    return JSValue::encode(result);
    18671867}
    1868    
     1868
    18691869DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_val_string)
    18701870{
    18711871    STUB_INIT_STACK_FRAME(stackFrame);
    1872    
     1872
    18731873    CallFrame* callFrame = stackFrame.callFrame;
    18741874    JSGlobalData* globalData = stackFrame.globalData;
    1875    
     1875
    18761876    JSValue baseValue = stackFrame.args[0].jsValue();
    18771877    JSValue subscript = stackFrame.args[1].jsValue();
    1878    
     1878
    18791879    JSValue result;
    1880    
     1880
    18811881    if (LIKELY(subscript.isUInt32())) {
    18821882        uint32_t i = subscript.asUInt32();
     
    18921892        result = baseValue.get(callFrame, property);
    18931893    }
    1894    
    1895     CHECK_FOR_EXCEPTION_AT_END();
    1896     return JSValue::encode(result);
    1897 }
    1898    
     1894
     1895    CHECK_FOR_EXCEPTION_AT_END();
     1896    return JSValue::encode(result);
     1897}
     1898
    18991899DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_val_byte_array)
    19001900{
    19011901    STUB_INIT_STACK_FRAME(stackFrame);
    1902    
     1902
    19031903    CallFrame* callFrame = stackFrame.callFrame;
    19041904    JSGlobalData* globalData = stackFrame.globalData;
    1905    
     1905
    19061906    JSValue baseValue = stackFrame.args[0].jsValue();
    19071907    JSValue subscript = stackFrame.args[1].jsValue();
    1908    
     1908
    19091909    JSValue result;
    19101910
     
    19231923        result = baseValue.get(callFrame, property);
    19241924    }
    1925    
     1925
    19261926    CHECK_FOR_EXCEPTION_AT_END();
    19271927    return JSValue::encode(result);
     
    19971997{
    19981998    STUB_INIT_STACK_FRAME(stackFrame);
    1999    
     1999
    20002000    CallFrame* callFrame = stackFrame.callFrame;
    20012001    JSGlobalData* globalData = stackFrame.globalData;
    2002    
     2002
    20032003    JSValue baseValue = stackFrame.args[0].jsValue();
    20042004    JSValue subscript = stackFrame.args[1].jsValue();
    20052005    JSValue value = stackFrame.args[2].jsValue();
    2006    
     2006
    20072007    if (LIKELY(subscript.isUInt32())) {
    20082008        uint32_t i = subscript.asUInt32();
    20092009        if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
    20102010            JSByteArray* jsByteArray = asByteArray(baseValue);
    2011            
     2011
    20122012            // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
    20132013            if (value.isInt32()) {
     
    20152015                return;
    20162016            } else {
    2017                 double dValue = 0;               
     2017                double dValue = 0;
    20182018                if (value.getNumber(dValue)) {
    20192019                    jsByteArray->setIndex(i, dValue);
     
    20332033        }
    20342034    }
    2035    
     2035
    20362036    CHECK_FOR_EXCEPTION_AT_END();
    20372037}
     
    20592059    return result;
    20602060}
    2061    
     2061
    20622062DEFINE_STUB_FUNCTION(int, op_load_varargs)
    20632063{
     
    20802080        int32_t expectedParams = callFrame->callee()->jsExecutable()->parameterCount();
    20812081        int32_t inplaceArgs = min(providedParams, expectedParams);
    2082        
     2082
    20832083        Register* inplaceArgsDst = callFrame->registers() + argsOffset;
    20842084
     
    20882088        Register* inplaceArgsSrc = callFrame->registers() - RegisterFile::CallFrameHeaderSize - expectedParams;
    20892089        Register* inplaceArgsSrc2 = inplaceArgsSrc - providedParams - 1 + inplaceArgs;
    2090  
     2090
    20912091        // First step is to copy the "expected" parameters from their normal location relative to the callframe
    20922092        while (inplaceArgsDst < inplaceArgsEnd)
     
    23452345    start:
    23462346    if (src2.isUndefined()) {
    2347         return src1.isNull() || 
     2347        return src1.isNull() ||
    23482348               (src1.isCell() && asCell(src1)->structure()->typeInfo().masqueradesAsUndefined()) ||
    23492349               src1.isUndefined();
    23502350    }
    2351    
     2351
    23522352    if (src2.isNull()) {
    2353         return src1.isUndefined() || 
     2353        return src1.isUndefined() ||
    23542354               (src1.isCell() && asCell(src1)->structure()->typeInfo().masqueradesAsUndefined()) ||
    23552355               src1.isNull();
     
    23872387        return d == 0.0;
    23882388    }
    2389    
     2389
    23902390    if (src1.isUndefined())
    23912391        return src2.isCell() && asCell(src2)->structure()->typeInfo().masqueradesAsUndefined();
    2392    
     2392
    23932393    if (src1.isNull())
    23942394        return src2.isCell() && asCell(src2)->structure()->typeInfo().masqueradesAsUndefined();
     
    23992399        if (src2.isInt32())
    24002400            return static_cast<JSString*>(cell1)->value().toDouble() == src2.asInt32();
    2401            
     2401
    24022402        if (src2.isDouble())
    24032403            return static_cast<JSString*>(cell1)->value().toDouble() == src2.asDouble();
     
    25532553    JSFunction* func = function->make(callFrame, callFrame->scopeChain());
    25542554
    2555     /* 
     2555    /*
    25562556        The Identifier in a FunctionExpression can be referenced from inside
    25572557        the FunctionExpression's FunctionBody to allow the function to call
     
    26632663
    26642664    Interpreter* interpreter = stackFrame.globalData->interpreter;
    2665    
     2665
    26662666    JSValue funcVal = stackFrame.args[0].jsValue();
    26672667    int registerOffset = stackFrame.args[1].int32();
  • trunk/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp

    r561 r636  
    144144class Heap::Thread {
    145145public:
    146     Thread(pthread_t pthread, const PlatformThread& platThread, void* base) 
     146    Thread(pthread_t pthread, const PlatformThread& platThread, void* base)
    147147        : posixThread(pthread)
    148148        , platformThread(platThread)
     
    188188    }
    189189#endif // PLATFORM(SYMBIAN)
    190    
     190
    191191    memset(&primaryHeap, 0, sizeof(CollectorHeap));
    192192    memset(&numberHeap, 0, sizeof(CollectorHeap));