Browse Source

Move node_http_parser.cc global vars into node_vars.h

v0.7.4-release
Ryan Dahl 13 years ago
parent
commit
06d86ebe84
  1. 98
      src/node_http_parser.cc
  2. 84
      src/node_vars.h

98
src/node_http_parser.cc

@ -47,61 +47,57 @@
// 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;
// gcc 3.x knows the always_inline attribute but fails at build time with a
// "sorry, unimplemented: inlining failed" error when compiling at -O0

84
src/node_vars.h

@ -7,6 +7,7 @@
#include <v8.h>
#include <uv.h>
#include <http_parser.h>
#ifndef PATH_MAX
# define PATH_MAX 4096
@ -30,21 +31,6 @@ struct globals {
v8::Persistent<v8::String> listeners_symbol;
v8::Persistent<v8::String> uncaught_exception_symbol;
v8::Persistent<v8::String> emit_symbol;
// stream_wrap.cc
size_t slab_used;
uv_stream_t* handle_that_last_alloced;
v8::Persistent<v8::String> slab_sym;
v8::Persistent<v8::String> buffer_sym;
v8::Persistent<v8::String> write_queue_size_sym;
bool stream_wrap_initialized;
// tcp_wrap.cc
v8::Persistent<v8::Function> tcpConstructor;
v8::Persistent<v8::String> family_symbol;
v8::Persistent<v8::String> address_symbol;
v8::Persistent<v8::String> port_symbol;
bool print_eval;
char *eval_string;
int option_end_index;
@ -52,20 +38,16 @@ struct globals {
bool debug_wait_connect;
int debug_port;
int max_stack_size;
uv_check_t check_tick_watcher;
uv_prepare_t prepare_tick_watcher;
uv_idle_t tick_spinner;
bool need_tick_cb;
v8::Persistent<v8::String> tick_callback_sym;
bool use_npn;
bool use_sni;
// Buffer for getpwnam_r(), getgrpam_r() and other misc callers; keep this
// scoped at file-level rather than method-level to avoid excess stack usage.
char getbuf[PATH_MAX + 1];
// We need to notify V8 when we're idle so that it can run the garbage
// collector. The interface to this is V8::IdleNotification(). It returns
// true if the heap hasn't be fully compacted, and needs to be run again.
@ -77,13 +59,73 @@ struct globals {
uv_idle_t gc_idle;
uv_timer_t gc_timer;
bool need_gc;
# define FAST_TICK 700.
# define GC_WAIT_TIME 5000.
# define RPM_SAMPLES 100
int64_t tick_times[RPM_SAMPLES];
int tick_time_head;
// stream_wrap.cc
size_t slab_used;
uv_stream_t* handle_that_last_alloced;
v8::Persistent<v8::String> slab_sym;
v8::Persistent<v8::String> buffer_sym;
v8::Persistent<v8::String> write_queue_size_sym;
bool stream_wrap_initialized;
// tcp_wrap.cc
v8::Persistent<v8::Function> tcpConstructor;
v8::Persistent<v8::String> family_symbol;
v8::Persistent<v8::String> address_symbol;
v8::Persistent<v8::String> port_symbol;
// node_http_parser.cc
v8::Persistent<v8::String> on_headers_sym;
v8::Persistent<v8::String> on_headers_complete_sym;
v8::Persistent<v8::String> on_body_sym;
v8::Persistent<v8::String> on_message_complete_sym;
v8::Persistent<v8::String> delete_sym;
v8::Persistent<v8::String> get_sym;
v8::Persistent<v8::String> head_sym;
v8::Persistent<v8::String> post_sym;
v8::Persistent<v8::String> put_sym;
v8::Persistent<v8::String> connect_sym;
v8::Persistent<v8::String> options_sym;
v8::Persistent<v8::String> trace_sym;
v8::Persistent<v8::String> patch_sym;
v8::Persistent<v8::String> copy_sym;
v8::Persistent<v8::String> lock_sym;
v8::Persistent<v8::String> mkcol_sym;
v8::Persistent<v8::String> move_sym;
v8::Persistent<v8::String> propfind_sym;
v8::Persistent<v8::String> proppatch_sym;
v8::Persistent<v8::String> unlock_sym;
v8::Persistent<v8::String> report_sym;
v8::Persistent<v8::String> mkactivity_sym;
v8::Persistent<v8::String> checkout_sym;
v8::Persistent<v8::String> merge_sym;
v8::Persistent<v8::String> msearch_sym;
v8::Persistent<v8::String> notify_sym;
v8::Persistent<v8::String> subscribe_sym;
v8::Persistent<v8::String> unsubscribe_sym;
v8::Persistent<v8::String> unknown_method_sym;
v8::Persistent<v8::String> method_sym;
v8::Persistent<v8::String> status_code_sym;
v8::Persistent<v8::String> http_version_sym;
v8::Persistent<v8::String> version_major_sym;
v8::Persistent<v8::String> version_minor_sym;
v8::Persistent<v8::String> should_keep_alive_sym;
v8::Persistent<v8::String> upgrade_sym;
v8::Persistent<v8::String> headers_sym;
v8::Persistent<v8::String> url_sym;
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.
v8::Local<v8::Value>* current_buffer;
char* current_buffer_data;
size_t current_buffer_len;
};
struct globals* globals_get();

Loading…
Cancel
Save