Hi Paul,

Thanks again.
I will definetly consider the option of porting this to mips Big-endian
architecture.
But only thing worrying me now is the size of v8 library which is around 5
MB after removing debug option.
Such a big size is not suitable for the embedded devices.
Have you also seen the same observation in terms of library size.
Is there any way to optimize this?

Thanks & Regards,
Nilima



On Thu, Jul 15, 2010 at 9:35 AM, Paul Lind <[email protected]> wrote:

> Hi Nilima -
>
> It is hard to estimate the time/complexity for this. There are a few known
> areas that require code-generation fixes for big-endian. Search for 'endian'
> in src/mips/codegen-mips.cc. Fixing those should take a few days or a week.
>
> But as I said before I do not think that v8 has ever been run big-endian.
> That means there are likely to be problems that will only be uncovered by
> trying it and debugging. Very hard to predict the time for that. I would
> guess a month if you know v8, and another month or two if you are starting
> from scratch.
>
> One issue is that v8 is partly implemented in javascript (the native
> functions), and if the natives do not compile and run, then you cannot even
> bring up the shell. It is hard to get the system bootstrapped to the state
> you can debug. Alexandre wrote a nice "simplified shell" that can come up
> without compiling the natives. I was going to remove that stuff, but it may
> be useful when trying big-endian.
>
> Take a look at src/mips/test-mips.cc, src/mips/test-interface-mips.cc & h,
> and compile_mips-test.sh, and the flag "disable_native_files" in
> src/flag-definitions.h
>
>
> I'd just suggest you jump in and give it a try. Maybe it will come up
> without too much trouble.
>
> Per your other questions: the test-suites are very complete, and the wiki
> pages shows how to run them. Please note that v8mips is not passing all the
> tests yet ... we're workin on it. The status page shows our results.
>
> I would guess that we have 3 months of other activity before we would start
> working on big-endian. We still need to pass 100% of tests, improve our
> performance, bring our codebase up to current google codebase, and integrate
> with Chrome. As well as re-start the submission process of our code back to
> google.
>
> Anyway, I hope that you have the interest to jump in and contribute. It is
> a great project, and a lot of fun. If so, we can work out how best to
> collaborate on the github codebase. It might be easiest to just fork the
> project and start. We can merge it back later.
>
> If anyone from the google v8 team has made it this far into this long
> reply, we sure would love to get your feedback on possible big-endian
> issues......
>
> thanks.,
>
> paul
>
>
>
>
> On Jul 14, 2010, at 2:07 AM, Nilima Chavan wrote:
>
> Hi Paul,
>
> Now I am clear about the target thing.
> We were using the mips toolchain which was for Big endian to do the
> compilation. And as you have specified Big endian MIPs porting is not yet
> supported, we were getting compilation errors.
> After I used mips toolchain which was little endian, compilation was
> successful.
>
> We need v8 for our Big endian Targets only.
>
> Since you know the code better, can you please provides us following
> information for porting the same mips code to support Big endian.
> 1. Complexity
> 2. Efforts
> 3. Testing required ( I think we can get this from your web site )
> 4. When you have planned for Big endian porting ( This is required just for
> information )
>
> Thanks & Regards,
> Nilima
>
>
> On Wed, Jul 14, 2010 at 11:19 AM, Nilima Chavan 
> <[email protected]>wrote:
>
>> Hi Paul,
>>
>> Thanks for your detailed response.
>> But now I am bit confused about what do you mean by target.
>>
>> Here is my build procedure:
>> I am building on Linux x86 machine with following environment variables
>> set:
>> export CCPATH=/opt/kenati/mips-kenati-linux-uclibc/bin
>> export CC=$CCPATH/gcc
>> export CXX=$CCPATH/g++
>> export LD=$CCPATH/ld
>> export AR=$CCPATH/ar
>> export RANLIB=$CCPATH/ranlib
>>
>> Build command:
>>
>> scons arch=mips mode=debug library=static sample=shell -j4
>>
>> Output:
>> libv8.a is getting compiled.
>> But giving endianness errors for shell.
>>
>> So I have question here, I am going to use libv8.a with v8cgi and apache.
>> So can I survive currently with just v8 library build. I do not require
>> shell at this point of time.
>>
>> Thanks & Regards,
>> Nilima
>>
>>
>> On Tue, Jul 13, 2010 at 11:32 PM, paul lind <[email protected]> wrote:
>>
>>> Hi Nilima -
>>>
>>> I'll try to answer your questions:
>>>
>>> 1. Alexandre is correct, you must make sure you are using the
>>> 'integration' branch (it is the default).
>>>
>>> 2. Per your command, you built libv8 for arch=mips, but you are trying
>>> to build your shell for the simulator (simulator=mips). You cannot mix
>>> the two. The simulator for local testing on your x86 development
>>> platform, but if you want to build the shell for your target, you must
>>> use a line like:
>>>
>>>    scons arch=mips mode=debug library=static sample=shell -j4
>>>
>>> (note that I left out regexp=interpreted. That is no longer needed,
>>> since we now have the native regular expression compiler working. I
>>> have updated the wiki page
>>> http://wiki.github.com/paul99/v8mips/building-v8mips)
>>>
>>> 3. I see from your build log that it appears that your target is beg-
>>> endian. That is unfortunately, as v8mips does not currently support
>>> big-endian targets. That will get done eventually, but it is low on
>>> our priority list. Is there any way your target can be run in little-
>>> endian mode? (the mips cores are configurable, some target boards are
>>> configurable, some are fixed).
>>>
>>> I know for a fact there are places in the generated code where we make
>>> little-endian assumptions (we have commented these), but I suspect
>>> that there will be more issues, as to my knowledge the whole of v8 has
>>> never been run on a big-endian target.
>>>
>>> 4. I also see that you are using uclibc. I do not know if that will
>>> work, as it has not been tried. We have been using a mips Linux distro
>>> with full glibc (both Debian and Timesys). We are now porting to
>>> Android, which uses bionic.
>>>
>>> 5. The issue you fixed with mcontext.gpregs is just used when
>>> profiling. I have only tried that on Linux 2.6. It is possibly you
>>> just have a problem with kernel-headers, or it may be that your kernel
>>> does not support. In any cause, it will not impact regular operation
>>> of v8, just the profiling option (--prof option to shell).
>>>
>>> I hope this helps,
>>>
>>> paul
>>>
>>> On Jul 13, 2:57 am, Alexandre Rames <[email protected]> wrote:
>>> > Hi,
>>> >
>>> > It has been some time I haven't build it.
>>> > There is something weird with the endianness here. The MIPS build
>>> should use
>>> > the -EL option to build for little endian.
>>> >
>>> > Did you follow the instructions
>>> > here<http://wiki.github.com/paul99/v8mips/building-v8mips>
>>> > ?
>>> > Also you should try to build the "integration" branch. This branch
>>> should
>>> > always compile and work (kind of dev branch).
>>> >
>>> > Alexandre
>>> >
>>> > On Mon, Jul 12, 2010 at 3:26 PM, Nilima Chavan <
>>> [email protected]>wrote:
>>> >
>>> >
>>> >
>>> > > Finally i was able to build the libv8.a successfully with following
>>> > > command line:
>>> > > scons arch=mips mode=debug regexp=interpreted library=static
>>> >
>>> > > Have done following changes in platform-linux.cc
>>> > > #elif V8_HOST_ARCH_MIPS
>>> > >    sample.pc = reinterpret_cast<Address>(mcontext.gpregs[35]);
>>> > >    sample.sp = reinterpret_cast<Address>(mcontext.gpregs[29]);
>>> > >    sample.fp = reinterpret_cast<Address>(mcontext.gpregs[30]);
>>> > > #endif
>>> >
>>> > > But still I am not able to build shell with following command:
>>> > > scons mode=debug simulator=mips regexp=interpreted sample=shell -j4
>>> >
>>> > > It is giving following kind of error:
>>> > > /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../mips-
>>> > > kenati-linux-uclibc/bin/ld: /opt/kenati/lib/gcc/mips-kenati-linux-
>>> > > uclibc/3.4.3/../../../../mips-kenati-linux-uclibc/lib/crt1.o:
>>> compiled
>>> > > for a big endian system and target is little endian
>>> > > /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../mips-
>>> > > kenati-linux-uclibc/bin/ld: /opt/kenati/lib/gcc/mips-kenati-linux-
>>> > > uclibc/3.4.3/../../../../mips-kenati-linux-uclibc/lib/crt1.o:
>>> > > endianness incompatible with that of the selected emulation
>>> > > /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../mips-
>>> > > kenati-linux-uclibc/bin/ld: failed to merge target specific data of
>>> > > file /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../
>>> > > mips-kenati-linux-uclibc/lib/crt1.o
>>> >
>>> > > Please let me know if I need to any kind of environment settings for
>>> > > this too.
>>> >
>>> > > Thanks & Regards,
>>> > > Nilima
>>> >
>>> > > On Jul 12, 5:57 pm, Nilima Chavan <[email protected]> wrote:
>>> > > > Thanks for the info Alexandre.
>>> >
>>> > > > I have downloaded v8 sources from github.
>>> > > > But when I tried to build those sources for mips platform its
>>> giving
>>> > > > compilation error.
>>> > > > I am building the source code on UBuntu 8 (Linux 2.6.24-16-generic
>>> #1
>>> > > > SMP Thu Apr 10 13:23:42 UTC 2008 i686 GNU/Linux).
>>> >
>>> > > > Environment variables are as below:
>>> > > > AR=/opt/kenati/bin/mips_sfp-uclibc-ar
>>> > > > LD=/opt/kenati/bin/mips_sfp-uclibc-ld
>>> > > > CXX=/opt/kenati/bin/mips_sfp-uclibc-g++
>>> > > > CC=/opt/kenati/bin/mips_sfp-uclibc-gcc
>>> > > > RANLIB=/opt/kenati/bin/mips_sfp-uclibc-ranlib
>>> >
>>> > > > Compilation Error:
>>> > > > opt/kenati/bin/mips_sfp-uclibc-g++ -o obj/release/platform-linux.o
>>> -c -
>>> > > > Wall -Werror -W -Wno-unused-parameter -Wnon-virtual-dtor -pedantic
>>> -EL
>>> > > > -mips32r2 -Wa,-mips32r2 -fno-inline -mhard-float -O3 -fomit-frame-
>>> > > > pointer -fdata-sections -ffunction-sections -ansi
>>> -fno-strict-aliasing
>>> > > > -fno-rtti -fno-exceptions -Wall -Werror -W -Wno-unused-parameter
>>> -Wnon-
>>> > > > virtual-dtor -pedantic -EL -mips32r2 -Wa,-mips32r2 -fno-inline
>>> -mhard-
>>> > > > float -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections
>>> -
>>> > > > ansi -fno-strict-aliasing -DV8_TARGET_ARCH_MIPS -
>>> > > > DENABLE_DEBUGGER_SUPPORT -DENABLE_LOGGING_AND_PROFILING -Isrc src/
>>> > > > platform-linux.cc
>>> >
>>> > > > src/platform-linux.cc: In function `void
>>> > > > v8::internal::ProfilerSignalHandler(int, siginfo_t*, void*)':
>>> > > > src/platform-linux.cc:828: error: 'struct mcontext_t' has no member
>>> > > > named 'pc'
>>> > > > src/platform-linux.cc:829: error: 'struct mcontext_t' has no member
>>> > > > named 'gregs'
>>> > > > src/platform-linux.cc:830: error: 'struct mcontext_t' has no member
>>> > > > named 'gregs'
>>> > > > scons: *** [obj/release/platform-linux.o] Error 1
>>> > > > scons: building terminated because of errors.
>>> >
>>> > > > Can anybody from your side help me on this?
>>> > > > Thanks & Regards,
>>> > > > Nilima
>>> >
>>> > > > On Jul 9, 6:39 pm, Alexandre Rames <[email protected]>
>>> wrote:
>>> >
>>> > > > > Hi,
>>> >
>>> > > > > You can find the v8 MIPS repository with the latest code on
>>> github:
>>> > >http://github.com/paul99/v8mips
>>> >
>>> > > > > <http://github.com/paul99/v8mips>Alexandre
>>> >
>>> > > > > On Fri, Jul 9, 2010 at 1:02 PM, Nilima Chavan <
>>> [email protected]
>>> > > >wrote:
>>> >
>>> > > > > > So we can not use v8 JavaScript engine on MIPs platform?
>>> > > > > > Does anybody working on this. Since I see mips directory under
>>> > > > > > Sources. Even SConstruct provides a way to select the
>>> architecture as
>>> > > > > > "mips".
>>> > > > > > If yes can you let us know when the work is expected to get
>>> over.
>>> >
>>> > > > > > Thanks & Regards,
>>> > > > > > Nilima
>>> >
>>> > > > > > On Jul 9, 1:41 am, Erik Corry <[email protected]> wrote:
>>> > > > > > > The MIPS port isn't done.  It doesn't work.
>>> >
>>> > > > > > > Den 8. jul. 2010 14.12 skrev Nilima Chavan <
>>> > > [email protected]>:
>>> >
>>> > > > > > > > When I am trying to build v8 for MIP platform, I am getting
>>> > > following
>>> > > > > > > > errors:
>>> > > > > > > > $  scons simulator=mips
>>> >
>>> > > > > > > > In file included from src/virtual-frame.h:41,
>>> > > > > > > >                 from src/virtual-frame-inl.h:31,
>>> > > > > > > >                 from src/codegen.cc:41:
>>> > > > > > > > src/mips/virtual-frame-mips.h:74: error: 'NumberInfo' has
>>> not
>>> > > been
>>> > > > > > > > declared
>>> > > > > > > > src/mips/virtual-frame-mips.h:366: error: 'NumberInfo' has
>>> not
>>> > > been
>>> > > > > > > > declared
>>> > > > > > > > src/mips/virtual-frame-mips.h:390: error: 'NumberInfo' has
>>> not
>>> > > been
>>> > > > > > > > declared
>>> > > > > > > > src/mips/virtual-frame-mips.h:391: error: 'NumberInfo' has
>>> not
>>> > > been
>>> > > > > > > > declared
>>> > > > > > > > src/mips/virtual-frame-mips.h:74: error: 'NumberInfo' has
>>> not
>>> > > been
>>> > > > > > > > declared
>>> > > > > > > > src/mips/virtual-frame-mips.h:366: error: 'NumberInfo' has
>>> not
>>> > > been
>>> > > > > > > > declared
>>> > > > > > > > In file included from src/virtual-frame-inl.h:36,
>>> > > > > > > >                 from src/codegen.cc:41:
>>> > > > > > > > src/virtual-frame-light-inl.h: In constructor
>>> > > > > > > > 'v8::internal::VirtualFrame::VirtualFrame()':
>>> > > > > > > > src/virtual-frame-light-inl.h:41: error: class
>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named
>>> > > > > > > > 'element_count_'
>>> > > > > > > > src/virtual-frame-light-inl.h:42: error: class
>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named
>>> > > > > > > > 'top_of_stack_state_'
>>> > > > > > > > src/virtual-frame-light-inl.h:42: error: 'NO_TOS_REGISTERS'
>>> was
>>> > > not
>>> > > > > > > > declared in this scope
>>> > > > > > > > src/virtual-frame-light-inl.h:43: error: class
>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named
>>> > > > > > > > 'register_allocation_map_'
>>> > > > > > > > src/virtual-frame-light-inl.h:43: error: no matching
>>> function for
>>> > > call
>>> > > > > > > > to
>>> > > 'v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList()'
>>> > > > > > > > src/zone.h:170: note: candidates are:
>>> > > > > > > > v8::internal::ZoneList<T>::ZoneList(int) [with T =
>>> > > > > > > > v8::internal::FrameElement]
>>> > > > > > > > src/zone.h:166: note:
>>> >
>>> > > v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList(const
>>> > > > > > > > v8::internal::ZoneList<v8::internal::FrameElement>&)
>>> > > > > > > > src/virtual-frame-light-inl.h: In constructor
>>> >
>>> > >
>>> 'v8::internal::VirtualFrame::VirtualFrame(v8::internal::VirtualFrame*)':
>>> > > > > > > > src/virtual-frame-light-inl.h:48: error: class
>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named
>>> > > > > > > > 'element_count_'
>>> > > > > > > > src/virtual-frame-light-inl.h:49: error: class
>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named
>>> > > > > > > > 'top_of_stack_state_'
>>> > > > > > > > src/virtual-frame-light-inl.h:49: error: 'class
>>> > > > > > > > v8::internal::VirtualFrame' has no member named
>>> > > 'top_of_stack_state_'
>>> > > > > > > > src/virtual-frame-light-inl.h:50: error: class
>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named
>>> > > > > > > > 'register_allocation_map_'
>>> > > > > > > > src/virtual-frame-light-inl.h:50: error: 'class
>>> > > > > > > > v8::internal::VirtualFrame' has no member named
>>> > > > > > > > 'register_allocation_map_'
>>> > > > > > > > src/virtual-frame-light-inl.h:50: error: no matching
>>> function for
>>> > > call
>>> > > > > > > > to
>>> > > 'v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList()'
>>> > > > > > > > src/zone.h:170: note: candidates are:
>>> > > > > > > > v8::internal::ZoneList<T>::ZoneList(int) [with T =
>>> > > > > > > > v8::internal::FrameElement]
>>> > > > > > > > src/zone.h:166: note:
>>> >
>>> > > v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList(const
>>> > > > > > > > v8::internal::ZoneList<v8::internal::FrameElement>&)
>>> > > > > > > > src/virtual-frame-light-inl.h: In member function 'bool
>>> > > > > > > >
>>> v8::internal::VirtualFrame::Equals(v8::internal::VirtualFrame*)':
>>> > > > > > > > src/virtual-frame-light-inl.h:55: error:
>>> 'top_of_stack_state_'
>>> > > was not
>>> > > > > > > > declared in this scope
>>> > > > > > > > src/virtual-frame-light-inl.h:55: error: 'class
>>> > > > > > > > v8::internal::VirtualFrame' has no member named
>>> > > 'top_of_stack_state_'
>>> > > > > > > > src/virtual-frame-light-inl.h:56: error:
>>> > > 'register_allocation_map_'
>>> > > > > > > > was not declared in this scope
>>> > > > > > > > src/virtual-frame-light-inl.h:56: error: 'class
>>> > > > > > > > v8::internal::VirtualFrame' has no member named
>>> > > > > > > > 'register_allocation_map_'
>>> > > > > > > > src/codegen.cc: At global scope:
>>> > > > > > > > src/codegen.cc:325: error: 'GenerateCallFunction' is not a
>>> member
>>> > > of
>>> > > > > > > > 'v8::internal::CodeGenerator'
>>> > > > > > > > src/codegen.cc:325: error: 'GenerateRegExpConstructResult'
>>> is not
>>> > > a
>>> > > > > > > > member of 'v8::internal::CodeGenerator'
>>> > > > > > > > src/codegen.cc:325: error: 'GenerateGetFromCache' is not a
>>> member
>>> > > of
>>> > > > > > > > 'v8::internal::CodeGenerator'
>>> > > > > > > > src/codegen.cc:325: error: 'GenerateSwapElements' is not a
>>> member
>>> > > of
>>> > > > > > > > 'v8::internal::CodeGenerator'
>>> > > > > > > > cc1plus: warnings being treated as errors
>>> > > > > > > > src/mips/virtual-frame-mips.h:486: warning: inline function
>>> 'void
>>> > > > > > > > v8::internal::VirtualFrame::PushFrameSlotAt(int)' used but
>>> never
>>> > > > > > > > defined...
>>> >
>>> > read more »
>>>
>>> --
>>> v8-users mailing list
>>> [email protected]
>>> http://groups.google.com/group/v8-users
>>>
>>
>>
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
>
>
>

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to