Author: [email protected]
Date: Mon Mar 23 05:37:53 2009
New Revision: 1574

Modified:
    branches/bleeding_edge/SConstruct
    branches/bleeding_edge/src/SConscript
    branches/bleeding_edge/src/execution.cc
    branches/bleeding_edge/src/platform-linux.cc
    branches/bleeding_edge/src/runtime.cc

Log:
Reapply portability fixes, this time without 64 bit system bug.
Review URL: http://codereview.chromium.org/52010

Modified: branches/bleeding_edge/SConstruct
==============================================================================
--- branches/bleeding_edge/SConstruct   (original)
+++ branches/bleeding_edge/SConstruct   Mon Mar 23 05:37:53 2009
@@ -35,6 +35,40 @@
  sys.path.append(join(root_dir, 'tools'))
  import js2c, utils

+# ANDROID_TOP is the top of the Android checkout, fetched from the  
environment
+# variable 'TOP'.   You will also need to set the CXX, CC, AR and RANLIB
+# environment variables to the cross-compiling tools.
+ANDROID_TOP = os.environ.get('TOP')
+if ANDROID_TOP is None:
+  ANDROID_TOP=""
+
+ANDROID_FLAGS = ['-march=armv5te',
+                 '-mtune=xscale',
+                 '-msoft-float',
+                 '-fpic',
+                 '-mthumb-interwork',
+                 '-funwind-tables',
+                 '-fstack-protector',
+                 '-fno-short-enums',
+                 '-fmessage-length=0',
+                 '-finline-functions',
+                 '-fno-inline-functions-called-once',
+                 '-fgcse-after-reload',
+                 '-frerun-cse-after-loop',
+                 '-frename-registers',
+                 '-fomit-frame-pointer',
+                 '-fno-strict-aliasing',
+                 '-finline-limit=64',
+                 '-MD']
+
+ANDROID_INCLUDES = [ANDROID_TOP + '/bionic/libc/arch-arm/include',
+                    ANDROID_TOP + '/bionic/libc/include',
+                    ANDROID_TOP + '/bionic/libstdc++/include',
+                    ANDROID_TOP + '/bionic/libc/kernel/common',
+                    ANDROID_TOP + '/bionic/libc/kernel/arch-arm',
+                    ANDROID_TOP + '/bionic/libm/include',
+                    ANDROID_TOP + '/bionic/libm/include/arch/arm',
+                    ANDROID_TOP + '/bionic/libthread_db/include']

  LIBRARY_FLAGS = {
    'all': {
@@ -50,7 +84,11 @@
        'CPPDEFINES':   ['ENABLE_DISASSEMBLER', 'DEBUG']
      },
      'mode:release': {
-      'CCFLAGS':       
['-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections']
+      'CCFLAGS':      ['-O3', '-fomit-frame-pointer', '-fdata-sections',
+                       '-ffunction-sections'],
+      'os:android': {
+        'CPPDEFINES': ['SK_RELEASE', 'NDEBUG']
+      }
      },
      'os:linux': {
        'CCFLAGS':      ['-ansi'],
@@ -65,6 +103,14 @@
        'CCFLAGS':      ['-DWIN32'],
        'CXXFLAGS':     ['-DWIN32'],
      },
+    'os:android': {
+      'CPPDEFINES':   ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__',
+                       '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'],
+      'CCFLAGS':      ANDROID_FLAGS,
+      'WARNINGFLAGS': ['-Wall', '-Wno-unused', '-Werror=return-type',
+                       '-Wstrict-aliasing=2'],
+      'CPPPATH':      ANDROID_INCLUDES,
+    },
      'wordsize:64': {
        'CCFLAGS':      ['-m32'],
        'LINKFLAGS':    ['-m32']
@@ -114,14 +160,23 @@
    'gcc': {
      'all': {
        'CXXFLAGS':     [], #['-fvisibility=hidden'],
-      'WARNINGFLAGS': ['-pedantic', '-Wall', '-Werror', '-W',
+      'WARNINGFLAGS': ['-Wall', '-Werror', '-W',
            '-Wno-unused-parameter']
      },
      'arch:arm': {
        'CPPDEFINES':   ['ARM']
      },
+    'arch:android': {
+      'CPPDEFINES':   ['ARM']
+    },
      'os:win32': {
-      'WARNINGFLAGS': ['-Wno-long-long']
+      'WARNINGFLAGS': ['-pedantic', '-Wno-long-long']
+    },
+    'os:linux': {
+      'WARNINGFLAGS': ['-pedantic']
+    },
+    'os:macos': {
+      'WARNINGFLAGS': ['-pedantic']
      },
      'disassembler:on': {
        'CPPDEFINES':   ['ENABLE_DISASSEMBLER']
@@ -174,7 +229,7 @@
  DTOA_EXTRA_FLAGS = {
    'gcc': {
      'all': {
-      'WARNINGFLAGS': ['-Werror']
+      'WARNINGFLAGS': ['-Werror', '-Wno-uninitialized']
      }
    },
    'msvc': {
@@ -230,7 +285,8 @@
    },
    'gcc': {
      'all': {
-      'LIBPATH': ['.']
+      'LIBPATH': ['.'],
+      'CCFLAGS': ['-fno-rtti', '-fno-exceptions']
      },
      'os:linux': {
        'LIBS':         ['pthread', 'rt'],
@@ -244,6 +300,27 @@
      'os:win32': {
        'LIBS':         ['winmm', 'ws2_32']
      },
+    'os:android': {
+      'CPPDEFINES':   ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__',
+                       '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'],
+      'CCFLAGS':      ANDROID_FLAGS,
+      'CPPPATH':      ANDROID_INCLUDES,
+      'LIBPATH':     [ANDROID_TOP + '/out/target/product/generic/obj/lib'],
+      'LINKFLAGS':    ['-nostdlib',
+                       '-Bdynamic',
+                       '-Wl,-T,' + ANDROID_TOP + '/build/core/armelf.x',
+                       '-Wl,-dynamic-linker,/system/bin/linker',
+                       '-Wl,--gc-sections',
+                       '-Wl,-z,nocopyreloc',
+                       '-Wl,-rpath-link=' + ANDROID_TOP  
+ '/out/target/product/generic/obj/lib',
+                       ANDROID_TOP  
+ '/out/target/product/generic/obj/lib/crtbegin_dynamic.o',
+                       ANDROID_TOP  
+ 
'/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a',
+                       ANDROID_TOP  
+ '/out/target/product/generic/obj/lib/crtend_android.o'],
+      'LIBS':         ['c', 'stdc++', 'm'],
+      'mode:release': {
+        'CPPDEFINES': ['SK_RELEASE', 'NDEBUG']
+      }
+    },
      'wordsize:64': {
        'CCFLAGS':      ['-m32'],
        'LINKFLAGS':    ['-m32']
@@ -355,7 +432,7 @@
      'help': 'the toolchain to use'
    },
    'os': {
-    'values': ['freebsd', 'linux', 'macos', 'win32'],
+    'values': ['freebsd', 'linux', 'macos', 'win32', 'android'],
      'default': OS_GUESS,
      'help': 'the os to build for'
    },
@@ -510,6 +587,8 @@
            options[key] = prefix + value

    def ConfigureObject(self, env, input, **kw):
+    if (kw.has_key('CPPPATH') and env.has_key('CPPPATH')):
+      kw['CPPPATH'] += env['CPPPATH']
      if self.options['library'] == 'static':
        return env.StaticObject(input, **kw)
      else:

Modified: branches/bleeding_edge/src/SConscript
==============================================================================
--- branches/bleeding_edge/src/SConscript       (original)
+++ branches/bleeding_edge/src/SConscript       Mon Mar 23 05:37:53 2009
@@ -68,6 +68,7 @@
    'simulator:arm': ['simulator-arm.cc'],
    'os:freebsd': ['platform-freebsd.cc'],
    'os:linux':   ['platform-linux.cc'],
+  'os:android': ['platform-linux.cc'],
    'os:macos':   ['platform-macos.cc'],
    'os:nullos':  ['platform-nullos.cc'],
    'os:win32':   ['platform-win32.cc'],

Modified: branches/bleeding_edge/src/execution.cc
==============================================================================
--- branches/bleeding_edge/src/execution.cc     (original)
+++ branches/bleeding_edge/src/execution.cc     Mon Mar 23 05:37:53 2009
@@ -482,7 +482,8 @@
                                                bool* exc) {
    if (data->property_list()->IsUndefined() &&
        !data->constructor()->IsUndefined()) {
-    Object* result;
+    // Initialization to make gcc happy.
+    Object* result = NULL;
      {
        HandleScope scope;
        Handle<FunctionTemplateInfo> cons_template =

Modified: branches/bleeding_edge/src/platform-linux.cc
==============================================================================
--- branches/bleeding_edge/src/platform-linux.cc        (original)
+++ branches/bleeding_edge/src/platform-linux.cc        Mon Mar 23 05:37:53 2009
@@ -44,7 +44,9 @@
  #include <sys/stat.h>   // open
  #include <fcntl.h>      // open
  #include <unistd.h>     // sysconf
+#ifdef __GLIBC__
  #include <execinfo.h>   // backtrace, backtrace_symbols
+#endif  // def __GLIBC__
  #include <strings.h>    // index
  #include <errno.h>
  #include <stdarg.h>
@@ -361,6 +363,8 @@


  int OS::StackWalk(OS::StackFrame* frames, int frames_size) {
+  // backtrace is a glibc extension.
+#ifdef __GLIBC__
    void** addresses = NewArray<void*>(frames_size);

    int frames_count = backtrace(addresses, frames_size);
@@ -387,6 +391,9 @@
    free(symbols);

    return frames_count;
+#else  // ndef __GLIBC__
+  return 0;
+#endif  // ndef __GLIBC__
  }


@@ -814,6 +821,8 @@
  static Sampler* active_sampler_ = NULL;

  static void ProfilerSignalHandler(int signal, siginfo_t* info, void*  
context) {
+  // Ucontext is a glibc extension - no profiling on Android at the moment.
+#ifdef __GLIBC__
    USE(info);
    if (signal != SIGPROF) return;
    if (active_sampler_ == NULL) return;
@@ -840,6 +849,7 @@
    sample.state = Logger::state();

    active_sampler_->Tick(&sample);
+#endif
  }



Modified: branches/bleeding_edge/src/runtime.cc
==============================================================================
--- branches/bleeding_edge/src/runtime.cc       (original)
+++ branches/bleeding_edge/src/runtime.cc       Mon Mar 23 05:37:53 2009
@@ -1723,7 +1723,7 @@
    // Number of parts added by compiled replacement plus preceeding string
    // and possibly suffix after last match.
    const int parts_added_per_loop = compiled_replacement.parts() + 2;
-  bool matched;
+  bool matched = true;
    do {
      ASSERT(last_match_info_handle->HasFastElements());
      // Increase the capacity of the builder before entering local  
handle-scope,

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

Reply via email to