diff options
author | pliard@chromium.org <pliard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-26 16:06:42 +0000 |
---|---|---|
committer | pliard@chromium.org <pliard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-26 16:06:42 +0000 |
commit | a390abf005e8b11a26f7686e0f8920f4b4333e91 (patch) | |
tree | a3c65d9d746d46580e5f6bff0a6417d3b6f314de /third_party | |
parent | dcf0d9ec4d07e438e2fb35477970c28872953f1e (diff) | |
download | chromium_src-a390abf005e8b11a26f7686e0f8920f4b4333e91.zip chromium_src-a390abf005e8b11a26f7686e0f8920f4b4333e91.tar.gz chromium_src-a390abf005e8b11a26f7686e0f8920f4b4333e91.tar.bz2 |
Roll Protobuf r415:r423.
1) Got an upstream diff 415:423 from svn
2) Applied
3) Updated protobuf.gyp
Changelog:
r423 Add support for NaCl in atomicops.
r422 Fix issue/333. skip any escaped characters in quotes.
r421 -lz in protobuf.pc belongs in Libs.private, not Libs
r420 set _VARDADIC_MAX=10 preprocessor definition to make test pass in vc11.
r419 Allow configure to disable maintainer mode
r418 Update atomicops to support new platforms where intptr_t = long.
r417 Fix a NULL/bool conversion.
r416 Fix issue 378
Review URL: https://chromiumcodereview.appspot.com/10793026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148557 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party')
16 files changed, 273 insertions, 247 deletions
diff --git a/third_party/protobuf/README.chromium b/third_party/protobuf/README.chromium index c421f17..a2edb31 100644 --- a/third_party/protobuf/README.chromium +++ b/third_party/protobuf/README.chromium @@ -3,7 +3,7 @@ Short Name: protobuf URL: http://protobuf.googlecode.com/svn/trunk License File: COPYING.txt Version: unknown -Revision: r415 +Revision: r423 Security Critical: yes Local files (not taken from upstream): diff --git a/third_party/protobuf/protobuf.gyp b/third_party/protobuf/protobuf.gyp index 4385785..7c55c24 100644 --- a/third_party/protobuf/protobuf.gyp +++ b/third_party/protobuf/protobuf.gyp @@ -42,10 +42,11 @@ 'sources': [ 'src/google/protobuf/stubs/atomicops.h', 'src/google/protobuf/stubs/atomicops_internals_arm_gcc.h', + 'src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h', + 'src/google/protobuf/stubs/atomicops_internals_macosx.h', 'src/google/protobuf/stubs/atomicops_internals_mips_gcc.h', 'src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'src/google/protobuf/stubs/atomicops_internals_x86_gcc.h', - 'src/google/protobuf/stubs/atomicops_internals_x86_macosx.h', 'src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'src/google/protobuf/stubs/atomicops_internals_x86_msvc.h', 'src/google/protobuf/stubs/common.h', diff --git a/third_party/protobuf/src/Makefile.am b/third_party/protobuf/src/Makefile.am index 1929c50..db9e7af 100644 --- a/third_party/protobuf/src/Makefile.am +++ b/third_party/protobuf/src/Makefile.am @@ -40,9 +40,9 @@ MAINTAINERCLEANFILES = \ nobase_include_HEADERS = \ google/protobuf/stubs/atomicops.h \ google/protobuf/stubs/atomicops_internals_arm_gcc.h \ + google/protobuf/stubs/atomicops_internals_macosx.h \ google/protobuf/stubs/atomicops_internals_mips_gcc.h \ google/protobuf/stubs/atomicops_internals_x86_gcc.h \ - google/protobuf/stubs/atomicops_internals_x86_macosx.h \ google/protobuf/stubs/atomicops_internals_x86_msvc.h \ google/protobuf/stubs/common.h \ google/protobuf/stubs/platform_macros.h \ diff --git a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc index 8d611b6..3cec2b6 100644 --- a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc +++ b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc @@ -398,7 +398,8 @@ GenerateMergeFromCodedStream(io::Printer* printer) const { descriptor_->type() == FieldDescriptor::TYPE_STRING) { printer->Print(variables_, "::google::protobuf::internal::WireFormat::VerifyUTF8String(\n" - " this->$name$(0).data(), this->$name$(0).length(),\n" + " this->$name$(this->$name$_size() - 1).data(),\n" + " this->$name$(this->$name$_size() - 1).length(),\n" " ::google::protobuf::internal::WireFormat::PARSE);\n"); } } diff --git a/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc b/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc index 1d27b41..c956188 100644 --- a/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc +++ b/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc @@ -243,7 +243,8 @@ bool CodeGeneratorRequest::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_file_to_generate())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->file_to_generate(0).data(), this->file_to_generate(0).length(), + this->file_to_generate(this->file_to_generate_size() - 1).data(), + this->file_to_generate(this->file_to_generate_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; diff --git a/third_party/protobuf/src/google/protobuf/descriptor.pb.cc b/third_party/protobuf/src/google/protobuf/descriptor.pb.cc index 47595bb..7d16080 100644 --- a/third_party/protobuf/src/google/protobuf/descriptor.pb.cc +++ b/third_party/protobuf/src/google/protobuf/descriptor.pb.cc @@ -1066,7 +1066,8 @@ bool FileDescriptorProto::MergePartialFromCodedStream( DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_dependency())); ::google::protobuf::internal::WireFormat::VerifyUTF8String( - this->dependency(0).data(), this->dependency(0).length(), + this->dependency(this->dependency_size() - 1).data(), + this->dependency(this->dependency_size() - 1).length(), ::google::protobuf::internal::WireFormat::PARSE); } else { goto handle_uninterpreted; diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops.h index b20cc55..1315682 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops.h +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops.h @@ -1,17 +1,20 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -60,12 +63,12 @@ namespace protobuf { namespace internal { typedef int32 Atomic32; -#ifdef GOOGLE_PROTOBUF_HOST_ARCH_64_BIT +#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT // We need to be able to go between Atomic64 and AtomicWord implicitly. This // means Atomic64 and AtomicWord should be the same type on 64-bit. -#if defined(__APPLE__) -// MacOS is an exception to the implicit conversion rule above, -// because it uses long for intptr_t. +#if defined(GOOGLE_PROTOBUF_OS_NACL) +// NaCl's intptr_t is not actually 64-bits on 64-bit! +// http://code.google.com/p/nativeclient/issues/detail?id=1162 typedef int64 Atomic64; #else typedef intptr_t Atomic64; @@ -127,7 +130,7 @@ Atomic32 Acquire_Load(volatile const Atomic32* ptr); Atomic32 Release_Load(volatile const Atomic32* ptr); // 64-bit atomic operations (only available on 64-bit processors). -#ifdef GOOGLE_PROTOBUF_HOST_ARCH_64_BIT +#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, Atomic64 old_value, Atomic64 new_value); @@ -147,33 +150,53 @@ void Release_Store(volatile Atomic64* ptr, Atomic64 value); Atomic64 NoBarrier_Load(volatile const Atomic64* ptr); Atomic64 Acquire_Load(volatile const Atomic64* ptr); Atomic64 Release_Load(volatile const Atomic64* ptr); -#endif // GOOGLE_PROTOBUF_HOST_ARCH_64_BIT +#endif // GOOGLE_PROTOBUF_ARCH_64_BIT } // namespace internal } // namespace protobuf } // namespace google // Include our platform specific implementation. -#if defined(_MSC_VER) && \ - (defined(GOOGLE_PROTOBUF_HOST_ARCH_IA32) || \ - defined(GOOGLE_PROTOBUF_HOST_ARCH_X64)) -#include "atomicops_internals_x86_msvc.h" -#elif defined(__APPLE__) && \ - (defined(GOOGLE_PROTOBUF_HOST_ARCH_IA32) || \ - defined(GOOGLE_PROTOBUF_HOST_ARCH_X64)) -#include "atomicops_internals_x86_macosx.h" -#elif defined(__GNUC__) && \ - (defined(GOOGLE_PROTOBUF_HOST_ARCH_IA32) || \ - defined(GOOGLE_PROTOBUF_HOST_ARCH_X64)) -#include "atomicops_internals_x86_gcc.h" -#elif defined(__GNUC__) && defined(GOOGLE_PROTOBUF_HOST_ARCH_ARM) -#include "atomicops_internals_arm_gcc.h" -#elif defined(__GNUC__) && defined(GOOGLE_PROTOBUF_HOST_ARCH_MIPS) -#include "atomicops_internals_mips_gcc.h" -#else +#define GOOGLE_PROTOBUF_ATOMICOPS_ERROR \ #error "Atomic operations are not supported on your platform" + +// MSVC. +#if defined(_MSC_VER) +#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) +#include <google/protobuf/stubs/atomicops_internals_x86_msvc.h> +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR +#endif + +// Apple. +#elif defined(GOOGLE_PROTOBUF_OS_APPLE) +#include <google/protobuf/stubs/atomicops_internals_macosx.h> + +// GCC. +#elif defined(__GNUC__) +#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) +#include <google/protobuf/stubs/atomicops_internals_x86_gcc.h> +#elif defined(GOOGLE_PROTOBUF_ARCH_ARM) +#include <google/protobuf/stubs/atomicops_internals_arm_gcc.h> +#elif defined(GOOGLE_PROTOBUF_ARCH_MIPS) +#include <google/protobuf/stubs/atomicops_internals_mips_gcc.h> +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR #endif +// Unknown. +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR +#endif + +// On some platforms we need additional declarations to make AtomicWord +// compatible with our other Atomic* types. +#if defined(GOOGLE_PROTOBUF_OS_APPLE) +#include <google/protobuf/stubs/atomicops_internals_atomicword_compat.h> +#endif + +#undef GOOGLE_PROTOBUF_ATOMICOPS_ERROR + #endif // GOOGLE_PROTOBUF_NO_THREADSAFETY #endif // GOOGLE_PROTOBUF_ATOMICOPS_H_ diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h index 3138590..1f4dedc 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h @@ -1,17 +1,20 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h new file mode 100644 index 0000000..8d9a726 --- /dev/null +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h @@ -0,0 +1,122 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. 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 COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ + +// AtomicWord is a synonym for intptr_t, and Atomic32 is a synonym for int32, +// which in turn means int. On some LP32 platforms, intptr_t is an int, but +// on others, it's a long. When AtomicWord and Atomic32 are based on different +// fundamental types, their pointers are incompatible. +// +// This file defines function overloads to allow both AtomicWord and Atomic32 +// data to be used with this interface. +// +// On LP64 platforms, AtomicWord and Atomic64 are both always long, +// so this problem doesn't occur. + +#if !defined(GOOGLE_PROTOBUF_HOST_ARCH_64_BIT) + +namespace google { +namespace protobuf { +namespace internal { + +inline AtomicWord NoBarrier_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return NoBarrier_CompareAndSwap( + reinterpret_cast<volatile Atomic32*>(ptr), old_value, new_value); +} + +inline AtomicWord NoBarrier_AtomicExchange(volatile AtomicWord* ptr, + AtomicWord new_value) { + return NoBarrier_AtomicExchange( + reinterpret_cast<volatile Atomic32*>(ptr), new_value); +} + +inline AtomicWord NoBarrier_AtomicIncrement(volatile AtomicWord* ptr, + AtomicWord increment) { + return NoBarrier_AtomicIncrement( + reinterpret_cast<volatile Atomic32*>(ptr), increment); +} + +inline AtomicWord Barrier_AtomicIncrement(volatile AtomicWord* ptr, + AtomicWord increment) { + return Barrier_AtomicIncrement( + reinterpret_cast<volatile Atomic32*>(ptr), increment); +} + +inline AtomicWord Acquire_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return Acquire_CompareAndSwap( + reinterpret_cast<volatile Atomic32*>(ptr), old_value, new_value); +} + +inline AtomicWord Release_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return Release_CompareAndSwap( + reinterpret_cast<volatile Atomic32*>(ptr), old_value, new_value); +} + +inline void NoBarrier_Store(volatile AtomicWord *ptr, AtomicWord value) { + NoBarrier_Store(reinterpret_cast<volatile Atomic32*>(ptr), value); +} + +inline void Acquire_Store(volatile AtomicWord* ptr, AtomicWord value) { + return Acquire_Store(reinterpret_cast<volatile Atomic32*>(ptr), value); +} + +inline void Release_Store(volatile AtomicWord* ptr, AtomicWord value) { + return Release_Store(reinterpret_cast<volatile Atomic32*>(ptr), value); +} + +inline AtomicWord NoBarrier_Load(volatile const AtomicWord *ptr) { + return NoBarrier_Load(reinterpret_cast<volatile const Atomic32*>(ptr)); +} + +inline AtomicWord Acquire_Load(volatile const AtomicWord* ptr) { + return Acquire_Load(reinterpret_cast<volatile const Atomic32*>(ptr)); +} + +inline AtomicWord Release_Load(volatile const AtomicWord* ptr) { + return Release_Load(reinterpret_cast<volatile const Atomic32*>(ptr)); +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // !defined(GOOGLE_PROTOBUF_HOST_ARCH_64_BIT) + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_macosx.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_macosx.h index ff9b7bb93..9af6d636 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_macosx.h +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_macosx.h @@ -1,17 +1,20 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -27,8 +30,8 @@ // This file is an internal atomic implementation, use atomicops.h instead. -#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MACOSX_H_ -#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MACOSX_H_ +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ #include <libkern/OSAtomic.h> @@ -214,91 +217,8 @@ inline Atomic64 Release_Load(volatile const Atomic64* ptr) { #endif // defined(__LP64__) -// MacOS uses long for intptr_t, AtomicWord and Atomic32 are always different -// on the Mac, even when they are the same size. We need to explicitly cast -// from AtomicWord to Atomic32/64 to implement the AtomicWord interface. -#ifdef __LP64__ -#define AtomicWordCastType Atomic64 -#else -#define AtomicWordCastType Atomic32 -#endif - -inline AtomicWord NoBarrier_CompareAndSwap(volatile AtomicWord* ptr, - AtomicWord old_value, - AtomicWord new_value) { - return NoBarrier_CompareAndSwap( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), - old_value, new_value); -} - -inline AtomicWord NoBarrier_AtomicExchange(volatile AtomicWord* ptr, - AtomicWord new_value) { - return NoBarrier_AtomicExchange( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), new_value); -} - -inline AtomicWord NoBarrier_AtomicIncrement(volatile AtomicWord* ptr, - AtomicWord increment) { - return NoBarrier_AtomicIncrement( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), increment); -} - -inline AtomicWord Barrier_AtomicIncrement(volatile AtomicWord* ptr, - AtomicWord increment) { - return Barrier_AtomicIncrement( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), increment); -} - -inline AtomicWord Acquire_CompareAndSwap(volatile AtomicWord* ptr, - AtomicWord old_value, - AtomicWord new_value) { - return Acquire_CompareAndSwap( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), - old_value, new_value); -} - -inline AtomicWord Release_CompareAndSwap(volatile AtomicWord* ptr, - AtomicWord old_value, - AtomicWord new_value) { - return Release_CompareAndSwap( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), - old_value, new_value); -} - -inline void NoBarrier_Store(volatile AtomicWord* ptr, AtomicWord value) { - NoBarrier_Store( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), value); -} - -inline void Acquire_Store(volatile AtomicWord* ptr, AtomicWord value) { - return Acquire_Store( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), value); -} - -inline void Release_Store(volatile AtomicWord* ptr, AtomicWord value) { - return Release_Store( - reinterpret_cast<volatile AtomicWordCastType*>(ptr), value); -} - -inline AtomicWord NoBarrier_Load(volatile const AtomicWord* ptr) { - return NoBarrier_Load( - reinterpret_cast<volatile const AtomicWordCastType*>(ptr)); -} - -inline AtomicWord Acquire_Load(volatile const AtomicWord* ptr) { - return Acquire_Load( - reinterpret_cast<volatile const AtomicWordCastType*>(ptr)); -} - -inline AtomicWord Release_Load(volatile const AtomicWord* ptr) { - return Release_Load( - reinterpret_cast<volatile const AtomicWordCastType*>(ptr)); -} - -#undef AtomicWordCastType - } // namespace internal } // namespace protobuf } // namespace google -#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MACOSX_H_ +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h index d4ce33d..dc46851 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h @@ -1,17 +1,20 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc index 937aa5a..0774872 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc @@ -1,5 +1,5 @@ // Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. +// Copyright 2012 Google Inc. All rights reserved. // http://code.google.com/p/protobuf/ // // Redistribution and use in source and binary forms, with or without diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h index fa25d1e..5324dfb 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h @@ -1,17 +1,20 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc index 4686bc4..8366a89 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc @@ -1,17 +1,20 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h index 9bb6cb0..6f9869d 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h @@ -1,17 +1,20 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT diff --git a/third_party/protobuf/src/google/protobuf/stubs/platform_macros.h b/third_party/protobuf/src/google/protobuf/stubs/platform_macros.h index 4e8ec5b..cba9fbd 100644 --- a/third_party/protobuf/src/google/protobuf/stubs/platform_macros.h +++ b/third_party/protobuf/src/google/protobuf/stubs/platform_macros.h @@ -1,17 +1,20 @@ -// Copyright 2011 the V8 authors. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. // * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -35,88 +38,27 @@ // http://www.agner.org/optimize/calling_conventions.pdf // or with gcc, run: "echo | gcc -E -dM -" #if defined(_M_X64) || defined(__x86_64__) -#define GOOGLE_PROTOBUF_HOST_ARCH_X64 1 -#define GOOGLE_PROTOBUF_HOST_ARCH_64_BIT 1 -#define GOOGLE_PROTOBUF_HOST_CAN_READ_UNALIGNED 1 +#define GOOGLE_PROTOBUF_ARCH_X64 1 +#define GOOGLE_PROTOBUF_ARCH_64_BIT 1 #elif defined(_M_IX86) || defined(__i386__) -#define GOOGLE_PROTOBUF_HOST_ARCH_IA32 1 -#define GOOGLE_PROTOBUF_HOST_ARCH_32_BIT 1 -#define GOOGLE_PROTOBUF_HOST_CAN_READ_UNALIGNED 1 +#define GOOGLE_PROTOBUF_ARCH_IA32 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 #elif defined(__ARMEL__) -#define GOOGLE_PROTOBUF_HOST_ARCH_ARM 1 -#define GOOGLE_PROTOBUF_HOST_ARCH_32_BIT 1 -// Some CPU-OS combinations allow unaligned access on ARM. We assume -// that unaligned accesses are not allowed unless the build system -// defines the CAN_USE_UNALIGNED_ACCESSES macro to be non-zero. -#if CAN_USE_UNALIGNED_ACCESSES -#define GOOGLE_PROTOBUF_HOST_CAN_READ_UNALIGNED 1 -#endif +#define GOOGLE_PROTOBUF_ARCH_ARM 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 #elif defined(__MIPSEL__) -#define GOOGLE_PROTOBUF_HOST_ARCH_MIPS 1 -#define GOOGLE_PROTOBUF_HOST_ARCH_32_BIT 1 +#define GOOGLE_PROTOBUF_ARCH_MIPS 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__pnacl__) +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 #else #error Host architecture was not detected as supported by protobuf #endif -// Target architecture detection. This may be set externally. If not, detect -// in the same way as the host architecture, that is, target the native -// environment as presented by the compiler. -#if !defined(GOOGLE_PROTOBUF_TARGET_ARCH_X64) && \ - !defined(GOOGLE_PROTOBUF_TARGET_ARCH_IA32) && \ - !defined(GOOGLE_PROTOBUF_TARGET_ARCH_ARM) && \ - !defined(GOOGLE_PROTOBUF_TARGET_ARCH_MIPS) -#if defined(_M_X64) || defined(__x86_64__) -#define GOOGLE_PROTOBUF_TARGET_ARCH_X64 1 -#elif defined(_M_IX86) || defined(__i386__) -#define GOOGLE_PROTOBUF_TARGET_ARCH_IA32 1 -#elif defined(__ARMEL__) -#define GOOGLE_PROTOBUF_TARGET_ARCH_ARM 1 -#elif defined(__MIPSEL__) -#define GOOGLE_PROTOBUF_TARGET_ARCH_MIPS 1 -#else -#error Target architecture was not detected as supported by protobuf -#endif -#endif - -// Check for supported combinations of host and target architectures. -#if defined(GOOGLE_PROTOBUF_TARGET_ARCH_IA32) && \ - !defined(GOOGLE_PROTOBUF_HOST_ARCH_IA32) -#error Target architecture ia32 is only supported on ia32 host -#endif -#if defined(GOOGLE_PROTOBUF_TARGET_ARCH_X64) && \ - !defined(GOOGLE_PROTOBUF_HOST_ARCH_X64) -#error Target architecture x64 is only supported on x64 host -#endif -#if (defined(GOOGLE_PROTOBUF_TARGET_ARCH_ARM) && \ - !(defined(GOOGLE_PROTOBUF_HOST_ARCH_IA32) || \ - defined(GOOGLE_PROTOBUF_HOST_ARCH_ARM))) -#error Target architecture arm is only supported on arm and ia32 host -#endif -#if (defined(GOOGLE_PROTOBUF_TARGET_ARCH_MIPS) && \ - !(defined(GOOGLE_PROTOBUF_HOST_ARCH_IA32) || \ - defined(GOOGLE_PROTOBUF_HOST_ARCH_MIPS))) -#error Target architecture mips is only supported on mips and ia32 host -#endif - -// Define unaligned read for the target architectures supporting it. -#if defined(GOOGLE_PROTOBUF_TARGET_ARCH_X64) || \ - defined(GOOGLE_PROTOBUF_TARGET_ARCH_IA32) -#define GOOGLE_PROTOBUF_TARGET_CAN_READ_UNALIGNED 1 -#elif GOOGLE_PROTOBUF_TARGET_ARCH_ARM -// Some CPU-OS combinations allow unaligned access on ARM. We assume -// that unaligned accesses are not allowed unless the build system -// defines the CAN_USE_UNALIGNED_ACCESSES macro to be non-zero. -#if CAN_USE_UNALIGNED_ACCESSES -#define GOOGLE_PROTOBUF_TARGET_CAN_READ_UNALIGNED 1 -#endif -#elif GOOGLE_PROTOBUF_TARGET_ARCH_MIPS -#else -#error Target architecture is not supported by protobuf -#endif - -#if (defined(__APPLE__) && defined(__MACH__)) || \ - defined(__FreeBSD__) || defined(__OpenBSD__) -#define GOOGLE_PROTOBUF_USING_BSD_ABI +#if defined(__APPLE__) +#define GOOGLE_PROTOBUF_OS_APPLE +#elif defined(__native_client__) +#define GOOGLE_PROTOBUF_OS_NACL #endif #endif // GOOGLE_PROTOBUF_PLATFORM_MACROS_H_ |