Skip to content
Snippets Groups Projects
  • Matthew Dempsky's avatar
    c9f2150c
    [dev.unified] cmd/compile: start using runtime dictionaries · c9f2150c
    Matthew Dempsky authored
    This CL switches unified IR to start using runtime dictionaries,
    rather than pure stenciling. In particular, for each instantiated
    function `F[T]`, it now:
    
    1. Generates a global variable `F[T]-dict` of type `[N]uintptr`, with
    all of the `*runtime._type` values needed by `F[T]`.
    
    2. Generates a function `F[T]-shaped`, with an extra
    `.dict *[N]uintptr` parameter and indexing into that parameter for
    derived types. (N.B., this function is not yet actually using shape
    types.)
    
    3. Changes `F[T]` to instead be a wrapper function that calls
    `F[T]-shaped` passing `&F[T]-dict` as the `.dict` parameter.
    
    This is done in one pass to make sure the overall wiring is all
    working (especially, function literals and inlining).
    
    Subsequent CLs will write more information into `F[T]-dict` and update
    `F[T]-shaped` to use it instead of relying on `T`-derived information
    itself. Once that's done, `F[T]-shaped` can be changed to
    `F[shapify(T)]` (e.g., `F[go.shape.int]`) and deduplicated.
    
    Change-Id: I0e802a4d9934794e01a6bfc367820af893335155
    Reviewed-on: https://go-review.googlesource.com/c/go/+/420416
    
    
    Run-TryBot: Matthew Dempsky <mdempsky@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Auto-Submit: Matthew Dempsky <mdempsky@google.com>
    Reviewed-by: default avatarCuong Manh Le <cuong.manhle.vn@gmail.com>
    Reviewed-by: default avatarKeith Randall <khr@google.com>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    Reviewed-by: default avatarDavid Chase <drchase@google.com>
    c9f2150c
    History
    [dev.unified] cmd/compile: start using runtime dictionaries
    Matthew Dempsky authored
    This CL switches unified IR to start using runtime dictionaries,
    rather than pure stenciling. In particular, for each instantiated
    function `F[T]`, it now:
    
    1. Generates a global variable `F[T]-dict` of type `[N]uintptr`, with
    all of the `*runtime._type` values needed by `F[T]`.
    
    2. Generates a function `F[T]-shaped`, with an extra
    `.dict *[N]uintptr` parameter and indexing into that parameter for
    derived types. (N.B., this function is not yet actually using shape
    types.)
    
    3. Changes `F[T]` to instead be a wrapper function that calls
    `F[T]-shaped` passing `&F[T]-dict` as the `.dict` parameter.
    
    This is done in one pass to make sure the overall wiring is all
    working (especially, function literals and inlining).
    
    Subsequent CLs will write more information into `F[T]-dict` and update
    `F[T]-shaped` to use it instead of relying on `T`-derived information
    itself. Once that's done, `F[T]-shaped` can be changed to
    `F[shapify(T)]` (e.g., `F[go.shape.int]`) and deduplicated.
    
    Change-Id: I0e802a4d9934794e01a6bfc367820af893335155
    Reviewed-on: https://go-review.googlesource.com/c/go/+/420416
    
    
    Run-TryBot: Matthew Dempsky <mdempsky@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Auto-Submit: Matthew Dempsky <mdempsky@google.com>
    Reviewed-by: default avatarCuong Manh Le <cuong.manhle.vn@gmail.com>
    Reviewed-by: default avatarKeith Randall <khr@google.com>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    Reviewed-by: default avatarDavid Chase <drchase@google.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.