- update source.
authorRonan Le Martret <ronan@fridu.net>
Wed, 22 Jan 2014 10:06:53 +0000 (11:06 +0100)
committerRonan Le Martret <ronan@fridu.net>
Wed, 22 Jan 2014 10:06:53 +0000 (11:06 +0100)
Change-Id: I92afd94fb0d8305935d54dd62671c6be1feb7853
Signed-off-by: Ronan Le Martret <ronan@fridu.net>
187 files changed:
packaging/crosswalk.spec
src/base/base.gypi
src/base/threading/thread_local.h
src/base/threading/thread_local_storage.cc [new file with mode: 0644]
src/base/threading/thread_local_storage.h
src/base/threading/thread_local_storage_posix.cc
src/base/threading/thread_local_storage_win.cc
src/build/util/LASTCHANGE [new file with mode: 0644]
src/build/util/LASTCHANGE.blink [new file with mode: 0644]
src/native_client/tests/spec2k/164.gzip/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/164.gzip/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/164.gzip/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/175.vpr/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/175.vpr/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/175.vpr/run.test.sh [new file with mode: 0755]
src/native_client/tests/spec2k/175.vpr/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/176.gcc/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/176.gcc/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/176.gcc/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/177.mesa/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/177.mesa/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/177.mesa/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/179.art/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/179.art/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/179.art/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/181.mcf/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/181.mcf/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/181.mcf/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/183.equake/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/183.equake/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/183.equake/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/186.crafty/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/186.crafty/diff [new file with mode: 0644]
src/native_client/tests/spec2k/186.crafty/diff.README [new file with mode: 0644]
src/native_client/tests/spec2k/186.crafty/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/186.crafty/run.test.sh [new file with mode: 0755]
src/native_client/tests/spec2k/186.crafty/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/188.ammp/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/188.ammp/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/188.ammp/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/197.parser/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/197.parser/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/197.parser/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/252.eon/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/252.eon/diff [new file with mode: 0644]
src/native_client/tests/spec2k/252.eon/diff.README [new file with mode: 0644]
src/native_client/tests/spec2k/252.eon/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/252.eon/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/253.perlbmk/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/253.perlbmk/diff [new file with mode: 0644]
src/native_client/tests/spec2k/253.perlbmk/diff.README [new file with mode: 0644]
src/native_client/tests/spec2k/253.perlbmk/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/253.perlbmk/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/254.gap/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/254.gap/diff [new file with mode: 0644]
src/native_client/tests/spec2k/254.gap/diff.README [new file with mode: 0644]
src/native_client/tests/spec2k/254.gap/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/254.gap/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/255.vortex/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/255.vortex/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/255.vortex/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/256.bzip2/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/256.bzip2/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/256.bzip2/run.train.sh [new file with mode: 0755]
src/native_client/tests/spec2k/300.twolf/Makefile [new file with mode: 0644]
src/native_client/tests/spec2k/300.twolf/run.ref.sh [new file with mode: 0755]
src/native_client/tests/spec2k/300.twolf/run.test.sh [new file with mode: 0755]
src/native_client/tests/spec2k/300.twolf/run.train.sh [new file with mode: 0755]
src/native_client/tools/hermetic_cygwin/MkLink/MkLink.sln [new file with mode: 0644]
src/native_client/tools/hermetic_cygwin/MkLink/MkLink.vcproj [new file with mode: 0644]
src/native_client_sdk/src/getting_started/part1/hello_tutorial.nmf [new file with mode: 0644]
src/native_client_sdk/src/resources/httpd.cmd [new file with mode: 0644]
src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_32.nexe [new file with mode: 0644]
src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_64.nexe [new file with mode: 0644]
src/native_client_sdk/src/tools/tests/data/test_static_arm.nexe [new file with mode: 0644]
src/native_client_sdk/src/tools/tests/data/test_static_x86_32.nexe [new file with mode: 0644]
src/native_client_sdk/src/tools/tests/data/test_static_x86_64.nexe [new file with mode: 0644]
src/third_party/ffmpeg/chromium/binaries/c99conv.exe [new file with mode: 0755]
src/third_party/ffmpeg/tests/ref/fate/h264-conformance-canl1_toshiba_g [new file with mode: 0644]
src/third_party/ffmpeg/tests/ref/fate/h264-conformance-cvmaqp2_sony_g [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/i915/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/llvmpipe/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/nouveau/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/nv30/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/nv50/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/nvc0/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/radeon/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/radeonsi/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/rbug/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/softpipe/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/svga/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/drivers/trace/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/gallium/state_trackers/d3d1x/d3dapi/d3d10misc.h [new file with mode: 0644]
src/third_party/mesa/src/src/glx/apple/Makefile [new file with mode: 0644]
src/third_party/mesa/src/src/mesa/drivers/dri/common/xmlpool/Makefile [new file with mode: 0644]
src/third_party/webrtc/common_audio/resampler/Android.mk [new file with mode: 0644]
src/third_party/webrtc/common_audio/signal_processing/Android.mk [new file with mode: 0644]
src/third_party/webrtc/common_audio/vad/Android.mk [new file with mode: 0644]
src/third_party/webrtc/common_video/libyuv/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/codecs/cng/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/codecs/g711/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/codecs/g722/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/codecs/ilbc/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/codecs/isac/main/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/codecs/pcm16b/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/main/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_coding/neteq/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_conference_mixer/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_device/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/aec/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/aecm/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/agc/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/ns/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/test/android/apmtest/jni/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/test/android/apmtest/jni/Application.mk [new file with mode: 0644]
src/third_party/webrtc/modules/audio_processing/utility/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/media_file/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/rtp_rtcp/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/utility/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/video_capture/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/video_coding/codecs/i420/main/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/video_coding/codecs/vp8/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/video_coding/main/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/video_coding/utility/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/video_processing/main/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/modules/video_render/Android.mk [new file with mode: 0644]
src/third_party/webrtc/system_wrappers/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/test/Android.mk [new file with mode: 0644]
src/third_party/webrtc/video_engine/Android.mk [new file with mode: 0644]
src/third_party/webrtc/video_engine/test/auto_test/android/Android.mk [new file with mode: 0644]
src/third_party/webrtc/video_engine/test/auto_test/android/jni/Android.mk [new file with mode: 0644]
src/third_party/webrtc/video_engine/test/auto_test/source/Android.mk [new file with mode: 0644]
src/third_party/webrtc/voice_engine/Android.mk [new file with mode: 0644]
src/third_party/webrtc/voice_engine/test/android/android_test/Android.mk [new file with mode: 0644]
src/third_party/webrtc/voice_engine/test/android/android_test/jni/Android.mk [new file with mode: 0644]
src/third_party/webrtc/voice_engine/test/android/android_test/jni/Application.mk [new file with mode: 0644]
src/third_party/webrtc/voice_engine/test/auto_test/Android.mk [new file with mode: 0644]
src/third_party/webrtc/voice_engine/test/cmd_test/Android.mk [new file with mode: 0644]
src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/chromium.png [new file with mode: 0644]
src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/kiddie_logo.png [new file with mode: 0644]
src/tools/perf/page_sets/tough_scrolling_cases/image.png [new file with mode: 0644]
src/v8/test/mjsunit/tools/profviz-test.log [new file with mode: 0644]
src/v8/test/mjsunit/tools/tickprocessor-test-func-info.log [new file with mode: 0644]
src/v8/test/mjsunit/tools/tickprocessor-test.log [new file with mode: 0644]
src/v8/tools/v8.xcodeproj/README.txt [new file with mode: 0644]
src/xwalk/DEPS.xwalk
src/xwalk/VERSION
src/xwalk/application/browser/application.cc
src/xwalk/application/browser/application.h
src/xwalk/application/browser/application_service.cc
src/xwalk/application/browser/application_service.h
src/xwalk/application/browser/installer/tizen/service_package_installer.cc [new file with mode: 0644]
src/xwalk/application/browser/installer/tizen/service_package_installer.h [new file with mode: 0644]
src/xwalk/application/browser/linux/running_application_object.cc
src/xwalk/application/browser/linux/running_application_object.h
src/xwalk/application/common/application_manifest_constants.cc
src/xwalk/application/common/application_manifest_constants.h
src/xwalk/application/tools/linux/xwalk_launcher_main.cc
src/xwalk/application/tools/linux/xwalk_launcher_tizen.cc
src/xwalk/application/tools/tizen/xwalk_pkg_helper.cc
src/xwalk/application/xwalk_application.gypi
src/xwalk/build/android/xwalkcore_library_template/.classpath [new file with mode: 0644]
src/xwalk/build/android/xwalkcore_library_template/.project [new file with mode: 0644]
src/xwalk/build/android/xwalkcore_library_template/project.properties [new file with mode: 0644]
src/xwalk/extensions/android/java/src/org/xwalk/core/extensions/XWalkExtensionAndroid.java
src/xwalk/extensions/common/android/xwalk_extension_android.cc
src/xwalk/extensions/common/android/xwalk_extension_android.h
src/xwalk/packaging/crosswalk.spec
src/xwalk/runtime/android/core_shell/src/org/xwalk/core/xwview/shell/XWalkViewShellActivity.java
src/xwalk/runtime/android/java/src/org/xwalk/runtime/extension/XWalkCoreExtensionBridge.java
src/xwalk/runtime/android/java/src/org/xwalk/runtime/extension/XWalkExtension.java
src/xwalk/runtime/android/java/src/org/xwalk/runtime/extension/XWalkExtensionManager.java
src/xwalk/runtime/android/java/src/org/xwalk/runtime/extension/api/screen_orientation/ScreenOrientationExtension.java
src/xwalk/runtime/browser/ui/native_app_window_tizen.cc
src/xwalk/runtime/browser/ui/native_app_window_tizen.h
src/xwalk/test/android/runtime_client/javatests/src/org/xwalk/runtime/client/test/ScreenOrientationTest.java
src/xwalk/test/android/runtime_client_embedded/javatests/src/org/xwalk/runtime/client/embedded/test/ScreenOrientationTest.java
src/xwalk/wiki/images/rebase-feature-x-30.png [new file with mode: 0644]
src/xwalk/wiki/images/rebase-feature-y-30.png [new file with mode: 0644]
src/xwalk/wiki/images/rebase-feature-y-31.png [new file with mode: 0644]
src/xwalk/wiki/images/rebase-feature-z-30.png [new file with mode: 0644]
src/xwalk/wiki/images/rebase-feature-z-31.png [new file with mode: 0644]
src/xwalk/wiki/images/rebase-initial-state.png [new file with mode: 0644]
src/xwalk/wiki/images/rebase-next.png [new file with mode: 0644]
src/xwalk/wiki/images/rebase-upstream-31.png [new file with mode: 0644]

index 41a7cd1..2fa3961 100644 (file)
@@ -1,5 +1,5 @@
 Name:           crosswalk
-Version:        4.32.73.0
+Version:        4.32.74.0
 Release:        0
 Summary:        Crosswalk is an app runtime based on Chromium
 # License:        (BSD-3-Clause and LGPL-2.1+)
@@ -243,7 +243,8 @@ install -p -D %{SOURCE3} %{buildroot}%{_systemduserservicedir}/xwalk.service
 install -p -D ${BUILDDIR_NAME}/out/Release/xwalk %{buildroot}%{_libdir}/xwalk/xwalk
 install -p -D ${BUILDDIR_NAME}/out/Release/xwalkctl %{buildroot}%{_bindir}/xwalkctl
 install -p -D ${BUILDDIR_NAME}/out/Release/xwalk-launcher %{buildroot}%{_bindir}/xwalk-launcher
-install -p -D ${BUILDDIR_NAME}/out/Release/xwalk-pkg-helper %{buildroot}%{_bindir}/xwalk-pkg-helper
+# xwalk-pkg-helper needs to be set-user-ID-root so it can finish the installation process.
+install -m 06755 -p -D ${BUILDDIR_NAME}/out/Release/xwalk-pkg-helper %{buildroot}%{_bindir}/xwalk-pkg-helper
 
 # Supporting libraries and resources.
 install -p -D ${BUILDDIR_NAME}/out/Release/libffmpegsumo.so %{buildroot}%{_libdir}/xwalk/libffmpegsumo.so
index eeda3e1..c9101d8 100644 (file)
           'threading/thread_id_name_manager.h',
           'threading/thread_local.h',
           'threading/thread_local_posix.cc',
+          'threading/thread_local_storage.cc',
           'threading/thread_local_storage.h',
           'threading/thread_local_storage_posix.cc',
           'threading/thread_local_storage_win.cc',
index 6561420..e6b19ee 100644 (file)
@@ -50,6 +50,7 @@
 
 #include "base/base_export.h"
 #include "base/basictypes.h"
+#include "base/threading/thread_local_storage.h"
 
 #if defined(OS_POSIX)
 #include <pthread.h>
@@ -75,6 +76,7 @@ struct BASE_EXPORT ThreadLocalPlatform {
 
 }  // namespace internal
 
+#if !defined(OS_ANDROID)
 template <typename Type>
 class ThreadLocalPointer {
  public:
@@ -103,6 +105,28 @@ class ThreadLocalPointer {
 
   DISALLOW_COPY_AND_ASSIGN(ThreadLocalPointer<Type>);
 };
+#else
+template <typename Type>
+class ThreadLocalPointer {
+ public:
+  ThreadLocalPointer() {}
+
+  ~ThreadLocalPointer() { slot_.Free(); }
+
+  Type* Get() {
+    return static_cast<Type*>(slot_.Get());
+  }
+
+  void Set(Type* ptr) {
+    slot_.Set(const_cast<void*>(static_cast<const void*>(ptr)));
+  }
+
+ private:
+  ThreadLocalStorage::Slot slot_;
+
+  DISALLOW_COPY_AND_ASSIGN(ThreadLocalPointer<Type>);
+};
+#endif  // !OS_ANDROID
 
 class ThreadLocalBoolean {
  public:
diff --git a/src/base/threading/thread_local_storage.cc b/src/base/threading/thread_local_storage.cc
new file mode 100644 (file)
index 0000000..523a0d0
--- /dev/null
@@ -0,0 +1,250 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/threading/thread_local_storage.h"
+
+#include "base/atomicops.h"
+#include "base/logging.h"
+
+using base::internal::PlatformThreadLocalStorage;
+
+namespace {
+// In order to make TLS destructors work, we need to keep around a function
+// pointer to the destructor for each slot. We keep this array of pointers in a
+// global (static) array.
+// We use the single OS-level TLS slot (giving us one pointer per thread) to
+// hold a pointer to a per-thread array (table) of slots that we allocate to
+// Chromium consumers.
+
+// g_native_tls_key is the one native TLS that we use.  It stores our table.
+base::subtle::AtomicWord g_native_tls_key =
+    PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES;
+
+// g_last_used_tls_key is the high-water-mark of allocated thread local storage.
+// Each allocation is an index into our g_tls_destructors[].  Each such index is
+// assigned to the instance variable slot_ in a ThreadLocalStorage::Slot
+// instance.  We reserve the value slot_ == 0 to indicate that the corresponding
+// instance of ThreadLocalStorage::Slot has been freed (i.e., destructor called,
+// etc.).  This reserved use of 0 is then stated as the initial value of
+// g_last_used_tls_key, so that the first issued index will be 1.
+base::subtle::Atomic32 g_last_used_tls_key = 0;
+
+// The maximum number of 'slots' in our thread local storage stack.
+const int kThreadLocalStorageSize = 64;
+
+// The maximum number of times to try to clear slots by calling destructors.
+// Use pthread naming convention for clarity.
+const int kMaxDestructorIterations = kThreadLocalStorageSize;
+
+// An array of destructor function pointers for the slots.  If a slot has a
+// destructor, it will be stored in its corresponding entry in this array.
+// The elements are volatile to ensure that when the compiler reads the value
+// to potentially call the destructor, it does so once, and that value is tested
+// for null-ness and then used. Yes, that would be a weird de-optimization,
+// but I can imagine some register machines where it was just as easy to
+// re-fetch an array element, and I want to be sure a call to free the key
+// (i.e., null out the destructor entry) that happens on a separate thread can't
+// hurt the racy calls to the destructors on another thread.
+volatile base::ThreadLocalStorage::TLSDestructorFunc
+    g_tls_destructors[kThreadLocalStorageSize];
+
+// This function is called to initialize our entire Chromium TLS system.
+// It may be called very early, and we need to complete most all of the setup
+// (initialization) before calling *any* memory allocator functions, which may
+// recursively depend on this initialization.
+// As a result, we use Atomics, and avoid anything (like a singleton) that might
+// require memory allocations.
+void** ConstructTlsVector() {
+  PlatformThreadLocalStorage::TLSKey key =
+      base::subtle::NoBarrier_Load(&g_native_tls_key);
+  if (key == PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES) {
+    CHECK(PlatformThreadLocalStorage::AllocTLS(&key));
+
+    // The TLS_KEY_OUT_OF_INDEXES is used to find out whether the key is set or
+    // not in NoBarrier_CompareAndSwap, but Posix doesn't have invalid key, we
+    // define an almost impossible value be it.
+    // If we really get TLS_KEY_OUT_OF_INDEXES as value of key, just alloc
+    // another TLS slot.
+    if (key == PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES) {
+      PlatformThreadLocalStorage::TLSKey tmp = key;
+      CHECK(PlatformThreadLocalStorage::AllocTLS(&key) &&
+            key != PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES);
+      PlatformThreadLocalStorage::FreeTLS(tmp);
+    }
+    // Atomically test-and-set the tls_key.  If the key is
+    // TLS_KEY_OUT_OF_INDEXES, go ahead and set it.  Otherwise, do nothing, as
+    // another thread already did our dirty work.
+    if (PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES !=
+        base::subtle::NoBarrier_CompareAndSwap(&g_native_tls_key,
+            PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES, key)) {
+      // We've been shortcut. Another thread replaced g_native_tls_key first so
+      // we need to destroy our index and use the one the other thread got
+      // first.
+      PlatformThreadLocalStorage::FreeTLS(key);
+      key = base::subtle::NoBarrier_Load(&g_native_tls_key);
+    }
+  }
+  CHECK(!PlatformThreadLocalStorage::GetTLSValue(key));
+
+  // Some allocators, such as TCMalloc, make use of thread local storage.
+  // As a result, any attempt to call new (or malloc) will lazily cause such a
+  // system to initialize, which will include registering for a TLS key.  If we
+  // are not careful here, then that request to create a key will call new back,
+  // and we'll have an infinite loop.  We avoid that as follows:
+  // Use a stack allocated vector, so that we don't have dependence on our
+  // allocator until our service is in place.  (i.e., don't even call new until
+  // after we're setup)
+  void* stack_allocated_tls_data[kThreadLocalStorageSize];
+  memset(stack_allocated_tls_data, 0, sizeof(stack_allocated_tls_data));
+  // Ensure that any rentrant calls change the temp version.
+  PlatformThreadLocalStorage::SetTLSValue(key, stack_allocated_tls_data);
+
+  // Allocate an array to store our data.
+  void** tls_data = new void*[kThreadLocalStorageSize];
+  memcpy(tls_data, stack_allocated_tls_data, sizeof(stack_allocated_tls_data));
+  PlatformThreadLocalStorage::SetTLSValue(key, tls_data);
+  return tls_data;
+}
+
+void OnThreadExitInternal(void* value) {
+  DCHECK(value);
+  void** tls_data = static_cast<void**>(value);
+  // Some allocators, such as TCMalloc, use TLS.  As a result, when a thread
+  // terminates, one of the destructor calls we make may be to shut down an
+  // allocator.  We have to be careful that after we've shutdown all of the
+  // known destructors (perchance including an allocator), that we don't call
+  // the allocator and cause it to resurrect itself (with no possibly destructor
+  // call to follow).  We handle this problem as follows:
+  // Switch to using a stack allocated vector, so that we don't have dependence
+  // on our allocator after we have called all g_tls_destructors.  (i.e., don't
+  // even call delete[] after we're done with destructors.)
+  void* stack_allocated_tls_data[kThreadLocalStorageSize];
+  memcpy(stack_allocated_tls_data, tls_data, sizeof(stack_allocated_tls_data));
+  // Ensure that any re-entrant calls change the temp version.
+  PlatformThreadLocalStorage::TLSKey key =
+      base::subtle::NoBarrier_Load(&g_native_tls_key);
+  PlatformThreadLocalStorage::SetTLSValue(key, stack_allocated_tls_data);
+  delete[] tls_data;  // Our last dependence on an allocator.
+
+  int remaining_attempts = kMaxDestructorIterations;
+  bool need_to_scan_destructors = true;
+  while (need_to_scan_destructors) {
+    need_to_scan_destructors = false;
+    // Try to destroy the first-created-slot (which is slot 1) in our last
+    // destructor call.  That user was able to function, and define a slot with
+    // no other services running, so perhaps it is a basic service (like an
+    // allocator) and should also be destroyed last.  If we get the order wrong,
+    // then we'll itterate several more times, so it is really not that
+    // critical (but it might help).
+    base::subtle::Atomic32 last_used_tls_key =
+        base::subtle::NoBarrier_Load(&g_last_used_tls_key);
+    for (int slot = last_used_tls_key; slot > 0; --slot) {
+      void* value = stack_allocated_tls_data[slot];
+      if (value == NULL)
+        continue;
+
+      base::ThreadLocalStorage::TLSDestructorFunc destructor =
+          g_tls_destructors[slot];
+      if (destructor == NULL)
+        continue;
+      stack_allocated_tls_data[slot] = NULL;  // pre-clear the slot.
+      destructor(value);
+      // Any destructor might have called a different service, which then set
+      // a different slot to a non-NULL value.  Hence we need to check
+      // the whole vector again.  This is a pthread standard.
+      need_to_scan_destructors = true;
+    }
+    if (--remaining_attempts <= 0) {
+      NOTREACHED();  // Destructors might not have been called.
+      break;
+    }
+  }
+
+  // Remove our stack allocated vector.
+  PlatformThreadLocalStorage::SetTLSValue(key, NULL);
+}
+
+}  // namespace
+
+namespace base {
+
+namespace internal {
+
+#if defined(OS_WIN)
+void PlatformThreadLocalStorage::OnThreadExit() {
+  PlatformThreadLocalStorage::TLSKey key =
+      base::subtle::NoBarrier_Load(&g_native_tls_key);
+  if (key == PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES)
+    return;
+  void *tls_data = GetTLSValue(key);
+  // Maybe we have never initialized TLS for this thread.
+  if (!tls_data)
+    return;
+  OnThreadExitInternal(tls_data);
+}
+#elif defined(OS_POSIX)
+void PlatformThreadLocalStorage::OnThreadExit(void* value) {
+  OnThreadExitInternal(value);
+}
+#endif  // defined(OS_WIN)
+
+}  // namespace internal
+
+ThreadLocalStorage::Slot::Slot(TLSDestructorFunc destructor) {
+  initialized_ = false;
+  slot_ = 0;
+  Initialize(destructor);
+}
+
+bool ThreadLocalStorage::StaticSlot::Initialize(TLSDestructorFunc destructor) {
+  PlatformThreadLocalStorage::TLSKey key =
+      base::subtle::NoBarrier_Load(&g_native_tls_key);
+  if (key == PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES ||
+      !PlatformThreadLocalStorage::GetTLSValue(key))
+    ConstructTlsVector();
+
+  // Grab a new slot.
+  slot_ = base::subtle::NoBarrier_AtomicIncrement(&g_last_used_tls_key, 1);
+  DCHECK_GT(slot_, 0);
+  CHECK_LT(slot_, kThreadLocalStorageSize);
+
+  // Setup our destructor.
+  g_tls_destructors[slot_] = destructor;
+  initialized_ = true;
+  return true;
+}
+
+void ThreadLocalStorage::StaticSlot::Free() {
+  // At this time, we don't reclaim old indices for TLS slots.
+  // So all we need to do is wipe the destructor.
+  DCHECK_GT(slot_, 0);
+  DCHECK_LT(slot_, kThreadLocalStorageSize);
+  g_tls_destructors[slot_] = NULL;
+  slot_ = 0;
+  initialized_ = false;
+}
+
+void* ThreadLocalStorage::StaticSlot::Get() const {
+  void** tls_data = static_cast<void**>(
+      PlatformThreadLocalStorage::GetTLSValue(
+          base::subtle::NoBarrier_Load(&g_native_tls_key)));
+  if (!tls_data)
+    tls_data = ConstructTlsVector();
+  DCHECK_GT(slot_, 0);
+  DCHECK_LT(slot_, kThreadLocalStorageSize);
+  return tls_data[slot_];
+}
+
+void ThreadLocalStorage::StaticSlot::Set(void* value) {
+  void** tls_data = static_cast<void**>(
+      PlatformThreadLocalStorage::GetTLSValue(
+          base::subtle::NoBarrier_Load(&g_native_tls_key)));
+  if (!tls_data)
+    tls_data = ConstructTlsVector();
+  DCHECK_GT(slot_, 0);
+  DCHECK_LT(slot_, kThreadLocalStorageSize);
+  tls_data[slot_] = value;
+}
+
+}  // namespace base
index eb5648f..53ebe55 100644 (file)
@@ -8,12 +8,71 @@
 #include "base/base_export.h"
 #include "base/basictypes.h"
 
-#if defined(OS_POSIX)
+#if defined(OS_WIN)
+#include <windows.h>
+#elif defined(OS_POSIX)
 #include <pthread.h>
 #endif
 
 namespace base {
 
+namespace internal {
+
+// WARNING: You should *NOT* be using this class directly.
+// PlatformThreadLocalStorage is low-level abstraction to the OS's TLS
+// interface, you should instead be using ThreadLocalStorage::StaticSlot/Slot.
+class BASE_EXPORT PlatformThreadLocalStorage {
+ public:
+
+#if defined(OS_WIN)
+  typedef unsigned long TLSKey;
+  enum { TLS_KEY_OUT_OF_INDEXES = TLS_OUT_OF_INDEXES };
+#elif defined(OS_POSIX)
+  typedef pthread_key_t TLSKey;
+  // The following is a "reserved key" which is used in our generic Chromium
+  // ThreadLocalStorage implementation.  We expect that an OS will not return
+  // such a key, but if it is returned (i.e., the OS tries to allocate it) we
+  // will just request another key.
+  enum { TLS_KEY_OUT_OF_INDEXES = 0x7FFFFFFF };
+#endif
+
+  // The following methods need to be supported on each OS platform, so that
+  // the Chromium ThreadLocalStore functionality can be constructed.
+  // Chromium will use these methods to acquire a single OS slot, and then use
+  // that to support a much larger number of Chromium slots (independent of the
+  // OS restrictions).
+  // The following returns true if it successfully is able to return an OS
+  // key in |key|.
+  static bool AllocTLS(TLSKey* key);
+  // Note: FreeTLS() doesn't have to be called, it is fine with this leak, OS
+  // might not reuse released slot, you might just reset the TLS value with
+  // SetTLSValue().
+  static void FreeTLS(TLSKey key);
+  static void SetTLSValue(TLSKey key, void* value);
+  static void* GetTLSValue(TLSKey key);
+
+  // Each platform (OS implementation) is required to call this method on each
+  // terminating thread when the thread is about to terminate.  This method
+  // will then call all registered destructors for slots in Chromium
+  // ThreadLocalStorage, until there are no slot values remaining as having
+  // been set on this thread.
+  // Destructors may end up being called multiple times on a terminating
+  // thread, as other destructors may re-set slots that were previously
+  // destroyed.
+#if defined(OS_WIN)
+  // Since Windows which doesn't support TLS destructor, the implementation
+  // should use GetTLSValue() to retrieve the value of TLS slot.
+  static void OnThreadExit();
+#elif defined(OS_POSIX)
+  // |Value| is the data stored in TLS slot, The implementation can't use
+  // GetTLSValue() to retrieve the value of slot as it has already been reset
+  // in Posix.
+  static void OnThreadExit(void* value);
+#endif
+};
+
+}  // namespace internal
+
 // Wrapper for thread local storage.  This class doesn't do much except provide
 // an API for portability.
 class BASE_EXPORT ThreadLocalStorage {
@@ -60,12 +119,7 @@ class BASE_EXPORT ThreadLocalStorage {
 
     // The internals of this struct should be considered private.
     bool initialized_;
-#if defined(OS_WIN)
     int slot_;
-#elif defined(OS_POSIX)
-    pthread_key_t key_;
-#endif
-
   };
 
   // A convenience wrapper around StaticSlot with a constructor. Can be used
@@ -77,11 +131,8 @@ class BASE_EXPORT ThreadLocalStorage {
 
    private:
     using StaticSlot::initialized_;
-#if defined(OS_WIN)
     using StaticSlot::slot_;
-#elif defined(OS_POSIX)
-    using StaticSlot::key_;
-#endif
+
     DISALLOW_COPY_AND_ASSIGN(Slot);
   };
 
index 75da5a7..ebaf400 100644 (file)
@@ -8,42 +8,27 @@
 
 namespace base {
 
-ThreadLocalStorage::Slot::Slot(TLSDestructorFunc destructor) {
-  initialized_ = false;
-  key_ = 0;
-  Initialize(destructor);
-}
-
-bool ThreadLocalStorage::StaticSlot::Initialize(TLSDestructorFunc destructor) {
-  DCHECK(!initialized_);
-  int error = pthread_key_create(&key_, destructor);
-  if (error) {
-    NOTREACHED();
-    return false;
-  }
+namespace internal {
 
-  initialized_ = true;
-  return true;
+bool PlatformThreadLocalStorage::AllocTLS(TLSKey* key) {
+  return !pthread_key_create(key,
+      base::internal::PlatformThreadLocalStorage::OnThreadExit);
 }
 
-void ThreadLocalStorage::StaticSlot::Free() {
-  DCHECK(initialized_);
-  int error = pthread_key_delete(key_);
-  if (error)
-    NOTREACHED();
-  initialized_ = false;
+void PlatformThreadLocalStorage::FreeTLS(TLSKey key) {
+  int ret = pthread_key_delete(key);
+  DCHECK_EQ(ret, 0);
 }
 
-void* ThreadLocalStorage::StaticSlot::Get() const {
-  DCHECK(initialized_);
-  return pthread_getspecific(key_);
+void* PlatformThreadLocalStorage::GetTLSValue(TLSKey key) {
+  return pthread_getspecific(key);
 }
 
-void ThreadLocalStorage::StaticSlot::Set(void* value) {
-  DCHECK(initialized_);
-  int error = pthread_setspecific(key_, value);
-  if (error)
-    NOTREACHED();
+void PlatformThreadLocalStorage::SetTLSValue(TLSKey key, void* value) {
+  int ret = pthread_setspecific(key, value);
+  DCHECK_EQ(ret, 0);
 }
 
+}  // namespace internal
+
 }  // namespace base
index 0ae3cb4..42a7d01 100644 (file)
 
 #include "base/logging.h"
 
-
-namespace {
-// In order to make TLS destructors work, we need to keep function
-// pointers to the destructor for each TLS that we allocate.
-// We make this work by allocating a single OS-level TLS, which
-// contains an array of slots for the application to use.  In
-// parallel, we also allocate an array of destructors, which we
-// keep track of and call when threads terminate.
-
-// g_native_tls_key is the one native TLS that we use.  It stores our table.
-long g_native_tls_key = TLS_OUT_OF_INDEXES;
-
-// g_last_used_tls_key is the high-water-mark of allocated thread local storage.
-// Each allocation is an index into our g_tls_destructors[].  Each such index is
-// assigned to the instance variable slot_ in a ThreadLocalStorage::Slot
-// instance.  We reserve the value slot_ == 0 to indicate that the corresponding
-// instance of ThreadLocalStorage::Slot has been freed (i.e., destructor called,
-// etc.).  This reserved use of 0 is then stated as the initial value of
-// g_last_used_tls_key, so that the first issued index will be 1.
-long g_last_used_tls_key = 0;
-
-// The maximum number of 'slots' in our thread local storage stack.
-const int kThreadLocalStorageSize = 64;
-
-// The maximum number of times to try to clear slots by calling destructors.
-// Use pthread naming convention for clarity.
-const int kMaxDestructorIterations = kThreadLocalStorageSize;
-
-// An array of destructor function pointers for the slots.  If a slot has a
-// destructor, it will be stored in its corresponding entry in this array.
-// The elements are volatile to ensure that when the compiler reads the value
-// to potentially call the destructor, it does so once, and that value is tested
-// for null-ness and then used. Yes, that would be a weird de-optimization,
-// but I can imagine some register machines where it was just as easy to
-// re-fetch an array element, and I want to be sure a call to free the key
-// (i.e., null out the destructor entry) that happens on a separate thread can't
-// hurt the racy calls to the destructors on another thread.
-volatile base::ThreadLocalStorage::TLSDestructorFunc
-    g_tls_destructors[kThreadLocalStorageSize];
-
-void** ConstructTlsVector() {
-  if (g_native_tls_key == TLS_OUT_OF_INDEXES) {
-    long value = TlsAlloc();
-    DCHECK(value != TLS_OUT_OF_INDEXES);
-
-    // Atomically test-and-set the tls_key.  If the key is TLS_OUT_OF_INDEXES,
-    // go ahead and set it.  Otherwise, do nothing, as another
-    // thread already did our dirty work.
-    if (TLS_OUT_OF_INDEXES != InterlockedCompareExchange(
-            &g_native_tls_key, value, TLS_OUT_OF_INDEXES)) {
-      // We've been shortcut. Another thread replaced g_native_tls_key first so
-      // we need to destroy our index and use the one the other thread got
-      // first.
-      TlsFree(value);
-    }
-  }
-  DCHECK(!TlsGetValue(g_native_tls_key));
-
-  // Some allocators, such as TCMalloc, make use of thread local storage.
-  // As a result, any attempt to call new (or malloc) will lazily cause such a
-  // system to initialize, which will include registering for a TLS key.  If we
-  // are not careful here, then that request to create a key will call new back,
-  // and we'll have an infinite loop.  We avoid that as follows:
-  // Use a stack allocated vector, so that we don't have dependence on our
-  // allocator until our service is in place.  (i.e., don't even call new until
-  // after we're setup)
-  void* stack_allocated_tls_data[kThreadLocalStorageSize];
-  memset(stack_allocated_tls_data, 0, sizeof(stack_allocated_tls_data));
-  // Ensure that any rentrant calls change the temp version.
-  TlsSetValue(g_native_tls_key, stack_allocated_tls_data);
-
-  // Allocate an array to store our data.
-  void** tls_data = new void*[kThreadLocalStorageSize];
-  memcpy(tls_data, stack_allocated_tls_data, sizeof(stack_allocated_tls_data));
-  TlsSetValue(g_native_tls_key, tls_data);
-  return tls_data;
-}
-
-// Called when we terminate a thread, this function calls any TLS destructors
-// that are pending for this thread.
-void WinThreadExit() {
-  if (g_native_tls_key == TLS_OUT_OF_INDEXES)
-    return;
-
-  void** tls_data = static_cast<void**>(TlsGetValue(g_native_tls_key));
-  // Maybe we have never initialized TLS for this thread.
-  if (!tls_data)
-    return;
-
-  // Some allocators, such as TCMalloc, use TLS.  As a result, when a thread
-  // terminates, one of the destructor calls we make may be to shut down an
-  // allocator.  We have to be careful that after we've shutdown all of the
-  // known destructors (perchance including an allocator), that we don't call
-  // the allocator and cause it to resurrect itself (with no possibly destructor
-  // call to follow).  We handle this problem as follows:
-  // Switch to using a stack allocated vector, so that we don't have dependence
-  // on our allocator after we have called all g_tls_destructors.  (i.e., don't
-  // even call delete[] after we're done with destructors.)
-  void* stack_allocated_tls_data[kThreadLocalStorageSize];
-  memcpy(stack_allocated_tls_data, tls_data, sizeof(stack_allocated_tls_data));
-  // Ensure that any re-entrant calls change the temp version.
-  TlsSetValue(g_native_tls_key, stack_allocated_tls_data);
-  delete[] tls_data;  // Our last dependence on an allocator.
-
-  int remaining_attempts = kMaxDestructorIterations;
-  bool need_to_scan_destructors = true;
-  while (need_to_scan_destructors) {
-    need_to_scan_destructors = false;
-    // Try to destroy the first-created-slot (which is slot 1) in our last
-    // destructor call.  That user was able to function, and define a slot with
-    // no other services running, so perhaps it is a basic service (like an
-    // allocator) and should also be destroyed last.  If we get the order wrong,
-    // then we'll itterate several more times, so it is really not that
-    // critical (but it might help).
-    for (int slot = g_last_used_tls_key; slot > 0; --slot) {
-      void* value = stack_allocated_tls_data[slot];
-      if (value == NULL)
-        continue;
-      base::ThreadLocalStorage::TLSDestructorFunc destructor =
-          g_tls_destructors[slot];
-      if (destructor == NULL)
-        continue;
-      stack_allocated_tls_data[slot] = NULL;  // pre-clear the slot.
-      destructor(value);
-      // Any destructor might have called a different service, which then set
-      // a different slot to a non-NULL value.  Hence we need to check
-      // the whole vector again.  This is a pthread standard.
-      need_to_scan_destructors = true;
-    }
-    if (--remaining_attempts <= 0) {
-      NOTREACHED();  // Destructors might not have been called.
-      break;
-    }
-  }
-
-  // Remove our stack allocated vector.
-  TlsSetValue(g_native_tls_key, NULL);
-}
-
-}  // namespace
-
 namespace base {
 
-ThreadLocalStorage::Slot::Slot(TLSDestructorFunc destructor) {
-  initialized_ = false;
-  slot_ = 0;
-  Initialize(destructor);
-}
-
-bool ThreadLocalStorage::StaticSlot::Initialize(TLSDestructorFunc destructor) {
-  if (g_native_tls_key == TLS_OUT_OF_INDEXES || !TlsGetValue(g_native_tls_key))
-    ConstructTlsVector();
+namespace internal {
 
-  // Grab a new slot.
-  slot_ = InterlockedIncrement(&g_last_used_tls_key);
-  DCHECK_GT(slot_, 0);
-  if (slot_ >= kThreadLocalStorageSize) {
-    NOTREACHED();
-    return false;
+bool PlatformThreadLocalStorage::AllocTLS(TLSKey* key) {
+  TLSKey value = TlsAlloc();
+  if (value != TLS_OUT_OF_INDEXES) {
+    *key = value;
+    return true;
   }
-
-  // Setup our destructor.
-  g_tls_destructors[slot_] = destructor;
-  initialized_ = true;
-  return true;
+  return false;
 }
 
-void ThreadLocalStorage::StaticSlot::Free() {
-  // At this time, we don't reclaim old indices for TLS slots.
-  // So all we need to do is wipe the destructor.
-  DCHECK_GT(slot_, 0);
-  DCHECK_LT(slot_, kThreadLocalStorageSize);
-  g_tls_destructors[slot_] = NULL;
-  slot_ = 0;
-  initialized_ = false;
+void PlatformThreadLocalStorage::FreeTLS(TLSKey key) {
+  BOOL ret = TlsFree(key);
+  DCHECK(ret);
 }
 
-void* ThreadLocalStorage::StaticSlot::Get() const {
-  void** tls_data = static_cast<void**>(TlsGetValue(g_native_tls_key));
-  if (!tls_data)
-    tls_data = ConstructTlsVector();
-  DCHECK_GT(slot_, 0);
-  DCHECK_LT(slot_, kThreadLocalStorageSize);
-  return tls_data[slot_];
+void* PlatformThreadLocalStorage::GetTLSValue(TLSKey key) {
+  return TlsGetValue(key);
 }
 
-void ThreadLocalStorage::StaticSlot::Set(void* value) {
-  void** tls_data = static_cast<void**>(TlsGetValue(g_native_tls_key));
-  if (!tls_data)
-    tls_data = ConstructTlsVector();
-  DCHECK_GT(slot_, 0);
-  DCHECK_LT(slot_, kThreadLocalStorageSize);
-  tls_data[slot_] = value;
+void PlatformThreadLocalStorage::SetTLSValue(TLSKey key, void* value) {
+  BOOL ret = TlsSetValue(key, value);
+  DCHECK(ret);
 }
 
+}  // namespace internal
+
 }  // namespace base
 
 // Thread Termination Callbacks.
@@ -233,7 +67,7 @@ void NTAPI OnThreadExit(PVOID module, DWORD reason, PVOID reserved) {
   // On XP SP0 & SP1, the DLL_PROCESS_ATTACH is never seen. It is sent on SP2+
   // and on W2K and W2K3. So don't assume it is sent.
   if (DLL_THREAD_DETACH == reason || DLL_PROCESS_DETACH == reason)
-    WinThreadExit();
+    base::internal::PlatformThreadLocalStorage::OnThreadExit();
 }
 
 // .CRT$XLA to .CRT$XLZ is an array of PIMAGE_TLS_CALLBACK pointers that are
diff --git a/src/build/util/LASTCHANGE b/src/build/util/LASTCHANGE
new file mode 100644 (file)
index 0000000..ed2d7de
--- /dev/null
@@ -0,0 +1 @@
+LASTCHANGE=237215
diff --git a/src/build/util/LASTCHANGE.blink b/src/build/util/LASTCHANGE.blink
new file mode 100644 (file)
index 0000000..b3b0d29
--- /dev/null
@@ -0,0 +1 @@
+LASTCHANGE=161534
diff --git a/src/native_client/tests/spec2k/164.gzip/Makefile b/src/native_client/tests/spec2k/164.gzip/Makefile
new file mode 100644 (file)
index 0000000..05d306d
--- /dev/null
@@ -0,0 +1,25 @@
+# Note: src/getopt.c has been removed from the list because it doesn't
+# link properly with emcc, and doesn't actually seem to be necessary
+# for any other compilers.
+SRC=\
+src/bits.c \
+src/deflate.c \
+src/gzip.c \
+src/inflate.c \
+src/lzw.c \
+src/spec.c \
+src/trees.c \
+src/unlzh.c \
+src/unlzw.c \
+src/unpack.c \
+src/unzip.c \
+src/util.c \
+src/zip.c
+
+IT=gzip
+
+CFLAGS_EXTRA = -DSPEC_CPU2000
+EMCCFLAGS_EXTRA_TRAIN = --preload-file data/train/input
+EMCCFLAGS_EXTRA_REF = --preload-file data/ref/input
+include ../Makefile.common
+
diff --git a/src/native_client/tests/spec2k/164.gzip/run.ref.sh b/src/native_client/tests/spec2k/164.gzip/run.ref.sh
new file mode 100755 (executable)
index 0000000..8c5fde3
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+LIST="input.source input.log input.graphic input.random input.program"
+
+for i in  ${LIST} ; do
+  ${PREFIX} $1 ${DASHDASH} data/ref/input/$i 60 > $i.out  2>stderr.out
+done
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  for i in  ${LIST} ; do
+    cmp $i.out  data/ref/output/$i.out
+  done
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/164.gzip/run.train.sh b/src/native_client/tests/spec2k/164.gzip/run.train.sh
new file mode 100755 (executable)
index 0000000..c1f06db
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH} data/train/input/input.combined 32 >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp stdout.out  data/train/output/input.combined.out
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/175.vpr/Makefile b/src/native_client/tests/spec2k/175.vpr/Makefile
new file mode 100644 (file)
index 0000000..fec1660
--- /dev/null
@@ -0,0 +1,32 @@
+SRC=\
+src/check_route.c \
+src/check_rr_graph.c \
+src/draw.c \
+src/graphics.c \
+src/hash.c \
+src/main.c \
+src/place.c \
+src/read_arch.c \
+src/read_netlist.c \
+src/read_place.c \
+src/route.c \
+src/rr_graph.c \
+src/rr_graph2.c \
+src/rr_graph_area.c \
+src/rr_graph_sbox.c \
+src/rr_graph_timing_params.c \
+src/rr_graph_util.c \
+src/segment_stats.c \
+src/stats.c \
+src/util.c
+
+
+
+IT=vpr
+
+CFLAGS_EXTRA = -DSPEC_CPU2000
+EMCCFLAGS_EXTRA_TRAIN = --preload-file arch.in --preload-file net.in --preload-file place.in
+EMCCFLAGS_EXTRA_REF = --preload-file arch.in --preload-file net.in --preload-file place.in
+
+EXTRA_CLEAN=*.in
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/175.vpr/run.ref.sh b/src/native_client/tests/spec2k/175.vpr/run.ref.sh
new file mode 100755 (executable)
index 0000000..e253f6e
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch costs.out place.out route.out
+fi
+
+ARGS1="-nodisp -place_only -init_t 5 -exit_t 0.005 -alpha_t 0.9412 -inner_num 2"
+ARGS2="-nodisp -route_only -route_chan_width 15 -pres_fac_mult 2 -acc_fac 1 -first_iter_pres_fac 4 -initial_pres_fac 8"
+
+
+${PREFIX} $1  ${DASHDASH} net.in arch.in place.out dum.out ${ARGS1} \
+  >place_log.out 2>stderr1.out
+
+${PREFIX} $1  ${DASHDASH} net.in arch.in place.in route.out ${ARGS2} \
+  >route_log.out 2>stderr2.out
+
+LIST="place_log.out route_log.out costs.out route.out"
+
+if [[ "${VERIFY}" != "no" ]] ; then
+   echo "VERIFY"
+   for i in ${LIST} ; do
+     # NOTE: we are a little more conservative than spec with regard to reltol.
+     # (the normal harness uses weaker reltols for some files).
+     ../specdiff.sh -r 0.015 -l 10 $i data/ref/output/$i
+   done
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/175.vpr/run.test.sh b/src/native_client/tests/spec2k/175.vpr/run.test.sh
new file mode 100755 (executable)
index 0000000..faccc6a
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+
+rm -f *.out
+rm -f test*
+
+cp  data/test/input/* .
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch costs.out place.out route.out
+fi
+
+ARGS1="-nodisp -place_only -init_t 5 -exit_t 0.005 -alpha_t 0.9412 -inner_num 2"
+ARGS2="-nodisp -route_only -route_chan_width 15 -pres_fac_mult 2 -acc_fac 1 -first_iter_pres_fac 4 -initial_pres_fac 8"
+
+
+${PREFIX} $1  ${DASHDASH} net.in arch.in place.out dum.out ${ARGS1} \
+  >place_log.out 2>stderr1.out
+
+${PREFIX} $1  ${DASHDASH} net.in arch.in place.in route.out ${ARGS2} \
+  >route_log.out 2>stderr2.out
+
+LIST="place_log.out route_log.out costs.out route.out"
+
+if [[ "${VERIFY}" != "no" ]] ; then
+   echo "VERIFY"
+   for i in ${LIST} ; do
+     if ! diff $i data/test/output/$i ; then
+       echo ""
+       echo "Diff in $i  might be within the tolerance"
+     fi
+   done
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/175.vpr/run.train.sh b/src/native_client/tests/spec2k/175.vpr/run.train.sh
new file mode 100755 (executable)
index 0000000..9714caa
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch costs.out place.out route.out
+fi
+
+ARGS1="-nodisp -place_only -init_t 5 -exit_t 0.005 -alpha_t 0.9412 -inner_num 2"
+ARGS2="-nodisp -route_only -route_chan_width 15 -pres_fac_mult 2 -acc_fac 1 -first_iter_pres_fac 4 -initial_pres_fac 8"
+
+
+${PREFIX} $1  ${DASHDASH} net.in arch.in place.out dum.out ${ARGS1} \
+  >place_log.out 2>stderr1.out
+
+${PREFIX} $1  ${DASHDASH} net.in arch.in place.in route.out ${ARGS2} \
+  >route_log.out 2>stderr2.out
+
+LIST="place_log.out route_log.out costs.out route.out"
+
+if [[ "${VERIFY}" != "no" ]] ; then
+   echo "VERIFY"
+   for i in ${LIST} ; do
+     # NOTE: We are a little more conservative than spec with regard to reltol.
+     # (the normal harness uses weaker reltols for some files).
+     ../specdiff.sh -r 0.015 -l 10 $i data/train/output/$i
+   done
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/176.gcc/Makefile b/src/native_client/tests/spec2k/176.gcc/Makefile
new file mode 100644 (file)
index 0000000..b4af2b6
--- /dev/null
@@ -0,0 +1,22 @@
+
+SRC= \
+src/bc-emit.c      src/calls.c       src/function.c      src/loop.c        src/rtl.c\
+src/bc-optab.c     src/combine.c     src/getpwd.c        src/m88k.c        src/rtlanal.c\
+src/c-aux-info.c   src/convert.c     src/global.c        src/obstack.c     src/sched.c\
+src/c-common.c     src/cse.c         src/insn-attrtab.c  src/optabs.c      src/sdbout.c\
+src/c-convert.c    src/dbxout.c      src/insn-emit.c     src/print-rtl.c   src/stmt.c\
+src/c-decl.c       src/dwarfout.c    src/insn-extract.c  src/print-tree.c  src/stor-layout.c\
+src/c-iterate.c    src/emit-rtl.c    src/insn-opinit.c   src/real.c        src/stupid.c\
+src/c-lang.c       src/explow.c      src/insn-output.c   src/recog.c       src/toplev.c\
+src/c-lex.c        src/expmed.c      src/insn-peep.c     src/reg-stack.c   src/tree.c\
+src/c-parse.c      src/expr.c        src/insn-recog.c    src/regclass.c    src/unroll.c\
+src/c-pragma.c     src/final.c       src/integrate.c     src/reload.c      src/varasm.c\
+src/c-typeck.c     src/flow.c        src/jump.c          src/reload1.c     src/version.c\
+src/caller-save.c  src/fold-const.c  src/local-alloc.c   src/reorg.c       src/xcoffout.c
+
+IT=gcc
+CFLAGS_EXTRA = -DHOST_WORDS_LITTLE_ENDIAN -std=gnu89
+EMCCFLAGS_EXTRA_TRAIN = --preload-file data/train/input
+EMCCFLAGS_EXTRA_REF = --preload-file data/ref/input
+
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/176.gcc/run.ref.sh b/src/native_client/tests/spec2k/176.gcc/run.ref.sh
new file mode 100755 (executable)
index 0000000..a1bb6f2
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+
+LIST="166.i 200.i expr.i integrate.i  scilab.i"
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+
+for i in ${LIST} ; do
+  out=${i%.*}.s
+  if [[ "${EMU_HACK}" != "no" ]] ; then
+    touch ${out}
+  fi
+
+
+  ${PREFIX} $1 ${DASHDASH} data/ref/input/$i -o ${out} \
+    > $i.stdout.out 2> $i.stderr.out
+done
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  for i in ${LIST} ; do
+    out=${i%.*}.s
+    cmp  ${out}  data/ref/output/${out}
+  done
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/176.gcc/run.train.sh b/src/native_client/tests/spec2k/176.gcc/run.train.sh
new file mode 100755 (executable)
index 0000000..bc4635c
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch cp-decl.s
+fi
+
+${PREFIX} $1 ${DASHDASH} data/train/input/cp-decl.i -o cp-decl.s \
+  > stdout.out 2> stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  cp-decl.s  data/train/output/cp-decl.s
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/177.mesa/Makefile b/src/native_client/tests/spec2k/177.mesa/Makefile
new file mode 100644 (file)
index 0000000..7b1b7b7
--- /dev/null
@@ -0,0 +1,66 @@
+SRC=\
+src/accum.c \
+src/alpha.c \
+src/alphabuf.c \
+src/api1.c \
+src/api2.c \
+src/attrib.c \
+src/bitmap.c \
+src/blend.c \
+src/clip.c \
+src/colortab.c \
+src/context.c \
+src/copypix.c \
+src/depth.c \
+src/dlist.c \
+src/drawpix.c \
+src/enable.c \
+src/eval.c \
+src/feedback.c \
+src/fog.c \
+src/get.c \
+src/hash.c \
+src/image.c \
+src/light.c \
+src/lines.c \
+src/logic.c \
+src/masking.c \
+src/mesa4.c \
+src/matrix.c \
+src/misc.c \
+src/mmath.c \
+src/osmesa.c \
+src/pb.c \
+src/pixel.c \
+src/pointers.c \
+src/points.c \
+src/polygon.c \
+src/quads.c \
+src/rastpos.c \
+src/readpix.c \
+src/rect.c \
+src/scissor.c \
+src/shade.c \
+src/span.c \
+src/stencil.c \
+src/teximage.c \
+src/texobj.c \
+src/texstate.c \
+src/texture.c \
+src/triangle.c \
+src/varray.c \
+src/vb.c \
+src/vbfill.c \
+src/vbrender.c \
+src/vbxform.c \
+src/winpos.c \
+src/xform.c
+
+IT=mesa
+CFLAGS_EXTRA = -DSPEC_CPU2000
+EMCCFLAGS_EXTRA_TRAIN = --preload-file mesa.in --preload-file numbers
+EMCCFLAGS_EXTRA_REF = --preload-file mesa.in --preload-file numbers
+
+EXTRA_CLEAN= ref.* train.*
+
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/177.mesa/run.ref.sh b/src/native_client/tests/spec2k/177.mesa/run.ref.sh
new file mode 100755 (executable)
index 0000000..cd5feb8
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1 ${DASHDASH} -frames 1000 -meshfile mesa.in -ppmfile mesa.ppm >mesa.out 2>mesa.err
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  mesa.log  data/ref/output/mesa.log
+  ../specdiff.sh -a 6 -l 10 mesa.ppm data/ref/output/mesa.ppm
+fi
+
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/177.mesa/run.train.sh b/src/native_client/tests/spec2k/177.mesa/run.train.sh
new file mode 100755 (executable)
index 0000000..fda6b82
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH} -frames 500 -meshfile mesa.in -ppmfile mesa.ppm \
+  > mesa.out 2> mesa.err
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  mesa.log  data/train/output/mesa.log
+  ../specdiff.sh -a 6 -l 10 mesa.ppm data/train/output/mesa.ppm
+fi
+
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/179.art/Makefile b/src/native_client/tests/spec2k/179.art/Makefile
new file mode 100644 (file)
index 0000000..a51a7b6
--- /dev/null
@@ -0,0 +1,11 @@
+SRC=src/scanner.c
+
+
+IT=art
+CFLAGS_EXTRA = -DSPEC_CPU2000
+EMCCFLAGS_EXTRA_TRAIN = --preload-file c756hel.in --preload-file a10.img --preload-file hc.img
+EMCCFLAGS_EXTRA_REF = --preload-file c756hel.in --preload-file a10.img --preload-file hc.img
+
+EXTRA_CLEAN= ref.* train.*
+
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/179.art/run.ref.sh b/src/native_client/tests/spec2k/179.art/run.ref.sh
new file mode 100755 (executable)
index 0000000..13c6ca0
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+# First run
+${PREFIX} $1 ${DASHDASH} -scanfile c756hel.in\
+                         -trainfile1 a10.img\
+                         -trainfile2 hc.img\
+                         -stride 2\
+                         -startx 110\
+                         -starty 200\
+                         -endx 160\
+                         -endy 240\
+                         -objects 10 > ref.1.out 2> ref.1.err
+
+# Second run
+${PREFIX} $1 ${DASHDASH} -scanfile c756hel.in\
+                         -trainfile1 a10.img\
+                         -trainfile2 hc.img\
+                         -stride 2\
+                         -startx 470\
+                         -starty 140\
+                         -endx 520\
+                         -endy 180\
+                         -objects 10 > ref.2.out 2> ref.2.err
+
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -r 0.01 -l 10 ref.1.out data/ref/output/ref.1.out
+  ../specdiff.sh -r 0.01 -l 10 ref.2.out data/ref/output/ref.2.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/179.art/run.train.sh b/src/native_client/tests/spec2k/179.art/run.train.sh
new file mode 100755 (executable)
index 0000000..1a2b268
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+
+${PREFIX} $1 ${DASHDASH} -scanfile c756hel.in\
+                         -trainfile1 a10.img\
+                         -stride 2\
+                         -startx 134\
+                         -starty 220\
+                         -endx 184\
+                         -endy 240\
+                         -objects 3 >train.out 2>stderr.out
+
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -r 0.01 -l 10 train.out data/train/output/train.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/181.mcf/Makefile b/src/native_client/tests/spec2k/181.mcf/Makefile
new file mode 100644 (file)
index 0000000..16035bf
--- /dev/null
@@ -0,0 +1,20 @@
+SRC=\
+src/implicit.c \
+src/mcf.c \
+src/mcfutil.c \
+src/output.c \
+src/pbeampp.c \
+src/pbla.c \
+src/pflowup.c \
+src/psimplex.c \
+src/pstart.c \
+src/readmin.c \
+src/treeup.c
+
+IT=mcf
+
+CFLAGS = -DWANT_STDC_PROTO
+EMCCFLAGS_EXTRA_TRAIN = --preload-file data/train/input
+EMCCFLAGS_EXTRA_REF = --preload-file data/ref/input
+include ../Makefile.common
+
diff --git a/src/native_client/tests/spec2k/181.mcf/run.ref.sh b/src/native_client/tests/spec2k/181.mcf/run.ref.sh
new file mode 100755 (executable)
index 0000000..f7cf3be
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch mcf.out
+fi
+
+${PREFIX} $1  ${DASHDASH} data/ref/input/inp.in >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp stdout.out  data/ref/output/inp.out
+  cmp mcf.out data/ref/output/mcf.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/181.mcf/run.train.sh b/src/native_client/tests/spec2k/181.mcf/run.train.sh
new file mode 100755 (executable)
index 0000000..ab99c86
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch mcf.out
+fi
+
+${PREFIX} $1  ${DASHDASH} data/train/input/inp.in >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp stdout.out  data/train/output/inp.out
+  cmp mcf.out data/train/output/mcf.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/183.equake/Makefile b/src/native_client/tests/spec2k/183.equake/Makefile
new file mode 100644 (file)
index 0000000..a919cfa
--- /dev/null
@@ -0,0 +1,11 @@
+SRC=src/quake.c
+
+
+IT=equake
+CFLAGS_EXTRA = -DSPEC_CPU2000
+EMCCFLAGS_EXTRA_TRAIN =
+EMCCFLAGS_EXTRA_REF =
+
+EXTRA_CLEAN= ref.* train.*
+
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/183.equake/run.ref.sh b/src/native_client/tests/spec2k/183.equake/run.ref.sh
new file mode 100755 (executable)
index 0000000..5f79387
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1 ${DASHDASH}  <inp.in  >inp.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -r 0.00001 -l 10 inp.out data/ref/output/inp.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/183.equake/run.train.sh b/src/native_client/tests/spec2k/183.equake/run.train.sh
new file mode 100755 (executable)
index 0000000..0530775
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH}  <inp.in  >inp.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -r 0.00001 -l 10 inp.out data/train/output/inp.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/186.crafty/Makefile b/src/native_client/tests/spec2k/186.crafty/Makefile
new file mode 100644 (file)
index 0000000..ac60020
--- /dev/null
@@ -0,0 +1,48 @@
+
+SRC= \
+src/searchr.c\
+src/search.c\
+src/repeat.c\
+src/next.c\
+src/nextr.c\
+src/history.c\
+src/nexte.c\
+src/quiesce.c\
+src/evaluate.c\
+src/movgen.c\
+src/make.c\
+src/unmake.c\
+src/lookup.c\
+src/store.c\
+src/attacks.c\
+src/swap.c\
+src/boolean.c\
+src/draw.c\
+src/utility.c\
+src/valid.c\
+src/drawn.c\
+src/edit.c\
+src/enprise.c\
+src/init.c\
+src/input.c\
+src/interupt.c\
+src/iterate.c\
+src/main.c\
+src/option.c\
+src/output.c\
+src/phase.c\
+src/ponder.c\
+src/preeval.c\
+src/root.c\
+src/setboard.c\
+src/time.c\
+src/validate.c
+
+IT=crafty
+CFLAGS_EXTRA = -DSPEC_CPU2000 -DLINUX_i386
+EMCCFLAGS_EXTRA_TRAIN =
+EMCCFLAGS_EXTRA_REF =
+
+EXTRA_CLEAN=game.*
+
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/186.crafty/diff b/src/native_client/tests/spec2k/186.crafty/diff
new file mode 100644 (file)
index 0000000..fd59b81
--- /dev/null
@@ -0,0 +1,13 @@
+diff -Naurb src/utility.c src.patched/utility.c
+--- src/utility.c      2010-06-02 16:09:05.000000000 -0400
++++ src.patched/utility.c      2010-06-02 16:09:05.000000000 -0400
+@@ -37,7 +37,8 @@
+ #    endif
+ #    include <sys/conf.h>
+ #  else
+-#    include <sys/ioctl.h>
++/* @LOCALMOD */
++/* #    include <sys/ioctl.h> */
+ #  endif
+ #endif
+ #if defined(UNIX)
diff --git a/src/native_client/tests/spec2k/186.crafty/diff.README b/src/native_client/tests/spec2k/186.crafty/diff.README
new file mode 100644 (file)
index 0000000..7aa34a9
--- /dev/null
@@ -0,0 +1,3 @@
+commented out:
+#include <sys/ioctl.h>
+as nacl does not have anything like ioctl.
diff --git a/src/native_client/tests/spec2k/186.crafty/run.ref.sh b/src/native_client/tests/spec2k/186.crafty/run.ref.sh
new file mode 100755 (executable)
index 0000000..3e3269b
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch game.001
+fi
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1 <data/ref/input/crafty.in >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp stdout.out data/ref/output/crafty.out
+fi
+
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/186.crafty/run.test.sh b/src/native_client/tests/spec2k/186.crafty/run.test.sh
new file mode 100755 (executable)
index 0000000..96657ba
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+rm -f *.out
+
+${PREFIX} $1 <data/test/input/crafty.in >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp stdout.out data/test/output/crafty.out
+fi
+
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/186.crafty/run.train.sh b/src/native_client/tests/spec2k/186.crafty/run.train.sh
new file mode 100755 (executable)
index 0000000..d0ba3ab
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch game.001
+fi
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 <data/train/input/crafty.in >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp stdout.out data/train/output/crafty.out
+fi
+
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/188.ammp/Makefile b/src/native_client/tests/spec2k/188.ammp/Makefile
new file mode 100644 (file)
index 0000000..e887d9d
--- /dev/null
@@ -0,0 +1,40 @@
+SRC= \
+src/ammp.c \
+src/analyze.c \
+src/angle.c \
+src/animate.c \
+src/anonbon.c \
+src/atoms.c \
+src/bonds.c \
+src/box.c \
+src/eval.c \
+src/gsdg.c \
+src/hybrid.c \
+src/math.c \
+src/mom.c \
+src/monitor.c \
+src/noel.c \
+src/optimist.c \
+src/random.c \
+src/rectmm.c \
+src/restrain.c \
+src/significance.c \
+src/tailor.c \
+src/tether.c \
+src/tgroup.c \
+src/torsion.c \
+src/tset.c \
+src/unonbon.c \
+src/variable.c \
+src/vnonbon.c
+
+
+IT=ammp
+CFLAGS_EXTRA = -DSPEC_CPU2000
+# TODO(stichnot): package up files once stdin problem is solved.
+EMCCFLAGS_EXTRA_TRAIN =
+EMCCFLAGS_EXTRA_REF =
+
+EXTRA_CLEAN= ref.* train.*
+
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/188.ammp/run.ref.sh b/src/native_client/tests/spec2k/188.ammp/run.ref.sh
new file mode 100755 (executable)
index 0000000..223b451
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1 ${DASHDASH} <ammp.in  >ammp.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -r 0.003 -a 0.0001 -l 10 ammp.out data/ref/output/ammp.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/188.ammp/run.train.sh b/src/native_client/tests/spec2k/188.ammp/run.train.sh
new file mode 100755 (executable)
index 0000000..585733e
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH} <ammp.in  >ammp.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -r 0.003 -a 0.0001 -l 10 ammp.out data/train/output/ammp.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/197.parser/Makefile b/src/native_client/tests/spec2k/197.parser/Makefile
new file mode 100644 (file)
index 0000000..4832f2a
--- /dev/null
@@ -0,0 +1,31 @@
+SRC=\
+src/analyze-linkage.c \
+src/and.c \
+src/build-disjuncts.c \
+src/extract-links.c \
+src/fast-match.c \
+src/idiom.c \
+src/main.c \
+src/massage.c \
+src/parse.c \
+src/post-process.c \
+src/print.c \
+src/prune.c \
+src/read-dict.c \
+src/strncasecmp.c \
+src/utilities.c \
+src/word-file.c \
+src/xalloc.c
+
+IT=parser
+
+CFLAGS_EXTRA = -DSPEC_CPU2000 -D_POSIX_SOURCE
+# TODO(stichnot): package up files once stdin problem is solved.
+EMCCFLAGS_EXTRA_TRAIN =
+EMCCFLAGS_EXTRA_REF =
+
+
+EXTRA_CLEAN=2.1.dict words
+
+include ../Makefile.common
+
diff --git a/src/native_client/tests/spec2k/197.parser/run.ref.sh b/src/native_client/tests/spec2k/197.parser/run.ref.sh
new file mode 100755 (executable)
index 0000000..bce6f18
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1 ${DASHDASH} 2.1.dict -batch < data/ref/input/ref.in  > stdout.out 2> stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  stdout.out  data/ref/output/ref.out
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/197.parser/run.train.sh b/src/native_client/tests/spec2k/197.parser/run.train.sh
new file mode 100755 (executable)
index 0000000..f32cad6
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH} 2.1.dict -batch < data/train/input/train.in \
+  > stdout.out 2> stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  stdout.out  data/train/output/train.out
+fi
+echo "OK"
diff --git a/src/native_client/tests/spec2k/252.eon/Makefile b/src/native_client/tests/spec2k/252.eon/Makefile
new file mode 100644 (file)
index 0000000..09c9bc0
--- /dev/null
@@ -0,0 +1,145 @@
+CPPSRC= \
+src/ggCoverageSolidTexture.cc \
+src/ggPathDielectricMaterial.cc \
+src/ggBox2.cc \
+src/ggBox3.cc \
+src/ggRasterSurfaceTexture.cc \
+src/ggJitterSample1.cc \
+src/ggNRooksSample2.cc \
+src/ggJitterSample2.cc \
+src/ggRGBFPixel.cc \
+src/ggRotatingPinholeCamera.cc \
+src/ggRandomSample2.cc \
+src/ggRandomSample3.cc \
+src/ggSolidNoise2.cc \
+src/ggSolidNoise3.cc \
+src/ggSolidTexture.cc \
+src/ggOakSolidTexture.cc \
+src/ggSpecularMaterial.cc \
+src/ggNA.cc \
+src/ggMaterial.cc \
+src/ggDiffuseMaterial.cc \
+src/ggDielectricMaterial.cc \
+src/ggConductorMaterial.cc \
+src/ggEdgeDiscrepancy.cc \
+src/ggPolishedMaterial.cc \
+src/ggFrameInterpolation.cc \
+src/ggQuaternion.cc \
+src/ggSpline.cc \
+src/ggONB2.cc \
+src/ggONB3.cc \
+src/ggFrame2.cc \
+src/ggFrame3.cc \
+src/ggHMatrix3.cc \
+src/ggSphere.cc \
+src/ggRGBE.cc \
+src/ggGamma.cc \
+src/ggBRDF.cc \
+src/ggDiffuseBRDF.cc \
+src/ggPhongBRDF.cc \
+src/ggPolishedBRDF.cc \
+src/ggCamera.cc \
+src/ggPinholeCamera.cc \
+src/ggThinLensCamera.cc \
+src/ggErr.cc \
+src/ggPixelFilter.cc \
+src/ggTrianglePixelFilter.cc \
+src/ggBoxPixelFilter.cc \
+src/ggFormat.cc \
+src/ggGeometry.cc \
+src/ggHAffineMatrix3.cc \
+src/ggHShearMatrix3.cc \
+src/ggHBoxMatrix3.cc \
+src/ggHPerspectiveMatrix3.cc \
+src/ggHTranslationMatrix3.cc \
+src/ggHRigidBodyMatrix3.cc \
+src/ggHRotationMatrix3.cc \
+src/ggHScaleMatrix3.cc \
+src/ggHPoint3.cc \
+src/ggPoint2.cc \
+src/ggPoint3.cc \
+src/ggOptics.cc \
+src/ggPlane.cc \
+src/ggPolygon.cc \
+src/ggGrayPixel_x.cc \
+src/ggRGBPixel_x.cc \
+src/ggRay2.cc \
+src/ggRay3.cc \
+src/ggBoardFloorSolidTexture.cc \
+src/ggVector2.cc \
+src/ggVector3.cc \
+src/ggString.cc \
+src/ggFineSpectrum.cc \
+src/ggSpectrum.cc \
+src/eon.cc \
+src/eonImageCalculator.cc \
+src/mrObjectRecord.cc \
+src/mrCoarsePixelRenderer.cc \
+src/mrIndirectPixelRenderer.cc \
+src/mrRushmeierPixelRenderer.cc \
+src/mrBruteForcePixelRenderer.cc \
+src/mrKajiyaPixelRenderer.cc \
+src/mrCookPixelRenderer.cc \
+src/mrGrid.cc \
+src/mrScene.cc \
+src/mrCamera.cc \
+src/mrTriangle.cc \
+src/mrFastTriangle.cc \
+src/mrPolygon.cc \
+src/mrXYDisk.cc \
+src/mrXZDisk.cc \
+src/mrYZDisk.cc \
+src/mrPhongAreaXYRectangleLuminaire.cc \
+src/mrPhongAreaXZRectangleLuminaire.cc \
+src/mrPhongAreaYZRectangleLuminaire.cc \
+src/mrEmitter.cc \
+src/mrImposter.cc \
+src/mrLinkedObjects.cc \
+src/mrBox.cc \
+src/mrXCylinder.cc \
+src/mrYCylinder.cc \
+src/mrZCylinder.cc \
+src/mrDiffuseAreaZCylinderLuminaire.cc \
+src/mrDiffuseCosineZCylinderLuminaire.cc \
+src/mrDiffuseVisibleAreaZCylinderLuminaire.cc \
+src/mrXEllipticalCylinder.cc \
+src/mrYEllipticalCylinder.cc \
+src/mrZEllipticalCylinder.cc \
+src/mrSpotAreaXYDiskLuminaire.cc \
+src/mrDiffuseAreaXYRectangleLuminaire.cc \
+src/mrDiffuseAreaXZRectangleLuminaire.cc \
+src/mrDiffuseAreaYZRectangleLuminaire.cc \
+src/mrSurfaceList.cc \
+src/mrDiffuseAreaTriangleLuminaire.cc \
+src/mrDiffuseAreaSphereLuminaire.cc \
+src/mrDiffuseCosineSphereLuminaire.cc \
+src/mrDiffuseSolidAngleSphereLuminaire.cc \
+src/mrShellLuminaire.cc \
+src/mrInstance.cc \
+src/mrMaterial.cc \
+src/mrPhongAreaTriangleLuminaire.cc \
+src/mrSolidTexture.cc \
+src/mrSphere.cc \
+src/mrSurface.cc \
+src/mrSurfaceTexture.cc \
+src/mrXYRectangle.cc \
+src/mrXZRectangle.cc \
+src/mrYZRectangle.cc \
+src/myrand.cc
+
+
+IT=eon
+CFLAGS_EXTRA = -DNDEBUG -Isrc  -DUSE_STRERROR -DHAS_ERRLIST
+EMCCFLAGS_EXTRA_TRAIN = \
+--preload-file chair.camera \
+--preload-file chair.control.cook \
+--preload-file chair.control.kajiya \
+--preload-file chair.control.rushmeier \
+--preload-file chair.surfaces \
+--preload-file eon.dat \
+--preload-file materials \
+--preload-file spectra.dat
+EMCCFLAGS_EXTRA_REF = $(EMCCFLAGS_EXTRA_TRAIN)
+
+EXTRA_CLEAN= pixels* chair* materials spectra.dat
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/252.eon/diff b/src/native_client/tests/spec2k/252.eon/diff
new file mode 100644 (file)
index 0000000..deb9e1d
--- /dev/null
@@ -0,0 +1,22 @@
+diff -Naurb src/eon.cc src2/eon.cc
+--- src/eon.cc 2010-07-23 02:51:57.000000000 -0700
++++ src2/eon.cc        2010-07-23 02:51:24.000000000 -0700
+@@ -53,7 +53,7 @@
+ #if defined( _WIN32 )
+ #else
+     struct tms time_usage;
+-    float clk_tck = (float) sysconf(_SC_CLK_TCK);
++    float clk_tck = (float) sysconf(2);
+     times(&time_usage);
+     float ustart_time = time_usage.tms_utime/clk_tck;
+     float sstart_time = time_usage.tms_stime/clk_tck;
+--- src/ggRaster.h     2010-08-27 17:10:00.000000000 -0400
++++ src2/ggRaster.h    2010-08-27 16:59:48.000000000 -0400
+@@ -186,6 +186,7 @@
+                        const T& c1,
+                        const T& c2);
+ //#if defined( _WIN32 )
++#include <string.h>
+ #include "ggRaster.cc"
+ //#endif
+ #endif
diff --git a/src/native_client/tests/spec2k/252.eon/diff.README b/src/native_client/tests/spec2k/252.eon/diff.README
new file mode 100644 (file)
index 0000000..d319ef7
--- /dev/null
@@ -0,0 +1,7 @@
+Added diff to change _SC_CLK_TCK to 2. For some reason,
+our headers don't define _SC_CLK_TCK. (they probably should)
+
+Commented out -DHAS_ERRLIST from CFLAGS_EXTRA, since
+our headers don't seem to provide sys_nerr, sys_errlist.
+
+Changed SRC to CPPSRC in Makefile.
diff --git a/src/native_client/tests/spec2k/252.eon/run.ref.sh b/src/native_client/tests/spec2k/252.eon/run.ref.sh
new file mode 100755 (executable)
index 0000000..734c677
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+LIST="pixels_out.cook  pixels_out.kajiya pixels_out.rushmeier"
+
+${PREFIX} $1 ${DASHDASH} chair.control.kajiya chair.camera chair.surfaces chair.kajiya.ppm ppm pixels_out.kajiya \
+  > stdout1.out 2> stderr1.out
+
+${PREFIX} $1 ${DASHDASH} chair.control.cook chair.camera chair.surfaces chair.cook.ppm, ppm pixels_out.cook \
+  > stdout2.out 2> stderr2.out
+
+${PREFIX} $1 ${DASHDASH} chair.control.rushmeier chair.camera chair.surfaces  chair.rushmeier.ppm ppm pixels_out.rushmeier \
+  > stdout3.out 2> stderr3.out
+
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  for i in ${LIST} ; do
+    ../specdiff.sh -a 0.005  $i  data/ref/output/$i
+  done
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/252.eon/run.train.sh b/src/native_client/tests/spec2k/252.eon/run.train.sh
new file mode 100755 (executable)
index 0000000..6ee52f6
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+LIST="pixels_out.cook  pixels_out.kajiya pixels_out.rushmeier"
+${PREFIX} $1 ${DASHDASH} chair.control.kajiya chair.camera chair.surfaces \
+  chair.kajiya.ppm ppm pixels_out.kajiya > stdout1.out 2> stderr1.out
+
+${PREFIX} $1 ${DASHDASH} chair.control.cook chair.camera chair.surfaces \
+  chair.cook.ppm, ppm pixels_out.cook > stdout2.out 2> stderr2.out
+
+${PREFIX} $1 ${DASHDASH} chair.control.rushmeier chair.camera chair.surfaces \
+  chair.rushmeier.ppm ppm pixels_out.rushmeier > stdout3.out 2> stderr3.out
+
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  for i in ${LIST} ; do
+    ../specdiff.sh -a 0.005  $i  data/train/output/$i
+  done
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/253.perlbmk/Makefile b/src/native_client/tests/spec2k/253.perlbmk/Makefile
new file mode 100644 (file)
index 0000000..b831d21
--- /dev/null
@@ -0,0 +1,45 @@
+# src/MD5.c  src/byterun.c src/ebcdic.c src/md5c.c
+
+SRC=\
+src/av.c \
+src/deb.c \
+src/doio.c \
+src/doop.c \
+src/dump.c \
+src/fake_dyna.c \
+src/globals.c \
+src/gv.c \
+src/hv.c \
+src/mg.c \
+src/op.c \
+src/perl.c \
+src/perlio.c \
+src/perly.c \
+src/pp.c \
+src/pp_ctl.c \
+src/pp_hot.c \
+src/pp_sys.c \
+src/regcomp.c \
+src/regexec.c \
+src/run.c \
+src/scope.c \
+src/sv.c \
+src/taint.c \
+src/toke.c \
+src/universal.c \
+src/unix_perlmain.c \
+src/util.c \
+src/MD5.c \
+src/md5c.c
+
+IT=perlbmk
+#CFLAGS_EXTRA = -DSPEC_CPU2000_LINUX -D_IOCTL_  -DHAS_DBL_DIG
+
+CFLAGS_EXTRA = -DSPEC_CPU2000_LINUX -DHAS_DBL_DIG -DSPEC_CPU2000_NEED_TIME_H \
+-DSPEC_CPU2000_NEED_BOOL
+EMCCFLAGS_EXTRA_TRAIN = --preload-file lib --preload-file lenums --preload-file benums --preload-file dictionary
+EMCCFLAGS_EXTRA_REF = --preload-file lib --preload-file lenums --preload-file benums --preload-file dictionary --preload-file cpu2000_mhonarc.rc
+
+EXTRA_CLEAN= benums  cpu2000_mhonarc.rc lib dictionary
+
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/253.perlbmk/diff b/src/native_client/tests/spec2k/253.perlbmk/diff
new file mode 100644 (file)
index 0000000..5c6a454
--- /dev/null
@@ -0,0 +1,94 @@
+diff -NaurbB src/iperlsys.h src.patched/iperlsys.h
+--- src/iperlsys.h     2010-06-02 16:09:05.000000000 -0400
++++ src.patched/iperlsys.h     2010-06-02 16:09:05.000000000 -0400
+@@ -675,11 +675,18 @@
+ #define PerlProc_crypt(c,s)   PL_piProc->Crypt((c), (s))
+ #define PerlProc_exit(s)      PL_piProc->Exit((s))
+ #define PerlProc__exit(s)     PL_piProc->_Exit((s))
++/* @LOCALMOD */
++#if 1
++#define PerlProc_execl(c, w, x, y, z)         PL_piProc->Abort()
++#define PerlProc_execv(c, a)          PL_piProc->Abort()
++#define PerlProc_execvp(c, a)         PL_piProc->Abort()
++#else
+ #define PerlProc_execl(c, w, x, y, z)                                 \
+       PL_piProc->Execl((c), (w), (x), (y), (z))
+ #define PerlProc_execv(c, a)  PL_piProc->Execv((c), (a))
+ #define PerlProc_execvp(c, a) PL_piProc->Execvp((c), (a))
++#endif
+ #define PerlProc_getuid()     PL_piProc->Getuid()
+ #define PerlProc_geteuid()    PL_piProc->Geteuid()
+ #define PerlProc_getgid()     PL_piProc->Getgid()
+@@ -718,10 +725,17 @@
+ #define PerlProc_crypt(c,s)   crypt((c), (s))
+ #define PerlProc_exit(s)      exit((s))
+ #define PerlProc__exit(s)     _exit((s))
++/* @LOCALMOD */
++#if 1
++#define PerlProc_execl(c,w,x,y,z)      abort()        
++#define PerlProc_execv(c, a)  abort()
++#define PerlProc_execvp(c, a) abort()
++#else
+ #define PerlProc_execl(c,w,x,y,z)                                     \
+       execl((c), (w), (x), (y), (z))
+ #define PerlProc_execv(c, a)  execv((c), (a))
+ #define PerlProc_execvp(c, a) execvp((c), (a))
++#endif
+ #define PerlProc_getuid()     getuid()
+ #define PerlProc_geteuid()    geteuid()
+ #define PerlProc_getgid()     getgid()
+diff -NaurbB src/pp_sys.c src.patched/pp_sys.c
+--- src/pp_sys.c       2010-06-02 16:09:05.000000000 -0400
++++ src.patched/pp_sys.c       2010-06-02 16:09:05.000000000 -0400
+@@ -4549,6 +4550,8 @@
+ static int
+ fcntl_emulate_flock(int fd, int operation)
+ {
++  /* @LOCALMOD */
++#if 0
+     struct flock flock;
+  
+     switch (operation & ~LOCK_NB) {
+@@ -4569,6 +4572,7 @@
+     flock.l_start = flock.l_len = 0L;
+  
+     return fcntl(fd, (operation & LOCK_NB) ? F_SETLK : F_SETLKW, &flock);
++#endif
+ }
+ #endif /* FCNTL_EMULATE_FLOCK */
+diff -NaurbB src/spec_config.h src.patched/spec_config.h
+--- src/spec_config.h  2010-06-02 16:09:05.000000000 -0400
++++ src.patched/spec_config.h  2010-06-02 16:09:05.000000000 -0400
+@@ -1,5 +1,11 @@
+ #ifndef _config_h_
+ #define _config_h_
++
++/*@LOCALMOD */
++#if !defined(__native_client__)
++#define SPEC_CPU2000_NEED_BOOL
++#endif
++
+ /*
+ ****************************************************************************
+ * spec_config.h - Attempt to produce a common perl config.h that will 
+@@ -1050,7 +1056,7 @@
+  *    available to select active file descriptors. If the timeout field
+  *    is used, <sys/time.h> may need to be included.
+  */
+-#define HAS_SELECT
++/*#define HAS_SELECT*/
+ /* HAS_SEM:
+  *    This symbol, if defined, indicates that the entire sem*(2) library is
+@@ -1759,7 +1765,8 @@
+ #ifdef SPEC_CPU2000_NTOS
+ /*#undef      I_SYS_IOCTL*/
+ #else
+-#define       I_SYS_IOCTL
++/* @LOCALMOD */
++/* #define    I_SYS_IOCTL */
+ #endif
+ /* I_SYS_NDIR:
diff --git a/src/native_client/tests/spec2k/253.perlbmk/diff.README b/src/native_client/tests/spec2k/253.perlbmk/diff.README
new file mode 100644 (file)
index 0000000..dcca4bd
--- /dev/null
@@ -0,0 +1,3 @@
+Eliminate uses of fcntl, exec, etc.
+which are apparently stubbed out in the x86 but not the ARM toolchain.
+Also, added hack where SPEC_CPU2000_NEED_BOOL gets defined for non-nacl systems
diff --git a/src/native_client/tests/spec2k/253.perlbmk/run.ref.sh b/src/native_client/tests/spec2k/253.perlbmk/run.ref.sh
new file mode 100755 (executable)
index 0000000..1193392
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/all/input/diffmail.pl 2 550 15 24 23 100 \
+    > stdout1.out 2> stderr1.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/all/input/perfect.pl  b 3 m 4\
+  > stdout2.out 2> stderr2.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/ref/input/makerand.pl \
+  > stdout3.out 2> stderr3.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/ref/input/splitmail.pl 850 5 19 18 1500\
+  > stdout4.out 2> stderr4.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/ref/input/splitmail.pl 704 12 26 16 836\
+  > stdout5.out 2> stderr5.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/ref/input/splitmail.pl 535 13 25 24 1091\
+  > stdout6.out 2> stderr6.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/ref/input/splitmail.pl 957 12 23 26 1014\
+  > stdout7.out 2> stderr7.out
+
+
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  stdout1.out  data/ref/output/2.550.15.24.23.100.out
+  cmp  stdout2.out  data/ref/output/b.3.m.4.out
+  cmp  stdout3.out  data/ref/output/makerand.out
+  cmp  stdout4.out  data/ref/output/850.5.19.18.1500.out
+  cmp  stdout5.out  data/ref/output/704.12.26.16.836.out
+  cmp  stdout6.out  data/ref/output/535.13.25.24.1091.out
+  cmp  stdout7.out  data/ref/output/957.12.23.26.1014.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/253.perlbmk/run.train.sh b/src/native_client/tests/spec2k/253.perlbmk/run.train.sh
new file mode 100755 (executable)
index 0000000..5313a19
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/all/input/diffmail.pl 2 350 15 24 23 150 \
+    > stdout1.out 2> stderr1.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib data/all/input/perfect.pl  b 3 \
+  > stdout2.out 2> stderr2.out
+
+${PREFIX} $1 ${DASHDASH} -I./lib  data/train/input/scrabbl.pl \
+  <  data/train/input/scrabbl.in  > stdout3.out 2> stderr3.out
+
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  stdout1.out  data/train/output/2.350.15.24.23.150.out
+  cmp  stdout2.out  data/train/output/b.3.out
+  cmp  stdout3.out  data/train/output/scrabbl.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/254.gap/Makefile b/src/native_client/tests/spec2k/254.gap/Makefile
new file mode 100644 (file)
index 0000000..d833439
--- /dev/null
@@ -0,0 +1,46 @@
+SRC=\
+src/agcollec.c \
+src/aggroup.c \
+src/blister.c \
+src/coding.c \
+src/costab.c \
+src/cyclotom.c \
+src/eval.c \
+src/finfield.c \
+src/function.c \
+src/gap.c \
+src/gasman.c \
+src/idents.c \
+src/integer.c \
+src/list.c \
+src/pcpresen.c \
+src/permutat.c \
+src/plist.c \
+src/polynom.c \
+src/range.c \
+src/rational.c \
+src/read.c \
+src/record.c \
+src/scanner.c \
+src/set.c \
+src/statemen.c \
+src/string.c \
+src/system.c \
+src/tietze.c \
+src/unknown.c \
+src/vecffe.c \
+src/vector.c \
+src/word.c
+
+IT=gap
+
+CFLAGS_EXTRA = -DSYS_HAS_CALLOC_PROTO  -DSYS_IS_USG -DSYS_HAS_IOCTL_PROTO -DSYS_HAS_TIME_PROTO
+# TODO(stichnot): package up files once stdin problem is solved.
+EMCCFLAGS_EXTRA_TRAIN =
+EMCCFLAGS_EXTRA_REF =
+
+# 254.gap relies on signed arithmetic overflow being well-defined.
+CFLAGS_EXTRA += -fwrapv
+
+include ../Makefile.common
+
diff --git a/src/native_client/tests/spec2k/254.gap/diff b/src/native_client/tests/spec2k/254.gap/diff
new file mode 100644 (file)
index 0000000..44ed454
--- /dev/null
@@ -0,0 +1,106 @@
+diff -NaurbB src/system.c src.patched/system.c
+--- src/system.c       2001-04-24 23:41:02.000000000 -0400
++++ src.patched/system.c       2010-06-16 14:29:21.000000000 -0400
+@@ -1572,6 +1572,9 @@
+ */
+ #if SYS_USG
++/* @LOCALMOD-START */
++#if 0
++
+ #ifndef SYS_TERMIO_H                    /* terminal control functions      */
+ # include       <termio.h>
+ # define SYS_TERMIO_H
+@@ -1603,6 +1606,10 @@
+ extern  int             write P(( int, char *, int ));
+ #endif
++/* @LOCALMOD-END */
++#endif 
++
++
+ #ifdef SIGTSTP
+ long            syFid;
+@@ -1611,8 +1618,11 @@
+     int                 signr;
+ {
+     syStartraw( syFid );
++/* @LOCALMOD-START */
++#if 0
+     signal( SIGCONT, SIG_DFL );
+     kill( getpid(), SIGCONT );
++#endif
+ #ifdef SYS_HAS_SIG_T
+     return 0;                           /* is ignored                      */
+ #endif
+@@ -1622,8 +1632,11 @@
+     int                 signr;
+ {
+     syStopraw( syFid );
++/* @LOCALMOD-START */
++#if 0
+     signal( SIGCONT, syAnswerCont );
+     kill( getpid(), SIGTSTP );
++#endif
+ #ifdef SYS_HAS_SIG_T
+     return 0;                           /* is ignored                      */
+ #endif
+@@ -1634,6 +1647,10 @@
+ int             syStartraw ( fid )
+     long                fid;
+ {
++  /* @LOCALMOD */
++  return 0;
++#if 0
++
+     /* if running under a window handler, tell it that we want to read     */
+     if ( syWindow ) {
+         if      ( fid == 0 ) { syWinPut( fid, "@i", "" );  return 1; }
+@@ -1666,6 +1683,9 @@
+     /* indicate success                                                    */
+     return 1;
++  /* @LOCALMOD */
++#endif
++    
+ }
+ void            syStopraw ( fid )
+@@ -1674,7 +1694,8 @@
+     /* if running under a window handler, don't do nothing                 */
+     if ( syWindow )
+         return;
+-
++ /* @LOCALMOD */
++#if 0
+ #ifdef SIGTSTP
+     /* remove signal handler for stop                                      */
+     signal( SIGTSTP, SIG_DFL );
+@@ -1683,6 +1704,8 @@
+     /* enable input buffering, line editing and echo again                 */
+     if ( ioctl( fileno(syBuf[fid].fp), TCSETAW, &syOld ) == -1 )
+         fputs("gap: 'ioctl' could not turn off raw mode!\n",stderr);
++ /* @LOCALMOD */
++#endif
+ }
+ int             syGetch ( fid )
+@@ -3434,6 +3457,9 @@
+ unsigned long   SyTime ()
+ {
++  /* @LOCALMOD */
++  return 1000;
++#if 0
+     struct tms          tbuf;
+     if ( times( &tbuf ) == -1 ) {
+@@ -3441,6 +3467,7 @@
+         SyExit( 1 );
+     }
+     return 100 * tbuf.tms_utime / (HZ / 10) - syStartTime;
++#endif
+ }
+ #endif
diff --git a/src/native_client/tests/spec2k/254.gap/diff.README b/src/native_client/tests/spec2k/254.gap/diff.README
new file mode 100644 (file)
index 0000000..5a74da7
--- /dev/null
@@ -0,0 +1,2 @@
+Eliminate signal, kill, termio, etc.
+which are apparently stubbed out in the x86 but not the ARM toolchain
diff --git a/src/native_client/tests/spec2k/254.gap/run.ref.sh b/src/native_client/tests/spec2k/254.gap/run.ref.sh
new file mode 100755 (executable)
index 0000000..be15b51
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1 ${DASHDASH} -l data/all/input/ -q -m 192M \
+    < data/ref/input/ref.in  > stdout.out 2> stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  stdout.out  data/ref/output/ref.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/254.gap/run.train.sh b/src/native_client/tests/spec2k/254.gap/run.train.sh
new file mode 100755 (executable)
index 0000000..1c4e06e
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH} -l data/all/input/ -q -m 128M \
+    < data/train/input/train.in  > stdout.out 2> stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  stdout.out  data/train/output/train.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/255.vortex/Makefile b/src/native_client/tests/spec2k/255.vortex/Makefile
new file mode 100644 (file)
index 0000000..a4db8ad
--- /dev/null
@@ -0,0 +1,93 @@
+SRC = \
+src/bitvec.c \
+src/bmt.c \
+src/bmt0.c \
+src/bmt01.c \
+src/bmt10.c \
+src/bmtlib.c \
+src/bmtobj.c \
+src/core01.c \
+src/dba.c \
+src/dbm0.c \
+src/dbm1.c \
+src/dbm2.c \
+src/domain.c \
+src/draw07.c \
+src/draw7.c \
+src/drawlib.c \
+src/drawobj.c \
+src/emplib.c \
+src/empobj.c \
+src/env0.c \
+src/env01.c \
+src/env1.c \
+src/fm.c \
+src/gdbm.c \
+src/grp0.c \
+src/grp1.c \
+src/grp2.c \
+src/hm.c \
+src/iam.c \
+src/ifm.c \
+src/im.c \
+src/km.c \
+src/list01.c \
+src/mem00.c \
+src/mem01.c \
+src/mem10.c \
+src/oa0.c \
+src/oa1.c \
+src/oadmp.c \
+src/obj01.c \
+src/odbm.c \
+src/ogrp.c \
+src/om.c \
+src/point.c \
+src/primal.c \
+src/pstub.c \
+src/query.c \
+src/rect.c \
+src/rects.c \
+src/sa.c \
+src/shell.c \
+src/sm.c \
+src/testobj.c \
+src/tm.c \
+src/trans00.c \
+src/trans01.c \
+src/trans10.c \
+src/trans20.c \
+src/tree0.c \
+src/tree00.c \
+src/tree01.c \
+src/ut.c \
+src/vchunk.c \
+src/vdbm.c \
+src/voa.c \
+src/vom.c
+
+
+IT=vortex
+CFLAGS_EXTRA=-fno-strict-aliasing
+EMCCFLAGS_EXTRA_TRAIN = --preload-file bendian.raw \
+--preload-file bendian.rnv \
+--preload-file bendian.wnv \
+--preload-file lendian.raw \
+--preload-file lendian.rnv \
+--preload-file lendian.wnv \
+--preload-file persons.250
+
+EMCCFLAGS_EXTRA_REF = --preload-file bendian1.raw \
+--preload-file bendian2.raw \
+--preload-file bendian3.raw \
+--preload-file bendian.rnv \
+--preload-file bendian.wnv \
+--preload-file lendian1.raw \
+--preload-file lendian2.raw \
+--preload-file lendian3.raw \
+--preload-file lendian.rnv \
+--preload-file lendian.wnv \
+--preload-file persons.1k
+
+EXTRA_CLEAN=persons.* lendian* bendian*
+include ../Makefile.common
diff --git a/src/native_client/tests/spec2k/255.vortex/run.ref.sh b/src/native_client/tests/spec2k/255.vortex/run.ref.sh
new file mode 100755 (executable)
index 0000000..30e3e71
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+LIST="1 2 3"
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch  vortex.msg
+  touch  vortex1.out vortex2.out vortex3.out
+fi
+
+
+for i in ${LIST} ; do
+  ${PREFIX} $1 ${DASHDASH} lendian$i.raw     > $i.stdout.out 2> $i.stderr.out
+done
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  for i in ${LIST} ; do
+    cmp  vortex$i.out   data/ref/output/vortex$i.out
+  done
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/255.vortex/run.train.sh b/src/native_client/tests/spec2k/255.vortex/run.train.sh
new file mode 100755 (executable)
index 0000000..687e2d2
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch  vortex.msg
+  touch  vortex.out
+fi
+
+${PREFIX} $1 ${DASHDASH} lendian.raw     > stdout.out 2> stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  vortex.out   data/train/output/vortex.out
+fi
+
+echo "OK"
diff --git a/src/native_client/tests/spec2k/256.bzip2/Makefile b/src/native_client/tests/spec2k/256.bzip2/Makefile
new file mode 100644 (file)
index 0000000..f3ec082
--- /dev/null
@@ -0,0 +1,9 @@
+
+SRC=src/spec.c src/bzip2.c
+
+IT=bzip2
+EXTRA_CLEAN =
+EMCCFLAGS_EXTRA_TRAIN = --preload-file data/train/input
+EMCCFLAGS_EXTRA_REF = --preload-file data/ref/input
+include ../Makefile.common
+
diff --git a/src/native_client/tests/spec2k/256.bzip2/run.ref.sh b/src/native_client/tests/spec2k/256.bzip2/run.ref.sh
new file mode 100755 (executable)
index 0000000..6f3f593
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+VERIFY=${PREFIX:-yes}
+PREFIX=${PREFIX:-}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+${PREFIX} $1  ${DASHDASH} data/ref/input/input.source 58 > input.source.out  2>stderr1.out
+${PREFIX} $1  ${DASHDASH} data/ref/input/input.graphic 58 > input.graphic.out  2>stderr2.out
+${PREFIX} $1  ${DASHDASH} data/ref/input/input.program 58 > input.program.out  2>stder3.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  input.source.out  data/ref/output/input.source.out
+  cmp  input.graphic.out  data/ref/output/input.graphic.out
+  cmp  input.program.out  data/ref/output/input.program.out
+fi
+echo OK
diff --git a/src/native_client/tests/spec2k/256.bzip2/run.train.sh b/src/native_client/tests/spec2k/256.bzip2/run.train.sh
new file mode 100755 (executable)
index 0000000..2d07d55
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+${PREFIX} $1 ${DASHDASH} data/train/input/input.compressed 8 > input.compressed.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  cmp  input.compressed.out  data/train/output/input.compressed.out
+fi
+echo OK
diff --git a/src/native_client/tests/spec2k/300.twolf/Makefile b/src/native_client/tests/spec2k/300.twolf/Makefile
new file mode 100644 (file)
index 0000000..7197c68
--- /dev/null
@@ -0,0 +1,106 @@
+SRC=\
+src/acceptt.c \
+src/addimp.c \
+src/alignfeed.c \
+src/buildimp.c \
+src/changrid.c \
+src/clean.c \
+src/closepins.c \
+src/config1.c \
+src/configure.c \
+src/configuref.c \
+src/controlf.c \
+src/countf.c \
+src/date.c \
+src/debug.c \
+src/dimbox.c \
+src/finalwire.c \
+src/findcost.c \
+src/findcostf.c \
+src/findest.c \
+src/findfeeds.c \
+src/findrchk.c \
+src/findrcost.c \
+src/findunlap.c \
+src/globe.c \
+src/globedbg.c \
+src/globroute.c \
+src/gparser.c \
+src/grdcell.c \
+src/hash.c \
+src/implfeeds.c \
+src/main.c \
+src/mergplist.c \
+src/move.c \
+src/mt.c \
+src/okmalloc.c \
+src/outcm.c \
+src/outpins.c \
+src/output.c \
+src/parser.c \
+src/purcost.c \
+src/qsorte.c \
+src/qsortg.c \
+src/qsortgdx.c \
+src/qsortx.c \
+src/rand.c \
+src/readblck.c \
+src/readcell.c \
+src/readnets.c \
+src/readpar.c \
+src/readseg.c \
+src/savewolf.c \
+src/sortpin.c \
+src/stats.c \
+src/uc0.c \
+src/ucg0.c \
+src/ucgxp.c \
+src/uclosepns.c \
+src/ucxx1.c \
+src/ucxx2.c \
+src/ucxxo1.c \
+src/ucxxo2.c \
+src/ucxxp.c \
+src/uglobe.c \
+src/uglobrout.c \
+src/ugpair.c \
+src/uloop.c \
+src/uloop2.c \
+src/unetseg.c \
+src/unlap.c \
+src/upair.c \
+src/urcost.c \
+src/utemp.c \
+src/utils.c \
+src/xcompact.c \
+src/xpickint.c
+
+
+
+IT=twolf
+
+CFLAGS_EXTRA = -DSPEC_CPU2000 -DHAVE_SIGNED_CHAR -Wno-return-type
+EMCCFLAGS_EXTRA_TRAIN = \
+--preload-file train.blk \
+--preload-file train.cel \
+--preload-file train.net \
+--preload-file train.out \
+--preload-file train.par \
+--preload-file train.pin \
+--preload-file train.pl1 \
+--preload-file train.pl2 \
+--preload-file train.sav \
+--preload-file train.sv2 \
+--preload-file train.twf
+EMCCFLAGS_EXTRA_REF = \
+--preload-file ref.blk \
+--preload-file ref.cel \
+--preload-file ref.net \
+--preload-file ref.par
+
+EXTRA_CLEAN= ref.* train.*
+
+include ../Makefile.common
+
+
+
diff --git a/src/native_client/tests/spec2k/300.twolf/run.ref.sh b/src/native_client/tests/spec2k/300.twolf/run.ref.sh
new file mode 100755 (executable)
index 0000000..300ea89
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) ref
+
+LIST="ref.out ref.twf ref.pl1 ref.pl2 ref.pin"
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch  ${LIST}
+  touch  ref.tmp
+  touch  ref.sav
+  touch  ref.sv2
+fi
+
+${PREFIX} $1 ${DASHDASH} ref >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -o stdout.out data/ref/output/ref.stdout
+  for i in ${LIST}; do
+    ../specdiff.sh -o $i data/ref/output/$i
+  done
+fi
+echo "OK"
+
diff --git a/src/native_client/tests/spec2k/300.twolf/run.test.sh b/src/native_client/tests/spec2k/300.twolf/run.test.sh
new file mode 100755 (executable)
index 0000000..3b792ee
--- /dev/null
@@ -0,0 +1,37 @@
+ #!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+
+rm -f *.out
+cp  data/test/input/* .
+
+
+LIST="test.out test.twf test.pl1 test.pl2 test.sav test.pin test.sv2"
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch  ${LIST}
+  touch  test.tmp
+  touch  test.cel
+fi
+
+${PREFIX} $1 ${DASHDASH} test >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  #../specdiff.sh -o stdout.out data/test/output/test.stdout
+  echo "SKIP STDOUT"
+  for i in ${LIST}; do
+    ../specdiff.sh -o $i data/test/output/$i
+  done
+fi
+echo "OK"
+
diff --git a/src/native_client/tests/spec2k/300.twolf/run.train.sh b/src/native_client/tests/spec2k/300.twolf/run.train.sh
new file mode 100755 (executable)
index 0000000..1db4963
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -o nounset
+set -o errexit
+
+PREFIX=${PREFIX:-}
+VERIFY=${VERIFY:-yes}
+EMU_HACK=${EMU_HACK:-yes}
+
+python ../prepare_input.py --config $(basename $(pwd)) train
+
+LIST="train.out train.twf train.pl1 train.pl2  train.pin "
+
+if [[ "${EMU_HACK}" != "no" ]] ; then
+  touch  ${LIST}
+  touch  train.tmp
+  touch  train.cel
+  touch  train.sav
+  touch  train.sv2
+fi
+
+${PREFIX} $1 ${DASHDASH} train >stdout.out 2>stderr.out
+
+if [[ "${VERIFY}" != "no" ]] ; then
+  echo "VERIFY"
+  ../specdiff.sh -o stdout.out data/train/output/train.stdout
+  for i in ${LIST}; do
+    ../specdiff.sh -o $i data/train/output/$i
+  done
+fi
+echo "OK"
+
diff --git a/src/native_client/tools/hermetic_cygwin/MkLink/MkLink.sln b/src/native_client/tools/hermetic_cygwin/MkLink/MkLink.sln
new file mode 100644 (file)
index 0000000..05a60ff
--- /dev/null
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MkLink", "MkLink.vcproj", "{5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug Unicode|Win32 = Debug Unicode|Win32
+               Debug|Win32 = Debug|Win32
+               Release Unicode|Win32 = Release Unicode|Win32
+               Release|Win32 = Release|Win32
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Debug|Win32.ActiveCfg = Debug|Win32
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Debug|Win32.Build.0 = Debug|Win32
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Release Unicode|Win32.Build.0 = Release Unicode|Win32
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Release|Win32.ActiveCfg = Release|Win32
+               {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Release|Win32.Build.0 = Release|Win32
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/src/native_client/tools/hermetic_cygwin/MkLink/MkLink.vcproj b/src/native_client/tools/hermetic_cygwin/MkLink/MkLink.vcproj
new file mode 100644 (file)
index 0000000..0067ad6
--- /dev/null
@@ -0,0 +1,484 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="9.00"
+       Name="MkLink"
+       ProjectGUID="{5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}"
+       RootNamespace="MkLink"
+       TargetFrameworkVersion="0"
+       >
+       <Platforms>
+               <Platform
+                       Name="Win32"
+               />
+       </Platforms>
+       <ToolFiles>
+       </ToolFiles>
+       <Configurations>
+               <Configuration
+                       Name="Release|Win32"
+                       OutputDirectory=".\Release"
+                       IntermediateDirectory=".\Release"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+                       UseOfMFC="0"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="2"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               MkTypLibCompatible="true"
+                               SuppressStartupBanner="true"
+                               TargetEnvironment="1"
+                               TypeLibraryName=".\Release/MkLink.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="1"
+                               InlineFunctionExpansion="0"
+                               AdditionalIncludeDirectories="."
+                               PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;EXDLL_EXPORTS;NSISCALL=__stdcall"
+                               StringPooling="true"
+                               RuntimeLibrary="2"
+                               BufferSecurityCheck="false"
+                               EnableFunctionLevelLinking="true"
+                               PrecompiledHeaderFile=".\Release/MkLink.pch"
+                               AssemblerListingLocation=".\Release/"
+                               ObjectFile=".\Release/"
+                               ProgramDataBaseFileName=".\Release/"
+                               WarningLevel="3"
+                               SuppressStartupBanner="true"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               Culture="1033"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="odbc32.lib odbccp32.lib nsis\pluginapi.lib"
+                               OutputFile=".\Release/MkLink.dll"
+                               LinkIncremental="1"
+                               SuppressStartupBanner="true"
+                               GenerateManifest="false"
+                               IgnoreAllDefaultLibraries="true"
+                               IgnoreDefaultLibraryNames="libc.lib"
+                               ProgramDatabaseFile=".\Release/MkLink.pdb"
+                               OptimizeForWindows98="1"
+                               EntryPointSymbol="DllMain"
+                               RandomizedBaseAddress="1"
+                               DataExecutionPrevention="0"
+                               ImportLibrary=".\Release/MkLink.lib"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                               SuppressStartupBanner="true"
+                               OutputFile=".\Release/MkLink.bsc"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Debug|Win32"
+                       OutputDirectory=".\Debug"
+                       IntermediateDirectory=".\Debug"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+                       UseOfMFC="0"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="2"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               MkTypLibCompatible="true"
+                               SuppressStartupBanner="true"
+                               TargetEnvironment="1"
+                               TypeLibraryName=".\Debug/MkLink.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="."
+                               PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;EXDLL_EXPORTS;NSISCALL=__stdcall"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="0"
+                               RuntimeLibrary="3"
+                               BufferSecurityCheck="false"
+                               PrecompiledHeaderFile=".\Debug/MkLink.pch"
+                               AssemblerListingLocation=".\Debug/"
+                               ObjectFile=".\Debug/"
+                               ProgramDataBaseFileName=".\Debug/"
+                               WarningLevel="3"
+                               SuppressStartupBanner="true"
+                               DebugInformationFormat="4"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               Culture="1033"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="odbc32.lib odbccp32.lib nsis\pluginapi.lib"
+                               OutputFile=".\Debug/MkLink.dll"
+                               LinkIncremental="2"
+                               SuppressStartupBanner="true"
+                               GenerateManifest="false"
+                               IgnoreAllDefaultLibraries="true"
+                               IgnoreDefaultLibraryNames=""
+                               GenerateDebugInformation="true"
+                               ProgramDatabaseFile=".\Debug/MkLink.pdb"
+                               EntryPointSymbol="DllMain"
+                               RandomizedBaseAddress="1"
+                               DataExecutionPrevention="0"
+                               ImportLibrary=".\Debug/MkLink.lib"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                               SuppressStartupBanner="true"
+                               OutputFile=".\Debug/MkLink.bsc"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release Unicode|Win32"
+                       OutputDirectory="$(ConfigurationName)"
+                       IntermediateDirectory="$(ConfigurationName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+                       UseOfMFC="0"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               MkTypLibCompatible="true"
+                               SuppressStartupBanner="true"
+                               TargetEnvironment="1"
+                               TypeLibraryName=".\Release Unicode/MkLink.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="1"
+                               InlineFunctionExpansion="0"
+                               AdditionalIncludeDirectories="."
+                               PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;EXDLL_EXPORTS;NSISCALL=__stdcall"
+                               StringPooling="true"
+                               RuntimeLibrary="2"
+                               BufferSecurityCheck="false"
+                               EnableFunctionLevelLinking="true"
+                               PrecompiledHeaderFile=".\Release Unicode/MkLink.pch"
+                               AssemblerListingLocation=".\Release Unicode/"
+                               ObjectFile=".\Release Unicode/"
+                               ProgramDataBaseFileName=".\Release Unicode/"
+                               WarningLevel="3"
+                               SuppressStartupBanner="true"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="NDEBUG"
+                               Culture="1033"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="odbc32.lib odbccp32.lib nsis\pluginapi.lib"
+                               OutputFile=".\Release Unicode/MkLink.dll"
+                               LinkIncremental="1"
+                               SuppressStartupBanner="true"
+                               GenerateManifest="false"
+                               IgnoreAllDefaultLibraries="true"
+                               IgnoreDefaultLibraryNames="libc.lib"
+                               ProgramDatabaseFile=".\Release Unicode/MkLink.pdb"
+                               OptimizeForWindows98="1"
+                               EntryPointSymbol="DllMain"
+                               RandomizedBaseAddress="1"
+                               DataExecutionPrevention="0"
+                               ImportLibrary=".\Release Unicode/MkLink.lib"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                               SuppressStartupBanner="true"
+                               OutputFile=".\Release Unicode/MkLink.bsc"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Debug Unicode|Win32"
+                       OutputDirectory="$(ConfigurationName)"
+                       IntermediateDirectory="$(ConfigurationName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+                       UseOfMFC="0"
+                       ATLMinimizesCRunTimeLibraryUsage="false"
+                       CharacterSet="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               MkTypLibCompatible="true"
+                               SuppressStartupBanner="true"
+                               TargetEnvironment="1"
+                               TypeLibraryName=".\Debug Unicode/MkLink.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="."
+                               PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;EXDLL_EXPORTS;NSISCALL=__stdcall"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="0"
+                               RuntimeLibrary="3"
+                               BufferSecurityCheck="false"
+                               PrecompiledHeaderFile=".\Debug Unicode/MkLink.pch"
+                               AssemblerListingLocation=".\Debug Unicode/"
+                               ObjectFile=".\Debug Unicode/"
+                               ProgramDataBaseFileName=".\Debug Unicode/"
+                               WarningLevel="3"
+                               SuppressStartupBanner="true"
+                               DebugInformationFormat="4"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                               PreprocessorDefinitions="_DEBUG"
+                               Culture="1033"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="odbc32.lib odbccp32.lib nsis\pluginapi.lib"
+                               OutputFile=".\Debug Unicode/MkLink.dll"
+                               LinkIncremental="2"
+                               SuppressStartupBanner="true"
+                               GenerateManifest="false"
+                               IgnoreAllDefaultLibraries="true"
+                               IgnoreDefaultLibraryNames=""
+                               GenerateDebugInformation="true"
+                               ProgramDatabaseFile=".\Debug Unicode/MkLink.pdb"
+                               EntryPointSymbol="DllMain"
+                               RandomizedBaseAddress="1"
+                               DataExecutionPrevention="0"
+                               ImportLibrary=".\Debug Unicode/MkLink.lib"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                               SuppressStartupBanner="true"
+                               OutputFile=".\Debug Unicode/MkLink.bsc"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+       </Configurations>
+       <References>
+       </References>
+       <Files>
+               <Filter
+                       Name="Source Files"
+                       Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+                       >
+                       <File
+                               RelativePath=".\MkLink.c"
+                               >
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               AdditionalIncludeDirectories=""
+                                               PreprocessorDefinitions=""
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               AdditionalIncludeDirectories=""
+                                               PreprocessorDefinitions=""
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug Unicode|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               AdditionalIncludeDirectories=""
+                                               PreprocessorDefinitions=""
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release Unicode|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               AdditionalIncludeDirectories=""
+                                               PreprocessorDefinitions=""
+                                       />
+                               </FileConfiguration>
+                       </File>
+               </Filter>
+               <Filter
+                       Name="Header Files"
+                       Filter="h;hpp;hxx;hm;inl"
+                       >
+                       <File
+                               RelativePath="nsis\pluginapi.h"
+                               >
+                       </File>
+               </Filter>
+               <Filter
+                       Name="Resource Files"
+                       Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+                       >
+               </Filter>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
diff --git a/src/native_client_sdk/src/getting_started/part1/hello_tutorial.nmf b/src/native_client_sdk/src/getting_started/part1/hello_tutorial.nmf
new file mode 100644 (file)
index 0000000..ae497b8
--- /dev/null
@@ -0,0 +1,9 @@
+{
+  "program": {
+    "portable": {
+      "pnacl-translate": {
+        "url": "hello_tutorial.pexe"
+      }
+    }
+  }
+}
diff --git a/src/native_client_sdk/src/resources/httpd.cmd b/src/native_client_sdk/src/resources/httpd.cmd
new file mode 100644 (file)
index 0000000..d7aec88
--- /dev/null
@@ -0,0 +1,8 @@
+@echo off\r
+setlocal\r
+\r
+PATH=%CYGWIN%;%PATH%\r
+REM Use the path to this file (httpd.cmd) to get the\r
+REM path to httpd.py, so that we can run httpd.cmd from\r
+REM any directory.  Pass up to 9 arguments to httpd.py.\r
+python %~dp0\..\tools\httpd.py %1 %2 %3 %4 %5 %6 %7 %8 %9\r
diff --git a/src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_32.nexe b/src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_32.nexe
new file mode 100644 (file)
index 0000000..0c46bbd
Binary files /dev/null and b/src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_32.nexe differ
diff --git a/src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_64.nexe b/src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_64.nexe
new file mode 100644 (file)
index 0000000..71a62fa
Binary files /dev/null and b/src/native_client_sdk/src/tools/tests/data/test_dynamic_x86_64.nexe differ
diff --git a/src/native_client_sdk/src/tools/tests/data/test_static_arm.nexe b/src/native_client_sdk/src/tools/tests/data/test_static_arm.nexe
new file mode 100644 (file)
index 0000000..ffa0e4e
Binary files /dev/null and b/src/native_client_sdk/src/tools/tests/data/test_static_arm.nexe differ
diff --git a/src/native_client_sdk/src/tools/tests/data/test_static_x86_32.nexe b/src/native_client_sdk/src/tools/tests/data/test_static_x86_32.nexe
new file mode 100644 (file)
index 0000000..94f846b
Binary files /dev/null and b/src/native_client_sdk/src/tools/tests/data/test_static_x86_32.nexe differ
diff --git a/src/native_client_sdk/src/tools/tests/data/test_static_x86_64.nexe b/src/native_client_sdk/src/tools/tests/data/test_static_x86_64.nexe
new file mode 100644 (file)
index 0000000..31144a2
Binary files /dev/null and b/src/native_client_sdk/src/tools/tests/data/test_static_x86_64.nexe differ
diff --git a/src/third_party/ffmpeg/chromium/binaries/c99conv.exe b/src/third_party/ffmpeg/chromium/binaries/c99conv.exe
new file mode 100755 (executable)
index 0000000..9de5cfd
Binary files /dev/null and b/src/third_party/ffmpeg/chromium/binaries/c99conv.exe differ
diff --git a/src/third_party/ffmpeg/tests/ref/fate/h264-conformance-canl1_toshiba_g b/src/third_party/ffmpeg/tests/ref/fate/h264-conformance-canl1_toshiba_g
new file mode 100644 (file)
index 0000000..ced4c92
--- /dev/null
@@ -0,0 +1,301 @@
+#tb 0: 1/25
+0,          0,          0,        1,    38016, 0x58892149
+0,          1,          1,        1,    38016, 0xda2ded74
+0,          2,          2,        1,    38016, 0x2661cdb0
+0,          3,          3,        1,    38016, 0xb581a73a
+0,          4,          4,        1,    38016, 0xa04a7e93
+0,          5,          5,        1,    38016, 0x149e7861
+0,          6,          6,        1,    38016, 0x53725080
+0,          7,          7,        1,    38016, 0x341a4d3f
+0,          8,          8,        1,    38016, 0x2ecc41ac
+0,          9,          9,        1,    38016, 0x99b85127
+0,         10,         10,        1,    38016, 0x7bdc50bc
+0,         11,         11,        1,    38016, 0xd3d58663
+0,         12,         12,        1,    38016, 0x717485e9
+0,         13,         13,        1,    38016, 0x2ac29c85
+0,         14,         14,        1,    38016, 0x36daa429
+0,         15,         15,        1,    38016, 0x8bb7a48e
+0,         16,         16,        1,    38016, 0xb38aab11
+0,         17,         17,        1,    38016, 0xacd89c4c
+0,         18,         18,        1,    38016, 0x676b71e1
+0,         19,         19,        1,    38016, 0xa2e7731e
+0,         20,         20,        1,    38016, 0x4a2f5766
+0,         21,         21,        1,    38016, 0x04ef1873
+0,         22,         22,        1,    38016, 0x52ac0171
+0,         23,         23,        1,    38016, 0xdd0a027a
+0,         24,         24,        1,    38016, 0x700810c6
+0,         25,         25,        1,    38016, 0x417f0cd3
+0,         26,         26,        1,    38016, 0xf8ef0da9
+0,         27,         27,        1,    38016, 0xfce62a5a
+0,         28,         28,        1,    38016, 0x03592b0a
+0,         29,         29,        1,    38016, 0x9b7b5373
+0,         30,         30,        1,    38016, 0xab015505
+0,         31,         31,        1,    38016, 0xf3387ae1
+0,         32,         32,        1,    38016, 0x1d09a5b6
+0,         33,         33,        1,    38016, 0x9159a5e2
+0,         34,         34,        1,    38016, 0x8887c177
+0,         35,         35,        1,    38016, 0x914dbacd
+0,         36,         36,        1,    38016, 0xaa97c0f6
+0,         37,         37,        1,    38016, 0x0837b14a
+0,         38,         38,        1,    38016, 0x0198be16
+0,         39,         39,        1,    38016, 0xc14bc9c6
+0,         40,         40,        1,    38016, 0xdb58c2a7
+0,         41,         41,        1,    38016, 0xa751ae90
+0,         42,         42,        1,    38016, 0x5813a64d
+0,         43,         43,        1,    38016, 0x73959f9b
+0,         44,         44,        1,    38016, 0xb0de8994
+0,         45,         45,        1,    38016, 0x79ea9214
+0,         46,         46,        1,    38016, 0x0b388957
+0,         47,         47,        1,    38016, 0x31aa91c9
+0,         48,         48,        1,    38016, 0xadcf88ec
+0,         49,         49,        1,    38016, 0x5bc99b68
+0,         50,         50,        1,    38016, 0x535e7c2e
+0,         51,         51,        1,    38016, 0xbfef8e0a
+0,         52,         52,        1,    38016, 0xc56285aa
+0,         53,         53,        1,    38016, 0x76758edc
+0,         54,         54,        1,    38016, 0xd8c3a20b
+0,         55,         55,        1,    38016, 0xd2aa918b
+0,         56,         56,        1,    38016, 0xfe1ea23b
+0,         57,         57,        1,    38016, 0x3533a68d
+0,         58,         58,        1,    38016, 0xd8679427
+0,         59,         59,        1,    38016, 0x76be9c98
+0,         60,         60,        1,    38016, 0xc37a9a7a
+0,         61,         61,        1,    38016, 0x1ebe9463
+0,         62,         62,        1,    38016, 0xab4c63d2
+0,         63,         63,        1,    38016, 0x761b3c50
+0,         64,         64,        1,    38016, 0xb57c4bb7
+0,         65,         65,        1,    38016, 0x86117755
+0,         66,         66,        1,    38016, 0xd89dacf3
+0,         67,         67,        1,    38016, 0x8940eee9
+0,         68,         68,        1,    38016, 0x2f7c3abf
+0,         69,         69,        1,    38016, 0x98366678
+0,         70,         70,        1,    38016, 0x14348147
+0,         71,         71,        1,    38016, 0x4e3ba8f8
+0,         72,         72,        1,    38016, 0xc167c205
+0,         73,         73,        1,    38016, 0x0581e211
+0,         74,         74,        1,    38016, 0x62cd0ea6
+0,         75,         75,        1,    38016, 0x753b3a2b
+0,         76,         76,        1,    38016, 0x25ce507a
+0,         77,         77,        1,    38016, 0x726f64af
+0,         78,         78,        1,    38016, 0xa13c7c58
+0,         79,         79,        1,    38016, 0xa27b7584
+0,         80,         80,        1,    38016, 0x45b47c12
+0,         81,         81,        1,    38016, 0x0f6a9456
+0,         82,         82,        1,    38016, 0x30ae9e92
+0,         83,         83,        1,    38016, 0xf59fa16d
+0,         84,         84,        1,    38016, 0x16d292d7
+0,         85,         85,        1,    38016, 0x828791cc
+0,         86,         86,        1,    38016, 0x71769267
+0,         87,         87,        1,    38016, 0xf297a0e0
+0,         88,         88,        1,    38016, 0x33a4a00a
+0,         89,         89,        1,    38016, 0xda96c5b8
+0,         90,         90,        1,    38016, 0x742daf25
+0,         91,         91,        1,    38016, 0x603f8bba
+0,         92,         92,        1,    38016, 0x89d18e70
+0,         93,         93,        1,    38016, 0x8c2b8c29
+0,         94,         94,        1,    38016, 0x9ccf6983
+0,         95,         95,        1,    38016, 0x8ddd5a29
+0,         96,         96,        1,    38016, 0x5679718d
+0,         97,         97,        1,    38016, 0x28aa80b3
+0,         98,         98,        1,    38016, 0x3b08780e
+0,         99,         99,        1,    38016, 0x9e408cbc
+0,        100,        100,        1,    38016, 0xe7c18e94
+0,        101,        101,        1,    38016, 0xaba57f22
+0,        102,        102,        1,    38016, 0xd8826dc5
+0,        103,        103,        1,    38016, 0x2ed2710e
+0,        104,        104,        1,    38016, 0x59748443
+0,        105,        105,        1,    38016, 0x5076b247
+0,        106,        106,        1,    38016, 0xf6ae9bcd
+0,        107,        107,        1,    38016, 0x4d83d68f
+0,        108,        108,        1,    38016, 0x118ff589
+0,        109,        109,        1,    38016, 0x65b3f2c0
+0,        110,        110,        1,    38016, 0x8f341576
+0,        111,        111,        1,    38016, 0xbeac1816
+0,        112,        112,        1,    38016, 0x19073cf9
+0,        113,        113,        1,    38016, 0xcfdb2e55
+0,        114,        114,        1,    38016, 0x99fd08f8
+0,        115,        115,        1,    38016, 0x025c0249
+0,        116,        116,        1,    38016, 0x4d311afc
+0,        117,        117,        1,    38016, 0xef532038
+0,        118,        118,        1,    38016, 0x7c353d9a
+0,        119,        119,        1,    38016, 0x9fed4678
+0,        120,        120,        1,    38016, 0x67062dad
+0,        121,        121,        1,    38016, 0x1e5b2069
+0,        122,        122,        1,    38016, 0x8b25fd3f
+0,        123,        123,        1,    38016, 0x06a9e566
+0,        124,        124,        1,    38016, 0x263badf5
+0,        125,        125,        1,    38016, 0x35a99a45
+0,        126,        126,        1,    38016, 0x930a8491
+0,        127,        127,        1,    38016, 0xf9d49dfd
+0,        128,        128,        1,    38016, 0xbc8cb0a6
+0,        129,        129,        1,    38016, 0x8f10d1a9
+0,        130,        130,        1,    38016, 0xb6dbc51b
+0,        131,        131,        1,    38016, 0x2f1bc747
+0,        132,        132,        1,    38016, 0xecdac1ac
+0,        133,        133,        1,    38016, 0x6391bdcc
+0,        134,        134,        1,    38016, 0x7e5eb209
+0,        135,        135,        1,    38016, 0x8f5ea1e8
+0,        136,        136,        1,    38016, 0x969195a9
+0,        137,        137,        1,    38016, 0x18579903
+0,        138,        138,        1,    38016, 0x4cfe8893
+0,        139,        139,        1,    38016, 0x68c57143
+0,        140,        140,        1,    38016, 0x297f6420
+0,        141,        141,        1,    38016, 0x36b1669c
+0,        142,        142,        1,    38016, 0x3d78362e
+0,        143,        143,        1,    38016, 0xaba14c36
+0,        144,        144,        1,    38016, 0xe6914a59
+0,        145,        145,        1,    38016, 0x3733481a
+0,        146,        146,        1,    38016, 0xb6df4c6d
+0,        147,        147,        1,    38016, 0x20631838
+0,        148,        148,        1,    38016, 0x014df835
+0,        149,        149,        1,    38016, 0xcb36db94
+0,        150,        150,        1,    38016, 0x4cb8b44a
+0,        151,        151,        1,    38016, 0xa49da6e5
+0,        152,        152,        1,    38016, 0x8dbfb72d
+0,        153,        153,        1,    38016, 0x3ba5b7d5
+0,        154,        154,        1,    38016, 0xc8ebad2d
+0,        155,        155,        1,    38016, 0x36fad594
+0,        156,        156,        1,    38016, 0x6302f0f2
+0,        157,        157,        1,    38016, 0xc799139e
+0,        158,        158,        1,    38016, 0x947947d0
+0,        159,        159,        1,    38016, 0x39756224
+0,        160,        160,        1,    38016, 0x1d995e51
+0,        161,        161,        1,    38016, 0x56274435
+0,        162,        162,        1,    38016, 0x3cfc2b1d
+0,        163,        163,        1,    38016, 0x5a4a178f
+0,        164,        164,        1,    38016, 0xca212af1
+0,        165,        165,        1,    38016, 0x885af884
+0,        166,        166,        1,    38016, 0x3241c9c1
+0,        167,        167,        1,    38016, 0x4ef997a4
+0,        168,        168,        1,    38016, 0x5ecb8030
+0,        169,        169,        1,    38016, 0x2eb76daa
+0,        170,        170,        1,    38016, 0x485780ba
+0,        171,        171,        1,    38016, 0xf5f88241
+0,        172,        172,        1,    38016, 0x563f97d0
+0,        173,        173,        1,    38016, 0x4a01a6c4
+0,        174,        174,        1,    38016, 0xd7ea8457
+0,        175,        175,        1,    38016, 0x08ae6916
+0,        176,        176,        1,    38016, 0x4c933e75
+0,        177,        177,        1,    38016, 0x49541e4a
+0,        178,        178,        1,    38016, 0xd14e028a
+0,        179,        179,        1,    38016, 0xabd5f4e6
+0,        180,        180,        1,    38016, 0xfe3bdd0f
+0,        181,        181,        1,    38016, 0xbb30cef4
+0,        182,        182,        1,    38016, 0xd724d0e3
+0,        183,        183,        1,    38016, 0x7537d6bf
+0,        184,        184,        1,    38016, 0x3da3e67a
+0,        185,        185,        1,    38016, 0xf02606eb
+0,        186,        186,        1,    38016, 0x2dde399b
+0,        187,        187,        1,    38016, 0xafe94c86
+0,        188,        188,        1,    38016, 0x923d6081
+0,        189,        189,        1,    38016, 0x9c733e4e
+0,        190,        190,        1,    38016, 0x2b16d821
+0,        191,        191,        1,    38016, 0x1edf9cd1
+0,        192,        192,        1,    38016, 0xa9c3b601
+0,        193,        193,        1,    38016, 0x9adeb02b
+0,        194,        194,        1,    38016, 0xf5eaddc3
+0,        195,        195,        1,    38016, 0xac871bea
+0,        196,        196,        1,    38016, 0x060429f4
+0,        197,        197,        1,    38016, 0xf80b421d
+0,        198,        198,        1,    38016, 0x7dcd6c50
+0,        199,        199,        1,    38016, 0x46e46798
+0,        200,        200,        1,    38016, 0xdbee759f
+0,        201,        201,        1,    38016, 0xbbe78774
+0,        202,        202,        1,    38016, 0xb85990ed
+0,        203,        203,        1,    38016, 0xda0e8530
+0,        204,        204,        1,    38016, 0x5eaf8508
+0,        205,        205,        1,    38016, 0x5c2c83fa
+0,        206,        206,        1,    38016, 0x6dfe9322
+0,        207,        207,        1,    38016, 0xa3059a60
+0,        208,        208,        1,    38016, 0x357c8237
+0,        209,        209,        1,    38016, 0xccae6b20
+0,        210,        210,        1,    38016, 0x25fe57c1
+0,        211,        211,        1,    38016, 0xfa65376b
+0,        212,        212,        1,    38016, 0xd9b12ef8
+0,        213,        213,        1,    38016, 0x3ab73fa0
+0,        214,        214,        1,    38016, 0xcb6a2f96
+0,        215,        215,        1,    38016, 0x8a973915
+0,        216,        216,        1,    38016, 0x71ac1dd2
+0,        217,        217,        1,    38016, 0x71802085
+0,        218,        218,        1,    38016, 0x4de728d9
+0,        219,        219,        1,    38016, 0xdf3a1de7
+0,        220,        220,        1,    38016, 0x36270e93
+0,        221,        221,        1,    38016, 0x90d4fe93
+0,        222,        222,        1,    38016, 0x3477fb4e
+0,        223,        223,        1,    38016, 0xd410fa81
+0,        224,        224,        1,    38016, 0xfc230675
+0,        225,        225,        1,    38016, 0xbda40c03
+0,        226,        226,        1,    38016, 0x7a47fc07
+0,        227,        227,        1,    38016, 0x53fe2a37
+0,        228,        228,        1,    38016, 0x342d3bec
+0,        229,        229,        1,    38016, 0xf13163a3
+0,        230,        230,        1,    38016, 0x03f087da
+0,        231,        231,        1,    38016, 0xbc03c466
+0,        232,        232,        1,    38016, 0x6318d676
+0,        233,        233,        1,    38016, 0xbc2f0b68
+0,        234,        234,        1,    38016, 0xcb57354b
+0,        235,        235,        1,    38016, 0x7e9a5b48
+0,        236,        236,        1,    38016, 0x9dca693a
+0,        237,        237,        1,    38016, 0xd0776497
+0,        238,        238,        1,    38016, 0x05a24093
+0,        239,        239,        1,    38016, 0x69b21063
+0,        240,        240,        1,    38016, 0x15f3ed8b
+0,        241,        241,        1,    38016, 0x2417bc52
+0,        242,        242,        1,    38016, 0xabc2a564
+0,        243,        243,        1,    38016, 0x67f2dd90
+0,        244,        244,        1,    38016, 0xa5fe4b6e
+0,        245,        245,        1,    38016, 0x7801add2
+0,        246,        246,        1,    38016, 0xf4abc321
+0,        247,        247,        1,    38016, 0x1d06a837
+0,        248,        248,        1,    38016, 0x2e0d6fc2
+0,        249,        249,        1,    38016, 0xc4f30535
+0,        250,        250,        1,    38016, 0x67d09a80
+0,        251,        251,        1,    38016, 0xca505a1e
+0,        252,        252,        1,    38016, 0x2e2e56c8
+0,        253,        253,        1,    38016, 0x689ea3e2
+0,        254,        254,        1,    38016, 0x9989165a
+0,        255,        255,        1,    38016, 0xd8e2c30e
+0,        256,        256,        1,    38016, 0x2a98bf3f
+0,        257,        257,        1,    38016, 0x44664d3e
+0,        258,        258,        1,    38016, 0x53a939de
+0,        259,        259,        1,    38016, 0x4c153702
+0,        260,        260,        1,    38016, 0x03c73e88
+0,        261,        261,        1,    38016, 0x7cd649d4
+0,        262,        262,        1,    38016, 0x7d7c5687
+0,        263,        263,        1,    38016, 0x8f3c53a6
+0,        264,        264,        1,    38016, 0x24634dd1
+0,        265,        265,        1,    38016, 0x5d00442c
+0,        266,        266,        1,    38016, 0xdcc72906
+0,        267,        267,        1,    38016, 0x5def12f3
+0,        268,        268,        1,    38016, 0x95e6e8be
+0,        269,        269,        1,    38016, 0x2675c694
+0,        270,        270,        1,    38016, 0x906aa24e
+0,        271,        271,        1,    38016, 0x09468fe4
+0,        272,        272,        1,    38016, 0xaec9736d
+0,        273,        273,        1,    38016, 0xa5812142
+0,        274,        274,        1,    38016, 0x9986d55f
+0,        275,        275,        1,    38016, 0x9f7fc399
+0,        276,        276,        1,    38016, 0xc345d526
+0,        277,        277,        1,    38016, 0x3ae3b9bd
+0,        278,        278,        1,    38016, 0xb103ec45
+0,        279,        279,        1,    38016, 0x3ff462c2
+0,        280,        280,        1,    38016, 0x5c07ed68
+0,        281,        281,        1,    38016, 0xccbad189
+0,        282,        282,        1,    38016, 0x6f3f9a18
+0,        283,        283,        1,    38016, 0x26406fa1
+0,        284,        284,        1,    38016, 0x06cf5f62
+0,        285,        285,        1,    38016, 0x3eb29bd1
+0,        286,        286,        1,    38016, 0x12ab807e
+0,        287,        287,        1,    38016, 0x7621bf0d
+0,        288,        288,        1,    38016, 0x88eabc0c
+0,        289,        289,        1,    38016, 0x21386662
+0,        290,        290,        1,    38016, 0x5839e3e4
+0,        291,        291,        1,    38016, 0xd196ee7c
+0,        292,        292,        1,    38016, 0x84dc8477
+0,        293,        293,        1,    38016, 0xbf2dcc7a
+0,        294,        294,        1,    38016, 0x29e3fe96
+0,        295,        295,        1,    38016, 0xf115ffc3
+0,        296,        296,        1,    38016, 0x7585d699
+0,        297,        297,        1,    38016, 0x7a7dcb8a
+0,        298,        298,        1,    38016, 0x03cfdb04
+0,        299,        299,        1,    38016, 0xd56e028c
diff --git a/src/third_party/ffmpeg/tests/ref/fate/h264-conformance-cvmaqp2_sony_g b/src/third_party/ffmpeg/tests/ref/fate/h264-conformance-cvmaqp2_sony_g
new file mode 100644 (file)
index 0000000..886ea4c
--- /dev/null
@@ -0,0 +1,18 @@
+#tb 0: 1/25
+0,          0,          0,        1,    36864, 0xdee3d4e3
+0,          1,          1,        1,    36864, 0xaa1a67ca
+0,          2,          2,        1,    36864, 0xe00e0dec
+0,          3,          3,        1,    36864, 0x31f0b63f
+0,          4,          4,        1,    36864, 0xd0cc34d9
+0,          5,          5,        1,    36864, 0x3e76eba5
+0,          6,          6,        1,    36864, 0x0e7dcc9c
+0,          7,          7,        1,    36864, 0xd71bc457
+0,          8,          8,        1,    36864, 0x11c81ebe
+0,          9,          9,        1,    36864, 0x1d4ca6d7
+0,         10,         10,        1,    36864, 0xb191d155
+0,         11,         11,        1,    36864, 0x435a188c
+0,         12,         12,        1,    36864, 0x99d7227c
+0,         13,         13,        1,    36864, 0x700637fc
+0,         14,         14,        1,    36864, 0x351f7dd3
+0,         15,         15,        1,    36864, 0x1658c18b
+0,         16,         16,        1,    36864, 0x60034b90
diff --git a/src/third_party/mesa/src/src/gallium/drivers/i915/Makefile b/src/third_party/mesa/src/src/gallium/drivers/i915/Makefile
new file mode 100644 (file)
index 0000000..0e57678
--- /dev/null
@@ -0,0 +1,9 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = i915
+
+# get C_SOURCES
+include Makefile.sources
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/llvmpipe/Makefile b/src/third_party/mesa/src/src/gallium/drivers/llvmpipe/Makefile
new file mode 100644 (file)
index 0000000..ef16fc7
--- /dev/null
@@ -0,0 +1,75 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = llvmpipe
+
+C_SOURCES = \
+       lp_bld_alpha.c \
+       lp_bld_blend.c \
+       lp_bld_blend_aos.c \
+       lp_bld_blend_logicop.c \
+       lp_bld_blend_soa.c \
+       lp_bld_depth.c \
+       lp_bld_interp.c \
+       lp_clear.c \
+       lp_context.c \
+       lp_draw_arrays.c \
+       lp_fence.c \
+       lp_flush.c \
+       lp_jit.c \
+       lp_memory.c \
+       lp_perf.c \
+       lp_query.c \
+       lp_rast.c \
+       lp_rast_debug.c \
+       lp_rast_tri.c \
+       lp_scene.c \
+       lp_scene_queue.c \
+       lp_screen.c \
+       lp_setup.c \
+       lp_setup_line.c \
+       lp_setup_point.c \
+       lp_setup_tri.c \
+       lp_setup_vbuf.c \
+       lp_state_blend.c \
+       lp_state_clip.c \
+       lp_state_derived.c \
+       lp_state_fs.c \
+       lp_state_setup.c \
+       lp_state_gs.c \
+       lp_state_rasterizer.c \
+       lp_state_sampler.c \
+        lp_state_so.c \
+       lp_state_surface.c \
+       lp_state_vertex.c \
+       lp_state_vs.c \
+       lp_surface.c \
+       lp_tex_sample.c \
+       lp_texture.c \
+       lp_tile_image.c \
+       lp_tile_soa.c
+
+CPP_SOURCES = \
+
+PROGS := lp_test_format        \
+        lp_test_arit   \
+        lp_test_blend  \
+        lp_test_conv   \
+        lp_test_printf
+
+# Need this for the lp_test_*.o files
+CLEAN_EXTRA = *.o
+
+include ../../Makefile.template
+
+PROGS_DEPS := ../../auxiliary/libgallium.a
+
+lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxiliary/util/u_format_pack.py ../../auxiliary/util/u_format.csv
+       $(PYTHON2) $(PYTHON_FLAGS) lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@
+
+LDFLAGS += $(LLVM_LDFLAGS)
+LIBS += -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS) $(GL_LIB_DEPS)
+LD=$(CXX)
+
+$(PROGS): lp_test_main.o libllvmpipe.a
+
diff --git a/src/third_party/mesa/src/src/gallium/drivers/nouveau/Makefile b/src/third_party/mesa/src/src/gallium/drivers/nouveau/Makefile
new file mode 100644 (file)
index 0000000..d583324
--- /dev/null
@@ -0,0 +1,16 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = nouveau
+
+LIBRARY_INCLUDES = \
+       $(LIBDRM_CFLAGS) \
+       -I$(TOP)/src/gallium/drivers/nouveau/include
+
+LIBRARY_INCLUDES += $(shell $(PKG_CONFIG) libdrm libdrm_nouveau --cflags-only-I)
+LIBRARY_DEFINES += $(shell $(PKG_CONFIG) libdrm libdrm_nouveau --cflags-only-other)
+
+# get C_SOURCES
+include Makefile.sources
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/nv30/Makefile b/src/third_party/mesa/src/src/gallium/drivers/nv30/Makefile
new file mode 100644 (file)
index 0000000..de521aa
--- /dev/null
@@ -0,0 +1,12 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = nv30
+
+include Makefile.sources
+
+LIBRARY_INCLUDES = \
+       $(LIBDRM_CFLAGS)
+
+include ../../Makefile.template
+# DO NOT DELETE
diff --git a/src/third_party/mesa/src/src/gallium/drivers/nv50/Makefile b/src/third_party/mesa/src/src/gallium/drivers/nv50/Makefile
new file mode 100644 (file)
index 0000000..18e30b0
--- /dev/null
@@ -0,0 +1,12 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = nv50
+
+# get C/CPP_SOURCES
+include Makefile.sources
+
+LIBRARY_INCLUDES = \
+       $(LIBDRM_CFLAGS)
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/nvc0/Makefile b/src/third_party/mesa/src/src/gallium/drivers/nvc0/Makefile
new file mode 100644 (file)
index 0000000..c412625
--- /dev/null
@@ -0,0 +1,12 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = nvc0
+
+# get C/CPP_SOURCES
+include Makefile.sources
+
+LIBRARY_INCLUDES = \
+       $(LIBDRM_CFLAGS)
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/radeon/Makefile b/src/third_party/mesa/src/src/gallium/drivers/radeon/Makefile
new file mode 100644 (file)
index 0000000..7f1c613
--- /dev/null
@@ -0,0 +1,74 @@
+
+TOP = ../../../..
+include $(TOP)/configs/current
+
+include Makefile.sources
+
+LIBNAME = radeon
+
+LIBRARY_INCLUDES = -I$(TOP)/include
+
+TBLGEN = $(LLVM_BINDIR)/llvm-tblgen
+
+CXXFLAGS+= $(LLVM_CXXFLAGS)
+
+include ../../Makefile.template
+
+CXXFLAGS := $(filter-out -DDEBUG, $(CXXFLAGS))
+
+tablegen = $(TBLGEN) -I $(LLVM_INCLUDEDIR) $1 $2 -o $3
+
+HAVE_LLVM_INTRINSICS = $(shell grep IntrinsicsR600.td $(LLVM_INCLUDEDIR)/llvm/Intrinsics.td)
+
+SIRegisterInfo.td: SIGenRegisterInfo.pl
+       $(PERL) $^ > $@
+
+SIRegisterGetHWRegNum.inc: SIGenRegisterInfo.pl
+       $(PERL) $^ $@ > /dev/null
+
+R600Intrinsics.td: R600IntrinsicsNoOpenCL.td R600IntrinsicsOpenCL.td
+ifeq ($(HAVE_LLVM_INTRINSICS),)
+       cp R600IntrinsicsNoOpenCL.td R600Intrinsics.td
+else
+       cp R600IntrinsicsOpenCL.td R600Intrinsics.td
+endif
+
+R600RegisterInfo.td: R600GenRegisterInfo.pl
+       $(PERL) $^ > $@
+
+AMDGPUGenRegisterInfo.inc: $(TD_FILES)
+       $(call tablegen, -gen-register-info, AMDGPU.td, $@)
+
+AMDGPUGenInstrInfo.inc: $(TD_FILES)
+       $(call tablegen, -gen-instr-info, AMDGPU.td, $@)
+
+AMDGPUGenAsmWriter.inc: $(TD_FILES)
+       $(call tablegen, -gen-asm-writer, AMDGPU.td, $@)
+
+AMDGPUGenDAGISel.inc: $(TD_FILES)
+       $(call tablegen, -gen-dag-isel, AMDGPU.td, $@)
+
+AMDGPUGenCallingConv.inc: $(TD_FILES)
+       $(call tablegen, -gen-callingconv, AMDGPU.td, $@)
+
+AMDGPUGenSubtargetInfo.inc: $(TD_FILES)
+       $(call tablegen, -gen-subtarget, AMDGPU.td, $@)
+
+AMDGPUGenEDInfo.inc: $(TD_FILES)
+       $(call tablegen, -gen-enhanced-disassembly-info, AMDGPU.td, $@)
+
+AMDGPUGenIntrinsics.inc: $(TD_FILES)
+       $(call tablegen, -gen-tgt-intrinsic, AMDGPU.td, $@)
+
+AMDGPUGenCodeEmitter.inc: $(TD_FILES)
+       $(call tablegen, -gen-emitter, AMDGPU.td, $@)
+
+AMDGPUGenMCCodeEmitter.inc: $(TD_FILES)
+       $(call tablegen, -mc-emitter -gen-emitter, AMDGPU.td, $@)
+
+AMDGPUGenDFAPacketizer.inc: $(TD_FILES)
+       $(call tablegen, -gen-dfa-packetizer, AMDGPU.td, $@)
+
+LOADER_LIBS=$(shell llvm-config --libs bitreader asmparser)
+loader: loader.o libradeon.a
+       gcc -o loader $(LLVM_LDFLAGS) -L/usr/local/lib $(LDFLAGS) loader.o libradeon.a $(LLVM_LIBS) $(LOADER_LIBS) -lpthread -ldl -lstdc++ -lm
diff --git a/src/third_party/mesa/src/src/gallium/drivers/radeonsi/Makefile b/src/third_party/mesa/src/src/gallium/drivers/radeonsi/Makefile
new file mode 100644 (file)
index 0000000..5d16b41
--- /dev/null
@@ -0,0 +1,21 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = radeonsi
+
+LIBRARY_INCLUDES = \
+       -I$(TOP)/include \
+       -I$(TOP)/src/gallium/drivers/radeon/
+
+
+# get C_SOURCES
+include Makefile.sources
+
+LIBRADEON = $(TOP)/src/gallium/drivers/radeon/libradeon.a
+
+EXTRA_OBJECTS = \
+       $(LIBRADEON)
+
+CFLAGS+=$(RADEON_CFLAGS)
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/rbug/Makefile b/src/third_party/mesa/src/src/gallium/drivers/rbug/Makefile
new file mode 100644 (file)
index 0000000..64e172f
--- /dev/null
@@ -0,0 +1,12 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = rbug
+
+C_SOURCES = \
+       rbug_core.c \
+       rbug_context.c \
+       rbug_objects.c \
+       rbug_screen.c
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/softpipe/Makefile b/src/third_party/mesa/src/src/gallium/drivers/softpipe/Makefile
new file mode 100644 (file)
index 0000000..27b5d99
--- /dev/null
@@ -0,0 +1,37 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = softpipe
+
+C_SOURCES = \
+       sp_fs_exec.c \
+       sp_clear.c \
+       sp_fence.c \
+       sp_flush.c \
+       sp_query.c \
+       sp_context.c \
+       sp_draw_arrays.c \
+       sp_prim_vbuf.c \
+       sp_quad_pipe.c \
+       sp_quad_stipple.c \
+       sp_quad_depth_test.c \
+       sp_quad_fs.c \
+       sp_quad_blend.c \
+       sp_screen.c \
+       sp_setup.c \
+       sp_state_blend.c \
+       sp_state_clip.c \
+       sp_state_derived.c \
+       sp_state_sampler.c \
+       sp_state_shader.c \
+       sp_state_so.c \
+       sp_state_rasterizer.c \
+       sp_state_surface.c \
+       sp_state_vertex.c \
+       sp_texture.c \
+       sp_tex_sample.c \
+       sp_tex_tile_cache.c \
+       sp_tile_cache.c \
+       sp_surface.c
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/svga/Makefile b/src/third_party/mesa/src/src/gallium/drivers/svga/Makefile
new file mode 100644 (file)
index 0000000..97f68f0
--- /dev/null
@@ -0,0 +1,19 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = svga
+
+# get C_SOURCES
+include Makefile.sources
+
+LIBRARY_INCLUDES = \
+       -I$(TOP)/src/gallium/drivers/svga/include
+
+# With linux-debug we get a lots of warnings, filter out the bad flags.
+CFLAGS := $(filter-out -pedantic, $(filter-out -ansi, $(CFLAGS)))
+
+LIBRARY_DEFINES = \
+       -std=gnu99 -fvisibility=hidden \
+       -DHAVE_STDINT_H -DHAVE_SYS_TYPES_H
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/drivers/trace/Makefile b/src/third_party/mesa/src/src/gallium/drivers/trace/Makefile
new file mode 100644 (file)
index 0000000..99e5fb8
--- /dev/null
@@ -0,0 +1,13 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = trace
+
+C_SOURCES = \
+       tr_context.c \
+       tr_dump.c \
+       tr_dump_state.c \
+       tr_screen.c \
+       tr_texture.c
+
+include ../../Makefile.template
diff --git a/src/third_party/mesa/src/src/gallium/state_trackers/d3d1x/d3dapi/d3d10misc.h b/src/third_party/mesa/src/src/gallium/state_trackers/d3d1x/d3dapi/d3d10misc.h
new file mode 100644 (file)
index 0000000..4f866ff
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2008 Henri Verbeet for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __D3D10MISC_H__
+#define __D3D10MISC_H__
+
+#include "d3d10.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum D3D10_DRIVER_TYPE {
+       D3D10_DRIVER_TYPE_HARDWARE = 0,
+       D3D10_DRIVER_TYPE_REFERENCE = 1,
+       D3D10_DRIVER_TYPE_NULL   = 2,
+       D3D10_DRIVER_TYPE_SOFTWARE = 3,
+       D3D10_DRIVER_TYPE_WARP   = 5, // added by Luca Barbieri in Sep 2010
+} D3D10_DRIVER_TYPE;
+
+HRESULT WINAPI D3D10CreateDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
+       HMODULE swrast, UINT flags, UINT sdk_version, ID3D10Device **device);
+
+HRESULT WINAPI D3D10CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
+       HMODULE swrast, UINT flags, UINT sdk_version, DXGI_SWAP_CHAIN_DESC *swapchain_desc,
+       IDXGISwapChain **swapchain, ID3D10Device **device);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __D3D10MISC_H__ */
diff --git a/src/third_party/mesa/src/src/glx/apple/Makefile b/src/third_party/mesa/src/src/glx/apple/Makefile
new file mode 100644 (file)
index 0000000..f6faa1e
--- /dev/null
@@ -0,0 +1,132 @@
+TOP = ../../..
+top_builddir = $(TOP)
+# This can be a filthy lie. But it doesn't currently build out-of-tree
+# anyway, so it's no worse than what we've got now.
+top_srcdir = $(TOP)
+
+include $(TOP)/configs/current
+
+#CC=gcc
+#GL_CFLAGS=-Wall -ggdb3 -Os -DHAVE_PTHREAD -D_REENTRANT $(RC_CFLAGS) $(CFLAGS)
+#GL_LDFLAGS=-L$(INSTALL_DIR)/lib -L$(X11_DIR)/lib $(LDFLAGS) -Wl,-single_module
+
+TCLSH=tclsh8.5
+MKDIR=mkdir
+INSTALL=install
+LN=ln
+RM=rm
+
+#INCLUDE=-I. -Iinclude -I.. -DGLX_ALIAS_UNSUPPORTED -I$(INSTALL_DIR)/include -I$(X11_DIR)/include
+
+#COMPILE=$(CC) $(INCLUDE) $(GL_CFLAGS) -c
+
+#The directory with the final binaries.
+BUILD_DIR=builds
+
+default: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+
+SOURCES = \
+       apple_cgl.c \
+       apple_glx.c \
+       apple_glx_context.c \
+       apple_glx_drawable.c \
+       apple_glx_log.c \
+       apple_glx_pbuffer.c \
+       apple_glx_pixmap.c \
+       apple_glx_surface.c \
+       apple_visual.c \
+       apple_glapi.c \
+       apple_xgl_api_read.c \
+       apple_xgl_api_stereo.c \
+       apple_xgl_api_viewport.c \
+       appledri.c \
+       ../create_context.c \
+       ../clientattrib.c \
+       ../compsize.c \
+       ../glxconfig.c \
+       glx_empty.c \
+       ../glx_error.c \
+       ../glx_pbuffer.c \
+       ../glx_query.c \
+       ../glxcmds.c \
+       ../glxcurrent.c \
+       ../glxext.c \
+       ../glxextensions.c \
+       ../glxhash.c \
+       glxreply.c \
+       ../pixel.c \
+       ../xfont.c \
+       ../applegl_glx.c
+
+include $(TOP)/src/mesa/sources.mak
+
+# override GLAPI_LIB
+GLAPI_LIB = $(TOP)/src/mapi/glapi/libglapi.a
+
+LDFLAGS += -lXplugin -framework ApplicationServices -framework CoreFoundation
+
+OBJECTS = $(SOURCES:.c=.o)
+
+INCLUDES = -I. -Iinclude -I..\
+       -I$(TOP)/include \
+       -I$(TOP)/include/GL/internal \
+       -I$(TOP)/src/mesa \
+       -I$(TOP)/src/mesa/main \
+       -I$(TOP)/src/mapi \
+       -I$(TOP)/src/mapi/glapi \
+       $(LIBDRM_CFLAGS) \
+       $(DRI2PROTO_CFLAGS) \
+       $(X11_INCLUDES)
+
+##### RULES #####
+
+.c.o:
+       $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES) $< -o $@
+
+.S.o:
+       $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES)  $< -o $@
+
+##### TARGETS #####
+
+default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+
+# Make libGL
+$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME):  $(OBJECTS) $(GLAPI_LIB) Makefile
+       $(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+               -major 1 -minor 2 $(MKLIB_OPTIONS) \
+               -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/lib$(GL_LIB).1.dylib \
+               $(GL_LIB_DEPS) $(OBJECTS) $(GLAPI_LIB)
+
+$(GLAPI_LIB):
+       @$(MAKE) -C $(TOP)/src/mapi/glapi
+
+depend: $(SOURCES) $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) Makefile
+       rm -f depend
+       touch depend
+       $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) \
+               $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) 
+
+# Emacs tags
+tags:
+       etags `find . -name \*.[ch]` `find $(TOP)/include`
+
+install_headers: include/GL/gl.h
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL
+       $(INSTALL) -m 644 include/GL/gl.h $(DESTDIR)$(INSTALL_DIR)/include/GL
+
+install_libraries: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+       $(MAKE) -C $(TOP)/src/mesa install-libgl
+
+install: install_libraries
+
+# Remove .o and backup files
+clean:
+       -rm -f *.o *.a *~
+       -rm -f *.c~ *.h~
+       -rm -f *.dylib
+       -rm -f include/GL/gl.h
+       -rm -f $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB)
+       -rm -f *.o *~
+       -rm -f depend depend.bak
+
+-include depend
diff --git a/src/third_party/mesa/src/src/mesa/drivers/dri/common/xmlpool/Makefile b/src/third_party/mesa/src/src/mesa/drivers/dri/common/xmlpool/Makefile
new file mode 100644 (file)
index 0000000..b71629e
--- /dev/null
@@ -0,0 +1,96 @@
+# Convenient makefile for managing translations.
+
+# Prerequisites:
+# - GNU gettext
+# - Python
+
+# Adding new translations
+# -----------------------
+
+# To start working on a new translation edit the POS=... line
+# below. If you want to add for example a french translation, add
+# fr.po.
+
+# Then run "make po" to generate a fresh .po file from translatable
+# strings in t_options.h. Now you can edit the new .po file (fr.po in
+# the example above) to translate the strings. Please make sure that
+# your editor encodes the file in UTF-8.
+
+# Updating existing translations
+# ------------------------------
+
+# Run "make po" to update .po files with new translatable strings from
+# t_options.h. Now you can edit the .po files you're interested
+# in. Please make sure that your editor encodes the file in UTF-8.
+
+# Updating options.h
+# ------------------
+
+# Finally run "make" to generate options.h from t_options.h with all
+# translations. Now you can rebuild the drivers. Any common options
+# used by the drivers will have option descriptions with the latest
+# translations.
+
+# Publishing translations
+# -----------------------
+
+# To get your translation(s) into Mesa CVS, please send me your
+# <lang>.po file.
+
+# More information:
+# - info gettext
+
+# The set of supported languages. Add languages as needed.
+POS=de.po es.po nl.po fr.po sv.po
+
+#
+# Don't change anything below, unless you know what you're doing.
+#
+LANGS=$(POS:%.po=%)
+MOS=$(POS:%.po=%/LC_MESSAGES/options.mo)
+POT=xmlpool.pot
+
+.PHONY: all clean pot po mo
+
+all: options.h
+
+# Only intermediate files are cleaned up. options.h is not deleted because
+# it's in CVS. 
+clean:
+       -rm -f $(POT) *~
+       -rm -rf $(LANGS)
+
+# Default target options.h
+options.h: t_options.h mo
+       $(PYTHON2) $(PYTHON_FLAGS) gen_xmlpool.py $(LANGS) > options.h
+
+# Update .mo files from the corresponding .po files.
+mo:
+       @for mo in $(MOS); do \
+               lang=$${mo%%/*}; \
+               echo "Updating $$mo from $$lang.po."; \
+               mkdir -p $${mo%/*}; \
+               msgfmt -o $$mo $$lang.po; \
+       done
+
+# Use this target to create or update .po files with new messages in
+# driconf.py.
+po: $(POS)
+
+pot: $(POT)
+
+# Extract message catalog from driconf.py.
+$(POT): t_options.h
+       xgettext -L C --from-code utf-8 -o $(POT) t_options.h
+
+# Create or update a .po file for a specific language.
+%.po: $(POT)
+       @if [ -f $@ ]; then \
+               echo "Merging new strings from $(POT) into $@."; \
+               mv $@ $@~; \
+               msgmerge -o $@ $@~ $(POT); \
+       else \
+               echo "Initializing $@ from $(POT)."; \
+               msginit -i $(POT) -o $@~ --locale=$*; \
+               sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $@~ > $@; \
+       fi
diff --git a/src/third_party/webrtc/common_audio/resampler/Android.mk b/src/third_party/webrtc/common_audio/resampler/Android.mk
new file mode 100644 (file)
index 0000000..b1d630a
--- /dev/null
@@ -0,0 +1,47 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_resampler
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := resampler.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../.. \
+    $(LOCAL_PATH)/../signal_processing/include 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
+LOCAL_LDLIBS += -ldl -lpthread
+endif
+
+ifneq ($(TARGET_SIMULATOR),true)
+LOCAL_SHARED_LIBRARIES += libdl
+endif
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/common_audio/signal_processing/Android.mk b/src/third_party/webrtc/common_audio/signal_processing/Android.mk
new file mode 100644 (file)
index 0000000..aed7e73
--- /dev/null
@@ -0,0 +1,126 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_spl
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    auto_corr_to_refl_coef.c \
+    auto_correlation.c \
+    complex_fft.c \
+    copy_set_operations.c \
+    cross_correlation.c \
+    division_operations.c \
+    dot_product_with_scale.c \
+    downsample_fast.c \
+    energy.c \
+    filter_ar.c \
+    filter_ma_fast_q12.c \
+    get_hanning_window.c \
+    get_scaling_square.c \
+    ilbc_specific_functions.c \
+    levinson_durbin.c \
+    lpc_to_refl_coef.c \
+    min_max_operations.c \
+    randomization_functions.c \
+    real_fft.c \
+    refl_coef_to_lpc.c \
+    resample.c \
+    resample_48khz.c \
+    resample_by_2.c \
+    resample_by_2_internal.c \
+    resample_fractional.c \
+    spl_init.c \
+    spl_sqrt.c \
+    spl_version.c \
+    splitting_filter.c \
+    sqrt_of_one_minus_x_squared.c \
+    vector_scaling_operations.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../.. \
+    external/webrtc
+
+ifeq ($(ARCH_ARM_HAVE_ARMV7A),true)
+LOCAL_SRC_FILES += \
+    filter_ar_fast_q12_armv7.S
+else
+LOCAL_SRC_FILES += \
+    filter_ar_fast_q12.c
+endif
+
+ifeq ($(TARGET_ARCH),arm)
+LOCAL_SRC_FILES += \
+    complex_bit_reverse_arm.S \
+    spl_sqrt_floor_arm.S
+else
+LOCAL_SRC_FILES += \
+    complex_bit_reverse.c \
+    spl_sqrt_floor.c
+endif
+
+LOCAL_SHARED_LIBRARIES := libstlport
+
+ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
+LOCAL_LDLIBS += -ldl -lpthread
+endif
+
+ifneq ($(TARGET_SIMULATOR),true)
+LOCAL_SHARED_LIBRARIES += libdl
+endif
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+#########################
+# Build the neon library.
+ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_spl_neon
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    cross_correlation_neon.S \
+    downsample_fast_neon.S \
+    min_max_operations_neon.S \
+    vector_scaling_operations_neon.S
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    $(MY_ARM_CFLAGS_NEON)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../.. \
+    external/webrtc
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+endif # ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
+
diff --git a/src/third_party/webrtc/common_audio/vad/Android.mk b/src/third_party/webrtc/common_audio/vad/Android.mk
new file mode 100644 (file)
index 0000000..ed5de6b
--- /dev/null
@@ -0,0 +1,51 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_vad
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    webrtc_vad.c \
+    vad_core.c \
+    vad_filterbank.c \
+    vad_gmm.c \
+    vad_sp.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../.. \
+    $(LOCAL_PATH)/../signal_processing/include \
+    external/webrtc
+
+LOCAL_SHARED_LIBRARIES := \
+    libdl \
+    libstlport
+
+ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
+LOCAL_LDLIBS += -ldl -lpthread
+endif
+
+ifneq ($(TARGET_SIMULATOR),true)
+LOCAL_SHARED_LIBRARIES += libdl
+endif
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/common_video/libyuv/Android.mk b/src/third_party/webrtc/common_video/libyuv/Android.mk
new file mode 100644 (file)
index 0000000..90f6250
--- /dev/null
@@ -0,0 +1,42 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_yuv
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    libyuv.cc \
+    scaler.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../.. \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../../libyuv/files/include
+
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
\ No newline at end of file
diff --git a/src/third_party/webrtc/modules/audio_coding/codecs/cng/Android.mk b/src/third_party/webrtc/modules/audio_coding/codecs/cng/Android.mk
new file mode 100644 (file)
index 0000000..32671cc
--- /dev/null
@@ -0,0 +1,40 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_cng
+LOCAL_MODULE_TAGS := optional
+LOCAL_GENERATED_SOURCES :=
+LOCAL_SRC_FILES := \
+    webrtc_cng.c \
+    cng_helpfuns.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../../common_audio/signal_processing/include 
+
+LOCAL_SHARED_LIBRARIES := \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_coding/codecs/g711/Android.mk b/src/third_party/webrtc/modules/audio_coding/codecs/g711/Android.mk
new file mode 100644 (file)
index 0000000..779bb7c
--- /dev/null
@@ -0,0 +1,40 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_g711
+LOCAL_MODULE_TAGS := optional
+LOCAL_GENERATED_SOURCES :=
+LOCAL_SRC_FILES := \
+    g711_interface.c \
+    g711.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../../../..
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_coding/codecs/g722/Android.mk b/src/third_party/webrtc/modules/audio_coding/codecs/g722/Android.mk
new file mode 100644 (file)
index 0000000..39dea9e
--- /dev/null
@@ -0,0 +1,40 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_g722
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    g722_interface.c \
+    g722_encode.c \
+    g722_decode.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../../../..
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_coding/codecs/ilbc/Android.mk b/src/third_party/webrtc/modules/audio_coding/codecs/ilbc/Android.mk
new file mode 100644 (file)
index 0000000..cbadcab
--- /dev/null
@@ -0,0 +1,165 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_ilbc
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    abs_quant.c \
+    abs_quant_loop.c \
+    augmented_cb_corr.c \
+    bw_expand.c \
+    cb_construct.c \
+    cb_mem_energy.c \
+    cb_mem_energy_augmentation.c \
+    cb_mem_energy_calc.c \
+    cb_search.c \
+    cb_search_core.c \
+    cb_update_best_index.c \
+    chebyshev.c \
+    comp_corr.c \
+    constants.c \
+    create_augmented_vec.c \
+    decode.c \
+    decode_residual.c \
+    decoder_interpolate_lsf.c \
+    do_plc.c \
+    encode.c \
+    energy_inverse.c \
+    enh_upsample.c \
+    enhancer.c \
+    enhancer_interface.c \
+    filtered_cb_vecs.c \
+    frame_classify.c \
+    gain_dequant.c \
+    gain_quant.c \
+    get_cd_vec.c \
+    get_lsp_poly.c \
+    get_sync_seq.c \
+    hp_input.c \
+    hp_output.c \
+    ilbc.c \
+    index_conv_dec.c \
+    index_conv_enc.c \
+    init_decode.c \
+    init_encode.c \
+    interpolate.c \
+    interpolate_samples.c \
+    lpc_encode.c \
+    lsf_check.c \
+    lsf_interpolate_to_poly_dec.c \
+    lsf_interpolate_to_poly_enc.c \
+    lsf_to_lsp.c \
+    lsf_to_poly.c \
+    lsp_to_lsf.c \
+    my_corr.c \
+    nearest_neighbor.c \
+    pack_bits.c \
+    poly_to_lsf.c \
+    poly_to_lsp.c \
+    refiner.c \
+    simple_interpolate_lsf.c \
+    simple_lpc_analysis.c \
+    simple_lsf_dequant.c \
+    simple_lsf_quant.c \
+    smooth.c \
+    smooth_out_data.c \
+    sort_sq.c \
+    split_vq.c \
+    state_construct.c \
+    state_search.c \
+    swap_bytes.c \
+    unpack_bits.c \
+    vq3.c \
+    vq4.c \
+    window32_w32.c \
+    xcorr_coef.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../../common_audio/signal_processing/include 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+
+# iLBC test app
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= test/iLBC_test.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/interface \
+    $(LOCAL_PATH)/../../../..
+
+LOCAL_STATIC_LIBRARIES := \
+    libwebrtc_ilbc \
+    libwebrtc_spl
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils
+
+LOCAL_MODULE:= webrtc_ilbc_test
+
+ifdef NDK_ROOT
+include $(BUILD_EXECUTABLE)
+else
+include $(BUILD_NATIVE_TEST)
+endif
+
+# iLBC_testLib test app
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= test/iLBC_testLib.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/interface \
+    $(LOCAL_PATH)/../../../..
+
+LOCAL_STATIC_LIBRARIES := \
+    libwebrtc_ilbc \
+    libwebrtc_spl
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils
+
+LOCAL_MODULE:= webrtc_ilbc_testLib
+
+ifdef NDK_ROOT
+include $(BUILD_EXECUTABLE)
+else
+include $(BUILD_NATIVE_TEST)
+endif
diff --git a/src/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/Android.mk b/src/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/Android.mk
new file mode 100644 (file)
index 0000000..200a7ec
--- /dev/null
@@ -0,0 +1,152 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+#############################
+# Build the non-neon library.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_isacfix
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    arith_routines.c \
+    arith_routines_hist.c \
+    arith_routines_logist.c \
+    bandwidth_estimator.c \
+    decode.c \
+    decode_bwe.c \
+    decode_plc.c \
+    encode.c \
+    entropy_coding.c \
+    fft.c \
+    filterbank_tables.c \
+    filterbanks.c \
+    filters.c \
+    initialize.c \
+    isacfix.c \
+    lattice.c \
+    lpc_masking_model.c \
+    lpc_tables.c \
+    pitch_estimator.c \
+    pitch_filter.c \
+    pitch_gain_tables.c \
+    pitch_lag_tables.c \
+    spectrum_ar_model_tables.c \
+    transform.c
+
+ifeq ($(ARCH_ARM_HAVE_ARMV7A),true)
+# Using .S (instead of .s) extention is to include a C header file in assembly.
+LOCAL_SRC_FILES += \
+    lattice_armv7.S \
+    pitch_filter_armv6.S
+else
+LOCAL_SRC_FILES += \
+    lattice_c.c
+endif
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../../../.. \
+    $(LOCAL_PATH)/../../../../../../common_audio/signal_processing/include
+
+LOCAL_STATIC_LIBRARIES += libwebrtc_system_wrappers
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+#########################
+# Build the neon library.
+ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_isacfix_neon
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    filterbanks_neon.S \
+    filters_neon.S \
+    lattice_neon.S \
+    lpc_masking_model_neon.S \
+    transform_neon.S
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    -mfpu=neon \
+    -mfloat-abi=softfp \
+    -flax-vector-conversions
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../../../.. \
+    $(LOCAL_PATH)/../../../../../../common_audio/signal_processing/include
+
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+endif # ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
+
+###########################
+# isac test app
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= ../test/kenny.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../../../..
+
+LOCAL_STATIC_LIBRARIES := \
+    libwebrtc_isacfix \
+    libwebrtc_spl \
+    libwebrtc_system_wrappers \
+    libwebrtc_test_support
+
+ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
+LOCAL_STATIC_LIBRARIES += \
+    libwebrtc_isacfix_neon
+endif
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils
+
+LOCAL_MODULE:= webrtc_isac_test
+
+ifdef NDK_ROOT
+include $(BUILD_EXECUTABLE)
+else
+include $(BUILD_NATIVE_TEST)
+endif
diff --git a/src/third_party/webrtc/modules/audio_coding/codecs/isac/main/source/Android.mk b/src/third_party/webrtc/modules/audio_coding/codecs/isac/main/source/Android.mk
new file mode 100644 (file)
index 0000000..07b2a31
--- /dev/null
@@ -0,0 +1,66 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_isac
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    arith_routines.c \
+    arith_routines_hist.c \
+    arith_routines_logist.c \
+    bandwidth_estimator.c \
+    crc.c \
+    decode.c \
+    decode_bwe.c \
+    encode.c \
+    encode_lpc_swb.c \
+    entropy_coding.c \
+    fft.c \
+    filter_functions.c \
+    filterbank_tables.c \
+    intialize.c \
+    isac.c \
+    filterbanks.c \
+    pitch_lag_tables.c \
+    lattice.c \
+    lpc_gain_swb_tables.c \
+    lpc_analysis.c \
+    lpc_shape_swb12_tables.c \
+    lpc_shape_swb16_tables.c \
+    lpc_tables.c \
+    pitch_estimator.c \
+    pitch_filter.c \
+    pitch_gain_tables.c \
+    spectrum_ar_model_tables.c \
+    transform.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../../../.. \
+    $(LOCAL_PATH)/../../../../../../common_audio/signal_processing/include 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_coding/codecs/pcm16b/Android.mk b/src/third_party/webrtc/modules/audio_coding/codecs/pcm16b/Android.mk
new file mode 100644 (file)
index 0000000..2e88fa6
--- /dev/null
@@ -0,0 +1,37 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_pcm16b
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := pcm16b.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../../../..
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_coding/main/source/Android.mk b/src/third_party/webrtc/modules/audio_coding/main/source/Android.mk
new file mode 100644 (file)
index 0000000..90214a9
--- /dev/null
@@ -0,0 +1,67 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_audio_coding
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    acm_cng.cc \
+    acm_codec_database.cc \
+    acm_dtmf_detection.cc \
+    acm_dtmf_playout.cc \
+    acm_g722.cc \
+    acm_generic_codec.cc \
+    acm_ilbc.cc \
+    acm_isac.cc \
+    acm_neteq.cc \
+    acm_pcm16b.cc \
+    acm_pcma.cc \
+    acm_pcmu.cc \
+    acm_red.cc \
+    acm_resampler.cc \
+    audio_coding_module.cc \
+    audio_coding_module_impl.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../codecs/cng/include \
+    $(LOCAL_PATH)/../../codecs/g711/include \
+    $(LOCAL_PATH)/../../codecs/g722/include \
+    $(LOCAL_PATH)/../../codecs/ilbc/interface \
+    $(LOCAL_PATH)/../../codecs/iSAC/main/interface \
+    $(LOCAL_PATH)/../../codecs/iSAC/fix/interface \
+    $(LOCAL_PATH)/../../codecs/pcm16b/include \
+    $(LOCAL_PATH)/../../neteq/interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../../common_audio/resampler/include \
+    $(LOCAL_PATH)/../../../../common_audio/signal_processing/include \
+    $(LOCAL_PATH)/../../../../common_audio/vad/include \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_coding/neteq/Android.mk b/src/third_party/webrtc/modules/audio_coding/neteq/Android.mk
new file mode 100644 (file)
index 0000000..84267be
--- /dev/null
@@ -0,0 +1,73 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_neteq
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    accelerate.c \
+    automode.c \
+    bgn_update.c \
+    bufstats_decision.c \
+    cng_internal.c \
+    codec_db.c \
+    correlator.c \
+    dsp.c \
+    dsp_helpfunctions.c \
+    dtmf_buffer.c \
+    dtmf_tonegen.c \
+    expand.c \
+    mcu_address_init.c \
+    mcu_dsp_common.c \
+    mcu_reset.c \
+    merge.c \
+    min_distortion.c \
+    mix_voice_unvoice.c \
+    mute_signal.c \
+    normal.c \
+    packet_buffer.c \
+    peak_detection.c \
+    preemptive_expand.c \
+    random_vector.c \
+    recin.c \
+    recout.c \
+    rtcp.c \
+    rtp.c \
+    set_fs.c \
+    signal_mcu.c \
+    split_and_insert.c \
+    unmute_signal.c \
+    webrtc_neteq.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    '-DNETEQ_VOICEENGINE_CODECS'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/interface \
+    $(LOCAL_PATH)/../codecs/cng/include \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_conference_mixer/source/Android.mk b/src/third_party/webrtc/modules/audio_conference_mixer/source/Android.mk
new file mode 100644 (file)
index 0000000..a90ff1d
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_audio_conference_mixer
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    audio_frame_manipulator.cc \
+    level_indicator.cc \
+    audio_conference_mixer_impl.cc \
+    time_scheduler.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../interface \
+    $(LOCAL_PATH)/../../audio_processing/include \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../system_wrappers/interface
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_device/Android.mk b/src/third_party/webrtc/modules/audio_device/Android.mk
new file mode 100644 (file)
index 0000000..affa5e1
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_audio_device
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    audio_device_buffer.cc \
+    audio_device_generic.cc \
+    audio_device_utility.cc \
+    audio_device_impl.cc \
+    android/audio_device_android_opensles.cc \
+    android/audio_device_utility_android.cc \
+    dummy/audio_device_utility_dummy.cc \
+    dummy/audio_device_dummy.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+   '-DWEBRTC_ANDROID_OPENSLES'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH) \
+    $(LOCAL_PATH)/android \
+    $(LOCAL_PATH)/dummy \
+    $(LOCAL_PATH)/linux \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../../common_audio/resampler/include \
+    $(LOCAL_PATH)/../../../../common_audio/signal_processing/include \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface \
+    system/media/wilhelm/include
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport \
+    libOpenSLES
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_processing/Android.mk b/src/third_party/webrtc/modules/audio_processing/Android.mk
new file mode 100644 (file)
index 0000000..3273908
--- /dev/null
@@ -0,0 +1,153 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc_apm
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    $(call all-proto-files-under, .) \
+    audio_buffer.cc \
+    audio_processing_impl.cc \
+    echo_cancellation_impl.cc \
+    echo_control_mobile_impl.cc \
+    gain_control_impl.cc \
+    high_pass_filter_impl.cc \
+    level_estimator_impl.cc \
+    noise_suppression_impl.cc \
+    splitting_filter.cc \
+    processing_component.cc \
+    voice_detection_impl.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    '-DWEBRTC_NS_FIXED' \
+    '-DWEBRTC_ANDROID_PLATFORM_BUILD' \
+    '-DWEBRTC_AUDIOPROC_DEBUG_DUMP'
+#   floating point
+#   -DWEBRTC_NS_FLOAT'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/aec/include \
+    $(LOCAL_PATH)/aecm/include \
+    $(LOCAL_PATH)/agc/include \
+    $(LOCAL_PATH)/ns/include \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../.. \
+    $(LOCAL_PATH)/../../common_audio/signal_processing/include \
+    $(LOCAL_PATH)/../../common_audio/vad/include \
+    $(LOCAL_PATH)/../../system_wrappers/interface \
+    external/protobuf/src \
+    external/webrtc
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+# apm process test app
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= \
+    $(call all-proto-files-under, .) \
+    test/process_test.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    '-DWEBRTC_ANDROID_PLATFORM_BUILD' \
+    '-DWEBRTC_AUDIOPROC_DEBUG_DUMP'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../.. \
+    $(LOCAL_PATH)/../../system_wrappers/interface \
+    external/gtest/include \
+    external/webrtc
+
+LOCAL_STATIC_LIBRARIES := \
+    libgtest \
+    libwebrtc_test_support \
+    libprotobuf-cpp-2.3.0-lite
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils \
+    libstlport \
+    libwebrtc_audio_preprocessing
+
+LOCAL_MODULE:= webrtc_audioproc
+
+ifdef NDK_ROOT
+include $(BUILD_EXECUTABLE)
+else
+include external/stlport/libstlport.mk
+include $(BUILD_NATIVE_TEST)
+endif
+
+# apm unit test app
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= \
+    $(call all-proto-files-under, test) \
+    test/audio_processing_unittest.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    '-DWEBRTC_AUDIOPROC_FIXED_PROFILE' \
+    '-DWEBRTC_ANDROID_PLATFORM_BUILD' \
+    '-DWEBRTC_AUDIOPROC_DEBUG_DUMP'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../.. \
+    $(LOCAL_PATH)/../../../test \
+    $(LOCAL_PATH)/../../system_wrappers/interface \
+    $(LOCAL_PATH)/../../common_audio/signal_processing/include \
+    external/gtest/include \
+    external/protobuf/src \
+    external/webrtc
+
+LOCAL_STATIC_LIBRARIES := \
+    libgtest \
+    libwebrtc_test_support \
+    libprotobuf-cpp-2.3.0-lite
+
+LOCAL_SHARED_LIBRARIES := \
+    libstlport \
+    libwebrtc_audio_preprocessing
+
+LOCAL_MODULE:= webrtc_audioproc_unittest
+
+ifdef NDK_ROOT
+include $(BUILD_EXECUTABLE)
+else
+include external/stlport/libstlport.mk
+include $(BUILD_NATIVE_TEST)
+endif
diff --git a/src/third_party/webrtc/modules/audio_processing/aec/Android.mk b/src/third_party/webrtc/modules/audio_processing/aec/Android.mk
new file mode 100644 (file)
index 0000000..3ad52b9
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_aec
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    echo_cancellation.c \
+    aec_resampler.c \
+    aec_core.c \
+    aec_rdft.c \
+
+ifeq ($(TARGET_ARCH),x86)
+LOCAL_SRC_FILES += \
+    aec_core_sse2.c \
+    aec_rdft_sse2.c
+endif
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../utility \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    external/webrtc
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_processing/aecm/Android.mk b/src/third_party/webrtc/modules/audio_processing/aecm/Android.mk
new file mode 100644 (file)
index 0000000..fc11383
--- /dev/null
@@ -0,0 +1,95 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+#############################
+# Build the non-neon library.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_aecm
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    echo_control_mobile.c \
+    aecm_core.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../utility \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    $(LOCAL_PATH)/../../../system_wrappers/interface \
+    external/webrtc
+
+LOCAL_STATIC_LIBRARIES += libwebrtc_system_wrappers
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+#########################
+# Build the neon library.
+ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_aecm_neon
+LOCAL_MODULE_TAGS := optional
+
+AECM_ASM_HEADER := $(intermediates)/aecm_core_neon_offsets.h
+AECM_ASM_HEADER_DIR := $(intermediates)
+
+# Generate a header file aecm_core_neon_offsets.h which will be included in
+# assembly file aecm_core_neon.S, from file aecm_core_neon_offsets.c.
+$(AECM_ASM_HEADER): $(LOCAL_PATH)/../../../build/generate_asm_header.py \
+           $(LOCAL_PATH)/aecm_core_neon_offsets.c
+       @python $^ --compiler=$(TARGET_CC) --options="$(addprefix -I, \
+               $(LOCAL_INCLUDES)) $(addprefix -isystem , $(TARGET_C_INCLUDES)) -S" \
+               --dir=$(AECM_ASM_HEADER_DIR)
+
+LOCAL_GENERATED_SOURCES := $(AECM_ASM_HEADER)
+LOCAL_SRC_FILES := aecm_core_neon.S
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    -mfpu=neon \
+    -mfloat-abi=softfp \
+    -flax-vector-conversions
+
+LOCAL_C_INCLUDES := \
+    $(AECM_ASM_HEADER_DIR) \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    external/webrtc
+
+LOCAL_INCLUDES := $(LOCAL_C_INCLUDES)
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+endif # ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
diff --git a/src/third_party/webrtc/modules/audio_processing/agc/Android.mk b/src/third_party/webrtc/modules/audio_processing/agc/Android.mk
new file mode 100644 (file)
index 0000000..35a7136
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_agc
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    analog_agc.c \
+    digital_agc.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    external/webrtc
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/audio_processing/ns/Android.mk b/src/third_party/webrtc/modules/audio_processing/ns/Android.mk
new file mode 100644 (file)
index 0000000..70e3376
--- /dev/null
@@ -0,0 +1,95 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+#############################
+# Build the non-neon library.
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_ns
+LOCAL_MODULE_TAGS := optional
+LOCAL_GENERATED_SOURCES :=
+LOCAL_SRC_FILES := \
+    noise_suppression_x.c \
+    nsx_core.c
+
+# Files for floating point.
+# noise_suppression.c ns_core.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../utility \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    $(LOCAL_PATH)/../../../system_wrappers/interface \
+    external/webrtc
+
+LOCAL_STATIC_LIBRARIES += libwebrtc_system_wrappers
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+#############################
+# Build the neon library.
+ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_ns_neon
+LOCAL_MODULE_TAGS := optional
+NS_ASM_HEADER := $(intermediates)/ns_core_neon_offsets.h
+NS_ASM_HEADER_DIR := $(intermediates)
+
+# Generate a header file nsx_core_neon_offsets.h which will be included in
+# assembly file nsx_core_neon.S, from file nsx_core_neon_offsets.c.
+$(NS_ASM_HEADER): $(LOCAL_PATH)/../../../build/generate_asm_header.py \
+           $(LOCAL_PATH)/nsx_core_neon_offsets.c
+       @python $^ --compiler=$(TARGET_CC) --options="$(addprefix -I, \
+               $(LOCAL_INCLUDES)) $(addprefix -isystem , $(TARGET_C_INCLUDES)) -S" \
+               --dir=$(NS_ASM_HEADER_DIR)
+
+LOCAL_GENERATED_SOURCES := $(NS_ASM_HEADER)
+LOCAL_SRC_FILES := nsx_core_neon.S
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    -mfpu=neon \
+    -mfloat-abi=softfp \
+    -flax-vector-conversions
+
+LOCAL_C_INCLUDES := \
+    $(NS_ASM_HEADER_DIR) \
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    external/webrtc
+
+LOCAL_INCLUDES := $(LOCAL_C_INCLUDES)
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+endif # ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
diff --git a/src/third_party/webrtc/modules/audio_processing/test/android/apmtest/jni/Android.mk b/src/third_party/webrtc/modules/audio_processing/test/android/apmtest/jni/Android.mk
new file mode 100644 (file)
index 0000000..eaf3c9d
--- /dev/null
@@ -0,0 +1,26 @@
+# Copyright (C) 2010 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE    := apmtest-activity
+LOCAL_SRC_FILES := main.c
+LOCAL_LDLIBS    := -llog -landroid -lEGL -lGLESv1_CM
+LOCAL_STATIC_LIBRARIES := android_native_app_glue
+
+include $(BUILD_SHARED_LIBRARY)
+
+$(call import-module,android/native_app_glue)
diff --git a/src/third_party/webrtc/modules/audio_processing/test/android/apmtest/jni/Application.mk b/src/third_party/webrtc/modules/audio_processing/test/android/apmtest/jni/Application.mk
new file mode 100644 (file)
index 0000000..22d188e
--- /dev/null
@@ -0,0 +1 @@
+APP_PLATFORM := android-9
diff --git a/src/third_party/webrtc/modules/audio_processing/utility/Android.mk b/src/third_party/webrtc/modules/audio_processing/utility/Android.mk
new file mode 100644 (file)
index 0000000..5a4d309
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_apm_utility
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+    fft4g.c \
+    ring_buffer.c \
+    delay_estimator.c \
+    delay_estimator_wrapper.c
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH) \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    external/webrtc
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/media_file/source/Android.mk b/src/third_party/webrtc/modules/media_file/source/Android.mk
new file mode 100644 (file)
index 0000000..2c408c8
--- /dev/null
@@ -0,0 +1,46 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_media_file
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    avi_file.cc \
+    media_file_impl.cc \
+    media_file_utility.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    '-DWEBRTC_MODULE_UTILITY_VIDEO'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../interface \
+    $(LOCAL_PATH)/../../utility/interface \
+    $(LOCAL_PATH)/../../audio_coding/main/interface \
+    $(LOCAL_PATH)/../../../system_wrappers/interface 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/rtp_rtcp/source/Android.mk b/src/third_party/webrtc/modules/rtp_rtcp/source/Android.mk
new file mode 100644 (file)
index 0000000..68295be
--- /dev/null
@@ -0,0 +1,67 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_rtp_rtcp
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+LOCAL_SRC_FILES := \
+    bitrate.cc \
+    rtp_rtcp_impl.cc \
+    rtcp_receiver.cc \
+    rtcp_receiver_help.cc \
+    rtcp_sender.cc \
+    rtcp_utility.cc \
+    rtp_receiver.cc \
+    rtp_sender.cc \
+    rtp_utility.cc \
+    rtp_header_extension.cc \
+    ssrc_database.cc \
+    tmmbr_help.cc \
+    dtmf_queue.cc \
+    rtp_receiver_audio.cc \
+    rtp_sender_audio.cc \
+    bandwidth_management.cc \
+    forward_error_correction.cc \
+    forward_error_correction_internal.cc \
+    overuse_detector.cc \
+    remote_rate_control.cc \
+    rtp_packet_history.cc \
+    receiver_fec.cc \
+    rtp_receiver_video.cc \
+    rtp_sender_video.cc \
+    rtp_format_vp8.cc \
+    transmission_bucket.cc \
+    vp8_partition_aggregator.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../interface \
+    $(LOCAL_PATH)/../../../system_wrappers/interface 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/utility/source/Android.mk b/src/third_party/webrtc/modules/utility/source/Android.mk
new file mode 100644 (file)
index 0000000..929bd7c
--- /dev/null
@@ -0,0 +1,56 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_utility
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := coder.cc \
+    file_player_impl.cc \
+    file_recorder_impl.cc \
+    process_thread_impl.cc \
+    rtp_dump_impl.cc \
+    frame_scaler.cc \
+    video_coder.cc \
+    video_frames_queue.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    '-DWEBRTC_MODULE_UTILITY_VIDEO'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../interface \
+    $(LOCAL_PATH)/../../audio_coding/main/interface \
+    $(LOCAL_PATH)/../../media_file/interface \
+    $(LOCAL_PATH)/../../video_coding/main/interface \
+    $(LOCAL_PATH)/../../video_coding/codecs/interface \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../../../common_audio/resampler/include \
+    $(LOCAL_PATH)/../../../system_wrappers/interface \
+    external/webrtc
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
+
+
diff --git a/src/third_party/webrtc/modules/video_capture/Android.mk b/src/third_party/webrtc/modules/video_capture/Android.mk
new file mode 100644 (file)
index 0000000..971f282
--- /dev/null
@@ -0,0 +1,50 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_video_capture
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    video_capture_impl.cc \
+    device_info_impl.cc \
+    video_capture_factory.cc \
+    android/video_capture_android.cc \
+    android/device_info_android.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/android \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../source \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../utility/interface \
+    $(LOCAL_PATH)/../../../audio_coding/main/interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/video_coding/codecs/i420/main/source/Android.mk b/src/third_party/webrtc/modules/video_coding/codecs/i420/main/source/Android.mk
new file mode 100644 (file)
index 0000000..d73e77d
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_i420
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := i420.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../../../.. \
+    $(LOCAL_PATH)/../../../../../../common_video/interface \
+    $(LOCAL_PATH)/../../../../../../system_wrappers/interface 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/video_coding/codecs/vp8/Android.mk b/src/third_party/webrtc/modules/video_coding/codecs/vp8/Android.mk
new file mode 100644 (file)
index 0000000..7db37ec
--- /dev/null
@@ -0,0 +1,47 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_vp8
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    reference_picture_selection.cc \
+    vp8_impl.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+# TODO(leozwang) Enable WEBRTC_LIBVPX_VERSION after libvpx is updateed
+# to a new version and also add temporal_layers.cc
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../../../.. \
+    $(LOCAL_PATH)/../../../../../../common_video/interface \
+    $(LOCAL_PATH)/../../../../../../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../../../../../../modules/interface \
+    $(LOCAL_PATH)/../../../../../../system_wrappers/interface \
+    external/libvpx 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/video_coding/main/source/Android.mk b/src/third_party/webrtc/modules/video_coding/main/source/Android.mk
new file mode 100644 (file)
index 0000000..9ebdbed
--- /dev/null
@@ -0,0 +1,69 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_video_coding
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    codec_database.cc \
+    codec_timer.cc \
+    content_metrics_processing.cc \
+    decoding_state.cc \
+    encoded_frame.cc \
+    frame_buffer.cc \
+    generic_decoder.cc \
+    generic_encoder.cc \
+    inter_frame_delay.cc \
+    jitter_buffer.cc \
+    jitter_buffer_common.cc \
+    jitter_estimator.cc \
+    media_opt_util.cc \
+    media_optimization.cc \
+    packet.cc \
+    qm_select.cc \
+    receiver.cc \
+    rtt_filter.cc \
+    session_info.cc \
+    timestamp_extrapolator.cc \
+    timestamp_map.cc \
+    timing.cc \
+    video_coding_impl.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../codecs/interface \
+    $(LOCAL_PATH)/../../codecs/i420/main/interface \
+    $(LOCAL_PATH)/../../codecs/vp8/main/interface \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../../../../common_video/interface \
+    $(LOCAL_PATH)/../../utility/include \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/video_coding/utility/Android.mk b/src/third_party/webrtc/modules/video_coding/utility/Android.mk
new file mode 100644 (file)
index 0000000..4af007c
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libvideo_coding_utility
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    exp_filter.cc \
+    frame_dropper.cc \
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/video_processing/main/source/Android.mk b/src/third_party/webrtc/modules/video_processing/main/source/Android.mk
new file mode 100644 (file)
index 0000000..829fa96
--- /dev/null
@@ -0,0 +1,59 @@
+# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_video_processing
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    brighten.cc \
+    brightness_detection.cc \
+    color_enhancement.cc \
+    content_analysis.cc \
+    deflickering.cc \
+    denoising.cc \
+    frame_preprocessor.cc \
+    spatial_resampler.cc \
+    video_decimator.cc \
+    video_processing_impl.cc
+
+ifeq ($(TARGET_ARCH),x86)
+LOCAL_SRC_FILES += \
+    content_analysis_sse2.cc
+endif
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../audio_coding/main/interface \
+    $(LOCAL_PATH)/../../../utility/interface \
+    $(LOCAL_PATH)/../../../../common_audio/signal_processing/include \
+    $(LOCAL_PATH)/../../../../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/modules/video_render/Android.mk b/src/third_party/webrtc/modules/video_render/Android.mk
new file mode 100644 (file)
index 0000000..c11a89c
--- /dev/null
@@ -0,0 +1,53 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libwebrtc_video_render
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    incoming_video_stream.cc \
+    video_render_frames.cc \
+    video_render_impl.cc \
+    external/video_render_external_impl.cc \
+    android/video_render_android_impl.cc \
+    android/video_render_android_native_opengl2.cc \
+    android/video_render_android_surface_view.cc \
+    android/video_render_opengles20.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+    '-DWEBRTC_INCLUDE_INTERNAL_VIDEO_RENDER'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH) \
+    $(LOCAL_PATH)/android \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../audio_coding/main/interface \
+    $(LOCAL_PATH)/../../../interface \
+    $(LOCAL_PATH)/../../../utility/interface \
+    $(LOCAL_PATH)/../../../../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/system_wrappers/source/Android.mk b/src/third_party/webrtc/system_wrappers/source/Android.mk
new file mode 100644 (file)
index 0000000..6cc7a0b
--- /dev/null
@@ -0,0 +1,62 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc_system_wrappers
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    android/cpu-features.c \
+    cpu_features_android.c \
+    sort.cc \
+    aligned_malloc.cc \
+    atomic32_posix.cc \
+    condition_variable.cc \
+    cpu_features.cc \
+    cpu_info.cc \
+    critical_section.cc \
+    event.cc \
+    event_tracer.cc \
+    file_impl.cc \
+    list_no_stl.cc \
+    rw_lock.cc \
+    thread.cc \
+    trace_impl.cc \
+    condition_variable_posix.cc \
+    critical_section_posix.cc \
+    event_posix.cc \
+    sleep.cc \
+    thread_posix.cc \
+    tick_util.cc \
+    trace_posix.cc \
+    rw_lock_posix.cc 
+
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../.. \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/spreadsortlib \
+    external/webrtc
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/test/Android.mk b/src/third_party/webrtc/test/Android.mk
new file mode 100644 (file)
index 0000000..73dceea
--- /dev/null
@@ -0,0 +1,39 @@
+
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+include $(LOCAL_PATH)/../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE:= libwebrtc_test_support
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= \
+    testsupport/android/root_path_android.cc \
+    testsupport/fileutils.cc \
+    testsupport/perf_test.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    external/gtest/include \
+    external/webrtc \
+    external/webrtc/webrtc
+
+LOCAL_STATIC_LIBRARIES := \
+    libgtest
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/video_engine/Android.mk b/src/third_party/webrtc/video_engine/Android.mk
new file mode 100644 (file)
index 0000000..b0a0d63
--- /dev/null
@@ -0,0 +1,95 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc_vie_core
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    vie_base_impl.cc \
+    vie_capture_impl.cc \
+    vie_codec_impl.cc \
+    vie_encryption_impl.cc \
+    vie_external_codec_impl.cc \
+    vie_file_impl.cc \
+    vie_image_process_impl.cc \
+    vie_impl.cc \
+    vie_network_impl.cc \
+    vie_ref_count.cc \
+    vie_render_impl.cc \
+    vie_rtp_rtcp_impl.cc \
+    vie_shared_data.cc \
+    vie_capturer.cc \
+    vie_channel.cc \
+    vie_channel_group.cc \
+    vie_channel_manager.cc \
+    vie_encoder.cc \
+    vie_file_image.cc \
+    vie_file_player.cc \
+    vie_file_recorder.cc \
+    vie_frame_provider_base.cc \
+    vie_input_manager.cc \
+    vie_manager_base.cc \
+    vie_performance_monitor.cc \
+    vie_receiver.cc \
+    vie_remb.cc \
+    vie_renderer.cc \
+    vie_render_manager.cc \
+    vie_sender.cc \
+    vie_sync_module.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/include\
+    $(LOCAL_PATH)/.. \
+    $(LOCAL_PATH)/../common_video/interface \
+    $(LOCAL_PATH)/../common_video/jpeg/main/interface \
+    $(LOCAL_PATH)/../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../modules/interface \
+    $(LOCAL_PATH)/../modules/audio_coding/main/interface \
+    $(LOCAL_PATH)/../modules/media_file/interface \
+    $(LOCAL_PATH)/../modules/rtp_rtcp/interface \
+    $(LOCAL_PATH)/../modules/udp_transport/interface \
+    $(LOCAL_PATH)/../modules/utility/interface \
+    $(LOCAL_PATH)/../modules/video_capture/main/interface \
+    $(LOCAL_PATH)/../modules/video_capture/main/source \
+    $(LOCAL_PATH)/../modules/video_capture/main/source/Android \
+    $(LOCAL_PATH)/../modules/video_coding/codecs/interface \
+    $(LOCAL_PATH)/../modules/video_coding/main/interface \
+    $(LOCAL_PATH)/../modules/video_mixer/main/interface \
+    $(LOCAL_PATH)/../modules/video_processing/main/interface \
+    $(LOCAL_PATH)/../modules/video_render/main/interface \
+    $(LOCAL_PATH)/../system_wrappers/interface \
+    $(LOCAL_PATH)/../voice_engine/include
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport
+
+ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
+LOCAL_LDLIBS += -ldl -lpthread
+endif
+
+ifneq ($(TARGET_SIMULATOR),true)
+LOCAL_SHARED_LIBRARIES += libdl
+endif
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/video_engine/test/auto_test/android/Android.mk b/src/third_party/webrtc/video_engine/test/auto_test/android/Android.mk
new file mode 100644 (file)
index 0000000..5f8d548
--- /dev/null
@@ -0,0 +1,38 @@
+#  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+#  Use of this source code is governed by a BSD-style license
+#  that can be found in the LICENSE file in the root of the source
+#  tree. An additional intellectual property rights grant can be found
+#  in the file PATENTS.  All contributing project authors may
+#  be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+MY_CAPTURE_FOLDER := ../../../../modules/video_capture/main/source
+MY_CAPTURE_JAVA_FOLDER := Android/java/org/webrtc/videoengine
+MY_CAPTURE_PATH := $(MY_CAPTURE_FOLDER)/$(MY_CAPTURE_JAVA_FOLDER)
+
+MY_RENDER_FOLDER := ../../../../modules/video_render/main/source
+MY_RENDER_JAVA_FOLDER := Android/java/org/webrtc/videoengine
+MY_RENDER_PATH := $(MY_RENDER_FOLDER)/$(MY_RENDER_JAVA_FOLDER)
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SRC_FILES := \
+    src/org/webrtc/vieautotest/ViEAutotest.java \
+    $(MY_CAPTURE_PATH)/VideoCaptureAndroid.java \
+    $(MY_CAPTURE_PATH)/VideoCaptureDeviceInfoAndroid.java \
+    $(MY_RENDER_PATH)/ViEAndroidGLES20.java \
+    $(MY_RENDER_PATH)/ViERenderer.java \
+    $(MY_RENDER_PATH)/ViESurfaceRenderer.java 
+
+LOCAL_PACKAGE_NAME := webrtc-video-autotest
+LOCAL_CERTIFICATE := platform
+
+LOCAL_JNI_SHARED_LIBRARIES := libwebrtc-video-autotest-jni
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/src/third_party/webrtc/video_engine/test/auto_test/android/jni/Android.mk b/src/third_party/webrtc/video_engine/test/auto_test/android/jni/Android.mk
new file mode 100644 (file)
index 0000000..82a511f
--- /dev/null
@@ -0,0 +1,77 @@
+#  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.\r
+#\r
+#  Use of this source code is governed by a BSD-style license\r
+#  that can be found in the LICENSE file in the root of the source\r
+#  tree. An additional intellectual property rights grant can be found\r
+#  in the file PATENTS.  All contributing project authors may\r
+#  be found in the AUTHORS file in the root of the source tree.\r
+\r
+LOCAL_PATH := $(call my-dir)\r
+\r
+# the follow two lines are for NDK build\r
+INTERFACES_PATH := $(LOCAL_PATH)/../../../../../../build/interface\r
+LIBS_PATH := $(LOCAL_PATH)/../../../../../../build/libraries\r
+\r
+include $(CLEAR_VARS)\r
+\r
+LOCAL_MODULE_TAGS := tests\r
+LOCAL_MODULE := libwebrtc-video-autotest-jni\r
+LOCAL_CPP_EXTENSION := .cc\r
+LOCAL_SRC_FILES := \\r
+    vie_autotest_jni.cc \\r
+    ../../source/vie_autotest_android.cc \\r
+    ../../source/vie_autotest.cc \\r
+    ../../source/vie_autotest_base.cc \\r
+    ../../source/vie_autotest_capture.cc \\r
+    ../../source/vie_autotest_codec.cc \\r
+    ../../source/vie_autotest_encryption.cc \\r
+    ../../source/vie_autotest_file.cc \\r
+    ../../source/vie_autotest_image_process.cc \\r
+    ../../source/vie_autotest_loopback.cc \\r
+    ../../source/vie_autotest_network.cc \\r
+    ../../source/vie_autotest_render.cc \\r
+    ../../source/vie_autotest_rtp_rtcp.cc \\r
+    ../../source/tb_I420_codec.cc \\r
+    ../../source/tb_capture_device.cc \\r
+    ../../source/tb_external_transport.cc \\r
+    ../../source/tb_interfaces.cc \\r
+    ../../source/tb_video_channel.cc \r
+\r
+LOCAL_CFLAGS := \\r
+    '-DWEBRTC_TARGET_PC' \\r
+    '-DWEBRTC_ANDROID' \\r
+    '-DWEBRTC_ANDROID_OPENSLES'\r
+\r
+LOCAL_C_INCLUDES := \\r
+    external/gtest/include \\r
+    $(LOCAL_PATH)/../interface \\r
+    $(LOCAL_PATH)/../../interface \\r
+    $(LOCAL_PATH)/../../../interface \\r
+    $(LOCAL_PATH)/../../.. \\r
+    $(LOCAL_PATH)/../../../../.. \\r
+    $(LOCAL_PATH)/../../../../../common_video/interface \\r
+    $(LOCAL_PATH)/../../../../../common_video/vplib/main/interface \\r
+    $(LOCAL_PATH)/../../../../../modules/interface \\r
+    $(LOCAL_PATH)/../../../../../modules/video_capture/main/interface \\r
+    $(LOCAL_PATH)/../../../../../modules/video_capture/main/source \\r
+    $(LOCAL_PATH)/../../../../../modules/video_coding/codecs/interface \\r
+    $(LOCAL_PATH)/../../../../../modules/video_render/main/interface \\r
+    $(LOCAL_PATH)/../../../../../voice_engine/include \\r
+    $(LOCAL_PATH)/../../../../../system_wrappers/interface \r
+\r
+LOCAL_PRELINK_MODULE := false\r
+\r
+LOCAL_SHARED_LIBRARIES := \\r
+    libutils \\r
+    libstlport \\r
+    libandroid \\r
+    libwebrtc \\r
+    libGLESv2\r
+\r
+# the following line is for NDK build\r
+LOCAL_LDLIBS     := $(LIBS_PATH)/VideoEngine_android_gcc.a -llog -lgcc \r
+\r
+ifndef NDK_ROOT\r
+include external/stlport/libstlport.mk\r
+endif\r
+include $(BUILD_SHARED_LIBRARY)\r
diff --git a/src/third_party/webrtc/video_engine/test/auto_test/source/Android.mk b/src/third_party/webrtc/video_engine/test/auto_test/source/Android.mk
new file mode 100644 (file)
index 0000000..ffdc613
--- /dev/null
@@ -0,0 +1,65 @@
+#  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+#  Use of this source code is governed by a BSD-style license
+#  that can be found in the LICENSE file in the root of the source
+#  tree. An additional intellectual property rights grant can be found
+#  in the file PATENTS.  All contributing project authors may
+#  be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH:= $(call my-dir)
+
+# voice engine test app
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= \
+    vie_autotest.cc \
+    vie_autotest_android.cc \
+    vie_autotest_base.cc \
+    vie_autotest_capture.cc \
+    vie_autotest_codec.cc \
+    vie_autotest_encryption.cc \
+    vie_autotest_file.cc \
+    vie_autotest_image_process.cc \
+    vie_autotest_loopback.cc \
+    vie_autotest_network.cc \
+    vie_autotest_render.cc \
+    vie_autotest_rtp_rtcp.cc \
+    vie_comparison_tests.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    '-DWEBRTC_TARGET_PC' \
+    '-DWEBRTC_ANDROID' \
+    '-DWEBRTC_ANDROID_OPENSLES'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../helpers \
+    $(LOCAL_PATH)/../primitives \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../include \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../../modules/video_coding/codecs/interface \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface \
+    $(LOCAL_PATH)/../../../../modules/video_render/main/interface \
+    $(LOCAL_PATH)/../../../../modules/interface \
+    $(LOCAL_PATH)/../../../../modules/video_capture/main/interface \
+    $(LOCAL_PATH)/../../../../common_video/vplib/main/interface \
+    $(LOCAL_PATH)/../../../../voice_engine/include
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils \
+    libstlport \
+    libwebrtc
+
+LOCAL_MODULE:= webrtc_video_test
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_EXECUTABLE)
diff --git a/src/third_party/webrtc/voice_engine/Android.mk b/src/third_party/webrtc/voice_engine/Android.mk
new file mode 100644 (file)
index 0000000..4c5fa59
--- /dev/null
@@ -0,0 +1,87 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../android-webrtc.mk
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc_voe_core
+LOCAL_MODULE_TAGS := optional
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := \
+    audio_frame_operations.cc \
+    channel.cc \
+    channel_manager.cc \
+    dtmf_inband.cc \
+    dtmf_inband_queue.cc \
+    level_indicator.cc \
+    monitor_module.cc \
+    output_mixer.cc \
+    ref_count.cc \
+    shared_data.cc \
+    statistics.cc \
+    transmit_mixer.cc \
+    utility.cc \
+    voe_audio_processing_impl.cc \
+    voe_base_impl.cc \
+    voe_call_report_impl.cc \
+    voe_codec_impl.cc \
+    voe_dtmf_impl.cc \
+    voe_encryption_impl.cc \
+    voe_external_media_impl.cc \
+    voe_file_impl.cc \
+    voe_hardware_impl.cc \
+    voe_neteq_stats_impl.cc \
+    voe_network_impl.cc \
+    voe_rtp_rtcp_impl.cc \
+    voe_video_sync_impl.cc \
+    voe_volume_control_impl.cc \
+    voice_engine_impl.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    $(MY_WEBRTC_COMMON_DEFS) \
+   '-DWEBRTC_ANDROID_OPENSLES'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../interface \
+    $(LOCAL_PATH)/../../.. \
+    $(LOCAL_PATH)/../../../common_audio/resampler/include \
+    $(LOCAL_PATH)/../../../common_audio/signal_processing/include \
+    $(LOCAL_PATH)/../../../modules/interface \
+    $(LOCAL_PATH)/../../../modules/audio_coding/main/interface \
+    $(LOCAL_PATH)/../../../modules/audio_conference_mixer/interface \
+    $(LOCAL_PATH)/../../../modules/audio_device/main/interface \
+    $(LOCAL_PATH)/../../../modules/audio_device/main/source \
+    $(LOCAL_PATH)/../../../modules/audio_processing/include \
+    $(LOCAL_PATH)/../../../modules/media_file/interface \
+    $(LOCAL_PATH)/../../../modules/rtp_rtcp/interface \
+    $(LOCAL_PATH)/../../../modules/udp_transport/interface \
+    $(LOCAL_PATH)/../../../modules/utility/interface \
+    $(LOCAL_PATH)/../../../system_wrappers/interface 
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libdl \
+    libstlport 
+
+ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
+LOCAL_LDLIBS += -ldl -lpthread
+endif
+
+ifneq ($(TARGET_SIMULATOR),true)
+LOCAL_SHARED_LIBRARIES += libdl
+endif
+
+ifndef NDK_ROOT
+include external/stlport/libstlport.mk
+endif
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/third_party/webrtc/voice_engine/test/android/android_test/Android.mk b/src/third_party/webrtc/voice_engine/test/android/android_test/Android.mk
new file mode 100644 (file)
index 0000000..a3f5ce6
--- /dev/null
@@ -0,0 +1,25 @@
+#  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+#  Use of this source code is governed by a BSD-style license
+#  that can be found in the LICENSE file in the root of the source
+#  tree. An additional intellectual property rights grant can be found
+#  in the file PATENTS.  All contributing project authors may
+#  be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SRC_FILES := \
+    src/org/webrtc/voiceengine/test/AndroidTest.java
+
+LOCAL_PACKAGE_NAME := webrtc-voice-demo
+LOCAL_CERTIFICATE := platform
+
+LOCAL_JNI_SHARED_LIBRARIES := libwebrtc-voice-demo-jni
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/src/third_party/webrtc/voice_engine/test/android/android_test/jni/Android.mk b/src/third_party/webrtc/voice_engine/test/android/android_test/jni/Android.mk
new file mode 100644 (file)
index 0000000..d7e04b5
--- /dev/null
@@ -0,0 +1,152 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+ifdef NDK_ROOT
+
+MY_WEBRTC_ROOT_PATH := $(call my-dir)
+
+MY_WEBRTC_SRC_PATH := ../../../../../../..
+
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/common_audio/resampler/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/common_audio/signal_processing/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/common_audio/vad/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/neteq/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/codecs/cng/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/codecs/g711/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/codecs/g722/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/codecs/pcm16b/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/codecs/ilbc/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/codecs/iSAC/fix/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/codecs/iSAC/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_coding/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_conference_mixer/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_device/main/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_processing/aec/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_processing/aecm/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_processing/agc/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_processing/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_processing/ns/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/audio_processing/utility/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/media_file/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/rtp_rtcp/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/udp_transport/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/modules/utility/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/system_wrappers/source/Android.mk
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/voice_engine/Android.mk
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc_audio_preprocessing
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+    libwebrtc_spl \
+    libwebrtc_resampler \
+    libwebrtc_apm \
+    libwebrtc_apm_utility \
+    libwebrtc_vad \
+    libwebrtc_ns \
+    libwebrtc_agc \
+    libwebrtc_aec \
+    libwebrtc_aecm \
+    libwebrtc_system_wrappers \
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libstlport_shared
+
+LOCAL_LDLIBS := \
+    -lgcc \
+    -llog
+
+LOCAL_PRELINK_MODULE := false
+
+include $(BUILD_SHARED_LIBRARY)
+
+###
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := libwebrtc-voice-jni
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+    libwebrtc_system_wrappers \
+    libwebrtc_audio_device \
+    libwebrtc_pcm16b \
+    libwebrtc_cng \
+    libwebrtc_audio_coding \
+    libwebrtc_rtp_rtcp \
+    libwebrtc_media_file \
+    libwebrtc_udp_transport \
+    libwebrtc_utility \
+    libwebrtc_neteq \
+    libwebrtc_audio_conference_mixer \
+    libwebrtc_isac \
+    libwebrtc_ilbc \
+    libwebrtc_isacfix \
+    libwebrtc_g722 \
+    libwebrtc_g711 \
+    libwebrtc_voe_core
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libstlport_shared \
+    libwebrtc_audio_preprocessing
+
+LOCAL_LDLIBS := \
+    -lgcc \
+    -llog \
+    -lOpenSLES
+
+LOCAL_PRELINK_MODULE := false
+
+include $(BUILD_SHARED_LIBRARY)
+
+###
+
+include $(MY_WEBRTC_ROOT_PATH)/$(MY_WEBRTC_SRC_PATH)/src/voice_engine/test/cmd_test/Android.mk
+
+else
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_MODULE := libwebrtc-voice-demo-jni
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := android_test.cc
+LOCAL_CFLAGS := \
+    '-DWEBRTC_TARGET_PC' \
+    '-DWEBRTC_ANDROID'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../../../auto_test \
+    $(LOCAL_PATH)/../../../../interface \
+    $(LOCAL_PATH)/../../../../../.. \
+    $(LOCAL_PATH)/../../../../../../system_wrappers/interface
+
+LOCAL_PRELINK_MODULE := false
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils \
+    libstlport \
+    libandroid \
+    libwebrtc \
+    libGLESv2
+
+include $(BUILD_SHARED_LIBRARY)
+
+endif
diff --git a/src/third_party/webrtc/voice_engine/test/android/android_test/jni/Application.mk b/src/third_party/webrtc/voice_engine/test/android/android_test/jni/Application.mk
new file mode 100644 (file)
index 0000000..03c35ac
--- /dev/null
@@ -0,0 +1,11 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# Build both ARMv5TE and ARMv7-A machine code.
+APP_ABI := armeabi armeabi-v7a x86  
+APP_STL := stlport_shared
diff --git a/src/third_party/webrtc/voice_engine/test/auto_test/Android.mk b/src/third_party/webrtc/voice_engine/test/auto_test/Android.mk
new file mode 100644 (file)
index 0000000..cfb9d67
--- /dev/null
@@ -0,0 +1,56 @@
+#  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+#
+#  Use of this source code is governed by a BSD-style license
+#  that can be found in the LICENSE file in the root of the source
+#  tree. An additional intellectual property rights grant can be found
+#  in the file PATENTS.  All contributing project authors may
+#  be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH:= $(call my-dir)
+
+# voice engine test app
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= \
+    automated_mode.cc \
+    voe_cpu_test.cc \
+    voe_standard_test.cc \
+    voe_stress_test.cc \
+    voe_unit_test.cc \
+    voe_extended_test.cc \
+    voe_standard_integration_test.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    '-DWEBRTC_TARGET_PC' \
+    '-DWEBRTC_LINUX' \
+    '-DWEBRTC_ANDROID'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../../interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../../modules/audio_device/main/interface \
+    $(LOCAL_PATH)/../../../../modules/interface \
+    $(LOCAL_PATH)/../../../../system_wrappers/interface \
+    $(LOCAL_PATH)/../../../../../test \
+    external/gtest/include \
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils \
+    libstlport \
+    libwebrtc
+
+LOCAL_MODULE:= webrtc_voe_autotest
+
+ifdef NDK_ROOT
+include $(BUILD_EXECUTABLE)
+else
+include external/stlport/libstlport.mk
+include $(BUILD_NATIVE_TEST)
+endif
+
diff --git a/src/third_party/webrtc/voice_engine/test/cmd_test/Android.mk b/src/third_party/webrtc/voice_engine/test/cmd_test/Android.mk
new file mode 100644 (file)
index 0000000..f1a4f1a
--- /dev/null
@@ -0,0 +1,60 @@
+#  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+#  Use of this source code is governed by a BSD-style license
+#  that can be found in the LICENSE file in the root of the source
+#  tree. An additional intellectual property rights grant can be found
+#  in the file PATENTS.  All contributing project authors may
+#  be found in the AUTHORS file in the root of the source tree.
+
+LOCAL_PATH:= $(call my-dir)
+
+# voice engine test app
+
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/../../../../../android-webrtc.mk
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES:= \
+    voe_cmd_test.cc
+
+# Flags passed to both C and C++ files.
+LOCAL_CFLAGS := \
+    '-DWEBRTC_TARGET_PC' \
+    '-DWEBRTC_ANDROID' \
+    '-DDEBUG'
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/../../interface \
+    $(LOCAL_PATH)/../../../.. \
+    $(LOCAL_PATH)/../../../../.. \
+    external/gtest/include \
+    frameworks/base/include
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils \
+    libmedia \
+    libcamera_client \
+    libgui \
+    libhardware \
+    libandroid_runtime \
+    libbinder
+
+#libwilhelm.so libDunDef-Android.so libbinder.so libsystem_server.so 
+
+LOCAL_MODULE:= webrtc_voe_cmd
+
+ifdef NDK_ROOT
+LOCAL_SHARED_LIBRARIES += \
+    libstlport_shared \
+    libwebrtc-voice-jni \
+    libwebrtc_audio_preprocessing
+include $(BUILD_EXECUTABLE)
+else
+LOCAL_SHARED_LIBRARIES += \
+    libstlport \
+    libwebrtc
+include external/stlport/libstlport.mk
+include $(BUILD_NATIVE_TEST)
+endif
diff --git a/src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/chromium.png b/src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/chromium.png
new file mode 100644 (file)
index 0000000..9085a79
Binary files /dev/null and b/src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/chromium.png differ
diff --git a/src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/kiddie_logo.png b/src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/kiddie_logo.png
new file mode 100644 (file)
index 0000000..61c7068
Binary files /dev/null and b/src/tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/kiddie_logo.png differ
diff --git a/src/tools/perf/page_sets/tough_scrolling_cases/image.png b/src/tools/perf/page_sets/tough_scrolling_cases/image.png
new file mode 100644 (file)
index 0000000..82c2870
Binary files /dev/null and b/src/tools/perf/page_sets/tough_scrolling_cases/image.png differ
diff --git a/src/v8/test/mjsunit/tools/profviz-test.log b/src/v8/test/mjsunit/tools/profviz-test.log
new file mode 100644 (file)
index 0000000..fe4b7ff
--- /dev/null
@@ -0,0 +1,2613 @@
+shared-library,"/usr/local/google/home/yangguo/v8/out/ia32.release/d8",0x08048000,0x08557000
+shared-library,"2506f000-25070000",0x2506f000,0x25070000
+shared-library,"31e60000-31e61000",0x31e60000,0x31e61000
+shared-library,"35dff000-35e00000",0x35dff000,0x35e00000
+shared-library,"48218000-48219000",0x48218000,0x48219000
+shared-library,"4af7d000-4af7e000",0x4af7d000,0x4af7e000
+shared-library,"55bf2000-55bf3000",0x55bf2000,0x55bf3000
+shared-library,"/lib/i386-linux-gnu/libc-2.15.so",0xf7450000,0xf75f3000
+shared-library,"/lib/i386-linux-gnu/libpthread-2.15.so",0xf75f9000,0xf7610000
+shared-library,"/lib/i386-linux-gnu/libgcc_s.so.1",0xf7614000,0xf7630000
+shared-library,"/lib/i386-linux-gnu/libm-2.15.so",0xf7633000,0xf765d000
+shared-library,"/usr/lib/i386-linux-gnu/libstdc++.so.6.0.16",0xf765f000,0xf7737000
+shared-library,"[vdso]",0xf776d000,0xf776e000
+shared-library,"/lib/i386-linux-gnu/ld-2.15.so",0xf776e000,0xf778e000
+profiler,"begin",1
+timer-event-start,"V8.GCCompactor",2425
+timer-event-start,"V8.External",2458
+timer-event-end,"V8.External",2468
+timer-event-start,"V8.External",3810
+timer-event-end,"V8.External",3830
+timer-event-end,"V8.GCCompactor",3840
+code-creation,Stub,2,0x2b80a000,484,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80a200,622,"CEntryStub"
+code-creation,Stub,2,0x2b80a480,540,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,13,0x2b80a6a0,116,"CompareICStub"
+code-creation,Stub,2,0x2b80a720,1428,"RecordWriteStub"
+code-creation,Stub,2,0x2b80acc0,97,"StoreBufferOverflowStub"
+code-creation,Stub,2,0x2b80ad40,611,"RecordWriteStub"
+code-creation,Stub,2,0x2b80afc0,76,"InterruptStub"
+code-creation,Stub,13,0x2b80b020,104,"CompareICStub"
+code-creation,Stub,2,0x2b80b0a0,130,"ArgumentsAccessStub"
+code-creation,Stub,2,0x2b80b140,160,"FastNewContextStub"
+code-creation,Stub,2,0x2b80b1e0,79,"StubFailureTrampolineStub"
+code-creation,Stub,2,0x2b80b240,704,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,14,0x2b80b500,93,"CompareNilICStub"
+code-creation,Stub,2,0x2b80b560,289,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80b6a0,664,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80b940,740,"NameDictionaryLookupStub"
+code-creation,Stub,13,0x2b80bc40,156,"CompareICStub"
+code-creation,Stub,2,0x2b80bce0,611,"RecordWriteStub"
+code-creation,Stub,13,0x2b80bf60,122,"CompareICStub"
+code-creation,Stub,2,0x2b80bfe0,217,"CreateAllocationSiteStub"
+code-creation,Stub,2,0x2b80c0c0,1456,"RecordWriteStub"
+code-creation,Stub,2,0x2b80c680,245,"StoreArrayLiteralElementStub"
+code-creation,Stub,2,0x2b80c780,1448,"RecordWriteStub"
+code-creation,Stub,2,0x2b80cd40,1471,"StringAddStub"
+code-creation,Stub,2,0x2b80d300,1448,"RecordWriteStub"
+code-creation,Stub,2,0x2b80d8c0,1453,"RecordWriteStub"
+code-creation,Stub,12,0x2b80de80,146,"BinaryOpStub"
+code-creation,Stub,2,0x2b80df20,640,"InternalArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e1a0,517,"ArrayConstructorStub"
+code-creation,Stub,2,0x2b80e3c0,305,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e500,305,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e640,349,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e7a0,349,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e900,289,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80ea40,680,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80ed00,692,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80efc0,704,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80f280,664,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80f520,488,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80f720,540,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80f940,432,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80fb00,432,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80fcc0,1453,"RecordWriteStub"
+code-creation,Stub,2,0x2b810280,400,"InternalArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b810420,611,"RecordWriteStub"
+code-creation,Stub,2,0x2b8106a0,213,"JSEntryStub"
+code-creation,Stub,13,0x2b810780,104,"CompareICStub"
+code-creation,Stub,12,0x2b810800,124,"BinaryOpStub"
+code-creation,Stub,2,0x2b810880,1447,"StringAddStub"
+code-creation,Stub,2,0x2b810e40,640,"InternalArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b8110c0,400,"InternalArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b811260,261,"FastCloneShallowArrayStub"
+code-creation,Stub,12,0x2b811380,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b8113e0,76,"StackCheckStub"
+code-creation,Stub,2,0x2b811440,1437,"RecordWriteStub"
+code-creation,Stub,2,0x2b8119e0,289,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b811b20,331,"CallFunctionStub"
+code-creation,Builtin,3,0x2b811c80,174,"A builtin from the snapshot"
+code-creation,Stub,14,0x2b811d40,124,"CompareNilICStub"
+code-creation,Stub,2,0x2b811dc0,1420,"RecordWriteStub"
+code-creation,Stub,13,0x2b812360,104,"CompareICStub"
+code-creation,Stub,2,0x2b8123e0,76,"LoadFieldStub"
+code-creation,Stub,13,0x2b812440,104,"CompareICStub"
+code-creation,Stub,2,0x2b8124c0,195,"NumberToStringStub"
+code-creation,Stub,15,0x2b8125a0,148,"ToBooleanStub"
+code-creation,Stub,2,0x2b812640,351,"ArgumentsAccessStub"
+code-creation,Stub,2,0x2b8127a0,664,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b812a40,1420,"RecordWriteStub"
+code-creation,Stub,12,0x2b812fe0,133,"BinaryOpStub"
+code-creation,Stub,2,0x2b813080,1664,"StringAddStub"
+code-creation,Stub,2,0x2b813700,1661,"StringAddStub"
+code-creation,Stub,2,0x2b813d80,472,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b813f60,80,"StubFailureTrampolineStub"
+code-creation,Stub,13,0x2b813fc0,104,"CompareICStub"
+code-creation,Stub,2,0x2b814040,331,"CallFunctionStub"
+code-creation,Stub,2,0x2b8141a0,660,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b814440,1433,"RecordWriteStub"
+code-creation,Stub,12,0x2b8149e0,146,"BinaryOpStub"
+code-creation,Stub,2,0x2b814a80,271,"CallConstructStub"
+code-creation,Stub,15,0x2b814ba0,136,"ToBooleanStub"
+code-creation,Stub,2,0x2b814c40,468,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,15,0x2b814e20,128,"ToBooleanStub"
+code-creation,Stub,2,0x2b814ea0,163,"FastNewContextStub"
+code-creation,Stub,2,0x2b814f60,1425,"RecordWriteStub"
+code-creation,LoadIC,5,0x2b815500,145,"A load IC from the snapshot"
+code-creation,Builtin,3,0x2b8155a0,83,"A builtin from the snapshot"
+code-creation,Stub,12,0x2b815600,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b815660,1433,"RecordWriteStub"
+code-creation,Stub,2,0x2b815c00,331,"CallFunctionStub"
+code-creation,Stub,13,0x2b815d60,104,"CompareICStub"
+code-creation,Stub,2,0x2b815de0,304,"FastNewClosureStub"
+code-creation,Stub,2,0x2b815f20,285,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b816040,1433,"RecordWriteStub"
+code-creation,Stub,2,0x2b8165e0,233,"InternalArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b8166e0,740,"NameDictionaryLookupStub"
+code-creation,Stub,2,0x2b8169e0,740,"NameDictionaryLookupStub"
+code-creation,Stub,12,0x2b816ce0,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b816d40,216,"StringCompareStub"
+code-creation,Stub,15,0x2b816e20,93,"ToBooleanStub"
+code-creation,Stub,12,0x2b816e80,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b816ee0,1433,"RecordWriteStub"
+code-creation,Stub,12,0x2b817480,155,"BinaryOpStub"
+code-creation,Stub,2,0x2b817520,169,"InternalArrayConstructorStub"
+code-creation,Stub,2,0x2b8175e0,233,"InternalArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b8176e0,1433,"RecordWriteStub"
+code-creation,Stub,12,0x2b817c80,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b817ce0,328,"KeyedLoadElementStub"
+code-creation,Stub,2,0x2b817e40,1461,"RecordWriteStub"
+code-creation,Stub,2,0x2b818400,98,"ToNumberStub"
+code-creation,Stub,13,0x2b818480,122,"CompareICStub"
+code-creation,Stub,12,0x2b818500,124,"BinaryOpStub"
+code-creation,Stub,2,0x2b818580,148,"CallConstructStub"
+code-creation,Stub,13,0x2b818620,491,"CompareICStub"
+code-creation,Stub,2,0x2b818820,213,"JSEntryStub"
+code-creation,CallIC,7,0x2b818900,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8189c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818a80,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818b40,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818c00,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818cc0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818d80,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818e40,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818f00,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818fc0,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819080,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819140,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819200,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8192c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819380,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819440,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819500,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8195c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819680,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819740,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819800,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8198c0,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819980,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819a40,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819b00,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819bc0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819c80,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819d40,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819e00,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819ec0,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819f80,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a040,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a100,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a1c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a280,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a340,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a400,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a4c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a580,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a640,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a700,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a7c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a880,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a940,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81aa00,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81aac0,180,"A call IC from the snapshot"
+code-creation,Builtin,3,0x2b81ab80,107,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81ac00,105,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81ac80,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81ace0,432,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81afc0,101,"A builtin from the snapshot"
+code-creation,LoadIC,5,0x2b81b1a0,83,"A load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b81bf00,83,"A keyed load IC from the snapshot"
+code-creation,StoreIC,9,0x2b81c680,84,"A store IC from the snapshot"
+code-creation,Builtin,3,0x2b8262e0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826340,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8263a0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826400,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826460,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8264c0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826520,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826580,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8265e0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826640,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8266a0,80,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826700,80,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826760,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8267c0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826820,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826880,75,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8268e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826960,491,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826b60,406,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826d00,157,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826da0,131,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826e40,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826ec0,107,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826f40,143,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826fe0,143,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827080,143,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827120,94,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827180,91,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8271e0,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827240,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8272a0,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827300,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827360,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8273c0,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827420,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827480,84,"A builtin from the snapshot"
+code-creation,LoadIC,5,0x2b8274e0,83,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b827540,313,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b827680,266,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b8277a0,80,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b827800,83,"A load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827860,83,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b8278c0,896,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827c40,499,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827e40,144,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827ee0,216,"A keyed load IC from the snapshot"
+code-creation,StoreIC,9,0x2b827fc0,365,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828140,293,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828280,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b8282e0,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828340,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b8283a0,84,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828400,365,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828580,293,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b8286c0,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828720,82,"A store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b828780,84,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b8287e0,2082,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b829020,84,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b829080,2082,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b8298c0,286,"A keyed store IC from the snapshot"
+code-creation,Builtin,3,0x2b8299e0,355,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b829b60,416,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b829d00,376,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b829e80,388,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a020,78,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a080,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a0e0,357,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a260,359,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a3e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a460,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a4e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a560,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a5e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a660,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a6e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a760,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a7e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a860,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a8e0,104,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a960,106,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a9e0,110,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82aa60,112,"A builtin from the snapshot"
+code-creation,LoadIC,5,0x2b82aae0,106,"A load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b82ab60,106,"A keyed load IC from the snapshot"
+code-creation,StoreIC,9,0x2b82abe0,108,"A store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b82ac60,108,"A keyed store IC from the snapshot"
+code-creation,Stub,14,0x2b82ace0,104,"CallFunctionStub"
+code-creation,Builtin,3,0x2b82ad60,65,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82adc0,93,"A builtin from the snapshot"
+timer-event-start,"V8.GCCompactor",6301
+timer-event-start,"V8.External",6312
+timer-event-end,"V8.External",6321
+timer-event-start,"V8.External",7418
+timer-event-end,"V8.External",7436
+timer-event-end,"V8.GCCompactor",7446
+code-creation,LazyCompile,3,0x2b81ac80,77,"Empty :1",0x4420e5cc,
+code-creation,LazyCompile,0,0x2b81aea0,264," native uri.js:1",0x4420e668,
+code-creation,LazyCompile,0,0x2b81b040,336,"SetUpUri native uri.js:442",0x4420f5b4,
+code-creation,LazyCompile,0,0x2b81b200,1880," native messages.js:1",0x4420f670,
+code-creation,LazyCompile,0,0x2b81b960,1429,"FormatString native messages.js:187",0x4420f918,
+code-creation,LazyCompile,0,0x2b81bf60,280,"MakeGenericError native messages.js:282",0x44211088,
+code-creation,LazyCompile,0,0x2b81c080,264,"FormatMessage native messages.js:301",0x4421113c,
+code-creation,LazyCompile,0,0x2b81c1a0,200,"MakeRangeError native messages.js:335",0x442112f0,
+code-creation,LazyCompile,0,0x2b81c280,1012,"captureStackTrace native messages.js:1123",0x44212280,
+code-creation,LazyCompile,0,0x2b81c6e0,460,"SetUpError native messages.js:1173",0x44212410,
+code-creation,LazyCompile,0,0x2b81c8c0,692,"SetUpError.a native messages.js:1176",0x442124c0,
+code-creation,LazyCompile,0,0x2b81cb80,164,"d native messages.js:1192",0x44212548,
+code-creation,LazyCompile,0,0x2b81cc40,360," native messages.js:1202",0x442125d0,
+code-creation,LazyCompile,0,0x2b81cc40,360,"Error",0x44212698,
+code-creation,LazyCompile,0,0x2b81cc40,360,"TypeError",0x442126f8,
+code-creation,LazyCompile,0,0x2b81cc40,360,"RangeError",0x44212758,
+code-creation,LazyCompile,0,0x2b81cc40,360,"SyntaxError",0x442127b8,
+code-creation,LazyCompile,0,0x2b81cc40,360,"ReferenceError",0x44212818,
+code-creation,LazyCompile,0,0x2b81cc40,360,"EvalError",0x44212878,
+code-creation,LazyCompile,0,0x2b81cc40,360,"URIError",0x442128d8,
+code-creation,LazyCompile,0,0x2b81cdc0,424,"SetUpStackOverflowBoilerplate native messages.js:1301",0x44212a74,
+code-creation,LazyCompile,0,0x2b81cf80,216," native messages.js:294",0x44214b3c,
+code-creation,LazyCompile,0,0x2b81d060,408," native string.js:1",0x44214c2c,
+code-creation,LazyCompile,0,0x2b81d200,380,"StringConstructor native string.js:35",0x44214e2c,
+code-creation,LazyCompile,0,0x2b81d380,1132,"SetUpString native string.js:962",0x44216ea8,
+code-creation,LazyCompile,0,0x2b81d800,616," native date.js:1",0x44216fa0,
+code-creation,LazyCompile,0,0x2b81da80,1392,"DateConstructor native date.js:141",0x442182bc,
+code-creation,LazyCompile,0,0x2b81e000,1396,"SetUpDate native date.js:761",0x44219944,
+code-creation,LazyCompile,0,0x2b81e580,268," native array.js:1",0x44219b20,
+code-creation,LazyCompile,0,0x2b81e6a0,2272,"SetUpArray native array.js:1591",0x4421c6ac,
+code-creation,LazyCompile,0,0x2b81ef80,292,"SetUpArray.b native array.js:1605",0x4421c814,
+code-creation,LazyCompile,0,0x2b81f0c0,1084," native v8natives.js:1",0x4421c904,
+code-creation,LazyCompile,0,0x2b81f500,561,"InstallFunctions native v8natives.js:46",0x4421cc1c,
+code-creation,LazyCompile,0,0x2b81f740,304,"InstallGetterSetter native v8natives.js:72",0x4421ea1c,
+code-creation,LazyCompile,0,0x2b81f880,814,"SetUpLockedPrototype native v8natives.js:87",0x4421eab4,
+code-creation,LazyCompile,0,0x2b81fbc0,452,"SetUpGlobal native v8natives.js:197",0x4421ed3c,
+code-creation,LazyCompile,0,0x2b81fda0,404,"hasOwnProperty native v8natives.js:251",0x4421eee4,
+code-creation,LazyCompile,0,0x2b81ff40,308,"ObjectConstructor native v8natives.js:1371",0x442200b4,
+code-creation,LazyCompile,0,0x2b820080,1044,"SetUpObject native v8natives.js:1385",0x44220140,
+code-creation,LazyCompile,0,0x2b8204a0,292,"BooleanConstructor native v8natives.js:1437",0x442201c8,
+code-creation,LazyCompile,0,0x2b8205e0,448,"SetUpBoolean native v8natives.js:1472",0x44220314,
+code-creation,LazyCompile,0,0x2b8207a0,336,"NumberConstructor native v8natives.js:1491",0x442203ac,
+code-creation,LazyCompile,0,0x2b820900,924,"SetUpNumber native v8natives.js:1635",0x4422073c,
+code-creation,LazyCompile,0,0x2b820ca0,440,"FunctionConstructor native v8natives.js:1813",0x44220954,
+code-creation,LazyCompile,0,0x2b820e60,380,"SetUpFunction native v8natives.js:1826",0x442209f8,
+code-creation,LazyCompile,0,0x2b820fe0,264," native json.js:1",0x44221238,
+code-creation,LazyCompile,0,0x2b821100,260,"SetUpJSON native json.js:219",0x44221940,
+code-creation,LazyCompile,0,0x2b821220,340," native math.js:1",0x44221a5c,
+code-creation,LazyCompile,0,0x2b821380,164,"MathConstructor native math.js:40",0x44221ba4,
+code-creation,LazyCompile,0,0x2b821440,1112,"SetUpMath native math.js:226",0x4422283c,
+code-creation,LazyCompile,0,0x2b8218a0,404," native regexp.js:1",0x442228f8,
+code-creation,LazyCompile,0,0x2b821a40,324,"RegExpConstructor native regexp.js:90",0x44223264,
+code-creation,LazyCompile,0,0x2b821ba0,224,"RegExpMakeCaptureGetter native regexp.js:360",0x44223784,
+code-creation,LazyCompile,0,0x2b821c80,1561,"SetUpRegExp native regexp.js:400",0x44223878,
+code-creation,LazyCompile,0,0x2b8222a0,280," native apinatives.js:1",0x44223b98,
+code-creation,LazyCompile,0,0x2b8223c0,612," native runtime.js:1",0x44223e30,
+code-creation,LazyCompile,0,0x2b822640,1728,"EQUALS native runtime.js:54",0x44224078,
+code-creation,LazyCompile,0,0x2b822d00,376,"STRICT_EQUALS native runtime.js:108",0x44224c18,
+code-creation,LazyCompile,0,0x2b822e80,924,"COMPARE native runtime.js:128",0x44224ca4,
+code-creation,LazyCompile,0,0x2b823220,596,"ADD native runtime.js:171",0x44224d44,
+code-creation,LazyCompile,0,0x2b823480,572,"STRING_ADD_LEFT native runtime.js:191",0x44224dd8,
+code-creation,LazyCompile,0,0x2b8236c0,580,"STRING_ADD_RIGHT native runtime.js:206",0x44224e64,
+code-creation,LazyCompile,0,0x2b823920,296,"SUB native runtime.js:222",0x44224ef4,
+code-creation,LazyCompile,0,0x2b823a60,296,"MUL native runtime.js:230",0x44224f84,
+code-creation,LazyCompile,0,0x2b823ba0,296,"DIV native runtime.js:238",0x44225014,
+code-creation,LazyCompile,0,0x2b823ce0,296,"MOD native runtime.js:246",0x442250a4,
+code-creation,LazyCompile,0,0x2b823e20,296,"BIT_OR native runtime.js:260",0x44225134,
+code-creation,LazyCompile,0,0x2b823f60,384,"BIT_AND native runtime.js:268",0x442251c4,
+code-creation,LazyCompile,0,0x2b8240e0,296,"BIT_XOR native runtime.js:290",0x44225254,
+code-creation,LazyCompile,0,0x2b824220,244,"UNARY_MINUS native runtime.js:298",0x442252e4,
+code-creation,LazyCompile,0,0x2b824320,244,"BIT_NOT native runtime.js:305",0x44225370,
+code-creation,LazyCompile,0,0x2b824420,296,"SHL native runtime.js:312",0x442253fc,
+code-creation,LazyCompile,0,0x2b824560,384,"SAR native runtime.js:320",0x4422548c,
+code-creation,LazyCompile,0,0x2b8246e0,296,"SHR native runtime.js:342",0x4422551c,
+code-creation,LazyCompile,0,0x2b824820,228,"DELETE native runtime.js:356",0x442255ac,
+code-creation,LazyCompile,0,0x2b824920,368,"IN native runtime.js:362",0x4422563c,
+code-creation,LazyCompile,0,0x2b824aa0,644,"INSTANCE_OF native runtime.js:375",0x442256e8,
+code-creation,LazyCompile,0,0x2b824d40,236,"FILTER_KEY native runtime.js:406",0x442257b8,
+code-creation,LazyCompile,0,0x2b824e40,380,"CALL_NON_FUNCTION native runtime.js:413",0x44225848,
+code-creation,LazyCompile,0,0x2b824fc0,380,"CALL_NON_FUNCTION_AS_CONSTRUCTOR native runtime.js:422",0x442258f4,
+code-creation,LazyCompile,0,0x2b825140,288,"CALL_FUNCTION_PROXY native runtime.js:431",0x442259a0,
+code-creation,LazyCompile,0,0x2b825260,260,"CALL_FUNCTION_PROXY_AS_CONSTRUCTOR native runtime.js:439",0x44225a38,
+code-creation,LazyCompile,0,0x2b825380,912,"APPLY_PREPARE native runtime.js:446",0x44225acc,
+code-creation,LazyCompile,0,0x2b825720,232,"APPLY_OVERFLOW native runtime.js:484",0x44225b9c,
+code-creation,LazyCompile,0,0x2b825820,188,"TO_OBJECT native runtime.js:490",0x44225c38,
+code-creation,LazyCompile,0,0x2b8258e0,188,"TO_NUMBER native runtime.js:496",0x44225cc0,
+code-creation,LazyCompile,0,0x2b8259a0,188,"TO_STRING native runtime.js:502",0x44225d48,
+code-creation,LazyCompile,0,0x2b825a60,600,"ToPrimitive native runtime.js:514",0x44225dd0,
+code-creation,LazyCompile,0,0x2b825cc0,404,"ToBoolean native runtime.js:526",0x44225e60,
+code-creation,LazyCompile,0,0x2b825e60,504,"ToNumber native runtime.js:536",0x44225eec,
+code-creation,LazyCompile,0,0x2b826060,416,"ToString native runtime.js:561",0x44225fd8,
+code-creation,LazyCompile,0,0x2b826200,220,"ToName native runtime.js:578",0x442260c4,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227108,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227168,
+code-creation,LazyCompile,3,0x2b8262e0,77,"OpaqueReference",0x442271c8,
+code-creation,LazyCompile,3,0x2b8262e0,77,"JSON",0x44227228,
+code-creation,LazyCompile,0,0x2b8204a0,292,"Boolean",0x44227288,
+code-creation,LazyCompile,3,0x2b82a080,83,"Array",0x442272e8,
+code-creation,LazyCompile,3,0x2b826460,77,"pop",0x44227348,
+code-creation,LazyCompile,3,0x2b826400,77,"push",0x442273a8,
+code-creation,LazyCompile,3,0x2b826640,77,"concat",0x44227408,
+code-creation,LazyCompile,3,0x2b8264c0,77,"shift",0x44227468,
+code-creation,LazyCompile,3,0x2b826520,77,"unshift",0x442274c8,
+code-creation,LazyCompile,3,0x2b826580,77,"slice",0x44227528,
+code-creation,LazyCompile,3,0x2b8265e0,77,"splice",0x44227588,
+code-creation,LazyCompile,0,0x2b8207a0,336,"Number",0x442275e8,
+code-creation,LazyCompile,3,0x2b82a020,78,"InternalArray",0x44227648,
+code-creation,LazyCompile,3,0x2b82a020,78,"InternalPackedArray",0x442276b4,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227714,
+code-creation,LazyCompile,0,0x2b821a40,324,"RegExp",0x44227774,
+code-creation,LazyCompile,0,0x2b81da80,1392,"Date",0x442277d4,
+code-creation,LazyCompile,0,0x2b820ca0,440,"Function",0x44227834,
+code-creation,LazyCompile,0,0x2b81d200,380,"String",0x44227894,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x442278f4,
+code-creation,LazyCompile,0,0x2b81cf80,216,"Script",0x44227960,
+code-creation,LazyCompile,0,0x2b81ff40,308,"Object",0x44227a00,
+code-creation,LazyCompile,3,0x2b829d00,376,"call",0x44227a60,
+code-creation,LazyCompile,3,0x2b829e80,388,"apply",0x44227ac0,
+code-creation,LazyCompile,3,0x2b8262e0,77,"Arguments",0x44227b20,
+code-creation,LazyCompile,3,0x2b826820,77,"ThrowTypeError",0x44227b80,
+code-creation,LazyCompile,3,0x2b826760,77,"",0x44227be0,
+code-creation,LazyCompile,3,0x2b8267c0,77,"",0x44227c40,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227ca0,
+timer-event-start,"V8.GCCompactor",9350
+timer-event-start,"V8.External",9362
+timer-event-end,"V8.External",9370
+timer-event-start,"V8.External",10477
+timer-event-end,"V8.External",10500
+timer-event-end,"V8.GCCompactor",10511
+code-creation,Stub,2,0x2b80a000,484,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80a200,622,"CEntryStub"
+code-creation,Stub,2,0x2b80a480,540,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,13,0x2b80a6a0,116,"CompareICStub"
+code-creation,Stub,2,0x2b80a720,1428,"RecordWriteStub"
+code-creation,Stub,2,0x2b80acc0,97,"StoreBufferOverflowStub"
+code-creation,Stub,2,0x2b80ad40,611,"RecordWriteStub"
+code-creation,Stub,2,0x2b80afc0,76,"InterruptStub"
+code-creation,Stub,13,0x2b80b020,104,"CompareICStub"
+code-creation,Stub,2,0x2b80b0a0,130,"ArgumentsAccessStub"
+code-creation,Stub,2,0x2b80b140,160,"FastNewContextStub"
+code-creation,Stub,2,0x2b80b1e0,79,"StubFailureTrampolineStub"
+code-creation,Stub,2,0x2b80b240,704,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,14,0x2b80b500,93,"CompareNilICStub"
+code-creation,Stub,2,0x2b80b560,289,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80b6a0,664,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80b940,740,"NameDictionaryLookupStub"
+code-creation,Stub,13,0x2b80bc40,156,"CompareICStub"
+code-creation,Stub,2,0x2b80bce0,611,"RecordWriteStub"
+code-creation,Stub,13,0x2b80bf60,122,"CompareICStub"
+code-creation,Stub,2,0x2b80bfe0,217,"CreateAllocationSiteStub"
+code-creation,Stub,2,0x2b80c0c0,1456,"RecordWriteStub"
+code-creation,Stub,2,0x2b80c680,245,"StoreArrayLiteralElementStub"
+code-creation,Stub,2,0x2b80c780,1448,"RecordWriteStub"
+code-creation,Stub,2,0x2b80cd40,1471,"StringAddStub"
+code-creation,Stub,2,0x2b80d300,1448,"RecordWriteStub"
+code-creation,Stub,2,0x2b80d8c0,1453,"RecordWriteStub"
+code-creation,Stub,12,0x2b80de80,146,"BinaryOpStub"
+code-creation,Stub,2,0x2b80df20,640,"InternalArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e1a0,517,"ArrayConstructorStub"
+code-creation,Stub,2,0x2b80e3c0,305,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e500,305,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e640,349,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e7a0,349,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80e900,289,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b80ea40,680,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80ed00,692,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80efc0,704,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80f280,664,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b80f520,488,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80f720,540,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80f940,432,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80fb00,432,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b80fcc0,1453,"RecordWriteStub"
+code-creation,Stub,2,0x2b810280,400,"InternalArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b810420,611,"RecordWriteStub"
+code-creation,Stub,2,0x2b8106a0,213,"JSEntryStub"
+code-creation,Stub,13,0x2b810780,104,"CompareICStub"
+code-creation,Stub,12,0x2b810800,124,"BinaryOpStub"
+code-creation,Stub,2,0x2b810880,1447,"StringAddStub"
+code-creation,Stub,2,0x2b810e40,640,"InternalArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b8110c0,400,"InternalArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b811260,261,"FastCloneShallowArrayStub"
+code-creation,Stub,12,0x2b811380,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b8113e0,76,"StackCheckStub"
+code-creation,Stub,2,0x2b811440,1437,"RecordWriteStub"
+code-creation,Stub,2,0x2b8119e0,289,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b811b20,331,"CallFunctionStub"
+code-creation,Builtin,3,0x2b811c80,174,"A builtin from the snapshot"
+code-creation,Stub,14,0x2b811d40,124,"CompareNilICStub"
+code-creation,Stub,2,0x2b811dc0,1420,"RecordWriteStub"
+code-creation,Stub,13,0x2b812360,104,"CompareICStub"
+code-creation,Stub,2,0x2b8123e0,76,"LoadFieldStub"
+code-creation,Stub,13,0x2b812440,104,"CompareICStub"
+code-creation,Stub,2,0x2b8124c0,195,"NumberToStringStub"
+code-creation,Stub,15,0x2b8125a0,148,"ToBooleanStub"
+code-creation,Stub,2,0x2b812640,351,"ArgumentsAccessStub"
+code-creation,Stub,2,0x2b8127a0,664,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b812a40,1420,"RecordWriteStub"
+code-creation,Stub,12,0x2b812fe0,133,"BinaryOpStub"
+code-creation,Stub,2,0x2b813080,1664,"StringAddStub"
+code-creation,Stub,2,0x2b813700,1661,"StringAddStub"
+code-creation,Stub,2,0x2b813d80,472,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,2,0x2b813f60,80,"StubFailureTrampolineStub"
+code-creation,Stub,13,0x2b813fc0,104,"CompareICStub"
+code-creation,Stub,2,0x2b814040,331,"CallFunctionStub"
+code-creation,Stub,2,0x2b8141a0,660,"ArraySingleArgumentConstructorStub"
+code-creation,Stub,2,0x2b814440,1433,"RecordWriteStub"
+code-creation,Stub,12,0x2b8149e0,146,"BinaryOpStub"
+code-creation,Stub,2,0x2b814a80,271,"CallConstructStub"
+code-creation,Stub,15,0x2b814ba0,136,"ToBooleanStub"
+code-creation,Stub,2,0x2b814c40,468,"ArrayNArgumentsConstructorStub"
+code-creation,Stub,15,0x2b814e20,128,"ToBooleanStub"
+code-creation,Stub,2,0x2b814ea0,163,"FastNewContextStub"
+code-creation,Stub,2,0x2b814f60,1425,"RecordWriteStub"
+code-creation,LoadIC,5,0x2b815500,145,"A load IC from the snapshot"
+code-creation,Builtin,3,0x2b8155a0,83,"A builtin from the snapshot"
+code-creation,Stub,12,0x2b815600,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b815660,1433,"RecordWriteStub"
+code-creation,Stub,2,0x2b815c00,331,"CallFunctionStub"
+code-creation,Stub,13,0x2b815d60,104,"CompareICStub"
+code-creation,Stub,2,0x2b815de0,304,"FastNewClosureStub"
+code-creation,Stub,2,0x2b815f20,285,"ArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b816040,1433,"RecordWriteStub"
+code-creation,Stub,2,0x2b8165e0,233,"InternalArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b8166e0,740,"NameDictionaryLookupStub"
+code-creation,Stub,2,0x2b8169e0,740,"NameDictionaryLookupStub"
+code-creation,Stub,12,0x2b816ce0,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b816d40,216,"StringCompareStub"
+code-creation,Stub,15,0x2b816e20,93,"ToBooleanStub"
+code-creation,Stub,12,0x2b816e80,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b816ee0,1433,"RecordWriteStub"
+code-creation,Stub,12,0x2b817480,155,"BinaryOpStub"
+code-creation,Stub,2,0x2b817520,169,"InternalArrayConstructorStub"
+code-creation,Stub,2,0x2b8175e0,233,"InternalArrayNoArgumentConstructorStub"
+code-creation,Stub,2,0x2b8176e0,1433,"RecordWriteStub"
+code-creation,Stub,12,0x2b817c80,88,"BinaryOpStub"
+code-creation,Stub,2,0x2b817ce0,328,"KeyedLoadElementStub"
+code-creation,Stub,2,0x2b817e40,1461,"RecordWriteStub"
+code-creation,Stub,2,0x2b818400,98,"ToNumberStub"
+code-creation,Stub,13,0x2b818480,122,"CompareICStub"
+code-creation,Stub,12,0x2b818500,124,"BinaryOpStub"
+code-creation,Stub,2,0x2b818580,148,"CallConstructStub"
+code-creation,Stub,13,0x2b818620,491,"CompareICStub"
+code-creation,Stub,2,0x2b818820,213,"JSEntryStub"
+code-creation,CallIC,7,0x2b818900,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8189c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818a80,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818b40,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818c00,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818cc0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818d80,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818e40,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818f00,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b818fc0,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819080,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819140,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819200,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8192c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819380,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819440,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819500,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8195c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819680,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819740,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819800,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b8198c0,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819980,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819a40,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819b00,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819bc0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819c80,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819d40,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819e00,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819ec0,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b819f80,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a040,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a100,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a1c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a280,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a340,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a400,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a4c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a580,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a640,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a700,189,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a7c0,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a880,178,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81a940,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81aa00,180,"A call IC from the snapshot"
+code-creation,CallIC,7,0x2b81aac0,180,"A call IC from the snapshot"
+code-creation,Builtin,3,0x2b81ab80,107,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81ac00,105,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81ac80,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81ace0,432,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b81afc0,101,"A builtin from the snapshot"
+code-creation,LoadIC,5,0x2b81b1a0,83,"A load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b81bf00,83,"A keyed load IC from the snapshot"
+code-creation,StoreIC,9,0x2b81c680,84,"A store IC from the snapshot"
+code-creation,Builtin,3,0x2b8262e0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826340,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8263a0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826400,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826460,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8264c0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826520,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826580,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8265e0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826640,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8266a0,80,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826700,80,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826760,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8267c0,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826820,77,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826880,75,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8268e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826960,491,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826b60,406,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826d00,157,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826da0,131,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826e40,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826ec0,107,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826f40,143,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b826fe0,143,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827080,143,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827120,94,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827180,91,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8271e0,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827240,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8272a0,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827300,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827360,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b8273c0,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827420,84,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b827480,84,"A builtin from the snapshot"
+code-creation,LoadIC,5,0x2b8274e0,83,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b827540,313,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b827680,266,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b8277a0,80,"A load IC from the snapshot"
+code-creation,LoadIC,5,0x2b827800,83,"A load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827860,83,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b8278c0,896,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827c40,499,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827e40,144,"A keyed load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b827ee0,216,"A keyed load IC from the snapshot"
+code-creation,StoreIC,9,0x2b827fc0,365,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828140,293,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828280,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b8282e0,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828340,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b8283a0,84,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828400,365,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828580,293,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b8286c0,88,"A store IC from the snapshot"
+code-creation,StoreIC,9,0x2b828720,82,"A store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b828780,84,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b8287e0,2082,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b829020,84,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b829080,2082,"A keyed store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b8298c0,286,"A keyed store IC from the snapshot"
+code-creation,Builtin,3,0x2b8299e0,355,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b829b60,416,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b829d00,376,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b829e80,388,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a020,78,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a080,83,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a0e0,357,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a260,359,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a3e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a460,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a4e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a560,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a5e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a660,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a6e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a760,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a7e0,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a860,101,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a8e0,104,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a960,106,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82a9e0,110,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82aa60,112,"A builtin from the snapshot"
+code-creation,LoadIC,5,0x2b82aae0,106,"A load IC from the snapshot"
+code-creation,KeyedLoadIC,6,0x2b82ab60,106,"A keyed load IC from the snapshot"
+code-creation,StoreIC,9,0x2b82abe0,108,"A store IC from the snapshot"
+code-creation,KeyedStoreIC,10,0x2b82ac60,108,"A keyed store IC from the snapshot"
+code-creation,Stub,14,0x2b82ace0,104,"CallFunctionStub"
+code-creation,Builtin,3,0x2b82ad60,65,"A builtin from the snapshot"
+code-creation,Builtin,3,0x2b82adc0,93,"A builtin from the snapshot"
+timer-event-start,"V8.GCCompactor",12962
+timer-event-start,"V8.External",12972
+timer-event-end,"V8.External",12981
+timer-event-start,"V8.External",13996
+timer-event-end,"V8.External",14014
+timer-event-end,"V8.GCCompactor",14024
+code-creation,LazyCompile,3,0x2b81ac80,77,"Empty :1",0x4420e5cc,
+code-creation,LazyCompile,0,0x2b81b040,336,"SetUpUri native uri.js:442",0x4420f5b4,
+code-creation,LazyCompile,0,0x2b81b960,1429,"FormatString native messages.js:187",0x4420f918,
+code-creation,LazyCompile,0,0x2b81bf60,280,"MakeGenericError native messages.js:282",0x44211088,
+code-creation,LazyCompile,0,0x2b81c080,264,"FormatMessage native messages.js:301",0x4421113c,
+code-creation,LazyCompile,0,0x2b81c1a0,200,"MakeRangeError native messages.js:335",0x442112f0,
+code-creation,LazyCompile,0,0x2b81c280,1012,"captureStackTrace native messages.js:1123",0x44212280,
+code-creation,LazyCompile,0,0x2b81c6e0,460,"SetUpError native messages.js:1173",0x44212410,
+code-creation,LazyCompile,0,0x2b81c8c0,692,"SetUpError.a native messages.js:1176",0x442124c0,
+code-creation,LazyCompile,0,0x2b81cb80,164,"d native messages.js:1192",0x44212548,
+code-creation,LazyCompile,0,0x2b81cc40,360," native messages.js:1202",0x442125d0,
+code-creation,LazyCompile,0,0x2b81cc40,360,"Error",0x44212698,
+code-creation,LazyCompile,0,0x2b81cc40,360,"TypeError",0x442126f8,
+code-creation,LazyCompile,0,0x2b81cc40,360,"RangeError",0x44212758,
+code-creation,LazyCompile,0,0x2b81cc40,360,"SyntaxError",0x442127b8,
+code-creation,LazyCompile,0,0x2b81cc40,360,"ReferenceError",0x44212818,
+code-creation,LazyCompile,0,0x2b81cc40,360,"EvalError",0x44212878,
+code-creation,LazyCompile,0,0x2b81cc40,360,"URIError",0x442128d8,
+code-creation,LazyCompile,0,0x2b81cdc0,424,"SetUpStackOverflowBoilerplate native messages.js:1301",0x44212a74,
+code-creation,LazyCompile,0,0x2b81d200,380,"StringConstructor native string.js:35",0x44214e2c,
+code-creation,LazyCompile,0,0x2b81d380,1132,"SetUpString native string.js:962",0x44216ea8,
+code-creation,LazyCompile,0,0x2b81da80,1392,"DateConstructor native date.js:141",0x442182bc,
+code-creation,LazyCompile,0,0x2b81e000,1396,"SetUpDate native date.js:761",0x44219944,
+code-creation,LazyCompile,0,0x2b81e6a0,2272,"SetUpArray native array.js:1591",0x4421c6ac,
+code-creation,LazyCompile,0,0x2b81f500,561,"InstallFunctions native v8natives.js:46",0x4421cc1c,
+code-creation,LazyCompile,0,0x2b81f740,304,"InstallGetterSetter native v8natives.js:72",0x4421ea1c,
+code-creation,LazyCompile,0,0x2b81f880,814,"SetUpLockedPrototype native v8natives.js:87",0x4421eab4,
+code-creation,LazyCompile,0,0x2b81fbc0,452,"SetUpGlobal native v8natives.js:197",0x4421ed3c,
+code-creation,LazyCompile,0,0x2b81fda0,404,"hasOwnProperty native v8natives.js:251",0x4421eee4,
+code-creation,LazyCompile,0,0x2b81ff40,308,"ObjectConstructor native v8natives.js:1371",0x442200b4,
+code-creation,LazyCompile,0,0x2b820080,1044,"SetUpObject native v8natives.js:1385",0x44220140,
+code-creation,LazyCompile,0,0x2b8204a0,292,"BooleanConstructor native v8natives.js:1437",0x442201c8,
+code-creation,LazyCompile,0,0x2b8205e0,448,"SetUpBoolean native v8natives.js:1472",0x44220314,
+code-creation,LazyCompile,0,0x2b8207a0,336,"NumberConstructor native v8natives.js:1491",0x442203ac,
+code-creation,LazyCompile,0,0x2b820900,924,"SetUpNumber native v8natives.js:1635",0x4422073c,
+code-creation,LazyCompile,0,0x2b820ca0,440,"FunctionConstructor native v8natives.js:1813",0x44220954,
+code-creation,LazyCompile,0,0x2b820e60,380,"SetUpFunction native v8natives.js:1826",0x442209f8,
+code-creation,LazyCompile,0,0x2b821100,260,"SetUpJSON native json.js:219",0x44221940,
+code-creation,LazyCompile,0,0x2b821380,164,"MathConstructor native math.js:40",0x44221ba4,
+code-creation,LazyCompile,0,0x2b821440,1112,"SetUpMath native math.js:226",0x4422283c,
+code-creation,LazyCompile,0,0x2b821a40,324,"RegExpConstructor native regexp.js:90",0x44223264,
+code-creation,LazyCompile,0,0x2b821ba0,224,"RegExpMakeCaptureGetter native regexp.js:360",0x44223784,
+code-creation,LazyCompile,0,0x2b821c80,1561,"SetUpRegExp native regexp.js:400",0x44223878,
+code-creation,LazyCompile,0,0x2b822640,1728,"EQUALS native runtime.js:54",0x44224078,
+code-creation,LazyCompile,0,0x2b822d00,376,"STRICT_EQUALS native runtime.js:108",0x44224c18,
+code-creation,LazyCompile,0,0x2b822e80,924,"COMPARE native runtime.js:128",0x44224ca4,
+code-creation,LazyCompile,0,0x2b823220,596,"ADD native runtime.js:171",0x44224d44,
+code-creation,LazyCompile,0,0x2b823480,572,"STRING_ADD_LEFT native runtime.js:191",0x44224dd8,
+code-creation,LazyCompile,0,0x2b8236c0,580,"STRING_ADD_RIGHT native runtime.js:206",0x44224e64,
+code-creation,LazyCompile,0,0x2b823920,296,"SUB native runtime.js:222",0x44224ef4,
+code-creation,LazyCompile,0,0x2b823a60,296,"MUL native runtime.js:230",0x44224f84,
+code-creation,LazyCompile,0,0x2b823ba0,296,"DIV native runtime.js:238",0x44225014,
+code-creation,LazyCompile,0,0x2b823ce0,296,"MOD native runtime.js:246",0x442250a4,
+code-creation,LazyCompile,0,0x2b823e20,296,"BIT_OR native runtime.js:260",0x44225134,
+code-creation,LazyCompile,0,0x2b823f60,384,"BIT_AND native runtime.js:268",0x442251c4,
+code-creation,LazyCompile,0,0x2b8240e0,296,"BIT_XOR native runtime.js:290",0x44225254,
+code-creation,LazyCompile,0,0x2b824220,244,"UNARY_MINUS native runtime.js:298",0x442252e4,
+code-creation,LazyCompile,0,0x2b824320,244,"BIT_NOT native runtime.js:305",0x44225370,
+code-creation,LazyCompile,0,0x2b824420,296,"SHL native runtime.js:312",0x442253fc,
+code-creation,LazyCompile,0,0x2b824560,384,"SAR native runtime.js:320",0x4422548c,
+code-creation,LazyCompile,0,0x2b8246e0,296,"SHR native runtime.js:342",0x4422551c,
+code-creation,LazyCompile,0,0x2b824820,228,"DELETE native runtime.js:356",0x442255ac,
+code-creation,LazyCompile,0,0x2b824920,368,"IN native runtime.js:362",0x4422563c,
+code-creation,LazyCompile,0,0x2b824aa0,644,"INSTANCE_OF native runtime.js:375",0x442256e8,
+code-creation,LazyCompile,0,0x2b824d40,236,"FILTER_KEY native runtime.js:406",0x442257b8,
+code-creation,LazyCompile,0,0x2b824e40,380,"CALL_NON_FUNCTION native runtime.js:413",0x44225848,
+code-creation,LazyCompile,0,0x2b824fc0,380,"CALL_NON_FUNCTION_AS_CONSTRUCTOR native runtime.js:422",0x442258f4,
+code-creation,LazyCompile,0,0x2b825140,288,"CALL_FUNCTION_PROXY native runtime.js:431",0x442259a0,
+code-creation,LazyCompile,0,0x2b825260,260,"CALL_FUNCTION_PROXY_AS_CONSTRUCTOR native runtime.js:439",0x44225a38,
+code-creation,LazyCompile,0,0x2b825380,912,"APPLY_PREPARE native runtime.js:446",0x44225acc,
+code-creation,LazyCompile,0,0x2b825720,232,"APPLY_OVERFLOW native runtime.js:484",0x44225b9c,
+code-creation,LazyCompile,0,0x2b825820,188,"TO_OBJECT native runtime.js:490",0x44225c38,
+code-creation,LazyCompile,0,0x2b8258e0,188,"TO_NUMBER native runtime.js:496",0x44225cc0,
+code-creation,LazyCompile,0,0x2b8259a0,188,"TO_STRING native runtime.js:502",0x44225d48,
+code-creation,LazyCompile,0,0x2b825a60,600,"ToPrimitive native runtime.js:514",0x44225dd0,
+code-creation,LazyCompile,0,0x2b825cc0,404,"ToBoolean native runtime.js:526",0x44225e60,
+code-creation,LazyCompile,0,0x2b825e60,504,"ToNumber native runtime.js:536",0x44225eec,
+code-creation,LazyCompile,0,0x2b826060,416,"ToString native runtime.js:561",0x44225fd8,
+code-creation,LazyCompile,0,0x2b826200,220,"ToName native runtime.js:578",0x442260c4,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227108,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227168,
+code-creation,LazyCompile,3,0x2b8262e0,77,"OpaqueReference",0x442271c8,
+code-creation,LazyCompile,3,0x2b8262e0,77,"JSON",0x44227228,
+code-creation,LazyCompile,0,0x2b8204a0,292,"Boolean",0x44227288,
+code-creation,LazyCompile,3,0x2b82a080,83,"Array",0x442272e8,
+code-creation,LazyCompile,3,0x2b826460,77,"pop",0x44227348,
+code-creation,LazyCompile,3,0x2b826400,77,"push",0x442273a8,
+code-creation,LazyCompile,3,0x2b826640,77,"concat",0x44227408,
+code-creation,LazyCompile,3,0x2b8264c0,77,"shift",0x44227468,
+code-creation,LazyCompile,3,0x2b826520,77,"unshift",0x442274c8,
+code-creation,LazyCompile,3,0x2b826580,77,"slice",0x44227528,
+code-creation,LazyCompile,3,0x2b8265e0,77,"splice",0x44227588,
+code-creation,LazyCompile,0,0x2b8207a0,336,"Number",0x442275e8,
+code-creation,LazyCompile,3,0x2b82a020,78,"InternalArray",0x44227648,
+code-creation,LazyCompile,3,0x2b82a020,78,"InternalPackedArray",0x442276b4,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227714,
+code-creation,LazyCompile,0,0x2b821a40,324,"RegExp",0x44227774,
+code-creation,LazyCompile,0,0x2b81da80,1392,"Date",0x442277d4,
+code-creation,LazyCompile,0,0x2b820ca0,440,"Function",0x44227834,
+code-creation,LazyCompile,0,0x2b81d200,380,"String",0x44227894,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x442278f4,
+code-creation,LazyCompile,0,0x2b81cf80,216,"Script",0x44227960,
+code-creation,LazyCompile,0,0x2b81ff40,308,"Object",0x44227a00,
+code-creation,LazyCompile,3,0x2b829d00,376,"call",0x44227a60,
+code-creation,LazyCompile,3,0x2b829e80,388,"apply",0x44227ac0,
+code-creation,LazyCompile,3,0x2b8262e0,77,"Arguments",0x44227b20,
+code-creation,LazyCompile,3,0x2b826820,77,"ThrowTypeError",0x44227b80,
+code-creation,LazyCompile,3,0x2b826760,77,"",0x44227be0,
+code-creation,LazyCompile,3,0x2b8267c0,77,"",0x44227c40,
+code-creation,LazyCompile,3,0x2b8262e0,77,"",0x44227ca0,
+code-creation,Stub,2,0x2b81ef80,782,"CEntryStub"
+code-creation,Stub,2,0x2b81f2a0,197,"StoreBufferOverflowStub"
+code-creation,Stub,2,0x2b81f380,79,"StubFailureTrampolineStub"
+code-creation,Stub,2,0x2b81f3e0,80,"StubFailureTrampolineStub"
+tick,0xf776d430,16272,0,0x0,3
+timer-event-start,"V8.ParseLazy",16854
+timer-event-end,"V8.ParseLazy",17081
+timer-event-start,"V8.CompileLazy",17098
+timer-event-start,"V8.CompileFullCode",17125
+tick,0xf74c79de,17348,0,0xff820034,2
+code-creation,Stub,2,0x2b81b200,246,"FastCloneShallowObjectStub"
+code-creation,Stub,12,0x2b81b300,88,"BinaryOpStub_ADD_Alloc_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b81b360,88,"BinaryOpStub_ADD_OverwriteLeft_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",17910
+code-creation,LazyCompile,0,0x2b81b3c0,572,"Instantiate native apinatives.js:44",0x44223cdc,~
+timer-event-end,"V8.CompileLazy",17948
+code-creation,Stub,13,0x2b81b600,116,"CompareICStub"
+timer-event-start,"V8.ParseLazy",18020
+timer-event-end,"V8.ParseLazy",18170
+timer-event-start,"V8.CompileLazy",18187
+timer-event-start,"V8.CompileFullCode",18208
+code-creation,Stub,12,0x2b81b680,88,"BinaryOpStub_BIT_AND_Alloc_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",18340
+code-creation,LazyCompile,0,0x2b82ae20,1008,"InstantiateFunction native apinatives.js:65",0x44223d3c,
+timer-event-end,"V8.CompileLazy",18396
+tick,0xf776d430,18420,0,0x90d68fc,2,0x2b81b4f0
+code-creation,Stub,2,0x2b82b220,1800,"RecordWriteStub"
+code-creation,Stub,2,0x2b82b940,236,"KeyedStoreElementStub"
+code-creation,KeyedStoreIC,10,0x2b82ba40,91,""
+code-creation,CallIC,7,0x2b82baa0,129,"InstantiateFunction"
+code-creation,LoadIC,5,0x2b82bb40,103,"kApiFunctionCache"
+code-creation,Stub,12,0x2b82bbc0,146,"BinaryOpStub_BIT_AND_Alloc_Smi+Smi"
+code-creation,Stub,15,0x2b82bc60,132,"ToBooleanStub(Smi)"
+timer-event-start,"V8.ParseLazy",19172
+timer-event-end,"V8.ParseLazy",19253
+timer-event-start,"V8.CompileLazy",19268
+timer-event-start,"V8.CompileFullCode",19285
+timer-event-end,"V8.CompileFullCode",19350
+code-creation,LazyCompile,0,0x2b82bd00,753,"ConfigureTemplateInstance native apinatives.js:105",0x44223d9c,
+timer-event-end,"V8.CompileLazy",19384
+tick,0x83c1620,19510,0,0xff81f92c,0,0x2b82b1de,0x2b81b4f0,0x2b81b576,0x2b82b0b8,0x2b81b4f0
+code-creation,Stub,2,0x2b82c000,208,"KeyedLoadElementStub"
+code-creation,KeyedLoadIC,6,0x2b82c0e0,91,""
+code-creation,Stub,15,0x2b82c140,156,"ToBooleanStub(Undefined,SpecObject)"
+code-creation,KeyedLoadIC,6,0x2b82c1e0,91,""
+code-creation,Stub,12,0x2b82c240,146,"BinaryOpStub_ADD_Alloc_Smi+Smi"
+code-creation,Stub,15,0x2b82c2e0,168,"ToBooleanStub(Undefined,String)"
+code-creation,CallIC,7,0x2b82c3a0,129,"ConfigureTemplateInstance"
+code-creation,CallIC,7,0x2b82c440,129,"Instantiate"
+code-creation,CallIC,7,0x2b82c4e0,144,"Instantiate"
+code-creation,Stub,13,0x2b82c580,469,"CompareICStub"
+code-creation,Stub,14,0x2b82c760,144,"CompareNilICStub(NullValue)(MonomorphicMap)"
+code-creation,Stub,14,0x2b82c800,144,"CompareNilICStub(NullValue)(MonomorphicMap)"
+tick,0x8132a60,20593,0,0x8141e5e,0,0x2b822c4e,0x2b82af24,0x2b81b4f0,0x2b82beff,0x2b81b59f,0x2b82beff,0x2b81b589,0x2b82b0b8,0x2b81b4f0
+code-creation,Stub,14,0x2b82c8a0,124,"CompareNilICStub(NullValue)(Undefined,Null,Undetectable,Generic)"
+code-creation,Stub,13,0x2b82c920,156,"CompareICStub"
+timer-event-start,"V8.ParseLazy",20736
+timer-event-end,"V8.ParseLazy",20818
+timer-event-start,"V8.CompileLazy",20838
+timer-event-start,"V8.CompileFullCode",20854
+code-creation,Stub,2,0x2b82c9c0,587,"FastCloneShallowArrayStub"
+timer-event-end,"V8.CompileFullCode",21298
+code-creation,LazyCompile,0,0x2b82cc20,812,"DefaultNumber native runtime.js:645",0x44226390,~
+timer-event-end,"V8.CompileLazy",21330
+timer-event-start,"V8.ParseLazy",21352
+timer-event-end,"V8.ParseLazy",21381
+timer-event-start,"V8.CompileLazy",21393
+timer-event-start,"V8.CompileFullCode",21405
+timer-event-end,"V8.CompileFullCode",21436
+code-creation,LazyCompile,0,0x2b82cf60,184,"valueOf native v8natives.js:245",0x4421ee84,~
+timer-event-end,"V8.CompileLazy",21465
+timer-event-start,"V8.ParseLazy",21482
+timer-event-end,"V8.ParseLazy",21544
+timer-event-start,"V8.CompileLazy",21557
+timer-event-start,"V8.CompileFullCode",21571
+timer-event-end,"V8.CompileFullCode",21651
+code-creation,LazyCompile,0,0x2b82d020,652,"ToObject native runtime.js:584",0x44226150,~
+timer-event-end,"V8.CompileLazy",21690
+tick,0x80eabe2,21708,0,0xff81f7a8,2,0x2b82cfe4,0x2b82cd79,0x2b825c84,0x2b822ca7,0x2b82af24,0x2b81b4f0,0x2b82beff,0x2b81b59f,0x2b82beff,0x2b81b589,0x2b82b0b8,0x2b81b4f0
+timer-event-start,"V8.ParseLazy",21761
+timer-event-end,"V8.ParseLazy",21796
+timer-event-start,"V8.CompileLazy",21808
+timer-event-start,"V8.CompileFullCode",21820
+timer-event-end,"V8.CompileFullCode",21845
+code-creation,LazyCompile,0,0x2b82d2c0,220,"IsPrimitive native runtime.js:636",0x44226330,~
+timer-event-end,"V8.CompileLazy",21873
+timer-event-start,"V8.ParseLazy",21895
+timer-event-end,"V8.ParseLazy",21921
+timer-event-start,"V8.CompileLazy",21932
+timer-event-start,"V8.CompileFullCode",21946
+timer-event-end,"V8.CompileFullCode",21966
+code-creation,LazyCompile,0,0x2b82d3a0,184,"toString native v8natives.js:1721",0x44220834,~
+timer-event-end,"V8.CompileLazy",21994
+timer-event-start,"V8.ParseLazy",22009
+timer-event-end,"V8.ParseLazy",22087
+timer-event-start,"V8.CompileLazy",22101
+timer-event-start,"V8.CompileFullCode",22116
+timer-event-end,"V8.CompileFullCode",22221
+code-creation,LazyCompile,0,0x2b82d460,681,"FunctionSourceString native v8natives.js:1693",0x442207d4,~
+timer-event-end,"V8.CompileLazy",22237
+code-creation,Stub,15,0x2b82d720,156,"ToBooleanStub(String)"
+code-creation,Stub,12,0x2b82d7c0,124,"BinaryOpStub_ADD_Alloc_String+String"
+code-creation,Stub,12,0x2b82d840,124,"BinaryOpStub_ADD_OverwriteLeft_String+String"
+code-creation,CallMiss,7,0x2b82d8c0,178,"args_count: 2"
+code-creation,CallIC,7,0x2b82d980,128,"ToPrimitive"
+code-creation,CallIC,7,0x2b82da00,128,"DefaultNumber"
+code-creation,Stub,2,0x2b82da80,116,"valueOf"
+code-creation,LoadIC,5,0x2b82db00,93,"valueOf"
+code-creation,CallIC,7,0x2b82db60,129,"ToObject"
+code-creation,CallIC,7,0x2b82dc00,128,"IsPrimitive"
+code-creation,Stub,2,0x2b82dc80,98,"toString"
+code-creation,LoadIC,5,0x2b82dd00,93,"toString"
+code-creation,CallIC,7,0x2b82dd60,129,"FunctionSourceString"
+code-creation,CallIC,7,0x2b82de00,128,"ToNumber"
+timer-event-start,"V8.Parse",22650
+tick,0xf776d430,22726,0,0x0,2
+timer-event-end,"V8.Parse",22773
+timer-event-start,"V8.Compile",22785
+timer-event-start,"V8.CompileFullCode",22801
+timer-event-end,"V8.CompileFullCode",22822
+code-creation,Script,0,0x2b82de80,264,"native arraybuffer.js",0x4423ab7c,~
+timer-event-end,"V8.Compile",22836
+timer-event-start,"V8.ParseLazy",22859
+timer-event-end,"V8.ParseLazy",22881
+timer-event-start,"V8.CompileLazy",22887
+timer-event-start,"V8.CompileFullCode",22899
+timer-event-end,"V8.CompileFullCode",22918
+code-creation,LazyCompile,0,0x2b82dfa0,480,"SetUpArrayBuffer native arraybuffer.js:84",0x4423aac0,~
+timer-event-end,"V8.CompileLazy",22934
+timer-event-start,"V8.ParseLazy",22943
+timer-event-end,"V8.ParseLazy",22962
+timer-event-start,"V8.CompileLazy",22967
+timer-event-start,"V8.CompileFullCode",22972
+timer-event-end,"V8.CompileFullCode",22987
+code-creation,LazyCompile,0,0x2b82e180,324,"ArrayBufferConstructor native arraybuffer.js:34",0x4423a9a0,~
+timer-event-end,"V8.CompileLazy",23000
+code-creation,LazyCompile,0,0x2b82e180,324,"ArrayBufferConstructor native arraybuffer.js:34",0x4423a9a0,
+timer-event-start,"V8.ParseLazy",23021
+timer-event-end,"V8.ParseLazy",23037
+timer-event-start,"V8.CompileLazy",23042
+timer-event-start,"V8.CompileFullCode",23047
+timer-event-end,"V8.CompileFullCode",23057
+code-creation,LazyCompile,0,0x2b82e2e0,252,"InstallGetter native v8natives.js:63",0x4421e9bc,~
+timer-event-end,"V8.CompileLazy",23069
+code-creation,KeyedLoadIC,6,0x2b82e3e0,91,""
+code-creation,LoadIC,5,0x2b82e440,93,"length"
+timer-event-start,"V8.Parse",23160
+timer-event-end,"V8.Parse",23613
+timer-event-start,"V8.Compile",23621
+timer-event-start,"V8.CompileFullCode",23666
+timer-event-end,"V8.CompileFullCode",23702
+code-creation,Script,0,0x2b82e4a0,720,"native typedarray.js",0x4423bc04,~
+timer-event-end,"V8.Compile",23724
+timer-event-start,"V8.ParseLazy",23755
+tick,0xf776d430,23782,0,0x0,2
+timer-event-end,"V8.ParseLazy",23867
+timer-event-start,"V8.CompileLazy",23905
+timer-event-start,"V8.CompileFullCode",23916
+timer-event-end,"V8.CompileFullCode",23939
+code-creation,LazyCompile,0,0x2b82e780,664,"SetupTypedArray native typedarray.js:170",0x4423b238,~
+timer-event-end,"V8.CompileLazy",23971
+timer-event-start,"V8.ParseLazy",23979
+timer-event-end,"V8.ParseLazy",24064
+timer-event-start,"V8.CompileLazy",24071
+timer-event-start,"V8.CompileFullCode",24085
+code-creation,Stub,2,0x2b82ea20,175,"FastNewContextStub"
+code-creation,Stub,2,0x2b82eae0,304,"FastNewClosureStub"
+code-creation,Stub,2,0x2b82ec20,1448,"RecordWriteStub"
+timer-event-end,"V8.CompileFullCode",24149
+code-creation,LazyCompile,0,0x2b82f1e0,460,"CreateTypedArrayConstructor native typedarray.js:38",0x4423af98,~
+timer-event-end,"V8.CompileLazy",24163
+timer-event-start,"V8.ParseLazy",24170
+timer-event-end,"V8.ParseLazy",24198
+timer-event-start,"V8.CompileLazy",24203
+timer-event-start,"V8.CompileFullCode",24211
+code-creation,Stub,2,0x2b82f3c0,331,"CallFunctionStub_Args4_Recording"
+code-creation,Stub,2,0x2b82f520,631,"FastCloneShallowArrayStub"
+code-creation,Stub,2,0x2b82f7a0,245,"StoreArrayLiteralElementStub"
+timer-event-end,"V8.CompileFullCode",24435
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,~
+timer-event-end,"V8.CompileLazy",24448
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+timer-event-start,"V8.ParseLazy",24478
+timer-event-end,"V8.ParseLazy",24519
+timer-event-start,"V8.CompileLazy",24525
+timer-event-start,"V8.CompileFullCode",24533
+timer-event-end,"V8.CompileFullCode",24546
+code-creation,LazyCompile,0,0x2b82fbe0,268,"CreateSubArray native typedarray.js:121",0x4423b178,~
+timer-event-end,"V8.CompileLazy",24559
+code-creation,CallMiss,7,0x2b82fd00,180,"args_count: 4"
+code-creation,CallIC,7,0x2b82fdc0,129,"CreateTypedArrayConstructor"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b82fe60,103,"$Object"
+code-creation,LoadIC,5,0x2b82fee0,103,"TypedArrayGetBuffer"
+code-creation,CallMiss,7,0x2b82ff60,180,"args_count: 3"
+code-creation,CallIC,7,0x2b830020,129,"InstallGetter"
+code-creation,LoadIC,5,0x2b8300c0,103,"TypedArrayGetByteOffset"
+code-creation,LoadIC,5,0x2b830140,103,"TypedArrayGetByteLength"
+code-creation,LoadIC,5,0x2b8301c0,103,"TypedArrayGetLength"
+code-creation,CallIC,7,0x2b830240,129,"CreateSubArray"
+code-creation,LoadIC,5,0x2b8302e0,103,"TypedArraySet"
+code-creation,CallIC,7,0x2b830360,133,"$Array"
+code-creation,CallIC,7,0x2b830400,129,"InstallFunctions"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+tick,0xf7492ece,24846,0,0xff81ff10,0,0x2b82e839,0x2b82e5f9
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+timer-event-start,"V8.ParseLazy",25032
+timer-event-end,"V8.ParseLazy",25074
+timer-event-start,"V8.CompileLazy",25081
+timer-event-start,"V8.CompileFullCode",25093
+timer-event-end,"V8.CompileFullCode",25115
+code-creation,LazyCompile,0,0x2b8304a0,888,"SetupDataView native typedarray.js:434",0x4423ba78,~
+timer-event-end,"V8.CompileLazy",25128
+timer-event-start,"V8.ParseLazy",25136
+timer-event-end,"V8.ParseLazy",25175
+timer-event-start,"V8.CompileLazy",25181
+timer-event-start,"V8.CompileFullCode",25188
+code-creation,Stub,12,0x2b830820,88,"BinaryOpStub_SUB_Alloc_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",25228
+code-creation,LazyCompile,0,0x2b830880,908,"DataViewConstructor native typedarray.js:209",0x4423b298,~
+timer-event-end,"V8.CompileLazy",25241
+code-creation,LazyCompile,0,0x2b830880,908,"DataViewConstructor native typedarray.js:209",0x4423b298,
+code-creation,KeyedStorePolymorphicIC,10,0x2b830c20,101,""
+code-creation,KeyedStorePolymorphicIC,10,0x2b830c20,101,"args_count: 0"
+code-creation,CallIC,7,0x2b830ca0,144,"Instantiate"
+code-creation,CallIC,7,0x2b830d40,129,"InstantiateFunction"
+code-creation,LoadIC,5,0x2b830de0,103,"kApiFunctionCache"
+code-creation,KeyedLoadPolymorphicIC,6,0x2b830e60,105,""
+code-creation,CallIC,7,0x2b830ee0,129,"ConfigureTemplateInstance"
+code-creation,CallIC,7,0x2b830f80,129,"Instantiate"
+code-creation,Stub,2,0x2b831020,116,"valueOf"
+code-creation,LoadPolymorphicIC,5,0x2b8310a0,105,"valueOf"
+code-creation,Stub,2,0x2b831120,98,"toString"
+code-creation,LoadPolymorphicIC,5,0x2b8311a0,105,"toString"
+code-creation,CallIC,7,0x2b831220,128,"ToPrimitive"
+code-creation,CallIC,7,0x2b8312a0,128,"DefaultNumber"
+code-creation,CallIC,7,0x2b831320,129,"ToObject"
+code-creation,CallIC,7,0x2b8313c0,128,"IsPrimitive"
+code-creation,CallIC,7,0x2b831440,129,"FunctionSourceString"
+code-creation,CallIC,7,0x2b8314e0,128,"ToNumber"
+tick,0xf776d430,25914,0,0x90ec418,0,0x2b82cda7,0x2b825c84,0x2b822ca7,0x2b82af24,0x2b81b4f0,0x2b82beff,0x2b81b59f,0x2b82beff,0x2b81b589,0x2b82b0b8,0x2b81b4f0
+timer-event-start,"V8.ParseLazy",25965
+timer-event-end,"V8.ParseLazy",25985
+timer-event-start,"V8.CompileLazy",25991
+timer-event-start,"V8.RecompileSynchronous",25996
+code-creation,LazyCompile,0,0x2b831560,184,"valueOf native v8natives.js:245",0x4421ee84,~
+timer-event-end,"V8.RecompileSynchronous",26121
+code-creation,LazyCompile,1,0x2b831620,180,"valueOf native v8natives.js:245",0x4421ee84,*
+timer-event-end,"V8.CompileLazy",26138
+timer-event-start,"V8.ParseLazy",26144
+timer-event-end,"V8.ParseLazy",26156
+timer-event-start,"V8.CompileLazy",26161
+timer-event-start,"V8.RecompileSynchronous",26166
+code-creation,LazyCompile,0,0x2b8316e0,220,"IsPrimitive native runtime.js:636",0x44226330,~
+timer-event-end,"V8.RecompileSynchronous",26250
+code-creation,LazyCompile,1,0x2b8317c0,170,"IsPrimitive native runtime.js:636",0x44226330,*
+timer-event-end,"V8.CompileLazy",26266
+timer-event-start,"V8.ParseLazy",26271
+timer-event-end,"V8.ParseLazy",26282
+timer-event-start,"V8.CompileLazy",26286
+timer-event-start,"V8.RecompileSynchronous",26291
+code-creation,LazyCompile,0,0x2b831880,184,"toString native v8natives.js:1721",0x44220834,~
+timer-event-end,"V8.RecompileSynchronous",26361
+code-creation,LazyCompile,1,0x2b831940,180,"toString native v8natives.js:1721",0x44220834,*
+timer-event-end,"V8.CompileLazy",26376
+code-creation,LoadIC,5,0x2b831a00,103,"global"
+code-creation,LoadIC,5,0x2b831a80,114,"ArrayBuffer"
+code-creation,CallMiss,7,0x2b831b00,180,"args_count: 0"
+code-creation,CallIC,7,0x2b831bc0,129,"SetUpArrayBuffer"
+code-creation,LoadIC,5,0x2b831c60,103,"$ArrayBuffer"
+code-creation,LoadIC,5,0x2b831ce0,103,"ArrayBufferConstructor"
+code-creation,LazyCompile,0,0x2b82e180,324,"ArrayBufferConstructor native arraybuffer.js:34",0x4423a9a0,
+code-creation,LoadIC,5,0x2b831d60,103,"$Object"
+code-creation,LoadIC,5,0x2b831de0,103,"ArrayBufferGetByteLength"
+code-creation,CallIC,7,0x2b831e60,129,"InstallGetter"
+code-creation,LoadIC,5,0x2b831f00,103,"ArrayBufferSlice"
+code-creation,CallIC,7,0x2b831f80,133,"$Array"
+code-creation,CallIC,7,0x2b832020,129,"InstallFunctions"
+code-creation,LoadPolymorphicIC,5,0x2b8320c0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b832140,105,"length"
+code-creation,KeyedLoadPolymorphicIC,6,0x2b8321c0,105,""
+code-creation,LoadIC,5,0x2b832240,114,"Uint8Array"
+code-creation,CallIC,7,0x2b8322c0,129,"SetupTypedArray"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b832360,103,"$Object"
+code-creation,LoadIC,5,0x2b8323e0,114,"Int8Array"
+code-creation,CallIC,7,0x2b832460,129,"CreateTypedArrayConstructor"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b832500,103,"TypedArrayGetBuffer"
+code-creation,LoadIC,5,0x2b832580,103,"TypedArrayGetByteOffset"
+code-creation,LoadIC,5,0x2b832600,103,"TypedArrayGetByteLength"
+code-creation,LoadIC,5,0x2b832680,103,"TypedArrayGetLength"
+code-creation,CallIC,7,0x2b832700,129,"CreateSubArray"
+code-creation,LoadIC,5,0x2b8327a0,103,"TypedArraySet"
+code-creation,CallIC,7,0x2b832820,133,"$Array"
+code-creation,LoadIC,5,0x2b8328c0,114,"Uint16Array"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+tick,0xf776d430,26979,0,0x90ec418,0,0x2b82e9b7,0x2b82e593
+code-creation,LoadIC,5,0x2b832940,114,"Int16Array"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b8329c0,114,"Uint32Array"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b832a40,114,"Int32Array"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b832ac0,114,"Float32Array"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b832b40,114,"Float64Array"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b832bc0,114,"Uint8ClampedArray"
+code-creation,LazyCompile,0,0x2b82f8a0,824," native typedarray.js:88",0x4423c580,
+code-creation,LoadIC,5,0x2b832c40,114,"DataView"
+code-creation,CallIC,7,0x2b832cc0,129,"SetupDataView"
+code-creation,LoadIC,5,0x2b832d60,103,"$DataView"
+code-creation,LoadIC,5,0x2b832de0,103,"DataViewConstructor"
+code-creation,LazyCompile,0,0x2b830880,908,"DataViewConstructor native typedarray.js:209",0x4423b298,
+code-creation,LoadIC,5,0x2b832e60,103,"DataViewGetBuffer"
+code-creation,LoadIC,5,0x2b832ee0,103,"DataViewGetByteOffset"
+code-creation,LoadIC,5,0x2b832f60,103,"DataViewGetByteLength"
+code-creation,LoadIC,5,0x2b832fe0,103,"DataViewGetInt8"
+code-creation,LoadIC,5,0x2b833060,103,"DataViewSetInt8"
+code-creation,LoadIC,5,0x2b8330e0,103,"DataViewGetUint8"
+code-creation,LoadIC,5,0x2b833160,103,"DataViewSetUint8"
+code-creation,LoadIC,5,0x2b8331e0,103,"DataViewGetInt16"
+code-creation,LoadIC,5,0x2b833260,103,"DataViewSetInt16"
+code-creation,LoadIC,5,0x2b8332e0,103,"DataViewGetUint16"
+code-creation,LoadIC,5,0x2b833360,103,"DataViewSetUint16"
+code-creation,LoadIC,5,0x2b8333e0,103,"DataViewGetInt32"
+code-creation,LoadIC,5,0x2b833460,103,"DataViewSetInt32"
+code-creation,LoadIC,5,0x2b8334e0,103,"DataViewGetUint32"
+code-creation,LoadIC,5,0x2b833560,103,"DataViewSetUint32"
+code-creation,LoadIC,5,0x2b8335e0,103,"DataViewGetFloat32"
+code-creation,LoadIC,5,0x2b833660,103,"DataViewSetFloat32"
+code-creation,LoadIC,5,0x2b8336e0,103,"DataViewGetFloat64"
+code-creation,LoadIC,5,0x2b833760,103,"DataViewSetFloat64"
+code-creation,CallMiss,7,0x2b8337e0,189,"args_count: 32"
+code-creation,CallIC,7,0x2b8338a0,136,"$Array"
+code-creation,LoadIC,5,0x2b833940,93,"length"
+timer-event-start,"V8.Parse",28734
+timer-event-start,"V8.PreParse",28760
+timer-event-end,"V8.PreParse",28785
+timer-event-start,"V8.PreParse",28796
+timer-event-end,"V8.PreParse",28803
+timer-event-start,"V8.PreParse",28810
+timer-event-end,"V8.PreParse",28817
+timer-event-start,"V8.PreParse",28828
+timer-event-end,"V8.PreParse",28862
+timer-event-start,"V8.PreParse",28872
+timer-event-end,"V8.PreParse",28878
+timer-event-start,"V8.PreParse",28884
+timer-event-end,"V8.PreParse",28890
+timer-event-start,"V8.PreParse",28905
+timer-event-end,"V8.PreParse",28931
+timer-event-start,"V8.PreParse",28938
+timer-event-end,"V8.PreParse",28970
+timer-event-start,"V8.PreParse",28980
+timer-event-end,"V8.PreParse",28989
+timer-event-start,"V8.PreParse",28995
+timer-event-end,"V8.PreParse",29005
+timer-event-start,"V8.PreParse",29012
+timer-event-end,"V8.PreParse",29019
+timer-event-start,"V8.PreParse",29026
+timer-event-end,"V8.PreParse",29045
+timer-event-start,"V8.PreParse",29052
+timer-event-end,"V8.PreParse",29059
+timer-event-start,"V8.PreParse",29066
+timer-event-end,"V8.PreParse",29072
+timer-event-start,"V8.PreParse",29078
+timer-event-end,"V8.PreParse",29087
+tick,0xf776d430,29099,0,0x0,2
+timer-event-start,"V8.PreParse",29187
+timer-event-end,"V8.PreParse",29241
+timer-event-start,"V8.PreParse",29253
+timer-event-end,"V8.PreParse",29261
+timer-event-start,"V8.PreParse",29274
+timer-event-end,"V8.PreParse",29286
+timer-event-start,"V8.PreParse",29293
+timer-event-end,"V8.PreParse",29305
+timer-event-start,"V8.PreParse",29314
+timer-event-end,"V8.PreParse",29324
+timer-event-start,"V8.PreParse",29331
+timer-event-end,"V8.PreParse",29344
+timer-event-start,"V8.PreParse",29355
+timer-event-end,"V8.PreParse",29369
+timer-event-start,"V8.PreParse",29375
+timer-event-end,"V8.PreParse",29391
+timer-event-start,"V8.PreParse",29400
+timer-event-end,"V8.PreParse",29408
+timer-event-start,"V8.PreParse",29416
+timer-event-end,"V8.PreParse",29422
+timer-event-start,"V8.PreParse",29435
+timer-event-end,"V8.PreParse",29442
+timer-event-start,"V8.PreParse",29448
+timer-event-end,"V8.PreParse",29461
+timer-event-start,"V8.PreParse",29467
+timer-event-end,"V8.PreParse",29480
+timer-event-start,"V8.PreParse",29489
+timer-event-end,"V8.PreParse",29508
+timer-event-start,"V8.PreParse",29516
+timer-event-end,"V8.PreParse",29547
+timer-event-start,"V8.PreParse",29561
+timer-event-end,"V8.PreParse",29579
+timer-event-start,"V8.PreParse",29587
+timer-event-end,"V8.PreParse",29605
+timer-event-start,"V8.PreParse",29613
+timer-event-end,"V8.PreParse",29639
+timer-event-start,"V8.PreParse",29646
+timer-event-end,"V8.PreParse",29667
+timer-event-start,"V8.PreParse",29677
+timer-event-end,"V8.PreParse",29702
+timer-event-start,"V8.PreParse",29709
+timer-event-end,"V8.PreParse",29735
+timer-event-start,"V8.PreParse",29741
+timer-event-end,"V8.PreParse",29758
+timer-event-start,"V8.PreParse",29764
+timer-event-end,"V8.PreParse",29773
+timer-event-start,"V8.PreParse",29781
+timer-event-end,"V8.PreParse",29796
+timer-event-start,"V8.PreParse",29805
+timer-event-end,"V8.PreParse",29813
+timer-event-start,"V8.PreParse",29821
+timer-event-end,"V8.PreParse",29839
+timer-event-start,"V8.PreParse",29847
+timer-event-end,"V8.PreParse",29861
+timer-event-start,"V8.PreParse",29868
+timer-event-end,"V8.PreParse",29873
+timer-event-start,"V8.PreParse",29880
+timer-event-end,"V8.PreParse",29908
+timer-event-start,"V8.PreParse",29914
+timer-event-end,"V8.PreParse",29923
+timer-event-start,"V8.PreParse",29930
+timer-event-end,"V8.PreParse",29937
+timer-event-start,"V8.PreParse",29944
+timer-event-end,"V8.PreParse",29955
+timer-event-start,"V8.PreParse",29960
+timer-event-end,"V8.PreParse",29970
+timer-event-start,"V8.PreParse",29977
+timer-event-end,"V8.PreParse",29982
+timer-event-start,"V8.PreParse",29989
+timer-event-end,"V8.PreParse",29999
+timer-event-start,"V8.PreParse",30031
+timer-event-end,"V8.PreParse",30041
+timer-event-start,"V8.PreParse",30047
+timer-event-end,"V8.PreParse",30054
+timer-event-start,"V8.PreParse",30060
+timer-event-end,"V8.PreParse",30069
+timer-event-start,"V8.PreParse",30080
+timer-event-end,"V8.PreParse",30106
+timer-event-start,"V8.PreParse",30113
+timer-event-end,"V8.PreParse",30121
+timer-event-start,"V8.PreParse",30127
+timer-event-end,"V8.PreParse",30133
+timer-event-start,"V8.PreParse",30139
+timer-event-end,"V8.PreParse",30148
+tick,0x825e06c,30162,0,0x0,2
+timer-event-start,"V8.PreParse",30217
+timer-event-end,"V8.PreParse",30285
+timer-event-start,"V8.PreParse",30293
+timer-event-end,"V8.PreParse",30319
+timer-event-start,"V8.PreParse",30326
+timer-event-end,"V8.PreParse",30344
+timer-event-start,"V8.PreParse",30350
+timer-event-end,"V8.PreParse",30367
+timer-event-start,"V8.PreParse",30374
+timer-event-end,"V8.PreParse",30385
+timer-event-start,"V8.PreParse",30392
+timer-event-end,"V8.PreParse",30400
+timer-event-start,"V8.PreParse",30407
+timer-event-end,"V8.PreParse",30415
+timer-event-start,"V8.PreParse",30429
+timer-event-end,"V8.PreParse",30446
+timer-event-start,"V8.PreParse",30456
+timer-event-end,"V8.PreParse",30461
+timer-event-start,"V8.PreParse",30469
+timer-event-end,"V8.PreParse",30480
+timer-event-start,"V8.PreParse",30488
+timer-event-end,"V8.PreParse",30497
+timer-event-start,"V8.PreParse",30503
+timer-event-end,"V8.PreParse",30511
+timer-event-start,"V8.PreParse",30517
+timer-event-end,"V8.PreParse",30528
+timer-event-start,"V8.PreParse",30535
+timer-event-end,"V8.PreParse",30539
+timer-event-start,"V8.PreParse",30546
+timer-event-end,"V8.PreParse",30550
+timer-event-start,"V8.PreParse",30568
+timer-event-end,"V8.PreParse",30577
+timer-event-start,"V8.PreParse",30586
+timer-event-end,"V8.PreParse",30591
+timer-event-start,"V8.PreParse",30600
+timer-event-end,"V8.PreParse",30610
+timer-event-start,"V8.PreParse",30616
+timer-event-end,"V8.PreParse",30621
+timer-event-start,"V8.PreParse",30630
+timer-event-end,"V8.PreParse",30638
+timer-event-start,"V8.PreParse",30649
+timer-event-end,"V8.PreParse",30665
+timer-event-start,"V8.PreParse",30672
+timer-event-end,"V8.PreParse",30682
+timer-event-start,"V8.PreParse",30692
+timer-event-end,"V8.PreParse",30706
+timer-event-start,"V8.PreParse",30719
+timer-event-end,"V8.PreParse",30730
+timer-event-start,"V8.PreParse",30737
+timer-event-end,"V8.PreParse",30749
+tick,0x82b07f6,31208,0,0x0,2
+tick,0x824d3ad,32274,0,0x0,2
+tick,0x82b07c6,33327,0,0x0,2
+tick,0x82b0804,34401,0,0x0,2
+tick,0x81fc62c,35474,0,0x0,2
+tick,0x81fc62c,36534,0,0x0,2
+tick,0x824e954,37593,0,0x0,2
+tick,0x82b07f3,38662,0,0x0,2
+tick,0x81fc625,39722,0,0x0,2
+tick,0x81fc61e,40783,0,0x0,2
+tick,0x821c1a1,41846,0,0x0,2
+tick,0x81fc62c,42913,0,0x0,2
+timer-event-start,"V8.PreParse",43415
+timer-event-end,"V8.PreParse",43428
+timer-event-start,"V8.PreParse",43446
+timer-event-end,"V8.PreParse",43481
+timer-event-end,"V8.Parse",43493
+timer-event-start,"V8.Compile",43498
+timer-event-start,"V8.CompileFullCode",43528
+timer-event-end,"V8.CompileFullCode",43671
+code-creation,Script,0,0x2b8339a0,6060,"bsuite/kraken-once/stanford-crypto-ccm.js",0x2f33b684,~
+timer-event-end,"V8.Compile",43688
+timer-event-start,"V8.Execute",43739
+timer-event-start,"V8.ParseLazy",43914
+timer-event-end,"V8.ParseLazy",43936
+timer-event-start,"V8.CompileLazy",43942
+timer-event-start,"V8.CompileFullCode",43947
+timer-event-end,"V8.CompileFullCode",43966
+tick,0x820b498,43978,0,0x0,0,0x2b83464f
+code-creation,LazyCompile,0,0x2b835160,372,"sjcl.hash.sha256 bsuite/kraken-once/stanford-crypto-ccm.js:15",0x2f339fb0,~
+timer-event-end,"V8.CompileLazy",44194
+code-creation,Stub,2,0x2b8352e0,188,"KeyedLoadElementStub"
+code-creation,KeyedLoadIC,6,0x2b8353a0,91,""
+code-creation,CallPreMonomorphic,7,0x2b835400,178,"args_count: 0"
+timer-event-start,"V8.ParseLazy",44292
+timer-event-end,"V8.ParseLazy",44326
+timer-event-start,"V8.CompileLazy",44333
+timer-event-start,"V8.CompileFullCode",44340
+code-creation,Stub,12,0x2b8354c0,88,"BinaryOpStub_MOD_Alloc_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b835520,88,"BinaryOpStub_MUL_Alloc_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",44389
+code-creation,LazyCompile,0,0x2b835580,906,"sjcl.hash.sha256.w bsuite/kraken-once/stanford-crypto-ccm.js:17",0x2f33a190,~
+timer-event-end,"V8.CompileLazy",44407
+code-creation,Stub,12,0x2b835920,167,"BinaryOpStub_MUL_Alloc_Smi+Smi"
+code-creation,Stub,13,0x2b8359e0,122,"CompareICStub"
+timer-event-start,"V8.ParseLazy",44439
+timer-event-end,"V8.ParseLazy",44460
+timer-event-start,"V8.CompileLazy",44465
+timer-event-start,"V8.CompileFullCode",44471
+code-creation,Stub,2,0x2b835a60,501,"MathPowStub"
+timer-event-end,"V8.CompileFullCode",44505
+code-creation,LazyCompile,0,0x2b835c60,304,"pow native math.js:181",0x4422259c,~
+timer-event-end,"V8.CompileLazy",44517
+timer-event-start,"V8.ParseLazy",44522
+timer-event-end,"V8.ParseLazy",44534
+timer-event-start,"V8.CompileLazy",44539
+timer-event-start,"V8.CompileFullCode",44545
+code-creation,Stub,12,0x2b835da0,88,"BinaryOpStub_MUL_OverwriteLeft_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b835e00,88,"BinaryOpStub_BIT_OR_OverwriteLeft_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",44570
+code-creation,LazyCompile,0,0x2b835e60,228,"a bsuite/kraken-once/stanford-crypto-ccm.js:17",0x2f33d150,~
+timer-event-end,"V8.CompileLazy",44582
+timer-event-start,"V8.ParseLazy",44590
+timer-event-end,"V8.ParseLazy",44609
+timer-event-start,"V8.CompileLazy",44614
+timer-event-start,"V8.CompileFullCode",44619
+code-creation,Stub,12,0x2b835f60,88,"BinaryOpStub_SHR_Alloc_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",44646
+code-creation,LazyCompile,0,0x2b835fc0,344,"floor native math.js:99",0x4422241c,~
+timer-event-end,"V8.CompileLazy",44657
+code-creation,Stub,13,0x2b836120,404,"CompareICStub"
+code-creation,Stub,13,0x2b8362c0,232,"CompareICStub"
+code-creation,Stub,13,0x2b8363c0,404,"CompareICStub"
+code-creation,Stub,13,0x2b836560,240,"CompareICStub"
+code-creation,Stub,12,0x2b836660,349,"BinaryOpStub_SHR_Alloc_Number+Smi"
+code-creation,Stub,12,0x2b8367c0,246,"BinaryOpStub_SUB_Alloc_Number+Smi"
+code-creation,Stub,12,0x2b8368c0,245,"BinaryOpStub_MUL_OverwriteLeft_Number+Number"
+code-creation,Stub,12,0x2b8369c0,407,"BinaryOpStub_BIT_OR_OverwriteLeft_Number+Smi"
+code-creation,Stub,2,0x2b836b60,1808,"RecordWriteStub"
+code-creation,Stub,2,0x2b837280,606,"KeyedStoreElementStub"
+code-creation,KeyedStoreIC,10,0x2b8374e0,91,""
+tick,0x31e6020f,45036,0,0x2b836b61,0,0x2b8357c1,0x2b835208,0x2b83464f
+code-creation,LoadIC,5,0x2b837540,114,"Math"
+code-creation,CallIC,7,0x2b8375c0,289,"floor"
+code-creation,Stub,2,0x2b837700,80,"LoadFieldStub"
+code-creation,Stub,2,0x2b837760,95,"N"
+code-creation,LoadIC,5,0x2b8377c0,93,"N"
+code-creation,CallIC,7,0x2b837820,113,"pow"
+code-creation,Stub,2,0x2b8378a0,80,"LoadFieldStub"
+code-creation,Stub,2,0x2b837900,95,"a"
+code-creation,LoadIC,5,0x2b837960,93,"a"
+code-creation,Stub,12,0x2b8379c0,190,"BinaryOpStub_MOD_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b837a80,181,"BinaryOpStub_MOD_Alloc_Smi+Smi"
+timer-event-start,"V8.ParseLazy",45383
+timer-event-end,"V8.ParseLazy",45402
+timer-event-start,"V8.CompileLazy",45408
+timer-event-start,"V8.CompileFullCode",45413
+timer-event-end,"V8.CompileFullCode",45428
+code-creation,LazyCompile,0,0x2b837b40,264,"sjcl.hash.sha256.reset bsuite/kraken-once/stanford-crypto-ccm.js:16",0x2f33a070,~
+timer-event-end,"V8.CompileLazy",45442
+code-creation,StoreIC,9,0x2b837c60,138,"codec"
+code-creation,StoreIC,9,0x2b837d00,141,"hex"
+tick,0x8294f6f,46096,0,0xff820124,0,0x2b834ff0
+code-creation,StoreIC,9,0x2b837da0,171,"ccm"
+timer-event-start,"V8.ParseLazy",46605
+timer-event-end,"V8.ParseLazy",46625
+timer-event-start,"V8.CompileLazy",46630
+timer-event-start,"V8.CompileFullCode",46635
+timer-event-end,"V8.CompileFullCode",46649
+code-creation,LazyCompile,0,0x2b837e60,300,"sjcl.test.TestCase bsuite/kraken-once/stanford-crypto-ccm.js:99",0x2f33b210,~
+timer-event-end,"V8.CompileLazy",46663
+timer-event-start,"V8.ParseLazy",46681
+timer-event-end,"V8.ParseLazy",46712
+timer-event-start,"V8.CompileLazy",46718
+timer-event-start,"V8.CompileFullCode",46725
+code-creation,CallInitialize,7,0x2b837fa0,178,"args_count: 4"
+timer-event-end,"V8.CompileFullCode",46771
+code-creation,LazyCompile,0,0x2b838060,953,"sjcl.test.run bsuite/kraken-once/stanford-crypto-ccm.js:180",0x2f33b4b0,~
+timer-event-end,"V8.CompileLazy",46788
+code-creation,Stub,13,0x2b838420,485,"CompareICStub"
+code-creation,CallIC,7,0x2b838620,128,"ToString"
+code-creation,CallPreMonomorphic,7,0x2b8386a0,178,"args_count: 4"
+timer-event-start,"V8.ParseLazy",46859
+timer-event-end,"V8.ParseLazy",46876
+timer-event-start,"V8.CompileLazy",46881
+timer-event-start,"V8.CompileFullCode",46888
+code-creation,CallInitialize,7,0x2b838760,178,"args_count: 5"
+timer-event-end,"V8.CompileFullCode",46910
+code-creation,LazyCompile,0,0x2b838820,320,"browserUtil.cpsMap bsuite/kraken-once/stanford-crypto-ccm.js:63",0x2f33b030,~
+timer-event-end,"V8.CompileLazy",46922
+code-creation,CallPreMonomorphic,7,0x2b838960,178,"args_count: 5"
+timer-event-start,"V8.ParseLazy",46937
+timer-event-end,"V8.ParseLazy",46959
+timer-event-start,"V8.CompileLazy",46965
+timer-event-start,"V8.CompileFullCode",46972
+code-creation,Stub,2,0x2b838a20,172,"FastNewContextStub"
+timer-event-end,"V8.CompileFullCode",46995
+code-creation,LazyCompile,0,0x2b838ae0,420,"browserUtil.cpsIterate bsuite/kraken-once/stanford-crypto-ccm.js:49",0x2f33afd0,~
+timer-event-end,"V8.CompileLazy",47008
+timer-event-start,"V8.ParseLazy",47013
+timer-event-end,"V8.ParseLazy",47029
+timer-event-start,"V8.CompileLazy",47034
+timer-event-start,"V8.CompileFullCode",47041
+code-creation,Stub,2,0x2b838ca0,328,"CallFunctionStub_Args0_Recording"
+timer-event-end,"V8.CompileFullCode",47070
+code-creation,LazyCompile,0,0x2b838e00,372,"go bsuite/kraken-once/stanford-crypto-ccm.js:50",0x2f33da7c,~
+timer-event-end,"V8.CompileLazy",47082
+timer-event-start,"V8.ParseLazy",47088
+timer-event-end,"V8.ParseLazy",47110
+timer-event-start,"V8.CompileLazy",47115
+timer-event-start,"V8.CompileFullCode",47121
+timer-event-end,"V8.CompileFullCode",47134
+code-creation,LazyCompile,0,0x2b838f80,236," bsuite/kraken-once/stanford-crypto-ccm.js:64",0x2f33d9d4,~
+timer-event-end,"V8.CompileLazy",47146
+tick,0xf776d430,47160,0,0x90ec418,2,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,KeyedLoadIC,6,0x2b839080,91,""
+timer-event-start,"V8.ParseLazy",47296
+timer-event-end,"V8.ParseLazy",47317
+timer-event-start,"V8.CompileLazy",47323
+timer-event-start,"V8.CompileFullCode",47329
+code-creation,CallInitialize,7,0x2b8390e0,178,"args_count: 3"
+timer-event-end,"V8.CompileFullCode",47355
+code-creation,LazyCompile,0,0x2b8391a0,260," bsuite/kraken-once/stanford-crypto-ccm.js:192",0x2f33d920,~
+timer-event-end,"V8.CompileLazy",47368
+code-creation,CallPreMonomorphic,7,0x2b8392c0,178,"args_count: 3"
+timer-event-start,"V8.ParseLazy",47390
+timer-event-end,"V8.ParseLazy",47409
+timer-event-start,"V8.CompileLazy",47415
+timer-event-start,"V8.CompileFullCode",47421
+timer-event-end,"V8.CompileFullCode",47438
+code-creation,LazyCompile,0,0x2b839380,344,"sjcl.test.TestCase.run bsuite/kraken-once/stanford-crypto-ccm.js:168",0x2f33b450,~
+timer-event-end,"V8.CompileLazy",47452
+timer-event-start,"V8.ParseLazy",47462
+timer-event-end,"V8.ParseLazy",47476
+timer-event-start,"V8.CompileLazy",47481
+timer-event-start,"V8.CompileFullCode",47485
+timer-event-end,"V8.CompileFullCode",47496
+code-creation,LazyCompile,0,0x2b8394e0,208,"valueOf native date.js:361",0x44218984,~
+timer-event-end,"V8.CompileLazy",47507
+timer-event-start,"V8.ParseLazy",47517
+timer-event-end,"V8.ParseLazy",47526
+timer-event-start,"V8.CompileLazy",47531
+timer-event-start,"V8.CompileFullCode",47536
+timer-event-end,"V8.CompileFullCode",47545
+code-creation,LazyCompile,0,0x2b8395c0,192,"browserUtil.pauseAndThen bsuite/kraken-once/stanford-crypto-ccm.js:47",0x2f33af70,~
+timer-event-end,"V8.CompileLazy",47557
+timer-event-start,"V8.ParseLazy",47561
+timer-event-end,"V8.ParseLazy",47571
+timer-event-start,"V8.CompileLazy",47576
+timer-event-start,"V8.CompileFullCode",47581
+timer-event-end,"V8.CompileFullCode",47591
+code-creation,LazyCompile,0,0x2b839680,192," bsuite/kraken-once/stanford-crypto-ccm.js:171",0x2f33dc70,~
+timer-event-end,"V8.CompileLazy",47602
+timer-event-start,"V8.ParseLazy",47608
+timer-event-end,"V8.ParseLazy",47674
+timer-event-start,"V8.CompileLazy",47681
+timer-event-start,"V8.CompileFullCode",47693
+code-creation,Stub,2,0x2b839740,196,"FastNewContextStub"
+code-creation,Stub,12,0x2b839820,88,"BinaryOpStub_DIV_Alloc_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",47755
+code-creation,LazyCompile,0,0x2b839880,716," bsuite/kraken-once/stanford-crypto-ccm.js:7235",0x2f33b5d0,~
+timer-event-end,"V8.CompileLazy",47768
+code-creation,Stub,12,0x2b839b60,196,"BinaryOpStub_DIV_Alloc_Smi+Smi"
+timer-event-start,"V8.ParseLazy",47798
+timer-event-end,"V8.ParseLazy",47845
+timer-event-start,"V8.CompileLazy",47851
+timer-event-start,"V8.CompileFullCode",47863
+code-creation,Stub,12,0x2b839c40,88,"BinaryOpStub_MUL_OverwriteRight_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",47917
+code-creation,LazyCompile,0,0x2b839ca0,2065," bsuite/kraken-once/stanford-crypto-ccm.js:7243",0x2f33de10,
+timer-event-end,"V8.CompileLazy",47930
+code-creation,Stub,12,0x2b83a4c0,167,"BinaryOpStub_MUL_OverwriteRight_Smi+Smi"
+timer-event-start,"V8.ParseLazy",47958
+timer-event-end,"V8.ParseLazy",47986
+timer-event-start,"V8.CompileLazy",47992
+timer-event-start,"V8.CompileFullCode",47998
+code-creation,Stub,12,0x2b83a580,88,"BinaryOpStub_BIT_XOR_Alloc_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",48031
+code-creation,LazyCompile,0,0x2b83a5e0,717,"sjcl.codec.hex.toBits bsuite/kraken-once/stanford-crypto-ccm.js:13",0x2f339e90,~
+timer-event-end,"V8.CompileLazy",48044
+timer-event-start,"V8.ParseLazy",48061
+timer-event-end,"V8.ParseLazy",48119
+timer-event-start,"V8.CompileLazy",48126
+timer-event-start,"V8.CompileFullCode",48135
+timer-event-end,"V8.CompileFullCode",48188
+code-creation,LazyCompile,0,0x2b83a8c0,1601,"DoConstructRegExp native regexp.js:39",0x44222a28,~
+timer-event-end,"V8.CompileLazy",48203
+timer-event-start,"V8.ParseLazy",48213
+tick,0x80eabd3,48226,0,0xff81fb44,2,0x2b821ae3,0x2b83a6a4,0x2b839e4e,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.ParseLazy",48288
+timer-event-start,"V8.CompileLazy",48309
+timer-event-start,"V8.CompileFullCode",48323
+timer-event-end,"V8.CompileFullCode",48372
+code-creation,LazyCompile,0,0x2b83af20,1284,"charAt native string.js:64",0x44215fa8,~
+timer-event-end,"V8.CompileLazy",48386
+code-creation,Stub,14,0x2b83b440,144,"CompareNilICStub(NullValue)(MonomorphicMap)"
+code-creation,Stub,5,0x2b83b4e0,97,"StringLengthStub"
+timer-event-start,"V8.ParseLazy",48435
+timer-event-end,"V8.ParseLazy",48536
+timer-event-start,"V8.CompileLazy",48543
+timer-event-start,"V8.CompileFullCode",48555
+code-creation,Stub,2,0x2b83b560,828,"SubStringStub"
+timer-event-end,"V8.CompileFullCode",48640
+code-creation,LazyCompile,0,0x2b83b8a0,2428,"replace native string.js:213",0x44216248,~
+timer-event-end,"V8.CompileLazy",48654
+code-creation,StoreIC,9,0x2b83c220,135,"lastIndex"
+code-creation,Stub,14,0x2b83c2c0,124,"CompareNilICStub(NullValue)(Null)"
+code-creation,RegExp,4,0x2b83c340,758,"\\s|0x"
+timer-event-start,"V8.ParseLazy",48827
+timer-event-end,"V8.ParseLazy",48873
+timer-event-start,"V8.CompileLazy",48879
+timer-event-start,"V8.CompileFullCode",48886
+timer-event-end,"V8.CompileFullCode",48916
+code-creation,LazyCompile,0,0x2b83c640,960,"substr native string.js:749",0x44216608,~
+timer-event-end,"V8.CompileLazy",48930
+code-creation,Stub,14,0x2b83ca00,144,"CompareNilICStub(NullValue)(MonomorphicMap)"
+code-creation,Stub,13,0x2b83caa0,122,"CompareICStub"
+timer-event-start,"V8.ParseLazy",48959
+timer-event-end,"V8.ParseLazy",49000
+timer-event-start,"V8.CompileLazy",49006
+timer-event-start,"V8.CompileFullCode",49012
+code-creation,Stub,12,0x2b83cb20,88,"BinaryOpStub_BIT_OR_Alloc_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b83cb80,88,"BinaryOpStub_SAR_Alloc_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",49062
+code-creation,LazyCompile,0,0x2b83cbe0,1096,"parseInt native v8natives.js:130",0x4421ec1c,~
+timer-event-end,"V8.CompileLazy",49075
+code-creation,Stub,12,0x2b83d040,399,"BinaryOpStub_BIT_XOR_Alloc_Number+Smi"
+code-creation,CallIC,7,0x2b83d1e0,147,"substr"
+code-creation,CallIC,7,0x2b83d280,129,"parseInt"
+code-creation,Stub,2,0x2b83d320,1433,"RecordWriteStub"
+code-creation,Stub,2,0x2b83d8c0,611,"RecordWriteStub"
+code-creation,CallIC,7,0x2b83db40,656,"push"
+timer-event-start,"V8.ParseLazy",49192
+timer-event-end,"V8.ParseLazy",49229
+timer-event-start,"V8.CompileLazy",49235
+timer-event-start,"V8.CompileFullCode",49242
+code-creation,Stub,12,0x2b83dde0,88,"BinaryOpStub_SAR_OverwriteRight_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b83de40,88,"BinaryOpStub_BIT_AND_OverwriteRight_Uninitialized+Uninitialized"
+tick,0x8250358,49284,0,0xff81fe84,2,0x2b83a871,0x2b839e4e,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.CompileFullCode",49346
+code-creation,LazyCompile,0,0x2b83dea0,536,"sjcl.bitArray.clamp bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339b30,~
+timer-event-end,"V8.CompileLazy",49390
+timer-event-start,"V8.ParseLazy",49402
+timer-event-end,"V8.ParseLazy",49416
+timer-event-start,"V8.CompileLazy",49421
+timer-event-start,"V8.CompileFullCode",49426
+timer-event-end,"V8.CompileFullCode",49438
+code-creation,LazyCompile,0,0x2b83e0c0,248,"ceil native math.js:81",0x442222fc,~
+timer-event-end,"V8.CompileLazy",49450
+timer-event-start,"V8.ParseLazy",49466
+timer-event-end,"V8.ParseLazy",49529
+timer-event-start,"V8.CompileLazy",49535
+timer-event-start,"V8.CompileFullCode",49544
+code-creation,Stub,2,0x2b83e1c0,647,"FastCloneShallowArrayStub"
+code-creation,Stub,12,0x2b83e460,88,"BinaryOpStub_SHL_Alloc_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b83e4c0,88,"BinaryOpStub_BIT_AND_OverwriteLeft_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b83e520,88,"BinaryOpStub_BIT_XOR_OverwriteLeft_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",49801
+code-creation,LazyCompile,0,0x2b83e580,3002,"sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4",0x2f339830,~
+timer-event-end,"V8.CompileLazy",49816
+timer-event-start,"V8.ParseLazy",49829
+timer-event-end,"V8.ParseLazy",49886
+timer-event-start,"V8.CompileLazy",49893
+timer-event-start,"V8.CompileFullCode",49902
+code-creation,Stub,12,0x2b83f140,88,"BinaryOpStub_BIT_XOR_OverwriteRight_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",49958
+code-creation,LazyCompile,0,0x2b83f1a0,2528,"sjcl.cipher.aes.w bsuite/kraken-once/stanford-crypto-ccm.js:6",0x2f339950,~
+timer-event-end,"V8.CompileLazy",49972
+code-creation,Stub,12,0x2b83fb80,167,"BinaryOpStub_SHL_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b83fc40,155,"BinaryOpStub_SAR_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b83fce0,167,"BinaryOpStub_MUL_OverwriteLeft_Smi+Smi"
+code-creation,Stub,12,0x2b83fda0,146,"BinaryOpStub_BIT_XOR_OverwriteLeft_Smi+Smi"
+code-creation,Stub,2,0x2b83fe40,1808,"RecordWriteStub"
+code-creation,Stub,2,0x2b840560,554,"KeyedStoreElementStub"
+code-creation,KeyedStoreIC,10,0x2b8407a0,91,""
+code-creation,Stub,12,0x2b840800,146,"BinaryOpStub_BIT_XOR_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b8408a0,146,"BinaryOpStub_BIT_XOR_OverwriteRight_Smi+Smi"
+tick,0x82d1790,50347,0,0xff81fdb8,0,0x2b83f388,0x2b83e64a,0x2b839e65,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,12,0x2b840940,383,"BinaryOpStub_BIT_XOR_OverwriteLeft_Smi+Int32"
+code-creation,Stub,12,0x2b840ac0,375,"BinaryOpStub_SHL_Alloc_Int32+Smi"
+code-creation,Stub,12,0x2b840c40,325,"BinaryOpStub_SHR_Alloc_Int32+Smi"
+code-creation,Stub,12,0x2b840da0,167,"BinaryOpStub_SHR_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b840e60,383,"BinaryOpStub_BIT_XOR_OverwriteLeft_Int32+Smi"
+code-creation,Stub,2,0x2b840fe0,794,"ElementsTransitionAndStoreStub"
+code-creation,KeyedStorePolymorphicIC,10,0x2b841300,107,""
+code-creation,KeyedStorePolymorphicIC,10,0x2b841300,107,"args_count: 0"
+code-creation,Stub,2,0x2b841380,204,"KeyedLoadElementStub"
+code-creation,KeyedLoadIC,6,0x2b841460,91,""
+code-creation,Stub,2,0x2b8414c0,405,"ElementsTransitionAndStoreStub"
+code-creation,Stub,2,0x2b841660,554,"KeyedStoreElementStub"
+code-creation,KeyedStorePolymorphicIC,10,0x2b8418a0,107,""
+code-creation,KeyedStorePolymorphicIC,10,0x2b8418a0,107,"args_count: 0"
+code-creation,Stub,12,0x2b841920,233,"BinaryOpStub_MUL_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b841a20,407,"BinaryOpStub_BIT_XOR_OverwriteLeft_Number+Smi"
+code-creation,Stub,12,0x2b841bc0,407,"BinaryOpStub_BIT_XOR_OverwriteLeft_Smi+Number"
+code-creation,Stub,12,0x2b841d60,355,"BinaryOpStub_BIT_XOR_OverwriteLeft_Int32+Int32"
+code-creation,Stub,12,0x2b841ee0,379,"BinaryOpStub_BIT_XOR_OverwriteLeft_Int32+Number"
+code-creation,Stub,15,0x2b842060,144,"ToBooleanStub(Undefined,Smi)"
+code-creation,Stub,2,0x2b842100,236,"KeyedStoreElementStub"
+code-creation,KeyedStoreIC,10,0x2b842200,91,""
+code-creation,CallIC,7,0x2b842260,136,"slice"
+code-creation,CallMegamorphic,7,0x2b842300,685,"args_count: 1"
+code-creation,Stub,12,0x2b8425c0,146,"BinaryOpStub_ADD_OverwriteLeft_Smi+Smi"
+code-creation,Stub,12,0x2b842660,148,"BinaryOpStub_SUB_Alloc_Smi+Smi"
+code-creation,Stub,2,0x2b842700,301,"KeyedLoadElementStub"
+code-creation,KeyedLoadIC,6,0x2b842840,91,""
+tick,0x817d391,51438,0,0xff81f9a4,0,0x2b83e81e,0x2b839e65,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,12,0x2b8428a0,190,"BinaryOpStub_MOD_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b842960,146,"BinaryOpStub_BIT_AND_OverwriteLeft_Smi+Smi"
+code-creation,Stub,12,0x2b842a00,347,"BinaryOpStub_BIT_XOR_Alloc_Int32+Int32"
+code-creation,Stub,12,0x2b842b60,214,"BinaryOpStub_SHL_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b842c40,375,"BinaryOpStub_SAR_Alloc_Int32+Smi"
+code-creation,Stub,12,0x2b842dc0,375,"BinaryOpStub_BIT_AND_Alloc_Int32+Smi"
+code-creation,CallIC,7,0x2b842f40,147,"replace"
+code-creation,Stub,2,0x2b842fe0,76,"LoadFieldStub"
+code-creation,LoadIC,5,0x2b843040,93,"lastIndex"
+code-creation,Stub,2,0x2b8430a0,76,"LoadFieldStub"
+code-creation,LoadIC,5,0x2b843100,93,"global"
+code-creation,LoadIC,5,0x2b843160,103,"lastMatchInfoOverride"
+code-creation,LoadIC,5,0x2b8431e0,103,"lastMatchInfo"
+code-creation,LoadIC,5,0x2b843260,103,"sjcl"
+code-creation,LoadIC,5,0x2b8432e0,93,"bitArray"
+code-creation,CallIC,7,0x2b843340,113,"clamp"
+code-creation,LoadIC,5,0x2b8433c0,93,"length"
+code-creation,CallIC,7,0x2b843420,113,"ceil"
+code-creation,CallIC,7,0x2b8434a0,136,"slice"
+code-creation,Stub,12,0x2b843540,264,"BinaryOpStub_DIV_Alloc_Smi+Smi"
+code-creation,Stub,12,0x2b843660,407,"BinaryOpStub_SAR_OverwriteRight_Number+Smi"
+code-creation,Stub,12,0x2b843800,383,"BinaryOpStub_BIT_AND_OverwriteRight_Int32+Smi"
+timer-event-start,"V8.ParseLazy",51907
+timer-event-end,"V8.ParseLazy",51924
+timer-event-start,"V8.CompileLazy",51930
+timer-event-start,"V8.CompileFullCode",51935
+code-creation,Stub,12,0x2b843980,88,"BinaryOpStub_SHL_OverwriteRight_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b8439e0,88,"BinaryOpStub_ADD_OverwriteRight_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",51966
+code-creation,LazyCompile,0,0x2b843a40,288,"sjcl.bitArray.partial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339b90,~
+timer-event-end,"V8.CompileLazy",51979
+code-creation,Stub,12,0x2b843b60,375,"BinaryOpStub_BIT_OR_Alloc_Int32+Smi"
+code-creation,Stub,12,0x2b843ce0,247,"BinaryOpStub_MUL_Alloc_Smi+Number"
+code-creation,Stub,12,0x2b843de0,268,"BinaryOpStub_ADD_OverwriteRight_Int32+Number"
+code-creation,Stub,2,0x2b843f00,240,"KeyedStoreElementStub"
+code-creation,KeyedStoreIC,10,0x2b844000,91,""
+code-creation,CallMiss,7,0x2b844060,178,"args_count: 3"
+code-creation,CallIC,7,0x2b844120,113,"partial"
+timer-event-start,"V8.ParseLazy",52165
+timer-event-end,"V8.ParseLazy",52210
+timer-event-start,"V8.CompileLazy",52217
+timer-event-start,"V8.CompileFullCode",52225
+code-creation,Stub,12,0x2b8441a0,88,"BinaryOpStub_SHR_OverwriteRight_Uninitialized+Uninitialized"
+code-creation,CallInitialize,7,0x2b844200,178,"args_count: 6"
+timer-event-end,"V8.CompileFullCode",52278
+code-creation,LazyCompile,0,0x2b8442c0,1057,"sjcl.mode.ccm.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:19",0x2f33a250,~
+timer-event-end,"V8.CompileLazy",52296
+timer-event-start,"V8.ParseLazy",52306
+timer-event-end,"V8.ParseLazy",52324
+timer-event-start,"V8.CompileLazy",52329
+timer-event-start,"V8.CompileFullCode",52334
+timer-event-end,"V8.CompileFullCode",52349
+code-creation,LazyCompile,0,0x2b844700,336,"sjcl.bitArray.bitLength bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339ad0,~
+timer-event-end,"V8.CompileLazy",52362
+timer-event-start,"V8.ParseLazy",52375
+timer-event-end,"V8.ParseLazy",52388
+timer-event-start,"V8.CompileLazy",52392
+timer-event-start,"V8.CompileFullCode",52398
+timer-event-end,"V8.CompileFullCode",52420
+code-creation,LazyCompile,0,0x2b844860,236,"sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339bf0,~
+timer-event-end,"V8.CompileLazy",52433
+code-creation,Stub,12,0x2b844960,264,"BinaryOpStub_DIV_Alloc_Int32+Number"
+timer-event-start,"V8.ParseLazy",52455
+tick,0x8092495,52475,0,0xff81fcd0,2,0x2b844833,0x2b84437f,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.ParseLazy",52539
+timer-event-start,"V8.CompileLazy",52558
+timer-event-start,"V8.CompileFullCode",52577
+timer-event-end,"V8.CompileFullCode",52590
+code-creation,LazyCompile,0,0x2b844a80,248,"round native math.js:193",0x4422265c,~
+timer-event-end,"V8.CompileLazy",52602
+code-creation,CallIC,7,0x2b844b80,113,"getPartial"
+code-creation,Stub,12,0x2b844c00,238,"BinaryOpStub_DIV_Alloc_Number+Number"
+code-creation,CallIC,7,0x2b844d00,113,"round"
+code-creation,Stub,12,0x2b844d80,167,"BinaryOpStub_SHR_OverwriteRight_Smi+Smi"
+code-creation,CallPreMonomorphic,7,0x2b844e40,178,"args_count: 6"
+timer-event-start,"V8.ParseLazy",52676
+timer-event-end,"V8.ParseLazy",52738
+timer-event-start,"V8.CompileLazy",52745
+timer-event-start,"V8.CompileFullCode",52753
+code-creation,Stub,12,0x2b844f00,88,"BinaryOpStub_SHL_OverwriteLeft_Uninitialized+Uninitialized"
+code-creation,Stub,12,0x2b844f60,88,"BinaryOpStub_BIT_OR_OverwriteRight_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",52818
+code-creation,LazyCompile,0,0x2b844fc0,1838,"sjcl.mode.ccm.G bsuite/kraken-once/stanford-crypto-ccm.js:20",0x2f33a310,~
+timer-event-end,"V8.CompileLazy",52833
+code-creation,Stub,13,0x2b845700,241,"CompareICStub"
+code-creation,Stub,12,0x2b845800,167,"BinaryOpStub_SHL_OverwriteLeft_Smi+Smi"
+code-creation,Stub,12,0x2b8458c0,145,"BinaryOpStub_BIT_OR_OverwriteRight_Smi+Smi"
+code-creation,Stub,12,0x2b845960,145,"BinaryOpStub_BIT_OR_OverwriteLeft_Smi+Smi"
+code-creation,Stub,12,0x2b845a00,167,"BinaryOpStub_SHL_OverwriteRight_Smi+Smi"
+timer-event-start,"V8.ParseLazy",52912
+timer-event-end,"V8.ParseLazy",52936
+timer-event-start,"V8.CompileLazy",52941
+timer-event-start,"V8.CompileFullCode",52947
+timer-event-end,"V8.CompileFullCode",52966
+code-creation,LazyCompile,0,0x2b845ac0,560,"sjcl.bitArray.concat bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339a70,~
+timer-event-end,"V8.CompileLazy",52980
+code-creation,Stub,12,0x2b845d00,399,"BinaryOpStub_BIT_OR_Alloc_Number+Smi"
+timer-event-start,"V8.ParseLazy",53013
+timer-event-end,"V8.ParseLazy",53049
+timer-event-start,"V8.CompileLazy",53055
+timer-event-start,"V8.CompileFullCode",53062
+timer-event-end,"V8.CompileFullCode",53095
+code-creation,LazyCompile,0,0x2b845ea0,1126,"sjcl.bitArray.P bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339cb0,~
+timer-event-end,"V8.CompileLazy",53110
+code-creation,Stub,13,0x2b846320,485,"CompareICStub"
+code-creation,Stub,12,0x2b846520,383,"BinaryOpStub_BIT_OR_OverwriteRight_Int32+Smi"
+code-creation,Stub,12,0x2b8466a0,383,"BinaryOpStub_SHL_OverwriteRight_Int32+Smi"
+code-creation,Stub,12,0x2b846820,407,"BinaryOpStub_BIT_OR_OverwriteRight_Number+Smi"
+timer-event-start,"V8.ParseLazy",53194
+timer-event-end,"V8.ParseLazy",53206
+timer-event-start,"V8.CompileLazy",53211
+timer-event-start,"V8.CompileFullCode",53216
+timer-event-end,"V8.CompileFullCode",53226
+code-creation,LazyCompile,0,0x2b8469c0,184,"sjcl.cipher.aes.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:6",0x2f339890,~
+timer-event-end,"V8.CompileLazy",53243
+timer-event-start,"V8.ParseLazy",53249
+timer-event-end,"V8.ParseLazy",53325
+timer-event-start,"V8.CompileLazy",53332
+timer-event-start,"V8.CompileFullCode",53343
+code-creation,Stub,12,0x2b846a80,88,"BinaryOpStub_SUB_OverwriteLeft_Uninitialized+Uninitialized"
+tick,0x8376055,53535,0,0x81bab7d,2,0x2b846a46,0x2b845312,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,2,0x2b846ae0,683,"FastCloneShallowArrayStub"
+code-creation,Stub,11,0x2b846da0,132,"UnaryOpStubMinus(None)"
+timer-event-end,"V8.CompileFullCode",53746
+code-creation,LazyCompile,0,0x2b846e40,3418,"sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7",0x2f3399b0,~
+timer-event-end,"V8.CompileLazy",53763
+code-creation,Stub,12,0x2b847ba0,375,"BinaryOpStub_BIT_XOR_Alloc_Smi+Int32"
+code-creation,Stub,12,0x2b847d20,375,"BinaryOpStub_BIT_XOR_Alloc_Int32+Smi"
+code-creation,Stub,12,0x2b847ea0,148,"BinaryOpStub_SUB_OverwriteLeft_Smi+Smi"
+code-creation,Stub,15,0x2b847f40,164,"ToBooleanStub(Smi,HeapNumber)"
+code-creation,CallMiss,7,0x2b848000,178,"args_count: 4"
+code-creation,CallIC,7,0x2b8480c0,113,"P"
+code-creation,LoadIC,5,0x2b848140,103,"undefined"
+timer-event-start,"V8.ParseLazy",54007
+timer-event-end,"V8.ParseLazy",54027
+timer-event-start,"V8.CompileLazy",54032
+timer-event-start,"V8.CompileFullCode",54038
+timer-event-end,"V8.CompileFullCode",54052
+code-creation,LazyCompile,0,0x2b8481c0,388,"sjcl.bitArray.k bsuite/kraken-once/stanford-crypto-ccm.js:11",0x2f339d10,~
+timer-event-end,"V8.CompileLazy",54065
+code-creation,CallIC,7,0x2b848360,132,"H"
+code-creation,LoadIC,5,0x2b848400,93,"a"
+code-creation,Stub,2,0x2b848460,95,"h"
+code-creation,LoadIC,5,0x2b8484c0,93,"h"
+code-creation,CallIC,7,0x2b848520,132,"encrypt"
+code-creation,Stub,12,0x2b8485c0,371,"BinaryOpStub_BIT_XOR_Alloc_Int32+Number"
+timer-event-start,"V8.ParseLazy",54281
+timer-event-end,"V8.ParseLazy",54332
+timer-event-start,"V8.CompileLazy",54339
+timer-event-start,"V8.CompileFullCode",54347
+code-creation,Stub,2,0x2b848740,663,"FastCloneShallowArrayStub"
+timer-event-end,"V8.CompileFullCode",54560
+code-creation,LazyCompile,0,0x2b8489e0,1221,"sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21",0x2f33a370,~
+timer-event-end,"V8.CompileLazy",54577
+tick,0x82f2dd2,54590,0,0xff81f67c,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,12,0x2b848ec0,371,"BinaryOpStub_BIT_XOR_Alloc_Number+Int32"
+timer-event-start,"V8.ParseLazy",54663
+timer-event-end,"V8.ParseLazy",54685
+timer-event-start,"V8.CompileLazy",54691
+timer-event-start,"V8.CompileFullCode",54697
+code-creation,Stub,12,0x2b849040,88,"BinaryOpStub_SUB_OverwriteRight_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",54724
+code-creation,LazyCompile,0,0x2b8490a0,392,"sjcl.bitArray.bitSlice bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339a10,~
+timer-event-end,"V8.CompileLazy",54737
+code-creation,Stub,12,0x2b849240,148,"BinaryOpStub_SUB_OverwriteRight_Smi+Smi"
+code-creation,Stub,13,0x2b8492e0,494,"CompareICStub"
+code-creation,CallMegamorphic,7,0x2b8494e0,685,"args_count: 2"
+code-creation,Stub,12,0x2b8497a0,246,"BinaryOpStub_ADD_Alloc_Number+Smi"
+code-creation,LoadPolymorphicIC,5,0x2b8498a0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b849920,105,"length"
+timer-event-start,"V8.ParseLazy",54933
+timer-event-end,"V8.ParseLazy",54956
+timer-event-start,"V8.CompileLazy",54962
+timer-event-start,"V8.CompileFullCode",54968
+timer-event-end,"V8.CompileFullCode",54989
+code-creation,LazyCompile,0,0x2b8499a0,585,"sjcl.bitArray.equal bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339c50,~
+timer-event-end,"V8.CompileLazy",55003
+code-creation,Stub,12,0x2b849c00,395,"BinaryOpStub_BIT_XOR_Alloc_Number+Number"
+code-creation,Stub,12,0x2b849da0,133,"BinaryOpStub_ADD_Alloc_String+Smi"
+code-creation,Stub,12,0x2b849e40,133,"BinaryOpStub_ADD_OverwriteLeft_String+Smi"
+timer-event-start,"V8.ParseLazy",55131
+timer-event-end,"V8.ParseLazy",55149
+timer-event-start,"V8.CompileLazy",55155
+timer-event-start,"V8.CompileFullCode",55160
+timer-event-end,"V8.CompileFullCode",55177
+code-creation,LazyCompile,0,0x2b849ee0,292,"sjcl.test.TestCase.require bsuite/kraken-once/stanford-crypto-ccm.js:131",0x2f33b390,~
+timer-event-end,"V8.CompileLazy",55190
+timer-event-start,"V8.ParseLazy",55198
+timer-event-end,"V8.ParseLazy",55206
+timer-event-start,"V8.CompileLazy",55211
+timer-event-start,"V8.CompileFullCode",55216
+timer-event-end,"V8.CompileFullCode",55228
+code-creation,LazyCompile,0,0x2b84a020,208,"sjcl.test.TestCase.pass bsuite/kraken-once/stanford-crypto-ccm.js:110",0x2f33b270,~
+timer-event-end,"V8.CompileLazy",55240
+code-creation,StoreIC,9,0x2b84a100,103,"passes"
+timer-event-start,"V8.ParseLazy",55261
+timer-event-end,"V8.ParseLazy",55307
+timer-event-start,"V8.CompileLazy",55313
+timer-event-start,"V8.CompileFullCode",55321
+code-creation,Stub,12,0x2b84a180,88,"BinaryOpStub_DIV_OverwriteLeft_Uninitialized+Uninitialized"
+timer-event-end,"V8.CompileFullCode",55365
+code-creation,LazyCompile,0,0x2b84a1e0,1229,"sjcl.mode.ccm.decrypt bsuite/kraken-once/stanford-crypto-ccm.js:19",0x2f33a2b0,~
+timer-event-end,"V8.CompileLazy",55379
+code-creation,CallIC,7,0x2b84a6c0,136,"slice"
+code-creation,CallIC,7,0x2b84a760,128,"P"
+code-creation,LoadPolymorphicIC,5,0x2b84a7e0,105,"length"
+code-creation,KeyedLoadPolymorphicIC,6,0x2b84a860,105,""
+code-creation,CallIC,7,0x2b84a8e0,656,"push"
+code-creation,Stub,12,0x2b84ab80,407,"BinaryOpStub_SHL_OverwriteRight_Number+Smi"
+code-creation,LoadPolymorphicIC,5,0x2b84ad20,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b84ada0,105,"length"
+code-creation,CallIC,7,0x2b84ae20,136,"slice"
+code-creation,Stub,12,0x2b84aec0,196,"BinaryOpStub_DIV_OverwriteLeft_Smi+Smi"
+code-creation,Stub,2,0x2b84afa0,70,"k"
+code-creation,LoadIC,5,0x2b84b000,93,"k"
+code-creation,CallIC,7,0x2b84b060,113,"bitLength"
+code-creation,CallIC,7,0x2b84b0e0,128,"partial"
+code-creation,CallIC,7,0x2b84b160,113,"concat"
+code-creation,LoadPolymorphicIC,5,0x2b84b1e0,105,"length"
+code-creation,CallIC,7,0x2b84b260,136,"concat"
+code-creation,CallIC,7,0x2b84b300,113,"bitSlice"
+code-creation,CallIC,7,0x2b84b380,136,"concat"
+tick,0x8118ca4,55654,0,0x90ec418,0,0x2b848b2e,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,CallIC,7,0x2b84b420,136,"slice"
+code-creation,StoreIC,9,0x2b84b4c0,138,"tag"
+code-creation,StoreIC,9,0x2b84b560,138,"data"
+code-creation,Stub,12,0x2b84b600,214,"BinaryOpStub_SHL_OverwriteRight_Smi+Smi"
+code-creation,LoadPolymorphicIC,5,0x2b84b6e0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b84b760,105,"length"
+code-creation,CallMiss,7,0x2b84b7e0,178,"args_count: 0"
+code-creation,CallIC,7,0x2b84b8a0,132,"pass"
+code-creation,Stub,2,0x2b84b940,76,"LoadFieldStub"
+code-creation,LoadIC,5,0x2b84b9a0,93,"passes"
+code-creation,LoadIC,5,0x2b84ba00,93,"key"
+code-creation,LoadIC,5,0x2b84ba60,93,"cipher"
+code-creation,Stub,2,0x2b84bac0,70,"aes"
+code-creation,LoadIC,5,0x2b84bb20,93,"aes"
+code-creation,CallIC,7,0x2b84bb80,113,"toBits"
+code-creation,Stub,2,0x2b84bc00,95,"h"
+code-creation,LoadIC,5,0x2b84bc60,93,"h"
+code-creation,StoreIC,9,0x2b84bcc0,246,"a"
+code-creation,LoadIC,5,0x2b84bdc0,93,"iv"
+code-creation,Stub,2,0x2b84be20,76,"LoadFieldStub"
+code-creation,LoadIC,5,0x2b84be80,93,"adata"
+code-creation,LoadIC,5,0x2b84bee0,93,"pt"
+code-creation,Stub,2,0x2b84bf40,76,"LoadFieldStub"
+code-creation,LoadIC,5,0x2b84bfa0,93,"ct"
+code-creation,LoadIC,5,0x2b84c000,93,"tag"
+code-creation,LoadIC,5,0x2b84c060,93,"mode"
+code-creation,LoadIC,5,0x2b84c0c0,93,"ccm"
+code-creation,CallMiss,7,0x2b84c120,178,"args_count: 5"
+code-creation,CallIC,7,0x2b84c1e0,113,"encrypt"
+code-creation,CallMiss,7,0x2b84c260,178,"args_count: 6"
+code-creation,CallIC,7,0x2b84c320,113,"G"
+code-creation,CallIC,7,0x2b84c3a0,193,"pop"
+code-creation,CallIC,7,0x2b84c480,113,"I"
+code-creation,LoadIC,5,0x2b84c500,93,"data"
+code-creation,LoadIC,5,0x2b84c560,93,"tag"
+code-creation,CallIC,7,0x2b84c5c0,113,"equal"
+code-creation,CallIC,7,0x2b84c640,132,"require"
+code-creation,CallIC,7,0x2b84c6e0,113,"decrypt"
+code-creation,CallIC,7,0x2b84c760,128,"bitSlice"
+code-creation,CallMegamorphic,7,0x2b84c7e0,685,"args_count: 0"
+tick,0xf776d430,56728,0,0x90ec418,0,0x2b84a349,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,15,0x2b84caa0,172,"ToBooleanStub(Undefined,Smi,HeapNumber)"
+code-creation,CallIC,7,0x2b84cb60,193,"pop"
+code-creation,Stub,2,0x2b84cc40,725,"ElementsTransitionAndStoreStub"
+code-creation,Stub,2,0x2b84cf20,1800,"RecordWriteStub"
+code-creation,Stub,2,0x2b84d640,578,"KeyedStoreElementStub"
+code-creation,KeyedStorePolymorphicIC,10,0x2b84d8a0,107,""
+code-creation,KeyedStorePolymorphicIC,10,0x2b84d8a0,107,"args_count: 0"
+timer-event-start,"V8.RecompileSynchronous",57494
+timer-event-start,"V8.ParseLazy",57505
+timer-event-end,"V8.ParseLazy",57586
+code-creation,LazyCompile,0,0x2b84d920,3418,"sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7",0x2f3399b0,~
+tick,0x8092457,57778,0,0x19e,2,0x2b846a46,0x2b8455f6,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.RecompileSynchronous",57904
+timer-event-start,"V8.RecompileConcurrent",57929
+code-creation,Stub,2,0x2b84e680,559,"ElementsTransitionAndStoreStub"
+code-creation,KeyedStorePolymorphicIC,10,0x2b84e8c0,107,""
+code-creation,KeyedStorePolymorphicIC,10,0x2b84e8c0,107,"args_count: 0"
+code-creation,LoadPolymorphicIC,5,0x2b84e940,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b84e9c0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b84ea40,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b84eac0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b84eb40,105,"length"
+timer-event-start,"V8.RecompileSynchronous",58447
+timer-event-start,"V8.ParseLazy",58457
+timer-event-end,"V8.ParseLazy",58501
+code-creation,LazyCompile,0,0x2b84ebc0,1096,"parseInt native v8natives.js:130",0x4421ec1c,~
+timer-event-end,"V8.RecompileSynchronous",58637
+timer-event-start,"V8.GCScavenger",58779
+timer-event-start,"V8.External",58787
+timer-event-end,"V8.External",58791
+tick,0x810f40c,58868,0,0x0,1
+timer-event-start,"V8.External",59191
+timer-event-end,"V8.External",59200
+timer-event-end,"V8.GCScavenger",59205
+timer-event-end,"V8.RecompileConcurrent",59219
+timer-event-start,"V8.RecompileConcurrent",59254
+timer-event-start,"V8.RecompileSynchronous",59271
+code-creation,LazyCompile,1,0x2b84f020,4592,"sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7",0x2f3399b0,*
+timer-event-end,"V8.RecompileSynchronous",59549
+timer-event-end,"V8.RecompileConcurrent",59567
+timer-event-start,"V8.RecompileSynchronous",59590
+code-creation,LazyCompile,1,0x2b850220,1662,"parseInt native v8natives.js:130",0x4421ec1c,*
+timer-event-end,"V8.RecompileSynchronous",59672
+timer-event-start,"V8.RecompileSynchronous",59682
+timer-event-start,"V8.ParseLazy",59687
+timer-event-end,"V8.ParseLazy",59701
+code-creation,LazyCompile,0,0x2b8508a0,236,"sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339bf0,~
+timer-event-end,"V8.RecompileSynchronous",59750
+timer-event-start,"V8.RecompileConcurrent",59776
+timer-event-start,"V8.RecompileSynchronous",59811
+timer-event-start,"V8.ParseLazy",59820
+timer-event-end,"V8.ParseLazy",59838
+code-creation,LazyCompile,0,0x2b8509a0,388,"sjcl.bitArray.k bsuite/kraken-once/stanford-crypto-ccm.js:11",0x2f339d10,~
+timer-event-end,"V8.RecompileConcurrent",59909
+timer-event-start,"V8.RecompileConcurrent",59926
+timer-event-end,"V8.RecompileSynchronous",59933
+timer-event-start,"V8.RecompileSynchronous",59950
+tick,0xf776d430,59966,0,0x90ec418,2,0x2b8455e6,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,LazyCompile,1,0x2b850b40,536,"sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339bf0,*
+timer-event-end,"V8.RecompileSynchronous",60077
+timer-event-start,"V8.RecompileSynchronous",60141
+timer-event-start,"V8.ParseLazy",60149
+timer-event-end,"V8.RecompileConcurrent",60177
+timer-event-end,"V8.ParseLazy",60195
+code-creation,LazyCompile,0,0x2b850d60,960,"substr native string.js:749",0x44216608,~
+timer-event-end,"V8.RecompileSynchronous",60329
+timer-event-start,"V8.RecompileConcurrent",60356
+code-deopt,60375,544
+timer-event-start,"V8.RecompileSynchronous",60409
+code-creation,LazyCompile,1,0x2b851120,1534,"sjcl.bitArray.k bsuite/kraken-once/stanford-crypto-ccm.js:11",0x2f339d10,*
+timer-event-end,"V8.RecompileSynchronous",60474
+code-creation,LoadPolymorphicIC,5,0x2b851720,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b8517a0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b851820,105,"length"
+timer-event-end,"V8.RecompileConcurrent",60691
+timer-event-start,"V8.RecompileSynchronous",60716
+code-creation,LazyCompile,1,0x2b8518a0,1792,"substr native string.js:749",0x44216608,*
+timer-event-end,"V8.RecompileSynchronous",60803
+tick,0x2b849c4b,60997,0,0x2b849afa,0,0x2b83a0df,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.RecompileSynchronous",61042
+timer-event-start,"V8.ParseLazy",61054
+timer-event-end,"V8.ParseLazy",61066
+code-creation,LazyCompile,0,0x2b851fa0,184,"sjcl.cipher.aes.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:6",0x2f339890,~
+timer-event-end,"V8.RecompileSynchronous",61112
+timer-event-start,"V8.RecompileConcurrent",61139
+timer-event-start,"V8.RecompileSynchronous",61159
+timer-event-start,"V8.ParseLazy",61168
+timer-event-end,"V8.ParseLazy",61186
+timer-event-end,"V8.RecompileConcurrent",61201
+code-creation,LazyCompile,0,0x2b852060,336,"sjcl.bitArray.bitLength bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339ad0,~
+timer-event-start,"V8.ParseLazy",61249
+timer-event-end,"V8.ParseLazy",61264
+timer-event-end,"V8.RecompileSynchronous",61290
+timer-event-start,"V8.RecompileSynchronous",61309
+timer-event-start,"V8.RecompileConcurrent",61317
+code-creation,LazyCompile,1,0x2b8521c0,196,"sjcl.cipher.aes.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:6",0x2f339890,*
+timer-event-end,"V8.RecompileSynchronous",61348
+timer-event-start,"V8.RecompileSynchronous",61374
+timer-event-start,"V8.ParseLazy",61381
+timer-event-end,"V8.ParseLazy",61394
+timer-event-end,"V8.RecompileSynchronous",61418
+timer-event-start,"V8.RecompileSynchronous",61424
+timer-event-start,"V8.ParseLazy",61429
+timer-event-end,"V8.ParseLazy",61442
+code-creation,LazyCompile,0,0x2b8522a0,248,"round native math.js:193",0x4422265c,~
+timer-event-end,"V8.RecompileConcurrent",61471
+timer-event-start,"V8.RecompileConcurrent",61480
+timer-event-end,"V8.RecompileSynchronous",61487
+timer-event-start,"V8.RecompileSynchronous",61512
+timer-event-end,"V8.RecompileConcurrent",61536
+timer-event-start,"V8.RecompileConcurrent",61543
+code-creation,LazyCompile,1,0x2b8523a0,888,"sjcl.bitArray.bitLength bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339ad0,*
+timer-event-end,"V8.RecompileSynchronous",61565
+timer-event-start,"V8.RecompileSynchronous",61570
+code-creation,LazyCompile,1,0x2b852720,536,"sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339bf0,*
+timer-event-end,"V8.RecompileSynchronous",61599
+timer-event-start,"V8.RecompileSynchronous",61606
+timer-event-end,"V8.RecompileConcurrent",61610
+code-creation,LazyCompile,1,0x2b852940,242,"round native math.js:193",0x4422265c,*
+timer-event-end,"V8.RecompileSynchronous",61629
+code-creation,LoadPolymorphicIC,5,0x2b852a40,105,"length"
+timer-event-start,"V8.RecompileSynchronous",61726
+timer-event-start,"V8.ParseLazy",61731
+timer-event-end,"V8.ParseLazy",61757
+code-creation,LazyCompile,0,0x2b852ac0,536,"sjcl.bitArray.clamp bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339b30,~
+timer-event-start,"V8.ParseLazy",61847
+timer-event-end,"V8.ParseLazy",61865
+code-creation,Function,0,0x2b852ce0,288,"sjcl.bitArray.partial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339b90,~
+timer-event-end,"V8.RecompileSynchronous",61926
+timer-event-start,"V8.RecompileSynchronous",61933
+timer-event-start,"V8.ParseLazy",61939
+timer-event-end,"V8.ParseLazy",61953
+timer-event-start,"V8.RecompileConcurrent",61961
+code-creation,LazyCompile,0,0x2b852e00,248,"ceil native math.js:81",0x442222fc,~
+timer-event-end,"V8.RecompileSynchronous",62019
+tick,0x811e913,62060,0,0xf773bff4,2,0x2b83dfae,0x2b8445e0,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-deopt,62122,544
+timer-event-end,"V8.RecompileConcurrent",62287
+timer-event-start,"V8.RecompileConcurrent",62297
+timer-event-start,"V8.RecompileSynchronous",62309
+timer-event-end,"V8.RecompileConcurrent",62353
+code-creation,Stub,2,0x2b852f00,1785,"RecordWriteStub"
+code-creation,LazyCompile,1,0x2b853600,1514,"sjcl.bitArray.clamp bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339b30,*
+timer-event-end,"V8.RecompileSynchronous",62415
+timer-event-start,"V8.RecompileSynchronous",62421
+code-creation,LazyCompile,1,0x2b853c00,242,"ceil native math.js:81",0x442222fc,*
+timer-event-end,"V8.RecompileSynchronous",62445
+code-creation,LoadPolymorphicIC,5,0x2b853d00,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b853d80,105,"length"
+timer-event-start,"V8.RecompileSynchronous",63048
+timer-event-start,"V8.ParseLazy",63067
+timer-event-end,"V8.ParseLazy",63085
+timer-event-end,"V8.RecompileSynchronous",63117
+tick,0xf776d430,63132,0,0x90ec418,0,0x2b8462cc,0x2b845cd7,0x2b848b0a,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.RecompileConcurrent",63203
+timer-event-end,"V8.RecompileConcurrent",63315
+timer-event-start,"V8.RecompileSynchronous",63329
+code-creation,LazyCompile,1,0x2b853e00,644,"sjcl.bitArray.partial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339b90,*
+timer-event-end,"V8.RecompileSynchronous",63379
+timer-event-start,"V8.RecompileSynchronous",63494
+timer-event-start,"V8.ParseLazy",63503
+timer-event-end,"V8.ParseLazy",63517
+timer-event-end,"V8.RecompileSynchronous",63544
+timer-event-start,"V8.RecompileConcurrent",63572
+timer-event-start,"V8.RecompileSynchronous",63641
+timer-event-start,"V8.ParseLazy",63651
+timer-event-end,"V8.RecompileConcurrent",63664
+timer-event-end,"V8.ParseLazy",63678
+code-creation,LazyCompile,0,0x2b8540a0,560,"sjcl.bitArray.concat bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339a70,~
+timer-event-start,"V8.ParseLazy",63757
+timer-event-end,"V8.ParseLazy",63772
+timer-event-start,"V8.ParseLazy",63808
+timer-event-end,"V8.ParseLazy",63848
+code-creation,Function,0,0x2b8542e0,1126,"sjcl.bitArray.P bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339cb0,~
+timer-event-start,"V8.ParseLazy",63977
+timer-event-end,"V8.ParseLazy",63994
+timer-event-start,"V8.ParseLazy",64023
+timer-event-end,"V8.ParseLazy",64039
+timer-event-end,"V8.RecompileSynchronous",64072
+timer-event-start,"V8.RecompileSynchronous",64079
+timer-event-start,"V8.RecompileConcurrent",64099
+code-creation,LazyCompile,1,0x2b854760,536,"sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339bf0,*
+timer-event-end,"V8.RecompileSynchronous",64194
+tick,0xf776d430,64209,0,0x4059,2,0x2b845c29,0x2b848b0a,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-deopt,64271,544
+timer-event-start,"V8.RecompileSynchronous",64467
+timer-event-start,"V8.ParseLazy",64476
+timer-event-end,"V8.ParseLazy",64542
+code-creation,LazyCompile,0,0x2b854980,3002,"sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4",0x2f339830,~
+timer-event-end,"V8.RecompileSynchronous",64818
+timer-event-end,"V8.RecompileConcurrent",64871
+timer-event-start,"V8.RecompileConcurrent",64883
+timer-event-start,"V8.RecompileSynchronous",64890
+code-creation,LazyCompile,1,0x2b855540,3364,"sjcl.bitArray.concat bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339a70,*
+timer-event-end,"V8.RecompileSynchronous",65047
+code-deopt,65079,4608
+code-creation,LoadPolymorphicIC,5,0x2b856280,105,"length"
+tick,0x2b8472a7,65264,0,0x52f0b0e1,0,0x2b852252,0x2b848c4b,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,LoadPolymorphicIC,5,0x2b856300,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b856380,105,"length"
+timer-event-start,"V8.GCScavenger",65757
+timer-event-start,"V8.External",65766
+timer-event-end,"V8.External",65770
+timer-event-start,"V8.External",66154
+timer-event-end,"V8.External",66162
+timer-event-end,"V8.GCScavenger",66166
+timer-event-end,"V8.RecompileConcurrent",66181
+timer-event-start,"V8.RecompileSynchronous",66254
+tick,0x81c09b0,66332,0,0x91632e8,2,0x2b839e65,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,2,0x2b856400,1785,"RecordWriteStub"
+code-creation,Stub,2,0x2b856b00,1785,"RecordWriteStub"
+code-creation,Stub,2,0x2b857200,783,"RecordWriteStub"
+code-creation,Stub,2,0x2b857520,1772,"RecordWriteStub"
+code-creation,Stub,2,0x2b857c20,1785,"RecordWriteStub"
+code-creation,LazyCompile,1,0x2b858320,4397,"sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4",0x2f339830,*
+timer-event-end,"V8.RecompileSynchronous",66661
+timer-event-start,"V8.RecompileSynchronous",66788
+timer-event-start,"V8.ParseLazy",66797
+timer-event-end,"V8.ParseLazy",66878
+timer-event-end,"V8.RecompileSynchronous",67067
+timer-event-start,"V8.RecompileConcurrent",67094
+tick,0x2b8473da,67403,0,0x2f392d35,0,0x2b852252,0x2b8455f6,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.RecompileConcurrent",68064
+timer-event-start,"V8.RecompileSynchronous",68081
+code-creation,LazyCompile,1,0x2b859460,4752,"sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7",0x2f3399b0,*
+timer-event-end,"V8.RecompileSynchronous",68294
+code-creation,LoadPolymorphicIC,5,0x2b85a700,105,"length"
+tick,0x2b85055a,68462,0,0x527b30d9,0,0x2b83a782,0x2b839f55,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",69250
+timer-event-start,"V8.External",69260
+timer-event-end,"V8.External",69264
+timer-event-start,"V8.External",69314
+timer-event-end,"V8.External",69320
+timer-event-end,"V8.GCScavenger",69324
+tick,0x82ec00c,69525,0,0xff81fcf4,0,0x2b85056f,0x2b83a782,0x2b839fd2,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,LoadPolymorphicIC,5,0x2b85a780,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b85a800,117,"length"
+code-creation,LoadPolymorphicIC,5,0x2b85a880,117,"length"
+code-creation,LoadPolymorphicIC,5,0x2b85a900,117,"length"
+code-creation,LoadPolymorphicIC,5,0x2b85a980,117,"length"
+code-creation,LoadPolymorphicIC,5,0x2b85aa00,117,"length"
+tick,0x81168ba,70588,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839f04,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.RecompileSynchronous",71064
+timer-event-start,"V8.ParseLazy",71076
+timer-event-end,"V8.ParseLazy",71094
+code-creation,LazyCompile,0,0x2b85aa80,292,"sjcl.test.TestCase.require bsuite/kraken-once/stanford-crypto-ccm.js:131",0x2f33b390,~
+timer-event-start,"V8.ParseLazy",71142
+timer-event-end,"V8.ParseLazy",71152
+code-creation,Function,0,0x2b85abc0,208,"sjcl.test.TestCase.pass bsuite/kraken-once/stanford-crypto-ccm.js:110",0x2f33b270,~
+timer-event-end,"V8.RecompileSynchronous",71195
+timer-event-start,"V8.RecompileSynchronous",71204
+timer-event-start,"V8.ParseLazy",71210
+timer-event-start,"V8.RecompileConcurrent",71216
+timer-event-end,"V8.ParseLazy",71228
+timer-event-end,"V8.RecompileSynchronous",71254
+timer-event-end,"V8.RecompileConcurrent",71304
+timer-event-start,"V8.RecompileConcurrent",71312
+timer-event-start,"V8.RecompileSynchronous",71316
+code-creation,LazyCompile,1,0x2b85aca0,322,"sjcl.test.TestCase.require bsuite/kraken-once/stanford-crypto-ccm.js:131",0x2f33b390,*
+timer-event-end,"V8.RecompileSynchronous",71361
+timer-event-start,"V8.RecompileSynchronous",71367
+timer-event-end,"V8.RecompileConcurrent",71373
+code-creation,LazyCompile,1,0x2b85ae00,198,"sjcl.test.TestCase.pass bsuite/kraken-once/stanford-crypto-ccm.js:110",0x2f33b270,*
+timer-event-end,"V8.RecompileSynchronous",71390
+tick,0x2b83c3b1,71653,0,0xffffff6b,0,0x2b83bd35,0x2b83a725,0x2b839f55,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",72513
+timer-event-start,"V8.External",72524
+timer-event-end,"V8.External",72530
+timer-event-start,"V8.External",72583
+timer-event-end,"V8.External",72591
+timer-event-end,"V8.GCScavenger",72596
+tick,0x8116878,72711,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839f04,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,CallIC,7,0x2b85aee0,136,"concat"
+timer-event-start,"V8.RecompileSynchronous",72947
+timer-event-start,"V8.ParseLazy",72956
+timer-event-end,"V8.ParseLazy",72977
+code-creation,LazyCompile,0,0x2b85af80,392,"sjcl.bitArray.bitSlice bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339a10,~
+timer-event-start,"V8.ParseLazy",73044
+timer-event-end,"V8.ParseLazy",73083
+timer-event-start,"V8.ParseLazy",73169
+timer-event-end,"V8.ParseLazy",73185
+timer-event-start,"V8.ParseLazy",73217
+timer-event-end,"V8.ParseLazy",73232
+timer-event-start,"V8.ParseLazy",73263
+timer-event-end,"V8.ParseLazy",73289
+timer-event-start,"V8.ParseLazy",73339
+timer-event-end,"V8.ParseLazy",73356
+timer-event-end,"V8.RecompileSynchronous",73393
+timer-event-start,"V8.RecompileConcurrent",73422
+tick,0x82eea09,73786,0,0x90de9b0,0,0x2b85056f,0x2b83a782,0x2b839e4e,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.ParseLazy",74228
+timer-event-end,"V8.RecompileConcurrent",74243
+timer-event-end,"V8.ParseLazy",74259
+timer-event-start,"V8.CompileLazy",74267
+timer-event-start,"V8.CompileFullCode",74273
+timer-event-end,"V8.CompileFullCode",74291
+code-creation,LazyCompile,0,0x2b85b120,332," bsuite/kraken-once/stanford-crypto-ccm.js:55",0x2f33db50,~
+timer-event-end,"V8.CompileLazy",74304
+timer-event-start,"V8.RecompileSynchronous",74351
+code-creation,LazyCompile,1,0x2b85b280,4132,"sjcl.bitArray.bitSlice bsuite/kraken-once/stanford-crypto-ccm.js:9",0x2f339a10,*
+timer-event-end,"V8.RecompileSynchronous",74533
+tick,0x2b85a2b8,74843,0,0xf5,0,0x2b852252,0x2b8454f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b84a934,75905,0,0x2b855c42,0,0x2b8446a3,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",76182
+timer-event-start,"V8.External",76193
+timer-event-end,"V8.External",76197
+timer-event-start,"V8.External",76251
+timer-event-end,"V8.External",76258
+timer-event-end,"V8.GCScavenger",76262
+tick,0x81168ba,76974,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x81168ba,78047,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839f55,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.RecompileSynchronous",78403
+timer-event-start,"V8.ParseLazy",78415
+timer-event-end,"V8.ParseLazy",78444
+code-creation,LazyCompile,0,0x2b85c2c0,717,"sjcl.codec.hex.toBits bsuite/kraken-once/stanford-crypto-ccm.js:13",0x2f339e90,~
+timer-event-start,"V8.ParseLazy",78530
+timer-event-end,"V8.ParseLazy",78559
+timer-event-start,"V8.ParseLazy",78614
+timer-event-end,"V8.ParseLazy",78632
+timer-event-end,"V8.RecompileSynchronous",78666
+timer-event-start,"V8.RecompileConcurrent",78695
+timer-event-end,"V8.RecompileConcurrent",79073
+timer-event-start,"V8.RecompileSynchronous",79089
+tick,0x2b859d1c,79108,0,0x6,0,0x2b852252,0x2b8455f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,2,0x2b85c5a0,1421,"StringAddStub"
+code-creation,LazyCompile,1,0x2b85cb40,2261,"sjcl.codec.hex.toBits bsuite/kraken-once/stanford-crypto-ccm.js:13",0x2f339e90,*
+timer-event-end,"V8.RecompileSynchronous",79251
+timer-event-start,"V8.GCScavenger",79473
+timer-event-start,"V8.External",79482
+timer-event-end,"V8.External",79486
+timer-event-start,"V8.External",79534
+timer-event-end,"V8.External",79540
+timer-event-end,"V8.GCScavenger",79544
+tick,0x2b85b446,80176,0,0x256b20d1,0,0x2b848b8c,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x80c4222,81235,0,0x90d5060,0,0x2b85b578,0x2b84a349,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",82255
+timer-event-start,"V8.External",82266
+timer-event-end,"V8.External",82270
+tick,0x2b858631,82290,0,0x2b80a276,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.External",82339
+timer-event-end,"V8.External",82349
+timer-event-end,"V8.GCScavenger",82353
+tick,0x2b82f581,83363,0,0x2b84539a,0,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x808cf8f,84440,0,0x90dabb0,0,0x2b85599a,0x2b845482,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",85035
+timer-event-start,"V8.External",85046
+timer-event-end,"V8.External",85050
+timer-event-start,"V8.External",85093
+timer-event-end,"V8.External",85099
+timer-event-end,"V8.GCScavenger",85103
+tick,0x2b829c56,85495,0,0x3e60ce29,0,0x2b852252,0x2b8454f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x808b74f,86567,0,0x2f308081,0,0x2b8537a0,0x2b8456a8,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b85d04c,87632,0,0x2b839f55,0,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",87755
+timer-event-start,"V8.External",87766
+timer-event-end,"V8.External",87770
+timer-event-start,"V8.External",87822
+timer-event-end,"V8.External",87829
+timer-event-end,"V8.GCScavenger",87833
+timer-event-start,"V8.RecompileSynchronous",88294
+timer-event-start,"V8.ParseLazy",88303
+timer-event-end,"V8.ParseLazy",88361
+code-creation,LazyCompile,0,0x2b85d420,1221,"sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21",0x2f33a370,~
+timer-event-start,"V8.ParseLazy",88473
+timer-event-end,"V8.ParseLazy",88492
+timer-event-start,"V8.ParseLazy",88532
+timer-event-end,"V8.ParseLazy",88545
+timer-event-start,"V8.ParseLazy",88572
+timer-event-end,"V8.ParseLazy",88588
+timer-event-start,"V8.ParseLazy",88612
+timer-event-end,"V8.ParseLazy",88645
+timer-event-start,"V8.ParseLazy",88688
+timer-event-end,"V8.ParseLazy",88714
+tick,0x81fc61b,88727,0,0xff81ebbc,2,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.ParseLazy",88792
+timer-event-end,"V8.ParseLazy",88867
+timer-event-start,"V8.ParseLazy",88951
+timer-event-end,"V8.ParseLazy",88967
+timer-event-start,"V8.ParseLazy",88996
+timer-event-end,"V8.ParseLazy",89012
+timer-event-end,"V8.RecompileSynchronous",89134
+timer-event-start,"V8.RecompileConcurrent",89160
+timer-event-start,"V8.RecompileSynchronous",89215
+timer-event-start,"V8.ParseLazy",89224
+timer-event-end,"V8.ParseLazy",89245
+code-creation,LazyCompile,0,0x2b85d900,585,"sjcl.bitArray.equal bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339c50,~
+timer-event-start,"V8.ParseLazy",89309
+timer-event-end,"V8.ParseLazy",89326
+timer-event-start,"V8.ParseLazy",89356
+timer-event-end,"V8.ParseLazy",89369
+timer-event-start,"V8.ParseLazy",89391
+timer-event-end,"V8.ParseLazy",89406
+timer-event-start,"V8.ParseLazy",89433
+timer-event-end,"V8.ParseLazy",89445
+timer-event-end,"V8.RecompileSynchronous",89485
+timer-event-start,"V8.RecompileSynchronous",89730
+timer-event-start,"V8.ParseLazy",89740
+tick,0x81168ba,89761,0,0x90d5060,0,0x2b85056f,0x2b85cd2d,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.ParseLazy",89805
+code-creation,LazyCompile,0,0x2b85db60,1838,"sjcl.mode.ccm.G bsuite/kraken-once/stanford-crypto-ccm.js:20",0x2f33a310,~
+timer-event-start,"V8.ParseLazy",89969
+timer-event-end,"V8.ParseLazy",89990
+timer-event-start,"V8.ParseLazy",90016
+timer-event-end,"V8.ParseLazy",90042
+timer-event-start,"V8.ParseLazy",90084
+timer-event-end,"V8.ParseLazy",90098
+timer-event-start,"V8.ParseLazy",90129
+timer-event-end,"V8.ParseLazy",90170
+timer-event-start,"V8.ParseLazy",90271
+timer-event-end,"V8.ParseLazy",90286
+timer-event-start,"V8.ParseLazy",90326
+timer-event-end,"V8.ParseLazy",90344
+timer-event-end,"V8.RecompileSynchronous",90480
+tick,0x2b8596f9,90829,0,0x8,0,0x2b852252,0x2b8454f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.RecompileConcurrent",91133
+timer-event-start,"V8.RecompileConcurrent",91145
+timer-event-start,"V8.RecompileSynchronous",91197
+code-creation,Stub,2,0x2b85e2a0,1800,"RecordWriteStub"
+code-creation,Stub,2,0x2b85e9c0,1805,"RecordWriteStub"
+code-creation,Stub,2,0x2b85f0e0,1785,"RecordWriteStub"
+code-creation,Stub,2,0x2b85f7e0,1797,"RecordWriteStub"
+timer-event-end,"V8.RecompileConcurrent",91529
+timer-event-start,"V8.RecompileConcurrent",91540
+code-creation,Stub,2,0x2b85ff00,1789,"RecordWriteStub"
+code-creation,Stub,2,0x2b860600,1805,"RecordWriteStub"
+code-creation,LazyCompile,1,0x2b860d20,9288,"sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21",0x2f33a370,*
+timer-event-end,"V8.RecompileSynchronous",91729
+timer-event-start,"V8.RecompileSynchronous",91735
+code-creation,LazyCompile,1,0x2b863180,2119,"sjcl.bitArray.equal bsuite/kraken-once/stanford-crypto-ccm.js:10",0x2f339c50,*
+timer-event-end,"V8.RecompileSynchronous",91833
+tick,0xf74c34b6,91883,0,0x90ebc51,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-deopt,91990,9312
+code-creation,LoadPolymorphicIC,5,0x2b8639e0,105,"length"
+tick,0x2b859a99,92950,0,0x4,0,0x2b852252,0x2b8455f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",93234
+timer-event-start,"V8.External",93245
+timer-event-end,"V8.External",93249
+timer-event-end,"V8.RecompileConcurrent",93304
+timer-event-start,"V8.External",93319
+timer-event-end,"V8.External",93327
+timer-event-end,"V8.GCScavenger",93331
+timer-event-start,"V8.RecompileSynchronous",93353
+code-creation,Stub,2,0x2b863a60,1800,"RecordWriteStub"
+code-creation,Stub,2,0x2b864180,1780,"RecordWriteStub"
+code-creation,LazyCompile,1,0x2b864880,7990,"sjcl.mode.ccm.G bsuite/kraken-once/stanford-crypto-ccm.js:20",0x2f33a310,*
+timer-event-end,"V8.RecompileSynchronous",93732
+code-creation,LoadPolymorphicIC,5,0x2b8667c0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b866840,105,"length"
+code-creation,LoadPolymorphicIC,5,0x2b8668c0,105,"length"
+tick,0x2b848cbd,94006,0,0xa,0,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,LoadPolymorphicIC,5,0x2b866940,105,"length"
+tick,0x8231000,95074,0,0x90d5060,0,0x2b848e54,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x83b9d75,96149,0,0x527db159,0,0x2b82364b,0x2b83a13d,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",96446
+timer-event-start,"V8.External",96457
+timer-event-end,"V8.External",96461
+timer-event-start,"V8.External",96513
+timer-event-end,"V8.External",96520
+timer-event-end,"V8.GCScavenger",96524
+tick,0x2b85960c,97208,0,0xfee0,0,0x2b852252,0x2b848c4b,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b83b5b3,98279,0,0x2b851c24,0,0x2b85cd19,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",99128
+timer-event-start,"V8.External",99139
+timer-event-end,"V8.External",99143
+timer-event-start,"V8.External",99189
+timer-event-end,"V8.External",99195
+timer-event-end,"V8.GCScavenger",99199
+tick,0x821c54b,99345,0,0x5270e530,0,0x2b83bd35,0x2b85ccab,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b85a010,100416,0,0x0,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x808b5f1,101472,0,0x2f308081,0,0x2b8537a0,0x2b84a325,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",101820
+timer-event-start,"V8.External",101831
+timer-event-end,"V8.External",101835
+timer-event-start,"V8.External",101885
+timer-event-end,"V8.External",101891
+timer-event-end,"V8.GCScavenger",101895
+tick,0x2b85a376,102533,0,0x9c155cd6,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b863678,103607,0,0x4c0,0,0x2b83a0df,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",104515
+timer-event-start,"V8.External",104529
+timer-event-end,"V8.External",104533
+timer-event-start,"V8.External",104581
+timer-event-end,"V8.External",104588
+timer-event-end,"V8.GCScavenger",104592
+tick,0x2b85a2dc,104658,0,0x29,0,0x2b852252,0x2b8658f7,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b859e24,105742,0,0x80c5e06,0,0x2b852252,0x2b8654d2,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-deopt,106093,4416
+code-creation,Stub,12,0x2b8669c0,190,"BinaryOpStub_MOD_Alloc_Smi+Smi"
+tick,0x2b8514f9,106811,0,0xd1b6f5df,0,0x2b8657f1,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",107254
+timer-event-start,"V8.External",107264
+timer-event-end,"V8.External",107268
+timer-event-start,"V8.External",107317
+timer-event-end,"V8.External",107323
+timer-event-end,"V8.GCScavenger",107327
+timer-event-start,"V8.RecompileSynchronous",107462
+timer-event-start,"V8.ParseLazy",107471
+timer-event-end,"V8.ParseLazy",107537
+timer-event-end,"V8.RecompileSynchronous",107729
+timer-event-start,"V8.RecompileConcurrent",107764
+tick,0x2b859da9,107874,0,0x2,0,0x2b852252,0x2b848b65,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-end,"V8.RecompileConcurrent",108795
+timer-event-start,"V8.RecompileSynchronous",108885
+tick,0x2b859d60,108935,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,Stub,2,0x2b866a80,783,"RecordWriteStub"
+code-creation,Stub,2,0x2b866da0,1772,"RecordWriteStub"
+code-creation,LazyCompile,1,0x2b8674a0,4040,"sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4",0x2f339830,*
+timer-event-end,"V8.RecompileSynchronous",109204
+tick,0x2b851bd9,110005,0,0x68,0,0x2b85cd19,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",110651
+timer-event-start,"V8.External",110662
+timer-event-end,"V8.External",110666
+timer-event-start,"V8.External",110715
+timer-event-end,"V8.External",110721
+timer-event-end,"V8.GCScavenger",110725
+tick,0x2b85a1d8,111072,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b848d38,112161,0,0x4c,0,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.RecompileSynchronous",112323
+timer-event-start,"V8.ParseLazy",112335
+timer-event-end,"V8.ParseLazy",112387
+timer-event-start,"V8.ParseLazy",112444
+timer-event-end,"V8.ParseLazy",112463
+timer-event-start,"V8.ParseLazy",112496
+timer-event-end,"V8.ParseLazy",112509
+timer-event-start,"V8.ParseLazy",112536
+timer-event-end,"V8.ParseLazy",112552
+timer-event-start,"V8.ParseLazy",112576
+timer-event-end,"V8.ParseLazy",112598
+timer-event-start,"V8.ParseLazy",112639
+timer-event-end,"V8.ParseLazy",112653
+timer-event-start,"V8.ParseLazy",112685
+timer-event-end,"V8.ParseLazy",112722
+timer-event-start,"V8.ParseLazy",112803
+timer-event-end,"V8.ParseLazy",112819
+timer-event-start,"V8.ParseLazy",112848
+timer-event-end,"V8.ParseLazy",112863
+timer-event-end,"V8.RecompileSynchronous",112986
+timer-event-start,"V8.RecompileConcurrent",113012
+tick,0x2b867dc3,113148,0,0x100,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",114171
+timer-event-start,"V8.External",114182
+timer-event-end,"V8.External",114186
+tick,0x82c920e,114254,0,0x0,1
+timer-event-start,"V8.External",114309
+timer-event-end,"V8.External",114330
+timer-event-end,"V8.GCScavenger",114350
+timer-event-end,"V8.RecompileConcurrent",115013
+timer-event-start,"V8.RecompileSynchronous",115032
+tick,0x8369515,115325,0,0x9135ff0,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,LazyCompile,1,0x5120a000,9284,"sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21",0x2f33a370,*
+timer-event-end,"V8.RecompileSynchronous",115434
+code-deopt,115666,9312
+tick,0x2b85056f,116392,0,0x52f8f619,0,0x2b85cd2d,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b812420,117465,0,0x2b85592e,0,0x2b86573b,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",117571
+timer-event-start,"V8.External",117583
+timer-event-end,"V8.External",117587
+timer-event-start,"V8.External",117636
+timer-event-end,"V8.External",117642
+timer-event-end,"V8.GCScavenger",117646
+tick,0x811db13,118481,0,0x90d5060,0,0x2b85cd53,0x2b839eb3,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x80c4222,119548,0,0x90d5060,0,0x2b85599a,0x2b86573b,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",120368
+timer-event-start,"V8.External",120379
+timer-event-end,"V8.External",120383
+timer-event-start,"V8.External",120428
+timer-event-end,"V8.External",120434
+timer-event-end,"V8.GCScavenger",120438
+tick,0x2b867eb3,120610,0,0x100,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b859eae,121680,0,0x80c5e06,0,0x2b852252,0x2b8658f7,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b85981d,122808,0,0x21,0,0x2b852252,0x2b848c4b,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",123188
+timer-event-start,"V8.External",123199
+timer-event-end,"V8.External",123203
+timer-event-start,"V8.External",123248
+timer-event-end,"V8.External",123254
+timer-event-end,"V8.GCScavenger",123258
+tick,0x2b859ca8,123878,0,0x0,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x80fa2d1,124943,0,0x5279ab29,0,0x2b83bd35,0x2b85ccab,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",126000
+timer-event-start,"V8.External",126017
+timer-event-end,"V8.External",126022
+tick,0x808b6b0,126038,0,0x2f308081,0,0x2b855838,0x2b848b0a,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.External",126109
+timer-event-end,"V8.External",126129
+timer-event-end,"V8.GCScavenger",126139
+tick,0x808b656,127081,0,0x2f308081,0,0x2b8658be,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b85a1f0,128141,0,0x1f,0,0x2b852252,0x2b848c4b,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",128896
+timer-event-start,"V8.External",128907
+timer-event-end,"V8.External",128911
+timer-event-start,"V8.External",128958
+timer-event-end,"V8.External",128964
+timer-event-end,"V8.GCScavenger",128968
+tick,0x2b867d2b,129212,0,0x100,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b859a7b,130285,0,0x80c5e06,0,0x2b852252,0x2b865810,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b859c3b,131350,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",131713
+timer-event-start,"V8.External",131723
+timer-event-end,"V8.External",131727
+timer-event-start,"V8.External",131772
+timer-event-end,"V8.External",131778
+timer-event-end,"V8.GCScavenger",131782
+tick,0x80c413f,132412,0,0x90d5060,0,0x2b855ca8,0x2b8446a3,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x80a1baf,133466,0,0x811e5c0,0,0x2b848b2e,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",134532
+tick,0x2b85d126,134550,0,0x2,0,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.External",134619
+timer-event-end,"V8.External",134636
+timer-event-start,"V8.External",134702
+timer-event-end,"V8.External",134708
+timer-event-end,"V8.GCScavenger",134712
+tick,0x2b8594d3,135617,0,0x80c5e06,0,0x2b852252,0x2b8654d2,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.RecompileSynchronous",135776
+timer-event-start,"V8.ParseLazy",135787
+timer-event-end,"V8.ParseLazy",135838
+timer-event-start,"V8.ParseLazy",135894
+timer-event-end,"V8.ParseLazy",135913
+timer-event-start,"V8.ParseLazy",135946
+timer-event-end,"V8.ParseLazy",135960
+timer-event-start,"V8.ParseLazy",135987
+timer-event-end,"V8.ParseLazy",136002
+timer-event-start,"V8.ParseLazy",136026
+timer-event-end,"V8.ParseLazy",136048
+timer-event-start,"V8.ParseLazy",136089
+timer-event-end,"V8.ParseLazy",136103
+timer-event-start,"V8.ParseLazy",136135
+timer-event-end,"V8.ParseLazy",136172
+timer-event-start,"V8.ParseLazy",136253
+timer-event-end,"V8.ParseLazy",136270
+timer-event-start,"V8.ParseLazy",136301
+timer-event-end,"V8.ParseLazy",136317
+timer-event-end,"V8.RecompileSynchronous",136440
+timer-event-start,"V8.RecompileConcurrent",136466
+tick,0x2b859c6e,136680,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-creation,LoadPolymorphicIC,5,0x5120c460,105,"length"
+code-creation,LoadPolymorphicIC,5,0x5120c4e0,117,"length"
+code-creation,LoadPolymorphicIC,5,0x5120c560,117,"length"
+code-creation,LoadPolymorphicIC,5,0x5120c5e0,105,"length"
+code-creation,LoadPolymorphicIC,5,0x5120c660,105,"length"
+tick,0x2b855ece,137742,0,0x527d0961,0,0x2b8446a3,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",138203
+timer-event-start,"V8.External",138213
+timer-event-end,"V8.External",138217
+timer-event-start,"V8.External",138271
+timer-event-end,"V8.External",138277
+timer-event-end,"V8.GCScavenger",138281
+timer-event-end,"V8.RecompileConcurrent",138393
+timer-event-start,"V8.RecompileSynchronous",138412
+code-creation,LazyCompile,1,0x5120c6e0,9284,"sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21",0x2f33a370,*
+timer-event-end,"V8.RecompileSynchronous",138781
+tick,0x83647f0,138812,0,0xf633ddf4,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+code-deopt,138895,9312
+tick,0x2b851212,139867,0,0xff81fd00,0,0x2b8657f1,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x82ebff7,140937,0,0x2f33ca81,0,0x2b85056f,0x2b85cd2d,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",141540
+timer-event-start,"V8.External",141551
+timer-event-end,"V8.External",141555
+timer-event-start,"V8.External",141605
+timer-event-end,"V8.External",141611
+timer-event-end,"V8.GCScavenger",141615
+tick,0x2b85a0a6,142005,0,0x0,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x8116886,143088,0,0x90d5060,0,0x2b85b862,0x2b848b8c,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b83dbaf,144137,0,0x2b85cd53,0,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.GCScavenger",144365
+timer-event-start,"V8.External",144376
+timer-event-end,"V8.External",144380
+timer-event-start,"V8.External",144428
+timer-event-end,"V8.External",144434
+timer-event-end,"V8.GCScavenger",144438
+tick,0x81168ba,145212,0,0x90d5060,0,0x2b85056f,0x2b85cd2d,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+tick,0x2b851430,146268,0,0xff81fd00,0,0x2b8657f1,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac
+timer-event-start,"V8.ParseLazy",146339
+timer-event-end,"V8.ParseLazy",146358
+timer-event-start,"V8.CompileLazy",146364
+timer-event-start,"V8.CompileFullCode",146369
+timer-event-end,"V8.CompileFullCode",146386
+code-creation,LazyCompile,0,0x5120eb40,212," bsuite/kraken-once/stanford-crypto-ccm.js:172",0x2f33dd88,~
+timer-event-end,"V8.CompileLazy",146400
+code-creation,Stub,12,0x5120ec20,311,"BinaryOpStub_SUB_Alloc_Generic+Generic"
+timer-event-start,"V8.ParseLazy",146431
+timer-event-end,"V8.ParseLazy",146461
+timer-event-start,"V8.CompileLazy",146467
+timer-event-start,"V8.CompileFullCode",146475
+timer-event-end,"V8.CompileFullCode",146495
+code-creation,LazyCompile,0,0x5120ed60,580,"NonNumberToNumber native runtime.js:548",0x44225f78,~
+timer-event-end,"V8.CompileLazy",146508
+code-creation,Stub,2,0x5120efc0,98,"valueOf"
+code-creation,LoadPolymorphicIC,5,0x5120f040,117,"valueOf"
+code-creation,CallIC,7,0x5120f0c0,129,"ToNumber"
+timer-event-start,"V8.ParseLazy",146556
+timer-event-end,"V8.ParseLazy",146569
+timer-event-start,"V8.CompileLazy",146574
+timer-event-start,"V8.CompileFullCode",146580
+timer-event-end,"V8.CompileFullCode",146591
+code-creation,LazyCompile,0,0x5120f160,208,"record bsuite/kraken-once/stanford-crypto-ccm.js:7229",0x2f339680,~
+timer-event-end,"V8.CompileLazy",146603
+timer-event-start,"V8.External",146613
+timer-event-end,"V8.External",146656
+timer-event-end,"V8.Execute",146662
+timer-event-start,"V8.RecompileConcurrent",146700
+timer-event-end,"V8.RecompileConcurrent",146738
+profiler,"end"
diff --git a/src/v8/test/mjsunit/tools/tickprocessor-test-func-info.log b/src/v8/test/mjsunit/tools/tickprocessor-test-func-info.log
new file mode 100644 (file)
index 0000000..94aa56d
--- /dev/null
@@ -0,0 +1,11 @@
+shared-library,"shell",0x08048000,0x081ee000
+shared-library,"/lib32/libm-2.7.so",0xf7db6000,0xf7dd9000
+shared-library,"ffffe000-fffff000",0xffffe000,0xfffff000
+profiler,"begin",1
+code-creation,Stub,0,0x424260,348,"CompareStub_GE"
+code-creation,LazyCompile,0,0x2a8100,18535,"DrawQube 3d-cube.js:188",0xf43abcac,
+code-creation,LazyCompile,0,0x480100,3908,"DrawLine 3d-cube.js:17",0xf43abc50,
+tick,0x424284,0,0,0x480600,0,0x2aaaa5
+tick,0x42429f,0,0,0x480600,0,0x2aacb4
+tick,0x48063d,0,0,0x2d0f7c,0,0x2aaec6
+profiler,"end"
diff --git a/src/v8/test/mjsunit/tools/tickprocessor-test.log b/src/v8/test/mjsunit/tools/tickprocessor-test.log
new file mode 100644 (file)
index 0000000..cf8b90d
--- /dev/null
@@ -0,0 +1,25 @@
+shared-library,"shell",0x08048000,0x081ee000
+shared-library,"/lib32/libm-2.7.so",0xf7db6000,0xf7dd9000
+shared-library,"ffffe000-fffff000",0xffffe000,0xfffff000
+profiler,"begin",1
+code-creation,Stub,0,0xf540a100,474,"CEntryStub"
+code-creation,Script,0,0xf541cd80,736,"exp.js"
+code-creation,Stub,0,0xf541d0e0,47,"RuntimeStub_Math_exp"
+code-creation,LazyCompile,0,0xf541d120,145,"exp native math.js:41"
+function-creation,0xf441d280,0xf541d120
+code-creation,LoadIC,0,0xf541d280,117,"j"
+code-creation,LoadIC,0,0xf541d360,63,"i"
+tick,0x80f82d1,0,0,0,0,0xf541ce5c
+tick,0x80f89a1,0,0,0,0,0xf541ce5c
+tick,0x8123b5c,0,0,0,0,0xf541d1a1,0xf541ceea
+tick,0x8123b65,0,0,0,0,0xf541d1a1,0xf541ceea
+tick,0xf541d2be,0,0,0,0
+tick,0xf541d320,0,0,0,0
+tick,0xf541d384,0,0,0,0
+tick,0xf7db94da,0,0,0,0,0xf541d1a1,0xf541ceea
+tick,0xf7db951c,0,0,0,0,0xf541d1a1,0xf541ceea
+tick,0xf7dbc508,0,0,0,0,0xf541d1a1,0xf541ceea
+tick,0xf7dbff21,0,0,0,0,0xf541d1a1,0xf541ceea
+tick,0xf7edec90,0,0,0,0,0xf541d1a1,0xf541ceea
+tick,0xffffe402,0,0,0,0
+profiler,"end"
diff --git a/src/v8/tools/v8.xcodeproj/README.txt b/src/v8/tools/v8.xcodeproj/README.txt
new file mode 100644 (file)
index 0000000..e064ff6
--- /dev/null
@@ -0,0 +1,11 @@
+The Xcode project for V8 has been retired. If an Xcode project
+is needed for building on a Mac there is the option of using GYP to
+generate it. Please look in the build directory in the root of the
+V8 project. It contains the required infrastructure and a README.txt
+file explaining how to get started.
+
+Generating Xcode projects using GYP is how the Chromium
+project integrated V8 into the Mac build.
+
+The main build system for V8 is still SCons, see
+http://code.google.com/apis/v8/build.html for details.
index 701ef74..d98e36e 100644 (file)
@@ -7,7 +7,7 @@
 # Use 'Trunk' for trunk.
 # If using trunk, will use '.DEPS.git' for gclient.
 chromium_version = '32.0.1700.14'
-chromium_crosswalk_point = '5a02711e3e9685ce70b44dfe93ee79ac0e8651d5'
+chromium_crosswalk_point = '438a2ac36c659f06e175326586b6a1690c61a496'
 blink_crosswalk_point = '2cb175435ece6896eabf6fe2ff9f1bf6ea8969e3'
 deps_xwalk = {
   'src': 'https://github.com/crosswalk-project/chromium-crosswalk.git@%s' % chromium_crosswalk_point,
index 9e75dd1..bbb6010 100644 (file)
@@ -1,4 +1,4 @@
 MAJOR=4
 MINOR=32
-BUILD=73
+BUILD=74
 PATCH=0
index 9df54a8..deee238 100644 (file)
@@ -58,8 +58,7 @@ Application::Application(
     : runtime_context_(runtime_context),
       application_data_(data),
       main_runtime_(NULL),
-      observer_(observer),
-      entry_points_(Default) {
+      observer_(observer) {
   DCHECK(runtime_context_);
   DCHECK(application_data_);
   DCHECK(observer_);
@@ -108,10 +107,10 @@ bool Application::TryLaunchAt<Application::LaunchLocalPathKey>() {
 }
 
 template<>
-bool Application::TryLaunchAt<Application::LaunchWebURLKey>() {
+bool Application::TryLaunchAt<Application::URLKey>() {
   const Manifest* manifest = application_data_->GetManifest();
   std::string url_string;
-  if (manifest->GetString(application_manifest_keys::kLaunchWebURLKey,
+  if (manifest->GetString(application_manifest_keys::kURLKey,
       &url_string)) {
     GURL url(url_string);
     if (!url.is_valid()) {
@@ -131,28 +130,25 @@ bool Application::TryLaunchAt<Application::LaunchWebURLKey>() {
   return false;
 }
 
-bool Application::Launch() {
+bool Application::Launch(const LaunchParams& launch_params) {
   if (!runtimes_.empty()) {
     LOG(ERROR) << "Attempt to launch app: " << id()
                << " that was already launched.";
     return false;
   }
 
-  if ((entry_points_ & AppMainKey) && TryLaunchAt<AppMainKey>())
+  if ((launch_params.entry_points & AppMainKey) && TryLaunchAt<AppMainKey>())
     return true;
-  if ((entry_points_ & LaunchLocalPathKey) && TryLaunchAt<LaunchLocalPathKey>())
+  if ((launch_params.entry_points & LaunchLocalPathKey)
+      && TryLaunchAt<LaunchLocalPathKey>())
     return true;
-  if ((entry_points_ & LaunchWebURLKey) && TryLaunchAt<LaunchWebURLKey>())
+  if ((launch_params.entry_points & URLKey) && TryLaunchAt<URLKey>())
     return true;
 
   return false;
 }
 
-void Application::set_entry_points(LaunchEntryPoints entry_points) {
-  entry_points_ = entry_points;
-}
-
-void Application::Close() {
+void Application::Terminate() {
   std::set<Runtime*> to_be_closed(runtimes_);
   if (HasMainDocument() && to_be_closed.size() > 1) {
     // The main document runtime is closed separately
index 6277d47..395ac3e 100644 (file)
@@ -51,15 +51,26 @@ class Application : public Runtime::Observer {
   enum LaunchEntryPoint {
     AppMainKey = 1 << 0,  // app.main
     LaunchLocalPathKey = 1 << 1,  // app.launch.local_path
-    LaunchWebURLKey = 1 << 2,  // app.launch.web_url
+    // NOTE: The following key is only used for "dummy" hosted apps,
+    // which can be using any arbitrary URL, incl. remote ones.
+    // For now this should be disabled for all other cases as this will
+    // require special care with permissions etc.
+    URLKey = 1 << 2,  // url
     Default = AppMainKey | LaunchLocalPathKey
   };
   typedef unsigned LaunchEntryPoints;
 
-  LaunchEntryPoints entry_points() const { return entry_points_; }
+  struct LaunchParams {
+    LaunchParams() :
+        entry_points(Default) {}
+
+    LaunchEntryPoints entry_points;
+  };
 
   // Closes all the application's runtimes (application pages).
-  void Close();
+  // NOTE: ApplicationService deletes an Application instance
+  // immediately after its termination.
+  void Terminate();
 
   // Returns Runtime (application page) containing the application's
   // 'main document'. The main document is the main entry point of
@@ -91,11 +102,10 @@ class Application : public Runtime::Observer {
   Application(scoped_refptr<ApplicationData> data,
               RuntimeContext* context,
               Observer* observer);
-  bool Launch();
+  bool Launch(const LaunchParams& launch_params);
 
   template<LaunchEntryPoint>
   bool TryLaunchAt();
-  void set_entry_points(LaunchEntryPoints entry_points);
 
   friend class FinishEventObserver;
   void CloseMainDocument();
@@ -107,7 +117,6 @@ class Application : public Runtime::Observer {
   std::set<Runtime*> runtimes_;
   scoped_ptr<EventObserver> finish_observer_;
   Observer* observer_;
-  LaunchEntryPoints entry_points_;
 
   DISALLOW_COPY_AND_ASSIGN(Application);
 };
index 2125599..408354a 100644 (file)
@@ -28,6 +28,7 @@
 
 #if defined(OS_TIZEN_MOBILE)
 #include "xwalk/application/browser/installer/tizen/package_installer.h"
+#include "xwalk/application/browser/installer/tizen/service_package_installer.h"
 #endif
 
 using xwalk::RuntimeContext;
@@ -133,16 +134,15 @@ void WaitForFinishLoad(
 #if defined(OS_TIZEN_MOBILE)
 bool InstallPackageOnTizen(xwalk::application::ApplicationService* service,
                            xwalk::application::ApplicationStorage* storage,
-                           const std::string& app_id,
+                           xwalk::application::ApplicationData* application,
                            const base::FilePath& data_dir) {
-  // FIXME(cmarcelo): The Tizen-specific steps of installation in
-  // service mode are not supported yet. Remove when this is fixed.
-  if (xwalk::XWalkRunner::GetInstance()->is_running_as_service())
-    return true;
+  if (xwalk::XWalkRunner::GetInstance()->is_running_as_service()) {
+    return InstallApplicationForTizen(application, data_dir);
+  }
 
   scoped_ptr<xwalk::application::PackageInstaller> installer =
       xwalk::application::PackageInstaller::Create(service, storage,
-                                                   app_id, data_dir);
+                                                   application->ID(), data_dir);
   if (!installer || !installer->Install()) {
     LOG(ERROR) << "An error occurred during installation on Tizen.";
     return false;
@@ -152,16 +152,15 @@ bool InstallPackageOnTizen(xwalk::application::ApplicationService* service,
 
 bool UninstallPackageOnTizen(xwalk::application::ApplicationService* service,
                              xwalk::application::ApplicationStorage* storage,
-                             const std::string& app_id,
+                             xwalk::application::ApplicationData* application,
                              const base::FilePath& data_dir) {
-  // FIXME(cmarcelo): The Tizen-specific steps of installation in
-  // service mode are not supported yet. Remove when this is fixed.
-  if (xwalk::XWalkRunner::GetInstance()->is_running_as_service())
-    return true;
+  if (xwalk::XWalkRunner::GetInstance()->is_running_as_service()) {
+    return UninstallApplicationForTizen(application, data_dir);
+  }
 
   scoped_ptr<xwalk::application::PackageInstaller> installer =
       xwalk::application::PackageInstaller::Create(service, storage,
-                                                   app_id, data_dir);
+                                                   application->ID(), data_dir);
   if (!installer || !installer->Uninstall()) {
     LOG(ERROR) << "An error occurred during uninstallation on Tizen.";
     return false;
@@ -270,9 +269,11 @@ bool ApplicationService::Install(const base::FilePath& path, std::string* id) {
 
 #if defined(OS_TIZEN_MOBILE)
   if (!InstallPackageOnTizen(this, application_storage_,
-                             application_data->ID(),
-                             runtime_context_->GetPath()))
+                             application_data.get(),
+                             runtime_context_->GetPath())) {
+    application_storage_->RemoveApplication(application_data->ID());
     return false;
+  }
 #endif
 
   LOG(INFO) << "Application be installed in: " << app_dir.MaybeAsASCII();
@@ -296,16 +297,26 @@ bool ApplicationService::Install(const base::FilePath& path, std::string* id) {
 }
 
 bool ApplicationService::Uninstall(const std::string& id) {
+  bool result = true;
+
+  scoped_refptr<ApplicationData> application =
+      application_storage_->GetApplicationData(id);
+  if (!application) {
+    LOG(ERROR) << "Cannot uninstall application with id " << id
+               << "; invalid application id";
+    return false;
+  }
+
 #if defined(OS_TIZEN_MOBILE)
-  if (!UninstallPackageOnTizen(this, application_storage_, id,
+  if (!UninstallPackageOnTizen(this, application_storage_, application.get(),
                                runtime_context_->GetPath()))
-    return false;
+    result = false;
 #endif
 
   if (!application_storage_->RemoveApplication(id)) {
     LOG(ERROR) << "Cannot uninstall application with id " << id
                << "; application is not installed.";
-    return false;
+    result = false;
   }
 
   const base::FilePath resources =
@@ -314,12 +325,12 @@ bool ApplicationService::Uninstall(const std::string& id) {
       !base::DeleteFile(resources, true)) {
     LOG(ERROR) << "Error occurred while trying to remove application with id "
                << id << "; Cannot remove all resources.";
-    return false;
+    result = false;
   }
 
   FOR_EACH_OBSERVER(Observer, observers_, OnApplicationUninstalled(id));
 
-  return true;
+  return result;
 }
 
 Application* ApplicationService::Launch(const std::string& id) {
@@ -330,7 +341,7 @@ Application* ApplicationService::Launch(const std::string& id) {
     return NULL;
   }
 
-  return Launch(application_data);
+  return Launch(application_data, Application::LaunchParams());
 }
 
 Application* ApplicationService::Launch(const base::FilePath& path) {
@@ -347,7 +358,7 @@ Application* ApplicationService::Launch(const base::FilePath& path) {
     return NULL;
   }
 
-  return Launch(application_data);
+  return Launch(application_data, Application::LaunchParams());
 }
 
 Application* ApplicationService::Launch(const GURL& url) {
@@ -361,7 +372,7 @@ Application* ApplicationService::Launch(const GURL& url) {
 
   base::DictionaryValue manifest;
   // FIXME: define permissions!
-  manifest.SetString(keys::kLaunchWebURLKey, url_spec);
+  manifest.SetString(keys::kURLKey, url_spec);
   manifest.SetString(keys::kNameKey, "XWalk Browser");
   manifest.SetString(keys::kVersionKey, "0");
   manifest.SetInteger(keys::kManifestVersionKey, 1);
@@ -374,7 +385,9 @@ Application* ApplicationService::Launch(const GURL& url) {
     return NULL;
   }
 
-  return Launch(application_data, Application::LaunchWebURLKey);
+  Application::LaunchParams launch_params;
+  launch_params.entry_points = Application::URLKey;
+  return Launch(application_data, launch_params);
 }
 
 namespace {
@@ -441,7 +454,7 @@ void ApplicationService::OnApplicationTerminated(
 
 Application* ApplicationService::Launch(
     scoped_refptr<ApplicationData> application_data,
-    Application::LaunchEntryPoints entry_points) {
+    const Application::LaunchParams& launch_params) {
   if (GetApplicationByID(application_data->ID()) != NULL) {
     LOG(INFO) << "Application with id: " << application_data->ID()
               << " is already running.";
@@ -454,11 +467,10 @@ Application* ApplicationService::Launch(
   Application* application(new Application(application_data,
                                            runtime_context_,
                                            this));
-  application->set_entry_points(entry_points);
   ScopedVector<Application>::iterator app_iter =
       applications_.insert(applications_.end(), application);
 
-  if (!application->Launch()) {
+  if (!application->Launch(launch_params)) {
     event_manager_->RemoveEventRouterForApp(application_data);
     applications_.erase(app_iter);
     return NULL;
index c03c87c..241299a 100644 (file)
@@ -71,7 +71,7 @@ class ApplicationService : public Application::Observer {
   virtual void OnApplicationTerminated(Application* app) OVERRIDE;
 
   Application* Launch(scoped_refptr<ApplicationData> application_data,
-                      Application::LaunchEntryPoints = Application::Default);
+                      const Application::LaunchParams& launch_params);
 
   xwalk::RuntimeContext* runtime_context_;
   ApplicationStorage* application_storage_;
diff --git a/src/xwalk/application/browser/installer/tizen/service_package_installer.cc b/src/xwalk/application/browser/installer/tizen/service_package_installer.cc
new file mode 100644 (file)
index 0000000..cf58647
--- /dev/null
@@ -0,0 +1,227 @@
+// Copyright (c) 2014 Intel Corporation. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "xwalk/application/browser/installer/tizen/service_package_installer.h"
+
+#include <sys/types.h>
+#include <pwd.h>
+#include <unistd.h>
+#include <pkgmgr/pkgmgr_parser.h>
+#include <algorithm>
+#include <string>
+#include "base/file_util.h"
+#include "base/files/file_enumerator.h"
+#include "base/logging.h"
+#include "base/path_service.h"
+#include "base/command_line.h"
+#include "base/process/launch.h"
+#include "third_party/libxml/chromium/libxml_utils.h"
+#include "xwalk/application/common/application_data.h"
+#include "xwalk/application/browser/application_storage.h"
+#include "xwalk/application/browser/installer/tizen/packageinfo_constants.h"
+
+namespace info = xwalk::application_packageinfo_constants;
+
+namespace {
+
+const base::FilePath kPkgHelper("/usr/bin/xwalk-pkg-helper");
+
+const base::FilePath kXWalkLauncherBinary("/usr/bin/xwalk-launcher");
+
+const base::FilePath kDefaultIcon(
+    "/usr/share/icons/default/small/crosswalk.png");
+
+const std::string kServicePrefix("xwalk-service.");
+
+class FileDeleter {
+ public:
+  FileDeleter(const base::FilePath& path, bool recursive)
+      : path_(path),
+        recursive_(recursive) {}
+
+  ~FileDeleter() {
+    if (path_.empty())
+      return;
+
+    base::DeleteFile(path_, recursive_);
+  }
+
+  void Dismiss() {
+    path_.clear();
+  }
+
+ private:
+  base::FilePath path_;
+  bool recursive_;
+};
+
+bool GeneratePkgInfoXml(xwalk::application::ApplicationData* application,
+                        const std::string& icon_name,
+                        const base::FilePath& app_dir,
+                        const base::FilePath& xml_path) {
+  if (!base::PathExists(app_dir) &&
+      !file_util::CreateDirectory(app_dir))
+    return false;
+
+  std::string package_id = application->ID();
+  base::FilePath execute_path =
+      app_dir.AppendASCII("bin/").AppendASCII(package_id);
+  std::string stripped_name = application->Name();
+  stripped_name.erase(
+      std::remove_if(stripped_name.begin(), stripped_name.end(), ::isspace),
+      stripped_name.end());
+
+  FILE* file = file_util::OpenFile(xml_path, "w");
+
+  XmlWriter xml_writer;
+  xml_writer.StartWriting();
+  xml_writer.StartElement("manifest");
+  xml_writer.AddAttribute("xmlns", "http://tizen.org/ns/packages");
+  xml_writer.AddAttribute("package", package_id);
+  xml_writer.AddAttribute("version", application->VersionString());
+  xml_writer.WriteElement("label", application->Name());
+  xml_writer.WriteElement("description", application->Description());
+
+  xml_writer.StartElement("ui-application");
+  xml_writer.AddAttribute(
+      "appid", kServicePrefix + package_id + info::kSeparator + stripped_name);
+  xml_writer.AddAttribute("exec", execute_path.MaybeAsASCII());
+  xml_writer.AddAttribute("type", "c++app");
+  xml_writer.AddAttribute("taskmanage", "true");
+  xml_writer.WriteElement("label", application->Name());
+
+  if (icon_name.empty())
+    xml_writer.WriteElement("icon", info::kDefaultIconName);
+  else
+    xml_writer.WriteElement("icon", kServicePrefix + package_id + ".png");
+  xml_writer.EndElement();  // Ends "ui-application"
+
+  xml_writer.EndElement();  // Ends "manifest" element.
+  xml_writer.StopWriting();
+
+  file_util::WriteFile(xml_path,
+                       xml_writer.GetWrittenString().c_str(),
+                       xml_writer.GetWrittenString().size());
+
+  file_util::CloseFile(file);
+  LOG(INFO) << "Converting manifest.json into "
+            << xml_path.BaseName().MaybeAsASCII()
+            << " for installation. [DONE]";
+  return true;
+}
+
+}  // namespace
+
+namespace xwalk {
+namespace application {
+
+bool InstallApplicationForTizen(
+    ApplicationData* application, const base::FilePath& data_dir) {
+  std::string package_id = application->ID();
+  base::FilePath app_dir =
+      data_dir.AppendASCII(info::kAppDir).AppendASCII(package_id);
+  base::FilePath xml_path = data_dir.AppendASCII(info::kAppDir).AppendASCII(
+      package_id + std::string(info::kXmlExtension));
+
+  std::string icon_name;
+  if (!application->GetManifest()->GetString(info::kIconKey, &icon_name)) {
+    LOG(WARNING) << "'icon' not included in manifest";
+  }
+  // This will clean everything inside '<data dir>/<app id>'.
+  FileDeleter app_dir_cleaner(app_dir, true);
+
+  if (!GeneratePkgInfoXml(application, icon_name, app_dir, xml_path)) {
+    LOG(ERROR) << "Could not create XML metadata file '"
+               << xml_path.value() << "'.";
+    return false;
+  }
+
+  base::FilePath execute_path =
+      app_dir.AppendASCII("bin/").AppendASCII(package_id);
+
+  if (!file_util::CreateDirectory(execute_path.DirName())) {
+    LOG(ERROR) << "Could not create directory '"
+               << execute_path.DirName().value() << "'.";
+    return false;
+  }
+
+  if (!file_util::CreateSymbolicLink(kXWalkLauncherBinary, execute_path)) {
+    LOG(ERROR) << "Could not create symbolic link to launcher from '"
+               << execute_path.value() << "'.";
+    return false;
+  }
+
+  base::FilePath icon;
+  if (icon_name.empty())
+    icon = kDefaultIcon;
+  else
+    icon = app_dir.AppendASCII(icon_name);
+
+  CommandLine cmdline(kPkgHelper);
+  cmdline.AppendSwitch("--install");
+  cmdline.AppendArg(package_id);
+  cmdline.AppendArgPath(xml_path);
+  cmdline.AppendArgPath(icon);
+
+  int exit_code;
+  std::string output;
+
+  if (!base::GetAppOutputWithExitCode(cmdline, &output, &exit_code)) {
+    LOG(ERROR) << "Could not launch installer helper.";
+    return false;
+  }
+
+  if (exit_code != 0) {
+    LOG(ERROR) << "Could not install application: "
+               << output << " (" << exit_code << ")";
+    return false;
+  }
+
+  app_dir_cleaner.Dismiss();
+
+  return true;
+}
+
+bool UninstallApplicationForTizen(ApplicationData* application,
+                                  const base::FilePath& data_dir) {
+  std::string package_id = application->ID();
+  bool result = true;
+
+  CommandLine cmdline(kPkgHelper);
+  cmdline.AppendSwitch("--uninstall");
+  cmdline.AppendArg(package_id);
+
+  int exit_code;
+  std::string output;
+
+  if (!base::GetAppOutputWithExitCode(cmdline, &output, &exit_code)) {
+    LOG(ERROR) << "Could not launch installer helper";
+    result = false;
+  }
+
+  if (exit_code != 0) {
+    LOG(ERROR) << "Could not uninstall application: "
+               << output << " (" << exit_code << ")";
+    result = false;
+  }
+
+  base::FilePath app_dir =
+      data_dir.AppendASCII(info::kAppDir).AppendASCII(package_id);
+  if (!base::DeleteFile(app_dir, true)) {
+    LOG(ERROR) << "Could not remove directory '" << app_dir.value() << "'";
+    result = false;
+  }
+
+  base::FilePath xml_path = data_dir.AppendASCII(
+      package_id + std::string(info::kXmlExtension));
+  if (!base::DeleteFile(xml_path, false)) {
+    LOG(ERROR) << "Could not remove file '" << xml_path.value() << "'";
+    result = false;
+  }
+
+  return result;
+}
+
+}  // namespace application
+}  // namespace xwalk
diff --git a/src/xwalk/application/browser/installer/tizen/service_package_installer.h b/src/xwalk/application/browser/installer/tizen/service_package_installer.h
new file mode 100644 (file)
index 0000000..431a12f
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright (c) 2014 Intel Corporation. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef XWALK_APPLICATION_BROWSER_INSTALLER_TIZEN_SERVICE_PACKAGE_INSTALLER_H_
+#define XWALK_APPLICATION_BROWSER_INSTALLER_TIZEN_SERVICE_PACKAGE_INSTALLER_H_
+
+#include <string>
+#include "base/files/file_path.h"
+
+namespace xwalk {
+namespace application {
+
+class ApplicationData;
+
+bool InstallApplicationForTizen(ApplicationData* application,
+                                const base::FilePath& data_dir);
+
+bool UninstallApplicationForTizen(ApplicationData* application,
+                                  const base::FilePath& data_dir);
+
+}  // namespace application
+}  // namespace xwalk
+
+#endif  // XWALK_APPLICATION_BROWSER_INSTALLER_TIZEN_SERVICE_PACKAGE_INSTALLER_H_
index 3e46433..c5edf7b 100644 (file)
@@ -69,17 +69,17 @@ RunningApplicationObject::RunningApplicationObject(
 
 RunningApplicationObject::~RunningApplicationObject() {
   if (watching_launcher_)
-    CloseApplication();
+    TerminateApplication();
 }
 
-void RunningApplicationObject::CloseApplication() {
+void RunningApplicationObject::TerminateApplication() {
   bus_->UnlistenForServiceOwnerChange(
       launcher_name_,
       base::Bind(&RunningApplicationObject::OnNameOwnerChanged,
                  base::Unretained(this)));
   watching_launcher_ = false;
 
-  application_->Close();
+  application_->Terminate();
 }
 
 void RunningApplicationObject::OnExported(const std::string& interface_name,
@@ -105,7 +105,7 @@ void RunningApplicationObject::OnTerminate(
     return;
   }
 
-  CloseApplication();
+  TerminateApplication();
 
   scoped_ptr<dbus::Response> response =
       dbus::Response::FromMethodCall(method_call);
@@ -122,7 +122,7 @@ void RunningApplicationObject::OnNameOwnerChanged(
 }
 
 void RunningApplicationObject::OnLauncherDisappeared() {
-  CloseApplication();
+  TerminateApplication();
 }
 
 }  // namespace application
index 53e037c..58de21e 100644 (file)
@@ -28,7 +28,7 @@ class RunningApplicationObject : public dbus::ManagedObject {
   ~RunningApplicationObject();
 
  private:
-  void CloseApplication();
+  void TerminateApplication();
 
   void OnExported(const std::string& interface_name,
                   const std::string& method_name,
index c745247..f44b2c3 100644 (file)
@@ -18,6 +18,7 @@ const char kLaunchWebURLKey[] = "app.launch.web_url";
 const char kManifestVersionKey[] = "manifest_version";
 const char kNameKey[] = "name";
 const char kPermissionsKey[] = "permissions";
+const char kURLKey[] = "url";
 const char kVersionKey[] = "version";
 const char kWebURLsKey[] = "app.urls";
 
index c572c20..1a92d08 100644 (file)
@@ -19,6 +19,7 @@ namespace application_manifest_keys {
   extern const char kManifestVersionKey[];
   extern const char kNameKey[];
   extern const char kPermissionsKey[];
+  extern const char kURLKey[];
   extern const char kVersionKey[];
   extern const char kWebURLsKey[];
 
index c4798a4..e1843a6 100644 (file)
@@ -72,7 +72,7 @@ static void on_app_properties_changed(GDBusProxy* proxy,
 
 int main(int argc, char** argv) {
   GError* error = NULL;
-  const char* appid;
+  char* appid;
 
 #if !GLIB_CHECK_VERSION(2, 36, 0)
   // g_type_init() is deprecated on GLib since 2.36, Tizen has 2.32.
@@ -82,16 +82,15 @@ int main(int argc, char** argv) {
   if (xwalk_tizen_set_home_for_user_app())
     exit(1);
 
-  if (argc >= 2) {
-    appid = argv[1];
-  } else {
-    if (!strcmp(basename(argv[0]), "xwalk-launcher")) {
+  if (!strcmp(basename(argv[0]), "xwalk-launcher")) {
+    if (argc < 2) {
       fprintf(stderr, "No AppID informed, nothing to do\n");
       exit(1);
     }
 
-    // We assume that we are running from a link to the xwalk-launcher binary.
-    appid = basename(argv[0]);
+    appid = argv[1];
+  } else {
+    appid = strdup(basename(argv[0]));
   }
 
   GDBusConnection* connection = get_session_bus_connection(&error);
index 1722e53..cb51dce 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 #if defined(OS_TIZEN_MOBILE)
 #include <appcore/appcore-common.h>
 #endif
@@ -56,7 +57,11 @@ static const char* event2str(enum app_event event) {
 }
 
 static void application_event_cb(enum app_event event, void* data, bundle* b) {
-  fprintf(stderr, "event %s\n", event2str(event));
+  fprintf(stderr, "event '%s'\n", event2str(event));
+
+  if (event == AE_TERMINATE) {
+    exit(0);
+  }
 }
 
 int xwalk_appcore_init(int argc, char** argv, const char* name) {
index 649ce73..3e570b8 100644 (file)
@@ -32,8 +32,8 @@ namespace {
 
 const base::FilePath kIconDir("/opt/share/icons/default/small/");
 const base::FilePath kXmlDir("/opt/share/packages/");
-const base::FilePath kApplicationsDir("/opt/usr/apps/applications/");
 const base::FilePath kXWalkLauncherBinary("/usr/bin/xwalk-launcher");
+const std::string kServicePrefix("xwalk-service.");
 
 class FileDeleter {
  public:
@@ -60,11 +60,12 @@ class FileDeleter {
 bool InstallApplication(const char* appid, const char* xmlpath,
                         const char* iconpath) {
   base::FilePath icon_src(iconpath);
-  // icon_dst == /opt/share/icons/default/small/<appid>.png
+  // icon_dst == /opt/share/icons/default/small/xwalk-service.<appid>.png
   // FIXME(vcgomes): Add support for more icon types
-  base::FilePath icon_dst = kIconDir.Append(std::string(appid) + ".png");
+  base::FilePath icon_dst = kIconDir.Append(
+      kServicePrefix + std::string(appid) + ".png");
   if (!base::CopyFile(icon_src, icon_dst)) {
-    fprintf(stderr, "Couldn't copy application icon to '%s'\n",
+    fprintf(stdout, "Couldn't copy application icon to '%s'\n",
             icon_dst.value().c_str());
     return false;
   }
@@ -72,73 +73,51 @@ bool InstallApplication(const char* appid, const char* xmlpath,
   FileDeleter icon_cleaner(icon_dst, false);
 
   base::FilePath xml_src(xmlpath);
-  base::FilePath xml_dst = kXmlDir.Append(std::string(appid) + ".xml");
+  base::FilePath xml_dst = kXmlDir.Append(
+      kServicePrefix + std::string(appid) + ".xml");
   if (!base::CopyFile(xml_src, xml_dst)) {
-    fprintf(stderr, "Couldn't copy application XML metadata to '%s'\n",
+    fprintf(stdout, "Couldn't copy application XML metadata to '%s'\n",
             xml_dst.value().c_str());
     return false;
   }
 
   FileDeleter xml_cleaner(xml_dst, false);
 
-  base::FilePath appdir = kApplicationsDir.Append(appid);
-  if (!file_util::CreateDirectoryAndGetError(appdir, NULL)) {
-    fprintf(stderr, "Couldn't create application directory '%s'\n",
-            appdir.value().c_str());
-    return false;
-  }
-
-  FileDeleter appdir_cleaner(appdir, true);
-
-  base::FilePath applink = appdir.Append("/bin");
-  if (!file_util::CreateSymbolicLink(kXWalkLauncherBinary, applink)) {
-    fprintf(stderr, "Couldn't create link to Crosswalk '%s'\n",
-            applink.value().c_str());
-    return false;
-  }
-
   if (pkgmgr_parser_parse_manifest_for_installation(xmlpath, NULL)) {
-    fprintf(stderr, "Couldn't parse manifest XML '%s'\n", xmlpath);
+    fprintf(stdout, "Couldn't parse manifest XML '%s'\n", xmlpath);
     return false;
   }
 
   icon_cleaner.Dismiss();
   xml_cleaner.Dismiss();
-  appdir_cleaner.Dismiss();
 
   return true;
 }
 
 bool UninstallApplication(const char* appid) {
   bool result = true;
-  char iconname[PATH_MAX];
 
   // FIXME(vcgomes): Add support for more icon types
-  base::FilePath icon_dst = kIconDir.Append(std::string(appid) + ".png");
+  base::FilePath icon_dst = kIconDir.Append(
+      kServicePrefix + std::string(appid) + ".png");
   if (!base::DeleteFile(icon_dst, false)) {
-    fprintf(stderr, "Couldn't delete '%s'\n", icon_dst.value().c_str());
+    fprintf(stdout, "Couldn't delete '%s'\n", icon_dst.value().c_str());
     result = false;
   }
 
   base::FilePath xmlpath(kXmlDir);
-  xmlpath = xmlpath.Append(std::string(appid) + ".xml");
+  xmlpath = xmlpath.Append(kServicePrefix + std::string(appid) + ".xml");
 
-  result = pkgmgr_parser_parse_manifest_for_uninstallation(
+  int ret = pkgmgr_parser_parse_manifest_for_uninstallation(
       xmlpath.value().c_str(), NULL);
-  if (result) {
-    fprintf(stderr, "Couldn't parse manifest XML '%s'\n",
+  if (ret) {
+    fprintf(stdout, "Couldn't parse manifest XML '%s'\n",
             xmlpath.value().c_str());
     result = false;
   }
 
   if (!base::DeleteFile(xmlpath, false)) {
-    fprintf(stderr, "Couldn't delete '%s'\n", xmlpath.value().c_str());
-    result = false;
-  }
-
-  base::FilePath appdir = kApplicationsDir.Append(appid);
-  if (!base::DeleteFile(appdir, true)) {
-    fprintf(stderr, "Couldn't delete '%s'\n", appdir.value().c_str());
+    fprintf(stdout, "Couldn't delete '%s'\n", xmlpath.value().c_str());
     result = false;
   }
 
@@ -150,7 +129,7 @@ int usage(const char* program) {
           basename(program));
   fprintf(stdout, "Usage: \n"
           "\t%s --install <appid> <xml> <icon>\n"
-          "\t%s --uinstall <appid>\n",
+          "\t%s --uninstall <appid>\n",
           program, program);
   return 1;
 }
@@ -163,6 +142,14 @@ int main(int argc, char *argv[]) {
   if (argc <= 2)
     return usage(argv[0]);
 
+  // When installing an application on Tizen, the libraries used require
+  // some steps to be run as root (UID 0) and fail otherwise, so we force
+  // this tool to assume the root UID.
+  if (setuid(0)) {
+    fprintf(stderr, "Make sure '%s' is set-user-ID-root\n", argv[0]);
+    return 1;;
+  }
+
   if (!strcmp(argv[1], "--install")) {
     if (argc != 5)
       return usage(argv[0]);
index 57259e9..e515441 100644 (file)
             'browser/installer/tizen/packageinfo_constants.h',
             'browser/installer/tizen/package_installer.cc',
             'browser/installer/tizen/package_installer.h',
+            'browser/installer/tizen/service_package_installer.cc',
+            'browser/installer/tizen/service_package_installer.h',
           ],
         }],
       ],
diff --git a/src/xwalk/build/android/xwalkcore_library_template/.classpath b/src/xwalk/build/android/xwalkcore_library_template/.classpath
new file mode 100644 (file)
index 0000000..7bc01d9
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="src" path="gen"/>
+       <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+       <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+       <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+       <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/src/xwalk/build/android/xwalkcore_library_template/.project b/src/xwalk/build/android/xwalkcore_library_template/.project
new file mode 100644 (file)
index 0000000..692938c
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>xwalk_core_library</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+                       <triggers>auto,full,incremental,</triggers>
+                       <arguments>
+                               <dictionary>
+                                       <key>LaunchConfigHandle</key>
+                                       <value>&lt;project&gt;/.externalToolBuilders/prepare_r_java.launch</value>
+                               </dictionary>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/src/xwalk/build/android/xwalkcore_library_template/project.properties b/src/xwalk/build/android/xwalkcore_library_template/project.properties
new file mode 100644 (file)
index 0000000..7d7d244
--- /dev/null
@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+android.library=true
+# Project target.
+target=android-18
index 727b41d..e97b759 100644 (file)
@@ -21,7 +21,11 @@ public abstract class XWalkExtensionAndroid {
     private int mXWalkExtension;
 
     public XWalkExtensionAndroid(String name, String jsApi) {
-        mXWalkExtension = nativeGetOrCreateExtension(name, jsApi);
+        mXWalkExtension = nativeGetOrCreateExtension(name, jsApi, null);
+    }
+
+    public XWalkExtensionAndroid(String name, String jsApi, String[] entryPoints) {
+        mXWalkExtension = nativeGetOrCreateExtension(name, jsApi, entryPoints);
     }
 
     protected void destroyExtension() {
@@ -58,7 +62,7 @@ public abstract class XWalkExtensionAndroid {
     @CalledByNative
     public abstract String handleSyncMessage(int instanceID, String message);
 
-    private native int nativeGetOrCreateExtension(String name, String jsApi);
+    private native int nativeGetOrCreateExtension(String name, String jsApi, String[] entryPoints);
     private native void nativePostMessage(int nativeXWalkExtensionAndroid, int instanceID, String message);
     private native void nativeBroadcastMessage(int nativeXWalkExtensionAndroid, String message);
     private native void nativeDestroyExtension(int nativeXWalkExtensionAndroid);
index 376916a..1462015 100644 (file)
@@ -4,7 +4,10 @@
 
 #include "xwalk/extensions/common/android/xwalk_extension_android.h"
 
+#include <vector>
+
 #include "base/android/jni_android.h"
+#include "base/android/jni_array.h"
 #include "base/bind.h"
 #include "base/logging.h"
 #include "jni/XWalkExtensionAndroid_jni.h"
@@ -16,7 +19,8 @@ namespace xwalk {
 namespace extensions {
 
 XWalkExtensionAndroid::XWalkExtensionAndroid(JNIEnv* env, jobject obj,
-                                             jstring name, jstring js_api)
+                                             jstring name, jstring js_api,
+                                             jobjectArray js_entry_points)
     : XWalkExtension(),
       java_ref_(env, obj),
       next_instance_id_(1) {
@@ -27,6 +31,15 @@ XWalkExtensionAndroid::XWalkExtensionAndroid(JNIEnv* env, jobject obj,
   str = env->GetStringUTFChars(js_api, 0);
   set_javascript_api(str);
   env->ReleaseStringUTFChars(js_api, str);
+
+  std::vector<std::string> entry_points;
+  base::android::AppendJavaStringArrayToStringVector(
+      env, js_entry_points, &entry_points);
+
+  if (!entry_points.size())
+    return;
+
+  set_entry_points(entry_points);
 }
 
 XWalkExtensionAndroid::~XWalkExtensionAndroid() {
@@ -183,8 +196,8 @@ void XWalkExtensionAndroidInstance::HandleSyncMessage(
   SendSyncReplyToJS(scoped_ptr<base::Value>(ret_val));
 }
 
-static jint GetOrCreateExtension(JNIEnv* env, jobject obj,
-                                 jstring name, jstring js_api) {
+static jint GetOrCreateExtension(JNIEnv* env, jobject obj, jstring name,
+                                 jstring js_api, jobjectArray js_entry_points) {
   xwalk::XWalkBrowserMainPartsAndroid* main_parts =
       ToAndroidMainParts(XWalkContentBrowserClient::Get()->main_parts());
 
@@ -194,7 +207,8 @@ static jint GetOrCreateExtension(JNIEnv* env, jobject obj,
 
   // Create a new extension object if no existing one is found.
   if (!extension) {
-    extension = new XWalkExtensionAndroid(env, obj, name, js_api);
+    extension = new XWalkExtensionAndroid(env, obj, name,
+                                          js_api, js_entry_points);
     main_parts->RegisterExtension(scoped_ptr<XWalkExtension>(extension));
   } else {
     static_cast<XWalkExtensionAndroid*>(extension)->BindToJavaObject(env, obj);
index 570340f..76103c0 100644 (file)
@@ -46,7 +46,8 @@ class XWalkExtensionAndroidInstance;
 // created for the same extension identified the extension name.
 class XWalkExtensionAndroid : public XWalkExtension {
  public:
-  XWalkExtensionAndroid(JNIEnv* env, jobject obj, jstring name, jstring js_api);
+  XWalkExtensionAndroid(JNIEnv* env, jobject obj, jstring name,
+                        jstring js_api, jobjectArray js_entry_ports);
   virtual ~XWalkExtensionAndroid();
 
   // JNI interface to post message from Java to JS
index 41a7cd1..2fa3961 100644 (file)
@@ -1,5 +1,5 @@
 Name:           crosswalk
-Version:        4.32.73.0
+Version:        4.32.74.0
 Release:        0
 Summary:        Crosswalk is an app runtime based on Chromium
 # License:        (BSD-3-Clause and LGPL-2.1+)
@@ -243,7 +243,8 @@ install -p -D %{SOURCE3} %{buildroot}%{_systemduserservicedir}/xwalk.service
 install -p -D ${BUILDDIR_NAME}/out/Release/xwalk %{buildroot}%{_libdir}/xwalk/xwalk
 install -p -D ${BUILDDIR_NAME}/out/Release/xwalkctl %{buildroot}%{_bindir}/xwalkctl
 install -p -D ${BUILDDIR_NAME}/out/Release/xwalk-launcher %{buildroot}%{_bindir}/xwalk-launcher
-install -p -D ${BUILDDIR_NAME}/out/Release/xwalk-pkg-helper %{buildroot}%{_bindir}/xwalk-pkg-helper
+# xwalk-pkg-helper needs to be set-user-ID-root so it can finish the installation process.
+install -m 06755 -p -D ${BUILDDIR_NAME}/out/Release/xwalk-pkg-helper %{buildroot}%{_bindir}/xwalk-pkg-helper
 
 # Supporting libraries and resources.
 install -p -D ${BUILDDIR_NAME}/out/Release/libffmpegsumo.so %{buildroot}%{_libdir}/xwalk/libffmpegsumo.so
index a408c17..34bf8b7 100644 (file)
@@ -5,8 +5,10 @@
 package org.xwalk.core.xwview.shell;
 
 import android.app.Activity;
+import android.content.BroadcastReceiver;
 import android.content.Intent;
 import android.content.Context;
+import android.content.IntentFilter;
 import android.graphics.drawable.ClipDrawable;
 import android.os.Bundle;
 import android.os.Looper;
@@ -35,6 +37,7 @@ public class XWalkViewShellActivity extends Activity {
     private static final String TAG = XWalkViewShellActivity.class.getName();
     public static final String COMMAND_LINE_ARGS_KEY = "commandLineArgs";
     private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200;
+    private static final String ACTION_LAUNCH_URL = "org.xwalk.core.xwview.shell.launch";
 
     private LinearLayout mToolbar;
     private EditText mUrlTextView;
@@ -45,6 +48,7 @@ public class XWalkViewShellActivity extends Activity {
     private ClipDrawable mProgressDrawable;
     private XWalkView mView;
     private TracingControllerAndroid mTracingController;
+    private BroadcastReceiver mReceiver;
 
     private Runnable mClearProgressRunnable = new Runnable() {
         @Override
@@ -111,6 +115,21 @@ public class XWalkViewShellActivity extends Activity {
         initializeButtons();
         initializeXWalkViewClients();
 
+        IntentFilter intentFilter = new IntentFilter(ACTION_LAUNCH_URL);
+        mReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                Bundle bundle = intent.getExtras();
+                if (bundle == null)
+                    return;
+
+                if (bundle.containsKey("url")) {
+                    String extra = bundle.getString("url");
+                    mView.loadUrl(sanitizeUrl(extra));
+                }
+            }
+        };
+        registerReceiver(mReceiver, intentFilter);
         mView.enableRemoteDebugging();
     }
 
@@ -129,6 +148,7 @@ public class XWalkViewShellActivity extends Activity {
     @Override
     public void onDestroy() {
         super.onDestroy();
+        unregisterReceiver(mReceiver);
         unregisterTracingReceiver();
         mView.onDestroy();
     }
index b792c43..698eb59 100644 (file)
@@ -19,7 +19,7 @@ class XWalkCoreExtensionBridge extends XWalkExtensionAndroid implements XWalkExt
     private XWalkExtension mExtension;
 
     public XWalkCoreExtensionBridge(XWalkExtension extension) {
-        super(extension.getExtensionName(), extension.getJsApi());
+        super(extension.getExtensionName(), extension.getJsApi(), extension.getEntryPoints());
         mExtension = extension;
     }
 
index 0e5c5f1..f3ba7a4 100644 (file)
@@ -20,6 +20,10 @@ public abstract class XWalkExtension {
     // The JavaScript code stub. Will be injected to JS engine.
     protected String mJsApi;
 
+    // The entry points are used when extension needs to have objects outside
+    // the namespace that is implicitly created using its name.
+    protected String[] mEntryPoints;
+
     // The context used by extensions.
     protected XWalkExtensionContext mExtensionContext;
 
@@ -33,6 +37,23 @@ public abstract class XWalkExtension {
     public XWalkExtension(String name, String jsApi, XWalkExtensionContext context) {
         mName = name;
         mJsApi = jsApi;
+        mEntryPoints = null;
+        mExtensionContext = context;
+        mExtensionContext.registerExtension(this);
+    }
+
+    /**
+     * Constructor with the information of an extension.
+     * @param name the extension name.
+     * @param apiVersion the version of API.
+     * @param jsApi the code stub of JavaScript for this extension.
+     * @param entryPoints the entry points of JavaScript for this extension.
+     * @param context the extension context.
+     */
+    public XWalkExtension(String name, String jsApi, String[] entryPoints, XWalkExtensionContext context) {
+        mName = name;
+        mJsApi = jsApi;
+        mEntryPoints = entryPoints;
         mExtensionContext = context;
         mExtensionContext.registerExtension(this);
     }
@@ -54,6 +75,14 @@ public abstract class XWalkExtension {
     }
 
     /**
+     * Get the entry points of extension.
+     * @return the entry points.
+     */
+    public String[] getEntryPoints() {
+        return mEntryPoints;
+    }
+
+    /**
      * JavaScript calls into Java code. The message is handled by
      * the extension implementation. The inherited classes should
      * override and add its implementation.
index 6d2d6a6..eb1e9d9 100644 (file)
@@ -149,14 +149,12 @@ public class XWalkExtensionManager implements XWalkExtensionContext {
         }
 
         {
-            String jsApiContent = "var is_android_platform = true;\n";
-            jsApiContent += "var uaDefault = ";
-            jsApiContent += ScreenOrientationExtension.ANY;
-            jsApiContent += ";\n";
+            String jsApiContent = ScreenOrientationExtension.getInsertedString();
             try {
                 jsApiContent += getAssetsFileContent(mContext.getAssets(),
                                                      ScreenOrientationExtension.JS_API_PATH);
-                new ScreenOrientationExtension(ScreenOrientationExtension.NAME, jsApiContent, this);
+                new ScreenOrientationExtension(ScreenOrientationExtension.NAME, jsApiContent,
+                                               ScreenOrientationExtension.JS_ENTRY_POINTS, this);
             } catch (IOException e) {
                 Log.e(TAG, "Failed to read JS API file: " + ScreenOrientationExtension.JS_API_PATH);
             }
index fc4196b..05f8916 100644 (file)
@@ -20,6 +20,10 @@ public class ScreenOrientationExtension extends XWalkExtension {
     public final static String NAME = "xwalk.screen";
     public final static String JS_API_PATH = "jsapi/screen_orientation_api.js";
     public final static String JS_VALUE_TYPE = "value";
+    public final static String[] JS_ENTRY_POINTS = {
+        "window.screen.lockOrientation",
+        "window.screen.unlockOrientation"
+    };
     public final static int PORTRAIT_PRIMARY = 1 << 0;
     public final static int LANDSCAPE_PRIMARY = 1 << 1;
     public final static int PORTRAIT_SECONDARY  = 1 << 2;
@@ -42,8 +46,17 @@ public class ScreenOrientationExtension extends XWalkExtension {
         }
     }
 
-    public ScreenOrientationExtension(String name, String jsApi, XWalkExtensionContext context) {
-        super(name, jsApi, context);
+    public static String getInsertedString() {
+        String insertedString = "var is_android_platform = true;\n";
+        insertedString += "var uaDefault = ";
+        insertedString += ANY;
+        insertedString += ";\n";
+
+        return insertedString;
+    }
+
+    public ScreenOrientationExtension(String name, String jsApi, String[] entryPoints, XWalkExtensionContext context) {
+        super(name, jsApi, entryPoints, context);
     }
 
     @Override
index 15e26f0..5a9d39f 100644 (file)
@@ -22,7 +22,7 @@ NativeAppWindowTizen::NativeAppWindowTizen(
     : NativeAppWindowViews(create_params),
       indicator_widget_(new TizenSystemIndicatorWidget()),
       allowed_orientations_(ANY) {
-  indicator_container_.reset(new WidgetContainerView(indicator_widget_.get()));
+  indicator_container_.reset(new WidgetContainerView(indicator_widget_));
 }
 
 void NativeAppWindowTizen::Initialize() {
@@ -52,9 +52,6 @@ void NativeAppWindowTizen::Initialize() {
 NativeAppWindowTizen::~NativeAppWindowTizen() {
   if (SensorProvider::GetInstance())
     SensorProvider::GetInstance()->RemoveObserver(this);
-  aura::Window* root_window = GetNativeWindow()->GetRootWindow();
-  DCHECK(root_window);
-  root_window->RemoveObserver(this);
 }
 
 void NativeAppWindowTizen::ViewHierarchyChanged(
@@ -81,6 +78,12 @@ void NativeAppWindowTizen::OnWindowBoundsChanged(
   GetWidget()->GetRootView()->SetSize(new_bounds.size());
 }
 
+void NativeAppWindowTizen::OnWindowDestroying(aura::Window* window) {
+  // Must be removed here and not in the destructor, as the aura::Window is
+  // already destroyed when our destructor runs.
+  window->RemoveObserver(this);
+}
+
 void NativeAppWindowTizen::OnWindowVisibilityChanging(
     aura::Window* window, bool visible) {
   if (visible)
index 73accc6..aa7e764 100644 (file)
@@ -39,6 +39,7 @@ class NativeAppWindowTizen
   virtual void OnWindowBoundsChanged(aura::Window* window,
                                      const gfx::Rect& old_bounds,
                                      const gfx::Rect& new_bounds) OVERRIDE;
+  virtual void OnWindowDestroying(aura::Window* window) OVERRIDE;
 
   // views::View overrides:
   virtual void ViewHierarchyChanged(
@@ -62,7 +63,8 @@ class NativeAppWindowTizen
   // content, regular views do not support this. We add it to the container,
   // that is a view that doesn't draw anything, just passes the bounds
   // information to the topview layout.
-  scoped_ptr<TizenSystemIndicatorWidget> indicator_widget_;
+  // The |indicator_widget_| is owned by the WidgetContainerView.
+  TizenSystemIndicatorWidget* indicator_widget_;
   scoped_ptr<WidgetContainerView> indicator_container_;
   gfx::Display display_;
   OrientationMask allowed_orientations_;
index 4ba3020..9c416b0 100644 (file)
@@ -16,9 +16,8 @@ import org.xwalk.test.util.RuntimeClientApiTestBase;
  * Test suite for W3C Screen Orientation API.
  */
 public class ScreenOrientationTest extends XWalkRuntimeClientTestBase {
-    // @SmallTest
-    // @Feature({"ScreenOrientationTest"})
-    @DisabledTest
+    @SmallTest
+    @Feature({"ScreenOrientationTest"})
     public void testScreenOrientation() throws Throwable {
         RuntimeClientApiTestBase<XWalkRuntimeClientShellActivity> helper =
                 new RuntimeClientApiTestBase<XWalkRuntimeClientShellActivity>(
index 016c8d5..048ec35 100644 (file)
@@ -16,9 +16,8 @@ import org.xwalk.test.util.RuntimeClientApiTestBase;
  * Test suite for W3C Screen Orientation API.
  */
 public class ScreenOrientationTest extends XWalkRuntimeClientTestBase {
-    // @SmallTest
-    // @Feature({"ScreenOrientationTest"})
-    @DisabledTest
+    @SmallTest
+    @Feature({"ScreenOrientationTest"})
     public void testScreenOrientation() throws Throwable {
         RuntimeClientApiTestBase<XWalkRuntimeClientEmbeddedShellActivity> helper =
                 new RuntimeClientApiTestBase<XWalkRuntimeClientEmbeddedShellActivity>(
diff --git a/src/xwalk/wiki/images/rebase-feature-x-30.png b/src/xwalk/wiki/images/rebase-feature-x-30.png
new file mode 100644 (file)
index 0000000..56c24bc
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-feature-x-30.png differ
diff --git a/src/xwalk/wiki/images/rebase-feature-y-30.png b/src/xwalk/wiki/images/rebase-feature-y-30.png
new file mode 100644 (file)
index 0000000..4e2734a
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-feature-y-30.png differ
diff --git a/src/xwalk/wiki/images/rebase-feature-y-31.png b/src/xwalk/wiki/images/rebase-feature-y-31.png
new file mode 100644 (file)
index 0000000..1b37bcf
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-feature-y-31.png differ
diff --git a/src/xwalk/wiki/images/rebase-feature-z-30.png b/src/xwalk/wiki/images/rebase-feature-z-30.png
new file mode 100644 (file)
index 0000000..949c9fa
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-feature-z-30.png differ
diff --git a/src/xwalk/wiki/images/rebase-feature-z-31.png b/src/xwalk/wiki/images/rebase-feature-z-31.png
new file mode 100644 (file)
index 0000000..b21681a
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-feature-z-31.png differ
diff --git a/src/xwalk/wiki/images/rebase-initial-state.png b/src/xwalk/wiki/images/rebase-initial-state.png
new file mode 100644 (file)
index 0000000..b67a501
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-initial-state.png differ
diff --git a/src/xwalk/wiki/images/rebase-next.png b/src/xwalk/wiki/images/rebase-next.png
new file mode 100644 (file)
index 0000000..830f87c
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-next.png differ
diff --git a/src/xwalk/wiki/images/rebase-upstream-31.png b/src/xwalk/wiki/images/rebase-upstream-31.png
new file mode 100644 (file)
index 0000000..f6240c9
Binary files /dev/null and b/src/xwalk/wiki/images/rebase-upstream-31.png differ