From b1648fb339e3e1a542bd0658a26e6ff02c30dc4f Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Fri, 18 Sep 2015 18:40:46 +0100 Subject: [PATCH] switch babel-node binary to use v8 flags --- packages/babel-cli/package.json | 5 +- packages/babel-cli/src/babel-node.js | 477 +++------------------------ 2 files changed, 54 insertions(+), 428 deletions(-) diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index 00ed33de06..be27502a25 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -18,8 +18,9 @@ "output-file-sync": "^1.1.0", "path-exists": "^1.0.0", "path-is-absolute": "^1.0.0", + "slash": "^1.0.0", "source-map": "^0.4.0", - "slash": "^1.0.0" + "v8flags": "^2.0.10" }, "bin": { "babel": "./bin/babel.js", @@ -27,4 +28,4 @@ "babel-external-helpers": "./bin/babel-external-helpers.js", "babel-plugin": "./bin/babel-plugin.js" } -} \ No newline at end of file +} diff --git a/packages/babel-cli/src/babel-node.js b/packages/babel-cli/src/babel-node.js index 7e9aa639ff..fadf11fcae 100755 --- a/packages/babel-cli/src/babel-node.js +++ b/packages/babel-cli/src/babel-node.js @@ -3,7 +3,9 @@ * when found, before invoking the "real" _babel-node(1) executable. */ +var getV8Flags = require("v8flags"); var path = require("path"); + var args = [path.join(__dirname, "_babel-node")]; var babelArgs = process.argv.slice(2); @@ -16,434 +18,57 @@ if (argSeparator > -1) { babelArgs = babelArgs.slice(0, argSeparator); } -babelArgs.forEach(function(arg){ - var flag = arg.split("=")[0]; +getV8Flags(function (v8Flags) { + babelArgs.forEach(function(arg){ + var flag = arg.split("=")[0]; - switch (flag) { - case "-d": - args.unshift("--debug"); - break; + switch (flag) { + case "-d": + args.unshift("--debug"); + break; - case "debug": - case "--debug": - case "--debug-brk": - args.unshift(arg); - break; - - case "-gc": - case "--expose-gc": - args.unshift("--expose-gc"); - break; - - case "--use_strict": - case "--es_staging": - case "--harmony": - case "--harmony_shipping": - case "--harmony_modules": - case "--harmony_arrays": - case "--harmony_array_includes": - case "--harmony_regexps": - case "--harmony_arrow_functions": - case "--harmony_proxies": - case "--harmony_sloppy": - case "--harmony_unicode": - case "--harmony_tostring": - case "--harmony_numeric_literals": - case "--harmony_strings": - case "--harmony_scoping": - case "--harmony_classes": - case "--harmony_object_literals": - case "--harmony_templates": - case "--harmony_rest_parameters": - case "--harmony_generators": - case "--compiled_keyed_generic_loads": - case "--pretenuring_call_new": - case "--allocation_site_pretenuring": - case "--trace_pretenuring": - case "--trace_pretenuring_statistics": - case "--track_fields": - case "--track_double_fields": - case "--track_heap_object_fields": - case "--track_computed_fields": - case "--track_field_types": - case "--smi_binop": - case "--vector_ics": - case "--optimize_for_size": - case "--unbox_double_arrays": - case "--string_slices": - case "--crankshaft": - case "--hydrogen_filter": - case "--use_gvn": - case "--gvn_iterations": - case "--use_canonicalizing": - case "--use_inlining": - case "--use_escape_analysis": - case "--use_allocation_folding": - case "--use_local_allocation_folding": - case "--use_write_barrier_elimination": - case "--max_inlining_levels": - case "--max_inlined_source_size": - case "--max_inlined_nodes": - case "--max_inlined_nodes_cumulative": - case "--loop_invariant_code_motion": - case "--fast_math": - case "--collect_megamorphic_maps_from_stub_cache": - case "--hydrogen_stats": - case "--trace_check_elimination": - case "--trace_hydrogen": - case "--trace_hydrogen_filter": - case "--trace_hydrogen_stubs": - case "--trace_hydrogen_file": - case "--trace_phase": - case "--trace_inlining": - case "--trace_load_elimination": - case "--trace_store_elimination": - case "--trace_alloc": - case "--trace_all_uses": - case "--trace_range": - case "--trace_gvn": - case "--trace_representation": - case "--trace_removable_simulates": - case "--trace_escape_analysis": - case "--trace_allocation_folding": - case "--trace_track_allocation_sites": - case "--trace_migration": - case "--trace_generalization": - case "--stress_pointer_maps": - case "--stress_environments": - case "--deopt_every_n_times": - case "--deopt_every_n_garbage_collections": - case "--print_deopt_stress": - case "--trap_on_deopt": - case "--trap_on_stub_deopt": - case "--deoptimize_uncommon_cases": - case "--polymorphic_inlining": - case "--use_osr": - case "--array_bounds_checks_elimination": - case "--trace_bce": - case "--array_bounds_checks_hoisting": - case "--array_index_dehoisting": - case "--analyze_environment_liveness": - case "--load_elimination": - case "--check_elimination": - case "--store_elimination": - case "--dead_code_elimination": - case "--fold_constants": - case "--trace_dead_code_elimination": - case "--unreachable_code_elimination": - case "--trace_osr": - case "--stress_runs": - case "--lookup_sample_by_shared": - case "--cache_optimized_code": - case "--flush_optimized_code_cache": - case "--inline_construct": - case "--inline_arguments": - case "--inline_accessors": - case "--escape_analysis_iterations": - case "--optimize_for_in": - case "--concurrent_recompilation": - case "--job_based_recompilation": - case "--trace_concurrent_recompilation": - case "--concurrent_recompilation_queue_length": - case "--concurrent_recompilation_delay": - case "--block_concurrent_recompilation": - case "--concurrent_osr": - case "--omit_map_checks_for_leaf_maps": - case "--turbo_filter": - case "--trace_turbo": - case "--trace_turbo_graph": - case "--trace_turbo_cfg_file": - case "--trace_turbo_types": - case "--trace_turbo_scheduler": - case "--trace_turbo_reduction": - case "--trace_turbo_jt": - case "--turbo_asm": - case "--turbo_verify": - case "--turbo_stats": - case "--turbo_types": - case "--turbo_source_positions": - case "--context_specialization": - case "--turbo_deoptimization": - case "--turbo_inlining": - case "--turbo_inlining_intrinsics": - case "--trace_turbo_inlining": - case "--loop_assignment_analysis": - case "--turbo_profiling": - case "--turbo_reuse_spill_slots": - case "--turbo_delay_ssa_decon": - case "--turbo_move_optimization": - case "--turbo_jt": - case "--typed_array_max_size_in_heap": - case "--frame_count": - case "--interrupt_budget": - case "--type_info_threshold": - case "--generic_ic_threshold": - case "--self_opt_count": - case "--trace_opt_verbose": - case "--debug_code": - case "--code_comments": - case "--enable_sse3": - case "--enable_sse4_1": - case "--enable_sahf": - case "--enable_avx": - case "--enable_fma3": - case "--enable_vfp3": - case "--enable_armv7": - case "--enable_armv8": - case "--enable_neon": - case "--enable_sudiv": - case "--enable_mls": - case "--enable_movw_movt": - case "--enable_unaligned_accesses": - case "--enable_32dregs": - case "--enable_vldr_imm": - case "--force_long_branches": - case "--expose_natives_as": - case "--expose_debug_as": - case "--expose_free_buffer": - case "--expose_gc": - case "--expose_gc_as": - case "--expose_externalize_string": - case "--expose_trigger_failure": - case "--stack_trace_limit": - case "--builtins_in_stack_traces": - case "--disable_native_files": - case "--inline_new": - case "--trace_codegen": - case "--trace": - case "--mask_constants_with_cookie": - case "--lazy": - case "--trace_opt": - case "--trace_opt_stats": - case "--opt": - case "--always_opt": - case "--always_osr": - case "--prepare_always_opt": - case "--trace_deopt": - case "--trace_stub_failures": - case "--serialize_toplevel": - case "--serialize_inner": - case "--trace_serializer": - case "--min_preparse_length": - case "--max_opt_count": - case "--compilation_cache": - case "--cache_prototype_transitions": - case "--cpu_profiler_sampling_interval": - case "--trace_debug_json": - case "--trace_js_array_abuse": - case "--trace_external_array_abuse": - case "--trace_array_abuse": - case "--enable_liveedit": - case "--hard_abort": - case "--stack_size": - case "--max_stack_trace_source_length": - case "--always_inline_smi_code": - case "--min_semi_space_size": - case "--target_semi_space_size": - case "--max_semi_space_size": - case "--semi_space_growth_factor": - case "--experimental_new_space_growth_heuristic": - case "--max_old_space_size": - case "--initial_old_space_size": - case "--max_executable_size": - case "--gc_global": - case "--gc_interval": - case "--trace_gc": - case "--trace_gc_nvp": - case "--trace_gc_ignore_scavenger": - case "--trace_idle_notification": - case "--trace_idle_notification_verbose": - case "--print_cumulative_gc_stat": - case "--print_max_heap_committed": - case "--trace_gc_verbose": - case "--trace_fragmentation": - case "--collect_maps": - case "--weak_embedded_maps_in_optimized_code": - case "--weak_embedded_objects_in_optimized_code": - case "--flush_code": - case "--flush_code_incrementally": - case "--trace_code_flushing": - case "--age_code": - case "--incremental_marking": - case "--incremental_marking_steps": - case "--concurrent_sweeping": - case "--trace_incremental_marking": - case "--track_gc_object_stats": - case "--heap_profiler_trace_objects": - case "--use_idle_notification": - case "--use_ic": - case "--trace_ic": - case "--native_code_counters": - case "--always_compact": - case "--never_compact": - case "--compact_code_space": - case "--incremental_code_compaction": - case "--cleanup_code_caches_at_gc": - case "--use_marking_progress_bar": - case "--zap_code_space": - case "--random_seed": - case "--trace_weak_arrays": - case "--track_prototype_users": - case "--use_verbose_printer": - case "--allow_natives_syntax": - case "--trace_parse": - case "--trace_sim": - case "--debug_sim": - case "--check_icache": - case "--stop_sim_at": - case "--sim_stack_alignment": - case "--sim_stack_size": - case "--log_regs_modified": - case "--log_colour": - case "--ignore_asm_unimplemented_break": - case "--trace_sim_messages": - case "--stack_trace_on_illegal": - case "--abort_on_uncaught_exception": - case "--randomize_hashes": - case "--hash_seed": - case "--profile_deserialization": - case "--regexp_optimization": - case "--testing_bool_flag": - case "--testing_maybe_bool_flag": - case "--testing_int_flag": - case "--testing_float_flag": - case "--testing_string_flag": - case "--testing_prng_seed": - case "--testing_serialization_file": - case "--startup_blob": - case "--profile_hydrogen_code_stub_compilation": - case "--predictable": - case "--help": - case "--dump_counters": - case "--debugger": - case "--map_counters": - case "--js_arguments": - case "--gdbjit": - case "--gdbjit_full": - case "--gdbjit_dump": - case "--gdbjit_dump_filter": - case "--force_marking_deque_overflows": - case "--stress_compaction": - case "--log": - case "--log_all": - case "--log_api": - case "--log_code": - case "--log_gc": - case "--log_handles": - case "--log_snapshot_positions": - case "--log_suspect": - case "--prof": - case "--prof_browser_mode": - case "--log_regexp": - case "--logfile": - case "--logfile_per_isolate": - case "--ll_prof": - case "--perf_basic_prof": - case "--perf_jit_prof": - case "--gc_fake_mmap": - case "--log_internal_timer_events": - case "--log_timer_events": - case "--log_instruction_stats": - case "--log_instruction_file": - case "--log_instruction_period": - case "--redirect_code_traces": - case "--redirect_code_traces_to": - case "--hydrogen_track_positions": - case "--trace_elements_transitions": - case "--trace_creation_allocation_sites": - case "--print_code_stubs": - case "--test_secondary_stub_cache": - case "--test_primary_stub_cache": - case "--print_code": - case "--print_opt_code": - case "--print_unopt_code": - case "--print_code_verbose": - case "--print_builtin_code": - case "--sodium": - case "--print_all_code": - case "--es5_readonly": - case "--es52_globals": - case "--harmony_typeof": - case "--harmony_collections": - case "--packed_arrays": - case "--smi_only_arrays": - case "--clever_optimizations": - case "--use_range": - case "--eliminate_dead_phis": - case "--optimize_closures": - case "--loop_weight": - case "--opt_safe_uint32_operations": - case "--parallel_recompilation": - case "--trace_parallel_recompilation": - case "--parallel_recompilation_queue_length": - case "--experimental_profiler": - case "--watch_ic_patching": - case "--self_optimization": - case "--direct_self_opt": - case "--retry_self_opt": - case "--count_based_interrupts": - case "--interrupt_at_exit": - case "--weighted_back_edges": - case "--debug_code (generate extra code": - case "--enable_sse2": - case "--enable_cmov": - case "--enable_rdtsc": - case "--enable_vfp2": - case "--enable_fpu": - case "--stack_trace_on_abort": - case "--always_full_compiler": - case "--debugger_auto_break": - case "--break_on_abort": - case "--max_new_space_size": - case "--trace_external_memory": - case "--lazy_sweeping": - case "--trace_exception": - case "--preallocate_message_memory": - case "--preemption": - case "--extra_code": - case "--remote_debugger": - case "--debugger_agent": - case "--debugger_port": - case "--debug_compile_events": - case "--debug_script_collected_events": - case "--log_runtime": - case "--prof_auto": - case "--prof_lazy": - case "--sliding_state_window": - case "--nolazy": - args.unshift(arg); - break; - - default: - if (arg.indexOf("--trace") === 0) { + case "debug": + case "--debug": + case "--debug-brk": args.unshift(arg); - } else { - args.push(arg); - } - break; + break; + + case "-gc": + case "--expose-gc": + args.unshift("--expose-gc"); + break; + + default: + if (v8Flags.indexOf(arg) >= 0 || arg.indexOf("--trace") === 0) { + args.unshift(arg); + } else { + args.push(arg); + } + break; + } + }); + + // append arguments passed after -- + if (argSeparator > -1) { + args = args.concat(userArgs); + } + + try { + var kexec = require("kexec"); + kexec(process.argv[0], args); + } catch (err) { + if (err.code !== "MODULE_NOT_FOUND") throw err; + + var child_process = require("child_process"); + var proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" }); + proc.on("exit", function (code, signal) { + process.on("exit", function () { + if (signal) { + process.kill(process.pid, signal); + } else { + process.exit(code); + } + }); + }); } }); - -// append arguments passed after -- -if (argSeparator > -1) { - args = args.concat(userArgs); -} - -try { - var kexec = require("kexec"); - kexec(process.argv[0], args); -} catch (err) { - if (err.code !== "MODULE_NOT_FOUND") throw err; - - var child_process = require("child_process"); - var proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" }); - proc.on("exit", function (code, signal) { - process.on("exit", function () { - if (signal) { - process.kill(process.pid, signal); - } else { - process.exit(code); - } - }); - }); -}