Commit 5d84040e authored by jeffhao's avatar jeffhao
Browse files

Created --runtime-arg switch for dex2oat to pass arguments to runtime.

This replaces the -Xms, -Xmx, and -verbose options.

Change-Id: Idc023b6d369bd8b5df932b9f2eb6dbc79d591ab1
parent 6b4ef025
......@@ -49,12 +49,12 @@ TARGET_CORE_IMG := $(ART_TEST_OUT)/core.art
$(HOST_CORE_OAT): $(HOST_CORE_DEX) $(DEX2OAT_DEPENDENCY)
@echo "host dex2oat: $@ ($?)"
@mkdir -p $(dir $@)
$(hide) $(DEX2OAT) -Xms16m -Xmx16m $(addprefix --dex-file=,$(filter-out $(DEX2OAT),$^)) --oat=$@ --image=$(HOST_CORE_IMG) --base=$(IMG_HOST_BASE_ADDRESS)
$(hide) $(DEX2OAT) --runtime-arg -Xms16m --runtime-arg -Xmx16m $(addprefix --dex-file=,$(filter-out $(DEX2OAT),$^)) --oat=$@ --image=$(HOST_CORE_IMG) --base=$(IMG_HOST_BASE_ADDRESS)
$(TARGET_CORE_OAT): $(TARGET_CORE_DEX) $(DEX2OAT_DEPENDENCY)
@echo "target dex2oat: $@ ($?)"
@mkdir -p $(dir $@)
$(hide) $(DEX2OAT) -Xms32m -Xmx32m $(addprefix --dex-file=,$(filter-out $(DEX2OAT),$^)) --oat=$@ --image=$(TARGET_CORE_IMG) --base=$(IMG_TARGET_BASE_ADDRESS) --host-prefix=$(PRODUCT_OUT)
$(hide) $(DEX2OAT) --runtime-arg -Xms32m --runtime-arg -Xmx32m $(addprefix --dex-file=,$(filter-out $(DEX2OAT),$^)) --oat=$@ --image=$(TARGET_CORE_IMG) --base=$(IMG_TARGET_BASE_ADDRESS) --host-prefix=$(PRODUCT_OUT)
$(HOST_CORE_IMG): $(HOST_CORE_OAT)
......@@ -70,6 +70,6 @@ TARGET_BOOT_IMG := $(ART_CACHE_OUT)/boot.art
$(TARGET_BOOT_OAT): $(TARGET_BOOT_DEX) $(DEX2OAT_DEPENDENCY)
@echo "target dex2oat: $@ ($?)"
@mkdir -p $(dir $@)
$(hide) $(DEX2OAT) -Xms256m -Xmx256m $(addprefix --dex-file=,$(filter-out $(DEX2OAT),$^)) --oat=$@ --image=$(TARGET_BOOT_IMG) --base=$(IMG_TARGET_BASE_ADDRESS) --host-prefix=$(PRODUCT_OUT)
$(hide) $(DEX2OAT) --runtime-arg -Xms256m --runtime-arg -Xmx256m $(addprefix --dex-file=,$(filter-out $(DEX2OAT),$^)) --oat=$@ --image=$(TARGET_BOOT_IMG) --base=$(IMG_TARGET_BASE_ADDRESS) --host-prefix=$(PRODUCT_OUT)
$(TARGET_BOOT_IMG): $(TARGET_BOOT_OAT)
......@@ -40,7 +40,7 @@ $(foreach dir,$(TEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,$(dir)))
define build-art-oat
$(2): $(1) $(3) $(DEX2OAT_DEPENDENCY)
@echo "target dex2oat: $$@ ($$?)"
$(hide) $(DEX2OAT) -Xms16m -Xmx16m --boot-image=$(3) $(addprefix --dex-file=,$$<) --oat=$$@ --host-prefix=$(PRODUCT_OUT)
$(hide) $(DEX2OAT) --runtime-arg -Xms16m --runtime-arg -Xmx16m --boot-image=$(3) $(addprefix --dex-file=,$$<) --oat=$$@ --host-prefix=$(PRODUCT_OUT)
endef
########################################################################
......
......@@ -567,8 +567,8 @@ const OatFile* ClassLinker::GenerateOatFile(const std::string& filename) {
execl("/system/bin/dex2oatd",
"/system/bin/dex2oatd",
"-Xms64m",
"-Xmx64m",
"--runtime-arg", "-Xms64m",
"--runtime-arg", "-Xmx64m",
boot_image_option.c_str(),
dex_file_option.c_str(),
oat_file_option.c_str(),
......
......@@ -52,14 +52,10 @@ static void usage() {
" Example: --host-prefix=out/target/product/crespo\n"
"\n");
fprintf(stderr,
" -Xms<n> may be used to specify an initial heap size for the runtime used to\n"
" run dex2oat\n"
" Example: -Xms256m\n"
"\n");
fprintf(stderr,
" -Xmx<n> may be used to specify a maximum heap size for the runtime used to\n"
" run dex2oat\n"
" Example: -Xmx256m\n"
" --runtime-arg <argument>: used to specify various arguments for the runtime,\n"
" such as initial heap size, maximum heap size, and verbose output.\n"
" Use a separate --runtime-arg switch for each argument.\n"
" Example: --runtime-arg -Xms256m\n"
"\n");
exit(EXIT_FAILURE);
}
......@@ -81,9 +77,7 @@ int dex2oat(int argc, char** argv) {
std::string boot_image_option;
uintptr_t image_base = 0;
std::string host_prefix;
const char* Xms = NULL;
const char* Xmx = NULL;
const char* verbose = NULL;
std::vector<const char*> runtime_args;
for (int i = 0; i < argc; i++) {
const StringPiece option(argv[i]);
......@@ -113,12 +107,12 @@ int dex2oat(int argc, char** argv) {
boot_image_option += boot_image_filename;
} else if (option.starts_with("--host-prefix=")) {
host_prefix = option.substr(strlen("--host-prefix=")).data();
} else if (option.starts_with("-Xms")) {
Xms = option.data();
} else if (option.starts_with("-Xmx")) {
Xmx = option.data();
} else if (option.starts_with("-verbose:")) {
verbose = option.data();
} else if (option == "--runtime-arg") {
if (++i >= argc) {
fprintf(stderr, "Missing required argument for --runtime-arg\n");
usage();
}
runtime_args.push_back(argv[i]);
} else {
fprintf(stderr, "unknown argument %s\n", option.data());
usage();
......@@ -161,18 +155,12 @@ int dex2oat(int argc, char** argv) {
} else {
options.push_back(std::make_pair(boot_image_option.c_str(), reinterpret_cast<void*>(NULL)));
}
if (Xms != NULL) {
options.push_back(std::make_pair(Xms, reinterpret_cast<void*>(NULL)));
}
if (Xmx != NULL) {
options.push_back(std::make_pair(Xmx, reinterpret_cast<void*>(NULL)));
}
if (verbose != NULL) {
options.push_back(std::make_pair(verbose, reinterpret_cast<void*>(NULL)));
}
if (!host_prefix.empty()) {
options.push_back(std::make_pair("host-prefix", host_prefix.c_str()));
}
for (size_t i = 0; i < runtime_args.size(); i++) {
options.push_back(std::make_pair(runtime_args[i], reinterpret_cast<void*>(NULL)));
}
UniquePtr<Runtime> runtime(Runtime::Create(options, false));
if (runtime.get() == NULL) {
fprintf(stderr, "could not create runtime\n");
......
......@@ -51,8 +51,8 @@ int ProcessZipFile(int zip_fd, int cache_fd, const char* zip_name, const char *f
execl("/system/bin/dex2oatd",
"/system/bin/dex2oatd",
"-Xms64m",
"-Xmx64m",
"--runtime-arg", "-Xms64m",
"--runtime-arg", "-Xmx64m",
"--boot-image=/data/art-cache/boot.art",
dex_file_option.c_str(),
oat_file_option.c_str(),
......
......@@ -24,9 +24,3 @@ ${JAVAC} -d classes `find src2 -name '*.java'`
dx -JXmx256m --debug --dex --dump-to=classes.lst --output=classes.dex classes
zip ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar classes.dex
dex2oatd -Xms16m -Xmx16m \
--boot-image=${ANDROID_PRODUCT_OUT}/data/art-test/core.art \
--dex-file=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar \
--oat=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.oat \
--host-prefix=${ANDROID_PRODUCT_OUT}
......@@ -26,9 +26,3 @@ ${JAVAC} -d classes src/*.java
dx --debug --dex --dump-to=classes.lst --output=classes.dex classes
zip ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar classes.dex
dex2oatd -Xms16m -Xmx16m \
--boot-image=${ANDROID_PRODUCT_OUT}/data/art-test/core.art \
--dex-file=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar \
--oat=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.oat \
--host-prefix=${ANDROID_PRODUCT_OUT}
......@@ -45,9 +45,3 @@ ${JAVAC} -d classes src/*.java
dx -JXmx500m --debug --dex --no-optimize --positions=none --no-locals \
--dump-to=classes.lst --output=classes.dex classes
zip ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar classes.dex
dex2oatd -Xms16m -Xmx16m \
--boot-image=${ANDROID_PRODUCT_OUT}/data/art-test/core.art \
--dex-file=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar \
--oat=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.oat \
--host-prefix=${ANDROID_PRODUCT_OUT}
......@@ -27,9 +27,3 @@ dx --debug --dex --dump-to=classes.lst --output=classes.dex \
--dump-width=1000 classes 2>/dev/null
zip ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar classes.dex
dex2oatd -Xms16m -Xmx16m \
--boot-image=${ANDROID_PRODUCT_OUT}/data/art-test/core.art \
--dex-file=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar \
--oat=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.oat \
--host-prefix=${ANDROID_PRODUCT_OUT}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment