Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: runtime/bin/BUILD.gn

Issue 2901163002: Use assembly instead of C array literals to link the core snapshot into the VM. (Closed)
Patch Set: windows Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/toolchain/win/BUILD.gn ('k') | runtime/bin/bin.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 # for details. All rights reserved. Use of this source code is governed by a 2 # for details. All rights reserved. Use of this source code is governed by a
3 # BSD-style license that can be found in the LICENSE file. 3 # BSD-style license that can be found in the LICENSE file.
4 4
5 import("gypi_contents.gni") 5 import("gypi_contents.gni")
6 import("../runtime_args.gni") 6 import("../runtime_args.gni")
7 import("../../build/compiled_action.gni") 7 import("../../build/compiled_action.gni")
8 8
9 # Generate a resources.cc file for the service isolate without Observatory. 9 # Generate a resources.cc file for the service isolate without Observatory.
10 action("gen_resources_cc") { 10 action("gen_resources_cc") {
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 rebase_path(vm_isolate_snapshot, root_build_dir), 482 rebase_path(vm_isolate_snapshot, root_build_dir),
483 "--isolate_output_bin", 483 "--isolate_output_bin",
484 rebase_path(isolate_snapshot, root_build_dir), 484 rebase_path(isolate_snapshot, root_build_dir),
485 "--target_os", 485 "--target_os",
486 current_os, 486 current_os,
487 "--timestamp_file", 487 "--timestamp_file",
488 rebase_path(gen_snapshot_stamp_file, root_build_dir), 488 rebase_path(gen_snapshot_stamp_file, root_build_dir),
489 ] 489 ]
490 } 490 }
491 491
492 action("generate_snapshot_file") { 492 # Generates an assembly file defining a given symbol with the bytes from a
493 # binary file. Places the symbol in a text section if 'executable' is true,
494 # otherwise places the symbol in a read-only data section.
495 template("bin_to_assembly") {
496 assert(defined(invoker.deps), "Must define deps")
497 assert(defined(invoker.input), "Must define input binary file")
498 assert(defined(invoker.output), "Must define output assembly file")
499 assert(defined(invoker.symbol), "Must define symbol name")
500 assert(defined(invoker.executable), "Must define boolean executable")
501
502 action(target_name) {
503 deps = invoker.deps
504 script = "../tools/bin_to_assembly.py"
505 args = [
506 "--input",
507 rebase_path(invoker.input),
508 "--output",
509 rebase_path(invoker.output),
510 "--symbol_name",
511 invoker.symbol,
512 "--target_os",
513 target_os,
514 ]
515 if (invoker.executable) {
516 args += [ "--executable" ]
517 }
518 inputs = [
519 script,
520 invoker.input,
521 ]
522 outputs = [
523 invoker.output,
524 ]
525 }
526 }
527
528 bin_to_assembly("vm_snapshot_data_assembly") {
493 deps = [ 529 deps = [
494 ":generate_snapshot_bin", 530 ":generate_snapshot_bin",
495 ] 531 ]
532 input = "$target_gen_dir/vm_isolate_snapshot.bin"
533 output = "$target_gen_dir/vm_snapshot_data.S"
534 symbol = "kDartVmSnapshotData"
535 executable = false
536 }
496 537
497 snapshot_in_cc_file = "snapshot_in.cc" 538 bin_to_assembly("vm_snapshot_instructions_assembly") {
498 inputs = [ 539 deps = []
499 "../tools/create_snapshot_file.py", 540 input = "../tools/empty.bin"
500 snapshot_in_cc_file, 541 output = "$target_gen_dir/vm_snapshot_instructions.S"
501 "$target_gen_dir/vm_isolate_snapshot.bin", 542 symbol = "kDartVmSnapshotInstructions"
502 "$target_gen_dir/isolate_snapshot.bin", 543 executable = true
544 }
545
546 bin_to_assembly("isolate_snapshot_data_assembly") {
547 deps = [
548 ":generate_snapshot_bin",
503 ] 549 ]
504 output = "$root_gen_dir/dart_snapshot.cc" 550 input = "$target_gen_dir/isolate_snapshot.bin"
505 outputs = [ 551 output = "$target_gen_dir/isolate_snapshot_data.S"
506 output, 552 symbol = "kDartCoreIsolateSnapshotData"
553 executable = false
554 }
555
556 bin_to_assembly("isolate_snapshot_instructions_assembly") {
557 deps = []
558 input = "../tools/empty.bin"
559 output = "$target_gen_dir/isolate_snapshot_instructions.S"
560 symbol = "kDartCoreIsolateSnapshotInstructions"
561 executable = true
562 }
563
564 source_set("dart_snapshot_cc") {
565 deps = [
566 ":isolate_snapshot_data_assembly",
567 ":isolate_snapshot_instructions_assembly",
568 ":vm_snapshot_data_assembly",
569 ":vm_snapshot_instructions_assembly",
507 ] 570 ]
508 571 sources = [
509 script = "../tools/create_snapshot_file.py" 572 "$target_gen_dir/isolate_snapshot_data.S",
510 args = [ 573 "$target_gen_dir/isolate_snapshot_instructions.S",
511 "--vm_input_bin", 574 "$target_gen_dir/vm_snapshot_data.S",
512 rebase_path("$target_gen_dir/vm_isolate_snapshot.bin"), 575 "$target_gen_dir/vm_snapshot_instructions.S",
513 "--input_bin",
514 rebase_path("$target_gen_dir/isolate_snapshot.bin"),
515 "--input_cc",
516 rebase_path(snapshot_in_cc_file),
517 "--output",
518 rebase_path(output),
519 ] 576 ]
520 } 577 }
521 578
522 source_set("dart_snapshot_cc") {
523 sources = [
524 "$root_gen_dir/dart_snapshot.cc",
525 ]
526
527 deps = [
528 ":generate_snapshot_file",
529 ]
530 }
531
532 template("dart_executable") { 579 template("dart_executable") {
533 extra_configs = [] 580 extra_configs = []
534 if (defined(invoker.extra_configs)) { 581 if (defined(invoker.extra_configs)) {
535 extra_configs += invoker.extra_configs 582 extra_configs += invoker.extra_configs
536 } 583 }
537 extra_deps = [] 584 extra_deps = []
538 if (defined(invoker.extra_deps)) { 585 if (defined(invoker.extra_deps)) {
539 extra_deps += invoker.extra_deps 586 extra_deps += invoker.extra_deps
540 } 587 }
541 extra_defines = [] 588 extra_defines = []
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 ] 912 ]
866 if (is_linux || is_android) { 913 if (is_linux || is_android) {
867 cflags = [ "-fPIC" ] 914 cflags = [ "-fPIC" ]
868 } 915 }
869 if (is_win) { 916 if (is_win) {
870 libs = [ "dart.lib" ] 917 libs = [ "dart.lib" ]
871 abs_root_out_dir = rebase_path(root_out_dir) 918 abs_root_out_dir = rebase_path(root_out_dir)
872 ldflags = [ "/LIBPATH:$abs_root_out_dir" ] 919 ldflags = [ "/LIBPATH:$abs_root_out_dir" ]
873 } 920 }
874 } 921 }
OLDNEW
« no previous file with comments | « build/toolchain/win/BUILD.gn ('k') | runtime/bin/bin.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698