Was able to get compiling for Mips after playing with some compilation
flags.
But still I do need to port for source code portion.

One question, When you are planning to sync up with Google's v8 source code.
Since now I can see there are some code in Google's v8 source code which is
different than yours.
Or do I need to integrate your MIPs code with Google's v8 source code?

Thanks & Regards,
Nilima

On Fri, Jul 16, 2010 at 4:06 PM, Nilima Chavan <[email protected]>wrote:

> 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