9 research outputs found

    Testing in resource constrained execution environments

    Get PDF
    Software for resource constrained embedded devices is often implemented in the Java programming language because the Java compiler and virtual machine provide enhanced safety, portability, and the potential for run-time optimization. It is important to verify that a software application executes correctly in the environment in which it will normally execute, even if this environment is an embedded one that severely constrains memory resources. Testing can be used to isolate defects within and establish a confidence in the correctness of a Java application that executes in a resource constrained environment. However, executing test suites with a Java virtual machine (JVM) that uses dynamic compilation to create native code bodies can introduce significant testing time overheads if memory resources are highly constrained. This paper describes an approach that uses adaptive code unloading to ensure that it is feasible to perform testing in the actual memory constrained execution environment. The experiments demonstrate that code unloading can reduce both the test suite execution time by 34 % and the code size of the test suite and application under test by 78 % while maintaining the overall size of the JVM. Categories and Subject Descriptors: D.2.5 [Software Engineering]: Testing and Debugging-Testing tools; D.3.4 [Programming Languages]: Processors-code generation

    Automatic Generation of Load Tests

    Get PDF
    Load tests aim to validate whether system performance is acceptable under peak conditions. Existing test generation techniques induce load by increasing the size or rate of the input. Ignoring the particular input values, however, may lead to test suites that grossly mischaracterize a systemโ€™s performance. To address this limitation we introduce a mixed symbolic execution based approach that is unique in how it 1) favors program paths associated with a performance measure of interest, 2) operates in an iterative-deepening beam-search fashion to discard paths that are unlikely to lead to high-load tests, and 3) generates a test suite of a given size and level of diversity. An assessment of the approach shows it generates test suites that induce program response times and memory consumption several times worse than the compared alternatives, it scales to large and complex inputs, and it exposes a diversity of resource consuming program behavior

    Code Cache Management in Managed Language VMs to Reduce Memory Consumption for Embedded Systems

    Get PDF
    The compiled native code generated by a just-in-time (JIT) compiler in man- aged language virtual machines (VM) is placed in a region of memory called the code cache. Code cache management (CCM) in a VM is responsible to find and evict methods from the code cache to maintain execution correctness and manage program performance for a given code cache size or memory budget. Effective CCM can also boost program speed by enabling more aggressive JIT compilation, powerful optimizations, and improved hardware instruction cache and I-TLB per- formance. Though important, CCM is an overlooked component in VMs. We find that the default CCM policies in Oracleโ€™s production-grade HotSpot VM perform poorly even at modest memory pressure. We develop a detailed simulation-based frame- work to model and evaluate the potential efficiency of many different CCM poli- cies in a controlled and realistic, but VM-independent environment. We make the encouraging discovery that effective CCM policies can sustain high program performance even for very small cache sizes. Our simulation study provides the rationale and motivation to improve CCM strategies in existing VMs. We implement and study the properties of several CCM policies in HotSpot. We find that in spite of working within the bounds of the HotSpot VMโ€™s current CCM sub-system, our best CCM policy implementation in HotSpot improves program performance over the default CCM algorithm by 39%, 41%, 55%, and 50% with code cache sizes that are 90%, 75%, 50%, and 25% of the desired cache size, on average

    ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹ค์šด๋กœ๋”ฉ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ

    Get PDF
    ํ•™์œ„๋…ผ๋ฌธ (๋ฐ•์‚ฌ)-- ์„œ์šธ๋Œ€ํ•™๊ต ๋Œ€ํ•™์› : ์ „๊ธฐยท์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€, 2014. 8. ๋ฌธ์ˆ˜๋ฌต.์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(์•ฑ)์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์€ DTV๋‚˜ ์Šค๋งˆํŠธํฐ์ฒ˜๋Ÿผ ๋Œ€์ค‘์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์•ฑ์„ ๋‹ค์šด๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ๋“ค์€ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ฃผ๋ฅ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ ์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ํ†ตํ•œ ์ˆ˜ํ–‰์— ์˜ํ•œ ๋Š๋ฆฐ ์„ฑ๋Šฅ์ด๋ฉฐ, ์ด ์„ฑ๋Šฅ์˜ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ด ์ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค. ์ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹ค์šด๋ฐ›์€ ์•ฑ์˜ ์ˆ˜ํ–‰ ์ค‘์— ๋™์ ์œผ๋กœ ๋จธ์‹  ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ, ๋™์  ์ปดํŒŒ์ผ๋ ˆ์ด์…˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋™์  ์ปดํŒŒ์ผ๋ ˆ์ด์…˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ œ์•ˆํ•˜์˜€๋‹ค. ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๋จธ์‹  ์ฝ”๋“œ๋ฅผ ์•ฑ์˜ ์ข…๋ฃŒ๋  ๋•Œ ์ง€์šฐ์ง€ ์•Š๊ณ  ํŒŒ์ผํ˜•ํƒœ๋กœ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜์—ฌ ์ดํ›„์— ์•ฑ์ด ๋‹ค์‹œ ์ˆ˜ํ–‰๋  ๋•Œ ์ €์žฅํ•œ ๋จธ์‹  ์ฝ”๋“œ๋ฅผ ์žฌํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋Ÿฐํƒ€์ž„ ์ปดํŒŒ์ผ๋ ˆ์ด์…˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ฒŒ ๋œ๋‹ค. ์ €์žฅํ•œ ๋จธ์‹  ์ฝ”๋“œ๋ฅผ ์žฌํ™œ์šฉํ•  ๋•Œ ๋จธ์‹  ์ฝ”๋“œ์— ์ธ์ฝ”๋”ฉ๋œ ์ฃผ์†Œ๊ฐ’๋“ค์€ ์œ ํšจํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ƒ ๋จธ์‹ ์˜ ํ˜„์žฌ ๊ฐ’์— ๋งž์ถ”์–ด ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ์ด ์ž‘์—…์€ ์ฃผ์†Œ ์žฌ๋ฐฐ์น˜์ด๋‹ค. ์ฃผ์†Œ ์žฌ๋ฐฐ์น˜๋Š” ์ €์žฅ๋œ ๋จธ์‹  ์ฝ”๋“œ๋งŒ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๋จธ์‹  ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ ์ƒ์„ฑํ•˜์—ฌ ํŒŒ์ผ์— ํ•จ๊ป˜ ์ €์žฅํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ž๋ฐ”์˜ ์ƒ์ˆ˜ ํ’€ ํ•ด์„์€ ์ฃผ์†Œ ์žฌ๋ฐฐ์น˜ ์ž‘์—…์„ ์–ด๋ ต๊ฒŒ ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ฃผ์†Œ ์žฌ๋ฐฐ์น˜๋ฅผ ์œ„ํ•œ ์ •๋ณด๋“ค์„ ์ €์žฅํ•˜๊ธฐ์œ„ํ•ด ์˜๊ตฌ ๋ฉ”๋ชจ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ฃผ์†Œ ์žฌ๋ฐฐ์น˜ ์ •๋ณด๋ฅผ ๋จธ์‹  ์ฝ”๋“œ ์ƒ์— ์ธ์ฝ”๋”ฉํ•˜๊ณ  ์••์ถ•ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ–ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ ๊ธฐ๋ฒ•์€ ์˜ค๋ผํด์‚ฌ์˜ CDC ๊ฐ€์ƒ๋จธ์‹  ์ฐธ์กฐ๊ตฌํ˜„์ธ CVM์— ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ์šฐ๋ฆฌ์˜ ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฒค์น˜๋งˆํฌ์˜ ์„ฑ๋Šฅ์„ ์•ฝ 12% ํ–ฅ์ƒ์‹œ์ผฐ๋‹ค. ๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ ๊ธฐ๋ฒ•์„ ์‹ค์ œ๋กœ ํŒ๋งคํ•˜๋Š” DTVํ™˜๊ฒฝ์— ๊ตฌ์ถ•ํ•˜์—ฌ ์‹ค์ œ ๋ฐฉ์†ก๊ตญ์ด ์‚ฌ์šฉํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜ํ–‰ํ•ด ๋ณด์•˜๋‹ค. ์šฐ๋ฆฌ์˜ ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐฉ์‹์€ ์‚ฌ์šฉ์ž์˜ ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ 33%์˜ ์ข‹์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์—ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ƒ๋จธ์‹ ์ธ ๊ตฌ๊ธ€์‚ฌ์˜ V8 ๊ฐ€์ƒ๋จธ์‹ ์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์ˆ˜ํ–‰์—†์ด ์ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” V8 ๊ฐ€์ƒ ๋จธ์‹ ์— ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ ์šฉํ•˜์˜€์ง€๋งŒ, ์‹ค์ œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์–ด๋‚ด์ง€๋Š” ๋ชปํ–ˆ๋‹ค. ์ด๊ฒƒ์€ V8 ๊ฐ€์ƒ ๋จธ์‹ ์˜ ํŠน์ง•์ธ ๋‚ด๋ถ€ ๊ฐ์ฒด์˜ ์ ๊ทน์ ์ธ ์‚ฌ์šฉ์— ์˜ํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. ๋‚ด๋ถ€ ๊ฐ์ฒด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. V8 ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋‚ด๋ถ€ ๊ฐ์ฒด๋กœ ์ƒ์„ฑ๋˜์–ด, ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋น„ํ•ด์„œ ์ƒ๋‹นํžˆ ๋งŽ์€ ๋‚ด๋ถ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ๋‹ค. V8์˜ ์ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๋จธ์‹  ์ฝ”๋“œ์—์„œ๋Š” ์ด ๋‚ด๋ถ€ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด, ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜ํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ด ๋‚ด๋ถ€ ๊ฐ์ฒด๋Š” ํ•ญ์ƒ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‚ด๋ถ€ ๊ฐ์ฒด๋ฅผ ์žฌ์ƒ์„ฑํ•ด์•ผ๋งŒ ํ•œ๋‹ค. V8 ์ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋Ÿฐํƒ€์ž„ ์ปดํŒŒ์ผ๋ ˆ์ด์…˜ ์˜ค๋ฒ„ํ—ค๋“œ์˜ ๋Œ€๋ถ€๋ถ„์ด ๋‚ด๋ถ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ์˜ ํด๋ผ์ด์–ธํŠธ ์„ ํ–‰ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด ํ™˜๊ฒฝ์—์„œ ์ถฉ๋ถ„ํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์„ ์ˆ˜ ์—†์—ˆ๋‹ค.App-downloading systems like DTV and smart phone are popularly used. Virtual machine is mainstream for those systems. One critical problem of app-downloading systems is performance because app is executed by interpreter. A popular solution for improving performance is Just-In-Time Compiler (JITC). JITC compiles to machine code at runtime. So, JITC suffers from runtime compilation overhead. We suggested client Ahead-Of-Time Compiler(c-AOTC) which improves the performance by removing runtime compilation overhead. c-AOTC saves machine code of method generated by JITC in persistent storage and reuses it in next runs. The machine code of a method translated by JITC is cached on a persistent memory of the device, and when the method is invoked again in a later run of the program, the machine code is loaded and executed directly without any translation overhead. One major issue in c-AOTC is relocation because some of the address constants embedded in the cached machine code are not correct when the machine code is loaded and used in a different runthose addresses should be corrected before they are used. Constant pool resolution complicates the relocation problem, and we propose our solutions. The persistent memory overhead for saving the relocation information is also an issue, and we propose a technique to encode the relocation information and compress the machine code efficiently. We developed a c-AOTC on Oracles CDC VM, and evaluation results indicate that c-AOTC can improve the performance as much as an average of 12% for benchmarks. And we adopted c-AOTC approach to commercial DTV platform and test the real xlet applications of commercial broadcasting stations. c-AOTC got average 33% performance improvement on the real xlet application test. V8 JavaScript VM does not use interpreter. Apps are executed only by JITC. We adopted c-AOTC to V8 VM. But we cannot get any good performance result because of V8 VMs characteristics. V8 VM components are generated as internal objects. Internal objects are used for compiling and running of JavaScript program. The machine code of V8 VM addresses internal objects which are different for each run. Because internal objects beใ€€accessed in each run, c-AOTCใ€€must recreate those objects. Because most of compilation overhead of V8 VM is internal object creation overhead, c-AOTCใ€€does not get enough improvements.Chapter 1 Introduction 1 Chatper 2 client-AOTC Approach 4 Chatper 3 Java Virtual Machine and Our JITC 9 3.1 Overview of JVM and the Bytecode 9 3.2 Our JITC on the CVM 14 Chatper 4 Design and Implementation of c-AOTC on JVM 16 4.1 Architecutre of the c-AOTC 16 4.2 Relocation 19 4.2.1 Translated Code Which Needs Relocation 19 4.2.2 Relocation Information and Relocation Process 22 4.2.3 Relocation for Inlined Methods 24 4.3 Reducing the Size of .aotc Files 25 4.3.1 Encoding Relocation Information 25 4.3.2 Machine Code Compression 27 4.3.3 Structure of the .aotc File 27 Chatper 5 c-AOTC for DTV JVM platform 29 5.1 DTV software platform 30 5.2 c-AOTC on the DTV 32 5.2.1 Design of c-AOTC on DTV 32 5.2.2 Relocation Problem 35 5.2.3 Example of Relocation 39 5.2.3.1 Relocation Example of JVM c-AOTC 39 5.2.3.3 Relocation Example of DTV c-AOTC 41 Chatper 6 c-AOTC for JavaScript VM 44 6.1 V8 JavaScript VM 44 6.2 Issue and Solution of c-AOTC on V8 JavaScript VM 46 Chatper 7 Experimental Results 51 7.1 Experimental Environment of JVM 51 7.2 Performance Impact of c-AOTC 53 7.3 Space Overhead of c-AOTC 55 7.4 Reducing Number of c-AOTC Methods 60 7.5 c-AOTC with new hot-spot detection heuristics 63 7.5.1 Performance Impact of c-AOTC with new hot-spotdetection heuristics 63 7.5.2 Space Overhead of c-AOTC with new hot-spot detection heuristics 67 7.6 c-AOTC of DTV JVM platform 70 7.6.1 Performance result of DTV platform 70 7.6.2 Analysis of JITCed method of DTV platform 72 7.6.3 Space overhead of DTV platform 74 7.6.4 c-AOTC overhead of DTV platform 75 7.6.5 c-AOTC performance using different xlets c-AOTC file in DTV platform 76 7.7 c-AOTC of V8 JavaScript engine 79 7.7.1 Compilation overhead on V8 JavaScript VM 79 7.7.2 Performance result on V8 JavaScript VM 81 7.7.3 Comparison with c-AOTC of JavaScriptCore VM 83 Chatper 8 Related Work 86 Chatper 9 Conclusion 89 Bibliography 91 ์ดˆ๋ก 99Docto

    Adaptive Code Unloading for Resource-Constrained JVMs

    Get PDF
    Compile-only JVMs for resource-constrained embedded systems have the potential for using device resources more efficiently than interpreter-only systems since compilers can produce significantly higher quality code and code can be stored and reused for future invocations. However, this additional storage requirement for reuse of native code bodies, introduces memory overhead not imposed in interpreter-based systems. In this paper, we present..

    Adaptive code unloading for resource-constrained JVMs

    No full text

    Source level debugging of dynamically translated programs

    Get PDF
    The capability to debug a program at the source level is useful and often indispensable. Debuggers usesophisticated techniques to provide a source view of a program, even though what is executing on the hard-ware is machine code. Debugging techniques evolve with significant changes in programming languagesand execution environments. Recently, software dynamic translation (SDT) has emerged as a new execu-tion mechanism. SDT inserts a run-time software layer between the program and the host machine, provid-ing flexibility in execution and program monitoring. Increasingly popular technologies that use thismechanism include dynamic optimization, dynamic instrumentation, security checking, binary translation,and host machine virtualization. However, the run-time program modifications in a SDT environment posesignificant challenges to a source level debugger. Currently debugging techniques do not exist for softwaredynamic translators. This thesis is the first to provide techniques for source level debugging of dynamically translatedprograms. The thesis proposes a novel debugging framework, called Tdb, that addresses the difficult chal-lenge of maintaining and providing source level information for programs whose binary code changes asthe program executes. The proposed framework has a number of important features. First, it does notrequire or induce changes in the program being debugged. In other words, programs are debugged is theirdeployment environment. Second, the framework is portable and can be applied to virtually any SDT sys-tem. The framework requires minimal changes to an SDT implementation, usually just a few lines of code.Third, the framework can be integrated with existing debuggers, such as Gdb, and does not require changesto these debuggers. This improves usability and adoption, eliminating the learning curve associated with anew debugging environment. Finally, the proposed techniques are efficient. The runtime overhead of thedebugged programs is low and comparable to that of existing debuggers. Tdb's techniques have been implemented for three different dynamic translators, on two differenthardware platforms. The experimental results demonstrate that source level debugging of dynamicallytranslated programs is feasible, and our implemented systems are portable, usable, and efficient

    Unconventional Applications of Compiler Analysis

    Get PDF
    Previously, compiler transformations have primarily focused on minimizing program execution time. This thesis explores some examples of applying compiler technology outside of its original scope. Specifically, we apply compiler analysis to the field of software maintenance and evolution by examining the use of global data throughout the lifetimes of many open source projects. Also, we investigate the effects of compiler optimizations on the power consumption of small battery powered devices. Finally, in an area closer to traditional compiler research we examine automatic program parallelization in the form of thread-level speculation

    Proceedings of the 4th International Conference on Principles and Practices of Programming in Java

    Full text link
    This book contains the proceedings of the 4th international conference on principles and practices of programming in Java. The conference focuses on the different aspects of the Java programming language and its applications
    corecore