~james-page/ubuntu/precise/nodejs/0.6.x-merge

« back to all changes in this revision

Viewing changes to deps/v8/src/allocation.h

  • Committer: James Page
  • Date: 2012-03-30 12:09:16 UTC
  • mfrom: (7.1.23 sid)
  • Revision ID: james.page@canonical.com-20120330120916-40hfu9o00qr5t87b
* Merge from Debian unstable:
  - New upstream release (LP: #892034).
  - This package is x86/arm only. Update control to match
  - d/patches/2009_increase_test_timeout.patch: Increased default test
    timeout from 60 to 120 seconds to support reliable execution of all
    tests on armhf/armel architectures.
  - d/patches/2005_expected_failing_tests.patch: 
    - Allow racey tests to fail: test-cluster-kill-workers,
      test-child-process-fork2 
    - Allow test-fs-watch to fail as LP buildd's don't support
      inotify.
    - Revert all other Ubuntu changes as no longer required.
* Update Standards-Version to 3.9.3.
* Patch wscript to enable build on mipsel arch, libv8 being available.
  Upstream does not support that arch, failure expected.
* test-cluster-kill-workers is expected to fail on armhf,
  Bug#660802 will be closed when test pass.
* test-buffer is expected to fail on armel,
  Bug#660800 will be closed when test pass.
* Add epoch to dependency on libev >= 1:4.11. Closes: bug#658441.
* Remove tools/doc because node-doc-generator has no license for now.
* Add copyright for doc/sh* files (shjs).
* source.lintian-overrides : source-contains-waf-binary tools/node-waf
  it is simply not the case here.
* test-stream-pipe-multi expected to timeout sometimes on busy builds. 
* New upstream release.
* Remove upstream patches.
* test-dgram-pingpong expected to timeout, the test itself is buggy.
* test-buffer expected to fail on armel, allow building package to make
  it easier to find the cause of the failure.
  Closes: bug#639636.
* Expect tests dgram-multicast and broadcast to fail.
  debian/patches/2005_expected_failing_tests.patch
* Drop dpkg-source local-options: Defaults since dpkg-source 1.16.1.
* New upstream release.
* Depend on libev-dev 4.11, see bug#657080.
* Bump dependency on openssl to 1.0.0g.
* Remove useless uv_loop_refcount from libuv,
  refreshed 2009_fix_shared_ev.patch.
* Apply to upstream patches landed after 0.6.10 release,
  to fix debugger repl and http client.
* New upstream release. Closes:bug#650661
* Repackage to remove non-dfsg font files ./deps/npm/html/*/*.ttf
* Remove unneeded bundled dependencies: lighter tarball,
  debian/copyright is easier to maintain.
* Drop unneeded build-dependency on scons.
* Depend on zlib1g, libc-ares, libev.
  Patches done to support building with those shared libs.
* Fix DEB_UPSTREAM_URL in debian/rules, and debian/watch.
* nodejs.pc file for pkgconfig is no more available.
* Build-depend on procps package, a test is using /bin/ps.
* Refreshed debian/patches/2005_expected_failing_tests.patch,
  only for tests that need networking.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
// processing.
40
40
void FatalProcessOutOfMemory(const char* message);
41
41
 
42
 
// A class that controls whether allocation is allowed.  This is for
43
 
// the C++ heap only!
44
 
class NativeAllocationChecker {
45
 
 public:
46
 
  typedef enum { ALLOW, DISALLOW } NativeAllocationAllowed;
47
 
  explicit inline NativeAllocationChecker(NativeAllocationAllowed allowed)
48
 
      : allowed_(allowed) {
49
 
#ifdef DEBUG
50
 
    if (allowed == DISALLOW) {
51
 
      allocation_disallowed_++;
52
 
    }
53
 
#endif
54
 
  }
55
 
  ~NativeAllocationChecker() {
56
 
#ifdef DEBUG
57
 
    if (allowed_ == DISALLOW) {
58
 
      allocation_disallowed_--;
59
 
    }
60
 
#endif
61
 
    ASSERT(allocation_disallowed_ >= 0);
62
 
  }
63
 
  static inline bool allocation_allowed() {
64
 
    return allocation_disallowed_ == 0;
65
 
  }
66
 
 private:
67
 
  // This static counter ensures that NativeAllocationCheckers can be nested.
68
 
  static int allocation_disallowed_;
69
 
  // This flag applies to this particular instance.
70
 
  NativeAllocationAllowed allowed_;
71
 
};
72
 
 
73
 
 
74
42
// Superclass for classes managed with new & delete.
75
43
class Malloced {
76
44
 public:
114
82
 
115
83
template <typename T>
116
84
static T* NewArray(int size) {
117
 
  ASSERT(NativeAllocationChecker::allocation_allowed());
118
85
  T* result = new T[size];
119
86
  if (result == NULL) Malloced::FatalProcessOutOfMemory();
120
87
  return result;
146
113
// Allocation policy for allocating in preallocated space.
147
114
// Used as an allocation policy for ScopeInfo when generating
148
115
// stack traces.
149
 
class PreallocatedStorage : public AllStatic {
 
116
class PreallocatedStorage {
150
117
 public:
151
118
  explicit PreallocatedStorage(size_t size);
152
119
  size_t size() { return size_; }
153
 
  static void* New(size_t size);
154
 
  static void Delete(void* p);
155
120
 
156
 
  // Preallocate a set number of bytes.
157
 
  static void Init(size_t size);
 
121
  // TODO(isolates): Get rid of these-- we'll have to change the allocator
 
122
  //                 interface to include a pointer to an isolate to do this
 
123
  //                 efficiently.
 
124
  static inline void* New(size_t size);
 
125
  static inline void Delete(void* p);
158
126
 
159
127
 private:
160
128
  size_t size_;
161
129
  PreallocatedStorage* previous_;
162
130
  PreallocatedStorage* next_;
163
 
  static bool preallocated_;
164
 
 
165
 
  static PreallocatedStorage in_use_list_;
166
 
  static PreallocatedStorage free_list_;
167
131
 
168
132
  void LinkTo(PreallocatedStorage* other);
169
133
  void Unlink();
 
134
 
 
135
  friend class Isolate;
 
136
 
170
137
  DISALLOW_IMPLICIT_CONSTRUCTORS(PreallocatedStorage);
171
138
};
172
139