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 zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] stack alignment bug
 To: x yz last...@yahoo.com
 Cc: webkit-dev@lists.webkit.org
 Date: Wednesday, June 3, 2009, 7:35 PM
 Hi,
 
 true, some architectures have strict policies for stack
 handling. Perhaps
 the worst one is PowerPC with its organized stack frame
 (back chains,
 pre-defined register save areas, etc). I think a fake stack
 pointer for
 JIT can solve the x86 compatibility problem.
 
 1) allocate enough aligned stack space for the worst case
 when you enter
 to JIT
 2) the fake stack pointer should use this pre-allocated
 stack frame.
 
 Zoltan
 
  I don't know how to file bug so I posted here.
  In privateCompileCTIMachineTrampolines() there are
 multiple align() to
  align code on 16byte margin, yet, the stack can be put
 on 32bit margin
  that causes crush.
  Suppose original stack is aligned to 8/16bytes, the
 above function
  frequently pop/push regT3 that makes stack
 mis-aligned. Then int to double
  conversion uses stack that will fail.
  rgds
  joe
 
 
 


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


Re: [webkit-dev] stack alignment bug

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 last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] random seg fault on MIPS platform
 To: webkit-dev@lists.webkit.org
 Date: Saturday, May 9, 2009, 1:24 AM
 
 Hi,
 50% of time when I use gdb then arith functions works.
 it may fail at 1st, or 3rd try, and 100% fail w/o gdb. I
 just use jsc to do sth like 5%2, 5*3, etc.
 
 It is with in call of ctiTrampoline(code, registerFile,
 callFrame, jexception, pptr, globalData), jit code executed
 and may be in last line of op_mod() when it tried to convert
 result, gdb simply shows segment fault, or PC stops at an
 non-coded area, w/o gdb it says invalid instruction. It may
 be in JITcell,h in     
 ALWAYS_INLINE double JSValuePtr::toNumber(ExecState* exec)
 const
     {
         return
 JSImmediate::isImmediate(asValue()) ?
 JSImmediate::toDouble(asValue()) :
 asCell()-toNumber(exec);
     }
 due to exec pointer wrong.
 
 if I continue to use same arithmatic function the generated
 jit code won't call op_mod() unless it is the 1st time, I
 think it is because jit code is already there. If another
 thread handles the real operation and not sync'd then it may
 be the case. Note I use BCM chip with two CPUs - BCM
 customized SMP and BCM Linux.
 
 when it works, before and after ctiTrampoline() the stack
 is balanced and registers are ok. where is the jit stack and
 how to check its balance?
 
 when it fails, stacks shows we are nearby jit code - the
 code w/o calling OP_mod() CPP function as it fails at 3rd
 try. But PC points to a data structure:
 any comments? thanks a lot!!
 rgds
 joe
 
 //
 (gdb) c
 Continuing.
 
 Program received signal SIGILL, Illegal instruction.
 0x2aacd000 in ?? ()
 (gdb) where
 #0  0x2aacd000 in ?? ()
 warning: GDB can't find the start of the function at
 0x2aacd000.
 ...
 #1  0x2aacd000 in ?? ()
 warning: GDB can't find the start of the function at
 0x2aaccfff.
 Backtrace stopped: previous frame identical to this frame
 (corrupt stack?)
 (gdb) backtrace
 #0  0x2aacd000 in ?? ()
 #1  0x2aacd000 in ?? ()
 Backtrace stopped: previous frame identical to this frame
 (corrupt stack?)
 (gdb) p/x $sp
 $1 = 0x7fa439d8
 (gdb) p/x $pc
 $2 = 0x2aacd000
 (gdb) p/x $t9
 $3 = 0x2aac9588
 (gdb) x/10i $t9 = jit code, no actual call to op_mod() cpp
 function
 0x2aac9588:    sw   
 ra,-40(s5)
 0x2aac958c:    lui    s7,0x0
 0x2aac9590:    ori   
 s7,s7,0xa
 0x2aac9594:    sw   
 s7,0(s5)
 0x2aac9598:    lui    s7,0x0
 0x2aac959c:    ori   
 s7,s7,0xa
 0x2aac95a0:    sw   
 s7,8(s5)
 0x2aac95a4:    lui    v0,0x0
 0x2aac95a8:    ori   
 v0,v0,0xa
 0x2aac95ac:    sw   
 v0,32(s5)
 (gdb) 
 0x2aac95b0:    lui   
 v0,0x
 0x2aac95b4:    ori   
 v0,v0,0x
 0x2aac95b8:    sw   
 v0,32(s5)
 0x2aac95bc:    lw   
 at,-40(s5)
 0x2aac95c0:    nop
 0x2aac95c4:    addiu   
 sp,sp,-4
 0x2aac95c8:    sw   
 at,0(sp)
 0x2aac95cc:    lw   
 ra,0(sp)
 0x2aac95d0:    addiu   
 sp,sp,4
 0x2aac95d4:    jr    ra
 0x2aac95d8:    nop
 (gdb) p/x $ra //$ra = tobe returned addr after
 ctiTrampoline(), correct
 $4 = 0x676d64
 (gdb) x/10i $pc //sth not patched well??
 0x2aacd000:    0x4941444a
 0x2aacd004:    jalx   
 0x21a5a881
 0x2aacd008:    j   
 0x2984c8b4
 0x2aacd00c:    andi   
 at,s3,0x3134
 0x2aacd010:    0x6d202c30
 0x2aacd014:    0x7a69735f
 0x2aacd018:    0x66373d65
 0x2aacd01c

Re: [webkit-dev] compiling the jsc alone

2009-05-28 Thread x yz

I can make Program/jsc
rgds
joe

--- On Thu, 5/21/09, haithem rahmani haithem.rahm...@gmail.com wrote:

 From: haithem rahmani haithem.rahm...@gmail.com
 Subject: [webkit-dev] compiling the jsc alone
 To: webkit-dev@lists.webkit.org
 Date: Thursday, May 21, 2009, 1:10 AM
 Hi,
  
 I tried to compile the JavaScriptCore alone using the
 Scripts/build-jsc
 script but I've found that the script does nothing
 when building for GTK.
  
 Is there any other way to do that?
  
 regards.
  
 
 -Inline Attachment Follows-
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 


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


Re: [webkit-dev] Webkit SMp support

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 vinc...@gmail.com wrote:

 From: vinay harugop vinc...@gmail.com
 Subject: [webkit-dev] Webkit SMp support
 To: webkit-dev@lists.webkit.org
 Date: Tuesday, May 12, 2009, 3:26 PM
 hi,
 Recently I read the Multi-processor support coming for
 Firefox. 
 http://mozillalinks.org/wp/2009/05/multi-processor-support-coming-for-firefox/
 
 I would like analyze webkit behaviour on a single core
 and multi core system. I hope that this is the right place
 for the discussion to put my question. 
 I could find many threads are being created within
 webkit, i used android port of webkit for this.  Modifying
 the procstat revealed that these threads shows the CPU
 affinity  and some tasks get bounced across different CPUs.
 So on multi processor system defintly webkit should get full
 advantage and I see webkit should fly on SMP. 
 
 Could some one tell what are the other aspects to check
 in webkit for multi core platfrom? how about  
 Javascritpcore , sunspider, DOM, input content parsing,
 image files handling. 
 Any hints towards optimization for SMP in webkit ? OR is it
 already complient/Done ?
 
 Are there any tools in general avaialble to
 measure/benchmark browser behaviour?
 thanks
 -Vinay
 
 -Inline Attachment Follows-
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 


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


Re: [webkit-dev] Looking for MIPS asm/JIT consultant

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] 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] 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 zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] random seg fault on MIPS platform
 To: last...@yahoo.com
 Cc: webkit-dev@lists.webkit.org
 Date: Saturday, May 9, 2009, 2:11 AM
 Hi,
 
 I don't know anything about MIPS architecture (only
 x86, ARM and PowerPC),
 but we have experienced similar things on ARM, until we
 have found the
 gcc's __clear_cache(void* begin, void* end) function.
 It calls a kernel
 utility, which flushes out the data cache (some mrc
 instructions can only
 executed on kernel level).
 
 1) The program always fails without gdb, because the
 instructions are not
 flushed out to the SDRAM. Instruction cache always loads
 the instructions
 directly form the SDRAM.
 2) With gdb, it is sometimes work, sometimes not. GDB
 itself allocates a
 big amount of memory, so the cache is partly flushed out
 when it stops at
 a breakpoint. Note that, the disassembly shows the content
 of the data
 cache, not the instruction cache.
 
 Zoltan
 
  Hi,
 50% of time when I use gdb then arith functions
 works. it may fail at
  1st, or 3rd try, and 100% fail w/o gdb. I just use
 jsc to do sth like
  5%2, 5*3, etc.
 
  It is with in call of ctiTrampoline(code,
 registerFile, callFrame,
  jexception, pptr, globalData), jit code executed and
 may be in last line
  of op_mod() when it tried to convert result, gdb
 simply shows segment
  fault, or PC stops at an non-coded area, w/o gdb it
 says invalid
  instruction. It may be in JITcell,h in
  ALWAYS_INLINE double JSValuePtr::toNumber(ExecState*
 exec) const
  {
  return JSImmediate::isImmediate(asValue()) ?
  JSImmediate::toDouble(asValue()) :
 asCell()-toNumber(exec);
  }
  due to exec pointer wrong.
 
  if I continue to use same arithmatic function the
 generated jit code won't
  call op_mod() unless it is the 1st time, I think it is
 because jit code is
  already there. If another thread handles the real
 operation and not sync'd
  then it may be the case. Note I use BCM chip with two
 CPUs - BCM
  customized SMP and BCM Linux.
 
  when it works, before and after ctiTrampoline() the
 stack is balanced and
  registers are ok. where is the jit stack and how to
 check its balance?
 
  when it fails, stacks shows we are nearby jit code -
 the code w/o calling
  OP_mod() CPP function as it fails at 3rd try. But PC
 points to a data
  structure:
  any comments? thanks a lot!!
  rgds
  joe
 
  //
  (gdb) c
  Continuing.
 
  Program received signal SIGILL, Illegal instruction.
  0x2aacd000 in ?? ()
  (gdb) where
  #0  0x2aacd000 in ?? ()
  warning: GDB can't find the start of the function
 at 0x2aacd000.
  ...
  #1  0x2aacd000 in ?? ()
  warning: GDB can't find the start of the function
 at 0x2aaccfff.
  Backtrace stopped: previous frame identical to this
 frame (corrupt stack?)
  (gdb) backtrace
  #0  0x2aacd000 in ?? ()
  #1  0x2aacd000 in ?? ()
  Backtrace stopped: previous frame identical to this
 frame (corrupt stack?)
  (gdb) p/x $sp
  $1 = 0x7fa439d8
  (gdb) p/x $pc
  $2 = 0x2aacd000
  (gdb) p/x $t9
  $3 = 0x2aac9588
  (gdb) x/10i $t9 = jit code, no actual call to op_mod()
 cpp function
  0x2aac9588: sw  ra,-40(s5)
  0x2aac958c: lui s7,0x0
  0x2aac9590: ori s7,s7,0xa
  0x2aac9594: sw  s7,0(s5)
  0x2aac9598: lui s7,0x0
  0x2aac959c: ori s7,s7,0xa
  0x2aac95a0: sw  s7,8(s5)
  0x2aac95a4: lui v0,0x0
  0x2aac95a8: ori v0,v0,0xa
  0x2aac95ac: sw  v0,32(s5)
  (gdb)
  0x2aac95b0: lui v0,0x
  0x2aac95b4: ori v0,v0,0x
  0x2aac95b8: sw  v0,32(s5)
  0x2aac95bc: lw  at,-40(s5)
  0x2aac95c0: nop
  0x2aac95c4: addiu   sp,sp,-4
  0x2aac95c8: sw  at,0(sp)
  0x2aac95cc: lw  ra,0(sp)
  0x2aac95d0: addiu   sp,sp,4
  0x2aac95d4: jr  ra
  0x2aac95d8: nop
  (gdb) p/x $ra //$ra = tobe returned addr after
 ctiTrampoline(), correct
  $4 = 0x676d64
  (gdb) x/10i $pc //sth not patched well??
  0x2aacd000: 0x4941444a
  0x2aacd004: jalx0x21a5a881
  0x2aacd008: j   0x2984c8b4
  0x2aacd00c: andiat,s3,0x3134
  0x2aacd010: 0x6d202c30
  0x2aacd014: 0x7a69735f
  0x2aacd018: 0x66373d65
  0x2aacd01c: xoris3,t1,0x3461
  0x2aacd020: ori t0,t1,0x3864
  0x2aacd024: addit4,at,10544
  (gdb)
  0x2aacd028: jalx0x25b185d9
  0x2aacd02c: j   0x28c0f594
  0x2aacd030: andis0,at,0x3030
  0x2aacd034: 0x720a0a38
  0x2aacd038: 0x64496765
  0x2aacd03c: j   0x28e0c4f4
  0x2aacd040: nop
  0x2aacd044: nop
  0x2aacd048: nop
  0x2aacd04c: nop
 
  0x2aacd028: jalx0x25b185d9
  0x2aacd02c: j   0x28c0f594
  0x2aacd030: andis0,at,0x3030
  0x2aacd034: 0x720a0a38
  0x2aacd038: 0x64496765
  0x2aacd03c: j   0x28e0c4f4
  0x2aacd040: nop
 

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

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 zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] random seg fault on MIPS platform
 To: last...@yahoo.com
 Cc: webkit-dev@lists.webkit.org
 Date: Saturday, May 9, 2009, 2:11 AM
 Hi,
 
 I don't know anything about MIPS architecture (only
 x86, ARM and PowerPC),
 but we have experienced similar things on ARM, until we
 have found the
 gcc's __clear_cache(void* begin, void* end) function.
 It calls a kernel
 utility, which flushes out the data cache (some mrc
 instructions can only
 executed on kernel level).
 
 1) The program always fails without gdb, because the
 instructions are not
 flushed out to the SDRAM. Instruction cache always loads
 the instructions
 directly form the SDRAM.
 2) With gdb, it is sometimes work, sometimes not. GDB
 itself allocates a
 big amount of memory, so the cache is partly flushed out
 when it stops at
 a breakpoint. Note that, the disassembly shows the content
 of the data
 cache, not the instruction cache.
 
 Zoltan
 
  Hi,
 50% of time when I use gdb then arith functions
 works. it may fail at
  1st, or 3rd try, and 100% fail w/o gdb. I just use
 jsc to do sth like
  5%2, 5*3, etc.
 
  It is with in call of ctiTrampoline(code,
 registerFile, callFrame,
  jexception, pptr, globalData), jit code executed and
 may be in last line
  of op_mod() when it tried to convert result, gdb
 simply shows segment
  fault, or PC stops at an non-coded area, w/o gdb it
 says invalid
  instruction. It may be in JITcell,h in
  ALWAYS_INLINE double JSValuePtr::toNumber(ExecState*
 exec) const
  {
  return JSImmediate::isImmediate(asValue()) ?
  JSImmediate::toDouble(asValue()) :
 asCell()-toNumber(exec);
  }
  due to exec pointer wrong.
 
  if I continue to use same arithmatic function the
 generated jit code won't
  call op_mod() unless it is the 1st time, I think it is
 because jit code is
  already there. If another thread handles the real
 operation and not sync'd
  then it may be the case. Note I use BCM chip with two
 CPUs - BCM
  customized SMP and BCM Linux.
 
  when it works, before and after ctiTrampoline() the
 stack is balanced and
  registers are ok. where is the jit stack and how to
 check its balance?
 
  when it fails, stacks shows we are nearby jit code -
 the code w/o calling
  OP_mod() CPP function as it fails at 3rd try. But PC
 points to a data
  structure:
  any comments? thanks a lot!!
  rgds
  joe
 
  //
  (gdb) c
  Continuing.
 
  Program received signal SIGILL, Illegal instruction.
  0x2aacd000 in ?? ()
  (gdb) where
  #0  0x2aacd000 in ?? ()
  warning: GDB can't find the start of the function
 at 0x2aacd000.
  ...
  #1  0x2aacd000 in ?? ()
  warning: GDB can't find the start of the function
 at 0x2aaccfff.
  Backtrace stopped: previous frame identical to this
 frame (corrupt stack?)
  (gdb) backtrace
  #0  0x2aacd000 in ?? ()
  #1  0x2aacd000 in ?? ()
  Backtrace stopped: previous frame identical to this
 frame (corrupt stack?)
  (gdb) p/x $sp
  $1 = 0x7fa439d8
  (gdb) p/x $pc
  $2 = 0x2aacd000
  (gdb) p/x $t9
  $3 = 0x2aac9588
  (gdb) x/10i $t9 = jit code, no actual call to op_mod()
 cpp function
  0x2aac9588: sw  ra,-40(s5)
  0x2aac958c: lui s7,0x0
  0x2aac9590: ori s7,s7,0xa
  0x2aac9594: sw  s7,0(s5)
  0x2aac9598: lui s7,0x0
  0x2aac959c: ori s7,s7,0xa
  0x2aac95a0: sw  s7,8(s5)
  0x2aac95a4: lui v0,0x0
  0x2aac95a8: ori v0,v0,0xa
  0x2aac95ac: sw  v0,32(s5)
  (gdb)
  0x2aac95b0: lui v0,0x
  0x2aac95b4: ori v0,v0,0x
  0x2aac95b8: sw  v0,32(s5)
  0x2aac95bc: lw  at,-40(s5)
  0x2aac95c0: nop
  0x2aac95c4: addiu   sp,sp,-4
  0x2aac95c8: sw  at,0(sp)
  0x2aac95cc: lw  ra,0(sp)
  0x2aac95d0: addiu   sp,sp,4
  0x2aac95d4: jr  ra
  0x2aac95d8: nop
  (gdb) p/x $ra //$ra = tobe returned addr after
 ctiTrampoline(), correct
  $4 = 0x676d64
  (gdb) x/10i $pc //sth not patched well??
  0x2aacd000: 0x4941444a
  0x2aacd004: jalx0x21a5a881
  0x2aacd008: j   0x2984c8b4
  0x2aacd00c: andiat,s3,0x3134
  0x2aacd010: 0x6d202c30
  0x2aacd014: 0x7a69735f
  0x2aacd018: 0x66373d65
  0x2aacd01c: xoris3,t1,0x3461
  0x2aacd020: ori t0,t1,0x3864
  0x2aacd024: addit4,at,10544
  (gdb)
  0x2aacd028: jalx0x25b185d9
  0x2aacd02c: j   0x28c0f594
  0x2aacd030: andis0,at,0x3030
  0x2aacd034: 0x720a0a38
  0x2aacd038: 0x64496765
  0x2aacd03c: j   0x28e0c4f4
  0x2aacd040: nop
  0x2aacd044: nop
  0x2aacd048: nop
  0x2aacd04c: nop
 
  0x2aacd028: jalx0x25b185d9
  0x2aacd02c: j   0x28c0f594
  0x2aacd030: andis0,at,0x3030
  0x2aacd034: 0x720a0a38
  0x2aacd038: 0x64496765
  0x2aacd03c: j   0x28e0c4f4
  0x2aacd040: nop
 
 
 
 
 
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 

Re: [webkit-dev] Proposal for a new way to handle porting #ifdefs

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 m...@apple.com wrote:

 From: Maciej Stachowiak m...@apple.com
 Subject: Re: [webkit-dev] Proposal for a new way to handle porting #ifdefs
 To: mbe...@pleyo.com
 Cc: webkit-dev@lists.webkit.org
 Date: Tuesday, May 5, 2009, 11:19 PM
 On May 4, 2009, at 5:21 AM, Mario Bensi wrote:
 
  We pursued the same goal for a couple of years. Since
 our porting
  targets are various middleware  CE platforms, we
 had to identify and
  adapt WebKit needs at a better grained level than
 platform.
  In order to do this we collected all dependencies in a
 Browser
  Abstraction Layer (BAL directory). The configuration
 is handled by a
  Base directory (definition of types, platform
 specifications) and we
  use CMake to define platform specificities (and
 it's a great cross-
  platform tool).
  
  Sure the BAL model has still improvements ahead of it,
 but it has the
  merit of existing, being widely tester on a quite wide
 range of
  targets, configurations and libraries.
 
 My understanding is that BAL injects a platform abstration
 layer under the platform abstraction layer that is the
 WebCore/platform directory. Also, I gather that
 BAL tries to do more things via runtime indirection and
 subclasses with virtual methods instead of WebCore's
 compile-time approach. To me, those aspects sound like they
 may not be good fits for our goals. But I would be glad to
 hear more details about BAL, and how it would compare to my
 proposal.
 
 Regards,
 Maciej
 
 
  
  Regards
  Mario
  
  Le Friday 01 May 2009 01:12:54 Maciej Stachowiak, vous
 avez écrit :
  I think our set of porting macros has become
 somewhat confused.
  
  Originally, our idea was that a port represents
 primarily adaptation
  to a particular platform. However, over time it
 has become clear that
  most of what is decided by a port is not platform
 adaptation, but
  rather policy decisions. For example, ports decide
 to have different
  features enabled, or to use different sets of
 system functionality on
  the same underlying OS.
  
  In addition, I think the catchall top-level
 PLATFORM create confusion,
  because it is not totally clear if they are policy
 decisions, platform
  adaptation decisions, or what.
  
  Third, it seems wrong that the policy choices of
 every port are
  represented as a bunch of ifdef tomfoolery inside
 a single Platform.h
  file.
  
  And fourth, many ports often run on the same OS,
 but with a different
  set of choices - for example on Mac OS X it is
 possible to build the
  Mac, Chromium, Gtk, Qt and Wx ports (at least).
  
  
  Therefore, I propose that we change as follows:
  
  1) Strictly separate platform adaptation
 (mandatory to run on a given
  OS, compiler, or CPU at all) from policy choices
 (what features to
  enable, what optional libraries to use).
  
  2) Phase out PLATFORM macros completely - each use
 should be converted
  to a policy choice, or a platform adaptation
 decision.
  
  3) Instead of ports being defined by a top-level
 PLATFORM macro, I
  propose that each port should have its own header
 file to define
  policy decisions. For example, I'd propose
 that the system Mac OS X
  WebKit should use PortCocoa.h, and the WebKit used
 by Safari for
  Windows should use PortWinCG.h. There may also be
 a PortIPhone.h.
  These port definition headers would live in their
 own top-level WebKit
  module. Each one would be completely owned by
 whoever is generally
  considered the owner of a given port.
 Because related ports on
  different platforms may wish to share policy
 choices, it's ok for Port
  headers to include shared headers for some
 choices. For example, all
  Apple-maintained ports may include PortApple.h. We
 could go even
  further and have PortDefault.h to make default
 choices of what
  features are enabled, that ports would have to
 explicitly override.
  
  4) Platform adaptation macros would still be
 defined in Platform.h
  based on sniffing the environment, this would
 include things like the
  compiler, the underlying OS, available libc
 functions, and so forth.
  
  
  Platform adaptation macros would be:
  
  OS() - underlying operating system; only to be
 used for mandated low-
  level services like virtual memory, not to choose
 a GUI toolkit
  Examples:
  OS(UNIX) - Any Unix-like OS
  OS(DARWIN) - Underlying OS is the base OS
 X environment
  OS(FREEBSD) - FreeBSD
  OS(WIN) - Any version of Windows
  OS(WINCE) - The embedded version of
 Windows
  
  COMPILER() - the compiler being used to build the
 project
  Examples:
  COMPILER(GCC) - GNU Compiler Collection
  COMPILER(MSVC) - Microsoft Visual C++
  COMPILER(RVCT) - ARM compiler
  
  HAVE() - specific 

Re: [webkit-dev] the variable of JavaScript function

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 zhenghe.zh...@gmail.com wrote:

 From: zhenghe zhang zhenghe.zh...@gmail.com
 Subject: [webkit-dev] the variable of JavaScript function
 To: webkit-dev@lists.webkit.org
 Date: Thursday, March 19, 2009, 9:26 AM
 Hi
 There is a javaScript function, as follow:
 Function test()
 {
 Var a = 3;
 Var b = 2;
 Print(a+b);
 }
 There are two variables, and the identifiers will stored in
 the
 identifierTable. When running the function, it will print
 5.
 When running the code print(a+b),it will use
 3 to replace a and 2
 replace b. I don't know how to do it
 through the c++ functions. I hope you
 tell!
 Thank you  best regards
 zhang
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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 last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) 
 seg fault
 To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough 
 barraclo...@apple.com
 Date: Wednesday, April 22, 2009, 8:31 AM
 I use MIPS32EL, VA_LIST call, MIPS pushes function argument
 from left to right. I wrote a simple VA_LIST test it works
 on my box.
 
 BEGIN_STUB_FUNCTION() cause seg fault due to MIPS uses gp
 reg to read sth.
 I treied to rewrite the code like that:
 JSObject* JITStubs::cti_op_new_func_exp(STUB_ARGS)
 {
 va_list vl_args; 
 va_start(vl_args, args);
 StackHack stackHack(STUB_RETURN_ADDRESS_SLOT);
 JSValuePtr dividendValue = va_arg(vl_args, JSC::JSCell*
 );
 JSValuePtr divisorValue = va_arg(vl_args, JSC::JSCell*
 );
 ...
 }
 
 Still fail in stackHack(), if I comment out stackHack()
 then fails at va_arg.
 
 gp is a global register for common/public variables, the
 same usage before I call cti_op_mod() works fine.
 
 I also tried not use VA_LIST but REGISTER calling
 convention, still fail:
 (gdb) x/2i $at
 0x6ab500
 _ZN3JSC8JITStubs10cti_op_modEPPv:   lui gp,0xf96
 0x6ab504
 _ZN3JSC8JITStubs10cti_op_modEPPv+4: addiu   gp,gp,9008
 (gdb) x/20i $at
 0x6ab500
 _ZN3JSC8JITStubs10cti_op_modEPPv:   lui gp,0xf96
 0x6ab504
 _ZN3JSC8JITStubs10cti_op_modEPPv+4: addiu   gp,gp,9008
 0x6ab508
 _ZN3JSC8JITStubs10cti_op_modEPPv+8: addugp,gp,t9
 0x6ab50c
 _ZN3JSC8JITStubs10cti_op_modEPPv+12:addiu   sp,sp,-80
 0x6ab510
 _ZN3JSC8JITStubs10cti_op_modEPPv+16:sw  ra,72(sp)
 0x6ab514
 _ZN3JSC8JITStubs10cti_op_modEPPv+20:sw  s8,68(sp)
 0x6ab518
 _ZN3JSC8JITStubs10cti_op_modEPPv+24:sw  s0,64(sp)
 0x6ab51c
 _ZN3JSC8JITStubs10cti_op_modEPPv+28:moves8,sp
 0x6ab520
 _ZN3JSC8JITStubs10cti_op_modEPPv+32:sw  gp,16(sp)
 0x6ab524
 _ZN3JSC8JITStubs10cti_op_modEPPv+36:sw  a0,80(s8)
 0x6ab528
 _ZN3JSC8JITStubs10cti_op_modEPPv+40:lw  v0,80(s8)
 0x6ab52c
 _ZN3JSC8JITStubs10cti_op_modEPPv+44:addiu   v0,v0,-4
 0x6ab530
 _ZN3JSC8JITStubs10cti_op_modEPPv+48:addiu   a0,s8,24
 0x6ab534
 _ZN3JSC8JITStubs10cti_op_modEPPv+52:movea1,v0
 0x6ab538
 _ZN3JSC8JITStubs10cti_op_modEPPv+56:lw  t9,-19012(gp)
 0x6ab53c
 _ZN3JSC8JITStubs10cti_op_modEPPv+60:jalrt9
 0x6ab540 _ZN3JSC8JITStubs10cti_op_modEPPv+64:   nop
 0x6ab544
 _ZN3JSC8JITStubs10cti_op_modEPPv+68:lw  gp,16(s8)
 0x6ab548
 _ZN3JSC8JITStubs10cti_op_modEPPv+72:addiu   v0,s8,32
 0x6ab54c
 _ZN3JSC8JITStubs10cti_op_modEPPv+76:lw  v1,80(s8)
 (gdb) stepi 14
 
 Program received signal SIGSEGV, Segmentation fault.
 0x006ab538 in JSC::JITStubs::cti_op_mod (args=0x2aac9500)
 at
 /home/jdai/depot/mp/mediabase/head/libs/webkit-1.1.1/JavaScriptCore/jit/JITStubs.cpp:1685
 1685  BEGIN_STUB_FUNCTION();
 
 another question is that there is no matched va_end() and
 it is a bug.
 thanks a lot for help,
 joe


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


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

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 
StackHack//242   ALWAYS_INLINE StackHack(void** location), MIPS 
disasm has no symbols at all
3. On MIPS
Dump of assembler code for function _ZN3JSC8JITStubs10cti_op_modEPvz:
0x006abdb8 _ZN3JSC8JITStubs10cti_op_modEPvz+0:lui gp,0xf96
//this segment used on other routines and works
0x006abdbc _ZN3JSC8JITStubs10cti_op_modEPvz+4:addiu   gp,gp,6776
0x006abdc0 _ZN3JSC8JITStubs10cti_op_modEPvz+8:addugp,gp,t9
0x006abdc4 _ZN3JSC8JITStubs10cti_op_modEPvz+12:   addiu   sp,sp,-88
0x006abdc8 _ZN3JSC8JITStubs10cti_op_modEPvz+16:   sw  ra,80(sp)
0x006abdcc _ZN3JSC8JITStubs10cti_op_modEPvz+20:   sw  s8,76(sp)
0x006abdd0 _ZN3JSC8JITStubs10cti_op_modEPvz+24:   sw  s0,72(sp)
0x006abdd4 _ZN3JSC8JITStubs10cti_op_modEPvz+28:   moves8,sp
0x006abdd8 _ZN3JSC8JITStubs10cti_op_modEPvz+32:   sw  gp,16(sp)
0x006abddc _ZN3JSC8JITStubs10cti_op_modEPvz+36:   sw  a1,92(s8)
0x006abde0 _ZN3JSC8JITStubs10cti_op_modEPvz+40:   sw  a2,96(s8)
0x006abde4 _ZN3JSC8JITStubs10cti_op_modEPvz+44:   sw  a3,100(s8)
0x006abde8 _ZN3JSC8JITStubs10cti_op_modEPvz+48:   sw  a0,88(s8)
0x006abdec _ZN3JSC8JITStubs10cti_op_modEPvz+52:   addiu   v0,s8,92
0x006abdf0 _ZN3JSC8JITStubs10cti_op_modEPvz+56:   sw  v0,24(s8)
0x006abdf4 _ZN3JSC8JITStubs10cti_op_modEPvz+60:   addiu   v1,s8,32
0x006abdf8 _ZN3JSC8JITStubs10cti_op_modEPvz+64:   lw  v0,24(s8)
0x006abdfc _ZN3JSC8JITStubs10cti_op_modEPvz+68:   addiu   v0,v0,-8
0x006abe00 _ZN3JSC8JITStubs10cti_op_modEPvz+72:   movea0,v1
0x006abe04 _ZN3JSC8JITStubs10cti_op_modEPvz+76:   movea1,v0
0x006abe08 _ZN3JSC8JITStubs10cti_op_modEPvz+80:   lw  t9,-19028(gp)   
  //seg fault here, -19028(gp) not accesible
0x006abe0c _ZN3JSC8JITStubs10cti_op_modEPvz+84:   jalrt9
... no label in MIPS. StackHack label shown on X86 but on mips are all 
xxx(gp), may be compiler/gdb not as good as X86 version?

thanks for look at it,
joe


--- On Wed, 4/22/09, x yz last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - cti_op_mod(STUB_ARGS) 
 seg fault
 To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough 
 barraclo...@apple.com
 Date: Wednesday, April 22, 2009, 8:31 AM
 I use MIPS32EL, VA_LIST call, MIPS pushes function argument
 from left to right. I wrote a simple VA_LIST test it works
 on my box.
 
 BEGIN_STUB_FUNCTION() cause seg fault due to MIPS uses gp
 reg to read sth.
 I treied to rewrite the code like that:
 JSObject* JITStubs::cti_op_new_func_exp(STUB_ARGS)
 {
 va_list vl_args; 
 va_start(vl_args, args);
 StackHack stackHack(STUB_RETURN_ADDRESS_SLOT);
 JSValuePtr dividendValue = va_arg(vl_args, JSC::JSCell*
 );
 JSValuePtr divisorValue = va_arg(vl_args, JSC::JSCell*
 );
 ...
 }
 
 Still fail in stackHack(), if I comment out stackHack()
 then fails at va_arg.
 
 gp is a global register for common/public variables, the
 same usage before I call cti_op_mod() works fine.
 
 I also tried not use VA_LIST but REGISTER calling
 convention, still fail:
 (gdb) x/2i $at
 0x6ab500

Re: [webkit-dev] make webkit-1.1.3...

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 yenchengw...@gmail.com wrote:

 From: yenchengwang yenchengw...@gmail.com
 Subject: Re: [webkit-dev] make webkit-1.1.3...
 To: webkit-dev@lists.webkit.org
 Date: Monday, April 20, 2009, 8:28 AM
 thanks your reply!
 my operating system is Linux == moblin2, I think
 it's Fedora 9.
 compiler and version == gcc (Moblin Linux) 4.3.2
 [gcc-4_3-branch revision
 141291].
 thanks~~ :D
 
 2009/4/17 Ariya Hidayat ariya.hida...@trolltech.com
 
 
   how many time are u make the webkit-1.1.3 ??
   I always need 3.5 hour for making that !! the
 almost time is at the
   processing of the JIT.cpp !!
   I don't know why I need take 3.5 hour
 just for on file !! the other
   files just take some minutes !!
 
  JIT.cpp works fine for me, it is very fast to compile.
  You need to be specific and mention the operating
 system, platform,
  compiler,
  compiler version, etc.
 
 
 
 
  --
  Ariya Hidayat, Software Engineer
  Qt Software, Nokia Devices RD
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 
 
 
 -- 
 Regards
 Y-C Wang
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


Re: [webkit-dev] can't build debug_cairo and release_cairo

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 kkruc...@yandex.ru wrote:

 From: Kruchinkin Kirill kkruc...@yandex.ru
 Subject: [webkit-dev] can't build debug_cairo and release_cairo
 To: webkit-dev@lists.webkit.org
 Date: Sunday, April 19, 2009, 3:52 AM
 Hi All,
 I faced few problems with win32 cairo builds.
 
 First one is described here
 http://www.nabble.com/Unable-to-build-WebCore-for-windows-(debug_cairo)-revision-39671-td21456190.html
 And second one is fatal error C1083: Cannot open
 include file: 'cairo.h' or with
 cairo_win32.h or
 http://www.nabble.com/Unable-to-build-WebCore-for-windows-(debug_cairo)-revision-39671-td21456190.html
 
 I don't know how to resolve last one, seems that the
 problem is in source code, is it righ?
 At the same time I can succefully build win32_debug and
 win32_release builds(not cairo).
 
 Could you help me to resolve it or could you specify last
 correct cairo sources that could be built and how to get it?
 
 
 --
 Kirill
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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] 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 luka.napot...@gmail.com wrote:

 From: Luka Napotnik luka.napot...@gmail.com
 Subject: [webkit-dev] known gtk+ leaks
 To: webkit-dev@lists.webkit.org
 Date: Tuesday, April 7, 2009, 2:44 PM
 Hello.
 
 I use a bit old revision of Gtk+ WebKit port (38403) and as
 I observe
 my WebKit process, the RSS memory usage rapidly gets bigger
 and bigger
 as I browse pages. Because of few modifications I made that
 work only
 on older revisions, I can't use the new ones (the
 modifications are
 rather small and I don't do any allocation). This
 can't be the cache
 as I switch only between two linked pages.
 
 This behavior indicates that there was a leak. I've
 googled and found
 that there were leaks in libcurl and pango text rendering
 and want to
 backport the leak fixes. Could please someone with this
 knowledge have
 some spare time and help me find the patches so I can
 backport the
 leak fixes.
 
 Greets,
 Luka
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


Re: [webkit-dev] want to port JIT to MIPS - where comes from _ZN3JSC8JITStubs12cti_vm_throwEPvz

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 l...@inf.u-szeged.hu wrote:

 From: Gabor Loki l...@inf.u-szeged.hu
 Subject: [webkit-dev] Announce the ARM port of JIT
 To: webkit-dev@lists.webkit.org, squirrelfish-...@lists.webkit.org
 Date: Wednesday, April 1, 2009, 9:57 PM
 Hi guys,
 
 we are pleased to announce that the ARM port of JIT is
 finally released.
 
 The source can be checked out from 'loki/arm-port'
 branch of
 git://code.staikos.net/webkit :
   - git clone git://code.staikos.net/webkit  git
 checkout loki/arm-port
   - or see at
 http://code.staikos.net/cgi-bin/gitweb.cgi?p=webkit;a=shortlog;h=loki/arm-port
 
 The aim of this development is to add JIT support for ARM
 architectures.
 
 The port itself is developed from scratch, but we reused
 the ideas of x86 JIT. So we
 implemented property caches, stub functions, etc. in a
 similar way, but the code is
 optimized for ARM architectures.
 
 We used Qt4 build environment for the development, but we
 feel that the other build
 platforms can be easily extended with this ARM port.
 
 The current version is stable. It passes the regression
 tests.
 
 We did measurements on a Nokia N810, and we gained 13%
 performance improvement.
 The memory consumption is increased by 3.3% which is a
 small trade-off for this
 performance
 improvement.
 
 Our work has not done yet. We plan to add several other
 features in the future.
 
 Please, feel free to ask any questions about the ARM JIT
 here at the mail list or at
 the following Bugzilla entry:
 https://bugs.webkit.org/show_bug.cgi?id=24986
 
 --Gabor
 
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


Re: [webkit-dev] how to do JIT benchmark

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 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] 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 zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* 
 constant determined?
 To: webkit-dev@lists.webkit.org
 Date: Wednesday, March 4, 2009, 3:33 PM
 Hi,
 
 they generate instructions, which size is known in advance.
 
 Think about the following sequence:
 hotPathBegin:
   mov regX, 32bit_const - 6 bytes (*) (**)
   add regX, regY - 2 bytes
   jo 32bit_addr - 5 bytes (*)
 
 * (Note) : these instructions will be modified during
 runtime.
 
 ** (Note) : there is a short form for mov regX,
 8bit_const, which length
 is only 3 bytes, but they force the longer version in such
 cases to keep
 the size of the instruction.
 
 As you can see, the address of jo is always
 (hotPathBegin + 6 + 2). They
 simply introduce a new constant: patchOffsetXXX = 8, and
 use this constant
 to access the jo instruction later.
 
 In ARM we can't rely on such constant, because the
 constant pool can be
 placed after any instruction.
 
 hotPathBegin:
   ldr rX, [pc + const_pool_addr] ; 32 bit const
   [...] - the const pool can be placed here
   add rX, rX, rY
   [...] - the const pool can be placed here
 hotPath2:
   ldr pc, [pc + const_pool_addr] ; 32 bit target address
 
 We need to store both pointers (hotPathBegin and hotPath2).
 
 Zoltan
 
  Zoltan,
  Thanks for reply, I'm trying to understand your
 example. But,X86
  instruction size is from 1 to 17bytes, not constant. I
 may misunderstand
  your comments?
  Many X86 instruction can have imm32 at the end, thus
 this pointer can be
  used for patch as well as next address after call.
 Does Arm have similar
  things? or else you still need to figure out why
  patchOffsetOpCallCompareToJump = 9;? may
 be some instruction lengths
  relates to the 9?
  rgds
  joe
 
 
  --- On Wed, 3/4/09, Zoltan Herczeg
 zherc...@inf.u-szeged.hu wrote:
 
  From: Zoltan Herczeg
 zherc...@inf.u-szeged.hu
  Subject: Re: [webkit-dev] want to port JIT to MIPS
 - how patchOffset*
  constant determined?
  To: webkit-dev@lists.webkit.org
  Date: Wednesday, March 4, 2009, 3:45 AM
  On x86, the size of the instructions are fixed. If
 you want
  to access
  multiple instructions in the instruction stream,
 you only
  need to store
  the address of the first one, and can access the
 others by
  their relative
  address. This saves a little memory.
 
  Example (see JIT::linkCall):
instruction at callLinkInfo-hotPathBegin:
 points to
  callee comparison
instruction at
  callLinkInfo-hotPathBegin +
  patchOffsetOpCallCompareToJump:
 points to the slow case entry jump
 
  Zoltan
 
   in jit.h, for example:
   static const int
  patchOffsetOpCallCompareToJump = 9;
   static const int
 patchOffsetPutByIdStructure =
  7;
   static const int
  patchOffsetPutByIdPropertyMapOffset = 22;
   static const int
  patchOffsetGetByIdBranchToSlowCase = 13;
   thanks for help, I'm stucked here now.
   joe
  
  
   --- On Sat, 2/28/09, Gavin Barraclough
  barraclo...@apple.com wrote:
  
   From: Gavin Barraclough
  barraclo...@apple.com
   Subject: Re: [webkit-dev] want to port
 JIT to MIPS
  - JIT reg usage clean
   up?
   To: WebKit Development
  webkit-dev@lists.webkit.org
   Date: Saturday, February 28, 2009, 12:19
 PM
   On Feb 27, 2009, at 4:55 PM, x yz wrote:
  
The regTx seems to be working
 registers here,
  yet
   their definition are regparm(3) registers
 for
  function
   arugments. Such usage would cause
 conflict on
  other
   platforms. May I suggest that we use
 individual
  defined set
   of regs for func i/o argument and
 working?
  
   First up, I think you're getting
 slightly
  confused
   about regparm(3).  This is not used
 anywhere in
  the JS
   language JIT, only in WREC.  In some
  configurations of the
   JIT we use fastcall semantics on x86...
 but none
  of this is
   really relevant to MIPS.  Just ignore all
 this.
  Stick to
   the default MIPS ABI for stub functions.
  
   Reading between the lines, I'm
 guessing your
  concern
   here is that in setting up arguments for
 a JIT
  stub call you
   may trample the JIT's temporary
 registers?  If
  so, I
   think you need to look at the argument
 passing
  more closely.
The mechanisms to pass arguments to stub
  functions pass all
   arguments in memory – typically passing
 a single
  pointer
   to the stub functions, which can be used
 to
  retrieve the
   arguments.  This pointer argument can be
 set up
  immediately
   prior to the call, so it does not
 interfere with
  the regT

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

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 zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* 
 constant determined?
 To: webkit-dev@lists.webkit.org
 Date: Wednesday, March 4, 2009, 3:33 PM
 Hi,
 
 they generate instructions, which size is known in advance.
 
 Think about the following sequence:
 hotPathBegin:
   mov regX, 32bit_const - 6 bytes (*) (**)
   add regX, regY - 2 bytes
   jo 32bit_addr - 5 bytes (*)
 
 * (Note) : these instructions will be modified during
 runtime.
 
 ** (Note) : there is a short form for mov regX,
 8bit_const, which length
 is only 3 bytes, but they force the longer version in such
 cases to keep
 the size of the instruction.
 
 As you can see, the address of jo is always
 (hotPathBegin + 6 + 2). They
 simply introduce a new constant: patchOffsetXXX = 8, and
 use this constant
 to access the jo instruction later.
 
 In ARM we can't rely on such constant, because the
 constant pool can be
 placed after any instruction.
 
 hotPathBegin:
   ldr rX, [pc + const_pool_addr] ; 32 bit const
   [...] - the const pool can be placed here
   add rX, rX, rY
   [...] - the const pool can be placed here
 hotPath2:
   ldr pc, [pc + const_pool_addr] ; 32 bit target address
 
 We need to store both pointers (hotPathBegin and hotPath2).
 
 Zoltan
 
  Zoltan,
  Thanks for reply, I'm trying to understand your
 example. But,X86
  instruction size is from 1 to 17bytes, not constant. I
 may misunderstand
  your comments?
  Many X86 instruction can have imm32 at the end, thus
 this pointer can be
  used for patch as well as next address after call.
 Does Arm have similar
  things? or else you still need to figure out why
  patchOffsetOpCallCompareToJump = 9;? may
 be some instruction lengths
  relates to the 9?
  rgds
  joe
 
 
  --- On Wed, 3/4/09, Zoltan Herczeg
 zherc...@inf.u-szeged.hu wrote:
 
  From: Zoltan Herczeg
 zherc...@inf.u-szeged.hu
  Subject: Re: [webkit-dev] want to port JIT to MIPS
 - how patchOffset*
  constant determined?
  To: webkit-dev@lists.webkit.org
  Date: Wednesday, March 4, 2009, 3:45 AM
  On x86, the size of the instructions are fixed. If
 you want
  to access
  multiple instructions in the instruction stream,
 you only
  need to store
  the address of the first one, and can access the
 others by
  their relative
  address. This saves a little memory.
 
  Example (see JIT::linkCall):
instruction at callLinkInfo-hotPathBegin:
 points to
  callee comparison
instruction at
  callLinkInfo-hotPathBegin +
  patchOffsetOpCallCompareToJump:
 points to the slow case entry jump
 
  Zoltan
 
   in jit.h, for example:
   static const int
  patchOffsetOpCallCompareToJump = 9;
   static const int
 patchOffsetPutByIdStructure =
  7;
   static const int
  patchOffsetPutByIdPropertyMapOffset = 22;
   static const int
  patchOffsetGetByIdBranchToSlowCase = 13;
   thanks for help, I'm stucked here now.
   joe
  
  
   --- On Sat, 2/28/09, Gavin Barraclough
  barraclo...@apple.com wrote:
  
   From: Gavin Barraclough
  barraclo...@apple.com
   Subject: Re: [webkit-dev] want to port
 JIT to MIPS
  - JIT reg usage clean
   up?
   To: WebKit Development
  webkit-dev@lists.webkit.org
   Date: Saturday, February 28, 2009, 12:19
 PM
   On Feb 27, 2009, at 4:55 PM, x yz wrote:
  
The regTx seems to be working
 registers here,
  yet
   their definition are regparm(3) registers
 for
  function
   arugments. Such usage would cause
 conflict on
  other
   platforms. May I suggest that we use
 individual
  defined set
   of regs for func i/o argument and
 working?
  
   First up, I think you're getting
 slightly
  confused
   about regparm(3).  This is not used
 anywhere in
  the JS
   language JIT, only in WREC.  In some
  configurations of the
   JIT we use fastcall semantics on x86...
 but none
  of this is
   really relevant to MIPS.  Just ignore all
 this.
  Stick to
   the default MIPS ABI for stub functions.
  
   Reading between the lines, I'm
 guessing your
  concern
   here is that in setting up arguments for
 a JIT
  stub call you
   may trample the JIT's temporary
 registers?  If
  so, I
   think you need to look at the argument
 passing
  more closely.
The mechanisms to pass arguments to stub
  functions pass all
   arguments in memory – typically passing
 a single
  pointer
   to the stub functions, which can be used
 to
  retrieve the
   arguments.  This pointer argument can be
 set up
  immediately
   prior to the call, so it does not
 interfere with
  the regT?
   temporaries.  We follow this pattern on
 x86-64,
  where the
   ABI is typically to pass arguments in
 registers.
  You cannot

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

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 barraclo...@apple.com wrote:

 From: Gavin Barraclough barraclo...@apple.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up?
 To: WebKit Development webkit-dev@lists.webkit.org
 Date: Saturday, February 28, 2009, 12:19 PM
 On Feb 27, 2009, at 4:55 PM, x yz wrote:
 
  The regTx seems to be working registers here, yet
 their definition are regparm(3) registers for function
 arugments. Such usage would cause conflict on other
 platforms. May I suggest that we use individual defined set
 of regs for func i/o argument and working?
 
 First up, I think you're getting slightly confused
 about regparm(3).  This is not used anywhere in the JS
 language JIT, only in WREC.  In some configurations of the
 JIT we use fastcall semantics on x86... but none of this is
 really relevant to MIPS.  Just ignore all this.  Stick to
 the default MIPS ABI for stub functions.
 
 Reading between the lines, I'm guessing your concern
 here is that in setting up arguments for a JIT stub call you
 may trample the JIT's temporary registers?  If so, I
 think you need to look at the argument passing more closely.
  The mechanisms to pass arguments to stub functions pass all
 arguments in memory – typically passing a single pointer
 to the stub functions, which can be used to retrieve the
 arguments.  This pointer argument can be set up immediately
 prior to the call, so it does not interfere with the regT?
 temporaries.  We follow this pattern on x86-64, where the
 ABI is typically to pass arguments in registers.  You cannot
 trivially change the way this works, since the argument
 pointer is used for other purposes too (e.g. retrieving the
 arguments passed into the JIT code from within the stubs).
 
 We strongly prefer small, simple, incremental changes.  A
 patch that tried to both port the JIT to a new platform and
 to introduce a new argument passing interface to the JIT
 stub functions sounds unlikely to get anywhere (a patch
 porting the JIT to a new platform is on its own very likely
 to be too much more than we'd want to land in one
 chunk).  I'd suggest that a port would be wise to
 engineer it's initial solution to fit one of the
 existing argument passing mechanisms (these are selected by
 JIT_STUB_ARGUMENT_* switches, to help find the relevant
 code).  (Alternatively, you're welcome to attempt to
 port x86-64 to make use of an in-register argument passing
 solution, which could be hugely useful.  With this landed
 first and separately, a port could then build on top of
 this.)
 
 As a more direct answer to your question, you could
 endeavour to make the set of hardware registers used as JIT
 temporaries non-overlapping with ABI function argument
 registers on MIPS, but this is unlikely to be a general
 solution to anything for all platforms, due to limited
 register availability on some architectures.
 
  we would put all these definition in a file named
 regMap.h, then we can remove all X86:: from
 other JIT files.
 
 I don't think we'll be keen on taking preemptive
 changes so far ahead in preparation of a port.  The first
 logical step in porting to a new platform is still to start
 with WREC, and this requires no changes in the JIT
 directory.  Any refactoring of the existing JIT would make
 more sense more directly prior to work in that area.
 
 cheers,
 G.
 
  
  I'd apperciate if sb can do it or help me to do
 it.
  rgds
  joe
  
  
  
  
  --- On Sat, 2/28/09, x yz last...@yahoo.com
 wrote:
  
  From: x yz last...@yahoo.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS
 - which calling convention is used here?
  To: webkit-dev@lists.webkit.org, Zoltan
 Herczeg zherc...@inf.u-szeged.hu
  Date: Saturday, February 28, 2009, 7:40 AM
  Hi,
  Thanks for your help in advance:)
  in JITPropertyAccess.cpp:
 if
 (transitionWillNeedStorageRealloc(oldStructure,
  newStructure)) {
 pop(X86::ebx);  ///pop return address,
 why? for
  exception?
  #if PLATFORM(X86_64)///which convention is
 this?
  
 
 move(Imm32(newStructure-propertyStorageCapacity()),
  regT1);  //edx
  
 
 move(Imm32(oldStructure-propertyStorageCapacity()),
  X86::esi);
 move(regT0, X86::edi);
 callTarget = call();
  #else   ///__cdecl, yet how
 can I know
  resizePropertyStorage() use __cdecl?
  
 
 push(Imm32(newStructure-propertyStorageCapacity()));
  
 
 push(Imm32(oldStructure-propertyStorageCapacity()));
 push(regT0);
 callTarget = call();
 addPtr(Imm32(3 * sizeof(void*)), X86::esp);
  ///clean stack
  #endif

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

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 zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] want to port JIT to MIPS - how patchOffset* 
 constant determined?
 To: webkit-dev@lists.webkit.org
 Date: Wednesday, March 4, 2009, 3:45 AM
 On x86, the size of the instructions are fixed. If you want
 to access
 multiple instructions in the instruction stream, you only
 need to store
 the address of the first one, and can access the others by
 their relative
 address. This saves a little memory.
 
 Example (see JIT::linkCall):
   instruction at callLinkInfo-hotPathBegin: points to
 callee comparison
   instruction at
 callLinkInfo-hotPathBegin +
 patchOffsetOpCallCompareToJump:
points to the slow case entry jump
 
 Zoltan
 
  in jit.h, for example:
  static const int
 patchOffsetOpCallCompareToJump = 9;
  static const int patchOffsetPutByIdStructure =
 7;
  static const int
 patchOffsetPutByIdPropertyMapOffset = 22;
  static const int
 patchOffsetGetByIdBranchToSlowCase = 13;
  thanks for help, I'm stucked here now.
  joe
 
 
  --- On Sat, 2/28/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough
 barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS
 - JIT reg usage clean
  up?
  To: WebKit Development
 webkit-dev@lists.webkit.org
  Date: Saturday, February 28, 2009, 12:19 PM
  On Feb 27, 2009, at 4:55 PM, x yz wrote:
 
   The regTx seems to be working registers here,
 yet
  their definition are regparm(3) registers for
 function
  arugments. Such usage would cause conflict on
 other
  platforms. May I suggest that we use individual
 defined set
  of regs for func i/o argument and working?
 
  First up, I think you're getting slightly
 confused
  about regparm(3).  This is not used anywhere in
 the JS
  language JIT, only in WREC.  In some
 configurations of the
  JIT we use fastcall semantics on x86... but none
 of this is
  really relevant to MIPS.  Just ignore all this. 
 Stick to
  the default MIPS ABI for stub functions.
 
  Reading between the lines, I'm guessing your
 concern
  here is that in setting up arguments for a JIT
 stub call you
  may trample the JIT's temporary registers?  If
 so, I
  think you need to look at the argument passing
 more closely.
   The mechanisms to pass arguments to stub
 functions pass all
  arguments in memory – typically passing a single
 pointer
  to the stub functions, which can be used to
 retrieve the
  arguments.  This pointer argument can be set up
 immediately
  prior to the call, so it does not interfere with
 the regT?
  temporaries.  We follow this pattern on x86-64,
 where the
  ABI is typically to pass arguments in registers. 
 You cannot
  trivially change the way this works, since the
 argument
  pointer is used for other purposes too (e.g.
 retrieving the
  arguments passed into the JIT code from within the
 stubs).
 
  We strongly prefer small, simple, incremental
 changes.  A
  patch that tried to both port the JIT to a new
 platform and
  to introduce a new argument passing interface to
 the JIT
  stub functions sounds unlikely to get anywhere (a
 patch
  porting the JIT to a new platform is on its own
 very likely
  to be too much more than we'd want to land in
 one
  chunk).  I'd suggest that a port would be wise
 to
  engineer it's initial solution to fit one of
 the
  existing argument passing mechanisms (these are
 selected by
  JIT_STUB_ARGUMENT_* switches, to help find the
 relevant
  code).  (Alternatively, you're welcome to
 attempt to
  port x86-64 to make use of an in-register argument
 passing
  solution, which could be hugely useful.  With this
 landed
  first and separately, a port could then build on
 top of
  this.)
 
  As a more direct answer to your question, you
 could
  endeavour to make the set of hardware registers
 used as JIT
  temporaries non-overlapping with ABI function
 argument
  registers on MIPS, but this is unlikely to be a
 general
  solution to anything for all platforms, due to
 limited
  register availability on some architectures.
 
   we would put all these definition in a file
 named
  regMap.h, then we can remove all X86::
 from
  other JIT files.
 
  I don't think we'll be keen on taking
 preemptive
  changes so far ahead in preparation of a port. 
 The first
  logical step in porting to a new platform is still
 to start
  with WREC, and this requires no changes in the JIT
  directory.  Any refactoring of the existing JIT

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

2009-03-02 Thread x yz

thanks for update, it helps people.


--- On Mon, 3/2/09, Jenson Lui jhn...@gmail.com wrote:

 From: Jenson Lui jhn...@gmail.com
 Subject: Re: [webkit-dev] strange behaviour when loading local webpage using  
 file://
 To: last...@yahoo.com
 Cc: webkit-dev@lists.webkit.org
 Date: Monday, March 2, 2009, 5:10 PM
 Hello all,
 
 After some codes trace and I find that the
 g_file_info_get_content_type
 is not function properly on my target board. So I wrote a
 simple test program
 to test the g_file_info_get_content_type and discover that
 my target root
 fs is missing the MIME database. By copy the MIME database,
 everything is
 working fine now.
  Anyway, thanks for the helps!
 
 Regards,
 Jenson
 
  On Sun, Mar 1, 2009 at 6:48 AM, x yz
 last...@yahoo.com wrote:
 
  you cross compile to which CPU/OS? using which
 version/compiler?
 
 
  --- On Sat, 2/28/09, Jenson Lui
 jhn...@gmail.com wrote:
 
  From: Jenson Lui jhn...@gmail.com
  Subject: Re: [webkit-dev] strange behaviour
 when loading local webpage using file://
  To: webkit-dev@lists.webkit.org
  Date: Saturday, February 28, 2009, 4:32 PM
  Hello,
 
    hmm...actually I did a search and only find
 something
  related by
  Dhananjoy Chutia's email. However, look
 like no one
  reply to
  the issue (or i miss the email reply?) It
 would be nice if
  anyone can
  help to copy the reply or show the link to it.
 Thanks!
 
  Regards,
  Hung
 
  the email is quoted here
 
 begin==
  Hi,
   Here are some observations:
 
  When I try to load
 file:///home/dhananjoy/index.html , the
  following error
  is shown.
  GLib-GIO-CRITICAL **: g_file_read_async:
 assertion
  `G_IS_FILE (file)'
  failed.
 
  As per my observation d-m_gfile is not
 NULL upto the
  statement
   client-didReceiveResponse(handle,
 response); : line no
  590 in
 
 WebCore/platform/network/soup/ResourceHandleSoup.cpp
  But, afterward d-m_gfile becomes NULL.
 
  It is to be noted that my I am using
 glib-2.15.3.
 
  Regards
  Dhananjoy
  end==
 
  On Sat, Feb 28, 2009 at 1:36 AM, x yz
  last...@yahoo.com wrote:
  
   search for previous discussions.
  
  
   --- On Fri, 2/27/09, Jenson Lui
  jhn...@gmail.com wrote:
  
   From: Jenson Lui
 jhn...@gmail.com
   Subject: [webkit-dev] strange
 behaviour when
  loading local webpage using file://
   To: webkit-dev@lists.webkit.org
   Date: Friday, February 27, 2009, 3:52
 PM
   Hello all,
  
           I encounter a strange
 problem.
   I cross compile latest webkit engine
 and use it in
  my
   application.
   When I try to load a web page from
 local using
  file://,
   instead of
   rendering the html,
   the actual html text is display, i.e.
   html... is shown.
   I try the lt-Gtklauncher in my
 target, same
  result.
   However, when I try the x86 build of
 the same
  revision with
   the same html page.
   The html page is rendered as normal.
   I am using the same set of options
 when do the
  cross
   compile  x86 build.
   I am not sure if there is anything
 wrong? Does
  anyone have
   the same problem?
  
   Thanks!
  
   Regards,
   Jenson
  
 ___
   webkit-dev mailing list
   webkit-dev@lists.webkit.org
  
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
  
  
  
  
 
 ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 
 
 
 


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


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

2009-02-28 Thread x yz

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


--- On Sat, 2/28/09, Jenson Lui jhn...@gmail.com wrote:

 From: Jenson Lui jhn...@gmail.com
 Subject: Re: [webkit-dev] strange behaviour when loading local webpage using 
 file://
 To: webkit-dev@lists.webkit.org
 Date: Saturday, February 28, 2009, 4:32 PM
 Hello,
 
   hmm...actually I did a search and only find something
 related by
 Dhananjoy Chutia's email. However, look like no one
 reply to
 the issue (or i miss the email reply?) It would be nice if
 anyone can
 help to copy the reply or show the link to it. Thanks!
 
 Regards,
 Hung
 
 the email is quoted here
 begin==
 Hi,
  Here are some observations:
 
 When I try to load file:///home/dhananjoy/index.html , the
 following error
 is shown.
 GLib-GIO-CRITICAL **: g_file_read_async: assertion
 `G_IS_FILE (file)'
 failed.
 
 As per my observation d-m_gfile is not NULL upto the
 statement
  client-didReceiveResponse(handle, response); : line no
 590 in
 WebCore/platform/network/soup/ResourceHandleSoup.cpp
 But, afterward d-m_gfile becomes NULL.
 
 It is to be noted that my I am using glib-2.15.3.
 
 Regards
 Dhananjoy
 end==
 
 On Sat, Feb 28, 2009 at 1:36 AM, x yz
 last...@yahoo.com wrote:
 
  search for previous discussions.
 
 
  --- On Fri, 2/27/09, Jenson Lui
 jhn...@gmail.com wrote:
 
  From: Jenson Lui jhn...@gmail.com
  Subject: [webkit-dev] strange behaviour when
 loading local webpage using file://
  To: webkit-dev@lists.webkit.org
  Date: Friday, February 27, 2009, 3:52 PM
  Hello all,
 
          I encounter a strange problem.
  I cross compile latest webkit engine and use it in
 my
  application.
  When I try to load a web page from local using
 file://,
  instead of
  rendering the html,
  the actual html text is display, i.e.
  html... is shown.
  I try the lt-Gtklauncher in my target, same
 result.
  However, when I try the x86 build of the same
 revision with
  the same html page.
  The html page is rendered as normal.
  I am using the same set of options when do the
 cross
  compile  x86 build.
  I am not sure if there is anything wrong? Does
 anyone have
  the same problem?
 
  Thanks!
 
  Regards,
  Jenson
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 
 
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

2009-02-27 Thread x yz

Zoltan,
you are right, thanks a lot!
joe


--- On Fri, 2/27/09, Zoltan Herczeg zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] want to port JIT to MIPS - stack/code segment 
 alignment
 To: webkit-dev@lists.webkit.org
 Date: Friday, February 27, 2009, 3:41 PM
 Hi,
 
 in ARM, we have a rule set called EABI (Embedded
 Application Binary
 Interface). It says the stack must always be word aligned,
 and must be 2
 words (8 bytes) aligned if you call other functions. The
 WebKit
 interpreter callbacks returns either a single pointer
 (sometimes an int
 contains a boolean value) or double pointers. These return
 values can be
 passed through registers, no need to pre-allocate stack
 space for them.
 The functions generated by g++ are also EABI compilant, so
 we don't need
 worry about the stack at all.
 
 I think AssemblerBuffer is only temporary hold the
 generated machine
 instructions. When the compilation phase is done, you need
 to call
 AssemblerBuffer::executableCopy, which allocates a new
 executable memory
 space and that space is aligned by ExecutableAllocator.
 
 Cheers,
 Zoltan
 
  Zoltan,
  thanks a lot! yeah the issue is just JIT related.
  Do I need to take care of stack in JIT code, say
 before emit asm call I
  align the stack? I guess no need because Mips always
 aligned to 32bits,
  and the only double functions in webkit return result
 in registers not
  memory.
  For AssemblerBuffer.h I think it is different because
 the initial 256bytes
  buffer may be not aligned to 32bit. I'll add
 __attribute__ ((aligned (4)))
  or 8.
  rgds
  joe
 
 
  --- On Fri, 2/27/09, Zoltan Herczeg
 zherc...@inf.u-szeged.hu wrote:
 
  From: Zoltan Herczeg
 zherc...@inf.u-szeged.hu
  Subject: Re: [webkit-dev] want to port JIT to MIPS
 - stack/code segment
  alignment
  To: webkit-dev@lists.webkit.org
  Date: Friday, February 27, 2009, 6:16 AM
  Hi,
 
  I am not sure I understand your questions. The
 code blocks
  are allocated
  by mmap() or VirtualAlloc(), thus they are aligned
 to 4K.
  Smaller chunks
  are aligned by roundUpAllocationSize() function.
 Now the
  alignemt is
  sizeof(void*) in both x86 and ARM. See
  ExecutableAllocator.h
 
  The current jit implementations don't store
 temporary
  variables on the
  stack, they allocate a fixed size buffer after the
 entry,
  and only free
  that when you leave the jit. This approach is much
 easier
  than keep
  tracking of the stack.
 
  Cheers,
  Zoltan
 
   gcc handles it well for X86. now on Mips I
 need to do
  followings right?
   1. make sure (re)allocated code buffer
 aligned to
  64bits and gcc malloc()
   only guarantee 32bits
   2. before any call instruction in JIT code,
 make sure
  stack is aligned to
   64bit also.
   PPC no JIT thus no problem right?
   rgds
   joe
  
  
   --- On Sun, 2/22/09, x yz
 last...@yahoo.com
  wrote:
  
   From: x yz last...@yahoo.com
   Subject: Re: [webkit-dev] want to port
 JIT to MIPS
   To: WebKit Development
  webkit-dev@lists.webkit.org, Gavin
   Barraclough
 barraclo...@apple.com
   Date: Sunday, February 22, 2009, 4:34 PM
   Thanks a lot otherwise I have
 misunderstanding.
  Yes I'll
   do wrec first. I just want to clean up
 possible
  blocking
   issues.
  
   I see wrec uses regparm(3) and jit always
 use
  fastcall for
   X86?
   In JIT.cpp ctiTrampoline put CallFrame in
 edi, but
  how
   about other arguments - where are they be
  fetched/poped from
   stack?
  
   when deal with caller/callee saved regs,
 gcc MIPS
  just
   preserves them when necesasary. The
 problem is
  after JIT
   used gcc may not have enough knowledge on
   necessary, do we have a way
 to force
  gcc always
   preserve
   them?
  
   how to identify a patch
  (patchimm/patchptr/patchaddr)
   relates to a data field in an instruction
 or
  relates to an
   element in a data array? In Mips the
 former means
  the 32bit
   needs to be separated into two 16bits and
 patched
  into two
   instructions. But if a 32bit is a pointer
 in a
  pointer
   array, we can save it directly.
  
   rgds
   joe
  
  
   --- On Fri, 2/20/09, Gavin Barraclough
   barraclo...@apple.com wrote:
  
From: Gavin Barraclough
  barraclo...@apple.com
Subject: Re: [webkit-dev] want to
 port JIT to
  MIPS
To: WebKit Development
   webkit-dev@lists.webkit.org
Date: Friday, February 20, 2009,
 2:01 PM
On Feb 19, 2009, at 8:27 PM, x yz
 wrote:
   
 I'd appreaciate your help
 to clarify
  the
   problem I
faced:

 1.In JIT.cpp I roughly
 understand
  ctiTrampoline()
except for sp-0x1C, I guess the 1C
 includes 6
  argument
   yet
the 7th or 1st may be the hidden C++
 pointer?
  And the
reserved 1C stack space seems not
 used? why
  esi is
   forced to
be 512 rather than use input
 argument?
   
The JIT allocates a fixed frame on
 the stack
  which is
   used
to pass arguments into stub
 functions.  The
  0x1C
   contains a
spare word or two

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

2009-02-27 Thread x yz

search for previous discussions.


--- On Fri, 2/27/09, Jenson Lui jhn...@gmail.com wrote:

 From: Jenson Lui jhn...@gmail.com
 Subject: [webkit-dev] strange behaviour when loading local webpage using 
 file://
 To: webkit-dev@lists.webkit.org
 Date: Friday, February 27, 2009, 3:52 PM
 Hello all,
 
 I encounter a strange problem.
 I cross compile latest webkit engine and use it in my
 application.
 When I try to load a web page from local using file://,
 instead of
 rendering the html,
 the actual html text is display, i.e.
 html... is shown.
 I try the lt-Gtklauncher in my target, same result.
 However, when I try the x86 build of the same revision with
 the same html page.
 The html page is rendered as normal.
 I am using the same set of options when do the cross
 compile  x86 build.
 I am not sure if there is anything wrong? Does anyone have
 the same problem?
 
 Thanks!
 
 Regards,
 Jenson
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


Re: [webkit-dev] want to port JIT to MIPS - which calling convention is used here?

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] 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 barraclo...@apple.com wrote:

 From: Gavin Barraclough barraclo...@apple.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - JIT reg usage clean up?
 To: WebKit Development webkit-dev@lists.webkit.org
 Date: Saturday, February 28, 2009, 12:19 PM
 On Feb 27, 2009, at 4:55 PM, x yz wrote:
 
  The regTx seems to be working registers here, yet
 their definition are regparm(3) registers for function
 arugments. Such usage would cause conflict on other
 platforms. May I suggest that we use individual defined set
 of regs for func i/o argument and working?
 
 First up, I think you're getting slightly confused
 about regparm(3).  This is not used anywhere in the JS
 language JIT, only in WREC.  In some configurations of the
 JIT we use fastcall semantics on x86... but none of this is
 really relevant to MIPS.  Just ignore all this.  Stick to
 the default MIPS ABI for stub functions.

You are absolutely right, I used to see WREC has postfix for regparm(3) and 
comments on using fastcall or so, yet I'm confused by so many calling 
conventions and especially messed up today.  
For exmaple, how could I know which calling convention the following function 
uses?
static JSObject* resizePropertyStorage(JSObject* baseObject, int32_t oldSize, 
int32_t newSize)
{
baseObject-allocatePropertyStorage(oldSize, newSize);
return baseObject;
}

 
 Reading between the lines, I'm guessing your concern
 here is that in setting up arguments for a JIT stub call you
 may trample the JIT's temporary registers?  If so, I
 think you need to look at the argument passing more closely.
  The mechanisms to pass arguments to stub functions pass all
 arguments in memory – typically passing a single pointer
 to the stub functions, which can be used to retrieve the
 arguments.  This pointer argument can be set up immediately
 prior to the call, so it does not interfere with the regT?
 temporaries.  We follow this pattern on x86-64, where the
 ABI is typically to pass arguments in registers.  You cannot
 trivially change the way this works, since the argument
 pointer is used for other purposes too (e.g. retrieving the
 arguments passed into the JIT code from within the stubs).
 
 We strongly prefer small, simple, incremental changes.  A
 patch that tried to both port the JIT to a new platform and
 to introduce a new argument passing interface to the JIT
 stub functions sounds unlikely to get anywhere (a patch
 porting the JIT to a new platform is on its own very likely
 to be too much more than we'd want to land in one
 chunk).  I'd suggest that a port would be wise to
 engineer it's initial solution to fit one of the
 existing argument passing mechanisms (these are selected by
 JIT_STUB_ARGUMENT_* switches, to help find the relevant
 code).  (Alternatively, you're welcome to attempt to
 port x86-64 to make use of an in-register argument passing
 solution, which could be hugely useful.  With this landed
 first and separately, a port could then build on top of
 this.)

 Mips calling conventions always passes 1st four in regs and others in stack 
 from left to right. Thus I need to change argument passing.

 As a more direct answer to your question, you could
 endeavour to make the set of hardware registers used as JIT
 temporaries non-overlapping with ABI function argument
 registers on MIPS, but this is unlikely to be a general
 solution to anything for all platforms, due to limited
 register availability on some architectures.

 Thanks this would work.
 
  we would put all these definition in a file named
 regMap.h, then we can remove all X86:: from
 other JIT files.
 
 I don't think we'll be keen on taking preemptive
 changes so far ahead in preparation of a port.  The first
 logical step in porting to a new platform is still to start
 with WREC, and this requires no changes in the JIT
 directory.  Any refactoring of the existing JIT would make
 more sense more directly prior to work in that area.

I'm waiting for a partner to complete tool chain, that's why I paused wrec 
and work on JIT.
I don't ask for logical change on X86 code for porting, but sth like 
#define to remap registers. One reg can have multiple names like what we 
see in current code:
static const RegisterID returnValueRegister = X86::eax;
static const RegisterID cachedResultRegister = X86::eax;
static const RegisterID regT0 = X86::eax; 
In this way the X86:eax can exist in just one regMap.h file. For Mips the 
above may be:
static const RegisterID returnValueRegister = MIPS::$v0;
static const RegisterID cachedResultRegister = MIPS::$s1;
static const RegisterID regT0 = MIPS:$a0; 
The key is one name one usage. Currently I'll use same MIPS reg for above 
lines rather than 3 different one as I'm not sure any inter-usage in X86 
code, or X86 uses one name for multiple purpose.
If I don't use remapping, then I need another

Re: [webkit-dev] JCS standalone

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 gga...@apple.com wrote:

 From: Geoffrey Garen gga...@apple.com
 Subject: Re: [webkit-dev] JCS standalone
 To: thouraya andolsi thouraya.ando...@gmail.com
 Cc: webkit-dev@lists.webkit.org
 Date: Saturday, February 21, 2009, 4:32 AM
 Hi.
 
 You can use 'make' or any of the platform-specific
 project files in the JavaScriptCore subdirectory.
 
 Geoff
 
 On Feb 19, 2009, at 11:52 PM, thouraya andolsi wrote:
 
  Hi all,
  
  How can i compile JSC standalone ? ( I would like to
 have just the jsc executable)
  
  I looked at WebKitTools/Scripts directory
 and I found build-jsc script. But using this script, I
 didn't get the jsc compiled (may be I didn't used
 the correct command line to compile).
  
  
  Best regards.
  
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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 silverburgh.me...@gmail.com wrote:

 From: Meryl Silverburgh silverburgh.me...@gmail.com
 Subject: Re: [webkit-dev] How to build a webkit release build
 To: last...@yahoo.com
 Cc: webkit-dev@lists.webkit.org
 Date: Wednesday, February 25, 2009, 12:29 PM
 Thanks.
 
 But after I svn get the release build, there are only 4
 sub-directories.
 
 $ ls
 JavaScriptCoreJavaScriptGlue  WebCore WebKit
 
 So I can't perform your steps as there is no
 'autogen.sh' 'build-webkit', etc.
 
 
 On Tue, Feb 24, 2009 at 7:35 PM, x yz
 last...@yahoo.com wrote:
  check out eveything,
  autogen.sh --pefix=dir
  set-webkit-configuration --release
  build-webkit --gtk
 
 
  --- On Wed, 2/25/09, Meryl Silverburgh
 silverburgh.me...@gmail.com wrote:
 
  From: Meryl Silverburgh
 silverburgh.me...@gmail.com
  Subject: [webkit-dev] How to build a webkit
 release build
  To: webkit-dev@lists.webkit.org
  Date: Wednesday, February 25, 2009, 8:50 AM
  I read the instructions here in building Webkit
 trunk build.
 
  http://webkit.org/building/build.html
 
  But when I check out the 'release' build,
 it only
  has 4 subdirectories
  (different from the trunk project directories) and
  it does not have
  'WebKit/WebKitTools/Scripts/build-webkit'
 
 
 http://trac.webkit.org/browser/releases/Apple/Safari%204%20Public%20Beta
  http://trac.webkit.org/browser/trunk
 
  So my question is how can I build Webkit's
 release
  build?
 
  Thank you.
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 
 
 


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


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

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 last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS
 To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough 
 barraclo...@apple.com
 Date: Sunday, February 22, 2009, 4:34 PM
 Thanks a lot otherwise I have misunderstanding. Yes I'll
 do wrec first. I just want to clean up possible blocking
 issues.
 
 I see wrec uses regparm(3) and jit always use fastcall for
 X86?
 In JIT.cpp ctiTrampoline put CallFrame in edi, but how
 about other arguments - where are they be fetched/poped from
 stack? 
 
 when deal with caller/callee saved regs, gcc MIPS just
 preserves them when necesasary. The problem is after JIT
 used gcc may not have enough knowledge on
 necessary, do we have a way to force gcc always
 preserve 
 them? 
 
 how to identify a patch (patchimm/patchptr/patchaddr)
 relates to a data field in an instruction or relates to an
 element in a data array? In Mips the former means the 32bit
 needs to be separated into two 16bits and patched into two
 instructions. But if a 32bit is a pointer in a pointer
 array, we can save it directly.
 
 rgds
 joe
 
 
 --- On Fri, 2/20/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS
  To: WebKit Development
 webkit-dev@lists.webkit.org
  Date: Friday, February 20, 2009, 2:01 PM
  On Feb 19, 2009, at 8:27 PM, x yz wrote:
  
   I'd appreaciate your help to clarify the
 problem I
  faced:
   
   1.In JIT.cpp I roughly understand ctiTrampoline()
  except for sp-0x1C, I guess the 1C includes 6 argument
 yet
  the 7th or 1st may be the hidden C++ pointer? And the
  reserved 1C stack space seems not used? why esi is
 forced to
  be 512 rather than use input argument?
  
  The JIT allocates a fixed frame on the stack which is
 used
  to pass arguments into stub functions.  The 0x1C
 contains a
  spare word or two to maintain stack alignment.  %esi
 is used
  in the timeout check mechanism.
  
   2.How to understand the stack balance in
  ctiVMThrowTrampoline()? why after calling we still add
 1C
  w/o sub 1C before calling? where comes
  _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I
 know
  which name for Mips? does this one relates to variable
  argument function call?
  
  ctiVMThrowTrampoline is never called as a function (it
 is
  declared as a function only to provide a symbol that
 can be
  manipulated from C code).  ctiVMThrowTrampoline is
 used in
  returning back from JIT generated code, in the case of
 an
  exception.
  
   3.I know how to handle jump in Mips, but not sure
  how/when to handle patchAddress/patchImm/patchPointer
  because I'm not sure the instructions related. I
 guess
  all patches are for last 32bit IMM field of
 instructions.
   Mips can't load 32bit in one instruction,
 thus I
  need to know the instruction before I can patch/add in
 the
  32bit data.
   
   4.I'm kind of want no asm code outside
  assembler folder, any plan for that?
  
  No.  The assembler is intended to be independent of
  JavaScript types - it's just an assembler.  The
 asm
  trampolines are specific to the JIT.  It is currently
 the
  intention that architecture specific parts of the JIT
  implementation will remain in the jit folder.
  
  I'd suggest that in attempting to port the jit,
 WREC
  would be a good place to start.
  
  cheers,
  G.
  
   
   rgds
   joe
   
   --- On Mon, 2/16/09, x yz
 last...@yahoo.com
  wrote:
   
   From: x yz last...@yahoo.com
   Subject: Re: [webkit-dev] want to port JIT to
 MIPS
  - when WREC/JIT enabled?
   To: Gavin Barraclough
  barraclo...@apple.com
   Cc: WebKit Development
  webkit-dev@lists.webkit.org
   Date: Monday, February 16, 2009, 5:25 AM
   Hi,
   from paltform.h it is enabled only on X86
 MAC/WIN;
  from
   javaScriptCore.pri it is also enabled for
  (QT_ARCH,i386).
   But, from config.log I see them are enabled!
   
   how can I run WREC/JIT test so I can trace in
 X86
  asm coce
   generated?
   thanks a lot.
   joe
   
   
   
   --- On Sat, 2/7/09, Gavin Barraclough
   barraclo...@apple.com wrote:
   
   From: Gavin Barraclough
  barraclo...@apple.com
   Subject: Re: [webkit-dev] want to port
 JIT to
  MIPS -
   using X86::ecx as base
   To: last...@yahoo.com
   Cc: WebKit Development
   webkit-dev@lists.webkit.org
   Date: Saturday, February 7, 2009, 7:08 AM
   On Feb 6, 2009, at 2:52 PM, x yz wrote:
   
   1.what's the meaning

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

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 last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS
 To: WebKit Development webkit-dev@lists.webkit.org, Gavin Barraclough 
 barraclo...@apple.com
 Date: Sunday, February 22, 2009, 4:34 PM
 Thanks a lot otherwise I have misunderstanding. Yes I'll
 do wrec first. I just want to clean up possible blocking
 issues.
 
 I see wrec uses regparm(3) and jit always use fastcall for
 X86?
 In JIT.cpp ctiTrampoline put CallFrame in edi, but how
 about other arguments - where are they be fetched/poped from
 stack? 
 
 when deal with caller/callee saved regs, gcc MIPS just
 preserves them when necesasary. The problem is after JIT
 used gcc may not have enough knowledge on
 necessary, do we have a way to force gcc always
 preserve 
 them? 
 
 how to identify a patch (patchimm/patchptr/patchaddr)
 relates to a data field in an instruction or relates to an
 element in a data array? In Mips the former means the 32bit
 needs to be separated into two 16bits and patched into two
 instructions. But if a 32bit is a pointer in a pointer
 array, we can save it directly.
 
 rgds
 joe
 
 
 --- On Fri, 2/20/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS
  To: WebKit Development
 webkit-dev@lists.webkit.org
  Date: Friday, February 20, 2009, 2:01 PM
  On Feb 19, 2009, at 8:27 PM, x yz wrote:
  
   I'd appreaciate your help to clarify the
 problem I
  faced:
   
   1.In JIT.cpp I roughly understand ctiTrampoline()
  except for sp-0x1C, I guess the 1C includes 6 argument
 yet
  the 7th or 1st may be the hidden C++ pointer? And the
  reserved 1C stack space seems not used? why esi is
 forced to
  be 512 rather than use input argument?
  
  The JIT allocates a fixed frame on the stack which is
 used
  to pass arguments into stub functions.  The 0x1C
 contains a
  spare word or two to maintain stack alignment.  %esi
 is used
  in the timeout check mechanism.
  
   2.How to understand the stack balance in
  ctiVMThrowTrampoline()? why after calling we still add
 1C
  w/o sub 1C before calling? where comes
  _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I
 know
  which name for Mips? does this one relates to variable
  argument function call?
  
  ctiVMThrowTrampoline is never called as a function (it
 is
  declared as a function only to provide a symbol that
 can be
  manipulated from C code).  ctiVMThrowTrampoline is
 used in
  returning back from JIT generated code, in the case of
 an
  exception.
  
   3.I know how to handle jump in Mips, but not sure
  how/when to handle patchAddress/patchImm/patchPointer
  because I'm not sure the instructions related. I
 guess
  all patches are for last 32bit IMM field of
 instructions.
   Mips can't load 32bit in one instruction,
 thus I
  need to know the instruction before I can patch/add in
 the
  32bit data.
   
   4.I'm kind of want no asm code outside
  assembler folder, any plan for that?
  
  No.  The assembler is intended to be independent of
  JavaScript types - it's just an assembler.  The
 asm
  trampolines are specific to the JIT.  It is currently
 the
  intention that architecture specific parts of the JIT
  implementation will remain in the jit folder.
  
  I'd suggest that in attempting to port the jit,
 WREC
  would be a good place to start.
  
  cheers,
  G.
  
   
   rgds
   joe
   
   --- On Mon, 2/16/09, x yz
 last...@yahoo.com
  wrote:
   
   From: x yz last...@yahoo.com
   Subject: Re: [webkit-dev] want to port JIT to
 MIPS
  - when WREC/JIT enabled?
   To: Gavin Barraclough
  barraclo...@apple.com
   Cc: WebKit Development
  webkit-dev@lists.webkit.org
   Date: Monday, February 16, 2009, 5:25 AM
   Hi,
   from paltform.h it is enabled only on X86
 MAC/WIN;
  from
   javaScriptCore.pri it is also enabled for
  (QT_ARCH,i386).
   But, from config.log I see them are enabled!
   
   how can I run WREC/JIT test so I can trace in
 X86
  asm coce
   generated?
   thanks a lot.
   joe
   
   
   
   --- On Sat, 2/7/09, Gavin Barraclough
   barraclo...@apple.com wrote:
   
   From: Gavin Barraclough
  barraclo...@apple.com
   Subject: Re: [webkit-dev] want to port
 JIT to
  MIPS -
   using X86::ecx as base
   To: last...@yahoo.com
   Cc: WebKit Development
   webkit-dev@lists.webkit.org
   Date: Saturday, February 7, 2009, 7:08 AM
   On Feb 6, 2009, at 2:52 PM, x yz wrote:
   
   1.what's the meaning of
  ALTERNATE_JSIMMEDIATE
   and
   slow case?
   
   On x86-64 we use a different
 implementation of
  the
   class
   JSImmediate.  See

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

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 zherc...@inf.u-szeged.hu wrote:

 From: Zoltan Herczeg zherc...@inf.u-szeged.hu
 Subject: Re: [webkit-dev] want to port JIT to MIPS - stack/code segment 
 alignment
 To: webkit-dev@lists.webkit.org
 Date: Friday, February 27, 2009, 6:16 AM
 Hi,
 
 I am not sure I understand your questions. The code blocks
 are allocated
 by mmap() or VirtualAlloc(), thus they are aligned to 4K.
 Smaller chunks
 are aligned by roundUpAllocationSize() function. Now the
 alignemt is
 sizeof(void*) in both x86 and ARM. See
 ExecutableAllocator.h
 
 The current jit implementations don't store temporary
 variables on the
 stack, they allocate a fixed size buffer after the entry,
 and only free
 that when you leave the jit. This approach is much easier
 than keep
 tracking of the stack.
 
 Cheers,
 Zoltan
 
  gcc handles it well for X86. now on Mips I need to do
 followings right?
  1. make sure (re)allocated code buffer aligned to
 64bits and gcc malloc()
  only guarantee 32bits
  2. before any call instruction in JIT code, make sure
 stack is aligned to
  64bit also.
  PPC no JIT thus no problem right?
  rgds
  joe
 
 
  --- On Sun, 2/22/09, x yz last...@yahoo.com
 wrote:
 
  From: x yz last...@yahoo.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS
  To: WebKit Development
 webkit-dev@lists.webkit.org, Gavin
  Barraclough barraclo...@apple.com
  Date: Sunday, February 22, 2009, 4:34 PM
  Thanks a lot otherwise I have misunderstanding.
 Yes I'll
  do wrec first. I just want to clean up possible
 blocking
  issues.
 
  I see wrec uses regparm(3) and jit always use
 fastcall for
  X86?
  In JIT.cpp ctiTrampoline put CallFrame in edi, but
 how
  about other arguments - where are they be
 fetched/poped from
  stack?
 
  when deal with caller/callee saved regs, gcc MIPS
 just
  preserves them when necesasary. The problem is
 after JIT
  used gcc may not have enough knowledge on
  necessary, do we have a way to force
 gcc always
  preserve
  them?
 
  how to identify a patch
 (patchimm/patchptr/patchaddr)
  relates to a data field in an instruction or
 relates to an
  element in a data array? In Mips the former means
 the 32bit
  needs to be separated into two 16bits and patched
 into two
  instructions. But if a 32bit is a pointer in a
 pointer
  array, we can save it directly.
 
  rgds
  joe
 
 
  --- On Fri, 2/20/09, Gavin Barraclough
  barraclo...@apple.com wrote:
 
   From: Gavin Barraclough
 barraclo...@apple.com
   Subject: Re: [webkit-dev] want to port JIT to
 MIPS
   To: WebKit Development
  webkit-dev@lists.webkit.org
   Date: Friday, February 20, 2009, 2:01 PM
   On Feb 19, 2009, at 8:27 PM, x yz wrote:
  
I'd appreaciate your help to clarify
 the
  problem I
   faced:
   
1.In JIT.cpp I roughly understand
 ctiTrampoline()
   except for sp-0x1C, I guess the 1C includes 6
 argument
  yet
   the 7th or 1st may be the hidden C++ pointer?
 And the
   reserved 1C stack space seems not used? why
 esi is
  forced to
   be 512 rather than use input argument?
  
   The JIT allocates a fixed frame on the stack
 which is
  used
   to pass arguments into stub functions.  The
 0x1C
  contains a
   spare word or two to maintain stack
 alignment.  %esi
  is used
   in the timeout check mechanism.
  
2.How to understand the stack balance in
   ctiVMThrowTrampoline()? why after calling we
 still add
  1C
   w/o sub 1C before calling? where comes
   _ZN3JSC11Interpreter12cti_vm_throwEPPv and
 how do I
  know
   which name for Mips? does this one relates to
 variable
   argument function call?
  
   ctiVMThrowTrampoline is never called as a
 function (it
  is
   declared as a function only to provide a
 symbol that
  can be
   manipulated from C code). 
 ctiVMThrowTrampoline is
  used in
   returning back from JIT generated code, in
 the case of
  an
   exception.
  
3.I know how to handle jump in Mips, but
 not sure
   how/when to handle
 patchAddress/patchImm/patchPointer
   because I'm not sure the instructions
 related. I
  guess
   all patches are for last 32bit IMM field of
  instructions.
Mips can't load 32bit in one
 instruction,
  thus I
   need to know the instruction before I can
 patch/add in
  the
   32bit data.
   
4.I'm kind of want no asm code
 outside
   assembler folder, any plan for that?
  
   No.  The assembler is intended to be
 independent of
   JavaScript types - it's just an
 assembler.  The
  asm
   trampolines are specific to the JIT.  It is
 currently
  the
   intention that architecture specific parts

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

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 barraclo...@apple.com wrote:

 From: Gavin Barraclough barraclo...@apple.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?
 To: WebKit Development webkit-dev@lists.webkit.org
 Date: Friday, February 27, 2009, 6:03 AM
 SSE2 code generation is guarded by calls to a function  
 'isSSE2Present()'.
 
 On Feb 26, 2009, at 12:27 PM, x yz wrote:
 
 
  Hi,
  Old version seems use ENABLE_JIT_OPTIMIZE_ARITHMETIC
 to enable sse2  
  and only for X86_64, current version changes conf to:
  1. you must ENABLE_JIT_OPTIMIZE_ARITHMETIC or else you
 use  
  interpreter for arithmatic.
  2. if ALTERNATE_JSIMMEDIATE not enabled you must have
 sse2 engine
  3. if ALTERNATE_JSIMMEDIATE enabled, you use mmx
 arithematic, but  
  ALTERNATE_JSIMMEDIATE is enabled in paltform.h only
 for X86_64   
  MAC. That means on X86 you need sse2???
  thanks for your time!
  joe
 
 
 
  --- On Sun, 2/22/09, x yz last...@yahoo.com
 wrote:
 
  From: x yz last...@yahoo.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS
  To: WebKit Development
 webkit-dev@lists.webkit.org, Gavin  
  Barraclough barraclo...@apple.com
  Date: Sunday, February 22, 2009, 4:34 PM
  Thanks a lot otherwise I have misunderstanding.
 Yes I'll
  do wrec first. I just want to clean up possible
 blocking
  issues.
 
  I see wrec uses regparm(3) and jit always use
 fastcall for
  X86?
  In JIT.cpp ctiTrampoline put CallFrame in edi, but
 how
  about other arguments - where are they be
 fetched/poped from
  stack?
 
  when deal with caller/callee saved regs, gcc MIPS
 just
  preserves them when necesasary. The problem is
 after JIT
  used gcc may not have enough knowledge on
  necessary, do we have a way to force
 gcc always
  preserve
  them?
 
  how to identify a patch
 (patchimm/patchptr/patchaddr)
  relates to a data field in an instruction or
 relates to an
  element in a data array? In Mips the former means
 the 32bit
  needs to be separated into two 16bits and patched
 into two
  instructions. But if a 32bit is a pointer in a
 pointer
  array, we can save it directly.
 
  rgds
  joe
 
 
  --- On Fri, 2/20/09, Gavin Barraclough
  barraclo...@apple.com wrote:
 
  From: Gavin Barraclough
 barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to
 MIPS
  To: WebKit Development
  webkit-dev@lists.webkit.org
  Date: Friday, February 20, 2009, 2:01 PM
  On Feb 19, 2009, at 8:27 PM, x yz wrote:
 
  I'd appreaciate your help to clarify
 the
  problem I
  faced:
 
  1.In JIT.cpp I roughly understand
 ctiTrampoline()
  except for sp-0x1C, I guess the 1C includes 6
 argument
  yet
  the 7th or 1st may be the hidden C++ pointer?
 And the
  reserved 1C stack space seems not used? why
 esi is
  forced to
  be 512 rather than use input argument?
 
  The JIT allocates a fixed frame on the stack
 which is
  used
  to pass arguments into stub functions.  The
 0x1C
  contains a
  spare word or two to maintain stack alignment.
  %esi
  is used
  in the timeout check mechanism.
 
  2.How to understand the stack balance in
  ctiVMThrowTrampoline()? why after calling we
 still add
  1C
  w/o sub 1C before calling? where comes
  _ZN3JSC11Interpreter12cti_vm_throwEPPv and how
 do I
  know
  which name for Mips? does this one relates to
 variable
  argument function call?
 
  ctiVMThrowTrampoline is never called as a
 function (it
  is
  declared as a function only to provide a
 symbol that
  can be
  manipulated from C code). 
 ctiVMThrowTrampoline is
  used in
  returning back from JIT generated code, in the
 case of
  an
  exception.
 
  3.I know how to handle jump in Mips, but
 not sure
  how/when to handle
 patchAddress/patchImm/patchPointer
  because I'm not sure the instructions
 related. I
  guess
  all patches are for last 32bit IMM field of
  instructions.
  Mips can't load 32bit in one
 instruction,
  thus I
  need to know the instruction before I can
 patch/add in
  the
  32bit data.
 
  4.I'm kind of want no asm code outside
  assembler folder, any plan for that?
 
  No.  The assembler is intended to be
 independent of
  JavaScript types - it's just an assembler.
  The
  asm
  trampolines are specific to the JIT.  It is
 currently
  the
  intention that architecture specific parts of
 the JIT
  implementation will remain in the jit folder.
 
  I'd suggest that in attempting to port the
 jit,
  WREC
  would be a good place to start.
 
  cheers,
  G.
 
 
  rgds
  joe
 
  --- On Mon, 2/16/09, x yz
  last...@yahoo.com
  wrote:
 
  From: x yz last...@yahoo.com
  Subject: Re: [webkit-dev] want to port
 JIT to
  MIPS
  - when WREC/JIT enabled?
  To: Gavin Barraclough
  barraclo...@apple.com
  Cc: WebKit Development
  webkit-dev@lists.webkit.org
  Date: Monday, February 16, 2009, 5:25
 AM
  Hi,
  from paltform.h it is enabled only

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

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


--- On Wed, 2/25/09, Meryl Silverburgh silverburgh.me...@gmail.com wrote:

 From: Meryl Silverburgh silverburgh.me...@gmail.com
 Subject: [webkit-dev] How to build a webkit release build
 To: webkit-dev@lists.webkit.org
 Date: Wednesday, February 25, 2009, 8:50 AM
 I read the instructions here in building Webkit trunk build.
 
 http://webkit.org/building/build.html
 
 But when I check out the 'release' build, it only
 has 4 subdirectories
 (different from the trunk project directories) and
 it does not have
 'WebKit/WebKitTools/Scripts/build-webkit'
 
 http://trac.webkit.org/browser/releases/Apple/Safari%204%20Public%20Beta
 http://trac.webkit.org/browser/trunk
 
 So my question is how can I build Webkit's release
 build?
 
 Thank you.
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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 barraclo...@apple.com wrote:

 From: Gavin Barraclough barraclo...@apple.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS
 To: WebKit Development webkit-dev@lists.webkit.org
 Date: Friday, February 20, 2009, 2:01 PM
 On Feb 19, 2009, at 8:27 PM, x yz wrote:
 
  I'd appreaciate your help to clarify the problem I
 faced:
  
  1.In JIT.cpp I roughly understand ctiTrampoline()
 except for sp-0x1C, I guess the 1C includes 6 argument yet
 the 7th or 1st may be the hidden C++ pointer? And the
 reserved 1C stack space seems not used? why esi is forced to
 be 512 rather than use input argument?
 
 The JIT allocates a fixed frame on the stack which is used
 to pass arguments into stub functions.  The 0x1C contains a
 spare word or two to maintain stack alignment.  %esi is used
 in the timeout check mechanism.
 
  2.How to understand the stack balance in
 ctiVMThrowTrampoline()? why after calling we still add 1C
 w/o sub 1C before calling? where comes
 _ZN3JSC11Interpreter12cti_vm_throwEPPv and how do I know
 which name for Mips? does this one relates to variable
 argument function call?
 
 ctiVMThrowTrampoline is never called as a function (it is
 declared as a function only to provide a symbol that can be
 manipulated from C code).  ctiVMThrowTrampoline is used in
 returning back from JIT generated code, in the case of an
 exception.
 
  3.I know how to handle jump in Mips, but not sure
 how/when to handle patchAddress/patchImm/patchPointer
 because I'm not sure the instructions related. I guess
 all patches are for last 32bit IMM field of instructions.
  Mips can't load 32bit in one instruction, thus I
 need to know the instruction before I can patch/add in the
 32bit data.
  
  4.I'm kind of want no asm code outside
 assembler folder, any plan for that?
 
 No.  The assembler is intended to be independent of
 JavaScript types - it's just an assembler.  The asm
 trampolines are specific to the JIT.  It is currently the
 intention that architecture specific parts of the JIT
 implementation will remain in the jit folder.
 
 I'd suggest that in attempting to port the jit, WREC
 would be a good place to start.
 
 cheers,
 G.
 
  
  rgds
  joe
  
  --- On Mon, 2/16/09, x yz last...@yahoo.com
 wrote:
  
  From: x yz last...@yahoo.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS
 - when WREC/JIT enabled?
  To: Gavin Barraclough
 barraclo...@apple.com
  Cc: WebKit Development
 webkit-dev@lists.webkit.org
  Date: Monday, February 16, 2009, 5:25 AM
  Hi,
  from paltform.h it is enabled only on X86 MAC/WIN;
 from
  javaScriptCore.pri it is also enabled for
 (QT_ARCH,i386).
  But, from config.log I see them are enabled!
  
  how can I run WREC/JIT test so I can trace in X86
 asm coce
  generated?
  thanks a lot.
  joe
  
  
  
  --- On Sat, 2/7/09, Gavin Barraclough
  barraclo...@apple.com wrote:
  
  From: Gavin Barraclough
 barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to
 MIPS -
  using X86::ecx as base
  To: last...@yahoo.com
  Cc: WebKit Development
  webkit-dev@lists.webkit.org
  Date: Saturday, February 7, 2009, 7:08 AM
  On Feb 6, 2009, at 2:52 PM, x yz wrote:
  
  1.what's the meaning of
 ALTERNATE_JSIMMEDIATE
  and
  slow case?
  
  On x86-64 we use a different implementation of
 the
  class
  JSImmediate.  See JSImmediate.h.
  Re 'slow case', in the JIT code
 generation is
  performed as two passes over the bytecode –
 see
  JIT::privateCompileMainPass and
  JIT::privateCompileSlowCases.
  
  2.how come the following code can use ECX
 as base
  register?
  load32(Address(X86::ecx,
 FIELD_OFFSET(Structure,
  m_typeInfo.m_flags)), X86::ecx);
  if the X86::ecx just means its value 1 in
 ModR/M,
  does
  it means [BX+DI]?
  
  I think you're looking at the old 16-bit
  addressing
  mode tables; 32/64-bit x86 can happily encode
 ecx as a
  base
  register.  If you're looking at the Intel
 IA-32
  manual
  volume 2, see table 2-2 on the next page.
  
  3. can anybody help me on my previous
 questions?
  does
  JIT support floating point?
  
  Yes, some.  See JITArithmetic.cpp.
  
  cheers,
  G

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

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 iliescu.iul...@gmail.com wrote:

 From: Iulian iliescu.iul...@gmail.com
 Subject: Re: [webkit-dev] error: Cannot find icu-config. The ICU library is 
 needed.
 To: webkit-dev@lists.webkit.org
 Date: Sunday, February 22, 2009, 3:32 AM
 WebKit has some dependecies.
 
 If you are using Gnome, read this:
 http://trac.webkit.org/wiki/BuildingGtk
 and keep in mind that Fedora packages ends with -devel and
 not with -dev
 
 If you are using KDE and do you want to build WebKit on top
 of QT, that you
 should read this:
 http://trac.webkit.org/wiki/QtWebKit
 
 Iulian
 
 
 nguyen hai -cuncon wrote:
  
  Hi all,
  
  I build webkit on Fedora 9.
  I typed ./autogen.sh and I got a message:
  
  checking for icu-config... no
  configure: error: Cannot find icu-config. The ICU
 library is needed.
  [r...@localhost WebKit-r41018]# 
  
  I am looking this error on webkt.org but I have not
 found any answer.
  Can you help me to solve this error?
  Thanks in advance!
  Hai
  
  
  
Hỗ trợ Tìm kiếm nay đã có trên Yahoo!
 Thanh công cụ. Tải ngay.
  http://vn.toolbar.yahoo.com/
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
  
  
 
 -- 
 View this message in context:
 http://www.nabble.com/error%3A-Cannot-find-icu-config.-The-ICU-library-is-needed.-tp22032927p22139654.html
 Sent from the Webkit mailing list archive at Nabble.com.
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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 assembler folder, any plan for that?

rgds
joe

--- On Mon, 2/16/09, x yz last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled?
 To: Gavin Barraclough barraclo...@apple.com
 Cc: WebKit Development webkit-dev@lists.webkit.org
 Date: Monday, February 16, 2009, 5:25 AM
 Hi,
 from paltform.h it is enabled only on X86 MAC/WIN; from
 javaScriptCore.pri it is also enabled for (QT_ARCH,i386).
 But, from config.log I see them are enabled!
 
 how can I run WREC/JIT test so I can trace in X86 asm coce
 generated?
 thanks a lot.
 joe
 
 
 
 --- On Sat, 2/7/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS -
 using X86::ecx as base
  To: last...@yahoo.com
  Cc: WebKit Development
 webkit-dev@lists.webkit.org
  Date: Saturday, February 7, 2009, 7:08 AM
  On Feb 6, 2009, at 2:52 PM, x yz wrote:
  
   1.what's the meaning of ALTERNATE_JSIMMEDIATE
 and
  slow case?
  
  On x86-64 we use a different implementation of the
 class
  JSImmediate.  See JSImmediate.h.
  Re 'slow case', in the JIT code generation is
  performed as two passes over the bytecode – see
  JIT::privateCompileMainPass and
  JIT::privateCompileSlowCases.
  
   2.how come the following code can use ECX as base
  register?
   load32(Address(X86::ecx, FIELD_OFFSET(Structure,
  m_typeInfo.m_flags)), X86::ecx);
   if the X86::ecx just means its value 1 in ModR/M,
 does
  it means [BX+DI]?
  
  I think you're looking at the old 16-bit
 addressing
  mode tables; 32/64-bit x86 can happily encode ecx as a
 base
  register.  If you're looking at the Intel IA-32
 manual
  volume 2, see table 2-2 on the next page.
  
   3. can anybody help me on my previous questions?
 does
  JIT support floating point?
  
  Yes, some.  See JITArithmetic.cpp.
  
   cheers,
  G.
 
 
   
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


Re: [webkit-dev] checking for LIBSOUP... configure: error: Package requirements (libsoup-2.4 = 2.23) were not met:

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 techrazy.y...@gmail.com wrote:

 From: Bo Yang techrazy.y...@gmail.com
 Subject: Re: [webkit-dev] checking for LIBSOUP... configure: error: Package 
 requirements (libsoup-2.4 = 2.23) were not met:
 To: deuxliq...@yahoo.com
 Cc: webkit-dev@lists.webkit.org
 Date: Tuesday, February 17, 2009, 4:31 PM
 I have came across this error, too.
 The problem is , webkit need is 2.24 or later. But the
 libsoup 2.4 is not
 suitable, and webkit can't build with it because
 libsoup 2.4 miss the
 SoupCookieJar and something which exist in 2.24.
 
 Install libsoup 2.24 , it will work!
 
 Regards!
 Bo
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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 deuxliq...@yahoo.com wrote:

 From: nguyen hai deuxliq...@yahoo.com
 Subject: [webkit-dev] error: Cannot find icu-config. The ICU library is 
 needed.
 To: webkit-dev@lists.webkit.org
 Date: Monday, February 16, 2009, 3:56 PM
 Hi all,
 
 I build webkit on Fedora 9.
 I typed ./autogen.sh and I got a message:
 
 checking for icu-config... no
 configure: error: Cannot find icu-config. The ICU library
 is needed.
 [r...@localhost WebKit-r41018]# 
 
 I am looking this error on webkt.org but I have not found
 any answer.
 Can you help me to solve this error?
 Thanks in advance!
 Hai
 
 
 
   Hỗ trợ Tìm kiếm nay đã có trên Yahoo!
 Thanh công cụ. Tải ngay.
 http://vn.toolbar.yahoo.com/___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


Re: [webkit-dev] checking for LIBSOUP... configure: error: Package requirements (libsoup-2.4 = 2.23) were not met:

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 last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] checking for LIBSOUP... configure: error: Package 
 requirements (libsoup-2.4 = 2.23) were not met:
 To: deuxliq...@yahoo.com, Bo Yang techrazy.y...@gmail.com
 Cc: webkit-dev@lists.webkit.org
 Date: Wednesday, February 18, 2009, 2:40 AM
 libsoup 2.23 is newer than 2.4. On Fedora9 only 2.4 is
 available, on FC10 2.24 is available.
 You need to changed the required version 2.23 in
 configure.ac to 2.4 then you can build. I have not completed
 the build yet.
 
 FC has older libs than ubuntu or so, when I try to compile
 openembbed flash I got lots of lib problem.
 Dave, may I suggest that lib version requirements to
 consider Fedora9? I mean can we loose the requirements, or
 use OS specific one so FC9  just needs 2.4?
 rgds
 joe
 
 
 --- On Tue, 2/17/09, Bo Yang
 techrazy.y...@gmail.com wrote:
 
  From: Bo Yang techrazy.y...@gmail.com
  Subject: Re: [webkit-dev] checking for LIBSOUP...
 configure: error: Package requirements (libsoup-2.4 =
 2.23) were not met:
  To: deuxliq...@yahoo.com
  Cc: webkit-dev@lists.webkit.org
  Date: Tuesday, February 17, 2009, 4:31 PM
  I have came across this error, too.
  The problem is , webkit need is 2.24 or later. But the
  libsoup 2.4 is not
  suitable, and webkit can't build with it because
  libsoup 2.4 miss the
  SoupCookieJar and something which exist in 2.24.
  
  Install libsoup 2.24 , it will work!
  
  Regards!
  Bo
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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 b...@meyerhome.net wrote:

 From: Benjamin Meyer b...@meyerhome.net
 Subject: Re: [webkit-dev] Flash support with Qt for WebKit
 To: 
 Cc: webkit-dev@lists.webkit.org
 Date: Saturday, February 14, 2009, 3:52 AM
 The Qt port does include support for flash.  If you are
 using webkit that is bundled with Qt make sure you are using
 one of the Qt 4.5 snapshots as Qt 4.4 does not include
 flash.  Also make sure you turn on plugin support in your
 QtWebKit application.
 
 -Benjamin Meyer
 
 On Feb 12, 2009, at 7:43 PM, Joshi wrote:
 
  Hi,
  What is the status of support for Flash player and
 other Mozilla style
  plugins in WebKit? I compiled WebKit using Qt port on
 Linux and it runs fine
  but fails to display pages with Flash. I have flash
 plugins for Mozilla and
  so both Firefox and Konqueror can show flash. Is there
 any guide on how to
  make WebKit work for flash pages?
  
  I see there is relevant code under
 WebCore/plugins/{win,mac}. But, I don't
  see corresponding WebCore/plugins/qt. Does this mean
 right now plugins are
  not supported for Qt port?
  
  I will appreciate any answers.
  ___
  webkit-dev mailing list
  webkit-dev@lists.webkit.org
 
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


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

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 barraclo...@apple.com wrote:

 From: Gavin Barraclough barraclo...@apple.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint?
 To: last...@yahoo.com
 Date: Wednesday, January 28, 2009, 4:55 PM
 On Jan 27, 2009, at 10:58 PM, x yz wrote:
 
  Gavin,
  last night I saw WREC when I search X86, and realized
 many places  
  need to be touched. Your reply give more info and
 really help.  
  Thanks a lot.
 
  In Generator::generateEnter(), there is comment
 On gcc the function  
  is regparm(3)..., how to understand that?
 
 WREC JIT generates a function with a C calling convention
 that  
 implements the regular expression.  The entry and exit from
 the  
 function are generated by the generateEnter() and
 generateReturn*()  
 methods.  On OS X x86, the JIT generated function
 implements a  
 regparm(3) calling convention (see WREC.h, the generated
 code is  
 called through a CompiledRegExp function pointer).
 
  The function has no argument, why we peek four
 arguments from  
  stack(input,output,length,index)?
 
 These calls are not peeking values from the stack at the
 time they are  
 called; they are emitting JIT code that will will read
 values from the  
 stack, when the JIT function has been generated and is run.
  The JIT  
 generated regular expression function is passed these four
 arguments  
 (again see WREC.h).
 
 As a note, you're best directing these emails at the
 webkit-dev list  
 in future, that way other people will also be able to help
 you out.
 
 cheers,
 G.
 
 
 
  rgds
  joe
 
 
  --- On Tue, 1/27/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough
 barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to
 MIPS, any coworker or  
  any hint?
  To: last...@yahoo.com
  Date: Tuesday, January 27, 2009, 5:10 AM
  On Jan 26, 2009, at 11:09 AM, x yz wrote:
 
  Gavin,
  Thanks, I really need to learn fast.
  Where can I find more on WREC or its spec?
 
  WREC is WebKit's regular expression JIT.  The
 spec it
  is implementing is the regular expression syntax
 described
  in ECMA-262.
 
  Which part of webkit is WREC? I just see all
 assembler
  codes are in assembler and jit and
 wonder
  whether I can just change them rather then change
 WREC.
 
  WebKit contains two separate JITs, one for the
 JavaScript
  language (in the 'jit' directory), one for
  JavaScript's regular expression language (in
 the
  'wrec' directory).  Both JITs make use of
 the same
  assembler to emit code.  WREC is a much smaller,
 simpler
  JIT, which is why I suggest starting by looking at
 this, but
  either JIT can be enabled independently of the
 other.
 
  Foresee SSE set may be a problem as MIPS has
 no SSE.
 
  WREC does not use SSE, and I believe all JIT code
 generated
  by the main JS JIT is guarded by the a
 configuration switch,
  JIT_OPTIMIZE_ARITHMETIC – this can be disabled
 in
  Platform.h.
 
  Sun's link for The JIT Compiler
 Interface
  Specification not valid anymore.
 
  Our JIT is all our own code, and written from
 scratch, so
  I'm not sure this documentation would help
 you.
 
  Good luck,
  G.
 
 
  MacroAssembler::breakpoint() is just int3
 which I know
  used as debug int in X86. I'll see which one
 used in gnu
  mips.
  joe
 
 
 
  --- On Sun, 1/25/09, Gavin Barraclough
  barraclo...@apple.com wrote:
 
  From: Gavin Barraclough
  barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT
 to
  MIPS, any coworker or any hint?
  To: WebKit Development
  webkit-dev@lists.webkit.org
  Date: Sunday, January 25, 2009, 5:34 PM
  On Jan 24, 2009, at 8:36 PM, x yz wrote:
 
  Just build webkit on XP using cgywin,
 not
  tested yet.
  I want

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

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 last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] webkit test ques/fail
 To: webkit-dev@lists.webkit.org
 Date: Monday, February 16, 2009, 4:26 AM
 Hi,
 I tried to run 02/13/09 code on Ubuntu 8.10/Intel two core
 CPU and face a few errors.
 
 1. how do I specifically test WREC/JIT? I just want to run
 a specific code file so I can trace if sth wrong. I can run
 GtkLauncher or jsc.
 
 2. on architecture level how WREC/JIT are used in webkit?
 how could I know the calling sequence? I can run some test
 but how do I know whether WREC/JIT are called? what's
 the running flow of WREC/JIT?
 
 3. when I run_javascriptcore_tests the error is:
 shell.js -f ./js1_6/String/regress-306591.js
 
 -#- Wrote results to 'actual.html'.
 
 
 
 ** Danger, Will Robinson! Danger! The following failures
 have been introduced:
 
   ecma/Date/15.9.5.31-1.js
   #hour diff 1
   ecma/Date/15.9.5.35-1.js
 
   ecma_3/Date/15.9.5.6.js
 
 
 
 You fixed the following test:
 
   ecma_3/Date/15.9.5.7.js
 
 
 
 3 regressions found.
 
 1 test fixed.
 
 
 Errors include time difference of 1 hour (time zone wrong?)
 or unexpected NaN.
 
 4. when I run-webkit-tests:
 ...
 3907 test cases (96%) succeeded
 
 106 test cases (2%) had incorrect layout
 
 35 test cases (1%) were new
 
 1 test case (1%) timed out
 
 9 test cases (1%) crashed
 
 138 test cases (3%) had stderr output
 
  
 May be some errors are normal but how do I identify them?
 
 rgds
 joe
 
 
 
 
 --- On Wed, 1/28/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS,
 any coworker or any hint?
  To: last...@yahoo.com
  Date: Wednesday, January 28, 2009, 4:55 PM
  On Jan 27, 2009, at 10:58 PM, x yz wrote:
  
   Gavin,
   last night I saw WREC when I search X86, and
 realized
  many places  
   need to be touched. Your reply give more info and
  really help.  
   Thanks a lot.
  
   In Generator::generateEnter(), there is comment
  On gcc the function  
   is regparm(3)..., how to understand that?
  
  WREC JIT generates a function with a C calling
 convention
  that  
  implements the regular expression.  The entry and exit
 from
  the  
  function are generated by the generateEnter() and
  generateReturn*()  
  methods.  On OS X x86, the JIT generated function
  implements a  
  regparm(3) calling convention (see WREC.h, the
 generated
  code is  
  called through a CompiledRegExp function pointer).
  
   The function has no argument, why we peek four
  arguments from  
   stack(input,output,length,index)?
  
  These calls are not peeking values from the stack at
 the
  time they are  
  called; they are emitting JIT code that will will read
  values from the  
  stack, when the JIT function has been generated and is
 run.
   The JIT  
  generated regular expression function is passed these
 four
  arguments  
  (again see WREC.h).
  
  As a note, you're best directing these emails at
 the
  webkit-dev list  
  in future, that way other people will also be able to
 help
  you out.
  
  cheers,
  G.
  
  
  
   rgds
   joe
  
  
   --- On Tue, 1/27/09, Gavin Barraclough
  barraclo...@apple.com wrote:
  
   From: Gavin Barraclough
  barraclo...@apple.com
   Subject: Re: [webkit-dev] want to port JIT to
  MIPS, any coworker or  
   any hint?
   To: last...@yahoo.com
   Date: Tuesday, January 27, 2009, 5:10 AM
   On Jan 26, 2009, at 11:09 AM, x yz wrote:
  
   Gavin,
   Thanks, I really need to learn fast.
   Where can I find more on WREC or its
 spec?
  
   WREC is WebKit's regular expression JIT. 
 The
  spec it
   is implementing is the regular expression
 syntax
  described
   in ECMA-262.
  
   Which part of webkit is WREC? I just see
 all
  assembler
   codes are in assembler and
 jit and
  wonder
   whether I can just change them rather then
 change
  WREC.
  
   WebKit contains two separate JITs, one for
 the
  JavaScript
   language (in the 'jit' directory),
 one for
   JavaScript's regular expression language
 (in
  the
   'wrec' directory).  Both JITs make
 use of
  the same
   assembler to emit code.  WREC is a much
 smaller,
  simpler
   JIT, which is why I suggest starting by
 looking at
  this, but
   either JIT can be enabled independently of
 the
  other.
  
   Foresee SSE set may be a problem as MIPS
 has
  no SSE.
  
   WREC does not use SSE, and I believe all JIT
 code
  generated
   by the main JS JIT is guarded by the a
  configuration switch,
   JIT_OPTIMIZE_ARITHMETIC – this can be
 disabled
  in
   Platform.h.
  
   Sun's link for The JIT Compiler
  Interface
   Specification not valid anymore.
  
   Our JIT is all our own code, and written from
  scratch, so
   I'm not sure this documentation would
 help
  you.
  
   Good luck,
   G.
  
  
   MacroAssembler::breakpoint() is just int3
  which I know

Re: [webkit-dev] want to port JIT to MIPS - when WREC/JIT enabled?

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 barraclo...@apple.com wrote:

 From: Gavin Barraclough barraclo...@apple.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base
 To: last...@yahoo.com
 Cc: WebKit Development webkit-dev@lists.webkit.org
 Date: Saturday, February 7, 2009, 7:08 AM
 On Feb 6, 2009, at 2:52 PM, x yz wrote:
 
  1.what's the meaning of ALTERNATE_JSIMMEDIATE and
 slow case?
 
 On x86-64 we use a different implementation of the class
 JSImmediate.  See JSImmediate.h.
 Re 'slow case', in the JIT code generation is
 performed as two passes over the bytecode – see
 JIT::privateCompileMainPass and
 JIT::privateCompileSlowCases.
 
  2.how come the following code can use ECX as base
 register?
  load32(Address(X86::ecx, FIELD_OFFSET(Structure,
 m_typeInfo.m_flags)), X86::ecx);
  if the X86::ecx just means its value 1 in ModR/M, does
 it means [BX+DI]?
 
 I think you're looking at the old 16-bit addressing
 mode tables; 32/64-bit x86 can happily encode ecx as a base
 register.  If you're looking at the Intel IA-32 manual
 volume 2, see table 2-2 on the next page.
 
  3. can anybody help me on my previous questions? does
 JIT support floating point?
 
 Yes, some.  See JITArithmetic.cpp.
 
  cheers,
 G.


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


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

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 deuxliq...@yahoo.com wrote:

 From: nguyen hai -cuncon deuxliq...@yahoo.com
 Subject: [webkit-dev] How to build webkit on Linux?
 To: webkit-dev@lists.webkit.org
 Date: Thursday, February 12, 2009, 11:49 AM
 Hi all,I run Cygwin as if it is a pseudo Linux environment
 to build webkit.I have had some problems that I posted
 webkit-...@list.webkit.org during using Cygwin. I think the
 pseudo Linux is not so good as actual Linux. So I installed
 Fedora 9 into my computer.But, I wonder if how I install
 Visual Studio 2005 on Linux?If there is not Visual Studio,
 can webkit run ?Hai
 
 
   Bạn sẽ làm gì khi cuộc đời không cho
 bạn cơ hội? Câu trả lời từ những người đã
 trải qua những thăng trầm trong cuộc sống.
 http://vn.answers.yahoo.com___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


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


Re: [webkit-dev] want to port JIT to MIPS - using X86::ecx as base

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 last...@yahoo.com wrote:

 From: x yz last...@yahoo.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS - IEEE ques
 To: Gavin Barraclough barraclo...@apple.com, WebKit Development 
 webkit-dev@lists.webkit.org
 Date: Tuesday, February 3, 2009, 9:08 AM
 1. Thanks for more info. Although X86 Linux gcc uses
 regparam(3), I think MIPS ABI always asks $a0~a3/@v0~v1 for
 i/o?
 2. It seems I can get rid of 64bit OP if
 JIT_OPTIMIZE_ARITHMETIC and 
 ALTERNATE_JSIMMEDIATE are both disabled? 
 3. is it ALTERNATE_JSIMMEDIATE for ecma-262?
 4. does JIT support floating point? if yes why it is not
 under jit/asm?
 rgds
 joe
 
 --- On Wed, 1/28/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to MIPS,
 any coworker or any hint?
  To: last...@yahoo.com
  Date: Wednesday, January 28, 2009, 4:55 PM
  On Jan 27, 2009, at 10:58 PM, x yz wrote:
  
   Gavin,
   last night I saw WREC when I search X86, and
 realized
  many places  
   need to be touched. Your reply give more info and
  really help.  
   Thanks a lot.
  
   In Generator::generateEnter(), there is comment
  On gcc the function  
   is regparm(3)..., how to understand that?
  
  WREC JIT generates a function with a C calling
 convention
  that  
  implements the regular expression.  The entry and exit
 from
  the  
  function are generated by the generateEnter() and
  generateReturn*()  
  methods.  On OS X x86, the JIT generated function
  implements a  
  regparm(3) calling convention (see WREC.h, the
 generated
  code is  
  called through a CompiledRegExp function pointer).
  
   The function has no argument, why we peek four
  arguments from  
   stack(input,output,length,index)?
  
  These calls are not peeking values from the stack at
 the
  time they are  
  called; they are emitting JIT code that will will read
  values from the  
  stack, when the JIT function has been generated and is
 run.
   The JIT  
  generated regular expression function is passed these
 four
  arguments  
  (again see WREC.h).
  
  As a note, you're best directing these emails at
 the
  webkit-dev list  
  in future, that way other people will also be able to
 help
  you out.
  
  cheers,
  G.
  
  
  
   rgds
   joe
  
  
   --- On Tue, 1/27/09, Gavin Barraclough
  barraclo...@apple.com wrote:
  
   From: Gavin Barraclough
  barraclo...@apple.com
   Subject: Re: [webkit-dev] want to port JIT to
  MIPS, any coworker or  
   any hint?
   To: last...@yahoo.com
   Date: Tuesday, January 27, 2009, 5:10 AM
   On Jan 26, 2009, at 11:09 AM, x yz wrote:
  
   Gavin,
   Thanks, I really need to learn fast.
   Where can I find more on WREC or its
 spec?
  
   WREC is WebKit's regular expression JIT. 
 The
  spec it
   is implementing is the regular expression
 syntax
  described
   in ECMA-262.
  
   Which part of webkit is WREC? I just see
 all
  assembler
   codes are in assembler and
 jit and
  wonder
   whether I can just change them rather then
 change
  WREC.
  
   WebKit contains two separate JITs, one for
 the
  JavaScript
   language (in the 'jit' directory),
 one for
   JavaScript's regular expression language
 (in
  the
   'wrec' directory).  Both JITs make
 use of
  the same
   assembler to emit code.  WREC is a much
 smaller,
  simpler
   JIT, which is why I suggest starting by
 looking at
  this, but
   either JIT can be enabled independently of
 the
  other.
  
   Foresee SSE set may be a problem as MIPS
 has
  no SSE.
  
   WREC does not use SSE, and I believe all JIT
 code
  generated
   by the main JS JIT is guarded by the a
  configuration switch,
   JIT_OPTIMIZE_ARITHMETIC – this can be
 disabled
  in
   Platform.h.
  
   Sun's link for The JIT Compiler
  Interface
   Specification not valid anymore.
  
   Our JIT is all our own code, and written from
  scratch, so
   I'm not sure this documentation would
 help
  you.
  
   Good luck,
   G.
  
  
   MacroAssembler::breakpoint() is just int3
  which I know
   used as debug int in X86. I'll see which
 one
  used in gnu
   mips.
   joe
  
  
  
   --- On Sun, 1/25/09, Gavin Barraclough
   barraclo...@apple.com wrote:
  
   From: Gavin Barraclough
   barraclo...@apple.com
   Subject: Re: [webkit-dev] want to
 port JIT
  to
   MIPS, any coworker or any hint?
   To: WebKit Development
   webkit-dev@lists.webkit.org
   Date: Sunday, January 25, 2009, 5:34
 PM
   On Jan 24, 2009, at 8:36 PM, x yz
 wrote:
  
   Just build webkit on XP using
 cgywin,
  not
   tested yet.
   I want to port to 32bit MIPS, it
 seems I
  need

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

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 barraclo...@apple.com wrote:

 From: Gavin Barraclough barraclo...@apple.com
 Subject: Re: [webkit-dev] want to port JIT to MIPS, any coworker or any hint?
 To: last...@yahoo.com
 Date: Wednesday, January 28, 2009, 4:55 PM
 On Jan 27, 2009, at 10:58 PM, x yz wrote:
 
  Gavin,
  last night I saw WREC when I search X86, and realized
 many places  
  need to be touched. Your reply give more info and
 really help.  
  Thanks a lot.
 
  In Generator::generateEnter(), there is comment
 On gcc the function  
  is regparm(3)..., how to understand that?
 
 WREC JIT generates a function with a C calling convention
 that  
 implements the regular expression.  The entry and exit from
 the  
 function are generated by the generateEnter() and
 generateReturn*()  
 methods.  On OS X x86, the JIT generated function
 implements a  
 regparm(3) calling convention (see WREC.h, the generated
 code is  
 called through a CompiledRegExp function pointer).
 
  The function has no argument, why we peek four
 arguments from  
  stack(input,output,length,index)?
 
 These calls are not peeking values from the stack at the
 time they are  
 called; they are emitting JIT code that will will read
 values from the  
 stack, when the JIT function has been generated and is run.
  The JIT  
 generated regular expression function is passed these four
 arguments  
 (again see WREC.h).
 
 As a note, you're best directing these emails at the
 webkit-dev list  
 in future, that way other people will also be able to help
 you out.
 
 cheers,
 G.
 
 
 
  rgds
  joe
 
 
  --- On Tue, 1/27/09, Gavin Barraclough
 barraclo...@apple.com wrote:
 
  From: Gavin Barraclough
 barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT to
 MIPS, any coworker or  
  any hint?
  To: last...@yahoo.com
  Date: Tuesday, January 27, 2009, 5:10 AM
  On Jan 26, 2009, at 11:09 AM, x yz wrote:
 
  Gavin,
  Thanks, I really need to learn fast.
  Where can I find more on WREC or its spec?
 
  WREC is WebKit's regular expression JIT.  The
 spec it
  is implementing is the regular expression syntax
 described
  in ECMA-262.
 
  Which part of webkit is WREC? I just see all
 assembler
  codes are in assembler and jit and
 wonder
  whether I can just change them rather then change
 WREC.
 
  WebKit contains two separate JITs, one for the
 JavaScript
  language (in the 'jit' directory), one for
  JavaScript's regular expression language (in
 the
  'wrec' directory).  Both JITs make use of
 the same
  assembler to emit code.  WREC is a much smaller,
 simpler
  JIT, which is why I suggest starting by looking at
 this, but
  either JIT can be enabled independently of the
 other.
 
  Foresee SSE set may be a problem as MIPS has
 no SSE.
 
  WREC does not use SSE, and I believe all JIT code
 generated
  by the main JS JIT is guarded by the a
 configuration switch,
  JIT_OPTIMIZE_ARITHMETIC – this can be disabled
 in
  Platform.h.
 
  Sun's link for The JIT Compiler
 Interface
  Specification not valid anymore.
 
  Our JIT is all our own code, and written from
 scratch, so
  I'm not sure this documentation would help
 you.
 
  Good luck,
  G.
 
 
  MacroAssembler::breakpoint() is just int3
 which I know
  used as debug int in X86. I'll see which one
 used in gnu
  mips.
  joe
 
 
 
  --- On Sun, 1/25/09, Gavin Barraclough
  barraclo...@apple.com wrote:
 
  From: Gavin Barraclough
  barraclo...@apple.com
  Subject: Re: [webkit-dev] want to port JIT
 to
  MIPS, any coworker or any hint?
  To: WebKit Development
  webkit-dev@lists.webkit.org
  Date: Sunday, January 25, 2009, 5:34 PM
  On Jan 24, 2009, at 8:36 PM, x yz wrote:
 
  Just build webkit on XP using cgywin,
 not
  tested yet.
  I want to port to 32bit MIPS, it seems I
 need to
  touch JIT
  and rewrite assembler folder.
 
  Once you have the bytecode interpreter up
 and
  running on
  MIPS, I'd recommend starting by just
 trying to
  port WREC
  (the regular expression JIT).  This is a
 good
  starting point
  because it utilizes a smaller subset of
 the
  MacroAssembler
  interface, and has a much simpler
 interface to C
  code (JIT
  code is called with C calling conventions,
 and no
  callbacks
  are made into C from the JIT generated
 code).
 
  Any document there on
 javascripcore/assembler?
  I also
  want a smart way to make sure output is
 correct.
 
  A very simple way to validate you are
 generating
  the
  correct code is to simply force the JIT to
 insert
  a
  breakpoint (i.e. use
 MacroAssembler::breakpoint())
  at the
  head of the function you are generating,
 then run
  jsc under
  a debugger, and when it hits

[webkit-dev] want to port JIT to MIPS, any coworker or any hint?

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