Merge b2ginbound to central, a=merge
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0c28789b9957913be975eb002a22323f93585d4c"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"git": {
|
||||
"git_revision": "3491a49da4d4ce45b8a682e95d0ce68892c2b8ea",
|
||||
"git_revision": "11eb5d4cb2675d359d277ae17772bc75f7ccedbc",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "6458b8861154bf7e28971ce85d49e404ac96da29",
|
||||
"revision": "6575311e4b9daab959d80f17cf77bea4c91660a6",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
|
@ -18,7 +18,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0c28789b9957913be975eb002a22323f93585d4c"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
|
@ -800,6 +800,18 @@
|
||||
@RESPATH@/res/table-remove-row-active.gif
|
||||
@RESPATH@/res/table-remove-row-hover.gif
|
||||
@RESPATH@/res/table-remove-row.gif
|
||||
@RESPATH@/res/accessiblecaret.png
|
||||
@RESPATH@/res/accessiblecaret@1.5x.png
|
||||
@RESPATH@/res/accessiblecaret@2.25x.png
|
||||
@RESPATH@/res/accessiblecaret@2x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left@1.5x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left@2.25x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left@2x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right@1.5x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right@2.25x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right@2x.png
|
||||
@RESPATH@/res/text_caret.png
|
||||
@RESPATH@/res/text_caret@1.5x.png
|
||||
@RESPATH@/res/text_caret@2.25x.png
|
||||
|
@ -749,6 +749,18 @@
|
||||
@RESPATH@/res/table-remove-row-active.gif
|
||||
@RESPATH@/res/table-remove-row-hover.gif
|
||||
@RESPATH@/res/table-remove-row.gif
|
||||
@RESPATH@/res/accessiblecaret.png
|
||||
@RESPATH@/res/accessiblecaret@1.5x.png
|
||||
@RESPATH@/res/accessiblecaret@2.25x.png
|
||||
@RESPATH@/res/accessiblecaret@2x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left@1.5x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left@2.25x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_left@2x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right@1.5x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right@2.25x.png
|
||||
@RESPATH@/res/accessiblecaret_tilt_right@2x.png
|
||||
@RESPATH@/res/text_caret.png
|
||||
@RESPATH@/res/text_caret@1.5x.png
|
||||
@RESPATH@/res/text_caret@2.25x.png
|
||||
|
@ -99,13 +99,7 @@ if test -n "$USE_ICU"; then
|
||||
MOZ_ICU_DBG_SUFFIX=d
|
||||
fi
|
||||
;;
|
||||
Android)
|
||||
if test -z "$gonkdir"; then
|
||||
AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
|
||||
fi
|
||||
ICU_LIB_NAMES="icui18n icuuc icudata"
|
||||
;;
|
||||
Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|GNU/kFreeBSD|SunOS)
|
||||
Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|GNU/kFreeBSD|SunOS|Android)
|
||||
ICU_LIB_NAMES="icui18n icuuc icudata"
|
||||
;;
|
||||
*)
|
||||
@ -279,6 +273,8 @@ if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
|
||||
|
||||
if test -n "$gonkdir"; then
|
||||
ICU_CXXFLAGS="-I$gonkdir/abi/cpp/include $ICU_CXXFLAGS"
|
||||
elif test "$OS_TARGET" = Android -a "$MOZ_ANDROID_CXX_STL" = mozstlport; then
|
||||
ICU_CXXFLAGS="-I$_topsrcdir/build/gabi++/include $ICU_CXXFLAGS"
|
||||
fi
|
||||
|
||||
if test -z "$MOZ_SHARED_ICU"; then
|
||||
|
55
build/gabi++/Android.mk
Normal file
@ -0,0 +1,55 @@
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
|
||||
libgabi++_cflags := \
|
||||
-I$(LOCAL_PATH)/include
|
||||
|
||||
libgabi++_common_src_files := \
|
||||
src/array_type_info.cc \
|
||||
src/class_type_info.cc \
|
||||
src/delete.cc \
|
||||
src/dynamic_cast.cc \
|
||||
src/enum_type_info.cc \
|
||||
src/function_type_info.cc \
|
||||
src/new.cc \
|
||||
src/pbase_type_info.cc \
|
||||
src/pointer_type_info.cc \
|
||||
src/pointer_to_member_type_info.cc \
|
||||
src/si_class_type_info.cc \
|
||||
src/type_info.cc \
|
||||
src/vmi_class_type_info.cc
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
LOCAL_CPP_EXTENSION := .cc
|
||||
|
||||
LOCAL_SRC_FILES:= $(libgabi++_common_src_files)
|
||||
|
||||
LOCAL_MODULE:= libgabi++
|
||||
|
||||
LOCAL_CFLAGS := $(libgabi++_cflags)
|
||||
|
||||
LOCAL_RTTI_FLAG := -frtti
|
||||
|
||||
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
LOCAL_CPP_EXTENSION := .cc
|
||||
|
||||
LOCAL_SRC_FILES:= $(libgabi++_common_src_files)
|
||||
|
||||
LOCAL_MODULE:= libgabi++
|
||||
|
||||
LOCAL_CFLAGS := $(libgabi++_cflags)
|
||||
|
||||
LOCAL_RTTI_FLAG := -frtti
|
||||
|
||||
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
1
build/gabi++/README.mozilla
Normal file
@ -0,0 +1 @@
|
||||
This copy of libgabi++ is from Android 5.0 source code on https://android.googlesource.com/platform/abi/cpp/. Tag is android-5.0.0_r1.
|
183
build/gabi++/include/cxxabi.h
Normal file
@ -0,0 +1,183 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
|
||||
#ifndef __GABIXX_CXXABI_H__
|
||||
#define __GABIXX_CXXABI_H__
|
||||
|
||||
#include <typeinfo>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
extern "C" void __cxa_pure_virtual();
|
||||
|
||||
// Derived types of type_info below are based on 2.9.5 of C++ ABI.
|
||||
|
||||
// Typeinfo for fundamental types.
|
||||
class __fundamental_type_info : public std::type_info
|
||||
{
|
||||
public:
|
||||
~__fundamental_type_info();
|
||||
};
|
||||
|
||||
// Typeinfo for array types.
|
||||
class __array_type_info : public std::type_info
|
||||
{
|
||||
public:
|
||||
~__array_type_info();
|
||||
};
|
||||
|
||||
// Typeinfo for function types.
|
||||
class __function_type_info : public std::type_info
|
||||
{
|
||||
public:
|
||||
~__function_type_info();
|
||||
};
|
||||
|
||||
// Typeinfo for enum types.
|
||||
class __enum_type_info : public std::type_info
|
||||
{
|
||||
public:
|
||||
~__enum_type_info();
|
||||
};
|
||||
|
||||
// Typeinfo for classes with no bases.
|
||||
class __class_type_info : public std::type_info
|
||||
{
|
||||
public:
|
||||
~__class_type_info();
|
||||
|
||||
enum class_type_info_code
|
||||
{
|
||||
CLASS_TYPE_INFO_CODE,
|
||||
SI_CLASS_TYPE_INFO_CODE,
|
||||
VMI_CLASS_TYPE_INFO_CODE
|
||||
};
|
||||
|
||||
virtual class_type_info_code
|
||||
code() const { return CLASS_TYPE_INFO_CODE; }
|
||||
};
|
||||
|
||||
// Typeinfo for classes containing only a single, public, non-virtual base at
|
||||
// offset zero.
|
||||
class __si_class_type_info : public __class_type_info
|
||||
{
|
||||
public:
|
||||
~__si_class_type_info();
|
||||
const __class_type_info *__base_type;
|
||||
|
||||
virtual __class_type_info::class_type_info_code
|
||||
code() const { return SI_CLASS_TYPE_INFO_CODE; }
|
||||
};
|
||||
|
||||
struct __base_class_type_info
|
||||
{
|
||||
public:
|
||||
const __class_type_info *__base_type;
|
||||
|
||||
// All but the lower __offset_shift bits of __offset_flags are a signed
|
||||
// offset. For a non-virtual base, this is the offset in the object of the
|
||||
// base subobject. For a virtual base, this is the offset in the virtual
|
||||
// table of the virtual base offset for the virtual base referenced
|
||||
// (negative).
|
||||
long __offset_flags;
|
||||
|
||||
enum __offset_flags_masks
|
||||
{
|
||||
__virtual_mask = 0x1,
|
||||
__public_mask = 0x2,
|
||||
__offset_shift = 8
|
||||
};
|
||||
|
||||
bool inline
|
||||
is_virtual() const { return (__offset_flags & __virtual_mask) != 0; }
|
||||
|
||||
bool inline
|
||||
is_public() const { return (__offset_flags & __public_mask) != 0; }
|
||||
|
||||
// FIXME: Right-shift of signed integer is implementation dependent.
|
||||
long inline
|
||||
offset() const { return __offset_flags >> __offset_shift; }
|
||||
|
||||
long inline
|
||||
flags() const { return __offset_flags & ((1L << __offset_shift) - 1); }
|
||||
};
|
||||
|
||||
// Typeinfo for classes with bases that do not satisfy the
|
||||
// __si_class_type_info constraints.
|
||||
class __vmi_class_type_info : public __class_type_info
|
||||
{
|
||||
public:
|
||||
~__vmi_class_type_info();
|
||||
unsigned int __flags;
|
||||
unsigned int __base_count;
|
||||
__base_class_type_info __base_info[1];
|
||||
|
||||
enum __flags_masks
|
||||
{
|
||||
__non_diamond_repeat_mask = 0x1,
|
||||
__diamond_shaped_mask = 0x2
|
||||
};
|
||||
|
||||
virtual __class_type_info::class_type_info_code
|
||||
code() const { return VMI_CLASS_TYPE_INFO_CODE; }
|
||||
};
|
||||
|
||||
class __pbase_type_info : public std::type_info
|
||||
{
|
||||
public:
|
||||
~__pbase_type_info();
|
||||
unsigned int __flags;
|
||||
const std::type_info *__pointee;
|
||||
|
||||
enum __masks
|
||||
{
|
||||
__const_mask = 0x1,
|
||||
__volatile_mask = 0x2,
|
||||
__restrict_mask = 0x4,
|
||||
__incomplete_mask = 0x8,
|
||||
__incomplete_class_mask = 0x10
|
||||
};
|
||||
};
|
||||
|
||||
class __pointer_type_info : public __pbase_type_info
|
||||
{
|
||||
public:
|
||||
~__pointer_type_info();
|
||||
};
|
||||
|
||||
class __pointer_to_member_type_info : public __pbase_type_info
|
||||
{
|
||||
public:
|
||||
~__pointer_to_member_type_info();
|
||||
};
|
||||
}
|
||||
|
||||
namespace abi = __cxxabiv1;
|
||||
|
||||
#endif /* defined(__GABIXX_CXXABI_H__) */
|
||||
|
56
build/gabi++/include/new
Normal file
@ -0,0 +1,56 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// new: Dynamic storage management.
|
||||
|
||||
#ifndef __GABIXX_NEW__
|
||||
#define __GABIXX_NEW__
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
namespace std
|
||||
{
|
||||
struct nothrow_t {};
|
||||
extern const nothrow_t nothrow;
|
||||
typedef void (*new_handler)();
|
||||
}
|
||||
|
||||
// FIXME: Need to handle exceptions.
|
||||
void* operator new(std::size_t size) throw(/*std::bad_alloc*/);
|
||||
void* operator new(std::size_t size, const std::nothrow_t&) throw();
|
||||
void operator delete(void* ptr) throw();
|
||||
void operator delete(void*, const std::nothrow_t&) throw();
|
||||
void* operator new[](std::size_t size) throw(/*std::bad_alloc*/);
|
||||
void* operator new[](std::size_t size, const std::nothrow_t&) throw();
|
||||
void operator delete[](void* ptr) throw();
|
||||
void operator delete[](void* const, std::nothrow_t&) throw();
|
||||
void* operator new(std::size_t size, void* ptr) throw();
|
||||
void* operator new[](std::size_t size, void* ptr) throw();
|
||||
void operator delete(void* ptr, void*) throw();
|
||||
void operator delete[](void* ptr, void*) throw();
|
||||
|
||||
#endif // __GABIXX_NEW__
|
76
build/gabi++/include/typeinfo
Normal file
@ -0,0 +1,76 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// typeinfo: RTTI support header.
|
||||
//
|
||||
// References:
|
||||
// Itanium C++ ABI at http://www.codesourcery.com/public/cxx-abi/abi.html.
|
||||
// IHI0041A C++ Application Binary Interface for the ARM architecture.
|
||||
// Linux Standard Base C++ Specification for S390X 4.1.
|
||||
//
|
||||
|
||||
#ifndef __GABIXX_TYPEINFO__
|
||||
#define __GABIXX_TYPEINFO__
|
||||
|
||||
namespace std
|
||||
{
|
||||
// Defintion of type_info based on example in C++ ABI section 2.9.3
|
||||
class type_info
|
||||
{
|
||||
public:
|
||||
virtual
|
||||
~type_info();
|
||||
|
||||
// Whether two type_infos corresponds to the same types.
|
||||
bool
|
||||
operator==(const type_info &ti) const;
|
||||
|
||||
// Whether two type_infos corresponds to the different types.
|
||||
bool
|
||||
operator!=(const type_info &ti) const;
|
||||
|
||||
bool
|
||||
before(const type_info &ti) const;
|
||||
|
||||
// Return name of type.
|
||||
const char*
|
||||
name() const { return __type_name; }
|
||||
|
||||
private:
|
||||
// Assignment of type_info is not allowed.
|
||||
type_info (const type_info& rhs);
|
||||
|
||||
type_info&
|
||||
operator=(const type_info& rhs);
|
||||
|
||||
// Mangled name of type.
|
||||
const char *__type_name;
|
||||
};
|
||||
|
||||
} // namespace std
|
||||
|
||||
#endif // _GABIXX_TYPEINFO_
|
36
build/gabi++/moz.build
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
Library('gabi++')
|
||||
|
||||
SOURCES += [
|
||||
'src/array_type_info.cc',
|
||||
'src/class_type_info.cc',
|
||||
'src/delete.cc',
|
||||
'src/dynamic_cast.cc',
|
||||
'src/enum_type_info.cc',
|
||||
'src/function_type_info.cc',
|
||||
'src/fundamental_type_info.cc',
|
||||
'src/new.cc',
|
||||
'src/pbase_type_info.cc',
|
||||
'src/pointer_to_member_type_info.cc',
|
||||
'src/pointer_type_info.cc',
|
||||
'src/si_class_type_info.cc',
|
||||
'src/type_info.cc',
|
||||
'src/vmi_class_type_info.cc',
|
||||
]
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'include'
|
||||
]
|
||||
|
||||
DISABLE_STL_WRAPPING = True
|
||||
NO_VISIBILITY_FLAGS = True
|
||||
|
||||
CXXFLAGS += [
|
||||
'-fexceptions',
|
||||
'-frtti'
|
||||
]
|
37
build/gabi++/src/array_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// fundamental_type_info.cc: Methods for __fundamental_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__fundamental_type_info::~__fundamental_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
37
build/gabi++/src/class_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// class_type_info.cc: Methods for __class_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__class_type_info::~__class_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
38
build/gabi++/src/delete.cc
Normal file
@ -0,0 +1,38 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// delete.cc: delete operator
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <new>
|
||||
|
||||
void
|
||||
operator delete(void* ptr) throw()
|
||||
{
|
||||
if (ptr)
|
||||
free(ptr);
|
||||
}
|
356
build/gabi++/src/dynamic_cast.cc
Normal file
@ -0,0 +1,356 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// dynamic_cast.cc: RTTI support.
|
||||
//
|
||||
// References:
|
||||
// Itanium C++ ABI at http://www.codesourcery.com/public/cxx-abi/abi.html
|
||||
// IHI0041A C++ Application Binary Interface for the ARM architecture.
|
||||
//
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
#include <cstddef>
|
||||
#include <cassert>
|
||||
|
||||
namespace
|
||||
{
|
||||
// Adjust a pointer by an offset.
|
||||
|
||||
const void*
|
||||
adjust_pointer(const void* p, std::ptrdiff_t off)
|
||||
{
|
||||
// FIXME: should we align pointer after adjustment?
|
||||
const char *cp = reinterpret_cast<const char*>(p) + off;
|
||||
return reinterpret_cast<const void*>(cp);
|
||||
}
|
||||
|
||||
// Return the vtable pointer of a polymorphic object pointed by p.
|
||||
|
||||
inline const void*
|
||||
get_vtable(const void* p)
|
||||
{
|
||||
return *reinterpret_cast<void*const*>(p);
|
||||
}
|
||||
|
||||
// Return a pointer to a __class_type_info in a vtable.
|
||||
|
||||
inline const abi::__class_type_info*
|
||||
get_class_type_info(const void* vtable)
|
||||
{
|
||||
const void* type_info_ptr = adjust_pointer(vtable, -sizeof(void*));
|
||||
return *reinterpret_cast<abi::__class_type_info*const*>(type_info_ptr);
|
||||
}
|
||||
|
||||
// Return offset to object in a vtable.
|
||||
|
||||
inline std::ptrdiff_t
|
||||
get_offset_to_top(const void* vtable)
|
||||
{
|
||||
const void* type_info_ptr_address = adjust_pointer(vtable, -sizeof(void*));
|
||||
const void* offset_to_top_address =
|
||||
adjust_pointer(type_info_ptr_address, -sizeof(std::ptrdiff_t));
|
||||
return *reinterpret_cast<const std::ptrdiff_t*>(offset_to_top_address);
|
||||
}
|
||||
|
||||
// Return the virtual pointer to the most derived object of referred by a
|
||||
// pointer p.
|
||||
|
||||
const void*
|
||||
get_most_derived_object(const void* p)
|
||||
{
|
||||
const void* vtable = get_vtable(p);
|
||||
std::ptrdiff_t offset_to_top = get_offset_to_top(vtable);
|
||||
return adjust_pointer(p, offset_to_top);
|
||||
}
|
||||
|
||||
// We assume that -1 cannot be a valid pointer to object.
|
||||
const void * const ambiguous_object =
|
||||
reinterpret_cast<const void*>(-1);
|
||||
|
||||
// Return a pointer to the subobject described by base_info.
|
||||
|
||||
const void*
|
||||
get_subobject(const void* object,
|
||||
const void* vtable,
|
||||
const abi::__base_class_type_info* base_info)
|
||||
{
|
||||
long offset = base_info->offset();
|
||||
if (base_info->is_virtual())
|
||||
{
|
||||
const std::ptrdiff_t* virtual_base_offset_address =
|
||||
static_cast<const std::ptrdiff_t*> (adjust_pointer(vtable, offset));
|
||||
offset = *virtual_base_offset_address;
|
||||
}
|
||||
return adjust_pointer(object, offset);
|
||||
}
|
||||
|
||||
// Helper of __dyanmic_cast to walk the type tree of an object.
|
||||
|
||||
const void *
|
||||
walk_object(const void *object,
|
||||
const abi::__class_type_info *type,
|
||||
const void *match_object,
|
||||
const abi::__class_type_info *match_type)
|
||||
{
|
||||
if (*type == *match_type)
|
||||
return (match_object == NULL || object == match_object) ? object : NULL;
|
||||
|
||||
switch(type->code())
|
||||
{
|
||||
case abi::__class_type_info::CLASS_TYPE_INFO_CODE:
|
||||
// This isn't not the class you're looking for.
|
||||
return NULL;
|
||||
|
||||
case abi::__class_type_info::SI_CLASS_TYPE_INFO_CODE:
|
||||
// derived type has a single public base at offset 0.
|
||||
{
|
||||
const abi::__si_class_type_info* ti =
|
||||
static_cast<const abi::__si_class_type_info*>(type);
|
||||
return walk_object(object, ti->__base_type, match_object,
|
||||
match_type);
|
||||
}
|
||||
|
||||
case abi::__class_type_info::VMI_CLASS_TYPE_INFO_CODE:
|
||||
{
|
||||
const void* vtable = get_vtable(object);
|
||||
const abi::__vmi_class_type_info* ti =
|
||||
static_cast<const abi::__vmi_class_type_info*>(type);
|
||||
|
||||
// Look at all direct bases.
|
||||
const void* result = NULL;
|
||||
for (unsigned i = 0; i < ti->__base_count; ++i)
|
||||
{
|
||||
if (!ti->__base_info[i].is_public())
|
||||
continue;
|
||||
|
||||
const void *subobject =
|
||||
get_subobject(object, vtable, &ti->__base_info[i]);
|
||||
const void* walk_subobject_result =
|
||||
walk_object(subobject, ti->__base_info[i].__base_type,
|
||||
match_object, match_type);
|
||||
|
||||
if (walk_subobject_result == ambiguous_object)
|
||||
return ambiguous_object;
|
||||
else if (walk_subobject_result != NULL)
|
||||
{
|
||||
if (result == NULL)
|
||||
{
|
||||
result = walk_subobject_result;
|
||||
}
|
||||
else if (result != walk_subobject_result)
|
||||
return ambiguous_object;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Bookkeeping structure for derived-to-base cast in the general case.
|
||||
struct cast_context
|
||||
{
|
||||
public:
|
||||
const void* object;
|
||||
const abi::__class_type_info *src_type;
|
||||
const abi::__class_type_info *dst_type;
|
||||
std::ptrdiff_t src2dst_offset;
|
||||
|
||||
const void* dst_object;
|
||||
const void* result;
|
||||
|
||||
cast_context(const void* obj, const abi::__class_type_info *src,
|
||||
const abi::__class_type_info *dst, std::ptrdiff_t offset)
|
||||
: object(obj), src_type(src), dst_type(dst), src2dst_offset(offset),
|
||||
dst_object(NULL), result(NULL)
|
||||
{ }
|
||||
};
|
||||
|
||||
// based-to-derive cast in the general case.
|
||||
|
||||
void
|
||||
base_to_derived_cast(const void *object,
|
||||
const abi::__class_type_info *type,
|
||||
cast_context* context)
|
||||
{
|
||||
const void* saved_dst_object = context->dst_object;
|
||||
bool is_dst_type = *type == *context->dst_type;
|
||||
if (is_dst_type)
|
||||
context->dst_object = object;
|
||||
|
||||
if (object == context->object
|
||||
&& context->dst_object != NULL
|
||||
&& *type == *context->src_type)
|
||||
{
|
||||
if (context->result == NULL)
|
||||
context->result = context->dst_object;
|
||||
else if (context->result != context->dst_object)
|
||||
context->result = ambiguous_object;
|
||||
context->dst_object = saved_dst_object;
|
||||
return;
|
||||
}
|
||||
|
||||
switch(type->code())
|
||||
{
|
||||
case abi::__class_type_info::CLASS_TYPE_INFO_CODE:
|
||||
// This isn't not the class you're looking for.
|
||||
break;
|
||||
|
||||
case abi::__class_type_info::SI_CLASS_TYPE_INFO_CODE:
|
||||
// derived type has a single public base at offset 0.
|
||||
{
|
||||
const abi::__si_class_type_info* ti =
|
||||
static_cast<const abi::__si_class_type_info*>(type);
|
||||
base_to_derived_cast(object, ti->__base_type, context);
|
||||
break;
|
||||
}
|
||||
|
||||
case abi::__class_type_info::VMI_CLASS_TYPE_INFO_CODE:
|
||||
{
|
||||
const void* vtable = get_vtable(object);
|
||||
const abi::__vmi_class_type_info* ti =
|
||||
static_cast<const abi::__vmi_class_type_info*>(type);
|
||||
|
||||
// Look at all direct bases.
|
||||
for (unsigned i = 0; i < ti->__base_count; ++i)
|
||||
{
|
||||
if (!ti->__base_info[i].is_public())
|
||||
continue;
|
||||
|
||||
const void *subobject =
|
||||
get_subobject(object, vtable, &ti->__base_info[i]);
|
||||
base_to_derived_cast(subobject, ti->__base_info[i].__base_type,
|
||||
context);
|
||||
|
||||
// FIXME: Use flags in base_info to optimize search.
|
||||
if (context->result == ambiguous_object)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
context->dst_object = saved_dst_object;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
#define DYNAMIC_CAST_NO_HINT -1
|
||||
#define DYNAMIC_CAST_NOT_PUBLIC_BASE -2
|
||||
#define DYNAMIC_CAST_MULTIPLE_PUBLIC_NONVIRTUAL_BASE -3
|
||||
|
||||
/* v: source address to be adjusted; nonnull, and since the
|
||||
* source object is polymorphic, *(void**)v is a virtual pointer.
|
||||
* src: static type of the source object.
|
||||
* dst: destination type (the "T" in "dynamic_cast<T>(v)").
|
||||
* src2dst_offset: a static hint about the location of the
|
||||
* source subobject with respect to the complete object;
|
||||
* special negative values are:
|
||||
* -1: no hint
|
||||
* -2: src is not a public base of dst
|
||||
* -3: src is a multiple public base type but never a
|
||||
* virtual base type
|
||||
* otherwise, the src type is a unique public nonvirtual
|
||||
* base type of dst at offset src2dst_offset from the
|
||||
* origin of dst.
|
||||
*/
|
||||
extern "C" void*
|
||||
__dynamic_cast (const void *v,
|
||||
const abi::__class_type_info *src,
|
||||
const abi::__class_type_info *dst,
|
||||
std::ptrdiff_t src2dst_offset)
|
||||
{
|
||||
const void* most_derived_object = get_most_derived_object(v);
|
||||
const void* vtable = get_vtable(most_derived_object);
|
||||
const abi::__class_type_info* most_derived_class_type_info =
|
||||
get_class_type_info(vtable);
|
||||
|
||||
// If T is not a public base type of the most derived class referred
|
||||
// by v, the cast always fails.
|
||||
void* t_object =
|
||||
const_cast<void*>(walk_object(most_derived_object,
|
||||
most_derived_class_type_info, NULL, dst));
|
||||
if (t_object == NULL)
|
||||
return NULL;
|
||||
|
||||
// C++ ABI 2.9.7 The dynamic_cast Algorithm:
|
||||
//
|
||||
// If, in the most derived object pointed (referred) to by v, v points
|
||||
// (refers) to a public base class subobject of a T object [note: this can
|
||||
// be checked at compile time], and if only one object of type T is derived
|
||||
// from the subobject pointed (referred) to by v, the result is a pointer
|
||||
// (an lvalue referring) to that T object.
|
||||
|
||||
// We knew that src is not a public base, so base-to-derived cast
|
||||
// is not possible. This works even if there are multiple subobjects
|
||||
// of type T in the most derived object.
|
||||
if (src2dst_offset != DYNAMIC_CAST_NOT_PUBLIC_BASE)
|
||||
{
|
||||
// If it is known that v points to a public base class subobject
|
||||
// of a T object, simply adjust the pointer by the offset.
|
||||
if (t_object != ambiguous_object && src2dst_offset >= 0)
|
||||
return const_cast<void*>(adjust_pointer(v, -src2dst_offset));
|
||||
|
||||
// If there is only one T type subobject, we only need to look at
|
||||
// there. Otherwise, look for the subobject referred by v in the
|
||||
// most derived object.
|
||||
cast_context context(v, src, dst, src2dst_offset);
|
||||
if (t_object != ambiguous_object)
|
||||
base_to_derived_cast(t_object, dst, &context);
|
||||
else
|
||||
base_to_derived_cast(most_derived_object,
|
||||
most_derived_class_type_info, &context);
|
||||
|
||||
if (context.result != NULL && context.result != ambiguous_object)
|
||||
return const_cast<void*>(context.result);
|
||||
}
|
||||
|
||||
// C++ ABI 2.9.7 The dynamic_cast Algorithm:
|
||||
//
|
||||
// Otherwise, if v points (refers) to a public base class subobject of the
|
||||
// most derived object, and the type of the most derived object has an
|
||||
// unambiguous public base class of type T, the result is a pointer (an
|
||||
// lvalue referring) to the T subobject of the most derived object.
|
||||
// Otherwise, the run-time check fails.
|
||||
|
||||
// Check to see if T is a unambiguous public base class.
|
||||
if (t_object == ambiguous_object)
|
||||
return NULL;
|
||||
|
||||
// See if v refers to a public base class subobject.
|
||||
const void* v_object =
|
||||
walk_object(most_derived_object, most_derived_class_type_info, v, src);
|
||||
return v_object == v ? t_object : NULL;
|
||||
}
|
||||
} // namespace __cxxabiv1
|
37
build/gabi++/src/enum_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// enum_type_info.cc: Methods for __enum_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__enum_type_info::~__enum_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
37
build/gabi++/src/function_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// function_type_info.cc: Methods for __function_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__function_type_info::~__function_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
37
build/gabi++/src/fundamental_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// array_type_info.cc: Methods for __array_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__array_type_info::~__array_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
42
build/gabi++/src/new.cc
Normal file
@ -0,0 +1,42 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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 <stdlib.h>
|
||||
#include <new>
|
||||
|
||||
// FIXME: need to handle exceptions
|
||||
void*
|
||||
operator new(std::size_t size) throw (/*std::bad_alloc*/)
|
||||
{
|
||||
void* ptr = malloc(size);
|
||||
#if 0
|
||||
if (ptr == NULL)
|
||||
throw std::bad_alloc();
|
||||
#endif
|
||||
return ptr;
|
||||
}
|
37
build/gabi++/src/pbase_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// pbase_type_info.cc: Methods for __pbase_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__pbase_type_info::~__pbase_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
37
build/gabi++/src/pointer_to_member_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// pointer_to_member_type_info.cc: Methods for __pointer_to_member_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__pointer_to_member_type_info::~__pointer_to_member_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
37
build/gabi++/src/pointer_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// pointer_type_info.cc: Methods for __pointer_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__pointer_type_info::~__pointer_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
37
build/gabi++/src/si_class_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// si_class_type_info.cc: Methods for __si_class_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__si_class_type_info::~__si_class_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
75
build/gabi++/src/type_info.cc
Normal file
@ -0,0 +1,75 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// type_info.cc: Methods for std::type_info.
|
||||
//
|
||||
|
||||
#include <cxxabi.h>
|
||||
#ifdef __ARM_EABI__
|
||||
// ARM EABI requires string comprison for mangled type names for type_info
|
||||
// equality.
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
#include <typeinfo>
|
||||
|
||||
namespace std
|
||||
{
|
||||
type_info::~type_info()
|
||||
{
|
||||
}
|
||||
|
||||
bool
|
||||
type_info::operator==(const type_info& rhs) const
|
||||
{
|
||||
#ifdef __ARM_EABI__
|
||||
// IHI0041A CPPABI 3.2.5.6. Because of weak linkage and share libraries,
|
||||
// we perform string comparison.
|
||||
return strcmp(this->__type_name, rhs.__type_name) == 0;
|
||||
#else
|
||||
return this == &rhs;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
type_info::operator!=(const type_info& rhs) const
|
||||
{
|
||||
return !this->operator==(rhs);
|
||||
}
|
||||
|
||||
bool
|
||||
type_info::before(const type_info& rhs) const
|
||||
{
|
||||
#ifdef __ARM_EABI__
|
||||
// IHI0041A CPPABI 3.2.5.6. Because of weak linkage and share libraries,
|
||||
// we perform string comparison.
|
||||
return strcmp(this->__type_name, rhs.__type_name) < 0;
|
||||
#else
|
||||
return this < &rhs;
|
||||
#endif
|
||||
}
|
||||
} // end namespace std
|
37
build/gabi++/src/vmi_class_type_info.cc
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2011 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:
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. 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.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
|
||||
//
|
||||
// vmi_class_type_info.cc: Methods for __vmi_class_type_info.
|
||||
|
||||
#include <cxxabi.h>
|
||||
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
__vmi_class_type_info::~__vmi_class_type_info()
|
||||
{
|
||||
}
|
||||
} // namespace __cxxabiv1
|
8
build/gabi++/use_rtti.mk
Normal file
@ -0,0 +1,8 @@
|
||||
# To use RTTI, "include abi/cpp/use_rtti.mk" in your target.
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
abi/cpp/include \
|
||||
$(LOCAL_C_INCLUDES)
|
||||
|
||||
LOCAL_RTTI_FLAG := -frtti
|
||||
LOCAL_SHARED_LIBRARIES += libgabi++
|
@ -17,6 +17,8 @@ else:
|
||||
|
||||
if CONFIG['OS_TARGET'] == 'Android' and CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport':
|
||||
DIRS += ['stlport']
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android' and CONFIG['ENABLE_INTL_API']:
|
||||
DIRS += ['gabi++']
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
|
||||
DIRS += ['annotationProcessors']
|
||||
|
4
config/external/icu/moz.build
vendored
@ -21,3 +21,7 @@ else:
|
||||
OS_LIBS += [
|
||||
'gabi++',
|
||||
]
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android' and CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport':
|
||||
USE_LIBS += [
|
||||
'gabi++'
|
||||
]
|
||||
|
@ -9110,12 +9110,10 @@ dnl ========================================================
|
||||
dnl ICU Support
|
||||
dnl ========================================================
|
||||
|
||||
# Internationalization isn't built or exposed by default in non-desktop
|
||||
# builds. Bugs to enable:
|
||||
#
|
||||
# Android: bug 864843
|
||||
# Internationalization is not built or exposed on Fennec.
|
||||
# See Bug 1215256
|
||||
|
||||
if test "$MOZ_WIDGET_TOOLKIT" = "android"; then
|
||||
if test "$MOZ_BUILD_APP" = "mobile/android"; then
|
||||
_INTL_API=no
|
||||
else
|
||||
_INTL_API=yes
|
||||
|
@ -91,7 +91,7 @@ BluetoothHfpManager::OnGetServiceChannel(const nsAString& aDeviceAddress,
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothHfpManager::OnUpdateSdpRecords(const nsAString& aDeviceAddress)
|
||||
BluetoothHfpManager::OnUpdateSdpRecords(const BluetoothAddress& aDeviceAddress)
|
||||
{
|
||||
MOZ_ASSERT(false);
|
||||
}
|
||||
|
@ -240,12 +240,6 @@ TelephonyListener::EnumerateCallState(nsITelephonyCallInfo* aInfo)
|
||||
return HandleCallInfo(aInfo, false);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyListener::ConferenceCallStateChanged(uint16_t aCallState)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyListener::EnumerateCallStateComplete()
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ const TYPED_ARRAY_THINGS = new Set([
|
||||
]);
|
||||
|
||||
this.SETTINGSDB_NAME = "settings";
|
||||
this.SETTINGSDB_VERSION = 5;
|
||||
this.SETTINGSDB_VERSION = 6;
|
||||
this.SETTINGSSTORE_NAME = "settings";
|
||||
|
||||
Cu.import("resource://gre/modules/IndexedDBHelper.jsm");
|
||||
|
@ -344,7 +344,7 @@ Telephony::HandleCallInfo(nsITelephonyCallInfo* aInfo)
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
// Update an existing call
|
||||
call->UpdateEmergency(isEmergency);
|
||||
@ -723,6 +723,7 @@ Telephony::WindowAudioCaptureChanged()
|
||||
NS_IMETHODIMP
|
||||
Telephony::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** aAllInfo)
|
||||
{
|
||||
// Update call state
|
||||
nsresult rv;
|
||||
for (uint32_t i = 0; i < aLength; ++i) {
|
||||
rv = HandleCallInfo(aAllInfo[i]);
|
||||
@ -731,6 +732,9 @@ Telephony::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** aAllInfo)
|
||||
}
|
||||
}
|
||||
|
||||
// Update conference state
|
||||
mGroup->ChangeState();
|
||||
|
||||
rv = HandleAudioAgentState();
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
@ -744,17 +748,6 @@ Telephony::EnumerateCallState(nsITelephonyCallInfo* aInfo)
|
||||
return HandleCallInfo(aInfo);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::ConferenceCallStateChanged(uint16_t aCallState)
|
||||
{
|
||||
// The current design of Telephony Stack gaurantees that the calls within a
|
||||
// call group are updated before this method being called, so we can let a
|
||||
// call update its state by its own, and we can discard |aCallState| here.
|
||||
// Anyway, this method is going to be deprecated in Bug 1155072.
|
||||
mGroup->ChangeState();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
Telephony::EnumerateCallStateComplete()
|
||||
{
|
||||
|
@ -369,7 +369,6 @@ function TelephonyService() {
|
||||
this._isDialing = false;
|
||||
this._cachedDialRequest = null;
|
||||
this._currentCalls = {};
|
||||
this._currentConferenceState = nsITelephonyService.CALL_STATE_UNKNOWN;
|
||||
this._audioStates = [];
|
||||
this._ussdSessions = [];
|
||||
|
||||
@ -2040,7 +2039,6 @@ TelephonyService.prototype = {
|
||||
calls.push(call);
|
||||
}
|
||||
this._handleCallStateChanged(aClientId, calls);
|
||||
this._handleConferenceCallStateChanged(nsITelephonyService.CALL_STATE_CONNECTED);
|
||||
|
||||
aCallback.notifySuccess();
|
||||
});
|
||||
@ -2084,7 +2082,6 @@ TelephonyService.prototype = {
|
||||
parentCall.isSwitchable = true;
|
||||
parentCall.isMergeable = true;
|
||||
this._handleCallStateChanged(aClientId, [childCall, parentCall]);
|
||||
this._handleConferenceCallStateChanged(nsITelephonyService.CALL_STATE_UNKNOWN);
|
||||
},
|
||||
|
||||
// See 3gpp2, S.R0006-522-A v1.0. Table 4, XID 6S.
|
||||
@ -2128,11 +2125,24 @@ TelephonyService.prototype = {
|
||||
return;
|
||||
}
|
||||
|
||||
let foreground = this._currentConferenceState == nsITelephonyService.CALL_STATE_CONNECTED;
|
||||
this._sendToRilWorker(aClientId,
|
||||
foreground ? "hangUpForeground" : "hangUpBackground",
|
||||
null,
|
||||
this._defaultCallbackHandler.bind(this, aCallback));
|
||||
// Find a conference call, and send the corresponding request to RIL worker.
|
||||
for (let index in this._currentCalls[aClientId]) {
|
||||
let call = this._currentCalls[aClientId][index];
|
||||
if (!call.isConference) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let command = call.state === nsITelephonyService.CALL_STATE_CONNECTED ?
|
||||
"hangUpForeground" : "hangUpBackground";
|
||||
this._sendToRilWorker(aClientId, command, null,
|
||||
this._defaultCallbackHandler.bind(this, aCallback));
|
||||
return;
|
||||
}
|
||||
|
||||
// There is no conference call.
|
||||
if (DEBUG) debug("hangUpConference: " +
|
||||
"No conference call in modem[" + aClientId + "].");
|
||||
aCallback.notifyError(RIL.GECKO_ERROR_GENERIC_FAILURE);
|
||||
},
|
||||
|
||||
_switchConference: function(aClientId, aCallback) {
|
||||
@ -2354,12 +2364,6 @@ TelephonyService.prototype = {
|
||||
|
||||
this._handleCallStateChanged(aClientId, [...changedCalls]);
|
||||
|
||||
// Should handle conferenceCallStateChange after callStateChanged and
|
||||
// callDisconnected.
|
||||
if (newConferenceState != this._currentConferenceState) {
|
||||
this._handleConferenceCallStateChanged(newConferenceState);
|
||||
}
|
||||
|
||||
this._updateAudioState(aClientId);
|
||||
|
||||
// Handle cached dial request.
|
||||
@ -2439,12 +2443,6 @@ TelephonyService.prototype = {
|
||||
[aClientId, callIndex, notification]);
|
||||
},
|
||||
|
||||
_handleConferenceCallStateChanged: function(aState) {
|
||||
if (DEBUG) debug("handleConferenceCallStateChanged: " + aState);
|
||||
this._currentConferenceState = aState;
|
||||
this._notifyAllListeners("conferenceCallStateChanged", [aState]);
|
||||
},
|
||||
|
||||
notifyUssdReceived: function(aClientId, aMessage, aSessionEnded) {
|
||||
if (DEBUG) {
|
||||
debug("notifyUssdReceived for " + aClientId + ": " +
|
||||
|
@ -97,7 +97,6 @@ this.TelephonyUtils = {
|
||||
resolve();
|
||||
}
|
||||
},
|
||||
conferenceCallStateChanged: function() {},
|
||||
supplementaryServiceNotification: function() {},
|
||||
notifyError: function() {},
|
||||
notifyCdmaCallWaiting: function() {},
|
||||
|
@ -129,8 +129,6 @@ child:
|
||||
|
||||
NotifyCdmaCallWaiting(uint32_t aClientId, IPCCdmaWaitingCallData aData);
|
||||
|
||||
NotifyConferenceCallStateChanged(uint16_t aCallState);
|
||||
|
||||
NotifyConferenceError(nsString aName, nsString aMessage);
|
||||
|
||||
NotifySupplementaryService(uint32_t aClientId, int32_t aCallIndex,
|
||||
|
@ -80,15 +80,6 @@ TelephonyChild::RecvNotifyCdmaCallWaiting(const uint32_t& aClientId,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
TelephonyChild::RecvNotifyConferenceCallStateChanged(const uint16_t& aCallState)
|
||||
{
|
||||
MOZ_ASSERT(mService);
|
||||
|
||||
mService->ConferenceCallStateChanged(aCallState);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
TelephonyChild::RecvNotifyConferenceError(const nsString& aName,
|
||||
const nsString& aMessage)
|
||||
|
@ -41,9 +41,6 @@ protected:
|
||||
RecvNotifyCdmaCallWaiting(const uint32_t& aClientId,
|
||||
const IPCCdmaWaitingCallData& aData) override;
|
||||
|
||||
virtual bool
|
||||
RecvNotifyConferenceCallStateChanged(const uint16_t& aCallState) override;
|
||||
|
||||
virtual bool
|
||||
RecvNotifyConferenceError(const nsString& aName,
|
||||
const nsString& aMessage) override;
|
||||
|
@ -376,15 +376,6 @@ TelephonyIPCService::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** a
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyIPCService::ConferenceCallStateChanged(uint16_t aCallState)
|
||||
{
|
||||
for (uint32_t i = 0; i < mListeners.Length(); i++) {
|
||||
mListeners[i]->ConferenceCallStateChanged(aCallState);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyIPCService::EnumerateCallStateComplete()
|
||||
{
|
||||
|
@ -286,15 +286,6 @@ TelephonyParent::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** aAllI
|
||||
return SendNotifyCallStateChanged(allInfo) ? NS_OK : NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyParent::ConferenceCallStateChanged(uint16_t aCallState)
|
||||
{
|
||||
NS_ENSURE_TRUE(!mActorDestroyed, NS_ERROR_FAILURE);
|
||||
|
||||
return SendNotifyConferenceCallStateChanged(aCallState) ? NS_OK
|
||||
: NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyParent::EnumerateCallStateComplete()
|
||||
{
|
||||
@ -381,12 +372,6 @@ TelephonyRequestParent::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo*
|
||||
MOZ_CRASH("Not a TelephonyParent!");
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyRequestParent::ConferenceCallStateChanged(uint16_t aCallState)
|
||||
{
|
||||
MOZ_CRASH("Not a TelephonyParent!");
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
TelephonyRequestParent::EnumerateCallStateComplete()
|
||||
{
|
||||
|
@ -7,7 +7,7 @@
|
||||
interface nsIMobileCallForwardingOptions;
|
||||
interface nsITelephonyCallInfo;
|
||||
|
||||
[scriptable, uuid(80faf34e-286b-4487-bd55-135bd92668b9)]
|
||||
[scriptable, uuid(baa9f5f3-5cab-40e0-81e9-ae0abd917907)]
|
||||
interface nsITelephonyListener : nsISupports
|
||||
{
|
||||
/**
|
||||
@ -29,17 +29,6 @@ interface nsITelephonyListener : nsISupports
|
||||
void callStateChanged(in unsigned long length,
|
||||
[array, size_is(length)] in nsITelephonyCallInfo allInfo);
|
||||
|
||||
/**
|
||||
* Called when participants of a conference call have been updated, and the
|
||||
* conference call state changes.
|
||||
*
|
||||
* @param callState
|
||||
* Possible values are: nsITelephonyService::CALL_STATE_UNKNOWN,
|
||||
* nsITelephonyService::CALL_STATE_HELD,
|
||||
* nsITelephonyService::CALL_STATE_CONNECTED.
|
||||
*/
|
||||
void conferenceCallStateChanged(in unsigned short callState);
|
||||
|
||||
/**
|
||||
* Notify when RIL receives supplementary service notification.
|
||||
*
|
||||
|
@ -45,7 +45,6 @@ function waitForStateChanged(aPredicate) {
|
||||
}
|
||||
},
|
||||
|
||||
conferenceCallStateChanged: function() {},
|
||||
supplementaryServiceNotification: function() {},
|
||||
notifyError: function() {},
|
||||
notifyCdmaCallWaiting: function() {},
|
||||
|
@ -27,6 +27,18 @@ UNIFIED_SOURCES += [
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
RESOURCE_FILES += [
|
||||
'res/accessiblecaret.png',
|
||||
'res/accessiblecaret@1.5x.png',
|
||||
'res/accessiblecaret@2.25x.png',
|
||||
'res/accessiblecaret@2x.png',
|
||||
'res/accessiblecaret_tilt_left.png',
|
||||
'res/accessiblecaret_tilt_left@1.5x.png',
|
||||
'res/accessiblecaret_tilt_left@2.25x.png',
|
||||
'res/accessiblecaret_tilt_left@2x.png',
|
||||
'res/accessiblecaret_tilt_right.png',
|
||||
'res/accessiblecaret_tilt_right@1.5x.png',
|
||||
'res/accessiblecaret_tilt_right@2.25x.png',
|
||||
'res/accessiblecaret_tilt_right@2x.png',
|
||||
'res/EditorOverride.css',
|
||||
'res/grabber.gif',
|
||||
'res/table-add-column-after-active.gif',
|
||||
|
BIN
editor/composer/res/accessiblecaret.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
editor/composer/res/accessiblecaret@1.5x.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
editor/composer/res/accessiblecaret@2.25x.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
editor/composer/res/accessiblecaret@2x.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_left.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_left@1.5x.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_left@2.25x.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_left@2x.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_right.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_right@1.5x.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_right@2.25x.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
editor/composer/res/accessiblecaret_tilt_right@2x.png
Normal file
After Width: | Height: | Size: 16 KiB |
@ -314,7 +314,7 @@ RValueAllocation
|
||||
RValueAllocation::read(CompactBufferReader& reader)
|
||||
{
|
||||
uint8_t mode = reader.readByte();
|
||||
const Layout& layout = layoutFromMode(Mode(mode & MODE_MASK));
|
||||
const Layout& layout = layoutFromMode(Mode(mode & MODE_BITS_MASK));
|
||||
Payload arg1, arg2;
|
||||
|
||||
readPayload(reader, layout.type1, &mode, &arg1);
|
||||
|
@ -80,7 +80,7 @@ class RValueAllocation
|
||||
// This mask represents the set of bits which can be used to encode a
|
||||
// value in a snapshot. The mode is used to determine how to interpret
|
||||
// the union of values and how to pack the value in memory.
|
||||
MODE_MASK = 0x17f,
|
||||
MODE_BITS_MASK = 0x17f,
|
||||
|
||||
INVALID = 0x100,
|
||||
};
|
||||
@ -294,7 +294,7 @@ class RValueAllocation
|
||||
|
||||
public:
|
||||
Mode mode() const {
|
||||
return Mode(mode_ & MODE_MASK);
|
||||
return Mode(mode_ & MODE_BITS_MASK);
|
||||
}
|
||||
bool needSideEffect() const {
|
||||
return mode_ & RECOVER_SIDE_EFFECT_MASK;
|
||||
|
@ -299,11 +299,17 @@ class CommonCaretsTestCase(object):
|
||||
# draggable.
|
||||
(caret3_x, caret3_y), (caret4_x, caret4_y) = sel.selection_carets_location()
|
||||
|
||||
# The following values are from ua.css.
|
||||
caret_width = 44
|
||||
caret_margin_left = -23
|
||||
tilt_right_margin_left = 18
|
||||
tilt_left_margin_left = -17
|
||||
# The following values are from ua.css and all.js
|
||||
if self.carets_tested_pref == 'selectioncaret.enabled':
|
||||
caret_width = 44
|
||||
caret_margin_left = -23
|
||||
tilt_right_margin_left = 18
|
||||
tilt_left_margin_left = -17
|
||||
elif self.carets_tested_pref == 'layout.accessiblecaret.enabled':
|
||||
caret_width = float(self.marionette.get_pref('layout.accessiblecaret.width'))
|
||||
caret_margin_left = float(self.marionette.get_pref('layout.accessiblecaret.margin-left'))
|
||||
tilt_right_margin_left = 0.41 * caret_width;
|
||||
tilt_left_margin_left = -0.39 * caret_width;
|
||||
|
||||
left_caret_left_edge_x = caret3_x + caret_margin_left + tilt_left_margin_left
|
||||
el.tap(left_caret_left_edge_x + 2, caret3_y)
|
||||
|
@ -343,16 +343,16 @@ div:-moz-native-anonymous.moz-accessiblecaret.no-bar > div.bar {
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
|
||||
background-image: url("resource://gre/res/text_caret.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret.png");
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_left.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_left.png");
|
||||
margin-left: -39%;
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_right.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_right.png");
|
||||
margin-left: 41%;
|
||||
}
|
||||
|
||||
@ -362,43 +362,43 @@ div:-moz-native-anonymous.moz-accessiblecaret.none {
|
||||
|
||||
@media (min-resolution: 1.5dppx) {
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
|
||||
background-image: url("resource://gre/res/text_caret@1.5x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret@1.5x.png");
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_left@1.5x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_left@1.5x.png");
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_right@1.5x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_right@1.5x.png");
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-resolution: 2dppx) {
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
|
||||
background-image: url("resource://gre/res/text_caret@2x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret@2x.png");
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_left@2x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_left@2x.png");
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_right@2x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_right@2x.png");
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-resolution: 2.25dppx) {
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
|
||||
background-image: url("resource://gre/res/text_caret@2.25x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret@2.25x.png");
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_left@2.25x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_left@2.25x.png");
|
||||
}
|
||||
|
||||
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
|
||||
background-image: url("resource://gre/res/text_caret_tilt_right@2.25x.png");
|
||||
background-image: url("resource://gre/res/accessiblecaret_tilt_right@2.25x.png");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4864,9 +4864,9 @@ pref("caret.manages-android-actionbar", false);
|
||||
pref("layout.accessiblecaret.enabled", false);
|
||||
|
||||
// CSS attributes of the AccessibleCaret in CSS pixels.
|
||||
pref("layout.accessiblecaret.width", "44.0");
|
||||
pref("layout.accessiblecaret.height", "47.0");
|
||||
pref("layout.accessiblecaret.margin-left", "-23.5");
|
||||
pref("layout.accessiblecaret.width", "34.0");
|
||||
pref("layout.accessiblecaret.height", "36.0");
|
||||
pref("layout.accessiblecaret.margin-left", "-18.5");
|
||||
pref("layout.accessiblecaret.bar.width", "2.0");
|
||||
|
||||
// Timeout in milliseconds to hide the accessiblecaret under cursor mode while
|
||||
|
@ -85,7 +85,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
{
|
||||
'task': 'task/linux',
|
||||
'dependents': [],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'post-build': [],
|
||||
'interactive': False
|
||||
}
|
||||
]
|
||||
|
||||
@ -121,7 +125,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
{
|
||||
'task': 'task/linux',
|
||||
'dependents': [],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
'post-build': []
|
||||
}
|
||||
]
|
||||
|
||||
@ -158,7 +166,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
{
|
||||
'task': 'task/linux',
|
||||
'dependents': [],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
'post-build': []
|
||||
}
|
||||
]
|
||||
|
||||
@ -195,6 +207,10 @@ class TestCommitParser(unittest.TestCase):
|
||||
{
|
||||
'task': 'task/linux',
|
||||
'dependents': [],
|
||||
'post-build': [],
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
'additional-parameters': {}
|
||||
}
|
||||
]
|
||||
@ -239,7 +255,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
{
|
||||
'task': 'task/linux-debug',
|
||||
'dependents': [],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'post-build': [],
|
||||
'build_name': 'linux',
|
||||
'build_type': 'debug',
|
||||
'interactive': False,
|
||||
},
|
||||
{
|
||||
'task': 'task/linux',
|
||||
@ -250,7 +270,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
}],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'post-build': [],
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
}
|
||||
]
|
||||
|
||||
@ -316,12 +340,20 @@ class TestCommitParser(unittest.TestCase):
|
||||
{
|
||||
'task': 'task/linux',
|
||||
'dependents': [],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'post-build': [],
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
},
|
||||
{
|
||||
'task': 'task/linux-debug',
|
||||
'dependents': [],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'post-build': [],
|
||||
'build_name': 'linux',
|
||||
'build_type': 'debug',
|
||||
'interactive': False,
|
||||
},
|
||||
{
|
||||
'task': 'task/win32',
|
||||
@ -347,7 +379,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'post-build': [],
|
||||
'build_name': 'win32',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
}
|
||||
]
|
||||
|
||||
@ -423,7 +459,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'post-build': [],
|
||||
'build_name': 'win32',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
}
|
||||
]
|
||||
|
||||
@ -478,7 +518,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'post-build': [],
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'interactive': False,
|
||||
}
|
||||
]
|
||||
result = parse_commit(commit, jobs)
|
||||
@ -682,7 +726,6 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expected = [
|
||||
{
|
||||
'task': 'task/linux',
|
||||
@ -704,7 +747,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'build_name': 'linux',
|
||||
'build_type': 'opt',
|
||||
'post-build': [],
|
||||
'interactive': False
|
||||
},
|
||||
{
|
||||
'task': 'task/linux-debug',
|
||||
@ -726,7 +773,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'build_name': 'linux',
|
||||
'build_type': 'debug',
|
||||
'post-build': [],
|
||||
'interactive': False
|
||||
},
|
||||
{
|
||||
'task': 'task/linux64',
|
||||
@ -748,7 +799,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'build_name': 'linux64',
|
||||
'build_type': 'opt',
|
||||
'post-build': [],
|
||||
'interactive': False
|
||||
},
|
||||
{
|
||||
'task': 'task/linux64-debug',
|
||||
@ -770,7 +825,11 @@ class TestCommitParser(unittest.TestCase):
|
||||
}
|
||||
}
|
||||
],
|
||||
'additional-parameters': {}
|
||||
'additional-parameters': {},
|
||||
'build_name': 'linux64',
|
||||
'build_type': 'debug',
|
||||
'post-build': [],
|
||||
'interactive': False
|
||||
}
|
||||
]
|
||||
|
||||
|