summaryrefslogtreecommitdiff
path: root/src/node_http_parser.cc
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2012-02-03 16:32:00 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2012-02-06 15:44:42 +0100
commit74a8215a8699f89ee4b82ca616a4eafa3b11203b (patch)
tree1f2c8a7c47eae80a043c4b3ccf7372f4e8c7e292 /src/node_http_parser.cc
parenta9723df1b76777899a3819839cb7e8f0e2efaef1 (diff)
downloadnode-new-74a8215a8699f89ee4b82ca616a4eafa3b11203b.tar.gz
Revert support for isolates.
It was decided that the performance benefits that isolates offer (faster spin-up times for worker processes, faster inter-worker communication, possibly a lower memory footprint) are not actual bottlenecks for most people and do not outweigh the potential stability issues and intrusive changes to the code base that first-class support for isolates requires. Hence, this commit backs out all isolates-related changes. Good bye, isolates. We hardly knew ye.
Diffstat (limited to 'src/node_http_parser.cc')
-rw-r--r--src/node_http_parser.cc98
1 files changed, 51 insertions, 47 deletions
diff --git a/src/node_http_parser.cc b/src/node_http_parser.cc
index 8360c43300..8d9000d9d7 100644
--- a/src/node_http_parser.cc
+++ b/src/node_http_parser.cc
@@ -47,57 +47,61 @@
// allocations.
-#include <node_vars.h>
-// We do the following to minimize the detal between v0.6 branch. We want to
-// use the variables as they were being used before.
-#define on_headers_sym NODE_VAR(on_headers_sym)
-#define on_headers_complete_sym NODE_VAR(on_headers_complete_sym)
-#define on_body_sym NODE_VAR(on_body_sym)
-#define on_message_complete_sym NODE_VAR(on_message_complete_sym)
-#define delete_sym NODE_VAR(delete_sym)
-#define get_sym NODE_VAR(get_sym)
-#define head_sym NODE_VAR(head_sym)
-#define post_sym NODE_VAR(post_sym)
-#define put_sym NODE_VAR(put_sym)
-#define connect_sym NODE_VAR(connect_sym)
-#define options_sym NODE_VAR(options_sym)
-#define trace_sym NODE_VAR(trace_sym)
-#define patch_sym NODE_VAR(patch_sym)
-#define copy_sym NODE_VAR(copy_sym)
-#define lock_sym NODE_VAR(lock_sym)
-#define mkcol_sym NODE_VAR(mkcol_sym)
-#define move_sym NODE_VAR(move_sym)
-#define propfind_sym NODE_VAR(propfind_sym)
-#define proppatch_sym NODE_VAR(proppatch_sym)
-#define unlock_sym NODE_VAR(unlock_sym)
-#define report_sym NODE_VAR(report_sym)
-#define mkactivity_sym NODE_VAR(mkactivity_sym)
-#define checkout_sym NODE_VAR(checkout_sym)
-#define merge_sym NODE_VAR(merge_sym)
-#define msearch_sym NODE_VAR(msearch_sym)
-#define notify_sym NODE_VAR(notify_sym)
-#define subscribe_sym NODE_VAR(subscribe_sym)
-#define unsubscribe_sym NODE_VAR(unsubscribe_sym)
-#define unknown_method_sym NODE_VAR(unknown_method_sym)
-#define method_sym NODE_VAR(method_sym)
-#define status_code_sym NODE_VAR(status_code_sym)
-#define http_version_sym NODE_VAR(http_version_sym)
-#define version_major_sym NODE_VAR(version_major_sym)
-#define version_minor_sym NODE_VAR(version_minor_sym)
-#define should_keep_alive_sym NODE_VAR(should_keep_alive_sym)
-#define upgrade_sym NODE_VAR(upgrade_sym)
-#define headers_sym NODE_VAR(headers_sym)
-#define url_sym NODE_VAR(url_sym)
-#define settings NODE_VAR(settings)
-#define current_buffer NODE_VAR(current_buffer)
-#define current_buffer_data NODE_VAR(current_buffer_data)
-#define current_buffer_len NODE_VAR(current_buffer_len)
-
-
namespace node {
using namespace v8;
+static Persistent<String> on_headers_sym;
+static Persistent<String> on_headers_complete_sym;
+static Persistent<String> on_body_sym;
+static Persistent<String> on_message_complete_sym;
+
+static Persistent<String> delete_sym;
+static Persistent<String> get_sym;
+static Persistent<String> head_sym;
+static Persistent<String> post_sym;
+static Persistent<String> put_sym;
+static Persistent<String> connect_sym;
+static Persistent<String> options_sym;
+static Persistent<String> trace_sym;
+static Persistent<String> patch_sym;
+static Persistent<String> copy_sym;
+static Persistent<String> lock_sym;
+static Persistent<String> mkcol_sym;
+static Persistent<String> move_sym;
+static Persistent<String> propfind_sym;
+static Persistent<String> proppatch_sym;
+static Persistent<String> unlock_sym;
+static Persistent<String> report_sym;
+static Persistent<String> mkactivity_sym;
+static Persistent<String> checkout_sym;
+static Persistent<String> merge_sym;
+static Persistent<String> msearch_sym;
+static Persistent<String> notify_sym;
+static Persistent<String> subscribe_sym;
+static Persistent<String> unsubscribe_sym;
+static Persistent<String> unknown_method_sym;
+
+static Persistent<String> method_sym;
+static Persistent<String> status_code_sym;
+static Persistent<String> http_version_sym;
+static Persistent<String> version_major_sym;
+static Persistent<String> version_minor_sym;
+static Persistent<String> should_keep_alive_sym;
+static Persistent<String> upgrade_sym;
+static Persistent<String> headers_sym;
+static Persistent<String> url_sym;
+
+static struct http_parser_settings settings;
+
+
+// This is a hack to get the current_buffer to the callbacks with the least
+// amount of overhead. Nothing else will run while http_parser_execute()
+// runs, therefore this pointer can be set and used for the execution.
+static Local<Value>* current_buffer;
+static char* current_buffer_data;
+static size_t current_buffer_len;
+
#define HTTP_CB(name) \
static int name(http_parser* p_) { \