From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 99954 invoked by alias); 22 Jun 2017 14:33:22 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 99933 invoked by uid 89); 22 Jun 2017 14:33:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,SPF_PASS autolearn=ham version=3.3.2 spammy=barriers X-HELO: mail-oi0-f52.google.com Received: from mail-oi0-f52.google.com (HELO mail-oi0-f52.google.com) (209.85.218.52) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 22 Jun 2017 14:33:19 +0000 Received: by mail-oi0-f52.google.com with SMTP id b6so9912805oia.1 for ; Thu, 22 Jun 2017 07:33:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Jwg4pIF7RuqQdlsTzTNbJrttnnOpJpriq1yBatN6sXg=; b=COE5VIH6q1kQyQkIokTZAlf/h/UfTtV8UyoIj8WkyofKipbuXAIIKFE41z1YNibYkv FDpjum+7RqtwIjvaBobmKnXZ/O2EBjGE1gA1Zo9K7JDSG+Z6Svsv7Jdw1+TMolHBj+Qo g0AslyotCYeZmpUh8EVmvIIi8mT6s0vI//cwxv4eP2b0MfHsqIkUlnCbyCGFkXMDTQVC /UgF2A8evMkX8esnCfekBVzrB914PPorUPFPA1CIXdfvSYxtlrd8YIGcFOPHDrx4Te2j uuUdooalPc1yf5NxmjvrZmq5oChpgu8auEBuZFx78NSTXwqReFm1K3tSSYDemTR6oYWg jiNQ== X-Gm-Message-State: AKS2vOxOuWPa6C2sjIZDxgJko/woey8gBrBFS825SaIbkyoFLog7RlVn T12KnNwqdxPM0eirErSRnLm2W4mnN004qW0= X-Received: by 10.202.234.70 with SMTP id i67mr1265528oih.142.1498141998059; Thu, 22 Jun 2017 07:33:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.202.217.87 with HTTP; Thu, 22 Jun 2017 07:33:17 -0700 (PDT) From: Ian Lance Taylor Date: Thu, 22 Jun 2017 14:33:00 -0000 Message-ID: Subject: libgo patch committed: Avoid write barriers when calling deferred function To: gcc-patches , "gofrontend-dev@googlegroups.com" Content-Type: multipart/mixed; boundary="001a113d51f29e4ac905528d5d9b" X-SW-Source: 2017-06/txt/msg01669.txt.bz2 --001a113d51f29e4ac905528d5d9b Content-Type: text/plain; charset="UTF-8" Content-length: 732 Calling a deferred function in libgo currently requires changing from a uintptr to the function code to a Go function value. That is done by setting the value of a func local variable using unsafe.Pointer. The local variable will always be on the stack. Adjust the code that sets the local variable to avoid generating a write barrier. A write barrier is never needed here. Also, for deferreturn, we must avoid write barriers entirely when called from a cgo function; that requires more than just this, but this is a start. The test for this is runtime tests that use the go tool; these are not currently run, but they will be in the future. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian --001a113d51f29e4ac905528d5d9b Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j48j28zi0 Content-length: 2201 SW5kZXg6IGdjYy9nby9nb2Zyb250ZW5kL01FUkdFCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy9nby9nb2Zyb250ZW5kL01FUkdFCShyZXZpc2lv biAyNDk1NTgpCisrKyBnY2MvZ28vZ29mcm9udGVuZC9NRVJHRQkod29ya2lu ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLWE0NTlmMWZkZmUwYmQzNjViZjJk ZWY3MzBlMTUyOTA1MmM2NDg3ZmQKKzczYjE0ZGExNWVjNzMxODM3Y2UyYTQ1 ZGI2NTgxNDJiZmJmNWZlMjIKIAogVGhlIGZpcnN0IGxpbmUgb2YgdGhpcyBm aWxlIGhvbGRzIHRoZSBnaXQgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBsYXN0 CiBtZXJnZSBkb25lIGZyb20gdGhlIGdvZnJvbnRlbmQgcmVwb3NpdG9yeS4K SW5kZXg6IGxpYmdvL2dvL3J1bnRpbWUvcGFuaWMuZ28KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gbGliZ28vZ28vcnVudGltZS9wYW5pYy5nbwkocmV2 aXNpb24gMjQ5NTU4KQorKysgbGliZ28vZ28vcnVudGltZS9wYW5pYy5nbwko d29ya2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIGZ1bmMgZGVmZXJy ZXR1cm4oZnJhbWUgKmJvb2wpIHsKIAkJCS8vIFRoZSBnYyBjb21waWxlciBk b2VzIHRoaXMgdXNpbmcgYXNzZW1ibGVyCiAJCQkvLyBjb2RlIGluIGptcGRl ZmVyLgogCQkJdmFyIGZuIGZ1bmModW5zYWZlLlBvaW50ZXIpCi0JCQkqKCoq dWludHB0cikodW5zYWZlLlBvaW50ZXIoJmZuKSkgPSAmcGZuCisJCQkqKCp1 aW50cHRyKSh1bnNhZmUuUG9pbnRlcigmZm4pKSA9IHVpbnRwdHIodW5zYWZl LlBvaW50ZXIoJnBmbikpCiAJCQlmbihkLmFyZykKIAkJfQogCkBAIC0yNTks NyArMjU5LDcgQEAgZnVuYyBjaGVja2RlZmVyKGZyYW1lICpib29sKSB7CiAJ CQlncC5fZGVmZXIgPSBkLmxpbmsKIAogCQkJdmFyIGZuIGZ1bmModW5zYWZl LlBvaW50ZXIpCi0JCQkqKCoqdWludHB0cikodW5zYWZlLlBvaW50ZXIoJmZu KSkgPSAmcGZuCisJCQkqKCp1aW50cHRyKSh1bnNhZmUuUG9pbnRlcigmZm4p KSA9IHVpbnRwdHIodW5zYWZlLlBvaW50ZXIoJnBmbikpCiAJCQlmbihkLmFy ZykKIAogCQkJZnJlZWRlZmVyKGQpCkBAIC0zNDUsNyArMzQ1LDcgQEAgZnVu YyBHb2V4aXQoKSB7CiAKIAkJaWYgcGZuICE9IDAgewogCQkJdmFyIGZuIGZ1 bmModW5zYWZlLlBvaW50ZXIpCi0JCQkqKCoqdWludHB0cikodW5zYWZlLlBv aW50ZXIoJmZuKSkgPSAmcGZuCisJCQkqKCp1aW50cHRyKSh1bnNhZmUuUG9p bnRlcigmZm4pKSA9IHVpbnRwdHIodW5zYWZlLlBvaW50ZXIoJnBmbikpCiAJ CQlmbihkLmFyZykKIAkJfQogCkBAIC00NDYsNyArNDQ2LDcgQEAgZnVuYyBn b3BhbmljKGUgaW50ZXJmYWNle30pIHsKIAogCQlpZiBwZm4gIT0gMCB7CiAJ CQl2YXIgZm4gZnVuYyh1bnNhZmUuUG9pbnRlcikKLQkJCSooKip1aW50cHRy KSh1bnNhZmUuUG9pbnRlcigmZm4pKSA9ICZwZm4KKwkJCSooKnVpbnRwdHIp KHVuc2FmZS5Qb2ludGVyKCZmbikpID0gdWludHB0cih1bnNhZmUuUG9pbnRl cigmcGZuKSkKIAkJCWZuKGQuYXJnKQogCiAJCQlpZiBwLnJlY292ZXJlZCB7 Cg== --001a113d51f29e4ac905528d5d9b--