Commit Graph
886 Commits
Author SHA1 Message Date
Rod Vagg 04fd4fad46 src: introduce process.release object
PR-URL: https://github.com/nodejs/io.js/pull/2154
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
2015-08-04 11:56:16 -07:00
Fedor Indutny ef65321083 node: do not override message/stack of error
Put the `...^` arrow string to the hidden property of the object, and
use it only when printing error to the stderr.

Fix: https://github.com/nodejs/io.js/issues/2104
PR-URL: https://github.com/nodejs/io.js/pull/2108
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-08-04 11:56:16 -07:00
Ben Noordhuis 70d1f32f56 deps: update v8 to 4.4.63.9
Upgrade the bundled V8 and update code in src/ and lib/ to the new API.

Notable backwards incompatible changes are the removal of the smalloc
module and dropped support for CESU-8 decoding.  CESU-8 support can be
brought back if necessary by doing UTF-8 decoding ourselves.

This commit includes https://codereview.chromium.org/1192973004 to fix
a build error on python 2.6 systems.  The original commit log follows:

    Use optparse in js2c.py for python compatibility

    Without this change, V8 won't build on RHEL/CentOS 6 because the
    distro python is too old to know about the argparse module.

PR-URL: https://github.com/nodejs/io.js/pull/2022
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-08-04 11:56:14 -07:00
Trevor Norris 63da0dfd3a buffer: implement Uint8Array backed Buffer
With V8 4.4 removing the external array data API currently used by
Buffer, the new implementation uses the Uint8Array to back Buffer.

Buffers now have a maximum size of Smi::kMaxLength, as defined by V8.
Which is ~2 GB on 64 bit and ~1 GB on 32 bit.

The flag --use-old-buffer allows using the old Buffer implementation.
This flag will be removed once V8 4.4 has landed.

The two JS Buffer implementations have been split into two files for
simplicity.

Use getter to return expected .parent/.offset values for backwards
compatibility.

PR-URL: https://github.com/nodejs/io.js/pull/1825
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-08-04 11:56:10 -07:00
Trevor Norris 93660c8b8e node: remove bad fn call and check
These two lines exist because of a screw up on my part while combining
MakeCallback() and MakeDomainCallback().

The reason it never broke core tests is because any paths it would have
broken were rerouted to AsyncWrap::MakeCallback(). The only case that
node::MakeCallback() handles anymore is setImmediate().

Fix: a1da024 "node, async-wrap: remove MakeDomainCallback"
PR-URL: https://github.com/nodejs/io.js/pull/2157
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2015-07-27 11:41:07 -06:00
Bradley Meck cf14a2427c src: add --track-heap-objects
- This makes v8 add .trace_function_info to the serialized form of
  snapshots from v8::HeapSnapshot::Serialize
- .trace_funciton_info combined with .trace_node in snapshots tells the
  JS location that allocated a specific object

PR-URL: https://github.com/nodejs/io.js/pull/2135
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-07-10 15:27:07 -06:00
Bradley Meck 6bef15afe7 src: remove traceSyncIO property from process
PR-URL: https://github.com/nodejs/io.js/pull/2143
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-07-09 17:28:56 +02:00
Trevor Norris e56758a5e0 async-wrap: add provider id and object info cb
Re-add the wrapper class id to AsyncWrap instances so they can be
tracked directly in a heapdump.

Previously the class id was given without setting the heap dump wrapper
class info provider. Causing a segfault when a heapdump was taken. This
has been added, and the label_ set to the given provider name so each
instance can be identified.

The id will not be set of the passed object has no internal field count.
As the class pointer cannot be retrieved from the object.

In order to properly report the allocated size of each class, the new
pure virtual method self_size() has been introduces.

PR-URL: https://github.com/nodejs/io.js/pull/1896
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-06-17 12:58:39 -06:00
Evan Lucas 5b6f575c1f Revert "src: add getopt option parser"
This reverts commit c0e7bf2d8c.

There are a few edge cases that can cause a crash
and need to be properly handled.

PR-URL: https://github.com/nodejs/io.js/pull/1862
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-06-01 11:25:32 -05:00
Evan Lucas c0e7bf2d8c src: add getopt option parser
Options have been moved into the NodeOptions class.
A new global, node_options now exists and is used
to access the options after the command line arguments
have been parsed.

PR-URL: https://github.com/nodejs/io.js/pull/1804
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-06-01 08:39:06 -05:00
Trevor Norris c1de6d249e core: implement runtime flag to trace sync io
Use the --trace-sync-io flag to print a stack trace whenever a sync
method is used after the first tick, excluding during the process exit
event. (e.g. fs.readFileSync()) It does not track if the warning has
occurred at a specific location in the past and so will print the
warning every time.

Reason for not printing during the first tick of the appication is so
all necessary resources can be required. Also by excluding synchronous
calls during exit is necessary in case any data needs to be logged out
by the application before it shuts down.

Fixes: https://github.com/nodejs/io.js/issues/1674
PR-URL: https://github.com/nodejs/io.js/pull/1707
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Petka Antonov <petka_antonov@hotmail.com>
2015-05-18 10:05:32 -06:00
Frederic Hemberger 066274794c doc: update links from iojs/io.js to nodejs/io.js
Replaced all links in doc and comments to point to the new org.

PR-URL: https://github.com/nodejs/io.js/pull/1715
Reviewed-By: Roman Reiss <me@silverwind.io>
2015-05-18 08:13:09 +02:00
Evan Lucas 3c92ca2b5c src: add ability to get/set effective uid/gid
Adds the following to process:

- `process.geteuid()`
- `process.seteuid(id)`
- `process.getegid()`
- `process.setegid(id)`

PR-URL: https://github.com/iojs/io.js/pull/1536
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-04-29 16:04:26 -05:00
Fedor Indutny a07c69113a src: use global SealHandleScope
Helps to find Handle leaks in Debug mode.

PR-URL: https://github.com/iojs/io.js/pull/1395
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-04-11 21:07:05 +02:00
Ben Noordhuis a4d88475fa src: disable fast math only on armv6
Don't disable fast math on ARMv7, only ARMv6.  I hope I got all the
v6 subarchs.

PR-URL: https://github.com/iojs/io.js/pull/1398
Reviewed-By: Roman Reiss <me@silverwind.io>
2015-04-11 21:04:38 +02:00
Ben Noordhuis e306c78f83 src: disable fast math on arm
The "fast" implementation of Math.exp() and Math.tanh() emits ARMv7
movt/movw instructions on ARMv6 (notably, the original Raspberry Pi.)

Disable fast math for now.  The adventurous can enable it again with
the --fast_math switch.

PR-URL: https://github.com/iojs/io.js/pull/1398
Refs: https://github.com/iojs/io.js/issues/1376
Reviewed-By: Roman Reiss <me@silverwind.io>
V8-Bug: https://code.google.com/p/v8/issues/detail?id=4019
2015-04-11 21:03:48 +02:00
Aria Stewart ad937752ee doc,src: remove references to --max-stack-size
Remove obsolete references to the removed --max-stack-size switch.

PR-URL: https://github.com/iojs/io.js/pull/1327
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-04-04 00:30:30 +02:00
Ben Noordhuis 4a801c211c src: drop homegrown thread pool, use libplatform
Drop the homegrown thread pool that was introduced in commit 50839a0
("v8_platform: provide default v8::Platform impl") and use one from
V8's libplatform library.  Performance is comparable and it removes
a few hundred lines of code.

The calls to v8::platform::PumpMessageLoop() are currently no-ops
because V8 does not (yet?) use v8::Platform::CallOnForegroundThread().

Packagers that link against a shared libv8 now also need to make
libv8_platform available.

PR-URL: https://github.com/iojs/io.js/pull/1329
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2015-04-04 00:21:39 +02:00
Ali Ijaz Sheikh f06b16f2e9 src: fix minor memleak in preload-modules
Free the preload_modules array once we are done with it.

PR-URL: https://github.com/iojs/io.js/pull/1265
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-03-28 12:43:18 +01:00
Vladimir Kurchatkin 2db758c562 iojs: introduce internal modules
Internal modules can be used to share private code between
public modules without risk to expose private APIs to the
user.

PR-URL: https://github.com/iojs/io.js/pull/848
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-03-25 22:12:18 +03:00
Ben Noordhuis 2e5b87a147 src: remove unnecessary environment lookups
Remove some unnecessary environment lookups and delete a few superfluous
HandleScope variables.

PR-URL: https://github.com/iojs/io.js/pull/1238
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2015-03-23 10:40:45 +01:00
Ben Noordhuis 7e88a9322c src: make accessors immune to context confusion
It's possible for an accessor or named interceptor to get called with
a different execution context than the one it lives in, see the test
case for an example using the debug API.

This commit fortifies against that by passing the environment as a
data property instead of looking it up through the current context.

Fixes: https://github.com/iojs/io.js/issues/1190 (again)
PR-URL: https://github.com/iojs/io.js/pull/1238
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2015-03-23 10:40:12 +01:00
Fedor Indutny b64983d77c src: reset signal handler to SIG_DFL on FreeBSD
FreeBSD has a nasty bug with SA_RESETHAND reseting the SA_SIGINFO,
that is in turn set for a libthr wrapper. This leads to a crash.
Work around the issue by manually setting SIG_DFL in the signal
handler.

Fix: https://github.com/joyent/node/issues/9326
PR-URL: https://github.com/iojs/io.js/pull/1218
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-03-20 14:10:35 -07:00
Ali Ijaz Sheikh 1514b82355 src: add -r/--require flags for preloading modules
This patch adds a command line option (-r/--require) that allows one
to provide modules on the command line that will be 'required' during
node startup. This can be useful for debugging, tracing, memory leak
analysis etc. to be preloaded without explicit changes to the user
script. The option can be repeated to preload multiple modules.

PR-URL: https://github.com/iojs/io.js/pull/881
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
2015-03-19 21:42:16 +11:00
Ben Noordhuis f58e59649d lib: remove broken NODE_MODULE_CONTEXTS feature
This feature has no tests and has been broken for ages, see for example
https://github.com/iojs/io.js/pull/1160.  Don't bother fixing it, it's
pretty much broken by design and there can't be too many users because
it's almost undocumented.  A quick Google search suggests that it causes
more grief than joy to the few that do use it.  Remove it.

PR-URL: https://github.com/iojs/io.js/pull/1162
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2015-03-16 20:56:13 +01:00
Ben Noordhuis 2551c1d2ca src: use Number::New() for heapTotal/heapUsed
With --max_old_space_size=12345 it's possible to create a JS heap that
is larger than what fits in an unsigned int so use Number::New() rather
than Integer::NewFromUnsigned().

Performance-wise, it doesn't matter much.  If V8 can fit the double in
a SMI, it will.

PR-URL: https://github.com/iojs/io.js/pull/1148
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-03-16 18:02:24 +01:00
Ben Noordhuis 4f394998ba src: don't create js string twice on error
Rewrite ErrnoException() so that it doesn't turn the file path into a
string twice.

PR-URL: https://github.com/iojs/io.js/pull/1148
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-03-16 18:02:01 +01:00
Chris Dickinson 056ed4b0c9 src: revert -r/--require flags
This reverts commit 7bde3f1a8f.

The added test (test/parallel/test-preload.js) fails on Windows.

PR-URL: https://github.com/iojs/io.js/pull/1150
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
2015-03-13 15:16:00 -07:00
Ali Ijaz Sheikh 7bde3f1a8f src: add -r/--require flags for preloading modules
-r/--require can be used to preload modules on node startup. The option
takes a single module name. The option can be repeated as necessary to
preload multiple modules.

This patch allows 'vendors' (such a cloud host) to inject functionality
that gets executed at application startup without requiring an explicit
require from the user's application. This can be useful to load vendor
specific application monitoring APIs transparently.

PR-URL: https://github.com/iojs/io.js/pull/881
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
2015-03-13 13:54:34 -07:00
Fedor Indutny e2c9040995 src: do not leak handles on debug and exit
Ensure HandleScope is created before creating any new handles (which
`Context::Scope` and `Environment::GetCurrent` does).

PR-URL: https://github.com/iojs/io.js/pull/1133
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Brian White <mscdex@mscdex.net>
2015-03-12 14:29:50 -07:00
Ben Noordhuis 364cc7e08a src: remove NODE_INVALID_UTF8 environment variable
Introduced in joyent/node v0.10 as a backwards compatibility measure.
It's an ugly hack and allowing invalid UTF-8 is not a good idea in the
first place, remove it.

PR-URL: https://github.com/iojs/io.js/pull/1042
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-03-05 20:44:18 +01:00
Petka Antonov 4ae64b2626 src: extract node env init out of process init
PR-URL: https://github.com/iojs/io.js/pull/980
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-03-05 11:35:33 -08:00
Chris Dickinson 0af4c9ea74 src: fix domains + --abort-on-uncaught-exception
If run with --abort-on-uncaught-exception, V8 will abort the process
whenever it does not see a JS-installed CatchClause in the stack. C++
TryCatch clauses are ignored. Domains work by setting a FatalException
handler which is ignored when running in abort mode.

This patch modifies MakeCallback to call its target function through a
JS function that installs a CatchClause and manually calls _fatalException
on error, if the process is both using domains and is in abort mode.

Semver: patch
PR-URL: https://github.com/iojs/io.js/pull/922
Fixes: https://github.com/iojs/io.js/issues/836
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-02-25 14:01:29 -08:00
Petka Antonov 872702d9b7 node: implement unhandled rejection tracking
Implement unhandled rejection tracking for promises as
specified in https://gist.github.com/benjamingr/0237932cee84712951a2

Fixes #256
PR-URL: https://github.com/iojs/io.js/pull/758
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Domenic Denicola <domenic@domenicdenicola.com>
2015-02-24 18:27:14 -06:00
Ben Noordhuis b5f25a963c src: ensure that file descriptors 0-2 are valid
Check that stdin, stdout and stderr map to open file descriptors and
remap them to /dev/null if that isn't the case.  Protects against
information leaks or worse when io.js is started with closed stdio
file descriptors.

PR-URL: https://github.com/iojs/io.js/pull/875
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Vladimir Kurchatkin <vladimir.kurchatkin@gmail.com>
2015-02-18 15:15:14 +01:00
Ben Noordhuis a956791f69 src: fix typo in error message
PR-URL: https://github.com/iojs/io.js/pull/875
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Vladimir Kurchatkin <vladimir.kurchatkin@gmail.com>
2015-02-18 15:15:14 +01:00
Ben Noordhuis 38dc0cd8f4 src: switch from QUEUE to intrusive list
This commit also breaks up req_wrap.h into req-wrap.h and req-wrap-inl.h
to work around a circular dependency issue in env.h.

PR-URL: https://github.com/iojs/io.js/pull/667
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
2015-02-11 23:06:29 +01:00
Vladimir Kurchatkin 8aed9d6610 src: cleanup Isolate::GetCurrent()
PR-URL: https://github.com/iojs/io.js/pull/807
Reviewed-by: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
2015-02-11 13:45:59 -07:00
Glen Keane 5e825d1073 tracing: add lttng support for tracing on linux
This commit adds the ability to enable userspace tracing with lttng
in io.js. It adds tracepoints for all the equivalent dtrace and ETW
tracepoints. To use these tracepoints enable --with-lttng on linux.

PR-URL: https://github.com/iojs/io.js/pull/702
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ryan Graham <ryan@strongloop.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
2015-02-09 18:06:57 +01:00
Ben Noordhuis 96ffcb9a21 src: reduce cpu profiler overhead
Reduce the overhead of the CPU profiler by suppressing SIGPROF signals
when sleeping / polling for events. Avoids unnecessary wakeups when the
CPU profiler is active.

The benefits are quite substantial on systems where it is expensive to
query the system time (most virtualized environments). Before, it was
common to see over 20% of wall clock time being spent on clock_gettime()
system calls.

PR: https://github.com/iojs/io.js/pull/466
Reviewed-by: Bert Belder <bertbelder@gmail.com>
2015-02-04 22:19:33 +01:00
Bert Belder bc2c85ceef fs: improve error messages
* Include a description for the error message
* For rename, link, and symlink, include both the source and destination
  path in the error message.
* Expose the destination path as the `dest` property on the error object.
* Fix a bug where `ThrowUVException()` would incorrectly delegate to
  `Environment::TrowErrnoException()`.

API impact:
* Adds an extra overload for node::UVException() which takes 6
  arguments.

PR: https://github.com/iojs/io.js/pull/675
Fixes: https://github.com/iojs/io.js/issues/207
Closes: https://github.com/iojs/io.js/pull/293
Reviewed-by: Ben Noordhuis <info@bnoordhuis.nl>
2015-01-31 11:54:56 +01:00
Fedor Indutny c6367e7f2a node: speed up ParseEncoding
Handle most popular cases in a trie-style, branching on a first
character.

Remove useless HandleScope which was only eating time without producing
any value.

PR-URL: https://github.com/iojs/io.js/pull/664
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-01-30 17:41:34 +03:00
Ben Noordhuis dd47a8c785 src: set default signal dispositions at start-up
Signal dispositions are inherited by child processes.  Restore ours to
sane defaults in case our parent process changed it, to prevent quirky
behavior when the parent does something silly like ignoring SIGSEGV.

PR-URL: https://github.com/iojs/io.js/pull/615
Reviewed-By: Sam Roberts <sam@strongloop.com>
2015-01-28 17:44:07 +01:00
Ben Noordhuis 63ae1d203a src: rework early debug signal handling
Instead of installing an early debug signal handler, simply block the
SIGUSR1 signal at start-up and unblock it when the debugger is ready.

Both approaches are functionally equivalent but blocking the signal
accomplishes it in fewer lines of code.

PR-URL: https://github.com/iojs/io.js/pull/615
Reviewed-By: Sam Roberts <sam@strongloop.com>
2015-01-28 17:44:04 +01:00
Ben Noordhuis 5756f92f46 src: do platform-specific initialization earlier
Execute the per-platform initialization logic as early as possible,
for two reasons:

1. It opens the way for an upcoming commit to simplify early SIGUSR1
   handling.

2. It should make life easier for embedders because io.js no longer
   mucks around with the file descriptor limit or signal disposition
   of the process.

PR-URL: https://github.com/iojs/io.js/pull/615
Reviewed-By: Sam Roberts <sam@strongloop.com>
2015-01-28 17:43:36 +01:00
Johan Bergström c0a9d1bc74 versions: add http-parser patchlevel
PR-URL: https://github.com/iojs/io.js/pull/614
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
2015-01-27 00:30:57 +01:00
Ben Noordhuis 7d462479f6 src: s/node/io.js/ in iojs --help message
Fix up a node reference that was missed in commit daf9562d.

PR-URL: https://github.com/iojs/io.js/pull/538
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2015-01-22 15:40:25 +01:00
Cheng Zhao 22e1aea8a0 src: set node_is_initialized in node::Init
This can make node_is_initialized correctly set to true for applications
that use node::Init to embed iojs.

PR-URL: https://github.com/iojs/io.js/pull/225/
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-01-21 00:13:36 +01:00
toastynerd 9419e1fb69 src: fix inconsistency between a check and error
dlopen takes exactly 2 arguments, check for exactly 2

PR-URL: https://github.com/iojs/io.js/pull/515
Reviewed-By: Rod Vagg <rod@vagg.org>
2015-01-20 11:17:11 +11:00
Ben Noordhuis e8ad773b56 src: remove --noharmony_classes again
Now that V8 has been upgraded, remove the --noharmony_classes and
--noharmony_object_literals workarounds from commits a2751e3e and
4e58211b.

PR-URL: https://github.com/iojs/io.js/pull/490
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Kenan Sulayman <kenan@sly.mn>
Reviewed-By: Rod Vagg <rod@vagg.org>
2015-01-18 13:09:23 +01:00