Re: [webkit-dev] stack alignment bug
Zoltan, I filed a bug here: https://bugs.webkit.org/show_bug.cgi?id=26164 Stack is originally aligned then jit code destroys it; and, some data structure or point to double is not aligned and I'm still trying to find where they are. I'm not sure how the fake stack would be, would you mind explains a bit more? Did you face same problem? Thanks also for your articles that gives new ideas. rgds joe --- On Wed, 6/3/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] stack alignment bug To: x yz last...@yahoo.com Cc: webkit-dev@lists.webkit.org Date: Wednesday, June 3, 2009, 7:35 PM Hi, true, some architectures have strict policies for stack handling. Perhaps the worst one is PowerPC with its organized stack frame (back chains, pre-defined register save areas, etc). I think a fake stack pointer for JIT can solve the x86 compatibility problem. 1) allocate enough aligned stack space for the worst case when you enter to JIT 2) the fake stack pointer should use this pre-allocated stack frame. Zoltan I don't know how to file bug so I posted here. In privateCompileCTIMachineTrampolines() there are multiple align() to align code on 16byte margin, yet, the stack can be put on 32bit margin that causes crush. Suppose original stack is aligned to 8/16bytes, the above function frequently pop/push regT3 that makes stack mis-aligned. Then int to double conversion uses stack that will fail. rgds joe ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] stack alignment bug
I don't know how to file bug so I posted here. In privateCompileCTIMachineTrampolines() there are multiple align() to align code on 16byte margin, yet, the stack can be put on 32bit margin that causes crush. Suppose original stack is aligned to 8/16bytes, the above function frequently pop/push regT3 that makes stack mis-aligned. Then int to double conversion uses stack that will fail. rgds joe ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] does jit uses self-modifying code?
Hi, Appreciate for help. If the answer is yes may I know here are they. MIPS webkit-1.1.1, cmd using: jsc shell.js In JavaScriptCore/runtime/JSObject.h:527 asCell()-put(exec, propertyName, value, slot); this one will call a function, yet the function entry address got is invalid. 0x006b17ec 527 asCell()-put(exec, propertyName, value, slot); (gdb) x/10i $pc 0x6b17ec _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+196: lw gp,24(s8) 0x6b17f0 _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+200: movev1,v0 0x6b17f4 _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+204: lw a0,0(v1) 0x6b17f8 _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+208: lw a3,60(s8) 0x6b17fc _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+212: lw v0,64(s8) 0x6b1800 _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+216: sw v0,16(sp) 0x6b1804 _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+220: lw t9,68(a0) 0x6b1808 _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+224: movea0,v1 0x6b180c _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+228: lw a1,52(s8) 0x6b1810 _ZN3JSC10JSValuePtr3putEPNS_9ExecStateERKNS_10IdentifierES0_RNS_15PutPropertySlotE+232: lw a2,56(s8) the entry got is $t9=0x2bc that is wrong. rgds joe --- On Sat, 5/9/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] random seg fault on MIPS platform To: webkit-dev@lists.webkit.org Date: Saturday, May 9, 2009, 1:24 AM Hi, 50% of time when I use gdb then arith functions works. it may fail at 1st, or 3rd try, and 100% fail w/o gdb. I just use jsc to do sth like 5%2, 5*3, etc. It is with in call of ctiTrampoline(code, registerFile, callFrame, jexception, pptr, globalData), jit code executed and may be in last line of op_mod() when it tried to convert result, gdb simply shows segment fault, or PC stops at an non-coded area, w/o gdb it says invalid instruction. It may be in JITcell,h in ALWAYS_INLINE double JSValuePtr::toNumber(ExecState* exec) const { return JSImmediate::isImmediate(asValue()) ? JSImmediate::toDouble(asValue()) : asCell()-toNumber(exec); } due to exec pointer wrong. if I continue to use same arithmatic function the generated jit code won't call op_mod() unless it is the 1st time, I think it is because jit code is already there. If another thread handles the real operation and not sync'd then it may be the case. Note I use BCM chip with two CPUs - BCM customized SMP and BCM Linux. when it works, before and after ctiTrampoline() the stack is balanced and registers are ok. where is the jit stack and how to check its balance? when it fails, stacks shows we are nearby jit code - the code w/o calling OP_mod() CPP function as it fails at 3rd try. But PC points to a data structure: any comments? thanks a lot!! rgds joe // (gdb) c Continuing. Program received signal SIGILL, Illegal instruction. 0x2aacd000 in ?? () (gdb) where #0 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aacd000. ... #1 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aaccfff. Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) backtrace #0 0x2aacd000 in ?? () #1 0x2aacd000 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) p/x $sp $1 = 0x7fa439d8 (gdb) p/x $pc $2 = 0x2aacd000 (gdb) p/x $t9 $3 = 0x2aac9588 (gdb) x/10i $t9 = jit code, no actual call to op_mod() cpp function 0x2aac9588: sw ra,-40(s5) 0x2aac958c: lui s7,0x0 0x2aac9590: ori s7,s7,0xa 0x2aac9594: sw s7,0(s5) 0x2aac9598: lui s7,0x0 0x2aac959c: ori s7,s7,0xa 0x2aac95a0: sw s7,8(s5) 0x2aac95a4: lui v0,0x0 0x2aac95a8: ori v0,v0,0xa 0x2aac95ac: sw v0,32(s5) (gdb) 0x2aac95b0: lui v0,0x 0x2aac95b4: ori v0,v0,0x 0x2aac95b8: sw v0,32(s5) 0x2aac95bc: lw at,-40(s5) 0x2aac95c0: nop 0x2aac95c4: addiu sp,sp,-4 0x2aac95c8: sw at,0(sp) 0x2aac95cc: lw ra,0(sp) 0x2aac95d0: addiu sp,sp,4 0x2aac95d4: jr ra 0x2aac95d8: nop (gdb) p/x $ra //$ra = tobe returned addr after ctiTrampoline(), correct $4 = 0x676d64 (gdb) x/10i $pc //sth not patched well?? 0x2aacd000: 0x4941444a 0x2aacd004: jalx 0x21a5a881 0x2aacd008: j 0x2984c8b4 0x2aacd00c: andi at,s3,0x3134 0x2aacd010: 0x6d202c30 0x2aacd014: 0x7a69735f 0x2aacd018: 0x66373d65 0x2aacd01c
Re: [webkit-dev] compiling the jsc alone
I can make Program/jsc rgds joe --- On Thu, 5/21/09, haithem rahmani haithem.rahm...@gmail.com wrote: From: haithem rahmani haithem.rahm...@gmail.com Subject: [webkit-dev] compiling the jsc alone To: webkit-dev@lists.webkit.org Date: Thursday, May 21, 2009, 1:10 AM Hi, I tried to compile the JavaScriptCore alone using the Scripts/build-jsc script but I've found that the script does nothing when building for GTK. Is there any other way to do that? regards. -Inline Attachment Follows- ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] Webkit SMp support
Hi, Did you tried to run webkit on SMP? if yes which platform? SMP are different, I guess there may not be much space for webkit to be optimized for SMP, but OS shall take care of it. Applications may also be organized with SMP in mind. If CPU usage is low and you feel speed is low, it indicates sth not perfect yet it is still not direct to SMP. If one CPU is busy and others are free, then we need to investigate on OS part first I think. rgds joe --- On Tue, 5/12/09, vinay harugop vinc...@gmail.com wrote: From: vinay harugop vinc...@gmail.com Subject: [webkit-dev] Webkit SMp support To: webkit-dev@lists.webkit.org Date: Tuesday, May 12, 2009, 3:26 PM hi, Recently I read the Multi-processor support coming for Firefox. http://mozillalinks.org/wp/2009/05/multi-processor-support-coming-for-firefox/ I would like analyze webkit behaviour on a single core and multi core system. I hope that this is the right place for the discussion to put my question. I could find many threads are being created within webkit, i used android port of webkit for this. Modifying the procstat revealed that these threads shows the CPU affinity and some tasks get bounced across different CPUs. So on multi processor system defintly webkit should get full advantage and I see webkit should fly on SMP. Could some one tell what are the other aspects to check in webkit for multi core platfrom? how about Javascritpcore , sunspider, DOM, input content parsing, image files handling. Any hints towards optimization for SMP in webkit ? OR is it already complient/Done ? Are there any tools in general avaialble to measure/benchmark browser behaviour? thanks -Vinay -Inline Attachment Follows- ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] Looking for MIPS asm/JIT consultant
We are looking for people of skill in MIPS asm/jit debug expertise as contractor: 1. Experience in writing or porting assemblers, familar with MIP32 o32 and 32bit X86 instruction/calling convention 2. Experience in WebKit-JIT / OpenJIT or similar project 3. able to start debug at short notice, work out test plan later on. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] random seg fault on MIPS platform
Hi, 50% of time when I use gdb then arith functions works. it may fail at 1st, or 3rd try, and 100% fail w/o gdb. I just use jsc to do sth like 5%2, 5*3, etc. It is with in call of ctiTrampoline(code, registerFile, callFrame, jexception, pptr, globalData), jit code executed and may be in last line of op_mod() when it tried to convert result, gdb simply shows segment fault, or PC stops at an non-coded area, w/o gdb it says invalid instruction. It may be in JITcell,h in ALWAYS_INLINE double JSValuePtr::toNumber(ExecState* exec) const { return JSImmediate::isImmediate(asValue()) ? JSImmediate::toDouble(asValue()) : asCell()-toNumber(exec); } due to exec pointer wrong. if I continue to use same arithmatic function the generated jit code won't call op_mod() unless it is the 1st time, I think it is because jit code is already there. If another thread handles the real operation and not sync'd then it may be the case. Note I use BCM chip with two CPUs - BCM customized SMP and BCM Linux. when it works, before and after ctiTrampoline() the stack is balanced and registers are ok. where is the jit stack and how to check its balance? when it fails, stacks shows we are nearby jit code - the code w/o calling OP_mod() CPP function as it fails at 3rd try. But PC points to a data structure: any comments? thanks a lot!! rgds joe // (gdb) c Continuing. Program received signal SIGILL, Illegal instruction. 0x2aacd000 in ?? () (gdb) where #0 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aacd000. ... #1 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aaccfff. Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) backtrace #0 0x2aacd000 in ?? () #1 0x2aacd000 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) p/x $sp $1 = 0x7fa439d8 (gdb) p/x $pc $2 = 0x2aacd000 (gdb) p/x $t9 $3 = 0x2aac9588 (gdb) x/10i $t9 = jit code, no actual call to op_mod() cpp function 0x2aac9588: sw ra,-40(s5) 0x2aac958c: lui s7,0x0 0x2aac9590: ori s7,s7,0xa 0x2aac9594: sw s7,0(s5) 0x2aac9598: lui s7,0x0 0x2aac959c: ori s7,s7,0xa 0x2aac95a0: sw s7,8(s5) 0x2aac95a4: lui v0,0x0 0x2aac95a8: ori v0,v0,0xa 0x2aac95ac: sw v0,32(s5) (gdb) 0x2aac95b0: lui v0,0x 0x2aac95b4: ori v0,v0,0x 0x2aac95b8: sw v0,32(s5) 0x2aac95bc: lw at,-40(s5) 0x2aac95c0: nop 0x2aac95c4: addiu sp,sp,-4 0x2aac95c8: sw at,0(sp) 0x2aac95cc: lw ra,0(sp) 0x2aac95d0: addiu sp,sp,4 0x2aac95d4: jr ra 0x2aac95d8: nop (gdb) p/x $ra //$ra = tobe returned addr after ctiTrampoline(), correct $4 = 0x676d64 (gdb) x/10i $pc //sth not patched well?? 0x2aacd000: 0x4941444a 0x2aacd004: jalx0x21a5a881 0x2aacd008: j 0x2984c8b4 0x2aacd00c: andiat,s3,0x3134 0x2aacd010: 0x6d202c30 0x2aacd014: 0x7a69735f 0x2aacd018: 0x66373d65 0x2aacd01c: xoris3,t1,0x3461 0x2aacd020: ori t0,t1,0x3864 0x2aacd024: addit4,at,10544 (gdb) 0x2aacd028: jalx0x25b185d9 0x2aacd02c: j 0x28c0f594 0x2aacd030: andis0,at,0x3030 0x2aacd034: 0x720a0a38 0x2aacd038: 0x64496765 0x2aacd03c: j 0x28e0c4f4 0x2aacd040: nop 0x2aacd044: nop 0x2aacd048: nop 0x2aacd04c: nop 0x2aacd028: jalx0x25b185d9 0x2aacd02c: j 0x28c0f594 0x2aacd030: andis0,at,0x3030 0x2aacd034: 0x720a0a38 0x2aacd038: 0x64496765 0x2aacd03c: j 0x28e0c4f4 0x2aacd040: nop ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] random seg fault on MIPS platform
Zoltan, I appreciate very much your comments, that's sth in my mind but no clue, when 1st/2nd run ok and 3rd fail, I also doubt SMP. The case just as you mentioned. But, what's the solution? why X86 gcc version has no such problem? rgds joe --- On Sat, 5/9/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] random seg fault on MIPS platform To: last...@yahoo.com Cc: webkit-dev@lists.webkit.org Date: Saturday, May 9, 2009, 2:11 AM Hi, I don't know anything about MIPS architecture (only x86, ARM and PowerPC), but we have experienced similar things on ARM, until we have found the gcc's __clear_cache(void* begin, void* end) function. It calls a kernel utility, which flushes out the data cache (some mrc instructions can only executed on kernel level). 1) The program always fails without gdb, because the instructions are not flushed out to the SDRAM. Instruction cache always loads the instructions directly form the SDRAM. 2) With gdb, it is sometimes work, sometimes not. GDB itself allocates a big amount of memory, so the cache is partly flushed out when it stops at a breakpoint. Note that, the disassembly shows the content of the data cache, not the instruction cache. Zoltan Hi, 50% of time when I use gdb then arith functions works. it may fail at 1st, or 3rd try, and 100% fail w/o gdb. I just use jsc to do sth like 5%2, 5*3, etc. It is with in call of ctiTrampoline(code, registerFile, callFrame, jexception, pptr, globalData), jit code executed and may be in last line of op_mod() when it tried to convert result, gdb simply shows segment fault, or PC stops at an non-coded area, w/o gdb it says invalid instruction. It may be in JITcell,h in ALWAYS_INLINE double JSValuePtr::toNumber(ExecState* exec) const { return JSImmediate::isImmediate(asValue()) ? JSImmediate::toDouble(asValue()) : asCell()-toNumber(exec); } due to exec pointer wrong. if I continue to use same arithmatic function the generated jit code won't call op_mod() unless it is the 1st time, I think it is because jit code is already there. If another thread handles the real operation and not sync'd then it may be the case. Note I use BCM chip with two CPUs - BCM customized SMP and BCM Linux. when it works, before and after ctiTrampoline() the stack is balanced and registers are ok. where is the jit stack and how to check its balance? when it fails, stacks shows we are nearby jit code - the code w/o calling OP_mod() CPP function as it fails at 3rd try. But PC points to a data structure: any comments? thanks a lot!! rgds joe // (gdb) c Continuing. Program received signal SIGILL, Illegal instruction. 0x2aacd000 in ?? () (gdb) where #0 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aacd000. ... #1 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aaccfff. Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) backtrace #0 0x2aacd000 in ?? () #1 0x2aacd000 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) p/x $sp $1 = 0x7fa439d8 (gdb) p/x $pc $2 = 0x2aacd000 (gdb) p/x $t9 $3 = 0x2aac9588 (gdb) x/10i $t9 = jit code, no actual call to op_mod() cpp function 0x2aac9588: sw ra,-40(s5) 0x2aac958c: lui s7,0x0 0x2aac9590: ori s7,s7,0xa 0x2aac9594: sw s7,0(s5) 0x2aac9598: lui s7,0x0 0x2aac959c: ori s7,s7,0xa 0x2aac95a0: sw s7,8(s5) 0x2aac95a4: lui v0,0x0 0x2aac95a8: ori v0,v0,0xa 0x2aac95ac: sw v0,32(s5) (gdb) 0x2aac95b0: lui v0,0x 0x2aac95b4: ori v0,v0,0x 0x2aac95b8: sw v0,32(s5) 0x2aac95bc: lw at,-40(s5) 0x2aac95c0: nop 0x2aac95c4: addiu sp,sp,-4 0x2aac95c8: sw at,0(sp) 0x2aac95cc: lw ra,0(sp) 0x2aac95d0: addiu sp,sp,4 0x2aac95d4: jr ra 0x2aac95d8: nop (gdb) p/x $ra //$ra = tobe returned addr after ctiTrampoline(), correct $4 = 0x676d64 (gdb) x/10i $pc //sth not patched well?? 0x2aacd000: 0x4941444a 0x2aacd004: jalx0x21a5a881 0x2aacd008: j 0x2984c8b4 0x2aacd00c: andiat,s3,0x3134 0x2aacd010: 0x6d202c30 0x2aacd014: 0x7a69735f 0x2aacd018: 0x66373d65 0x2aacd01c: xoris3,t1,0x3461 0x2aacd020: ori t0,t1,0x3864 0x2aacd024: addit4,at,10544 (gdb) 0x2aacd028: jalx0x25b185d9 0x2aacd02c: j 0x28c0f594 0x2aacd030: andis0,at,0x3030 0x2aacd034: 0x720a0a38 0x2aacd038: 0x64496765 0x2aacd03c: j 0x28e0c4f4 0x2aacd040: nop 0x2aacd044: nop 0x2aacd048: nop 0x2aacd04c: nop 0x2aacd028: jalx0x25b185d9 0x2aacd02c: j 0x28c0f594 0x2aacd030: andis0,at,0x3030 0x2aacd034: 0x720a0a38 0x2aacd038: 0x64496765 0x2aacd03c: j 0x28e0c4f4 0x2aacd040: nop
Re: [webkit-dev] random seg fault on MIPS platform
ok I think you suggest using the function to flush before execution the code. I'll try it. I really appreciate it! rgds joe --- On Sat, 5/9/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] random seg fault on MIPS platform To: last...@yahoo.com Cc: webkit-dev@lists.webkit.org Date: Saturday, May 9, 2009, 2:11 AM Hi, I don't know anything about MIPS architecture (only x86, ARM and PowerPC), but we have experienced similar things on ARM, until we have found the gcc's __clear_cache(void* begin, void* end) function. It calls a kernel utility, which flushes out the data cache (some mrc instructions can only executed on kernel level). 1) The program always fails without gdb, because the instructions are not flushed out to the SDRAM. Instruction cache always loads the instructions directly form the SDRAM. 2) With gdb, it is sometimes work, sometimes not. GDB itself allocates a big amount of memory, so the cache is partly flushed out when it stops at a breakpoint. Note that, the disassembly shows the content of the data cache, not the instruction cache. Zoltan Hi, 50% of time when I use gdb then arith functions works. it may fail at 1st, or 3rd try, and 100% fail w/o gdb. I just use jsc to do sth like 5%2, 5*3, etc. It is with in call of ctiTrampoline(code, registerFile, callFrame, jexception, pptr, globalData), jit code executed and may be in last line of op_mod() when it tried to convert result, gdb simply shows segment fault, or PC stops at an non-coded area, w/o gdb it says invalid instruction. It may be in JITcell,h in ALWAYS_INLINE double JSValuePtr::toNumber(ExecState* exec) const { return JSImmediate::isImmediate(asValue()) ? JSImmediate::toDouble(asValue()) : asCell()-toNumber(exec); } due to exec pointer wrong. if I continue to use same arithmatic function the generated jit code won't call op_mod() unless it is the 1st time, I think it is because jit code is already there. If another thread handles the real operation and not sync'd then it may be the case. Note I use BCM chip with two CPUs - BCM customized SMP and BCM Linux. when it works, before and after ctiTrampoline() the stack is balanced and registers are ok. where is the jit stack and how to check its balance? when it fails, stacks shows we are nearby jit code - the code w/o calling OP_mod() CPP function as it fails at 3rd try. But PC points to a data structure: any comments? thanks a lot!! rgds joe // (gdb) c Continuing. Program received signal SIGILL, Illegal instruction. 0x2aacd000 in ?? () (gdb) where #0 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aacd000. ... #1 0x2aacd000 in ?? () warning: GDB can't find the start of the function at 0x2aaccfff. Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) backtrace #0 0x2aacd000 in ?? () #1 0x2aacd000 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) p/x $sp $1 = 0x7fa439d8 (gdb) p/x $pc $2 = 0x2aacd000 (gdb) p/x $t9 $3 = 0x2aac9588 (gdb) x/10i $t9 = jit code, no actual call to op_mod() cpp function 0x2aac9588: sw ra,-40(s5) 0x2aac958c: lui s7,0x0 0x2aac9590: ori s7,s7,0xa 0x2aac9594: sw s7,0(s5) 0x2aac9598: lui s7,0x0 0x2aac959c: ori s7,s7,0xa 0x2aac95a0: sw s7,8(s5) 0x2aac95a4: lui v0,0x0 0x2aac95a8: ori v0,v0,0xa 0x2aac95ac: sw v0,32(s5) (gdb) 0x2aac95b0: lui v0,0x 0x2aac95b4: ori v0,v0,0x 0x2aac95b8: sw v0,32(s5) 0x2aac95bc: lw at,-40(s5) 0x2aac95c0: nop 0x2aac95c4: addiu sp,sp,-4 0x2aac95c8: sw at,0(sp) 0x2aac95cc: lw ra,0(sp) 0x2aac95d0: addiu sp,sp,4 0x2aac95d4: jr ra 0x2aac95d8: nop (gdb) p/x $ra //$ra = tobe returned addr after ctiTrampoline(), correct $4 = 0x676d64 (gdb) x/10i $pc //sth not patched well?? 0x2aacd000: 0x4941444a 0x2aacd004: jalx0x21a5a881 0x2aacd008: j 0x2984c8b4 0x2aacd00c: andiat,s3,0x3134 0x2aacd010: 0x6d202c30 0x2aacd014: 0x7a69735f 0x2aacd018: 0x66373d65 0x2aacd01c: xoris3,t1,0x3461 0x2aacd020: ori t0,t1,0x3864 0x2aacd024: addit4,at,10544 (gdb) 0x2aacd028: jalx0x25b185d9 0x2aacd02c: j 0x28c0f594 0x2aacd030: andis0,at,0x3030 0x2aacd034: 0x720a0a38 0x2aacd038: 0x64496765 0x2aacd03c: j 0x28e0c4f4 0x2aacd040: nop 0x2aacd044: nop 0x2aacd048: nop 0x2aacd04c: nop 0x2aacd028: jalx0x25b185d9 0x2aacd02c: j 0x28c0f594 0x2aacd030: andis0,at,0x3030 0x2aacd034: 0x720a0a38 0x2aacd038: 0x64496765 0x2aacd03c: j 0x28e0c4f4 0x2aacd040: nop ___ webkit-dev mailing list webkit-dev@lists.webkit.org
Re: [webkit-dev] Proposal for a new way to handle porting #ifdefs
I think you may want to look at openembedded and use their way to control those things, rather then a new idea. You can build webkit there too. Most of what you said most is a minor part to me, may be to others. rgds joe --- On Tue, 5/5/09, Maciej Stachowiak m...@apple.com wrote: From: Maciej Stachowiak m...@apple.com Subject: Re: [webkit-dev] Proposal for a new way to handle porting #ifdefs To: mbe...@pleyo.com Cc: webkit-dev@lists.webkit.org Date: Tuesday, May 5, 2009, 11:19 PM On May 4, 2009, at 5:21 AM, Mario Bensi wrote: We pursued the same goal for a couple of years. Since our porting targets are various middleware CE platforms, we had to identify and adapt WebKit needs at a better grained level than platform. In order to do this we collected all dependencies in a Browser Abstraction Layer (BAL directory). The configuration is handled by a Base directory (definition of types, platform specifications) and we use CMake to define platform specificities (and it's a great cross- platform tool). Sure the BAL model has still improvements ahead of it, but it has the merit of existing, being widely tester on a quite wide range of targets, configurations and libraries. My understanding is that BAL injects a platform abstration layer under the platform abstraction layer that is the WebCore/platform directory. Also, I gather that BAL tries to do more things via runtime indirection and subclasses with virtual methods instead of WebCore's compile-time approach. To me, those aspects sound like they may not be good fits for our goals. But I would be glad to hear more details about BAL, and how it would compare to my proposal. Regards, Maciej Regards Mario Le Friday 01 May 2009 01:12:54 Maciej Stachowiak, vous avez écrit : I think our set of porting macros has become somewhat confused. Originally, our idea was that a port represents primarily adaptation to a particular platform. However, over time it has become clear that most of what is decided by a port is not platform adaptation, but rather policy decisions. For example, ports decide to have different features enabled, or to use different sets of system functionality on the same underlying OS. In addition, I think the catchall top-level PLATFORM create confusion, because it is not totally clear if they are policy decisions, platform adaptation decisions, or what. Third, it seems wrong that the policy choices of every port are represented as a bunch of ifdef tomfoolery inside a single Platform.h file. And fourth, many ports often run on the same OS, but with a different set of choices - for example on Mac OS X it is possible to build the Mac, Chromium, Gtk, Qt and Wx ports (at least). Therefore, I propose that we change as follows: 1) Strictly separate platform adaptation (mandatory to run on a given OS, compiler, or CPU at all) from policy choices (what features to enable, what optional libraries to use). 2) Phase out PLATFORM macros completely - each use should be converted to a policy choice, or a platform adaptation decision. 3) Instead of ports being defined by a top-level PLATFORM macro, I propose that each port should have its own header file to define policy decisions. For example, I'd propose that the system Mac OS X WebKit should use PortCocoa.h, and the WebKit used by Safari for Windows should use PortWinCG.h. There may also be a PortIPhone.h. These port definition headers would live in their own top-level WebKit module. Each one would be completely owned by whoever is generally considered the owner of a given port. Because related ports on different platforms may wish to share policy choices, it's ok for Port headers to include shared headers for some choices. For example, all Apple-maintained ports may include PortApple.h. We could go even further and have PortDefault.h to make default choices of what features are enabled, that ports would have to explicitly override. 4) Platform adaptation macros would still be defined in Platform.h based on sniffing the environment, this would include things like the compiler, the underlying OS, available libc functions, and so forth. Platform adaptation macros would be: OS() - underlying operating system; only to be used for mandated low- level services like virtual memory, not to choose a GUI toolkit Examples: OS(UNIX) - Any Unix-like OS OS(DARWIN) - Underlying OS is the base OS X environment OS(FREEBSD) - FreeBSD OS(WIN) - Any version of Windows OS(WINCE) - The embedded version of Windows COMPILER() - the compiler being used to build the project Examples: COMPILER(GCC) - GNU Compiler Collection COMPILER(MSVC) - Microsoft Visual C++ COMPILER(RVCT) - ARM compiler HAVE() - specific
Re: [webkit-dev] the variable of JavaScript function
I don't understand your question. pls don't ask this kind of question on webkit dev site, it is not related. rgds joe --- On Thu, 3/19/09, zhenghe zhang zhenghe.zh...@gmail.com wrote: From: zhenghe zhang zhenghe.zh...@gmail.com Subject: [webkit-dev] the variable of JavaScript function To: webkit-dev@lists.webkit.org Date: Thursday, March 19, 2009, 9:26 AM Hi There is a javaScript function, as follow: Function test() { Var a = 3; Var b = 2; Print(a+b); } There are two variables, and the identifiers will stored in the identifierTable. When running the function, it will print 5. When running the code print(a+b),it will use 3 to replace a and 2 replace b. I don't know how to do it through the c++ functions. I hope you tell! Thank you best regards zhang ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) seg fault
this part of code has been ever tested or not? any body can tell me? #else //non X86 void JIT::compileFastArith_op_mod(unsigned result, unsigned op1, unsigned op2) { emitPutJITStubArgFromVirtualRegister(op1, 1, regT2); emitPutJITStubArgFromVirtualRegister(op2, 2, regT2); emitCTICall(JITStubs::cti_op_mod); emitPutVirtualRegister(result); } thanks alot, joe --- On Wed, 4/22/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) seg fault To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough barraclo...@apple.com Date: Wednesday, April 22, 2009, 8:31 AM I use MIPS32EL, VA_LIST call, MIPS pushes function argument from left to right. I wrote a simple VA_LIST test it works on my box. BEGIN_STUB_FUNCTION() cause seg fault due to MIPS uses gp reg to read sth. I treied to rewrite the code like that: JSObject* JITStubs::cti_op_new_func_exp(STUB_ARGS) { va_list vl_args; va_start(vl_args, args); StackHack stackHack(STUB_RETURN_ADDRESS_SLOT); JSValuePtr dividendValue = va_arg(vl_args, JSC::JSCell* ); JSValuePtr divisorValue = va_arg(vl_args, JSC::JSCell* ); ... } Still fail in stackHack(), if I comment out stackHack() then fails at va_arg. gp is a global register for common/public variables, the same usage before I call cti_op_mod() works fine. I also tried not use VA_LIST but REGISTER calling convention, still fail: (gdb) x/2i $at 0x6ab500 _ZN3JSC8JITStubs10cti_op_modEPPv: lui gp,0xf96 0x6ab504 _ZN3JSC8JITStubs10cti_op_modEPPv+4: addiu gp,gp,9008 (gdb) x/20i $at 0x6ab500 _ZN3JSC8JITStubs10cti_op_modEPPv: lui gp,0xf96 0x6ab504 _ZN3JSC8JITStubs10cti_op_modEPPv+4: addiu gp,gp,9008 0x6ab508 _ZN3JSC8JITStubs10cti_op_modEPPv+8: addugp,gp,t9 0x6ab50c _ZN3JSC8JITStubs10cti_op_modEPPv+12:addiu sp,sp,-80 0x6ab510 _ZN3JSC8JITStubs10cti_op_modEPPv+16:sw ra,72(sp) 0x6ab514 _ZN3JSC8JITStubs10cti_op_modEPPv+20:sw s8,68(sp) 0x6ab518 _ZN3JSC8JITStubs10cti_op_modEPPv+24:sw s0,64(sp) 0x6ab51c _ZN3JSC8JITStubs10cti_op_modEPPv+28:moves8,sp 0x6ab520 _ZN3JSC8JITStubs10cti_op_modEPPv+32:sw gp,16(sp) 0x6ab524 _ZN3JSC8JITStubs10cti_op_modEPPv+36:sw a0,80(s8) 0x6ab528 _ZN3JSC8JITStubs10cti_op_modEPPv+40:lw v0,80(s8) 0x6ab52c _ZN3JSC8JITStubs10cti_op_modEPPv+44:addiu v0,v0,-4 0x6ab530 _ZN3JSC8JITStubs10cti_op_modEPPv+48:addiu a0,s8,24 0x6ab534 _ZN3JSC8JITStubs10cti_op_modEPPv+52:movea1,v0 0x6ab538 _ZN3JSC8JITStubs10cti_op_modEPPv+56:lw t9,-19012(gp) 0x6ab53c _ZN3JSC8JITStubs10cti_op_modEPPv+60:jalrt9 0x6ab540 _ZN3JSC8JITStubs10cti_op_modEPPv+64: nop 0x6ab544 _ZN3JSC8JITStubs10cti_op_modEPPv+68:lw gp,16(s8) 0x6ab548 _ZN3JSC8JITStubs10cti_op_modEPPv+72:addiu v0,s8,32 0x6ab54c _ZN3JSC8JITStubs10cti_op_modEPPv+76:lw v1,80(s8) (gdb) stepi 14 Program received signal SIGSEGV, Segmentation fault. 0x006ab538 in JSC::JITStubs::cti_op_mod (args=0x2aac9500) at /home/jdai/depot/mp/mediabase/head/libs/webkit-1.1.1/JavaScriptCore/jit/JITStubs.cpp:1685 1685 BEGIN_STUB_FUNCTION(); another question is that there is no matched va_end() and it is a bug. thanks a lot for help, joe ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) seg fault
The cause details are below: 1. original C funtion: JSValueEncodedAsPointer* JITStubs::cti_op_mod(STUB_ARGS) { BEGIN_STUB_FUNCTION(); //causes seg fault JSValuePtr dividendValue = ARG_src1; JSValuePtr divisorValue = ARG_src2; CallFrame* callFrame = ARG_callFrame; double d = dividendValue.toNumber(callFrame); JSValuePtr result = jsNumber(ARG_globalData, fmod(d, divisorValue.toNumber(callFrame))); CHECK_FOR_EXCEPTION_AT_END(); return JSValuePtr::encode(result); } 2. On X86: Dump of assembler code for function _ZN3JSC8JITStubs10cti_op_modEPvz: 0x08141b12 _ZN3JSC8JITStubs10cti_op_modEPvz+0:push %ebp 0x08141b13 _ZN3JSC8JITStubs10cti_op_modEPvz+1:mov%esp,%ebp 0x08141b15 _ZN3JSC8JITStubs10cti_op_modEPvz+3:push %esi 0x08141b16 _ZN3JSC8JITStubs10cti_op_modEPvz+4:push %ebx 0x08141b17 _ZN3JSC8JITStubs10cti_op_modEPvz+5:sub$0x70,%esp 0x08141b1a _ZN3JSC8JITStubs10cti_op_modEPvz+8:call 0x80577bc __i686.get_pc_thunk.bx //this system call is not exist in MIPS compiled code 0x08141b1f _ZN3JSC8JITStubs10cti_op_modEPvz+13: add$0xee049,%ebx 0x08141b25 _ZN3JSC8JITStubs10cti_op_modEPvz+19: lea0xc(%ebp),%eax //1677 BEGIN_STUB_FUNCTION(); 0x08141b28 _ZN3JSC8JITStubs10cti_op_modEPvz+22: mov%eax,-0x1c(%ebp) 0x08141b2b _ZN3JSC8JITStubs10cti_op_modEPvz+25: mov-0x1c(%ebp),%eax 0x08141b2e _ZN3JSC8JITStubs10cti_op_modEPvz+28: sub$0x8,%eax 0x08141b31 _ZN3JSC8JITStubs10cti_op_modEPvz+31: mov%eax,0x4(%esp) 0x08141b35 _ZN3JSC8JITStubs10cti_op_modEPvz+35: lea-0x24(%ebp),%eax 0x08141b38 _ZN3JSC8JITStubs10cti_op_modEPvz+38: mov%eax,(%esp) 0x08141b3b _ZN3JSC8JITStubs10cti_op_modEPvz+41: call 0x8148e76 StackHack//242 ALWAYS_INLINE StackHack(void** location), MIPS disasm has no symbols at all 3. On MIPS Dump of assembler code for function _ZN3JSC8JITStubs10cti_op_modEPvz: 0x006abdb8 _ZN3JSC8JITStubs10cti_op_modEPvz+0:lui gp,0xf96 //this segment used on other routines and works 0x006abdbc _ZN3JSC8JITStubs10cti_op_modEPvz+4:addiu gp,gp,6776 0x006abdc0 _ZN3JSC8JITStubs10cti_op_modEPvz+8:addugp,gp,t9 0x006abdc4 _ZN3JSC8JITStubs10cti_op_modEPvz+12: addiu sp,sp,-88 0x006abdc8 _ZN3JSC8JITStubs10cti_op_modEPvz+16: sw ra,80(sp) 0x006abdcc _ZN3JSC8JITStubs10cti_op_modEPvz+20: sw s8,76(sp) 0x006abdd0 _ZN3JSC8JITStubs10cti_op_modEPvz+24: sw s0,72(sp) 0x006abdd4 _ZN3JSC8JITStubs10cti_op_modEPvz+28: moves8,sp 0x006abdd8 _ZN3JSC8JITStubs10cti_op_modEPvz+32: sw gp,16(sp) 0x006abddc _ZN3JSC8JITStubs10cti_op_modEPvz+36: sw a1,92(s8) 0x006abde0 _ZN3JSC8JITStubs10cti_op_modEPvz+40: sw a2,96(s8) 0x006abde4 _ZN3JSC8JITStubs10cti_op_modEPvz+44: sw a3,100(s8) 0x006abde8 _ZN3JSC8JITStubs10cti_op_modEPvz+48: sw a0,88(s8) 0x006abdec _ZN3JSC8JITStubs10cti_op_modEPvz+52: addiu v0,s8,92 0x006abdf0 _ZN3JSC8JITStubs10cti_op_modEPvz+56: sw v0,24(s8) 0x006abdf4 _ZN3JSC8JITStubs10cti_op_modEPvz+60: addiu v1,s8,32 0x006abdf8 _ZN3JSC8JITStubs10cti_op_modEPvz+64: lw v0,24(s8) 0x006abdfc _ZN3JSC8JITStubs10cti_op_modEPvz+68: addiu v0,v0,-8 0x006abe00 _ZN3JSC8JITStubs10cti_op_modEPvz+72: movea0,v1 0x006abe04 _ZN3JSC8JITStubs10cti_op_modEPvz+76: movea1,v0 0x006abe08 _ZN3JSC8JITStubs10cti_op_modEPvz+80: lw t9,-19028(gp) //seg fault here, -19028(gp) not accesible 0x006abe0c _ZN3JSC8JITStubs10cti_op_modEPvz+84: jalrt9 ... no label in MIPS. StackHack label shown on X86 but on mips are all xxx(gp), may be compiler/gdb not as good as X86 version? thanks for look at it, joe --- On Wed, 4/22/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) seg fault To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough barraclo...@apple.com Date: Wednesday, April 22, 2009, 8:31 AM I use MIPS32EL, VA_LIST call, MIPS pushes function argument from left to right. I wrote a simple VA_LIST test it works on my box. BEGIN_STUB_FUNCTION() cause seg fault due to MIPS uses gp reg to read sth. I treied to rewrite the code like that: JSObject* JITStubs::cti_op_new_func_exp(STUB_ARGS) { va_list vl_args; va_start(vl_args, args); StackHack stackHack(STUB_RETURN_ADDRESS_SLOT); JSValuePtr dividendValue = va_arg(vl_args, JSC::JSCell* ); JSValuePtr divisorValue = va_arg(vl_args, JSC::JSCell* ); ... } Still fail in stackHack(), if I comment out stackHack() then fails at va_arg. gp is a global register for common/public variables, the same usage before I call cti_op_mod() works fine. I also tried not use VA_LIST but REGISTER calling convention, still fail: (gdb) x/2i $at 0x6ab500
Re: [webkit-dev] make webkit-1.1.3...
1.1.3 built on Fedora9 works fine. if you PC is slow it may take hours. I use 4 hiper thread CPU at ~3GHz and it takes less than an hour. webkit make file seems not manually written, thus not very flexible, but you can still make a little then build, say make the jsc. look at the makefile. --- On Mon, 4/20/09, yenchengwang yenchengw...@gmail.com wrote: From: yenchengwang yenchengw...@gmail.com Subject: Re: [webkit-dev] make webkit-1.1.3... To: webkit-dev@lists.webkit.org Date: Monday, April 20, 2009, 8:28 AM thanks your reply! my operating system is Linux == moblin2, I think it's Fedora 9. compiler and version == gcc (Moblin Linux) 4.3.2 [gcc-4_3-branch revision 141291]. thanks~~ :D 2009/4/17 Ariya Hidayat ariya.hida...@trolltech.com how many time are u make the webkit-1.1.3 ?? I always need 3.5 hour for making that !! the almost time is at the processing of the JIT.cpp !! I don't know why I need take 3.5 hour just for on file !! the other files just take some minutes !! JIT.cpp works fine for me, it is very fast to compile. You need to be specific and mention the operating system, platform, compiler, compiler version, etc. -- Ariya Hidayat, Software Engineer Qt Software, Nokia Devices RD ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev -- Regards Y-C Wang ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] can't build debug_cairo and release_cairo
read the website guide lines on how to set path on Visual Studio. you'd know how to use VS. --- On Sun, 4/19/09, Kruchinkin Kirill kkruc...@yandex.ru wrote: From: Kruchinkin Kirill kkruc...@yandex.ru Subject: [webkit-dev] can't build debug_cairo and release_cairo To: webkit-dev@lists.webkit.org Date: Sunday, April 19, 2009, 3:52 AM Hi All, I faced few problems with win32 cairo builds. First one is described here http://www.nabble.com/Unable-to-build-WebCore-for-windows-(debug_cairo)-revision-39671-td21456190.html And second one is fatal error C1083: Cannot open include file: 'cairo.h' or with cairo_win32.h or http://www.nabble.com/Unable-to-build-WebCore-for-windows-(debug_cairo)-revision-39671-td21456190.html I don't know how to resolve last one, seems that the problem is in source code, is it righ? At the same time I can succefully build win32_debug and win32_release builds(not cairo). Could you help me to resolve it or could you specify last correct cairo sources that could be built and how to get it? -- Kirill ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) seg fault
I use MIPS32EL, VA_LIST call, MIPS pushes function argument from left to right. I wrote a simple VA_LIST test it works on my box. BEGIN_STUB_FUNCTION() cause seg fault due to MIPS uses gp reg to read sth. I treied to rewrite the code like that: JSObject* JITStubs::cti_op_new_func_exp(STUB_ARGS) { va_list vl_args; va_start(vl_args, args); StackHack stackHack(STUB_RETURN_ADDRESS_SLOT); JSValuePtr dividendValue = va_arg(vl_args, JSC::JSCell* ); JSValuePtr divisorValue = va_arg(vl_args, JSC::JSCell* ); ... } Still fail in stackHack(), if I comment out stackHack() then fails at va_arg. gp is a global register for common/public variables, the same usage before I call cti_op_mod() works fine. I also tried not use VA_LIST but REGISTER calling convention, still fail: (gdb) x/2i $at 0x6ab500 _ZN3JSC8JITStubs10cti_op_modEPPv:lui gp,0xf96 0x6ab504 _ZN3JSC8JITStubs10cti_op_modEPPv+4: addiu gp,gp,9008 (gdb) x/20i $at 0x6ab500 _ZN3JSC8JITStubs10cti_op_modEPPv:lui gp,0xf96 0x6ab504 _ZN3JSC8JITStubs10cti_op_modEPPv+4: addiu gp,gp,9008 0x6ab508 _ZN3JSC8JITStubs10cti_op_modEPPv+8: addugp,gp,t9 0x6ab50c _ZN3JSC8JITStubs10cti_op_modEPPv+12: addiu sp,sp,-80 0x6ab510 _ZN3JSC8JITStubs10cti_op_modEPPv+16: sw ra,72(sp) 0x6ab514 _ZN3JSC8JITStubs10cti_op_modEPPv+20: sw s8,68(sp) 0x6ab518 _ZN3JSC8JITStubs10cti_op_modEPPv+24: sw s0,64(sp) 0x6ab51c _ZN3JSC8JITStubs10cti_op_modEPPv+28: moves8,sp 0x6ab520 _ZN3JSC8JITStubs10cti_op_modEPPv+32: sw gp,16(sp) 0x6ab524 _ZN3JSC8JITStubs10cti_op_modEPPv+36: sw a0,80(s8) 0x6ab528 _ZN3JSC8JITStubs10cti_op_modEPPv+40: lw v0,80(s8) 0x6ab52c _ZN3JSC8JITStubs10cti_op_modEPPv+44: addiu v0,v0,-4 0x6ab530 _ZN3JSC8JITStubs10cti_op_modEPPv+48: addiu a0,s8,24 0x6ab534 _ZN3JSC8JITStubs10cti_op_modEPPv+52: movea1,v0 0x6ab538 _ZN3JSC8JITStubs10cti_op_modEPPv+56: lw t9,-19012(gp) 0x6ab53c _ZN3JSC8JITStubs10cti_op_modEPPv+60: jalrt9 0x6ab540 _ZN3JSC8JITStubs10cti_op_modEPPv+64: nop 0x6ab544 _ZN3JSC8JITStubs10cti_op_modEPPv+68: lw gp,16(s8) 0x6ab548 _ZN3JSC8JITStubs10cti_op_modEPPv+72: addiu v0,s8,32 0x6ab54c _ZN3JSC8JITStubs10cti_op_modEPPv+76: lw v1,80(s8) (gdb) stepi 14 Program received signal SIGSEGV, Segmentation fault. 0x006ab538 in JSC::JITStubs::cti_op_mod (args=0x2aac9500) at /home/jdai/depot/mp/mediabase/head/libs/webkit-1.1.1/JavaScriptCore/jit/JITStubs.cpp:1685 1685BEGIN_STUB_FUNCTION(); another question is that there is no matched va_end() and it is a bug. thanks a lot for help, joe ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] known gtk+ leaks
v1.1.1 uses libsoup not libcurl now. you may want to look at newer versions. --- On Tue, 4/7/09, Luka Napotnik luka.napot...@gmail.com wrote: From: Luka Napotnik luka.napot...@gmail.com Subject: [webkit-dev] known gtk+ leaks To: webkit-dev@lists.webkit.org Date: Tuesday, April 7, 2009, 2:44 PM Hello. I use a bit old revision of Gtk+ WebKit port (38403) and as I observe my WebKit process, the RSS memory usage rapidly gets bigger and bigger as I browse pages. Because of few modifications I made that work only on older revisions, I can't use the new ones (the modifications are rather small and I don't do any allocation). This can't be the cache as I switch only between two linked pages. This behavior indicates that there was a leak. I've googled and found that there were leaks in libcurl and pango text rendering and want to backport the leak fixes. Could please someone with this knowledge have some spare time and help me find the patches so I can backport the leak fixes. Greets, Luka ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - where comes from _ZN3JSC8JITStubs12cti_vm_throwEPvz
jit complier give error because above label is hard coded. It reports the error with a file .s under /tmp yet I cannot see and not sure who removes it. Pls be kindly to let me know how I can change above label to correct one. Also, now I see hard coded constant patchOffsetOpCallCompareToJump=6 comes from some code via gdb, yet not sure where/when it is generated. It seems to be a c function head. rgds joe ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] Announce the ARM port of JIT
Congratulations! any improvement on X86 hard coded offset for code patch? I mean X86 uses single pointer then a few constants closely coupled to X86 to patch code, which is a nightmare for porting. rgds joe --- On Wed, 4/1/09, Gabor Loki l...@inf.u-szeged.hu wrote: From: Gabor Loki l...@inf.u-szeged.hu Subject: [webkit-dev] Announce the ARM port of JIT To: webkit-dev@lists.webkit.org, squirrelfish-...@lists.webkit.org Date: Wednesday, April 1, 2009, 9:57 PM Hi guys, we are pleased to announce that the ARM port of JIT is finally released. The source can be checked out from 'loki/arm-port' branch of git://code.staikos.net/webkit : - git clone git://code.staikos.net/webkit git checkout loki/arm-port - or see at http://code.staikos.net/cgi-bin/gitweb.cgi?p=webkit;a=shortlog;h=loki/arm-port The aim of this development is to add JIT support for ARM architectures. The port itself is developed from scratch, but we reused the ideas of x86 JIT. So we implemented property caches, stub functions, etc. in a similar way, but the code is optimized for ARM architectures. We used Qt4 build environment for the development, but we feel that the other build platforms can be easily extended with this ARM port. The current version is stable. It passes the regression tests. We did measurements on a Nokia N810, and we gained 13% performance improvement. The memory consumption is increased by 3.3% which is a small trade-off for this performance improvement. Our work has not done yet. We plan to add several other features in the future. Please, feel free to ask any questions about the ARM JIT here at the mail list or at the following Bugzilla entry: https://bugs.webkit.org/show_bug.cgi?id=24986 --Gabor ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] how to do JIT benchmark
I used to see that calling convention change lead to certain % of efficiency improvement. in general how we can do a speed benchmark? rgds joe ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] how I know WebKit version after check out?
The Changelog doesn't include all change history. rgds joe ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - can anybody explain JIT::linkCall?
e.g, emitted asm code before/after patch? what does its four pointers do? MacroAssembler::CodeLocationNearCall callReturnLocation; MacroAssembler::CodeLocationDataLabelPtr hotPathBegin; MacroAssembler::CodeLocationNearCall hotPathOther; MacroAssembler::CodeLocationLabel coldPathOther; CodeBlock* callee; anywhere got doc of the JIT implementations? thanks a lot! joe --- On Wed, 3/4/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined? To: webkit-dev@lists.webkit.org Date: Wednesday, March 4, 2009, 3:33 PM Hi, they generate instructions, which size is known in advance. Think about the following sequence: hotPathBegin: mov regX, 32bit_const - 6 bytes (*) (**) add regX, regY - 2 bytes jo 32bit_addr - 5 bytes (*) * (Note) : these instructions will be modified during runtime. ** (Note) : there is a short form for mov regX, 8bit_const, which length is only 3 bytes, but they force the longer version in such cases to keep the size of the instruction. As you can see, the address of jo is always (hotPathBegin + 6 + 2). They simply introduce a new constant: patchOffsetXXX = 8, and use this constant to access the jo instruction later. In ARM we can't rely on such constant, because the constant pool can be placed after any instruction. hotPathBegin: ldr rX, [pc + const_pool_addr] ; 32 bit const [...] - the const pool can be placed here add rX, rX, rY [...] - the const pool can be placed here hotPath2: ldr pc, [pc + const_pool_addr] ; 32 bit target address We need to store both pointers (hotPathBegin and hotPath2). Zoltan Zoltan, Thanks for reply, I'm trying to understand your example. But,X86 instruction size is from 1 to 17bytes, not constant. I may misunderstand your comments? Many X86 instruction can have imm32 at the end, thus this pointer can be used for patch as well as next address after call. Does Arm have similar things? or else you still need to figure out why patchOffsetOpCallCompareToJump = 9;? may be some instruction lengths relates to the 9? rgds joe --- On Wed, 3/4/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined? To: webkit-dev@lists.webkit.org Date: Wednesday, March 4, 2009, 3:45 AM On x86, the size of the instructions are fixed. If you want to access multiple instructions in the instruction stream, you only need to store the address of the first one, and can access the others by their relative address. This saves a little memory. Example (see JIT::linkCall): instruction at callLinkInfo-hotPathBegin: points to callee comparison instruction at callLinkInfo-hotPathBegin + patchOffsetOpCallCompareToJump: points to the slow case entry jump Zoltan in jit.h, for example: static const int patchOffsetOpCallCompareToJump = 9; static const int patchOffsetPutByIdStructure = 7; static const int patchOffsetPutByIdPropertyMapOffset = 22; static const int patchOffsetGetByIdBranchToSlowCase = 13; thanks for help, I'm stucked here now. joe --- On Sat, 2/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up? To: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 28, 2009, 12:19 PM On Feb 27, 2009, at 4:55 PM, x yz wrote: The regTx seems to be working registers here, yet their definition are regparm(3) registers for function arugments. Such usage would cause conflict on other platforms. May I suggest that we use individual defined set of regs for func i/o argument and working? First up, I think you're getting slightly confused about regparm(3). This is not used anywhere in the JS language JIT, only in WREC. In some configurations of the JIT we use fastcall semantics on x86... but none of this is really relevant to MIPS. Just ignore all this. Stick to the default MIPS ABI for stub functions. Reading between the lines, I'm guessing your concern here is that in setting up arguments for a JIT stub call you may trample the JIT's temporary registers? If so, I think you need to look at the argument passing more closely. The mechanisms to pass arguments to stub functions pass all arguments in memory – typically passing a single pointer to the stub functions, which can be used to retrieve the arguments. This pointer argument can be set up immediately prior to the call, so it does not interfere with the regT
Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined?
Hi, this really helps! The two pointers may also help Mips. In Mips dest offset patches are in two instructions, no constant biase can be used as in X86. Currently I do check instruction syntax to determine the patch offset. thanks again! joe --- On Wed, 3/4/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined? To: webkit-dev@lists.webkit.org Date: Wednesday, March 4, 2009, 3:33 PM Hi, they generate instructions, which size is known in advance. Think about the following sequence: hotPathBegin: mov regX, 32bit_const - 6 bytes (*) (**) add regX, regY - 2 bytes jo 32bit_addr - 5 bytes (*) * (Note) : these instructions will be modified during runtime. ** (Note) : there is a short form for mov regX, 8bit_const, which length is only 3 bytes, but they force the longer version in such cases to keep the size of the instruction. As you can see, the address of jo is always (hotPathBegin + 6 + 2). They simply introduce a new constant: patchOffsetXXX = 8, and use this constant to access the jo instruction later. In ARM we can't rely on such constant, because the constant pool can be placed after any instruction. hotPathBegin: ldr rX, [pc + const_pool_addr] ; 32 bit const [...] - the const pool can be placed here add rX, rX, rY [...] - the const pool can be placed here hotPath2: ldr pc, [pc + const_pool_addr] ; 32 bit target address We need to store both pointers (hotPathBegin and hotPath2). Zoltan Zoltan, Thanks for reply, I'm trying to understand your example. But,X86 instruction size is from 1 to 17bytes, not constant. I may misunderstand your comments? Many X86 instruction can have imm32 at the end, thus this pointer can be used for patch as well as next address after call. Does Arm have similar things? or else you still need to figure out why patchOffsetOpCallCompareToJump = 9;? may be some instruction lengths relates to the 9? rgds joe --- On Wed, 3/4/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined? To: webkit-dev@lists.webkit.org Date: Wednesday, March 4, 2009, 3:45 AM On x86, the size of the instructions are fixed. If you want to access multiple instructions in the instruction stream, you only need to store the address of the first one, and can access the others by their relative address. This saves a little memory. Example (see JIT::linkCall): instruction at callLinkInfo-hotPathBegin: points to callee comparison instruction at callLinkInfo-hotPathBegin + patchOffsetOpCallCompareToJump: points to the slow case entry jump Zoltan in jit.h, for example: static const int patchOffsetOpCallCompareToJump = 9; static const int patchOffsetPutByIdStructure = 7; static const int patchOffsetPutByIdPropertyMapOffset = 22; static const int patchOffsetGetByIdBranchToSlowCase = 13; thanks for help, I'm stucked here now. joe --- On Sat, 2/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up? To: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 28, 2009, 12:19 PM On Feb 27, 2009, at 4:55 PM, x yz wrote: The regTx seems to be working registers here, yet their definition are regparm(3) registers for function arugments. Such usage would cause conflict on other platforms. May I suggest that we use individual defined set of regs for func i/o argument and working? First up, I think you're getting slightly confused about regparm(3). This is not used anywhere in the JS language JIT, only in WREC. In some configurations of the JIT we use fastcall semantics on x86... but none of this is really relevant to MIPS. Just ignore all this. Stick to the default MIPS ABI for stub functions. Reading between the lines, I'm guessing your concern here is that in setting up arguments for a JIT stub call you may trample the JIT's temporary registers? If so, I think you need to look at the argument passing more closely. The mechanisms to pass arguments to stub functions pass all arguments in memory – typically passing a single pointer to the stub functions, which can be used to retrieve the arguments. This pointer argument can be set up immediately prior to the call, so it does not interfere with the regT? temporaries. We follow this pattern on x86-64, where the ABI is typically to pass arguments in registers. You cannot
Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined?
in jit.h, for example: static const int patchOffsetOpCallCompareToJump = 9; static const int patchOffsetPutByIdStructure = 7; static const int patchOffsetPutByIdPropertyMapOffset = 22; static const int patchOffsetGetByIdBranchToSlowCase = 13; thanks for help, I'm stucked here now. joe --- On Sat, 2/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up? To: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 28, 2009, 12:19 PM On Feb 27, 2009, at 4:55 PM, x yz wrote: The regTx seems to be working registers here, yet their definition are regparm(3) registers for function arugments. Such usage would cause conflict on other platforms. May I suggest that we use individual defined set of regs for func i/o argument and working? First up, I think you're getting slightly confused about regparm(3). This is not used anywhere in the JS language JIT, only in WREC. In some configurations of the JIT we use fastcall semantics on x86... but none of this is really relevant to MIPS. Just ignore all this. Stick to the default MIPS ABI for stub functions. Reading between the lines, I'm guessing your concern here is that in setting up arguments for a JIT stub call you may trample the JIT's temporary registers? If so, I think you need to look at the argument passing more closely. The mechanisms to pass arguments to stub functions pass all arguments in memory – typically passing a single pointer to the stub functions, which can be used to retrieve the arguments. This pointer argument can be set up immediately prior to the call, so it does not interfere with the regT? temporaries. We follow this pattern on x86-64, where the ABI is typically to pass arguments in registers. You cannot trivially change the way this works, since the argument pointer is used for other purposes too (e.g. retrieving the arguments passed into the JIT code from within the stubs). We strongly prefer small, simple, incremental changes. A patch that tried to both port the JIT to a new platform and to introduce a new argument passing interface to the JIT stub functions sounds unlikely to get anywhere (a patch porting the JIT to a new platform is on its own very likely to be too much more than we'd want to land in one chunk). I'd suggest that a port would be wise to engineer it's initial solution to fit one of the existing argument passing mechanisms (these are selected by JIT_STUB_ARGUMENT_* switches, to help find the relevant code). (Alternatively, you're welcome to attempt to port x86-64 to make use of an in-register argument passing solution, which could be hugely useful. With this landed first and separately, a port could then build on top of this.) As a more direct answer to your question, you could endeavour to make the set of hardware registers used as JIT temporaries non-overlapping with ABI function argument registers on MIPS, but this is unlikely to be a general solution to anything for all platforms, due to limited register availability on some architectures. we would put all these definition in a file named regMap.h, then we can remove all X86:: from other JIT files. I don't think we'll be keen on taking preemptive changes so far ahead in preparation of a port. The first logical step in porting to a new platform is still to start with WREC, and this requires no changes in the JIT directory. Any refactoring of the existing JIT would make more sense more directly prior to work in that area. cheers, G. I'd apperciate if sb can do it or help me to do it. rgds joe --- On Sat, 2/28/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - which calling convention is used here? To: webkit-dev@lists.webkit.org, Zoltan Herczeg zherc...@inf.u-szeged.hu Date: Saturday, February 28, 2009, 7:40 AM Hi, Thanks for your help in advance:) in JITPropertyAccess.cpp: if (transitionWillNeedStorageRealloc(oldStructure, newStructure)) { pop(X86::ebx); ///pop return address, why? for exception? #if PLATFORM(X86_64)///which convention is this? move(Imm32(newStructure-propertyStorageCapacity()), regT1); //edx move(Imm32(oldStructure-propertyStorageCapacity()), X86::esi); move(regT0, X86::edi); callTarget = call(); #else ///__cdecl, yet how can I know resizePropertyStorage() use __cdecl? push(Imm32(newStructure-propertyStorageCapacity())); push(Imm32(oldStructure-propertyStorageCapacity())); push(regT0); callTarget = call(); addPtr(Imm32(3 * sizeof(void*)), X86::esp); ///clean stack #endif
Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined?
Zoltan, Thanks for reply, I'm trying to understand your example. But,X86 instruction size is from 1 to 17bytes, not constant. I may misunderstand your comments? Many X86 instruction can have imm32 at the end, thus this pointer can be used for patch as well as next address after call. Does Arm have similar things? or else you still need to figure out why patchOffsetOpCallCompareToJump = 9;? may be some instruction lengths relates to the 9? rgds joe --- On Wed, 3/4/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined? To: webkit-dev@lists.webkit.org Date: Wednesday, March 4, 2009, 3:45 AM On x86, the size of the instructions are fixed. If you want to access multiple instructions in the instruction stream, you only need to store the address of the first one, and can access the others by their relative address. This saves a little memory. Example (see JIT::linkCall): instruction at callLinkInfo-hotPathBegin: points to callee comparison instruction at callLinkInfo-hotPathBegin + patchOffsetOpCallCompareToJump: points to the slow case entry jump Zoltan in jit.h, for example: static const int patchOffsetOpCallCompareToJump = 9; static const int patchOffsetPutByIdStructure = 7; static const int patchOffsetPutByIdPropertyMapOffset = 22; static const int patchOffsetGetByIdBranchToSlowCase = 13; thanks for help, I'm stucked here now. joe --- On Sat, 2/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up? To: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 28, 2009, 12:19 PM On Feb 27, 2009, at 4:55 PM, x yz wrote: The regTx seems to be working registers here, yet their definition are regparm(3) registers for function arugments. Such usage would cause conflict on other platforms. May I suggest that we use individual defined set of regs for func i/o argument and working? First up, I think you're getting slightly confused about regparm(3). This is not used anywhere in the JS language JIT, only in WREC. In some configurations of the JIT we use fastcall semantics on x86... but none of this is really relevant to MIPS. Just ignore all this. Stick to the default MIPS ABI for stub functions. Reading between the lines, I'm guessing your concern here is that in setting up arguments for a JIT stub call you may trample the JIT's temporary registers? If so, I think you need to look at the argument passing more closely. The mechanisms to pass arguments to stub functions pass all arguments in memory – typically passing a single pointer to the stub functions, which can be used to retrieve the arguments. This pointer argument can be set up immediately prior to the call, so it does not interfere with the regT? temporaries. We follow this pattern on x86-64, where the ABI is typically to pass arguments in registers. You cannot trivially change the way this works, since the argument pointer is used for other purposes too (e.g. retrieving the arguments passed into the JIT code from within the stubs). We strongly prefer small, simple, incremental changes. A patch that tried to both port the JIT to a new platform and to introduce a new argument passing interface to the JIT stub functions sounds unlikely to get anywhere (a patch porting the JIT to a new platform is on its own very likely to be too much more than we'd want to land in one chunk). I'd suggest that a port would be wise to engineer it's initial solution to fit one of the existing argument passing mechanisms (these are selected by JIT_STUB_ARGUMENT_* switches, to help find the relevant code). (Alternatively, you're welcome to attempt to port x86-64 to make use of an in-register argument passing solution, which could be hugely useful. With this landed first and separately, a port could then build on top of this.) As a more direct answer to your question, you could endeavour to make the set of hardware registers used as JIT temporaries non-overlapping with ABI function argument registers on MIPS, but this is unlikely to be a general solution to anything for all platforms, due to limited register availability on some architectures. we would put all these definition in a file named regMap.h, then we can remove all X86:: from other JIT files. I don't think we'll be keen on taking preemptive changes so far ahead in preparation of a port. The first logical step in porting to a new platform is still to start with WREC, and this requires no changes in the JIT directory. Any refactoring of the existing JIT
Re: [webkit-dev] strange behaviour when loading local webpage using file://
thanks for update, it helps people. --- On Mon, 3/2/09, Jenson Lui jhn...@gmail.com wrote: From: Jenson Lui jhn...@gmail.com Subject: Re: [webkit-dev] strange behaviour when loading local webpage using file:// To: last...@yahoo.com Cc: webkit-dev@lists.webkit.org Date: Monday, March 2, 2009, 5:10 PM Hello all, After some codes trace and I find that the g_file_info_get_content_type is not function properly on my target board. So I wrote a simple test program to test the g_file_info_get_content_type and discover that my target root fs is missing the MIME database. By copy the MIME database, everything is working fine now. Anyway, thanks for the helps! Regards, Jenson On Sun, Mar 1, 2009 at 6:48 AM, x yz last...@yahoo.com wrote: you cross compile to which CPU/OS? using which version/compiler? --- On Sat, 2/28/09, Jenson Lui jhn...@gmail.com wrote: From: Jenson Lui jhn...@gmail.com Subject: Re: [webkit-dev] strange behaviour when loading local webpage using file:// To: webkit-dev@lists.webkit.org Date: Saturday, February 28, 2009, 4:32 PM Hello, hmm...actually I did a search and only find something related by Dhananjoy Chutia's email. However, look like no one reply to the issue (or i miss the email reply?) It would be nice if anyone can help to copy the reply or show the link to it. Thanks! Regards, Hung the email is quoted here begin== Hi, Here are some observations: When I try to load file:///home/dhananjoy/index.html , the following error is shown. GLib-GIO-CRITICAL **: g_file_read_async: assertion `G_IS_FILE (file)' failed. As per my observation d-m_gfile is not NULL upto the statement client-didReceiveResponse(handle, response); : line no 590 in WebCore/platform/network/soup/ResourceHandleSoup.cpp But, afterward d-m_gfile becomes NULL. It is to be noted that my I am using glib-2.15.3. Regards Dhananjoy end== On Sat, Feb 28, 2009 at 1:36 AM, x yz last...@yahoo.com wrote: search for previous discussions. --- On Fri, 2/27/09, Jenson Lui jhn...@gmail.com wrote: From: Jenson Lui jhn...@gmail.com Subject: [webkit-dev] strange behaviour when loading local webpage using file:// To: webkit-dev@lists.webkit.org Date: Friday, February 27, 2009, 3:52 PM Hello all, I encounter a strange problem. I cross compile latest webkit engine and use it in my application. When I try to load a web page from local using file://, instead of rendering the html, the actual html text is display, i.e. html... is shown. I try the lt-Gtklauncher in my target, same result. However, when I try the x86 build of the same revision with the same html page. The html page is rendered as normal. I am using the same set of options when do the cross compile x86 build. I am not sure if there is anything wrong? Does anyone have the same problem? Thanks! Regards, Jenson ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] strange behaviour when loading local webpage using file://
you cross compile to which CPU/OS? using which version/compiler? --- On Sat, 2/28/09, Jenson Lui jhn...@gmail.com wrote: From: Jenson Lui jhn...@gmail.com Subject: Re: [webkit-dev] strange behaviour when loading local webpage using file:// To: webkit-dev@lists.webkit.org Date: Saturday, February 28, 2009, 4:32 PM Hello, hmm...actually I did a search and only find something related by Dhananjoy Chutia's email. However, look like no one reply to the issue (or i miss the email reply?) It would be nice if anyone can help to copy the reply or show the link to it. Thanks! Regards, Hung the email is quoted here begin== Hi, Here are some observations: When I try to load file:///home/dhananjoy/index.html , the following error is shown. GLib-GIO-CRITICAL **: g_file_read_async: assertion `G_IS_FILE (file)' failed. As per my observation d-m_gfile is not NULL upto the statement client-didReceiveResponse(handle, response); : line no 590 in WebCore/platform/network/soup/ResourceHandleSoup.cpp But, afterward d-m_gfile becomes NULL. It is to be noted that my I am using glib-2.15.3. Regards Dhananjoy end== On Sat, Feb 28, 2009 at 1:36 AM, x yz last...@yahoo.com wrote: search for previous discussions. --- On Fri, 2/27/09, Jenson Lui jhn...@gmail.com wrote: From: Jenson Lui jhn...@gmail.com Subject: [webkit-dev] strange behaviour when loading local webpage using file:// To: webkit-dev@lists.webkit.org Date: Friday, February 27, 2009, 3:52 PM Hello all, I encounter a strange problem. I cross compile latest webkit engine and use it in my application. When I try to load a web page from local using file://, instead of rendering the html, the actual html text is display, i.e. html... is shown. I try the lt-Gtklauncher in my target, same result. However, when I try the x86 build of the same revision with the same html page. The html page is rendered as normal. I am using the same set of options when do the cross compile x86 build. I am not sure if there is anything wrong? Does anyone have the same problem? Thanks! Regards, Jenson ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - stack/code segment alignment
Zoltan, you are right, thanks a lot! joe --- On Fri, 2/27/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - stack/code segment alignment To: webkit-dev@lists.webkit.org Date: Friday, February 27, 2009, 3:41 PM Hi, in ARM, we have a rule set called EABI (Embedded Application Binary Interface). It says the stack must always be word aligned, and must be 2 words (8 bytes) aligned if you call other functions. The WebKit interpreter callbacks returns either a single pointer (sometimes an int contains a boolean value) or double pointers. These return values can be passed through registers, no need to pre-allocate stack space for them. The functions generated by g++ are also EABI compilant, so we don't need worry about the stack at all. I think AssemblerBuffer is only temporary hold the generated machine instructions. When the compilation phase is done, you need to call AssemblerBuffer::executableCopy, which allocates a new executable memory space and that space is aligned by ExecutableAllocator. Cheers, Zoltan Zoltan, thanks a lot! yeah the issue is just JIT related. Do I need to take care of stack in JIT code, say before emit asm call I align the stack? I guess no need because Mips always aligned to 32bits, and the only double functions in webkit return result in registers not memory. For AssemblerBuffer.h I think it is different because the initial 256bytes buffer may be not aligned to 32bit. I'll add __attribute__ ((aligned (4))) or 8. rgds joe --- On Fri, 2/27/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - stack/code segment alignment To: webkit-dev@lists.webkit.org Date: Friday, February 27, 2009, 6:16 AM Hi, I am not sure I understand your questions. The code blocks are allocated by mmap() or VirtualAlloc(), thus they are aligned to 4K. Smaller chunks are aligned by roundUpAllocationSize() function. Now the alignemt is sizeof(void*) in both x86 and ARM. See ExecutableAllocator.h The current jit implementations don't store temporary variables on the stack, they allocate a fixed size buffer after the entry, and only free that when you leave the jit. This approach is much easier than keep tracking of the stack. Cheers, Zoltan gcc handles it well for X86. now on Mips I need to do followings right? 1. make sure (re)allocated code buffer aligned to 64bits and gcc malloc() only guarantee 32bits 2. before any call instruction in JIT code, make sure stack is aligned to 64bit also. PPC no JIT thus no problem right? rgds joe --- On Sun, 2/22/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough barraclo...@apple.com Date: Sunday, February 22, 2009, 4:34 PM Thanks a lot otherwise I have misunderstanding. Yes I'll do wrec first. I just want to clean up possible blocking issues. I see wrec uses regparm(3) and jit always use fastcall for X86? In JIT.cpp ctiTrampoline put CallFrame in edi, but how about other arguments - where are they be fetched/poped from stack? when deal with caller/callee saved regs, gcc MIPS just preserves them when necesasary. The problem is after JIT used gcc may not have enough knowledge on necessary, do we have a way to force gcc always preserve them? how to identify a patch (patchimm/patchptr/patchaddr) relates to a data field in an instruction or relates to an element in a data array? In Mips the former means the 32bit needs to be separated into two 16bits and patched into two instructions. But if a 32bit is a pointer in a pointer array, we can save it directly. rgds joe --- On Fri, 2/20/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org Date: Friday, February 20, 2009, 2:01 PM On Feb 19, 2009, at 8:27 PM, x yz wrote: I'd appreaciate your help to clarify the problem I faced: 1.In JIT.cpp I roughly understand ctiTrampoline() except for sp-0x1C, I guess the 1C includes 6 argument yet the 7th or 1st may be the hidden C++ pointer? And the reserved 1C stack space seems not used? why esi is forced to be 512 rather than use input argument? The JIT allocates a fixed frame on the stack which is used to pass arguments into stub functions. The 0x1C contains a spare word or two
Re: [webkit-dev] strange behaviour when loading local webpage using file://
search for previous discussions. --- On Fri, 2/27/09, Jenson Lui jhn...@gmail.com wrote: From: Jenson Lui jhn...@gmail.com Subject: [webkit-dev] strange behaviour when loading local webpage using file:// To: webkit-dev@lists.webkit.org Date: Friday, February 27, 2009, 3:52 PM Hello all, I encounter a strange problem. I cross compile latest webkit engine and use it in my application. When I try to load a web page from local using file://, instead of rendering the html, the actual html text is display, i.e. html... is shown. I try the lt-Gtklauncher in my target, same result. However, when I try the x86 build of the same revision with the same html page. The html page is rendered as normal. I am using the same set of options when do the cross compile x86 build. I am not sure if there is anything wrong? Does anyone have the same problem? Thanks! Regards, Jenson ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - which calling convention is used here?
Hi, Thanks for your help in advance:) in JITPropertyAccess.cpp: if (transitionWillNeedStorageRealloc(oldStructure, newStructure)) { pop(X86::ebx); ///pop return address, why? for exception? #if PLATFORM(X86_64)///which convention is this? move(Imm32(newStructure-propertyStorageCapacity()), regT1); //edx move(Imm32(oldStructure-propertyStorageCapacity()), X86::esi); move(regT0, X86::edi); callTarget = call(); #else ///__cdecl, yet how can I know resizePropertyStorage() use __cdecl? push(Imm32(newStructure-propertyStorageCapacity())); push(Imm32(oldStructure-propertyStorageCapacity())); push(regT0); callTarget = call(); addPtr(Imm32(3 * sizeof(void*)), X86::esp); ///clean stack #endif ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up?
Gavin, Thanks for correct me, see my comments below with : --- On Sat, 2/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up? To: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 28, 2009, 12:19 PM On Feb 27, 2009, at 4:55 PM, x yz wrote: The regTx seems to be working registers here, yet their definition are regparm(3) registers for function arugments. Such usage would cause conflict on other platforms. May I suggest that we use individual defined set of regs for func i/o argument and working? First up, I think you're getting slightly confused about regparm(3). This is not used anywhere in the JS language JIT, only in WREC. In some configurations of the JIT we use fastcall semantics on x86... but none of this is really relevant to MIPS. Just ignore all this. Stick to the default MIPS ABI for stub functions. You are absolutely right, I used to see WREC has postfix for regparm(3) and comments on using fastcall or so, yet I'm confused by so many calling conventions and especially messed up today. For exmaple, how could I know which calling convention the following function uses? static JSObject* resizePropertyStorage(JSObject* baseObject, int32_t oldSize, int32_t newSize) { baseObject-allocatePropertyStorage(oldSize, newSize); return baseObject; } Reading between the lines, I'm guessing your concern here is that in setting up arguments for a JIT stub call you may trample the JIT's temporary registers? If so, I think you need to look at the argument passing more closely. The mechanisms to pass arguments to stub functions pass all arguments in memory – typically passing a single pointer to the stub functions, which can be used to retrieve the arguments. This pointer argument can be set up immediately prior to the call, so it does not interfere with the regT? temporaries. We follow this pattern on x86-64, where the ABI is typically to pass arguments in registers. You cannot trivially change the way this works, since the argument pointer is used for other purposes too (e.g. retrieving the arguments passed into the JIT code from within the stubs). We strongly prefer small, simple, incremental changes. A patch that tried to both port the JIT to a new platform and to introduce a new argument passing interface to the JIT stub functions sounds unlikely to get anywhere (a patch porting the JIT to a new platform is on its own very likely to be too much more than we'd want to land in one chunk). I'd suggest that a port would be wise to engineer it's initial solution to fit one of the existing argument passing mechanisms (these are selected by JIT_STUB_ARGUMENT_* switches, to help find the relevant code). (Alternatively, you're welcome to attempt to port x86-64 to make use of an in-register argument passing solution, which could be hugely useful. With this landed first and separately, a port could then build on top of this.) Mips calling conventions always passes 1st four in regs and others in stack from left to right. Thus I need to change argument passing. As a more direct answer to your question, you could endeavour to make the set of hardware registers used as JIT temporaries non-overlapping with ABI function argument registers on MIPS, but this is unlikely to be a general solution to anything for all platforms, due to limited register availability on some architectures. Thanks this would work. we would put all these definition in a file named regMap.h, then we can remove all X86:: from other JIT files. I don't think we'll be keen on taking preemptive changes so far ahead in preparation of a port. The first logical step in porting to a new platform is still to start with WREC, and this requires no changes in the JIT directory. Any refactoring of the existing JIT would make more sense more directly prior to work in that area. I'm waiting for a partner to complete tool chain, that's why I paused wrec and work on JIT. I don't ask for logical change on X86 code for porting, but sth like #define to remap registers. One reg can have multiple names like what we see in current code: static const RegisterID returnValueRegister = X86::eax; static const RegisterID cachedResultRegister = X86::eax; static const RegisterID regT0 = X86::eax; In this way the X86:eax can exist in just one regMap.h file. For Mips the above may be: static const RegisterID returnValueRegister = MIPS::$v0; static const RegisterID cachedResultRegister = MIPS::$s1; static const RegisterID regT0 = MIPS:$a0; The key is one name one usage. Currently I'll use same MIPS reg for above lines rather than 3 different one as I'm not sure any inter-usage in X86 code, or X86 uses one name for multiple purpose. If I don't use remapping, then I need another
Re: [webkit-dev] JCS standalone
I see two time this reply. Yet if you try it will fail, at least on Linux. May be it works on WIN/MAC. --- On Sat, 2/21/09, Geoffrey Garen gga...@apple.com wrote: From: Geoffrey Garen gga...@apple.com Subject: Re: [webkit-dev] JCS standalone To: thouraya andolsi thouraya.ando...@gmail.com Cc: webkit-dev@lists.webkit.org Date: Saturday, February 21, 2009, 4:32 AM Hi. You can use 'make' or any of the platform-specific project files in the JavaScriptCore subdirectory. Geoff On Feb 19, 2009, at 11:52 PM, thouraya andolsi wrote: Hi all, How can i compile JSC standalone ? ( I would like to have just the jsc executable) I looked at WebKitTools/Scripts directory and I found build-jsc script. But using this script, I didn't get the jsc compiled (may be I didn't used the correct command line to compile). Best regards. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] How to build a webkit release build
what I said is you get everything not release build. you check out the svn. If you get release build you may just get a binary to run, not for make/build. rgds joe --- On Wed, 2/25/09, Meryl Silverburgh silverburgh.me...@gmail.com wrote: From: Meryl Silverburgh silverburgh.me...@gmail.com Subject: Re: [webkit-dev] How to build a webkit release build To: last...@yahoo.com Cc: webkit-dev@lists.webkit.org Date: Wednesday, February 25, 2009, 12:29 PM Thanks. But after I svn get the release build, there are only 4 sub-directories. $ ls JavaScriptCoreJavaScriptGlue WebCore WebKit So I can't perform your steps as there is no 'autogen.sh' 'build-webkit', etc. On Tue, Feb 24, 2009 at 7:35 PM, x yz last...@yahoo.com wrote: check out eveything, autogen.sh --pefix=dir set-webkit-configuration --release build-webkit --gtk --- On Wed, 2/25/09, Meryl Silverburgh silverburgh.me...@gmail.com wrote: From: Meryl Silverburgh silverburgh.me...@gmail.com Subject: [webkit-dev] How to build a webkit release build To: webkit-dev@lists.webkit.org Date: Wednesday, February 25, 2009, 8:50 AM I read the instructions here in building Webkit trunk build. http://webkit.org/building/build.html But when I check out the 'release' build, it only has 4 subdirectories (different from the trunk project directories) and it does not have 'WebKit/WebKitTools/Scripts/build-webkit' http://trac.webkit.org/browser/releases/Apple/Safari%204%20Public%20Beta http://trac.webkit.org/browser/trunk So my question is how can I build Webkit's release build? Thank you. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?
Hi, Old version seems use ENABLE_JIT_OPTIMIZE_ARITHMETIC to enable sse2 and only for X86_64, current version changes conf to: 1. you must ENABLE_JIT_OPTIMIZE_ARITHMETIC or else you use interpreter for arithmatic. 2. if ALTERNATE_JSIMMEDIATE not enabled you must have sse2 engine 3. if ALTERNATE_JSIMMEDIATE enabled, you use mmx arithematic, but ALTERNATE_JSIMMEDIATE is enabled in paltform.h only for X86_64 MAC. That means on X86 you need sse2??? thanks for your time! joe --- On Sun, 2/22/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough barraclo...@apple.com Date: Sunday, February 22, 2009, 4:34 PM Thanks a lot otherwise I have misunderstanding. Yes I'll do wrec first. I just want to clean up possible blocking issues. I see wrec uses regparm(3) and jit always use fastcall for X86? In JIT.cpp ctiTrampoline put CallFrame in edi, but how about other arguments - where are they be fetched/poped from stack? when deal with caller/callee saved regs, gcc MIPS just preserves them when necesasary. The problem is after JIT used gcc may not have enough knowledge on necessary, do we have a way to force gcc always preserve them? how to identify a patch (patchimm/patchptr/patchaddr) relates to a data field in an instruction or relates to an element in a data array? In Mips the former means the 32bit needs to be separated into two 16bits and patched into two instructions. But if a 32bit is a pointer in a pointer array, we can save it directly. rgds joe --- On Fri, 2/20/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org Date: Friday, February 20, 2009, 2:01 PM On Feb 19, 2009, at 8:27 PM, x yz wrote: I'd appreaciate your help to clarify the problem I faced: 1.In JIT.cpp I roughly understand ctiTrampoline() except for sp-0x1C, I guess the 1C includes 6 argument yet the 7th or 1st may be the hidden C++ pointer? And the reserved 1C stack space seems not used? why esi is forced to be 512 rather than use input argument? The JIT allocates a fixed frame on the stack which is used to pass arguments into stub functions. The 0x1C contains a spare word or two to maintain stack alignment. %esi is used in the timeout check mechanism. 2.How to understand the stack balance in ctiVMThrowTrampoline()? why after calling we still add 1C w/o sub 1C before calling? where comes _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I know which name for Mips? does this one relates to variable argument function call? ctiVMThrowTrampoline is never called as a function (it is declared as a function only to provide a symbol that can be manipulated from C code). ctiVMThrowTrampoline is used in returning back from JIT generated code, in the case of an exception. 3.I know how to handle jump in Mips, but not sure how/when to handle patchAddress/patchImm/patchPointer because I'm not sure the instructions related. I guess all patches are for last 32bit IMM field of instructions. Mips can't load 32bit in one instruction, thus I need to know the instruction before I can patch/add in the 32bit data. 4.I'm kind of want no asm code outside assembler folder, any plan for that? No. The assembler is intended to be independent of JavaScript types - it's just an assembler. The asm trampolines are specific to the JIT. It is currently the intention that architecture specific parts of the JIT implementation will remain in the jit folder. I'd suggest that in attempting to port the jit, WREC would be a good place to start. cheers, G. rgds joe --- On Mon, 2/16/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled? To: Gavin Barraclough barraclo...@apple.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Monday, February 16, 2009, 5:25 AM Hi, from paltform.h it is enabled only on X86 MAC/WIN; from javaScriptCore.pri it is also enabled for (QT_ARCH,i386). But, from config.log I see them are enabled! how can I run WREC/JIT test so I can trace in X86 asm coce generated? thanks a lot. joe --- On Sat, 2/7/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base To: last...@yahoo.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 7, 2009, 7:08 AM On Feb 6, 2009, at 2:52 PM, x yz wrote: 1.what's the meaning
Re: [webkit-dev] want to port JIT to MIPS - patchImmediate
Hi, in jitPropertyAccess.cpp: // Patch the offset into the propoerty map to load from, then patch the Structure to look for... stubInfo-hotPathBegin.dataLabel32AtOffset(patchOffsetGetByIdPropertyMapOffset).repatch(cachedOffset * sizeof(JSValuePtr)); how propertyMap is used and why we need such patch? who will/how to use patched data? rgds joe --- On Sun, 2/22/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough barraclo...@apple.com Date: Sunday, February 22, 2009, 4:34 PM Thanks a lot otherwise I have misunderstanding. Yes I'll do wrec first. I just want to clean up possible blocking issues. I see wrec uses regparm(3) and jit always use fastcall for X86? In JIT.cpp ctiTrampoline put CallFrame in edi, but how about other arguments - where are they be fetched/poped from stack? when deal with caller/callee saved regs, gcc MIPS just preserves them when necesasary. The problem is after JIT used gcc may not have enough knowledge on necessary, do we have a way to force gcc always preserve them? how to identify a patch (patchimm/patchptr/patchaddr) relates to a data field in an instruction or relates to an element in a data array? In Mips the former means the 32bit needs to be separated into two 16bits and patched into two instructions. But if a 32bit is a pointer in a pointer array, we can save it directly. rgds joe --- On Fri, 2/20/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org Date: Friday, February 20, 2009, 2:01 PM On Feb 19, 2009, at 8:27 PM, x yz wrote: I'd appreaciate your help to clarify the problem I faced: 1.In JIT.cpp I roughly understand ctiTrampoline() except for sp-0x1C, I guess the 1C includes 6 argument yet the 7th or 1st may be the hidden C++ pointer? And the reserved 1C stack space seems not used? why esi is forced to be 512 rather than use input argument? The JIT allocates a fixed frame on the stack which is used to pass arguments into stub functions. The 0x1C contains a spare word or two to maintain stack alignment. %esi is used in the timeout check mechanism. 2.How to understand the stack balance in ctiVMThrowTrampoline()? why after calling we still add 1C w/o sub 1C before calling? where comes _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I know which name for Mips? does this one relates to variable argument function call? ctiVMThrowTrampoline is never called as a function (it is declared as a function only to provide a symbol that can be manipulated from C code). ctiVMThrowTrampoline is used in returning back from JIT generated code, in the case of an exception. 3.I know how to handle jump in Mips, but not sure how/when to handle patchAddress/patchImm/patchPointer because I'm not sure the instructions related. I guess all patches are for last 32bit IMM field of instructions. Mips can't load 32bit in one instruction, thus I need to know the instruction before I can patch/add in the 32bit data. 4.I'm kind of want no asm code outside assembler folder, any plan for that? No. The assembler is intended to be independent of JavaScript types - it's just an assembler. The asm trampolines are specific to the JIT. It is currently the intention that architecture specific parts of the JIT implementation will remain in the jit folder. I'd suggest that in attempting to port the jit, WREC would be a good place to start. cheers, G. rgds joe --- On Mon, 2/16/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled? To: Gavin Barraclough barraclo...@apple.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Monday, February 16, 2009, 5:25 AM Hi, from paltform.h it is enabled only on X86 MAC/WIN; from javaScriptCore.pri it is also enabled for (QT_ARCH,i386). But, from config.log I see them are enabled! how can I run WREC/JIT test so I can trace in X86 asm coce generated? thanks a lot. joe --- On Sat, 2/7/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base To: last...@yahoo.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 7, 2009, 7:08 AM On Feb 6, 2009, at 2:52 PM, x yz wrote: 1.what's the meaning of ALTERNATE_JSIMMEDIATE and slow case? On x86-64 we use a different implementation of the class JSImmediate. See
Re: [webkit-dev] want to port JIT to MIPS - stack/code segment alignment
Zoltan, thanks a lot! yeah the issue is just JIT related. Do I need to take care of stack in JIT code, say before emit asm call I align the stack? I guess no need because Mips always aligned to 32bits, and the only double functions in webkit return result in registers not memory. For AssemblerBuffer.h I think it is different because the initial 256bytes buffer may be not aligned to 32bit. I'll add __attribute__ ((aligned (4))) or 8. rgds joe --- On Fri, 2/27/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote: From: Zoltan Herczeg zherc...@inf.u-szeged.hu Subject: Re: [webkit-dev] want to port JIT to MIPS - stack/code segment alignment To: webkit-dev@lists.webkit.org Date: Friday, February 27, 2009, 6:16 AM Hi, I am not sure I understand your questions. The code blocks are allocated by mmap() or VirtualAlloc(), thus they are aligned to 4K. Smaller chunks are aligned by roundUpAllocationSize() function. Now the alignemt is sizeof(void*) in both x86 and ARM. See ExecutableAllocator.h The current jit implementations don't store temporary variables on the stack, they allocate a fixed size buffer after the entry, and only free that when you leave the jit. This approach is much easier than keep tracking of the stack. Cheers, Zoltan gcc handles it well for X86. now on Mips I need to do followings right? 1. make sure (re)allocated code buffer aligned to 64bits and gcc malloc() only guarantee 32bits 2. before any call instruction in JIT code, make sure stack is aligned to 64bit also. PPC no JIT thus no problem right? rgds joe --- On Sun, 2/22/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough barraclo...@apple.com Date: Sunday, February 22, 2009, 4:34 PM Thanks a lot otherwise I have misunderstanding. Yes I'll do wrec first. I just want to clean up possible blocking issues. I see wrec uses regparm(3) and jit always use fastcall for X86? In JIT.cpp ctiTrampoline put CallFrame in edi, but how about other arguments - where are they be fetched/poped from stack? when deal with caller/callee saved regs, gcc MIPS just preserves them when necesasary. The problem is after JIT used gcc may not have enough knowledge on necessary, do we have a way to force gcc always preserve them? how to identify a patch (patchimm/patchptr/patchaddr) relates to a data field in an instruction or relates to an element in a data array? In Mips the former means the 32bit needs to be separated into two 16bits and patched into two instructions. But if a 32bit is a pointer in a pointer array, we can save it directly. rgds joe --- On Fri, 2/20/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org Date: Friday, February 20, 2009, 2:01 PM On Feb 19, 2009, at 8:27 PM, x yz wrote: I'd appreaciate your help to clarify the problem I faced: 1.In JIT.cpp I roughly understand ctiTrampoline() except for sp-0x1C, I guess the 1C includes 6 argument yet the 7th or 1st may be the hidden C++ pointer? And the reserved 1C stack space seems not used? why esi is forced to be 512 rather than use input argument? The JIT allocates a fixed frame on the stack which is used to pass arguments into stub functions. The 0x1C contains a spare word or two to maintain stack alignment. %esi is used in the timeout check mechanism. 2.How to understand the stack balance in ctiVMThrowTrampoline()? why after calling we still add 1C w/o sub 1C before calling? where comes _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I know which name for Mips? does this one relates to variable argument function call? ctiVMThrowTrampoline is never called as a function (it is declared as a function only to provide a symbol that can be manipulated from C code). ctiVMThrowTrampoline is used in returning back from JIT generated code, in the case of an exception. 3.I know how to handle jump in Mips, but not sure how/when to handle patchAddress/patchImm/patchPointer because I'm not sure the instructions related. I guess all patches are for last 32bit IMM field of instructions. Mips can't load 32bit in one instruction, thus I need to know the instruction before I can patch/add in the 32bit data. 4.I'm kind of want no asm code outside assembler folder, any plan for that? No. The assembler is intended to be independent of JavaScript types - it's just an assembler. The asm trampolines are specific to the JIT. It is currently the intention that architecture specific parts
Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?
yes but if isSSE2Present() returns false the code becomes very simple so I doubt it may be slow. what's the benefit to enable/disable ALTERNATE_JSIMMEDIATE? thanks joe --- On Fri, 2/27/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now? To: WebKit Development webkit-dev@lists.webkit.org Date: Friday, February 27, 2009, 6:03 AM SSE2 code generation is guarded by calls to a function 'isSSE2Present()'. On Feb 26, 2009, at 12:27 PM, x yz wrote: Hi, Old version seems use ENABLE_JIT_OPTIMIZE_ARITHMETIC to enable sse2 and only for X86_64, current version changes conf to: 1. you must ENABLE_JIT_OPTIMIZE_ARITHMETIC or else you use interpreter for arithmatic. 2. if ALTERNATE_JSIMMEDIATE not enabled you must have sse2 engine 3. if ALTERNATE_JSIMMEDIATE enabled, you use mmx arithematic, but ALTERNATE_JSIMMEDIATE is enabled in paltform.h only for X86_64 MAC. That means on X86 you need sse2??? thanks for your time! joe --- On Sun, 2/22/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough barraclo...@apple.com Date: Sunday, February 22, 2009, 4:34 PM Thanks a lot otherwise I have misunderstanding. Yes I'll do wrec first. I just want to clean up possible blocking issues. I see wrec uses regparm(3) and jit always use fastcall for X86? In JIT.cpp ctiTrampoline put CallFrame in edi, but how about other arguments - where are they be fetched/poped from stack? when deal with caller/callee saved regs, gcc MIPS just preserves them when necesasary. The problem is after JIT used gcc may not have enough knowledge on necessary, do we have a way to force gcc always preserve them? how to identify a patch (patchimm/patchptr/patchaddr) relates to a data field in an instruction or relates to an element in a data array? In Mips the former means the 32bit needs to be separated into two 16bits and patched into two instructions. But if a 32bit is a pointer in a pointer array, we can save it directly. rgds joe --- On Fri, 2/20/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org Date: Friday, February 20, 2009, 2:01 PM On Feb 19, 2009, at 8:27 PM, x yz wrote: I'd appreaciate your help to clarify the problem I faced: 1.In JIT.cpp I roughly understand ctiTrampoline() except for sp-0x1C, I guess the 1C includes 6 argument yet the 7th or 1st may be the hidden C++ pointer? And the reserved 1C stack space seems not used? why esi is forced to be 512 rather than use input argument? The JIT allocates a fixed frame on the stack which is used to pass arguments into stub functions. The 0x1C contains a spare word or two to maintain stack alignment. %esi is used in the timeout check mechanism. 2.How to understand the stack balance in ctiVMThrowTrampoline()? why after calling we still add 1C w/o sub 1C before calling? where comes _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I know which name for Mips? does this one relates to variable argument function call? ctiVMThrowTrampoline is never called as a function (it is declared as a function only to provide a symbol that can be manipulated from C code). ctiVMThrowTrampoline is used in returning back from JIT generated code, in the case of an exception. 3.I know how to handle jump in Mips, but not sure how/when to handle patchAddress/patchImm/patchPointer because I'm not sure the instructions related. I guess all patches are for last 32bit IMM field of instructions. Mips can't load 32bit in one instruction, thus I need to know the instruction before I can patch/add in the 32bit data. 4.I'm kind of want no asm code outside assembler folder, any plan for that? No. The assembler is intended to be independent of JavaScript types - it's just an assembler. The asm trampolines are specific to the JIT. It is currently the intention that architecture specific parts of the JIT implementation will remain in the jit folder. I'd suggest that in attempting to port the jit, WREC would be a good place to start. cheers, G. rgds joe --- On Mon, 2/16/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled? To: Gavin Barraclough barraclo...@apple.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Monday, February 16, 2009, 5:25 AM Hi, from paltform.h it is enabled only
Re: [webkit-dev] How to build a webkit release build
check out eveything, autogen.sh --pefix=dir set-webkit-configuration --release build-webkit --gtk --- On Wed, 2/25/09, Meryl Silverburgh silverburgh.me...@gmail.com wrote: From: Meryl Silverburgh silverburgh.me...@gmail.com Subject: [webkit-dev] How to build a webkit release build To: webkit-dev@lists.webkit.org Date: Wednesday, February 25, 2009, 8:50 AM I read the instructions here in building Webkit trunk build. http://webkit.org/building/build.html But when I check out the 'release' build, it only has 4 subdirectories (different from the trunk project directories) and it does not have 'WebKit/WebKitTools/Scripts/build-webkit' http://trac.webkit.org/browser/releases/Apple/Safari%204%20Public%20Beta http://trac.webkit.org/browser/trunk So my question is how can I build Webkit's release build? Thank you. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS
Thanks a lot otherwise I have misunderstanding. Yes I'll do wrec first. I just want to clean up possible blocking issues. I see wrec uses regparm(3) and jit always use fastcall for X86? In JIT.cpp ctiTrampoline put CallFrame in edi, but how about other arguments - where are they be fetched/poped from stack? when deal with caller/callee saved regs, gcc MIPS just preserves them when necesasary. The problem is after JIT used gcc may not have enough knowledge on necessary, do we have a way to force gcc always preserve them? how to identify a patch (patchimm/patchptr/patchaddr) relates to a data field in an instruction or relates to an element in a data array? In Mips the former means the 32bit needs to be separated into two 16bits and patched into two instructions. But if a 32bit is a pointer in a pointer array, we can save it directly. rgds joe --- On Fri, 2/20/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS To: WebKit Development webkit-dev@lists.webkit.org Date: Friday, February 20, 2009, 2:01 PM On Feb 19, 2009, at 8:27 PM, x yz wrote: I'd appreaciate your help to clarify the problem I faced: 1.In JIT.cpp I roughly understand ctiTrampoline() except for sp-0x1C, I guess the 1C includes 6 argument yet the 7th or 1st may be the hidden C++ pointer? And the reserved 1C stack space seems not used? why esi is forced to be 512 rather than use input argument? The JIT allocates a fixed frame on the stack which is used to pass arguments into stub functions. The 0x1C contains a spare word or two to maintain stack alignment. %esi is used in the timeout check mechanism. 2.How to understand the stack balance in ctiVMThrowTrampoline()? why after calling we still add 1C w/o sub 1C before calling? where comes _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I know which name for Mips? does this one relates to variable argument function call? ctiVMThrowTrampoline is never called as a function (it is declared as a function only to provide a symbol that can be manipulated from C code). ctiVMThrowTrampoline is used in returning back from JIT generated code, in the case of an exception. 3.I know how to handle jump in Mips, but not sure how/when to handle patchAddress/patchImm/patchPointer because I'm not sure the instructions related. I guess all patches are for last 32bit IMM field of instructions. Mips can't load 32bit in one instruction, thus I need to know the instruction before I can patch/add in the 32bit data. 4.I'm kind of want no asm code outside assembler folder, any plan for that? No. The assembler is intended to be independent of JavaScript types - it's just an assembler. The asm trampolines are specific to the JIT. It is currently the intention that architecture specific parts of the JIT implementation will remain in the jit folder. I'd suggest that in attempting to port the jit, WREC would be a good place to start. cheers, G. rgds joe --- On Mon, 2/16/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled? To: Gavin Barraclough barraclo...@apple.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Monday, February 16, 2009, 5:25 AM Hi, from paltform.h it is enabled only on X86 MAC/WIN; from javaScriptCore.pri it is also enabled for (QT_ARCH,i386). But, from config.log I see them are enabled! how can I run WREC/JIT test so I can trace in X86 asm coce generated? thanks a lot. joe --- On Sat, 2/7/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base To: last...@yahoo.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 7, 2009, 7:08 AM On Feb 6, 2009, at 2:52 PM, x yz wrote: 1.what's the meaning of ALTERNATE_JSIMMEDIATE and slow case? On x86-64 we use a different implementation of the class JSImmediate. See JSImmediate.h. Re 'slow case', in the JIT code generation is performed as two passes over the bytecode – see JIT::privateCompileMainPass and JIT::privateCompileSlowCases. 2.how come the following code can use ECX as base register? load32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), X86::ecx); if the X86::ecx just means its value 1 in ModR/M, does it means [BX+DI]? I think you're looking at the old 16-bit addressing mode tables; 32/64-bit x86 can happily encode ecx as a base register. If you're looking at the Intel IA-32 manual volume 2, see table 2-2 on the next page. 3. can anybody help me on my previous questions? does JIT support floating point? Yes, some. See JITArithmetic.cpp. cheers, G
Re: [webkit-dev] error: Cannot find icu-config. The ICU library is needed.
nguyen, you need to install icu-devel, on FC9 you have icu already. I used to suggest you read the build guide that lists these dependencies. joe --- On Sun, 2/22/09, Iulian iliescu.iul...@gmail.com wrote: From: Iulian iliescu.iul...@gmail.com Subject: Re: [webkit-dev] error: Cannot find icu-config. The ICU library is needed. To: webkit-dev@lists.webkit.org Date: Sunday, February 22, 2009, 3:32 AM WebKit has some dependecies. If you are using Gnome, read this: http://trac.webkit.org/wiki/BuildingGtk and keep in mind that Fedora packages ends with -devel and not with -dev If you are using KDE and do you want to build WebKit on top of QT, that you should read this: http://trac.webkit.org/wiki/QtWebKit Iulian nguyen hai -cuncon wrote: Hi all, I build webkit on Fedora 9. I typed ./autogen.sh and I got a message: checking for icu-config... no configure: error: Cannot find icu-config. The ICU library is needed. [r...@localhost WebKit-r41018]# I am looking this error on webkt.org but I have not found any answer. Can you help me to solve this error? Thanks in advance! Hai Hỗ trợ Tìm kiếm nay đã có trên Yahoo! Thanh công cụ. Tải ngay. http://vn.toolbar.yahoo.com/ ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev -- View this message in context: http://www.nabble.com/error%3A-Cannot-find-icu-config.-The-ICU-library-is-needed.-tp22032927p22139654.html Sent from the Webkit mailing list archive at Nabble.com. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS
I'd appreaciate your help to clarify the problem I faced: 1.In JIT.cpp I roughly understand ctiTrampoline() except for sp-0x1C, I guess the 1C includes 6 argument yet the 7th or 1st may be the hidden C++ pointer? And the reserved 1C stack space seems not used? why esi is forced to be 512 rather than use input argument? 2.How to understand the stack balance in ctiVMThrowTrampoline()? why after calling we still add 1C w/o sub 1C before calling? where comes _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I know which name for Mips? does this one relates to variable argument function call? 3.I know how to handle jump in Mips, but not sure how/when to handle patchAddress/patchImm/patchPointer because I'm not sure the instructions related. I guess all patches are for last 32bit IMM field of instructions. Mips can't load 32bit in one instruction, thus I need to know the instruction before I can patch/add in the 32bit data. 4.I'm kind of want no asm code outside assembler folder, any plan for that? rgds joe --- On Mon, 2/16/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled? To: Gavin Barraclough barraclo...@apple.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Monday, February 16, 2009, 5:25 AM Hi, from paltform.h it is enabled only on X86 MAC/WIN; from javaScriptCore.pri it is also enabled for (QT_ARCH,i386). But, from config.log I see them are enabled! how can I run WREC/JIT test so I can trace in X86 asm coce generated? thanks a lot. joe --- On Sat, 2/7/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base To: last...@yahoo.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 7, 2009, 7:08 AM On Feb 6, 2009, at 2:52 PM, x yz wrote: 1.what's the meaning of ALTERNATE_JSIMMEDIATE and slow case? On x86-64 we use a different implementation of the class JSImmediate. See JSImmediate.h. Re 'slow case', in the JIT code generation is performed as two passes over the bytecode – see JIT::privateCompileMainPass and JIT::privateCompileSlowCases. 2.how come the following code can use ECX as base register? load32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), X86::ecx); if the X86::ecx just means its value 1 in ModR/M, does it means [BX+DI]? I think you're looking at the old 16-bit addressing mode tables; 32/64-bit x86 can happily encode ecx as a base register. If you're looking at the Intel IA-32 manual volume 2, see table 2-2 on the next page. 3. can anybody help me on my previous questions? does JIT support floating point? Yes, some. See JITArithmetic.cpp. cheers, G. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] checking for LIBSOUP... configure: error: Package requirements (libsoup-2.4 = 2.23) were not met:
libsoup 2.23 is newer than 2.4. On Fedora9 only 2.4 is available, on FC10 2.24 is available. You need to changed the required version 2.23 in configure.ac to 2.4 then you can build. I have not completed the build yet. FC has older libs than ubuntu or so, when I try to compile openembbed flash I got lots of lib problem. Dave, may I suggest that lib version requirements to consider Fedora9? I mean can we loose the requirements, or use OS specific one so FC9 just needs 2.4? rgds joe --- On Tue, 2/17/09, Bo Yang techrazy.y...@gmail.com wrote: From: Bo Yang techrazy.y...@gmail.com Subject: Re: [webkit-dev] checking for LIBSOUP... configure: error: Package requirements (libsoup-2.4 = 2.23) were not met: To: deuxliq...@yahoo.com Cc: webkit-dev@lists.webkit.org Date: Tuesday, February 17, 2009, 4:31 PM I have came across this error, too. The problem is , webkit need is 2.24 or later. But the libsoup 2.4 is not suitable, and webkit can't build with it because libsoup 2.4 miss the SoupCookieJar and something which exist in 2.24. Install libsoup 2.24 , it will work! Regards! Bo ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] error: Cannot find icu-config. The ICU library is needed.
Pls read build requirements, there are a few devel lib needed and you can download rpm to update missed lib --- On Mon, 2/16/09, nguyen hai deuxliq...@yahoo.com wrote: From: nguyen hai deuxliq...@yahoo.com Subject: [webkit-dev] error: Cannot find icu-config. The ICU library is needed. To: webkit-dev@lists.webkit.org Date: Monday, February 16, 2009, 3:56 PM Hi all, I build webkit on Fedora 9. I typed ./autogen.sh and I got a message: checking for icu-config... no configure: error: Cannot find icu-config. The ICU library is needed. [r...@localhost WebKit-r41018]# I am looking this error on webkt.org but I have not found any answer. Can you help me to solve this error? Thanks in advance! Hai Hỗ trợ Tìm kiếm nay đã có trên Yahoo! Thanh công cụ. Tải ngay. http://vn.toolbar.yahoo.com/___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] checking for LIBSOUP... configure: error: Package requirements (libsoup-2.4 = 2.23) were not met:
when I changed requirements to 2.4 there are build error: WebCore/platform/network/soup/CookieJarSoup.h:34: error: expected constructor, destructor, or type conversion before ‘*’ token WebCore/platform/network/soup/CookieJarSoup.cpp:28: error: expected constructor, destructor, or type conversion before ‘*’ token WebCore/platform/network/soup/CookieJarSoup.cpp: In function ‘void WebCore::setCookies(WebCore::Document*, const WebCore::KURL, const WebCore::KURL, const WebCore::String)’: WebCore/platform/network/soup/CookieJarSoup.cpp:36: error: ‘SoupCookieJar’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp:36: error: ‘jar’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp:36: error: ‘getCookieJar’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp:42: error: ‘soup_cookie_jar_set_cookie’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp: In function ‘WebCore::String WebCore::cookies(const WebCore::Document*, const WebCore::KURL)’: WebCore/platform/network/soup/CookieJarSoup.cpp:48: error: ‘SoupCookieJar’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp:48: error: ‘jar’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp:48: error: ‘getCookieJar’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp:53: error: ‘soup_cookie_jar_get_cookies’ was not declared in this scope WebCore/platform/network/soup/CookieJarSoup.cpp: In function ‘bool WebCore::cookiesEnabled(const WebCore::Document*)’: WebCore/platform/network/soup/CookieJarSoup.cpp:64: error: ‘getCookieJar’ was not declared in this scope make[1]: *** [WebCore/platform/network/soup/libWebCore_la-CookieJarSoup.lo] Error 1 make[1]: Leaving directory `/home/jdai/depot/mp/newarch/webkit/webkit' make: *** [all] Error 2 --- On Wed, 2/18/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] checking for LIBSOUP... configure: error: Package requirements (libsoup-2.4 = 2.23) were not met: To: deuxliq...@yahoo.com, Bo Yang techrazy.y...@gmail.com Cc: webkit-dev@lists.webkit.org Date: Wednesday, February 18, 2009, 2:40 AM libsoup 2.23 is newer than 2.4. On Fedora9 only 2.4 is available, on FC10 2.24 is available. You need to changed the required version 2.23 in configure.ac to 2.4 then you can build. I have not completed the build yet. FC has older libs than ubuntu or so, when I try to compile openembbed flash I got lots of lib problem. Dave, may I suggest that lib version requirements to consider Fedora9? I mean can we loose the requirements, or use OS specific one so FC9 just needs 2.4? rgds joe --- On Tue, 2/17/09, Bo Yang techrazy.y...@gmail.com wrote: From: Bo Yang techrazy.y...@gmail.com Subject: Re: [webkit-dev] checking for LIBSOUP... configure: error: Package requirements (libsoup-2.4 = 2.23) were not met: To: deuxliq...@yahoo.com Cc: webkit-dev@lists.webkit.org Date: Tuesday, February 17, 2009, 4:31 PM I have came across this error, too. The problem is , webkit need is 2.24 or later. But the libsoup 2.4 is not suitable, and webkit can't build with it because libsoup 2.4 miss the SoupCookieJar and something which exist in 2.24. Install libsoup 2.24 , it will work! Regards! Bo ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] Flash support with Qt for WebKit - how about Gtk?
does Gtk+ support/will support Flash? any comparison on Gtk+/Qt port or advatanges? rgds joe --- On Sat, 2/14/09, Benjamin Meyer b...@meyerhome.net wrote: From: Benjamin Meyer b...@meyerhome.net Subject: Re: [webkit-dev] Flash support with Qt for WebKit To: Cc: webkit-dev@lists.webkit.org Date: Saturday, February 14, 2009, 3:52 AM The Qt port does include support for flash. If you are using webkit that is bundled with Qt make sure you are using one of the Qt 4.5 snapshots as Qt 4.4 does not include flash. Also make sure you turn on plugin support in your QtWebKit application. -Benjamin Meyer On Feb 12, 2009, at 7:43 PM, Joshi wrote: Hi, What is the status of support for Flash player and other Mozilla style plugins in WebKit? I compiled WebKit using Qt port on Linux and it runs fine but fails to display pages with Flash. I have flash plugins for Mozilla and so both Firefox and Konqueror can show flash. Is there any guide on how to make WebKit work for flash pages? I see there is relevant code under WebCore/plugins/{win,mac}. But, I don't see corresponding WebCore/plugins/qt. Does this mean right now plugins are not supported for Qt port? I will appreciate any answers. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] webkit test ques/fail
Hi, I tried to run 02/13/09 code on Ubuntu 8.10/Intel two core CPU and face a few errors. 1. how do I specifically test WREC/JIT? I just want to run a specific code file so I can trace if sth wrong. I can run GtkLauncher or jsc. 2. on architecture level how WREC/JIT are used in webkit? how could I know the calling sequence? I can run some test but how do I know whether WREC/JIT are called? what's the running flow of WREC/JIT? 3. when I run_javascriptcore_tests the error is: shell.js -f ./js1_6/String/regress-306591.js -#- Wrote results to 'actual.html'. ** Danger, Will Robinson! Danger! The following failures have been introduced: ecma/Date/15.9.5.31-1.js #hour diff 1 ecma/Date/15.9.5.35-1.js ecma_3/Date/15.9.5.6.js You fixed the following test: ecma_3/Date/15.9.5.7.js 3 regressions found. 1 test fixed. Errors include time difference of 1 hour (time zone wrong?) or unexpected NaN. 4. when I run-webkit-tests: ... 3907 test cases (96%) succeeded 106 test cases (2%) had incorrect layout 35 test cases (1%) were new 1 test case (1%) timed out 9 test cases (1%) crashed 138 test cases (3%) had stderr output May be some errors are normal but how do I identify them? rgds joe --- On Wed, 1/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Wednesday, January 28, 2009, 4:55 PM On Jan 27, 2009, at 10:58 PM, x yz wrote: Gavin, last night I saw WREC when I search X86, and realized many places need to be touched. Your reply give more info and really help. Thanks a lot. In Generator::generateEnter(), there is comment On gcc the function is regparm(3)..., how to understand that? WREC JIT generates a function with a C calling convention that implements the regular expression. The entry and exit from the function are generated by the generateEnter() and generateReturn*() methods. On OS X x86, the JIT generated function implements a regparm(3) calling convention (see WREC.h, the generated code is called through a CompiledRegExp function pointer). The function has no argument, why we peek four arguments from stack(input,output,length,index)? These calls are not peeking values from the stack at the time they are called; they are emitting JIT code that will will read values from the stack, when the JIT function has been generated and is run. The JIT generated regular expression function is passed these four arguments (again see WREC.h). As a note, you're best directing these emails at the webkit-dev list in future, that way other people will also be able to help you out. cheers, G. rgds joe --- On Tue, 1/27/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Tuesday, January 27, 2009, 5:10 AM On Jan 26, 2009, at 11:09 AM, x yz wrote: Gavin, Thanks, I really need to learn fast. Where can I find more on WREC or its spec? WREC is WebKit's regular expression JIT. The spec it is implementing is the regular expression syntax described in ECMA-262. Which part of webkit is WREC? I just see all assembler codes are in assembler and jit and wonder whether I can just change them rather then change WREC. WebKit contains two separate JITs, one for the JavaScript language (in the 'jit' directory), one for JavaScript's regular expression language (in the 'wrec' directory). Both JITs make use of the same assembler to emit code. WREC is a much smaller, simpler JIT, which is why I suggest starting by looking at this, but either JIT can be enabled independently of the other. Foresee SSE set may be a problem as MIPS has no SSE. WREC does not use SSE, and I believe all JIT code generated by the main JS JIT is guarded by the a configuration switch, JIT_OPTIMIZE_ARITHMETIC – this can be disabled in Platform.h. Sun's link for The JIT Compiler Interface Specification not valid anymore. Our JIT is all our own code, and written from scratch, so I'm not sure this documentation would help you. Good luck, G. MacroAssembler::breakpoint() is just int3 which I know used as debug int in X86. I'll see which one used in gnu mips. joe --- On Sun, 1/25/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: WebKit Development webkit-dev@lists.webkit.org Date: Sunday, January 25, 2009, 5:34 PM On Jan 24, 2009, at 8:36 PM, x yz wrote: Just build webkit on XP using cgywin, not tested yet. I want
Re: [webkit-dev] webkit test ques/fail
it seems WREC/JIT is disabled on Linux/X86, only available on MAC/WIN. right? --- On Mon, 2/16/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] webkit test ques/fail To: webkit-dev@lists.webkit.org Date: Monday, February 16, 2009, 4:26 AM Hi, I tried to run 02/13/09 code on Ubuntu 8.10/Intel two core CPU and face a few errors. 1. how do I specifically test WREC/JIT? I just want to run a specific code file so I can trace if sth wrong. I can run GtkLauncher or jsc. 2. on architecture level how WREC/JIT are used in webkit? how could I know the calling sequence? I can run some test but how do I know whether WREC/JIT are called? what's the running flow of WREC/JIT? 3. when I run_javascriptcore_tests the error is: shell.js -f ./js1_6/String/regress-306591.js -#- Wrote results to 'actual.html'. ** Danger, Will Robinson! Danger! The following failures have been introduced: ecma/Date/15.9.5.31-1.js #hour diff 1 ecma/Date/15.9.5.35-1.js ecma_3/Date/15.9.5.6.js You fixed the following test: ecma_3/Date/15.9.5.7.js 3 regressions found. 1 test fixed. Errors include time difference of 1 hour (time zone wrong?) or unexpected NaN. 4. when I run-webkit-tests: ... 3907 test cases (96%) succeeded 106 test cases (2%) had incorrect layout 35 test cases (1%) were new 1 test case (1%) timed out 9 test cases (1%) crashed 138 test cases (3%) had stderr output May be some errors are normal but how do I identify them? rgds joe --- On Wed, 1/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Wednesday, January 28, 2009, 4:55 PM On Jan 27, 2009, at 10:58 PM, x yz wrote: Gavin, last night I saw WREC when I search X86, and realized many places need to be touched. Your reply give more info and really help. Thanks a lot. In Generator::generateEnter(), there is comment On gcc the function is regparm(3)..., how to understand that? WREC JIT generates a function with a C calling convention that implements the regular expression. The entry and exit from the function are generated by the generateEnter() and generateReturn*() methods. On OS X x86, the JIT generated function implements a regparm(3) calling convention (see WREC.h, the generated code is called through a CompiledRegExp function pointer). The function has no argument, why we peek four arguments from stack(input,output,length,index)? These calls are not peeking values from the stack at the time they are called; they are emitting JIT code that will will read values from the stack, when the JIT function has been generated and is run. The JIT generated regular expression function is passed these four arguments (again see WREC.h). As a note, you're best directing these emails at the webkit-dev list in future, that way other people will also be able to help you out. cheers, G. rgds joe --- On Tue, 1/27/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Tuesday, January 27, 2009, 5:10 AM On Jan 26, 2009, at 11:09 AM, x yz wrote: Gavin, Thanks, I really need to learn fast. Where can I find more on WREC or its spec? WREC is WebKit's regular expression JIT. The spec it is implementing is the regular expression syntax described in ECMA-262. Which part of webkit is WREC? I just see all assembler codes are in assembler and jit and wonder whether I can just change them rather then change WREC. WebKit contains two separate JITs, one for the JavaScript language (in the 'jit' directory), one for JavaScript's regular expression language (in the 'wrec' directory). Both JITs make use of the same assembler to emit code. WREC is a much smaller, simpler JIT, which is why I suggest starting by looking at this, but either JIT can be enabled independently of the other. Foresee SSE set may be a problem as MIPS has no SSE. WREC does not use SSE, and I believe all JIT code generated by the main JS JIT is guarded by the a configuration switch, JIT_OPTIMIZE_ARITHMETIC – this can be disabled in Platform.h. Sun's link for The JIT Compiler Interface Specification not valid anymore. Our JIT is all our own code, and written from scratch, so I'm not sure this documentation would help you. Good luck, G. MacroAssembler::breakpoint() is just int3 which I know
Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled?
Hi, from paltform.h it is enabled only on X86 MAC/WIN; from javaScriptCore.pri it is also enabled for (QT_ARCH,i386). But, from config.log I see them are enabled! how can I run WREC/JIT test so I can trace in X86 asm coce generated? thanks a lot. joe --- On Sat, 2/7/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base To: last...@yahoo.com Cc: WebKit Development webkit-dev@lists.webkit.org Date: Saturday, February 7, 2009, 7:08 AM On Feb 6, 2009, at 2:52 PM, x yz wrote: 1.what's the meaning of ALTERNATE_JSIMMEDIATE and slow case? On x86-64 we use a different implementation of the class JSImmediate. See JSImmediate.h. Re 'slow case', in the JIT code generation is performed as two passes over the bytecode – see JIT::privateCompileMainPass and JIT::privateCompileSlowCases. 2.how come the following code can use ECX as base register? load32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), X86::ecx); if the X86::ecx just means its value 1 in ModR/M, does it means [BX+DI]? I think you're looking at the old 16-bit addressing mode tables; 32/64-bit x86 can happily encode ecx as a base register. If you're looking at the Intel IA-32 manual volume 2, see table 2-2 on the next page. 3. can anybody help me on my previous questions? does JIT support floating point? Yes, some. See JITArithmetic.cpp. cheers, G. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] How to build webkit on Linux?
you can't use MS s/w on Linux, you need to use gnu C++ or tool chain. google it. --- On Thu, 2/12/09, nguyen hai -cuncon deuxliq...@yahoo.com wrote: From: nguyen hai -cuncon deuxliq...@yahoo.com Subject: [webkit-dev] How to build webkit on Linux? To: webkit-dev@lists.webkit.org Date: Thursday, February 12, 2009, 11:49 AM Hi all,I run Cygwin as if it is a pseudo Linux environment to build webkit.I have had some problems that I posted webkit-...@list.webkit.org during using Cygwin. I think the pseudo Linux is not so good as actual Linux. So I installed Fedora 9 into my computer.But, I wonder if how I install Visual Studio 2005 on Linux?If there is not Visual Studio, can webkit run ?Hai Bạn sẽ làm gì khi cuộc đời không cho bạn cơ hội? Câu trả lời từ những người đã trải qua những thăng trầm trong cuộc sống. http://vn.answers.yahoo.com___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base
1.what's the meaning of ALTERNATE_JSIMMEDIATE and slow case? 2.how come the following code can use ECX as base register? load32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), X86::ecx); if the X86::ecx just means its value 1 in ModR/M, does it means [BX+DI]? 3. can anybody help me on my previous questions? does JIT support floating point? many thanks joe --- On Tue, 2/3/09, x yz last...@yahoo.com wrote: From: x yz last...@yahoo.com Subject: Re: [webkit-dev] want to port JIT to MIPS - IEEE ques To: Gavin Barraclough barraclo...@apple.com, WebKit Development webkit-dev@lists.webkit.org Date: Tuesday, February 3, 2009, 9:08 AM 1. Thanks for more info. Although X86 Linux gcc uses regparam(3), I think MIPS ABI always asks $a0~a3/@v0~v1 for i/o? 2. It seems I can get rid of 64bit OP if JIT_OPTIMIZE_ARITHMETIC and ALTERNATE_JSIMMEDIATE are both disabled? 3. is it ALTERNATE_JSIMMEDIATE for ecma-262? 4. does JIT support floating point? if yes why it is not under jit/asm? rgds joe --- On Wed, 1/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Wednesday, January 28, 2009, 4:55 PM On Jan 27, 2009, at 10:58 PM, x yz wrote: Gavin, last night I saw WREC when I search X86, and realized many places need to be touched. Your reply give more info and really help. Thanks a lot. In Generator::generateEnter(), there is comment On gcc the function is regparm(3)..., how to understand that? WREC JIT generates a function with a C calling convention that implements the regular expression. The entry and exit from the function are generated by the generateEnter() and generateReturn*() methods. On OS X x86, the JIT generated function implements a regparm(3) calling convention (see WREC.h, the generated code is called through a CompiledRegExp function pointer). The function has no argument, why we peek four arguments from stack(input,output,length,index)? These calls are not peeking values from the stack at the time they are called; they are emitting JIT code that will will read values from the stack, when the JIT function has been generated and is run. The JIT generated regular expression function is passed these four arguments (again see WREC.h). As a note, you're best directing these emails at the webkit-dev list in future, that way other people will also be able to help you out. cheers, G. rgds joe --- On Tue, 1/27/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Tuesday, January 27, 2009, 5:10 AM On Jan 26, 2009, at 11:09 AM, x yz wrote: Gavin, Thanks, I really need to learn fast. Where can I find more on WREC or its spec? WREC is WebKit's regular expression JIT. The spec it is implementing is the regular expression syntax described in ECMA-262. Which part of webkit is WREC? I just see all assembler codes are in assembler and jit and wonder whether I can just change them rather then change WREC. WebKit contains two separate JITs, one for the JavaScript language (in the 'jit' directory), one for JavaScript's regular expression language (in the 'wrec' directory). Both JITs make use of the same assembler to emit code. WREC is a much smaller, simpler JIT, which is why I suggest starting by looking at this, but either JIT can be enabled independently of the other. Foresee SSE set may be a problem as MIPS has no SSE. WREC does not use SSE, and I believe all JIT code generated by the main JS JIT is guarded by the a configuration switch, JIT_OPTIMIZE_ARITHMETIC – this can be disabled in Platform.h. Sun's link for The JIT Compiler Interface Specification not valid anymore. Our JIT is all our own code, and written from scratch, so I'm not sure this documentation would help you. Good luck, G. MacroAssembler::breakpoint() is just int3 which I know used as debug int in X86. I'll see which one used in gnu mips. joe --- On Sun, 1/25/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: WebKit Development webkit-dev@lists.webkit.org Date: Sunday, January 25, 2009, 5:34 PM On Jan 24, 2009, at 8:36 PM, x yz wrote: Just build webkit on XP using cgywin, not tested yet. I want to port to 32bit MIPS, it seems I need
Re: [webkit-dev] want to port JIT to MIPS - IEEE ques
1. Thanks for more info. Although X86 Linux gcc uses regparam(3), I think MIPS ABI always asks $a0~a3/@v0~v1 for i/o? 2. It seems I can get rid of 64bit OP if JIT_OPTIMIZE_ARITHMETIC and ALTERNATE_JSIMMEDIATE are both disabled? 3. is it ALTERNATE_JSIMMEDIATE for ecma-262? 4. does JIT support floating point? if yes why it is not under jit/asm? rgds joe --- On Wed, 1/28/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Wednesday, January 28, 2009, 4:55 PM On Jan 27, 2009, at 10:58 PM, x yz wrote: Gavin, last night I saw WREC when I search X86, and realized many places need to be touched. Your reply give more info and really help. Thanks a lot. In Generator::generateEnter(), there is comment On gcc the function is regparm(3)..., how to understand that? WREC JIT generates a function with a C calling convention that implements the regular expression. The entry and exit from the function are generated by the generateEnter() and generateReturn*() methods. On OS X x86, the JIT generated function implements a regparm(3) calling convention (see WREC.h, the generated code is called through a CompiledRegExp function pointer). The function has no argument, why we peek four arguments from stack(input,output,length,index)? These calls are not peeking values from the stack at the time they are called; they are emitting JIT code that will will read values from the stack, when the JIT function has been generated and is run. The JIT generated regular expression function is passed these four arguments (again see WREC.h). As a note, you're best directing these emails at the webkit-dev list in future, that way other people will also be able to help you out. cheers, G. rgds joe --- On Tue, 1/27/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: last...@yahoo.com Date: Tuesday, January 27, 2009, 5:10 AM On Jan 26, 2009, at 11:09 AM, x yz wrote: Gavin, Thanks, I really need to learn fast. Where can I find more on WREC or its spec? WREC is WebKit's regular expression JIT. The spec it is implementing is the regular expression syntax described in ECMA-262. Which part of webkit is WREC? I just see all assembler codes are in assembler and jit and wonder whether I can just change them rather then change WREC. WebKit contains two separate JITs, one for the JavaScript language (in the 'jit' directory), one for JavaScript's regular expression language (in the 'wrec' directory). Both JITs make use of the same assembler to emit code. WREC is a much smaller, simpler JIT, which is why I suggest starting by looking at this, but either JIT can be enabled independently of the other. Foresee SSE set may be a problem as MIPS has no SSE. WREC does not use SSE, and I believe all JIT code generated by the main JS JIT is guarded by the a configuration switch, JIT_OPTIMIZE_ARITHMETIC – this can be disabled in Platform.h. Sun's link for The JIT Compiler Interface Specification not valid anymore. Our JIT is all our own code, and written from scratch, so I'm not sure this documentation would help you. Good luck, G. MacroAssembler::breakpoint() is just int3 which I know used as debug int in X86. I'll see which one used in gnu mips. joe --- On Sun, 1/25/09, Gavin Barraclough barraclo...@apple.com wrote: From: Gavin Barraclough barraclo...@apple.com Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint? To: WebKit Development webkit-dev@lists.webkit.org Date: Sunday, January 25, 2009, 5:34 PM On Jan 24, 2009, at 8:36 PM, x yz wrote: Just build webkit on XP using cgywin, not tested yet. I want to port to 32bit MIPS, it seems I need to touch JIT and rewrite assembler folder. Once you have the bytecode interpreter up and running on MIPS, I'd recommend starting by just trying to port WREC (the regular expression JIT). This is a good starting point because it utilizes a smaller subset of the MacroAssembler interface, and has a much simpler interface to C code (JIT code is called with C calling conventions, and no callbacks are made into C from the JIT generated code). Any document there on javascripcore/assembler? I also want a smart way to make sure output is correct. A very simple way to validate you are generating the correct code is to simply force the JIT to insert a breakpoint (i.e. use MacroAssembler::breakpoint()) at the head of the function you are generating, then run jsc under a debugger, and when it hits
[webkit-dev] want to port JIT to MIPS, any coworker or any hint?
Just build webkit on XP using cgywin, not tested yet. I want to port to 32bit MIPS, it seems I need to touch JIT and rewrite assembler folder. Any document there on javascripcore/assembler? I also want a smart way to make sure output is correct. ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev