You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2018/05/16 12:09:22 UTC
[4/5] incubator-weex git commit: * [core] Use gnustl runtime.
* [core] Use gnustl runtime.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/02d9983e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/02d9983e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/02d9983e
Branch: refs/heads/master
Commit: 02d9983e0044042fa7ad4d026af6e35e4ee9d3ff
Parents: ef12b7b
Author: miomin <69...@qq.com>
Authored: Tue May 15 19:39:08 2018 +0800
Committer: miomin <69...@qq.com>
Committed: Wed May 16 19:34:37 2018 +0800
----------------------------------------------------------------------
android/sdk/build.gradle | 5 +-
android/sdk/libs/armeabi/libweexjsc.so | Bin 948168 -> 1320820 bytes
weex_core/Source/CMakeLists.txt | 1 -
.../bridge/impl/weexcore_impl_android.cpp | 54 ---
weex_core/Source/base/Compatible.cpp | 122 -------
weex_core/Source/base/ViewUtils.h | 8 +
weex_core/Source/base/fpconv.cpp | 332 -------------------
weex_core/Source/base/fpconv.h | 33 --
weex_core/Source/base/powers.h | 129 -------
weex_core/Source/core/layout/layout.cpp | 1 +
weex_core/Source/core/parser/dom_parser.cpp | 30 +-
weex_core/Source/core/render/node/render_list.h | 12 +-
weex_core/Source/core/render/node/render_mask.h | 4 +-
.../Source/core/render/node/render_object.h | 1 +
.../Source/core/render/page/render_page.cpp | 42 +--
weex_core/Source/core/render/page/render_page.h | 13 +-
16 files changed, 27 insertions(+), 760 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/android/sdk/build.gradle
----------------------------------------------------------------------
diff --git a/android/sdk/build.gradle b/android/sdk/build.gradle
index 7eed76a..6fd1ee8 100755
--- a/android/sdk/build.gradle
+++ b/android/sdk/build.gradle
@@ -120,7 +120,7 @@ android {
cmake {
arguments '-DANDROID_PLATFORM=android-19',
'-DANDROID_TOOLCHAIN=gcc',
- '-DANDROID_STL=c++_static',
+ '-DANDROID_STL=gnustl_static',
'-DCMAKE_BUILD_TYPE=Release'
}
}
@@ -215,9 +215,6 @@ if(file('../license/LICENSE').exists()){
'Source/android/base/base64/**/*.h','Source/android/base/base64/**/*.cpp',
'Source/android/jniprebuild/jniheader/*.h',
'Source/base/Compatible.cpp',
- 'Source/base/fpconv.cpp',
- 'Source/base/fpconv.h',
- 'Source/base/powers.h',
'Source/IPC/**/*.h','Source/IPC/**/*.cpp'])
}
preBuild.dependsOn licenseFormat
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/android/sdk/libs/armeabi/libweexjsc.so
----------------------------------------------------------------------
diff --git a/android/sdk/libs/armeabi/libweexjsc.so b/android/sdk/libs/armeabi/libweexjsc.so
index bb45615..eb909cd 100644
Binary files a/android/sdk/libs/armeabi/libweexjsc.so and b/android/sdk/libs/armeabi/libweexjsc.so differ
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/weex_core/Source/CMakeLists.txt b/weex_core/Source/CMakeLists.txt
index ef92a1f..77ba922 100644
--- a/weex_core/Source/CMakeLists.txt
+++ b/weex_core/Source/CMakeLists.txt
@@ -24,7 +24,6 @@ include_directories("include")
add_library(weexjsc SHARED
- ./base/fpconv.cpp
./android/jniprebuild/jni_load.cc
./android/base/jni/android_jni.cpp
./android/base/jni/scoped_java_ref.cpp
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
index d7bc154..ef79558 100644
--- a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
@@ -189,60 +189,6 @@ static jlongArray GetRenderFinishTime(JNIEnv *env, jobject jcaller, jstring inst
return jRet;
}
-static jlong GetFirstScreenCallBridgeTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetFirstScreenCallBridgeTime();
-}
-
-static jlong GetFirstScreenCssLayoutTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetFirstScreenCssLayoutTime();
-}
-
-static jlong GetFirstScreenParseJsonTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetFirstScreenParseJsonTime();
-}
-
-static jlong GetOnRenderSuccessCallBridgeTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetOnRenderSuccessCallBridgeTime();
-}
-
-static jlong GetOnRenderSuccessCssLayoutTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetOnRenderSuccessCssLayoutTime();
-}
-
-static jlong GetOnRenderSuccessParseJsonTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetOnRenderSuccessParseJsonTime();
-}
-
//Notice that this method is invoked from main thread.
static jboolean NotifyLayout(JNIEnv* env, jobject jcaller, jstring instanceId) {
RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/Compatible.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/Compatible.cpp b/weex_core/Source/base/Compatible.cpp
deleted file mode 100644
index 3fb0e5c..0000000
--- a/weex_core/Source/base/Compatible.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <ctype.h>
-#include <errno.h>
-#include <grp.h>
-#include <math.h>
-#include <mntent.h>
-#include <netdb.h>
-#include <pthread.h>
-#include <pwd.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-namespace WeexCore {
-int sigemptyset(sigset_t *set) {
- if (set == NULL) {
- errno = EINVAL;
- return -1;
- }
- memset(set, 0, sizeof(sigset_t));
- return 0;
-}
-
-int sigfillset(sigset_t *set) {
- if (set == NULL) {
- errno = EINVAL;
- return -1;
- }
- memset(set, ~0, sizeof(sigset_t));
- return 0;
-}
-
-int sigaddset(sigset_t *set, int signum) {
- int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
- unsigned long *local_set = reinterpret_cast<unsigned long *>(set);
- if (set == NULL || bit < 0 || bit >= static_cast<int>(8 * sizeof(sigset_t))) {
- errno = EINVAL;
- return -1;
- }
- local_set[bit / LONG_BIT] |= 1UL << (bit % LONG_BIT);
- return 0;
-}
-
-int sigdelset(sigset_t *set, int signum) {
- int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
- unsigned long *local_set = reinterpret_cast<unsigned long *>(set);
- if (set == NULL || bit < 0 || bit >= static_cast<int>(8 * sizeof(sigset_t))) {
- errno = EINVAL;
- return -1;
- }
- local_set[bit / LONG_BIT] &= ~(1UL << (bit % LONG_BIT));
- return 0;
-}
-
-int getpagesize() {
- // We dont use sysconf(3) here because that drags in stdio, which makes static binaries fat.
- return PAGE_SIZE;
-}
-
-void srandom(unsigned int __s) { srand48(__s); }
-
-int isinf(double n) {
- return __builtin_isinf(n);
-}
-
-int posix_memalign(void **memptr, size_t alignment, size_t bytes) {
- if (!memptr)
- return EINVAL;
- *memptr = memalign(alignment, bytes);
- if (!*memptr)
- return ENOMEM;
- return 0;
-}
-
-int sigismember(const sigset_t *set, int signum) {
- int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
- const unsigned long *local_set = reinterpret_cast<const unsigned long *>(set);
- if (set == NULL || bit < 0 || bit >= static_cast<int>(8 * sizeof(sigset_t))) {
- errno = EINVAL;
- return -1;
- }
- return static_cast<int>((local_set[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1);
-}
-
-int abs(int j) {
- return (j < 0 ? -j : j);
-}
-
-long labs(long j) {
- return (j < 0 ? -j : j);
-}
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/ViewUtils.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/ViewUtils.h b/weex_core/Source/base/ViewUtils.h
index 8983326..f73aeca 100644
--- a/weex_core/Source/base/ViewUtils.h
+++ b/weex_core/Source/base/ViewUtils.h
@@ -22,6 +22,7 @@
#include <core/config/core_environment.h>
#include <cmath>
#include <cstdlib>
+#include <sstream>
namespace WeexCore {
@@ -32,6 +33,13 @@ namespace WeexCore {
const std::string AUTO_UNIT("auto");
const std::string NONE("none");
+ template<typename T>
+ inline std::string to_string(const T &n) {
+ std::ostringstream stm;
+ stm << n;
+ return stm.str();
+ }
+
inline std::string &Trim(std::string &s) {
if (s.empty()) {
return s;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/fpconv.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/fpconv.cpp b/weex_core/Source/base/fpconv.cpp
deleted file mode 100755
index 3fbd55a..0000000
--- a/weex_core/Source/base/fpconv.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-#include <stdbool.h>
-#include <string.h>
-
-#include "fpconv.h"
-#include "powers.h"
-
-#define fracmask 0x000FFFFFFFFFFFFFU
-#define expmask 0x7FF0000000000000U
-#define hiddenbit 0x0010000000000000U
-#define signmask 0x8000000000000000U
-#define expbias (1023 + 52)
-
-#define absv(n) ((n) < 0 ? -(n) : (n))
-#define minv(a, b) ((a) < (b) ? (a) : (b))
-
-static uint64_t tens[] = {
- 10000000000000000000U, 1000000000000000000U, 100000000000000000U,
- 10000000000000000U, 1000000000000000U, 100000000000000U,
- 10000000000000U, 1000000000000U, 100000000000U,
- 10000000000U, 1000000000U, 100000000U,
- 10000000U, 1000000U, 100000U,
- 10000U, 1000U, 100U,
- 10U, 1U
-};
-
-static inline uint64_t get_dbits(double d)
-{
- union {
- double dbl;
- uint64_t i;
- } dbl_bits = { d };
-
- return dbl_bits.i;
-}
-
-static Fp build_fp(double d)
-{
- uint64_t bits = get_dbits(d);
-
- Fp fp;
- fp.frac = bits & fracmask;
- fp.exp = (bits & expmask) >> 52;
-
- if(fp.exp) {
- fp.frac += hiddenbit;
- fp.exp -= expbias;
-
- } else {
- fp.exp = -expbias + 1;
- }
-
- return fp;
-}
-
-static void normalize(Fp* fp)
-{
- while ((fp->frac & hiddenbit) == 0) {
- fp->frac <<= 1;
- fp->exp--;
- }
-
- int shift = 64 - 52 - 1;
- fp->frac <<= shift;
- fp->exp -= shift;
-}
-
-static void get_normalized_boundaries(Fp* fp, Fp* lower, Fp* upper)
-{
- upper->frac = (fp->frac << 1) + 1;
- upper->exp = fp->exp - 1;
-
- while ((upper->frac & (hiddenbit << 1)) == 0) {
- upper->frac <<= 1;
- upper->exp--;
- }
-
- int u_shift = 64 - 52 - 2;
-
- upper->frac <<= u_shift;
- upper->exp = upper->exp - u_shift;
-
-
- int l_shift = fp->frac == hiddenbit ? 2 : 1;
-
- lower->frac = (fp->frac << l_shift) - 1;
- lower->exp = fp->exp - l_shift;
-
-
- lower->frac <<= lower->exp - upper->exp;
- lower->exp = upper->exp;
-}
-
-static Fp multiply(Fp* a, Fp* b)
-{
- const uint64_t lomask = 0x00000000FFFFFFFF;
-
- uint64_t ah_bl = (a->frac >> 32) * (b->frac & lomask);
- uint64_t al_bh = (a->frac & lomask) * (b->frac >> 32);
- uint64_t al_bl = (a->frac & lomask) * (b->frac & lomask);
- uint64_t ah_bh = (a->frac >> 32) * (b->frac >> 32);
-
- uint64_t tmp = (ah_bl & lomask) + (al_bh & lomask) + (al_bl >> 32);
- /* round up */
- tmp += 1U << 31;
-
- Fp fp = {
- ah_bh + (ah_bl >> 32) + (al_bh >> 32) + (tmp >> 32),
- a->exp + b->exp + 64
- };
-
- return fp;
-}
-
-static void round_digit(char* digits, int ndigits, uint64_t delta, uint64_t rem, uint64_t kappa, uint64_t frac)
-{
- while (rem < frac && delta - rem >= kappa &&
- (rem + kappa < frac || frac - rem > rem + kappa - frac)) {
-
- digits[ndigits - 1]--;
- rem += kappa;
- }
-}
-
-static int generate_digits(Fp* fp, Fp* upper, Fp* lower, char* digits, int* K)
-{
- uint64_t wfrac = upper->frac - fp->frac;
- uint64_t delta = upper->frac - lower->frac;
-
- Fp one;
- one.frac = 1ULL << -upper->exp;
- one.exp = upper->exp;
-
- uint64_t part1 = upper->frac >> -one.exp;
- uint64_t part2 = upper->frac & (one.frac - 1);
-
- int idx = 0, kappa = 10;
- uint64_t* divp;
- /* 1000000000 */
- for(divp = tens + 10; kappa > 0; divp++) {
-
- uint64_t div = *divp;
- unsigned digit = part1 / div;
-
- if (digit || idx) {
- digits[idx++] = digit + '0';
- }
-
- part1 -= digit * div;
- kappa--;
-
- uint64_t tmp = (part1 <<-one.exp) + part2;
- if (tmp <= delta) {
- *K += kappa;
- round_digit(digits, idx, delta, tmp, div << -one.exp, wfrac);
-
- return idx;
- }
- }
-
- /* 10 */
- uint64_t* unit = tens + 18;
-
- while(true) {
- part2 *= 10;
- delta *= 10;
- kappa--;
-
- unsigned digit = part2 >> -one.exp;
- if (digit || idx) {
- digits[idx++] = digit + '0';
- }
-
- part2 &= one.frac - 1;
- if (part2 < delta) {
- *K += kappa;
- round_digit(digits, idx, delta, part2, one.frac, wfrac * *unit);
-
- return idx;
- }
-
- unit--;
- }
-}
-
-static int grisu2(double d, char* digits, int* K)
-{
- Fp w = build_fp(d);
-
- Fp lower, upper;
- get_normalized_boundaries(&w, &lower, &upper);
-
- normalize(&w);
-
- int k;
- Fp cp = find_cachedpow10(upper.exp, &k);
-
- w = multiply(&w, &cp);
- upper = multiply(&upper, &cp);
- lower = multiply(&lower, &cp);
-
- lower.frac++;
- upper.frac--;
-
- *K = -k;
-
- return generate_digits(&w, &upper, &lower, digits, K);
-}
-
-static int emit_digits(char* digits, int ndigits, char* dest, int K, bool neg)
-{
- int exp = absv(K + ndigits - 1);
-
- /* write plain integer */
- if(K >= 0 && (exp < (ndigits + 7))) {
- memcpy(dest, digits, ndigits);
- memset(dest + ndigits, '0', K);
-
- return ndigits + K;
- }
-
- /* write decimal w/o scientific notation */
- if(K < 0 && (K > -7 || exp < 4)) {
- int offset = ndigits - absv(K);
- /* fp < 1.0 -> write leading zero */
- if(offset <= 0) {
- offset = -offset;
- dest[0] = '0';
- dest[1] = '.';
- memset(dest + 2, '0', offset);
- memcpy(dest + offset + 2, digits, ndigits);
-
- return ndigits + 2 + offset;
-
- /* fp > 1.0 */
- } else {
- memcpy(dest, digits, offset);
- dest[offset] = '.';
- memcpy(dest + offset + 1, digits + offset, ndigits - offset);
-
- return ndigits + 1;
- }
- }
-
- /* write decimal w/ scientific notation */
- ndigits = minv(ndigits, 18 - neg);
-
- int idx = 0;
- dest[idx++] = digits[0];
-
- if(ndigits > 1) {
- dest[idx++] = '.';
- memcpy(dest + idx, digits + 1, ndigits - 1);
- idx += ndigits - 1;
- }
-
- dest[idx++] = 'e';
-
- char sign = K + ndigits - 1 < 0 ? '-' : '+';
- dest[idx++] = sign;
-
- int cent = 0;
-
- if(exp > 99) {
- cent = exp / 100;
- dest[idx++] = cent + '0';
- exp -= cent * 100;
- }
- if(exp > 9) {
- int dec = exp / 10;
- dest[idx++] = dec + '0';
- exp -= dec * 10;
-
- } else if(cent) {
- dest[idx++] = '0';
- }
-
- dest[idx++] = exp % 10 + '0';
-
- return idx;
-}
-
-static int filter_special(double fp, char* dest)
-{
- if(fp == 0.0) {
- dest[0] = '0';
- return 1;
- }
-
- uint64_t bits = get_dbits(fp);
-
- bool nan = (bits & expmask) == expmask;
-
- if(!nan) {
- return 0;
- }
-
- if(bits & fracmask) {
- dest[0] = 'n'; dest[1] = 'a'; dest[2] = 'n';
-
- } else {
- dest[0] = 'i'; dest[1] = 'n'; dest[2] = 'f';
- }
-
- return 3;
-}
-
-int fpconv_dtoa(double d, char dest[24])
-{
- char digits[18];
-
- int str_len = 0;
- bool neg = false;
-
- if(get_dbits(d) & signmask) {
- dest[0] = '-';
- str_len++;
- neg = true;
- }
-
- int spec = filter_special(d, dest + str_len);
-
- if(spec) {
- return str_len + spec;
- }
-
- int K = 0;
- int ndigits = grisu2(d, digits, &K);
-
- str_len += emit_digits(digits, ndigits, dest + str_len, K, neg);
-
- return str_len;
-}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/fpconv.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/fpconv.h b/weex_core/Source/base/fpconv.h
deleted file mode 100755
index 58bbccc..0000000
--- a/weex_core/Source/base/fpconv.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef FPCONV_H
-#define FPCONV_H
-
-/* Fast and accurate double to string conversion based on Florian Loitsch's
- * Grisu-algorithm[1].
- *
- * Input:
- * fp -> the double to convert, dest -> destination buffer.
- * The generated string will never be longer than 24 characters.
- * Make sure to pass a pointer to at least 24 bytes of memory.
- * The emitted string will not be null terminated.
- *
- * Output:
- * The number of written characters.
- *
- * Exemplary usage:
- *
- * void print(double d)
- * {
- * char buf[24 + 1] // plus null terminator
- * int str_len = fpconv_dtoa(d, buf);
- *
- * buf[str_len] = '\0';
- * printf("%s", buf);
- * }
- *
- */
-
-int fpconv_dtoa(double fp, char dest[24]);
-
-#endif
-
-/* [1] http://florian.loitsch.com/publications/dtoa-pldi2010.pdf */
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/powers.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/powers.h b/weex_core/Source/base/powers.h
deleted file mode 100755
index 52e5da5..0000000
--- a/weex_core/Source/base/powers.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#include <stdint.h>
-
-#define npowers 87
-#define steppowers 8
-#define firstpower -348 /* 10 ^ -348 */
-
-#define expmax -32
-#define expmin -60
-
-
-typedef struct Fp {
- uint64_t frac;
- int exp;
-} Fp;
-
-static Fp powers_ten[] = {
- {18054884314459144840U, -1220},
- {13451937075301367670U, -1193},
- {10022474136428063862U, -1166},
- {14934650266808366570U, -1140},
- {11127181549972568877U, -1113},
- {16580792590934885855U, -1087},
- {12353653155963782858U, -1060},
- {18408377700990114895U, -1034},
- {13715310171984221708U, -1007},
- {10218702384817765436U, -980},
- {15227053142812498563U, -954},
- {11345038669416679861U, -927},
- {16905424996341287883U, -901},
- {12595523146049147757U, -874},
- {9384396036005875287U, -847},
- {13983839803942852151U, -821},
- {10418772551374772303U, -794},
- {15525180923007089351U, -768},
- {11567161174868858868U, -741},
- {17236413322193710309U, -715},
- {12842128665889583758U, -688},
- {9568131466127621947U, -661},
- {14257626930069360058U, -635},
- {10622759856335341974U, -608},
- {15829145694278690180U, -582},
- {11793632577567316726U, -555},
- {17573882009934360870U, -529},
- {13093562431584567480U, -502},
- {9755464219737475723U, -475},
- {14536774485912137811U, -449},
- {10830740992659433045U, -422},
- {16139061738043178685U, -396},
- {12024538023802026127U, -369},
- {17917957937422433684U, -343},
- {13349918974505688015U, -316},
- {9946464728195732843U, -289},
- {14821387422376473014U, -263},
- {11042794154864902060U, -236},
- {16455045573212060422U, -210},
- {12259964326927110867U, -183},
- {18268770466636286478U, -157},
- {13611294676837538539U, -130},
- {10141204801825835212U, -103},
- {15111572745182864684U, -77},
- {11258999068426240000U, -50},
- {16777216000000000000U, -24},
- {12500000000000000000U, 3},
- {9313225746154785156U, 30},
- {13877787807814456755U, 56},
- {10339757656912845936U, 83},
- {15407439555097886824U, 109},
- {11479437019748901445U, 136},
- {17105694144590052135U, 162},
- {12744735289059618216U, 189},
- {9495567745759798747U, 216},
- {14149498560666738074U, 242},
- {10542197943230523224U, 269},
- {15709099088952724970U, 295},
- {11704190886730495818U, 322},
- {17440603504673385349U, 348},
- {12994262207056124023U, 375},
- {9681479787123295682U, 402},
- {14426529090290212157U, 428},
- {10748601772107342003U, 455},
- {16016664761464807395U, 481},
- {11933345169920330789U, 508},
- {17782069995880619868U, 534},
- {13248674568444952270U, 561},
- {9871031767461413346U, 588},
- {14708983551653345445U, 614},
- {10959046745042015199U, 641},
- {16330252207878254650U, 667},
- {12166986024289022870U, 694},
- {18130221999122236476U, 720},
- {13508068024458167312U, 747},
- {10064294952495520794U, 774},
- {14996968138956309548U, 800},
- {11173611982879273257U, 827},
- {16649979327439178909U, 853},
- {12405201291620119593U, 880},
- {9242595204427927429U, 907},
- {13772540099066387757U, 933},
- {10261342003245940623U, 960},
- {15290591125556738113U, 986},
- {11392378155556871081U, 1013},
- {16975966327722178521U, 1039},
- {12648080533535911531U, 1066}
-};
-
-static Fp find_cachedpow10(int exp, int *k) {
- const double one_log_ten = 0.30102999566398114;
-
- int approx = -(exp + npowers) * one_log_ten;
- int idx = (approx - firstpower) / steppowers;
-
- while (1) {
- int current = exp + powers_ten[idx].exp + 64;
-
- if (current < expmin) {
- idx++;
- continue;
- }
-
- if (current > expmax) {
- idx--;
- continue;
- }
-
- *k = (firstpower + idx * steppowers);
-
- return powers_ten[idx];
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/layout/layout.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/layout/layout.cpp b/weex_core/Source/core/layout/layout.cpp
index a2fc800..cbccbab 100644
--- a/weex_core/Source/core/layout/layout.cpp
+++ b/weex_core/Source/core/layout/layout.cpp
@@ -17,6 +17,7 @@
* under the License.
*/
#include "layout.h"
+#include <tuple>
using namespace WeexCore;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/parser/dom_parser.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/parser/dom_parser.cpp b/weex_core/Source/core/parser/dom_parser.cpp
index 89aac39..13d9132 100644
--- a/weex_core/Source/core/parser/dom_parser.cpp
+++ b/weex_core/Source/core/parser/dom_parser.cpp
@@ -18,10 +18,10 @@
*/
#include "dom_parser.h"
-#include <base/fpconv.h>
#include <core/render/node/render_object.h>
#include <core/render/page/render_page.h>
#include <core/render/node/factory/render_creator.h>
+#include <base/ViewUtils.h>
using namespace std;
using namespace rapidjson;
@@ -365,23 +365,10 @@ namespace WeexCore {
while (const char *key2 = r.NextObjectKey()) {
if (r.PeekType() == kNumberType) {
RAPIDJSON_ASSERT(r.PeekType() == kNumberType);
- char *temp = new char[65];
if (0 == strcmp(key, "attr")) {
- int len = fpconv_dtoa(r.GetDouble(), temp);
- temp[len] = '\0';
- char value[len + 1];
- strcpy(value, temp);
- render->AddAttr(key2, value);
+ render->AddAttr(key2, to_string(r.GetDouble()));
} else if (0 == strcmp(key, "style")) {
- int len = fpconv_dtoa(r.GetDouble(), temp);
- temp[len] = '\0';
- char value[len + 1];
- strcpy(value, temp);
- render->AddStyle(key2, value);
- }
- if (temp != nullptr) {
- delete[]temp;
- temp = nullptr;
+ render->AddStyle(key2, to_string(r.GetDouble()));
}
} else if (r.PeekType() == kStringType) {
RAPIDJSON_ASSERT(r.PeekType() == kStringType);
@@ -499,17 +486,8 @@ namespace WeexCore {
while (const char *key = r.NextObjectKey()) {
if (r.PeekType() == kNumberType) {
RAPIDJSON_ASSERT(r.PeekType() == kNumberType);
- char *temp = new char[65];
- int len = fpconv_dtoa(r.GetDouble(), temp);
- temp[len] = '\0';
- char value[len + 1];
- strcpy(value, temp);
- std::pair<std::string, std::string> myPair(key, value);
+ std::pair<std::string, std::string> myPair(key, to_string(r.GetDouble()));
pairs->insert(pairs->end(), myPair);
- if (temp != nullptr) {
- delete[]temp;
- temp = nullptr;
- }
} else if (r.PeekType() == kStringType) {
RAPIDJSON_ASSERT(r.PeekType() == kStringType);
const char *value = r.GetString();
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/node/render_list.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_list.h b/weex_core/Source/core/render/node/render_list.h
index 2e985bf..a1cb190 100644
--- a/weex_core/Source/core/render/node/render_list.h
+++ b/weex_core/Source/core/render/node/render_list.h
@@ -156,9 +156,9 @@ namespace WeexCore {
mIsPreCalculateCellWidth = true;
if(getColumnCount() > 0 || getColumnWidth() > 0 || mColumnCount > COLUMN_COUNT_NORMAL){
- attrs->insert(std::pair<std::string, std::string>(COLUMN_COUNT, std::to_string(mColumnCount)));
- attrs->insert(std::pair<std::string, std::string>(COLUMN_GAP, std::to_string(mColumnGap)));
- attrs->insert(std::pair<std::string, std::string>(COLUMN_WIDTH, std::to_string(mColumnWidth)));
+ attrs->insert(std::pair<std::string, std::string>(COLUMN_COUNT, to_string(mColumnCount)));
+ attrs->insert(std::pair<std::string, std::string>(COLUMN_GAP, to_string(mColumnGap)));
+ attrs->insert(std::pair<std::string, std::string>(COLUMN_WIDTH, to_string(mColumnWidth)));
}
}
return attrs;
@@ -205,11 +205,11 @@ namespace WeexCore {
void AddRenderObjectWidth(RenderObject *child, const bool updating) {
if (Type() == kRenderWaterfall || Type() == kRenderRecycleList) {
if(child->Type() == kRenderHeader || child->Type() == kRenderFooter) {
- child->ApplyStyle(WIDTH, std::to_string(mAvailableWidth), updating);
+ child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating);
} else if (child->getStypePositionType() == kSticky) {
- child->ApplyStyle(WIDTH, std::to_string(GetViewPortWidth()), updating);
+ child->ApplyStyle(WIDTH, to_string(GetViewPortWidth()), updating);
} else if (child->Type() == kRenderCell || child->Type() == kRenderCellSlot){
- child->ApplyStyle(WIDTH, std::to_string(mColumnWidth), updating);
+ child->ApplyStyle(WIDTH, to_string(mColumnWidth), updating);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/node/render_mask.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_mask.h b/weex_core/Source/core/render/node/render_mask.h
index 690acdb..da7250a 100644
--- a/weex_core/Source/core/render/node/render_mask.h
+++ b/weex_core/Source/core/render/node/render_mask.h
@@ -45,8 +45,8 @@ namespace WeexCore {
}
style->insert(std::pair<std::string, std::string>(POSITION, "absolute"));
- style->insert(std::pair<std::string, std::string>(WIDTH, std::to_string(getWebPxByWidth(width, GetViewPortWidth()))));
- style->insert(std::pair<std::string, std::string>(HEIGHT, std::to_string(getWebPxByWidth(height, GetViewPortWidth()))));
+ style->insert(std::pair<std::string, std::string>(WIDTH, to_string(getWebPxByWidth(width, GetViewPortWidth()))));
+ style->insert(std::pair<std::string, std::string>(HEIGHT, to_string(getWebPxByWidth(height, GetViewPortWidth()))));
style->insert(std::pair<std::string, std::string>(TOP, "0"));
return style;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/node/render_object.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_object.h b/weex_core/Source/core/render/node/render_object.h
index 2671fe1..15d3f8c 100644
--- a/weex_core/Source/core/render/node/render_object.h
+++ b/weex_core/Source/core/render/node/render_object.h
@@ -32,6 +32,7 @@
#include <core/render/page/render_page.h>
#include <core/css/constants_value.h>
#include <android/base/log_utils.h>
+#include <functional>
#define JSON_OBJECT_MARK_CHAR '{'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/page/render_page.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.cpp b/weex_core/Source/core/render/page/render_page.cpp
index b01050b..f0c6a05 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -264,7 +264,7 @@ namespace WeexCore {
(*iter).second,
0,
[=, &flag](float foo) {
- (*iter).second = std::to_string(foo),
+ (*iter).second = to_string(foo),
margin->insert(margin->end(), (*iter)),
flag = true;
});
@@ -277,7 +277,7 @@ namespace WeexCore {
(*iter).second,
0,
[=, &flag](float foo) {
- (*iter).second = std::to_string(foo),
+ (*iter).second = to_string(foo),
padding->insert(padding->end(), (*iter)),
flag = true;
});
@@ -290,7 +290,7 @@ namespace WeexCore {
(*iter).second,
0,
[=, &flag](float foo) {
- (*iter).second = std::to_string(foo),
+ (*iter).second = to_string(foo),
border->insert(border->end(), (*iter)),
flag = true;
});
@@ -573,52 +573,16 @@ namespace WeexCore {
mWXCorePerformance->cssLayoutTime += time;
}
- long long RenderPage::GetFirstScreenCssLayoutTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->firstScreenCssLayoutTime;
- return 0;
- }
-
- long long RenderPage::GetOnRenderSuccessCssLayoutTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->onRenderSuccessCssLayoutTime;
- return 0;
- }
-
void RenderPage::ParseJsonTime(const long long &time) {
if (mWXCorePerformance != nullptr)
mWXCorePerformance->parseJsonTime += time;
}
- long long RenderPage::GetFirstScreenParseJsonTime() {
-if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->firstScreenParseJsonTime;
- return 0;
- }
-
- long long RenderPage::GetOnRenderSuccessParseJsonTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->onRenderSuccessParseJsonTime;
- return 0;
- }
-
void RenderPage::CallBridgeTime(const long long &time) {
if (mWXCorePerformance != nullptr)
mWXCorePerformance->callBridgeTime += time;
}
- long long RenderPage::GetFirstScreenCallBridgeTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->firstScreenCallBridgeTime;
- return 0;
- }
-
- long long RenderPage::GetOnRenderSuccessCallBridgeTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->onRenderSuccessCallBridgeTime;
- return 0;
- }
-
std::vector<long> RenderPage::PrintFirstScreenLog() {
std::vector<long> ret;
if (mWXCorePerformance != nullptr)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/page/render_page.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.h b/weex_core/Source/core/render/page/render_page.h
index 6a52b11..4a96a87 100644
--- a/weex_core/Source/core/render/page/render_page.h
+++ b/weex_core/Source/core/render/page/render_page.h
@@ -24,6 +24,7 @@
#include <map>
#include <jni.h>
#include <cmath>
+#include <atomic>
namespace WeexCore {
@@ -104,22 +105,10 @@ namespace WeexCore {
void CssLayoutTime(const long long &time);
- long long GetFirstScreenCssLayoutTime();
-
- long long GetOnRenderSuccessCssLayoutTime();
-
void ParseJsonTime(const long long &time);
- long long GetFirstScreenParseJsonTime();
-
- long long GetOnRenderSuccessParseJsonTime();
-
void CallBridgeTime(const long long &time);
- long long GetFirstScreenCallBridgeTime();
-
- long long GetOnRenderSuccessCallBridgeTime();
-
std::vector<long> PrintFirstScreenLog();
std::vector<long> PrintRenderSuccessLog();