4ea512b4c1
The LLVM code generator should only consume the serialized IR and not use any other VM functionality.
This CL adds a custom zone which can be used for the deserialized IR nodes and removes any
Dart_SetVMFlags/Dart_Initialize/ApiZone/... calls.
This works with the existing example:
% ninja -C out/ReleaseX64 codegen
% out/ReleaseX64/codegen runtime/llvm_codegen/test/codegen/Inputs/hello.sex
...
define void @"hello.dart::main"() {
B1:
%0 = call i8* @llvm.stacksave()
%1 = ptrtoint i8* %0 to i64
%2 = load i64, i64 addrspace(256)* inttoptr (i64 72 to i64 addrspace(256)*)
%3 = icmp ult i64 %1, %2
br i1 %3, label %4, label %5
...
ret void
}
...
Change-Id: I1d07ba6bc122d100c73f97cfa961d36240489666
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120792
Commit-Queue: Martin Kustermann <kustermann@google.com>
Auto-Submit: Martin Kustermann <kustermann@google.com>
Reviewed-by: Teagan Strickland <sstrickl@google.com>
46 lines
931 B
Plaintext
46 lines
931 B
Plaintext
# Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
import("../../vm/compiler/compiler_sources.gni")
|
|
|
|
config("config") {
|
|
include_dirs = [ "../../" ]
|
|
|
|
cflags = [ "-Wno-unused-private-field" ]
|
|
}
|
|
|
|
_lib_llvm_so = "../../../third_party/llvm/lib/libLLVM-9svn.so"
|
|
|
|
config("llvm") {
|
|
include_dirs = [ "../../../third_party/llvm/include" ]
|
|
libs = [ _lib_llvm_so ]
|
|
}
|
|
|
|
copy("lib_llvm") {
|
|
sources = [
|
|
_lib_llvm_so,
|
|
]
|
|
outputs = [
|
|
"$root_out_dir/libLLVM-9svn.so",
|
|
]
|
|
public_configs = [ ":llvm" ]
|
|
}
|
|
|
|
executable("codegen") {
|
|
sources = [
|
|
"custom_zone.cc",
|
|
"custom_zone.h",
|
|
"dart.cc",
|
|
"dart.h",
|
|
"main.cc",
|
|
]
|
|
|
|
deps = [
|
|
":lib_llvm",
|
|
"../../third_party/double-conversion/src:libdouble_conversion",
|
|
]
|
|
|
|
configs += [ ":config" ]
|
|
}
|