Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(474)

Side by Side Diff: src/cxa_demangle.cpp

Issue 102883003: Don't ship a full C++ demangler as part of libc++abi (Closed) Base URL: http://git.chromium.org/native_client/pnacl-libcxxabi.git@master
Patch Set: Copy/paste fail. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===-------------------------- cxa_demangle.cpp --------------------------===// 1 //===-------------------------- cxa_demangle.cpp --------------------------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open 5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details. 6 // Source Licenses. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 9
10 #define _LIBCPP_EXTERN_TEMPLATE(...) 10 #define _LIBCPP_EXTERN_TEMPLATE(...)
(...skipping 4586 matching lines...) Expand 10 before | Expand all | Expand 10 after
4597 extern "C" 4597 extern "C"
4598 char* 4598 char*
4599 __cxa_demangle(const char* mangled_name, char* buf, size_t* n, int* status) 4599 __cxa_demangle(const char* mangled_name, char* buf, size_t* n, int* status)
4600 { 4600 {
4601 if (mangled_name == nullptr || (buf != nullptr && n == nullptr)) 4601 if (mangled_name == nullptr || (buf != nullptr && n == nullptr))
4602 { 4602 {
4603 if (status) 4603 if (status)
4604 *status = invalid_args; 4604 *status = invalid_args;
4605 return nullptr; 4605 return nullptr;
4606 } 4606 }
4607 // @LOCALMOD-START The demangler is *huge* and only used in
4608 // default_terminate_handler with a fallback to printing mangled
4609 // names instead. pexe size matters a lot, so PNaCl only prints out
4610 // mangled names when exceptions are uncaught.
4611 #ifdef __pnacl__
4612 if (status)
4613 *status = memory_alloc_failure;
4614 return nullptr;
4615 #else
4616 // @LOCALMOD-END
4607 size_t internal_size = buf != nullptr ? *n : 0; 4617 size_t internal_size = buf != nullptr ? *n : 0;
4608 arena<bs> a; 4618 arena<bs> a;
4609 struct Db 4619 struct Db
4610 { 4620 {
4611 typedef String String; 4621 typedef String String;
4612 typedef Vector<string_pair> sub_type; 4622 typedef Vector<string_pair> sub_type;
4613 typedef Vector<sub_type> template_param_type; 4623 typedef Vector<sub_type> template_param_type;
4614 Vector<string_pair> names; 4624 Vector<string_pair> names;
4615 Vector<sub_type> subs; 4625 Vector<sub_type> subs;
4616 Vector<template_param_type> template_param; 4626 Vector<template_param_type> template_param;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
4674 db.names.back().first += db.names.back().second; 4684 db.names.back().first += db.names.back().second;
4675 std::memcpy(buf, db.names.back().first.data(), sz-1); 4685 std::memcpy(buf, db.names.back().first.data(), sz-1);
4676 buf[sz-1] = char(0); 4686 buf[sz-1] = char(0);
4677 } 4687 }
4678 } 4688 }
4679 else 4689 else
4680 buf = nullptr; 4690 buf = nullptr;
4681 if (status) 4691 if (status)
4682 *status = internal_status; 4692 *status = internal_status;
4683 return buf; 4693 return buf;
4694 // @LOCALMOD-START
4695 #endif // __pnacl__
4696 // @LOCALMOD-END
4684 } 4697 }
4685 4698
4686 } // __cxxabiv1 4699 } // __cxxabiv1
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698