Re: [webkit-dev] stack alignment bug

2009-06-03 Thread x yz

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  wrote:

> From: Zoltan Herczeg 
> Subject: Re: [webkit-dev] stack alignment bug
> To: "x yz" 
> 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

2009-06-02 Thread x yz

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?

2009-05-29 Thread x yz

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  wrote:

> From: x yz 
> 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:  

Re: [webkit-dev] compiling the jsc alone

2009-05-28 Thread x yz

I can "make Program/jsc"
rgds
joe

--- On Thu, 5/21/09, haithem rahmani  wrote:

> From: haithem rahmani 
> 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] Looking for MIPS asm/JIT consultant

2009-05-13 Thread x yz

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] The origin of JavaScript interpreter in WebKit? is it NJS?

2009-05-13 Thread x yz

Hi
 
Does someone know the origin of JavaScript interpreter in WebKit?
I mean _the_ origin, is it sth like NJS Javascript interpreter used to be used 
for NetScape and in sourceforge? are they the same?
 
joe


  
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Webkit SMp support

2009-05-13 Thread x yz

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  wrote:

> From: vinay harugop 
> 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] random seg fault on MIPS platform

2009-05-08 Thread x yz

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  wrote:

> From: Zoltan Herczeg 
> 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,0x

Re: [webkit-dev] random seg fault on MIPS platform

2009-05-08 Thread x yz

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  wrote:

> From: Zoltan Herczeg 
> 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
> > 0x2aa

Re: [webkit-dev] random seg fault on MIPS platform

2009-05-08 Thread x yz

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] the variable of JavaScript function

2009-05-07 Thread x yz

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  wrote:

> From: zhenghe zhang 
> 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] Proposal for a new way to handle porting #ifdefs

2009-05-07 Thread x yz

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  wrote:

> From: Maciej Stachowiak 
> 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 ve

Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) seg fault

2009-04-22 Thread x yz

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 
//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.  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  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) 
> seg fault
> To: "WebKit Development" , "Gavin Barraclough" 
> 
> 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*
> );

Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) seg fault

2009-04-22 Thread x yz

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  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) 
> seg fault
> To: "WebKit Development" , "Gavin Barraclough" 
> 
> 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

2009-04-21 Thread x yz

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] can't build debug_cairo and release_cairo

2009-04-21 Thread x yz

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  wrote:

> From: Kruchinkin Kirill 
> 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] how does Webkit handle font

2009-04-21 Thread x yz

I think it is handled by libicu.


--- On Tue, 4/21/09, ying lcs  wrote:

> From: ying lcs 
> Subject: [webkit-dev] how does Webkit handle font
> To: webkit-dev@lists.webkit.org
> Date: Tuesday, April 21, 2009, 2:00 PM
> Hi,
> 
> Can you please tell me how does Webkit handle font? (e.g.
> which files
> I should look at)
> e.g. css can specify a particular font for a paragraph ,
> where/how
> does Webkit load the font from the OS (or how does it know
> the font
> actually exists?
> 
> 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] make webkit-1.1.3...

2009-04-21 Thread x yz

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  wrote:

> From: yenchengwang 
> 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 
> 
> >
> > > 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 R&D
> > ___
> > 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] known gtk+ leaks

2009-04-07 Thread x yz

v1.1.1 uses libsoup not libcurl now. you may want to look at newer versions.


--- On Tue, 4/7/09, Luka Napotnik  wrote:

> From: Luka Napotnik 
> 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

2009-04-06 Thread x yz

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

2009-04-02 Thread x yz

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  wrote:

> From: Gabor Loki 
> 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] 答复: Build error

2009-04-02 Thread x yz

i used to download and build webkitGTk 1.1.3 w/o any error.


--- On Tue, 3/31/09, Adam Roben  wrote:

> From: Adam Roben 
> Subject: Re: [webkit-dev] 答复:  Build error
> To: "Prashant K.S" 
> Cc: webkit-dev@lists.webkit.org
> Date: Tuesday, March 31, 2009, 3:44 AM
> WebKit.h is generated by the Interfaces project. Maybe
> there's an earlier error that caused Interfaces to fail
> to build?
> 
> -Adam
> 
> On Mar 30, 2009, at 3:19 PM, Prashant K.S wrote:
> 
> > Hi,
> > 
> > I have run update-webkit before starting the build.
> Can anybody help me with this error.
> > 
> > Regards,
> > Prashant
> > 
> > From: canquan.shencq
> 
> > To: Prashant K.S ;
> webkit-dev@lists.webkit.org
> > Sent: Friday, 27 March, 2009 9:27:07 AM
> > Subject: 答复: [webkit-dev] Build error
> > 
> > Please run ./update-webkit at first.
> > 
> > Steven Shen
> > 2009-3-27
> > 
> > 发件人: webkit-dev-boun...@lists.webkit.org
> [mailto:webkit-dev-boun...@lists.webkit.org] 代表 Prashant
> K.S
> > 发送时间: 2009年3月27日 11:44
> > 收件人: webkit-dev@lists.webkit.org
> > 主题: [webkit-dev] Build error
> > 
> > Hi,
> > 
> > I am new to webkit as well as the windows environment.
> I am trying to build webkit on windows. I followed the
> instructions given in webkit.org. But I am getting an error
> as below.
> > 
> >
> webkit\webkittools\winlauncher\WinLauncher.h(29)
> : fatal error C1083: Cannot open include file:
> 'WebKit.h': No
> >  such file or directory
> > 
> > 
> > 
> > Can anybody help me in fixing this.
> > 
> > 
> > 
> > Regards,
> > 
> > Prashant
> > 
> > 
> > Add more friends to your messenger and enjoy! Invite
> them now.
> > 
> > Share files, take polls, and make new friends - all
> under one roof. Click
> here.___
> > 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 I know WebKit version after check out?

2009-03-18 Thread x yz

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] how to do JIT benchmark

2009-03-18 Thread x yz

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 can i get the diff between two revisions of webkit

2009-03-18 Thread x yz

here is an example:
http://trac.webkit.org/diff?new_path=%2Ftrunk%2FJavaScriptCore%2Fassembler&old_path=%2Ftrunk%2FJavaScriptCore%2Fassembler&new_rev=41544&old_rev=41544

rgds
joe


--- On Tue, 3/10/09, Nitin  wrote:

> From: Nitin 
> Subject: Re: [webkit-dev] webkit-dev Digest, Vol 46, Issue 9
> To: webkit-dev@lists.webkit.org
> Date: Tuesday, March 10, 2009, 1:05 PM
> hello,
> I have some thing to ask :-
> how can i get the diff between two revisions of webkit.
> lets take an example of r36XXX and r40XXX.
> Is there any Logging system with webkit.org developers that
> they changed
> this and that , this could be very helpful for us.
> Thank you.
> 
> On Mon, Mar 9, 2009 at 7:34 PM,
>  wrote:
> 
> > Send webkit-dev mailing list submissions to
> >webkit-dev@lists.webkit.org
> >
> > To subscribe or unsubscribe via the World Wide Web,
> visit
> >   
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> > or, via email, send a message with subject or body
> 'help' to
> >webkit-dev-requ...@lists.webkit.org
> >
> > You can reach the person managing the list at
> >webkit-dev-ow...@lists.webkit.org
> >
> > When replying, please edit your Subject line so it is
> more specific
> > than "Re: Contents of webkit-dev digest..."
> >
> >
> > Today's Topics:
> >
> >   1. Re: four perl files hard-code the path to gcc
> (David Kilzer)
> >   2. Where is the javascript engine code which build a
> callsyntax
> >  tree (ying lcs)
> >   3. Fwd:  run-safari fails in Window Debug build
> (First Half)
> >   4. Re: Where is the javascript engine code which
> build a call
> >  syntax tree (Darin Adler)
> >   5. Fwd: RSS support (RamaMohanReddy B)
> >   6. Please help:press tab button twice to go from
> browser
> >  status bar to browser window button in webkit
> (Ajay Gautam)
> >   7. Re: ISO C++ forbids casting between
> pointer-to-function and
> >  pointer-to-object (Paul Pedriana)
> >   8. Re: how to implement the flash block for webkit
> onlinux?
> >  (Julien Chaffraix)
> >   9. Re: Please help:press tab button twice to go
> from browser
> >  tool bar to browser window button in webkit (Ajay
> Gautam)
> >  10. Is it possible to get current source URL and line
> number from
> >  JavaScriptCore API? (Zhe Su)
> >
> >
> >
> --
> >
> > Message: 1
> > Date: Sun, 8 Mar 2009 08:23:38 -0700 (PDT)
> > From: David Kilzer 
> > Subject: Re: [webkit-dev] four perl files hard-code
> the path to gcc
> > To: Dennis Heuer 
> > Cc: webkit-dev@lists.webkit.org
> > Message-ID:
> <278539.28476...@web110809.mail.gq1.yahoo.com>
> > Content-Type: text/plain; charset="us-ascii"
> >
> > I agree that the path shouldn't be hard-coded, so
> I filed:
> >
> > Bug 24454: Path to perl should not be hard-coded
> > https://bugs.webkit.org/show_bug.cgi?id=24454
> >
> > Salvation lies within:
> >
> > Bug 392184 - Users should be allowed to delete their
> own account
> > https://bugzilla.mozilla.org/show_bug.cgi?id=392184
> >
> > Dave
> >
> >
> >
> >
> > 
> > From: Dennis Heuer 
> > To: webkit-dev@lists.webkit.org
> > Sent: Saturday, March 7, 2009 11:42:12 PM
> > Subject: [webkit-dev] four perl files hard-code the
> path to gcc
> >
> > hello
> >
> > first: i refuse to use bugzilla because it doesn't
> let me drop or at
> > least close my account at a later time. take this post
> or not.
> >
> > four of the perl files contend hard-coded paths to
> gcc. my gcc resides
> > in opt and is not detected (not even searched for).
> please update these
> > scripts with the general configure procedure. the
> scripts are:
> >
> > WebCore/css/make-css-file-arrays.pl
> > WebCore/dom/make_names.pl
> > WebCore/bindings/scripts/IDLParser.pm
> > WebCore/bindings/scripts/CodeGeneratorObjC.pm
> >
> > many thanks,
> > dennis heuer
> >
> > ___
> > webkit-dev mailing list
> > webkit-dev@lists.webkit.org
> >
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> > -- next part --
> > An HTML attachment was scrubbed...
> > URL: <
> >
> http://lists.webkit.org/pipermail/webkit-dev/attachments/20090308/8fc7136f/attachment-0001.html
> > >
> >
> > --
> >
> > Message: 2
> > Date: Sun, 8 Mar 2009 18:09:18 -0700
> > From: ying lcs 
> > Subject: [webkit-dev] Where is the javascript engine
> code which build
> >a call  syntax tree
> > To: webkit-dev@lists.webkit.org
> > Message-ID:
> >   
> <568e62a40903081809g4da2d2ccl9a37238ce3448...@mail.gmail.com>
> > Content-Type: text/plain; charset=ISO-8859-1
> >
> > Hi,
> >
> > My understand of WebKit javascript engine is it builds
> a call-syntax
> > tree and gives it to the interrupter.
> >
> > http://webkit.org/projects/javascript/index.html
> >
> > Can you please tell me where is the code which parses
> the js file and
> > build a call-syntax tree?
> > And if Ja

Re: [webkit-dev] How to compile WebKit GTK+ port from ARM processor?

2009-03-18 Thread x yz

I do mips not arm, but after setup cross compiler tool chain the compilation is 
the same as on native X86 platform. 
for how to setup tool chain, you would got help from Internet.
after you set up tool chain, you will need to compile extra libs. how to 
compile libs is also another issue.
rgds
joe


--- On Tue, 3/17/09, arati  wrote:

> From: arati 
> Subject: Re: [webkit-dev] How to compile WebKit GTK+ port from ARM processor?
> To: "'Nilesh Patil'" 
> Cc: webkit-dev@lists.webkit.org
> Date: Tuesday, March 17, 2009, 1:11 PM
> Hi Nilesh,
> Thanks for your reply.
> I have a cross compiler(Sourcery g++) installed on openSUSE
> Linux.
> Can you give me any direction for starting building WebKit
> GTK+ port?
> Do I need to do any configuration for this?
> 
> Thanks
> 
> -Original Message-
> From: Nilesh Patil [mailto:vni...@gmail.com] 
> Sent: Thursday, March 12, 2009 19:04
> To: arati
> Cc: webkit-dev@lists.webkit.org
> Subject: Re: [webkit-dev] How to compile WebKit GTK+ port
> from ARM
> processor?
> 
> Hi
> 
> Not really sure but If this is for linux then probably you
> need to
> have some cross platform compiler with environment like
> scratchbox.
> 
> On Wed, Mar 11, 2009 at 2:46 PM, arati
>  wrote:
> > Hi,
> >
> > Can anyone give me any pointer to compile WebKit GTK+
> port for ARM
> > processor?
> >
> > Can this be done using gcc ?
> >
> >
> >
> > Thanks
> >
> > ___
> > 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 - why GtkLaunder needs gcc?

2009-03-18 Thread x yz

we cross-compiled webkit and when we run GtkLaunder it says /bin/...gcc not 
found.
thanks for help.
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?

2009-03-06 Thread x yz

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  wrote:

> From: Zoltan Herczeg 
> 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
>  wrote:
> >
> >> From: Zoltan Herczeg
> 
> >> 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
> >>  wrote:
> >> >
> >> >> From: Gavin Barraclough
> >> 
> >> >> Subject: Re: [webkit-dev] want to port
> JIT to MIPS
> >> - JIT reg usage clean
> >> >> up?
> >> >> To: "WebKit Development"
> >> 
> >> >> 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

Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined?

2009-03-04 Thread x yz

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  wrote:

> From: Zoltan Herczeg 
> 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
>  wrote:
> >
> >> From: Zoltan Herczeg
> 
> >> 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
> >>  wrote:
> >> >
> >> >> From: Gavin Barraclough
> >> 
> >> >> Subject: Re: [webkit-dev] want to port
> JIT to MIPS
> >> - JIT reg usage clean
> >> >> up?
> >> >> To: "WebKit Development"
> >> 
> >> >> 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

Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined?

2009-03-03 Thread x yz

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  wrote:

> From: Zoltan Herczeg 
> 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
>  wrote:
> >
> >> From: Gavin Barraclough
> 
> >> Subject: Re: [webkit-dev] want to port JIT to MIPS
> - JIT reg usage clean
> >> up?
> >> To: "WebKit Development"
> 
> >> 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
> passi

Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* constant determined?

2009-03-03 Thread x yz

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  wrote:

> From: Gavin Barraclough 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up?
> To: "WebKit Development" 
> 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 
> wrote:
> > 
> >> From: x yz 
> >> Subject: Re: [webkit-dev] want to port JIT to MIPS
> - which calling convention is used here?
> >> To: webkit-dev@lists.webkit.org, "Zoltan
> Herczeg" 
> >> 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

Re: [webkit-dev] strange behaviour when loading local webpage using file://

2009-03-02 Thread x yz

thanks for update, it helps people.


--- On Mon, 3/2/09, Jenson Lui  wrote:

> From: Jenson Lui 
> 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
>  wrote:
> >>
> >> you cross compile to which CPU/OS? using which
> version/compiler?
> >>
> >>
> >> --- On Sat, 2/28/09, Jenson Lui
>  wrote:
> >>
> >>> From: Jenson Lui 
> >>> 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
> >>>  wrote:
> >>> >
> >>> > search for previous discussions.
> >>> >
> >>> >
> >>> > --- On Fri, 2/27/09, Jenson Lui
> >>>  wrote:
> >>> >
> >>> >> From: Jenson Lui
> 
> >>> >> 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.
> >>> >> " >>> >> 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://

2009-02-28 Thread x yz

you cross compile to which CPU/OS? using which version/compiler?


--- On Sat, 2/28/09, Jenson Lui  wrote:

> From: Jenson Lui 
> 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
>  wrote:
> >
> > search for previous discussions.
> >
> >
> > --- On Fri, 2/27/09, Jenson Lui
>  wrote:
> >
> >> From: Jenson Lui 
> >> 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.
> >> " >> 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 - JIT reg usage clean up?

2009-02-27 Thread x yz

Gavin,
Thanks for correct me, see my comments below with >>:

--- On Sat, 2/28/09, Gavin Barraclough  wrote:

> From: Gavin Barraclough 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up?
> To: "WebKit Development" 
> 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. Fo

Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up?

2009-02-27 Thread x yz

Hi,
Still in JITPropertyAccess.cpp, may I expect some clean up on reg usage to easy 
porting?

loadPtr(Address(regT2, FIELD_OFFSET(Structure, m_prototype)), regT2);
}

successCases.link(this);

Call callTarget;

// emit a call only if storage realloc is needed
if (transitionWillNeedStorageRealloc(oldStructure, newStructure)) {
pop(X86::ebx);
#if PLATFORM(X86_64)///
move(Imm32(newStructure->propertyStorageCapacity()), regT1);
move(Imm32(oldStructure->propertyStorageCapacity()), X86::esi);
move(regT0, X86::edi);
callTarget = call();
#elif PLATFORM(MIPS)
move(Imm32(newStructure->propertyStorageCapacity()), regT2);
move(Imm32(oldStructure->propertyStorageCapacity()), regT1);
callTarget = call();
#else   ///__cdel
push(Imm32(newStructure->propertyStorageCapacity()));
push(Imm32(oldStructure->propertyStorageCapacity()));
push(regT0);
callTarget = call();
addPtr(Imm32(3 * sizeof(void*)), X86::esp); ///clean stack
#endif

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?

we would put all these definition in a file named regMap.h, then we can remove 
all "X86::" from other JIT files.

I'd apperciate if sb can do it or help me to do it.
rgds
joe




--- On Sat, 2/28/09, x yz  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - which calling convention 
> is used here?
> To: webkit-dev@lists.webkit.org, "Zoltan Herczeg" 
> 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
> 
> 
> 
> 
> 
> 
>   
> ___
> 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?

2009-02-27 Thread x yz

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] strange behaviour when loading local webpage using file://

2009-02-27 Thread x yz

search for previous discussions.


--- On Fri, 2/27/09, Jenson Lui  wrote:

> From: Jenson Lui 
> 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.
> " 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 - stack/code segment alignment

2009-02-27 Thread x yz

Zoltan,
you are right, thanks a lot!
joe


--- On Fri, 2/27/09, Zoltan Herczeg  wrote:

> From: Zoltan Herczeg 
> 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
>  wrote:
> >
> >> From: Zoltan Herczeg
> 
> >> 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
> 
> >> wrote:
> >> >
> >> >> From: x yz 
> >> >> Subject: Re: [webkit-dev] want to port
> JIT to MIPS
> >> >> To: "WebKit Development"
> >> , "Gavin
> >> >> Barraclough"
> 
> >> >> 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 al

Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?

2009-02-26 Thread x yz

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  wrote:

> From: Gavin Barraclough 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?
> To: "WebKit Development" 
> 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 
> wrote:
> >
> >> From: x yz 
> >> Subject: Re: [webkit-dev] want to port JIT to MIPS
> >> To: "WebKit Development"
> , "Gavin  
> >> Barraclough" 
> >> 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
> >>  wrote:
> >>
> >>> From: Gavin Barraclough
> 
> >>> Subject: Re: [webkit-dev] want to port JIT to
> MIPS
> >>> To: "WebKit Development"
> >> 
> >>> 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

Re: [webkit-dev] want to port JIT to MIPS - stack/code segment alignment

2009-02-26 Thread x yz

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  wrote:

> From: Zoltan Herczeg 
> 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 
> wrote:
> >
> >> From: x yz 
> >> Subject: Re: [webkit-dev] want to port JIT to MIPS
> >> To: "WebKit Development"
> , "Gavin
> >> Barraclough" 
> >> 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
> >>  wrote:
> >>
> >> > From: Gavin Barraclough
> 
> >> > Subject: Re: [webkit-dev] want to port JIT to
> MIPS
> >> > To: "WebKit Development"
> >> 
> >> > 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
> >>

Re: [webkit-dev] want to port JIT to MIPS - stack/code segment alignment

2009-02-26 Thread x yz

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  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS
> To: "WebKit Development" , "Gavin Barraclough" 
> 
> 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
>  wrote:
> 
> > From: Gavin Barraclough 
> > Subject: Re: [webkit-dev] want to port JIT to MIPS
> > To: "WebKit Development"
> 
> > 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
> >  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
> 
> > wrote:
> > > 
> > >> From: x yz 
> > >> Subject: Re: [webkit-dev] want to port JIT to
> MIPS
> > - when WREC/JIT enabled?
> > >> To: "Gavin Barraclough"
> > 
> > >> Cc: "WebKit Development"
> > 
> > >> Date: Monday, February 16, 2009, 5:25 AM
> > >> Hi,
> > >> from paltform.h it is enabled only on X86
> MAC/WIN;
> > from
> > >> javaScriptC

Re: [webkit-dev] want to port JIT to MIPS - patchImmediate

2009-02-26 Thread x yz

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  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS
> To: "WebKit Development" , "Gavin Barraclough" 
> 
> 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
>  wrote:
> 
> > From: Gavin Barraclough 
> > Subject: Re: [webkit-dev] want to port JIT to MIPS
> > To: "WebKit Development"
> 
> > 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
> >  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
> 
> > wrote:
> > > 
> > >> From: x yz 
> > >> Subject: Re: [webkit-dev] want to port JIT to
> MIPS
> > - when WREC/JIT enabled?
> > >> To: "Gavin Barraclough"
> > 
> > >> Cc: "WebKit Development"
> > 
> > >> Date: Monday, February 16, 2009, 5:25 AM
> > >> Hi,
> > >> from paltform.h it is enabled only on X86
> 

Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?

2009-02-26 Thread x yz

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  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS
> To: "WebKit Development" , "Gavin Barraclough" 
> 
> 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
>  wrote:
> 
> > From: Gavin Barraclough 
> > Subject: Re: [webkit-dev] want to port JIT to MIPS
> > To: "WebKit Development"
> 
> > 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
> >  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
> 
> > wrote:
> > > 
> > >> From: x yz 
> > >> Subject: Re: [webkit-dev] want to port JIT to
> MIPS
> > - when WREC/JIT enabled?
> > >> To: "Gavin Barraclough"
> > 
> > >> Cc: "WebKit Development"
> > 
> >

Re: [webkit-dev] How to build a webkit release build

2009-02-26 Thread x yz

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  wrote:

> From: Meryl Silverburgh 
> 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
>  wrote:
> > check out eveything,
> > autogen.sh --pefix=
> > set-webkit-configuration --release
> > build-webkit --gtk
> >
> >
> > --- On Wed, 2/25/09, Meryl Silverburgh
>  wrote:
> >
> >> From: Meryl Silverburgh
> 
> >> 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] JCS standalone

2009-02-26 Thread x yz

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  wrote:

> From: Geoffrey Garen 
> Subject: Re: [webkit-dev] JCS standalone
> To: "thouraya andolsi" 
> 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

2009-02-24 Thread x yz
check out eveything, 
autogen.sh --pefix=
set-webkit-configuration --release
build-webkit --gtk


--- On Wed, 2/25/09, Meryl Silverburgh  wrote:

> From: Meryl Silverburgh 
> 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

2009-02-22 Thread x yz
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  wrote:

> From: Gavin Barraclough 
> Subject: Re: [webkit-dev] want to port JIT to MIPS
> To: "WebKit Development" 
> 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
>  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 
> wrote:
> > 
> >> From: x yz 
> >> Subject: Re: [webkit-dev] want to port JIT to MIPS
> - when WREC/JIT enabled?
> >> To: "Gavin Barraclough"
> 
> >> Cc: "WebKit Development"
> 
> >> 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
> >>  wrote:
> >> 
> >>> From: Gavin Barraclough
> 
> >>> Subject: Re: [webkit-dev] want to port JIT to
> MIPS -
> >> using X86::ecx as base
> >>> To: last...@yahoo.com
> >>> Cc: "WebKit Development"
> >> 
> >>> 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
>

Re: [webkit-dev] error: Cannot find icu-config. The ICU library is needed.

2009-02-21 Thread x yz
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  wrote:

> From: Iulian 
> 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

2009-02-19 Thread x yz
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  folder, any plan for that?

rgds
joe

--- On Mon, 2/16/09, x yz  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled?
> To: "Gavin Barraclough" 
> Cc: "WebKit Development" 
> 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
>  wrote:
> 
> > From: Gavin Barraclough 
> > Subject: Re: [webkit-dev] want to port JIT to MIPS -
> using X86::ecx as base
> > To: last...@yahoo.com
> > Cc: "WebKit Development"
> 
> > 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:

2009-02-17 Thread x yz
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  wrote:

> From: x yz 
> 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" 
> 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
>  wrote:
> 
> > From: Bo Yang 
> > 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.

2009-02-17 Thread x yz
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  wrote:

> From: nguyen hai 
> 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:

2009-02-17 Thread x yz
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  wrote:

> From: Bo Yang 
> 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] want to port JIT to MIPS - when WREC/JIT enabled?

2009-02-15 Thread x yz
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  wrote:

> From: Gavin Barraclough 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base
> To: last...@yahoo.com
> Cc: "WebKit Development" 
> 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] webkit test ques/fail

2009-02-15 Thread x yz
it seems WREC/JIT is disabled on Linux/X86, only available on MAC/WIN. right?


--- On Mon, 2/16/09, x yz  wrote:

> From: x yz 
> 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
>  wrote:
> 
> > From: Gavin Barraclough 
> > 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
> >  wrote:
> > >
> > >> From: Gavin Barraclough
> > 
> > >> 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.
> > >>
> > >>> Wh

Re: [webkit-dev] webkit test ques/fail

2009-02-15 Thread x yz

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  wrote:

> From: Gavin Barraclough 
> 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
>  wrote:
> >
> >> From: Gavin Barraclough
> 
> >> 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  and  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.
> &g

Re: [webkit-dev] Flash support with Qt for WebKit - how about Gtk?

2009-02-15 Thread x yz
does Gtk+ support/will support Flash? any comparison on Gtk+/Qt port or 
advatanges?
rgds
joe


--- On Sat, 2/14/09, Benjamin Meyer  wrote:

> From: Benjamin Meyer 
> 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] architecture specific optimizations

2009-02-15 Thread x yz
Hi,
I'm working on port to MIPS32, where no SSE2 can be used. I believe no where 
except for  shall have architecture or assembly related code. I see 
after last release  changes indeed towards such direction.
No reference such as X86:: outside  folder. 
rgds
joe 


--- On Fri, 2/13/09, Osztrogonac Csaba  wrote:

> From: Osztrogonac Csaba 
> Subject: [webkit-dev] architecture specific optimizations
> To: webkit-dev@lists.webkit.org
> Date: Friday, February 13, 2009, 6:47 PM
> Hi all,
> 
> We are interested in SFX speed optimizations, and we have
> experimented with some architecture specific optimizaton.
> 
> If enable gcc to generate SSE2 instructions with -msse2
> option,
> SunSpider has 4.8% progression with JIT, and 2.4%
> progression
> with interpreter. (result attached) (-msse2 is default
> option
> on MAC platform, but it isn't on qt-linux platform)
> 
> Nowadays the rate of sse2 capability CPU is increasing.
> (e.g. all of the x86-64 architecture have sse2.) I think
> we should take advantage of different architectures. Have
> you got any idea? e.g. different build for architectures -
> determine the platform capabilities at buid time, etc
> 
> br,
> Ossy
> 
> 
> TEST   COMPARISONFROM  
>   TO DETAILS
> 
> =
> 
> ** TOTAL **:   1.024x as fast2396.1ms +/- 0.3% 
>  2341.0ms +/- 0.5% significant
> 
> =
> 
>   3d:  1.060x as fast 381.9ms +/- 0.7% 
>   360.3ms +/- 0.7% significant
> cube:  1.081x as fast 125.7ms +/- 1.5% 
>   116.3ms +/- 1.6% significant
> morph: 1.069x as fast 144.1ms +/- 0.8% 
>   134.8ms +/- 0.7% significant
> raytrace:  1.027x as fast 112.1ms +/- 0.6% 
>   109.2ms +/- 0.9% significant
> 
>   access:  ?? 341.8ms +/- 0.3% 
>   342.8ms +/- 1.0% not conclusive: might be *1.003x as
> slow*
> binary-trees:  *1.041x as slow*29.4ms +/- 1.3% 
>30.6ms +/- 2.3% significant
> fannkuch:  *1.015x as slow*   130.4ms +/- 0.4% 
>   132.3ms +/- 0.3% significant
> nbody: 1.027x as fast 146.5ms +/- 0.3% 
>   142.7ms +/- 2.3% significant
> nsieve:*1.048x as slow*35.5ms +/- 1.1% 
>37.2ms +/- 0.8% significant
> 
>   bitops:  1.016x as fast 222.0ms +/- 0.3% 
>   218.5ms +/- 0.3% significant
> 3bit-bits-in-byte: -   38.5ms +/- 1.0% 
>38.2ms +/- 0.8% 
> bits-in-byte:  -   50.9ms +/- 0.4% 
>50.7ms +/- 1.0% 
> bitwise-and:   -   46.0ms +/- 0.0% 
>46.0ms +/- 1.0% 
> nsieve-bits:   1.036x as fast  86.6ms +/- 0.4% 
>83.6ms +/- 0.6% significant
> 
>   controlflow: ??  25.5ms +/- 1.5% 
>25.8ms +/- 1.8% not conclusive: might be *1.012x as
> slow*
> recursive: ??  25.5ms +/- 1.5% 
>25.8ms +/- 1.8% not conclusive: might be *1.012x as
> slow*
> 
>   crypto:  1.043x as fast 158.0ms +/- 0.6% 
>   151.5ms +/- 0.4% significant
> aes:   1.016x as fast  57.5ms +/- 1.2% 
>56.6ms +/- 0.9% significant
> md5:   1.060x as fast  51.0ms +/- 0.7% 
>48.1ms +/- 0.5% significant
> sha1:  1.058x as fast  49.5ms +/- 0.8% 
>46.8ms +/- 0.6% significant
> 
>   date:-  168.0ms +/- 1.6% 
>   166.7ms +/- 1.5% 
> format-tofte:  1.026x as fast  67.8ms +/- 1.1% 
>66.1ms +/- 1.3% significant
> format-xparb:  ?? 100.2ms +/- 2.1% 
>   100.6ms +/- 2.2% not conclusive: might be *1.004x as
> slow*
> 
>   math:1.072x as fast 304.9ms +/- 0.3% 
>   284.3ms +/- 0.7% significant
> cordic:1.112x as fast 111.6ms +/- 0.6% 
>   100.4ms +/- 1.2% significant
> partial-sums:  1.048x as fast 128.1ms +/- 0.3% 
>   122.2ms +/- 0.7% significant
> spectral-norm: 1.057x as fast  65.2ms +/- 0.5% 
>61.7ms +/- 0.8% significant
> 
>   regexp:  -  300.3ms +/- 0.4% 
>   299.6ms +/- 0.3% 
> dna:   -  300.3ms +/- 0.4% 
>   299.6ms +/- 0.3% 
> 
>   string:  -  493.7ms +/- 0.9% 
>   491.5ms +/- 1.0% 
> base64:1.029x as fast  52.6ms +/- 2.0% 
>51.1ms +/- 1.5% significant
> fasta: 1.031x as fast  83.7ms +/- 1.7% 
>81.2ms +/- 1.5% significant
> tagcloud:  ?? 154.7ms +/- 1.1% 
>   156.0ms +/- 0.9% not conclusive: might be *1.008x as
> slow*
> unpack-code:   ?? 124.2ms +/- 1.7% 
>   125.7ms +/- 1.7% not conclusive

Re: [webkit-dev] How to build webkit on Linux?

2009-02-11 Thread x yz
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  wrote:

> From: nguyen hai -cuncon 
> 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

2009-02-06 Thread x yz
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  wrote:

> From: x yz 
> Subject: Re: [webkit-dev] want to port JIT to MIPS - IEEE ques
> To: "Gavin Barraclough" , "WebKit Development" 
> 
> 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
>  wrote:
> 
> > From: Gavin Barraclough 
> > 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
> >  wrote:
> > >
> > >> From: Gavin Barraclough
> > 
> > >> 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  and
>  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

Re: [webkit-dev] want to port JIT to MIPS - IEEE ques

2009-02-02 Thread x yz
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  wrote:

> From: Gavin Barraclough 
> 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
>  wrote:
> >
> >> From: Gavin Barraclough
> 
> >> 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  and  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
> >>  wrote:
> >>>
> >>>> From: Gavin Barraclough
> >> 
> >>>> Subject: Re: [webkit-dev] want to port JIT
> to
> >> MIPS, any coworker or any hint?
> >&

Re: [webkit-dev] Windows build problems

2009-02-02 Thread x yz
I use cygwin not qt and it works fine:
http://webkit.org/blog/214/introducing-squirrelfish-extreme/

you shall set env by run vcvars32.bat, and use
set-webkit-configuration --debug
build-webkit --clean --debug
I tried on safari.
rgds
joe


--- On Sat, 1/31/09, Joshi  wrote:

> From: Joshi 
> Subject: [webkit-dev] Windows build problems
> To: webkit-dev@lists.webkit.org
> Date: Saturday, January 31, 2009, 4:04 AM
> My linux build works fine. But, when I build it on Windows
> using nmake (I
> run perl WebKitTools\Scripts\build-webkit --qt) the
> linker complains about
> missing LIBCD.lib.
> As per the instructions on webkit website, I use compiler
> tools from Visual
> Studio 2005. According to MSDN, Microsoft no longer
> supports the
> single-threaded LIBCD.lib from version 2005 and only
> supports the
> multi-threaded LIBCMT*.lib
> 
> Is this a bug? Should I patch make files?
> 
> I will appreciate any help.
> ___
> 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] want to port JIT to MIPS, any coworker or any hint?

2009-01-24 Thread x yz
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