Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 546840
Collapse All | Expand All

(-)webkitgtk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm (-1 / +1 lines)
Lines 2002-2008 _llint_op_next_pname: Link Here
2002
    loadi 20[PC], t2
2002
    loadi 20[PC], t2
2003
    loadi PayloadOffset[cfr, t2, 8], t2
2003
    loadi PayloadOffset[cfr, t2, 8], t2
2004
    loadp JSPropertyNameIterator::m_jsStrings[t2], t3
2004
    loadp JSPropertyNameIterator::m_jsStrings[t2], t3
2005
    loadi [t3, t0, 8], t3
2005
    loadi PayloadOffset[t3, t0, 8], t3
2006
    addi 1, t0
2006
    addi 1, t0
2007
    storei t0, PayloadOffset[cfr, t1, 8]
2007
    storei t0, PayloadOffset[cfr, t1, 8]
2008
    loadi 4[PC], t1
2008
    loadi 4[PC], t1
(-)webkitgtk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm (-2 / +2 lines)
Lines 299-311 macro assertNotConstant(index) Link Here
299
end
299
end
300
300
301
macro functionForCallCodeBlockGetter(targetRegister)
301
macro functionForCallCodeBlockGetter(targetRegister)
302
    loadp Callee[cfr], targetRegister
302
    loadp Callee + PayloadOffset[cfr], targetRegister
303
    loadp JSFunction::m_executable[targetRegister], targetRegister
303
    loadp JSFunction::m_executable[targetRegister], targetRegister
304
    loadp FunctionExecutable::m_codeBlockForCall[targetRegister], targetRegister
304
    loadp FunctionExecutable::m_codeBlockForCall[targetRegister], targetRegister
305
end
305
end
306
306
307
macro functionForConstructCodeBlockGetter(targetRegister)
307
macro functionForConstructCodeBlockGetter(targetRegister)
308
    loadp Callee[cfr], targetRegister
308
    loadp Callee + PayloadOffset[cfr], targetRegister
309
    loadp JSFunction::m_executable[targetRegister], targetRegister
309
    loadp JSFunction::m_executable[targetRegister], targetRegister
310
    loadp FunctionExecutable::m_codeBlockForConstruct[targetRegister], targetRegister
310
    loadp FunctionExecutable::m_codeBlockForConstruct[targetRegister], targetRegister
311
end
311
end
(-)webkitgtk/Source/JavaScriptCore/interpreter/ProtoCallFrame.h (-2 / +2 lines)
Lines 36-42 struct ProtoCallFrame { Link Here
36
    Register calleeValue;
36
    Register calleeValue;
37
    Register argCountAndCodeOriginValue;
37
    Register argCountAndCodeOriginValue;
38
    Register thisArg;
38
    Register thisArg;
39
    size_t paddedArgCount;
39
    uint32_t paddedArgCount;
40
    JSValue *args;
40
    JSValue *args;
41
41
42
    void init(CodeBlock*, JSScope*, JSObject*, JSValue, int, JSValue* otherArgs = 0);
42
    void init(CodeBlock*, JSScope*, JSObject*, JSValue, int, JSValue* otherArgs = 0);
Lines 53-59 struct ProtoCallFrame { Link Here
53
    int argumentCountIncludingThis() const { return argCountAndCodeOriginValue.payload(); }
53
    int argumentCountIncludingThis() const { return argCountAndCodeOriginValue.payload(); }
54
    int argumentCount() const { return argumentCountIncludingThis() - 1; }
54
    int argumentCount() const { return argumentCountIncludingThis() - 1; }
55
    void setArgumentCountIncludingThis(int count) { argCountAndCodeOriginValue.payload() = count; }
55
    void setArgumentCountIncludingThis(int count) { argCountAndCodeOriginValue.payload() = count; }
56
    void setPaddedArgsCount(size_t argCount) { paddedArgCount = argCount; }
56
    void setPaddedArgsCount(uint32_t argCount) { paddedArgCount = argCount; }
57
57
58
    void clearCurrentVPC() { argCountAndCodeOriginValue.tag() = 0; }
58
    void clearCurrentVPC() { argCountAndCodeOriginValue.tag() = 0; }
59
    
59
    
(-)webkitgtk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (-2 / +2 lines)
Lines 1354-1360 LLINT_SLOW_PATH_DECL(slow_path_get_from_ Link Here
1354
            CodeBlock* codeBlock = exec->codeBlock();
1354
            CodeBlock* codeBlock = exec->codeBlock();
1355
            ConcurrentJITLocker locker(codeBlock->m_lock);
1355
            ConcurrentJITLocker locker(codeBlock->m_lock);
1356
            pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), scope->structure());
1356
            pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), scope->structure());
1357
            pc[6].u.operand = slot.cachedOffset();
1357
            pc[6].u.pointer = reinterpret_cast<void*>(slot.cachedOffset());
1358
        }
1358
        }
1359
    }
1359
    }
1360
1360
Lines 1381-1387 LLINT_SLOW_PATH_DECL(slow_path_put_to_sc Link Here
1381
        if (slot.isCacheable() && slot.base() == scope && scope->structure()->propertyAccessesAreCacheable()) {
1381
        if (slot.isCacheable() && slot.base() == scope && scope->structure()->propertyAccessesAreCacheable()) {
1382
            ConcurrentJITLocker locker(codeBlock->m_lock);
1382
            ConcurrentJITLocker locker(codeBlock->m_lock);
1383
            pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), scope->structure());
1383
            pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), scope->structure());
1384
            pc[6].u.operand = slot.cachedOffset();
1384
            pc[6].u.pointer = reinterpret_cast<void*>(slot.cachedOffset());
1385
        }
1385
        }
1386
    }
1386
    }
1387
1387
(-)webkitgtk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm (-12 / +12 lines)
Lines 282-288 macro doCallToJavaScript(makeCall, doRet Link Here
282
    storep temp3, CodeBlock+4[cfr, temp1, 8]
282
    storep temp3, CodeBlock+4[cfr, temp1, 8]
283
    btinz temp1, .copyHeaderLoop
283
    btinz temp1, .copyHeaderLoop
284
284
285
    loadi ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
285
    loadi PayloadOffset + ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
286
    subi 1, temp2
286
    subi 1, temp2
287
    loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3
287
    loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3
288
    subi 1, temp3
288
    subi 1, temp3
Lines 321-327 macro doCallToJavaScript(makeCall, doRet Link Here
321
321
322
.calleeFramePopped:
322
.calleeFramePopped:
323
    loadp Callee[cfr], temp3 # VM.topCallFrame
323
    loadp Callee[cfr], temp3 # VM.topCallFrame
324
    loadp ScopeChain[cfr], temp4
324
    loadp ScopeChain + PayloadOffset[cfr], temp4
325
    storep temp4, [temp3]
325
    storep temp4, [temp3]
326
326
327
    doReturn(extraStackSpace)
327
    doReturn(extraStackSpace)
Lines 598-604 end Link Here
598
598
599
599
600
macro branchIfException(label)
600
macro branchIfException(label)
601
    loadp ScopeChain[cfr], t3
601
    loadp ScopeChain + PayloadOffset[cfr], t3
602
    andp MarkedBlockMask, t3
602
    andp MarkedBlockMask, t3
603
    loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
603
    loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
604
    bieq VM::m_exception + TagOffset[t3], EmptyValueTag, .noException
604
    bieq VM::m_exception + TagOffset[t3], EmptyValueTag, .noException
Lines 2039-2045 _llint_op_catch: Link Here
2039
    # the interpreter's throw trampoline (see _llint_throw_trampoline).
2039
    # the interpreter's throw trampoline (see _llint_throw_trampoline).
2040
    # The throwing code must have known that we were throwing to the interpreter,
2040
    # The throwing code must have known that we were throwing to the interpreter,
2041
    # and have set VM::targetInterpreterPCForThrow.
2041
    # and have set VM::targetInterpreterPCForThrow.
2042
    loadp ScopeChain[cfr], t3
2042
    loadp ScopeChain + PayloadOffset[cfr], t3
2043
    andp MarkedBlockMask, t3
2043
    andp MarkedBlockMask, t3
2044
    loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2044
    loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2045
    loadp VM::callFrameForThrow[t3], cfr
2045
    loadp VM::callFrameForThrow[t3], cfr
Lines 2159-2165 macro nativeCallTrampoline(executableOff Link Here
2159
        andp MarkedBlockMask, t3
2159
        andp MarkedBlockMask, t3
2160
        loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2160
        loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2161
    elsif C_LOOP
2161
    elsif C_LOOP
2162
        loadp ScopeChain[cfr], t3
2162
        loadp ScopeChain + PayloadOffset[cfr], t3
2163
        andp MarkedBlockMask, t3
2163
        andp MarkedBlockMask, t3
2164
        loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2164
        loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2165
        storep cfr, VM::topCallFrame[t3]
2165
        storep cfr, VM::topCallFrame[t3]
Lines 2172-2178 macro nativeCallTrampoline(executableOff Link Here
2172
        move t2, cfr
2172
        move t2, cfr
2173
        cloopCallNative executableOffsetToFunction[t1]
2173
        cloopCallNative executableOffsetToFunction[t1]
2174
        restoreReturnAddressBeforeReturn(t3)
2174
        restoreReturnAddressBeforeReturn(t3)
2175
        loadp ScopeChain[cfr], t3
2175
        loadp ScopeChain + PayloadOffset[cfr], t3
2176
        andp MarkedBlockMask, t3
2176
        andp MarkedBlockMask, t3
2177
        loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2177
        loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
2178
    else
2178
    else
Lines 2212-2218 macro resolveScope() Link Here
2212
    addi 1, t2
2212
    addi 1, t2
2213
2213
2214
.resolveScopeAfterActivationCheck:
2214
.resolveScopeAfterActivationCheck:
2215
    loadp ScopeChain[cfr], t0
2215
    loadp ScopeChain + PayloadOffset[cfr], t0
2216
    btiz t2, .resolveScopeLoopEnd
2216
    btiz t2, .resolveScopeLoopEnd
2217
2217
2218
.resolveScopeLoop:
2218
.resolveScopeLoop:
Lines 2271-2283 _llint_op_resolve_scope: Link Here
2271
2271
2272
macro loadWithStructureCheck(operand, slowPath)
2272
macro loadWithStructureCheck(operand, slowPath)
2273
    loadisFromInstruction(operand, t0)
2273
    loadisFromInstruction(operand, t0)
2274
    loadp [cfr, t0, 8], t0
2274
    loadp PayloadOffset[cfr, t0, 8], t0
2275
    loadpFromInstruction(5, t1)
2275
    loadpFromInstruction(5, t1)
2276
    bpneq JSCell::m_structure[t0], t1, slowPath
2276
    bpneq JSCell::m_structure[t0], t1, slowPath
2277
end
2277
end
2278
2278
2279
macro getProperty()
2279
macro getProperty()
2280
    loadisFromInstruction(6, t3)
2280
    loadpFromInstruction(6, t3)
2281
    loadPropertyAtVariableOffset(t3, t0, t1, t2)
2281
    loadPropertyAtVariableOffset(t3, t0, t1, t2)
2282
    valueProfile(t1, t2, 28, t0)
2282
    valueProfile(t1, t2, 28, t0)
2283
    loadisFromInstruction(1, t0)
2283
    loadisFromInstruction(1, t0)
Lines 2297-2303 end Link Here
2297
2297
2298
macro getClosureVar()
2298
macro getClosureVar()
2299
    loadp JSVariableObject::m_registers[t0], t0
2299
    loadp JSVariableObject::m_registers[t0], t0
2300
    loadisFromInstruction(6, t3)
2300
    loadpFromInstruction(6, t3)
2301
    loadp TagOffset[t0, t3, 8], t1
2301
    loadp TagOffset[t0, t3, 8], t1
2302
    loadp PayloadOffset[t0, t3, 8], t2
2302
    loadp PayloadOffset[t0, t3, 8], t2
2303
    valueProfile(t1, t2, 28, t0)
2303
    valueProfile(t1, t2, 28, t0)
Lines 2356-2362 _llint_op_get_from_scope: Link Here
2356
macro putProperty()
2356
macro putProperty()
2357
    loadisFromInstruction(3, t1)
2357
    loadisFromInstruction(3, t1)
2358
    loadConstantOrVariable(t1, t2, t3)
2358
    loadConstantOrVariable(t1, t2, t3)
2359
    loadisFromInstruction(6, t1)
2359
    loadpFromInstruction(6, t1)
2360
    storePropertyAtVariableOffset(t1, t0, t2, t3)
2360
    storePropertyAtVariableOffset(t1, t0, t2, t3)
2361
end
2361
end
2362
2362
Lines 2374-2380 macro putClosureVar() Link Here
2374
    loadisFromInstruction(3, t1)
2374
    loadisFromInstruction(3, t1)
2375
    loadConstantOrVariable(t1, t2, t3)
2375
    loadConstantOrVariable(t1, t2, t3)
2376
    loadp JSVariableObject::m_registers[t0], t0
2376
    loadp JSVariableObject::m_registers[t0], t0
2377
    loadisFromInstruction(6, t1)
2377
    loadpFromInstruction(6, t1)
2378
    storei t2, TagOffset[t0, t1, 8]
2378
    storei t2, TagOffset[t0, t1, 8]
2379
    storei t3, PayloadOffset[t0, t1, 8]
2379
    storei t3, PayloadOffset[t0, t1, 8]
2380
end
2380
end
(-)webkitgtk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm (-5 / +5 lines)
Lines 171-177 macro doCallToJavaScript(makeCall, doRet Link Here
171
    storep temp3, CodeBlock[cfr, temp1, 8]
171
    storep temp3, CodeBlock[cfr, temp1, 8]
172
    btinz temp1, .copyHeaderLoop
172
    btinz temp1, .copyHeaderLoop
173
173
174
    loadi ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
174
    loadi PayloadOffset + ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
175
    subi 1, temp2
175
    subi 1, temp2
176
    loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3
176
    loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3
177
    subi 1, temp3
177
    subi 1, temp3
Lines 2047-2053 macro loadWithStructureCheck(operand, sl Link Here
2047
end
2047
end
2048
2048
2049
macro getProperty()
2049
macro getProperty()
2050
    loadisFromInstruction(6, t1)
2050
    loadpFromInstruction(6, t1)
2051
    loadPropertyAtVariableOffset(t1, t0, t2)
2051
    loadPropertyAtVariableOffset(t1, t0, t2)
2052
    valueProfile(t2, 7, t0)
2052
    valueProfile(t2, 7, t0)
2053
    loadisFromInstruction(1, t0)
2053
    loadisFromInstruction(1, t0)
Lines 2064-2070 end Link Here
2064
2064
2065
macro getClosureVar()
2065
macro getClosureVar()
2066
    loadp JSVariableObject::m_registers[t0], t0
2066
    loadp JSVariableObject::m_registers[t0], t0
2067
    loadisFromInstruction(6, t1)
2067
    loadpFromInstruction(6, t1)
2068
    loadq [t0, t1, 8], t0
2068
    loadq [t0, t1, 8], t0
2069
    valueProfile(t0, 7, t1)
2069
    valueProfile(t0, 7, t1)
2070
    loadisFromInstruction(1, t1)
2070
    loadisFromInstruction(1, t1)
Lines 2121-2127 _llint_op_get_from_scope: Link Here
2121
macro putProperty()
2121
macro putProperty()
2122
    loadisFromInstruction(3, t1)
2122
    loadisFromInstruction(3, t1)
2123
    loadConstantOrVariable(t1, t2)
2123
    loadConstantOrVariable(t1, t2)
2124
    loadisFromInstruction(6, t1)
2124
    loadpFromInstruction(6, t1)
2125
    storePropertyAtVariableOffset(t1, t0, t2)
2125
    storePropertyAtVariableOffset(t1, t0, t2)
2126
end
2126
end
2127
2127
Lines 2138-2144 macro putClosureVar() Link Here
2138
    loadisFromInstruction(3, t1)
2138
    loadisFromInstruction(3, t1)
2139
    loadConstantOrVariable(t1, t2)
2139
    loadConstantOrVariable(t1, t2)
2140
    loadp JSVariableObject::m_registers[t0], t0
2140
    loadp JSVariableObject::m_registers[t0], t0
2141
    loadisFromInstruction(6, t1)
2141
    loadpFromInstruction(6, t1)
2142
    storeq t2, [t0, t1, 8]
2142
    storeq t2, [t0, t1, 8]
2143
end
2143
end
2144
2144

Return to bug 546840