93 research outputs found

    Tracing vs. Partial Evaluation: Comparing Meta-Compilation Approaches for Self-Optimizing Interpreters

    Get PDF
    Tracing and partial evaluation have been proposed as meta-compilation techniques for interpreters to make just-in-time compilation language-independent. They promise that programs executing on simple interpreters can reach performance of the same order of magnitude as if they would be executed on state-of-the-art virtual machines with highly optimizing just-in-time compilers built for a specific language. Tracing and partial evaluation approach this meta-compilation from two ends of a spectrum, resulting in different sets of tradeoffs. This study investigates both approaches in the context of self-optimizing interpreters, a technique for building fast abstract-syntax-tree interpreters. Based on RPython for tracing and Truffle for partial evaluation, we assess the two approaches by comparing the impact of various optimizations on the performance of an interpreter for SOM, an object-oriented dynamically-typed language. The goal is to determine whether either approach yields clear performance or engineering benefits. We find that tracing and partial evaluation both reach roughly the same level of performance. SOM based on meta-tracing is on average 3x slower than Java, while SOM based on partial evaluation is on average 2.3x slower than Java. With respect to the engineering, tracing has however significant benefits, because it requires language implementers to apply fewer optimizations to reach the same level of performance

    A Partial Read Barrier for Efficient Support of Live Object-oriented Programming

    Get PDF
    International audienceLive programming, originally introduced by Smalltalk and Lisp, and now gaining popularity in contemporary systems such as Swift, requires on-the-fly support for object schema migration, such that the layout of objects may be changed while the program is at one and the same time being run and developed. In Smalltalk schema migration is supported by two primitives, one that answers a collection of all instances of a class, and one that exchanges the identities of pairs of objects, called the become primitive. Existing instances are collected, copies using the new schema created, state copied from old to new, and the two exchanged with become, effecting the schema migration. Historically the implementation of become has either required an extra level of indirection between an object's address and its body, slowing down slot access, or has required a sweep of all objects, a very slow operation on large heaps. Spur, a new object representation and memory manager for Smalltalk-like languages, has neither of these deficiencies. It uses direct pointers but still provides a fast become operation in large heaps, thanks to forwarding objects that when read conceptually answer another object and a partial read barrier that avoids the cost of explicitly checking for forwarding objects on the vast majority of object accesses

    Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises

    Get PDF
    Runtime metaprogramming enables many useful applications and is often a convenient solution to solve problems in a generic way, which makes it widely used in frameworks, middleware, and domain-specific languages. However, powerful metaobject protocols are rarely supported and even common concepts such as reflective method invocation or dynamic proxies are not optimized. Solutions proposed in literature either restrict the metaprogramming capabilities or require application or library developers to apply performance improving techniques. For overhead-free runtime metaprogramming, we demonstrate that dispatch chains, a generalized form of polymorphic inline caches common to self-optimizing interpreters, are a simple optimization at the language-implementation level. Our evaluation with self-optimizing interpreters shows that unrestricted metaobject protocols can be realized for the first time without runtime overhead, and that this optimization is applicable for just-in-time compilation of interpreters based on meta-tracing as well as partial evaluation. In this context, we also demonstrate that optimizing common reflective operations can lead to significant performance improvements for existing applications

    JavaScript AOT compilation

    Get PDF
    International audienceStatic compilation, a.k.a., ahead-of-time (AOT) compilation, is an alternative approach to JIT compilation that can combine good speed and lightweight memory footprint, and that can accommodate read-only memory constraints that are imposed by some devices and some operating systems. Unfortunately the highly dynamic nature of JavaScript makes it hard to compile statically and all existing AOT compilers have either gave up on good performance or full language support. We have designed and implemented an AOT compiler that aims at satisfying both. It supports full unrestricted ECMAScript 5.1 plus many ECMAScript 2017 features and the majority of benchmarks are within 50% of the performance of one of the fastest JIT compilers

    Sindarin: A Versatile Scripting API for the Pharo Debugger

    Get PDF
    International audienceDebugging is one of the most important and time consuming activities in software maintenance, yet mainstream debuggers are not well-adapted to several debugging scenarios. This has led to the research of new techniques covering specific families of complex bugs. Notably, recent research proposes to empower developers with scripting DSLs, plugin-based and moldable debuggers. However, these solutions are tailored to specific use-cases, or too costly for one-time-use scenarios. In this paper we argue that exposing a debugging scripting interface in mainstream debuggers helps in solving many challenging debugging scenarios. For this purpose, we present Sindarin, a scripting API that eases the expression and automation of different strategies developers pursue during their debugging sessions. Sindarin provides a GDB-like API, augmented with AST-bytecode-source code mappings and object-centric capabilities. To demonstrate the versatility of Sindarin, we reproduce several advanced breakpoints and non-trivial debugging mechanisms from the literature

    Test of the Kolmogorov-Johnson-Mehl-Avrami picture of metastable decay in a model with microscopic dynamics

    Full text link
    The Kolmogorov-Johnson-Mehl-Avrami (KJMA) theory for the time evolution of the order parameter in systems undergoing first-order phase transformations has been extended by Sekimoto to the level of two-point correlation functions. Here, this extended KJMA theory is applied to a kinetic Ising lattice-gas model, in which the elementary kinetic processes act on microscopic length and time scales. The theoretical framework is used to analyze data from extensive Monte Carlo simulations. The theory is inherently a mesoscopic continuum picture, and in principle it requires a large separation between the microscopic scales and the mesoscopic scales characteristic of the evolving two-phase structure. Nevertheless, we find excellent quantitative agreement with the simulations in a large parameter regime, extending remarkably far towards strong fields (large supersaturations) and correspondingly small nucleation barriers. The original KJMA theory permits direct measurement of the order parameter in the metastable phase, and using the extension to correlation functions one can also perform separate measurements of the nucleation rate and the average velocity of the convoluted interface between the metastable and stable phase regions. The values obtained for all three quantities are verified by other theoretical and computational methods. As these quantities are often difficult to measure directly during a process of phase transformation, data analysis using the extended KJMA theory may provide a useful experimental alternative.Comment: RevTex, 21 pages including 14 ps figures. Submitted to Phys. Rev. B. One misprint corrected in Eq.(C1

    Difficult tracheal intubation in neonates and infants. NEonate and Children audiT of Anaesthesia pRactice IN Europe (NECTARINE): a prospective European multicentre observational study

    Get PDF
    BACKGROUND: Neonates and infants are susceptible to hypoxaemia in the perioperative period. The aim of this study was to analyse interventions related to anaesthesia tracheal intubations in this European cohort and identify their clinical consequences. METHODS: We performed a secondary analysis of tracheal intubations of the European multicentre observational trial (NEonate and Children audiT of Anaesthesia pRactice IN Europe [NECTARINE]) in neonates and small infants with difficult tracheal intubation. The primary endpoint was the incidence of difficult intubation and the related complications. The secondary endpoints were the risk factors for severe hypoxaemia attributed to difficult airway management, and 30 and 90 day outcomes. RESULTS: Tracheal intubation was planned in 4683 procedures. Difficult tracheal intubation, defined as two failed attempts of direct laryngoscopy, occurred in 266 children (271 procedures) with an incidence (95% confidence interval [CI]) of 5.8% (95% CI, 5.1–6.5). Bradycardia occurred in 8% of the cases with difficult intubation, whereas a significant decrease in oxygen saturation (SpO2<90% for 60 s) was reported in 40%. No associated risk factors could be identified among co-morbidities, surgical, or anaesthesia management. Using propensity scoring to adjust for confounders, difficult anaesthesia tracheal intubation did not lead to an increase in 30 and 90 day morbidity or mortality. CONCLUSIONS: The results of the present study demonstrate a high incidence of difficult tracheal intubation in children less than 60 weeks post-conceptual age commonly resulting in severe hypoxaemia. Reassuringly, the morbidity and mortality at 30 and 90 days was not increased by the occurrence of a difficult intubation event

    Global wealth disparities drive adherence to COVID-safe pathways in head and neck cancer surgery

    Get PDF
    Peer reviewe

    Reducing the environmental impact of surgery on a global scale: systematic review and co-prioritization with healthcare workers in 132 countries

    Get PDF
    Background Healthcare cannot achieve net-zero carbon without addressing operating theatres. The aim of this study was to prioritize feasible interventions to reduce the environmental impact of operating theatres. Methods This study adopted a four-phase Delphi consensus co-prioritization methodology. In phase 1, a systematic review of published interventions and global consultation of perioperative healthcare professionals were used to longlist interventions. In phase 2, iterative thematic analysis consolidated comparable interventions into a shortlist. In phase 3, the shortlist was co-prioritized based on patient and clinician views on acceptability, feasibility, and safety. In phase 4, ranked lists of interventions were presented by their relevance to high-income countries and low–middle-income countries. Results In phase 1, 43 interventions were identified, which had low uptake in practice according to 3042 professionals globally. In phase 2, a shortlist of 15 intervention domains was generated. In phase 3, interventions were deemed acceptable for more than 90 per cent of patients except for reducing general anaesthesia (84 per cent) and re-sterilization of ‘single-use’ consumables (86 per cent). In phase 4, the top three shortlisted interventions for high-income countries were: introducing recycling; reducing use of anaesthetic gases; and appropriate clinical waste processing. In phase 4, the top three shortlisted interventions for low–middle-income countries were: introducing reusable surgical devices; reducing use of consumables; and reducing the use of general anaesthesia. Conclusion This is a step toward environmentally sustainable operating environments with actionable interventions applicable to both high– and low–middle–income countries

    FAWN

    No full text
    corecore