Message from discussion
x32 ABI support
Received: by 10.66.84.202 with SMTP id b10mr1468716paz.43.1350082792167;
Fri, 12 Oct 2012 15:59:52 -0700 (PDT)
X-BeenThere: v8-users@googlegroups.com
Received: by 10.68.194.202 with SMTP id hy10ls12396663pbc.0.gmail; Fri, 12 Oct
2012 15:59:49 -0700 (PDT)
Received: by 10.66.85.130 with SMTP id h2mr1359258paz.8.1350082789561;
Fri, 12 Oct 2012 15:59:49 -0700 (PDT)
Received: by 10.66.85.130 with SMTP id h2mr1359257paz.8.1350082789545;
Fri, 12 Oct 2012 15:59:49 -0700 (PDT)
Return-Path: <phajdan...@gmail.com>
Received: from mail-pb0-f45.google.com (mail-pb0-f45.google.com [209.85.160.45])
by gmr-mx.google.com with ESMTPS id nt8si2333303pbb.1.2012.10.12.15.59.49
(version=TLSv1/SSLv3 cipher=OTHER);
Fri, 12 Oct 2012 15:59:49 -0700 (PDT)
Received-SPF: pass (google.com: domain of phajdan...@gmail.com designates 209.85.160.45 as permitted sender) client-ip=209.85.160.45;
Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of phajdan...@gmail.com designates 209.85.160.45 as permitted sender) smtp.mail=phajdan...@gmail.com; dkim=pass header...@gmail.com
Received: by mail-pb0-f45.google.com with SMTP id rp2so3254774pbb.4
for <v8-users@googlegroups.com>; Fri, 12 Oct 2012 15:59:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:sender:in-reply-to:references:from:date
:x-google-sender-auth:message-id:subject:to:content-type;
bh=11nPYBU9fJ2Mqx4r4yS68seG93HIVMxikTvb2LWotbc=;
b=ckCZKp7qBC8NM+51p0/c1T7HvLnzfpSgI5gBVytDX2J8XD52SuQazfHY/bp+/d4HkP
af1APVsHOMfnfFjnbn3x8/pu29VTokY6PFTJd+TTbNDpdzGR7X8l0Kj5NNfjlDecq+82
QJDTrRmcvRnQRG6sHK2z6g9Oxw9YdkND0mt0h3Lsab9qDs0Mo8M03xauiJZQKdGtqqsu
Hk1ChlsJmvVou9H59Mo5v9scLEUrKKVWtWEQk/f5Jse4gWGOBqQOAdl64uWQyGzAXcxa
acn2cLYUZZHhthE7qVgDDKOgbWMxPnfQYog3O708N4YVCw1SC5EtL6zCBqlrb1dW54S7
i1uA==
Received: by 10.68.230.232 with SMTP id tb8mr17697439pbc.19.1350082789229;
Fri, 12 Oct 2012 15:59:49 -0700 (PDT)
MIME-Version: 1.0
Sender: phajdan...@gmail.com
Received: by 10.66.248.195 with HTTP; Fri, 12 Oct 2012 15:59:29 -0700 (PDT)
In-Reply-To: <CAKSzg3T-RP9+Yrt2Psfu=nKw_xUdJaM4JTgTBn42O2ubQgv...@mail.gmail.com>
References: <CAATLsPYg9i1U6ZN8jvye7E5AWKp5U21G1_ubo9+P0=kHXgS...@mail.gmail.com>
<CAKSzg3TRUjtQfZzK29MJ+tSHZbqf6oEpTNfOr01cDC-fuME...@mail.gmail.com>
<CAATLsPYbv10Ec8UOrtSCsd8=hzgxrHAnOr+r+XLqr93MvxT...@mail.gmail.com> <CAKSzg3T-RP9+Yrt2Psfu=nKw_xUdJaM4JTgTBn42O2ubQgv...@mail.gmail.com>
From: =?UTF-8?B?UGF3ZcWCIEhhamRhbiwgSnIu?= <phajdan...@chromium.org>
Date: Sat, 13 Oct 2012 00:59:29 +0200
Message-ID: <CAATLsPbzG+qweycq3C9c4Je-HnFVGbLqLb2gC+V39KFB_0q...@mail.gmail.com>
Subject: Re: [v8-users] x32 ABI support
To: v8-users@googlegroups.com
Content-Type: multipart/alternative; boundary=047d7b339c9311c5fe04cbe4a500
--047d7b339c9311c5fe04cbe4a500
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Fri, Oct 5, 2012 at 4:11 PM, Jakob Kummerow <jkumme...@chromium.org>wrot=
e:
> The obvious alternative is a third-party maintained port in a separate
> repository that tracks V8, as our MIPS port is currently doing it (
> https://github.com/paul99/v8m-rb). This model can work with or without
> upstreaming of the changes, but either way with a clear statement that th=
e
> core V8 team does not commit to making sure the port works and is up to
> date.
Got it. Just in case, for other people reading it, I would rather not make
such a port a part of the Gentoo package and stay as close as possible to
v8 upstream.
>
>>
>>> The reason is that V8 is not just any C++ program which you can simply
>>> compile for x32 -- it's actually a compiler of its own and emits native
>>> code, so it has to know about registers, machine instructions, calling
>>> conventions and all the other stuff that differentiates x32 from ia32 a=
nd
>>> x64. AFAIK x32 and ia32 are incompatible enough that V8's ia32 port wil=
l
>>> probably just crash on an x32 system (I'm kind of surprised that it
>>> compiles at all).
>>>
>>
>> FYI, I ran ia32 d8 on that x32 system and on simple cases like "a =3D 8"=
or
>> "for (a =3D 0; a < 10; a++);" it didn't crash. Anyway, trying to combine
>> resulting v8 shared library with x32 ABI binaries would indeed cause
>> trouble.
>>
>
> Hm... I would have expected the interaction of assembly stubs and C++
> compiled code to be broken/crashy right inside V8. Maybe the ia32 and x32
> calling conventions are more similar than I thought (haven't spent time
> with the technical specification yet). Does the test suite ("make
> ia32.release.check TESTJOBS=3D-j4" or whatever many cores you have) pass?=
Do
> Chromium and/or node.js work on x32? There is no way the ia32 version of =
V8
> will make use of x32's benefits (more registers, instructions and so on),
> but if it happens to work without obvious errors, you could simply make i=
t
> available to users running x32 systems, as it would be better than nothin=
g
> :-)
>
make ia32.release.check succeeded on my x32 system. Note that I haven't
tested with Chromium or any other reverse dependencies of v8, and I'd
expect problems there (those apps would either actually mix x32 and x86
calling conventions which would obviously lead to weird behavior, or would
just be built for x86 platform, which means nothing x32-specific at all).
>
>
>>
>>> On Tue, Oct 2, 2012 at 3:40 PM, Pawe=C5=82 Hajdan, Jr. <
>>> phajdan...@chromium.org> wrote:
>>>
>>>> Is v8 expected to support x32 ABI? I tried "make native" (using v8
>>>> bleeding_edge, r12652) on an x32 ABI Gentoo install, and it failed wit=
h
>>>> e.g.:
>>>>
>>>> In file included from ../src/conversions-inl.h:35:0,
>>>> from ../src/conversions.cc:32:
>>>> ../src/globals.h:243:33: warning: overflow in implicit constant
>>>> conversion [-Woverflow]
>>>> ../src/globals.h:244:38: warning: large integer implicitly truncated t=
o
>>>> unsigned type [-Woverflow]
>>>> ../src/atomicops_internals_x86_gcc.h: In function 'void
>>>> v8::internal::Acquire_Store(volatile Atomic64*, v8::internal::Atomic64=
)':
>>>> ../src/atomicops_internals_x86_gcc.h:222:13: error: redefinition of
>>>> 'void v8::internal::Acquire_Store(volatile Atomic64*,
>>>> v8::internal::Atomic64)'
>>>> ../src/atomicops_internals_x86_gcc.h:122:13: error: 'void
>>>> v8::internal::Acquire_Store(volatile Atomic32*, v8::internal::Atomic32=
)'
>>>> previously defined here
>>>> ../src/atomicops_internals_x86_gcc.h: In function 'void
>>>> v8::internal::Release_Store(volatile Atomic64*, v8::internal::Atomic64=
)':
>>>> ../src/atomicops_internals_x86_gcc.h:227:13: error: redefinition of
>>>> 'void v8::internal::Release_Store(volatile Atomic64*,
>>>> v8::internal::Atomic64)'
>>>> ../src/atomicops_internals_x86_gcc.h:149:13: error: 'void
>>>> v8::internal::Release_Store(volatile Atomic32*, v8::internal::Atomic32=
)'
>>>> previously defined here
>>>> ../src/atomicops_internals_x86_gcc.h: In function
>>>> 'v8::internal::Atomic64 v8::internal::NoBarrier_Load(const volatile
>>>> Atomic64*)':
>>>> ../src/atomicops_internals_x86_gcc.h:248:17: error: redefinition of
>>>> 'v8::internal::Atomic64 v8::internal::NoBarrier_Load(const volatile
>>>> Atomic64*)'
>>>> ../src/atomicops_internals_x86_gcc.h:155:17: error:
>>>> 'v8::internal::Atomic32 v8::internal::NoBarrier_Load(const volatile
>>>> Atomic32*)' previously defined here
>>>> ../src/atomicops_internals_x86_gcc.h: In function
>>>> 'v8::internal::Atomic64 v8::internal::Acquire_Load(const volatile
>>>> Atomic64*)':
>>>> ../src/atomicops_internals_x86_gcc.h:252:17: error: redefinition of
>>>> 'v8::internal::Atomic64 v8::internal::Acquire_Load(const volatile
>>>> Atomic64*)'
>>>> ../src/atomicops_internals_x86_gcc.h:159:17: error:
>>>> 'v8::internal::Atomic32 v8::internal::Acquire_Load(const volatile
>>>> Atomic32*)' previously defined here
>>>> ../src/atomicops_internals_x86_gcc.h: In function
>>>> 'v8::internal::Atomic64 v8::internal::Release_Load(const volatile
>>>> Atomic64*)':
>>>> ../src/atomicops_internals_x86_gcc.h:260:17: error: redefinition of
>>>> 'v8::internal::Atomic64 v8::internal::Release_Load(const volatile
>>>> Atomic64*)'
>>>> ../src/atomicops_internals_x86_gcc.h:166:17: error:
>>>> 'v8::internal::Atomic32 v8::internal::Release_Load(const volatile
>>>> Atomic32*)' previously defined here
>>>> ../src/atomicops_internals_x86_gcc.h: In function
>>>> 'v8::internal::Atomic64 v8::internal::Acquire_CompareAndSwap(volatile
>>>> Atomic64*, v8::internal::Atomic64, v8::internal::Atomic64)':
>>>> ../src/atomicops_internals_x86_gcc.h:265:17: error: redefinition of
>>>> 'v8::internal::Atomic64 v8::internal::Acquire_CompareAndSwap(volatile
>>>> Atomic64*, v8::internal::Atomic64, v8::internal::Atomic64)'
>>>> ../src/atomicops_internals_x86_gcc.h:94:17: error:
>>>> 'v8::internal::Atomic32 v8::internal::Acquire_CompareAndSwap(volatile
>>>> Atomic32*, v8::internal::Atomic32, v8::internal::Atomic32)' previously
>>>> defined here
>>>> ../src/atomicops_internals_x86_gcc.h: In function
>>>> 'v8::internal::Atomic64 v8::internal::Release_CompareAndSwap(volatile
>>>> Atomic64*, v8::internal::Atomic64, v8::internal::Atomic64)':
>>>> ../src/atomicops_internals_x86_gcc.h:275:17: error: redefinition of
>>>> 'v8::internal::Atomic64 v8::internal::Release_CompareAndSwap(volatile
>>>> Atomic64*, v8::internal::Atomic64, v8::internal::Atomic64)'
>>>> ../src/atomicops_internals_x86_gcc.h:104:17: error:
>>>> 'v8::internal::Atomic32 v8::internal::Release_CompareAndSwap(volatile
>>>> Atomic32*, v8::internal::Atomic32, v8::internal::Atomic32)' previously
>>>> defined here
>>>>
>>>> On the other hand, "make ia32.release" succeeded, but I'm not sure if
>>>> that's what should be done on x32.
>>>>
>>>> For more info about this issue on Gentoo, see
>>>> https://bugs.gentoo.org/show_bug.cgi?id=3D423815
>>>>
>>>> In case you wonder what x32 ABI is all about, please take a look at
>>>> http://en.wikipedia.org/wiki/X32_ABI and
>>>> https://sites.google.com/site/x32abi/
>>>>
>>>> I have a working x32 install and can contribute patches, but any
>>>> guidance and feedback is welcome.
>>>>
>>>> --
>>>> v8-users mailing list
>>>> v8-users@googlegroups.com
>>>> http://groups.google.com/group/v8-users
>>>
>>>
>>> --
>>> v8-users mailing list
>>> v8-users@googlegroups.com
>>> http://groups.google.com/group/v8-users
>>
>>
>> --
>> v8-users mailing list
>> v8-users@googlegroups.com
>> http://groups.google.com/group/v8-users
>>
>
> --
> v8-users mailing list
> v8-users@googlegroups.com
> http://groups.google.com/group/v8-users
>
--047d7b339c9311c5fe04cbe4a500
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Fri, Oct 5, 2012 at 4:11 PM, Jakob Kummerow <span dir=3D"ltr"><<a hre=
f=3D"mailto:jkumme...@chromium.org" target=3D"_blank">jkumme...@chromium.or=
g</a>></span> wrote:<br><div class=3D"gmail_quote"><blockquote class=3D"=
gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-=
left:1ex">
The obvious alternative is a third-party maintained port in a separate repo=
sitory that tracks V8, as our MIPS port is currently doing it (<a href=3D"h=
ttps://github.com/paul99/v8m-rb" target=3D"_blank">https://github.com/paul9=
9/v8m-rb</a>). This model can work with or without upstreaming of the chang=
es, but either way with a clear statement that the core V8 team does not co=
mmit to making sure the port works and is up to date.</blockquote>
<div><br></div><div>Got it. Just in case, for other people reading it, I wo=
uld rather not make such a port a part of the Gentoo package and stay as cl=
ose as possible to v8 upstream.</div><div>=C2=A0</div><blockquote class=3D"=
gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-=
left:1ex">
<div class=3D"gmail_quote"><div class=3D"im"><blockquote class=3D"gmail_quo=
te" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"=
><div class=3D"gmail_quote"><div><div>=C2=A0</div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left=
:1ex">
<div>The reason is that V8 is not just any C++ program which you can simply=
compile for x32 -- it's actually a compiler of its own and emits nativ=
e code, so it has to know about registers, machine instructions, calling co=
nventions and all the other stuff that differentiates x32 from ia32 and x64=
. AFAIK x32 and ia32 are incompatible enough that V8's ia32 port will p=
robably just crash on an x32 system (I'm kind of surprised that it comp=
iles at all).</div>
</blockquote><div><br></div></div><div>FYI, I ran ia32 d8 on that x32 syste=
m and on simple cases like "a =3D 8" or "for (a =3D 0; a <=
; 10; a++);" it didn't crash. Anyway, trying to combine resulting =
v8 shared library with x32 ABI binaries would indeed cause trouble.</div>
</div></blockquote><div><br></div></div><div>Hm... I would have expected th=
e interaction of assembly stubs and C++ compiled code to be broken/crashy r=
ight inside V8. Maybe the ia32 and x32 calling conventions are more similar=
than I thought (haven't spent time with the technical specification ye=
t). Does the test suite ("make ia32.release.check TESTJOBS=3D-j4"=
or whatever many cores you have) pass? Do Chromium and/or node.js work on =
x32? There is no way the ia32 version of V8 will make use of x32's bene=
fits (more registers, instructions and so on), but if it happens to work wi=
thout obvious errors, you could simply make it available to users running x=
32 systems, as it would be better than nothing :-)</div>
</div></blockquote><div><br></div><div>make ia32.release.check succeeded on=
my x32 system. Note that I haven't tested with Chromium or any other r=
everse dependencies of v8, and I'd expect problems there (those apps wo=
uld either actually mix x32 and x86 calling conventions which would obvious=
ly lead to weird behavior, or would just be built for x86 platform, which m=
eans nothing x32-specific at all).</div>
<div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex"><div class=3D"gmail_quote">=
<div><div class=3D"h5">
<div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex=
;border-left:1px #ccc solid;padding-left:1ex"><div class=3D"gmail_quote"><d=
iv><div>
<div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class=3D"gmail_qu=
ote"><div><div>On Tue, Oct 2, 2012 at 3:40 PM, Pawe=C5=82 Hajdan, Jr. <span=
dir=3D"ltr"><<a href=3D"mailto:phajdan...@chromium.org" target=3D"_blan=
k">phajdan...@chromium.org</a>></span> wrote:<br>
</div></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex"><div><div>
Is v8 expected to support x32 ABI? I tried "make native" (using v=
8 bleeding_edge, r12652) on an x32 ABI Gentoo install, and it failed with e=
.g.:<div><br></div><div><div>In file included from ../src/conversions-inl.h=
:35:0,</div>
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0from ../=
src/conversions.cc:32:</div><div>../src/globals.h:243:33: warning: overflow=
in implicit constant conversion [-Woverflow]</div><div>../src/globals.h:24=
4:38: warning: large integer implicitly truncated to unsigned type [-Woverf=
low]</div>
<div>../src/atomicops_internals_x86_gcc.h: In function 'void v8::intern=
al::Acquire_Store(volatile Atomic64*, v8::internal::Atomic64)':</div><d=
iv>../src/atomicops_internals_x86_gcc.h:222:13: error: redefinition of '=
;void v8::internal::Acquire_Store(volatile Atomic64*, v8::internal::Atomic6=
4)'</div>
<div>../src/atomicops_internals_x86_gcc.h:122:13: error: 'void v8::inte=
rnal::Acquire_Store(volatile Atomic32*, v8::internal::Atomic32)' previo=
usly defined here</div><div>../src/atomicops_internals_x86_gcc.h: In functi=
on 'void v8::internal::Release_Store(volatile Atomic64*, v8::internal::=
Atomic64)':</div>
<div>../src/atomicops_internals_x86_gcc.h:227:13: error: redefinition of &#=
39;void v8::internal::Release_Store(volatile Atomic64*, v8::internal::Atomi=
c64)'</div><div>../src/atomicops_internals_x86_gcc.h:149:13: error: =
9;void v8::internal::Release_Store(volatile Atomic32*, v8::internal::Atomic=
32)' previously defined here</div>
<div>../src/atomicops_internals_x86_gcc.h: In function 'v8::internal::A=
tomic64 v8::internal::NoBarrier_Load(const volatile Atomic64*)':</div><=
div>../src/atomicops_internals_x86_gcc.h:248:17: error: redefinition of =
9;v8::internal::Atomic64 v8::internal::NoBarrier_Load(const volatile Atomic=
64*)'</div>
<div>../src/atomicops_internals_x86_gcc.h:155:17: error: 'v8::internal:=
:Atomic32 v8::internal::NoBarrier_Load(const volatile Atomic32*)' previ=
ously defined here</div><div>../src/atomicops_internals_x86_gcc.h: In funct=
ion 'v8::internal::Atomic64 v8::internal::Acquire_Load(const volatile A=
tomic64*)':</div>
<div>../src/atomicops_internals_x86_gcc.h:252:17: error: redefinition of &#=
39;v8::internal::Atomic64 v8::internal::Acquire_Load(const volatile Atomic6=
4*)'</div><div>../src/atomicops_internals_x86_gcc.h:159:17: error: '=
;v8::internal::Atomic32 v8::internal::Acquire_Load(const volatile Atomic32*=
)' previously defined here</div>
<div>../src/atomicops_internals_x86_gcc.h: In function 'v8::internal::A=
tomic64 v8::internal::Release_Load(const volatile Atomic64*)':</div><di=
v>../src/atomicops_internals_x86_gcc.h:260:17: error: redefinition of '=
v8::internal::Atomic64 v8::internal::Release_Load(const volatile Atomic64*)=
'</div>
<div>../src/atomicops_internals_x86_gcc.h:166:17: error: 'v8::internal:=
:Atomic32 v8::internal::Release_Load(const volatile Atomic32*)' previou=
sly defined here</div><div>../src/atomicops_internals_x86_gcc.h: In functio=
n 'v8::internal::Atomic64 v8::internal::Acquire_CompareAndSwap(volatile=
Atomic64*, v8::internal::Atomic64, v8::internal::Atomic64)':</div>
<div>../src/atomicops_internals_x86_gcc.h:265:17: error: redefinition of &#=
39;v8::internal::Atomic64 v8::internal::Acquire_CompareAndSwap(volatile Ato=
mic64*, v8::internal::Atomic64, v8::internal::Atomic64)'</div><div>
../src/atomicops_internals_x86_gcc.h:94:17: error: 'v8::internal::Atomi=
c32 v8::internal::Acquire_CompareAndSwap(volatile Atomic32*, v8::internal::=
Atomic32, v8::internal::Atomic32)' previously defined here</div><div>
../src/atomicops_internals_x86_gcc.h: In function 'v8::internal::Atomic=
64 v8::internal::Release_CompareAndSwap(volatile Atomic64*, v8::internal::A=
tomic64, v8::internal::Atomic64)':</div><div>../src/atomicops_internals=
_x86_gcc.h:275:17: error: redefinition of 'v8::internal::Atomic64 v8::i=
nternal::Release_CompareAndSwap(volatile Atomic64*, v8::internal::Atomic64,=
v8::internal::Atomic64)'</div>
<div>../src/atomicops_internals_x86_gcc.h:104:17: error: 'v8::internal:=
:Atomic32 v8::internal::Release_CompareAndSwap(volatile Atomic32*, v8::inte=
rnal::Atomic32, v8::internal::Atomic32)' previously defined here</div>
</div><div><br></div><div>On the other hand, "make ia32.release" =
succeeded, but I'm not sure if that's what should be done on x32.</=
div><div><br></div><div>For more info about this issue on Gentoo, see=C2=A0=
<a href=3D"https://bugs.gentoo.org/show_bug.cgi?id=3D423815" target=3D"_bla=
nk">https://bugs.gentoo.org/show_bug.cgi?id=3D423815</a></div>
<div><br></div><div>In case you wonder what x32 ABI is all about, please ta=
ke a look at=C2=A0<a href=3D"http://en.wikipedia.org/wiki/X32_ABI" target=
=3D"_blank">http://en.wikipedia.org/wiki/X32_ABI</a> and=C2=A0<a href=3D"ht=
tps://sites.google.com/site/x32abi/" target=3D"_blank">https://sites.google=
.com/site/x32abi/</a></div>
<div><br></div><div>I have a working x32 install and can contribute patches=
, but any guidance and feedback is welcome.</div></div></div><span><font co=
lor=3D"#888888"><span><font color=3D"#888888">
<p></p>
-- <br>
v8-users mailing list<br>
<a href=3D"mailto:v8-users@googlegroups.com" target=3D"_blank">v8-users@goo=
glegroups.com</a><br>
<a href=3D"http://groups.google.com/group/v8-users" target=3D"_blank">http:=
//groups.google.com/group/v8-users</a></font></span></font></span></blockqu=
ote></div><span><font color=3D"#888888"><br></font></span></div>
<span><font color=3D"#888888">
<p></p>
-- <br>
v8-users mailing list<br>
<a href=3D"mailto:v8-users@googlegroups.com" target=3D"_blank">v8-users@goo=
glegroups.com</a><br>
<a href=3D"http://groups.google.com/group/v8-users" target=3D"_blank">http:=
//groups.google.com/group/v8-users</a></font></span></blockquote></div></di=
v></div><div><div><br>
<p></p>
-- <br>
v8-users mailing list<br>
<a href=3D"mailto:v8-users@googlegroups.com" target=3D"_blank">v8-users@goo=
glegroups.com</a><br>
<a href=3D"http://groups.google.com/group/v8-users" target=3D"_blank">http:=
//groups.google.com/group/v8-users</a></div></div></blockquote></div></div>=
</div><div class=3D"HOEnZb"><div class=3D"h5"><br>
<p></p>
-- <br>
v8-users mailing list<br>
<a href=3D"mailto:v8-users@googlegroups.com" target=3D"_blank">v8-users@goo=
glegroups.com</a><br>
<a href=3D"http://groups.google.com/group/v8-users" target=3D"_blank">http:=
//groups.google.com/group/v8-users</a></div></div></blockquote></div><br>
--047d7b339c9311c5fe04cbe4a500--