Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Apr 2016 15:51:19 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r412412 - head/www/node/files
Message-ID:  <201604021551.u32FpJBe039990@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim (src committer)
Date: Sat Apr  2 15:51:18 2016
New Revision: 412412
URL: https://svnweb.freebsd.org/changeset/ports/412412

Log:
  During the exp-run in bug 208158, it was found that www/node gives
  errors with libc++ 3.8.0 [1]:
  
  /usr/include/c++/v1/map:837:5: error: static_assert failed "Allocator::value_type must be same type as value_type"
      static_assert((is_same<typename allocator_type::value_type, value_type>::value),
      ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../deps/v8/src/compiler/js-type-feedback.h:41:21: note: in instantiation of template class 'std::__1::map<unsigned int, v8::internal::TypeFeedbackId, std::__1::less<unsigned int>, v8::internal::zone_allocator<v8::internal::TypeFeedbackId> >' requested here
    TypeFeedbackIdMap type_feedback_id_map_;
                      ^
  
  This is because libc++ 3.8.0 has added these sanity checks for custom
  std::map allocators, which *must* be of the type std::pair<const Key,
  Value>.  I fixed the few std::map instances in the node source by adding
  this to their allocator types.
  
  Approved by:	linpct@gmail.com (maintainer)
  PR:		208270
  MFH:		2016Q2

Added:
  head/www/node/files/patch-deps_v8_src_compiler_instruction.h   (contents, props changed)
  head/www/node/files/patch-deps_v8_src_compiler_js-type-feedback.h   (contents, props changed)
  head/www/node/files/patch-deps_v8_src_zone-containers.h   (contents, props changed)

Added: head/www/node/files/patch-deps_v8_src_compiler_instruction.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/node/files/patch-deps_v8_src_compiler_instruction.h	Sat Apr  2 15:51:18 2016	(r412412)
@@ -0,0 +1,11 @@
+--- deps/v8/src/compiler/instruction.h.orig	2016-03-16 21:22:58.000000000 +0100
++++ deps/v8/src/compiler/instruction.h	2016-03-24 23:27:23.004854000 +0100
+@@ -1011,7 +1011,7 @@ class InstructionBlock final : public Zo
+ 
+ typedef ZoneDeque<Constant> ConstantDeque;
+ typedef std::map<int, Constant, std::less<int>,
+-                 zone_allocator<std::pair<int, Constant> > > ConstantMap;
++                 zone_allocator<std::pair<const int, Constant> > > ConstantMap;
+ 
+ typedef ZoneDeque<Instruction*> InstructionDeque;
+ typedef ZoneDeque<ReferenceMap*> ReferenceMapDeque;

Added: head/www/node/files/patch-deps_v8_src_compiler_js-type-feedback.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/node/files/patch-deps_v8_src_compiler_js-type-feedback.h	Sat Apr  2 15:51:18 2016	(r412412)
@@ -0,0 +1,15 @@
+--- deps/v8/src/compiler/js-type-feedback.h.orig	2016-03-16 21:22:58.000000000 +0100
++++ deps/v8/src/compiler/js-type-feedback.h	2016-03-24 22:54:54.529827000 +0100
+@@ -33,9 +33,10 @@ class JSTypeFeedbackTable : public ZoneO
+  private:
+   friend class JSTypeFeedbackSpecializer;
+   typedef std::map<NodeId, TypeFeedbackId, std::less<NodeId>,
+-                   zone_allocator<TypeFeedbackId> > TypeFeedbackIdMap;
++                   zone_allocator<std::pair<const NodeId, TypeFeedbackId> > >
++      TypeFeedbackIdMap;
+   typedef std::map<NodeId, FeedbackVectorICSlot, std::less<NodeId>,
+-                   zone_allocator<FeedbackVectorICSlot> >
++                   zone_allocator<std::pair<const NodeId, FeedbackVectorICSlot> > >
+       FeedbackVectorICSlotMap;
+ 
+   TypeFeedbackIdMap type_feedback_id_map_;

Added: head/www/node/files/patch-deps_v8_src_zone-containers.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/node/files/patch-deps_v8_src_zone-containers.h	Sat Apr  2 15:51:18 2016	(r412412)
@@ -0,0 +1,18 @@
+--- deps/v8/src/zone-containers.h.orig	2016-03-16 21:22:58.000000000 +0100
++++ deps/v8/src/zone-containers.h	2016-03-24 23:34:37.741885000 +0100
+@@ -114,12 +114,12 @@ class ZoneSet : public std::set<K, Compa
+ // a zone allocator.
+ template <typename K, typename V, typename Compare = std::less<K>>
+ class ZoneMap
+-    : public std::map<K, V, Compare, zone_allocator<std::pair<K, V>>> {
++    : public std::map<K, V, Compare, zone_allocator<std::pair<const K, V>>> {
+  public:
+   // Constructs an empty map.
+   explicit ZoneMap(Zone* zone)
+-      : std::map<K, V, Compare, zone_allocator<std::pair<K, V>>>(
+-            Compare(), zone_allocator<std::pair<K, V>>(zone)) {}
++      : std::map<K, V, Compare, zone_allocator<std::pair<const K, V>>>(
++            Compare(), zone_allocator<std::pair<const K, V>>(zone)) {}
+ };
+ 
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604021551.u32FpJBe039990>