Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread Dave Abrahams via swift-dev
on Mon Feb 06 2017, John McCall wrote: >> On Feb 4, 2017, at 6:45 PM, Dave Abrahams via swift-dev >> wrote: >> on Fri Feb 03 2017, John McCall wrote: >> On Feb 3, 2017, at 7:12 PM, Joe Groff via swift-dev wrote: Given that most open-coded resilient method lookup paths requir

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread John McCall via swift-dev
> On Feb 4, 2017, at 5:35 AM, Andrew Trick wrote: > > >> On Feb 3, 2017, at 9:37 PM, John McCall > > wrote: >> IV. The function that performs the lookup: IV1) is parameterized by an isa IV2) is not parameterized by an isa IV1 allows the same fun

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread John McCall via swift-dev
> On Feb 4, 2017, at 6:45 PM, Dave Abrahams via swift-dev > wrote: > on Fri Feb 03 2017, John McCall wrote: > >>> On Feb 3, 2017, at 7:12 PM, Joe Groff via swift-dev >>> wrote: >>> Given that most open-coded resilient method lookup paths require an >>> extra load dependency to grab the method

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread John McCall via swift-dev
> On Feb 6, 2017, at 1:23 PM, Joe Groff wrote: >> On Feb 3, 2017, at 8:47 PM, John McCall > > wrote: >> >>> On Feb 3, 2017, at 7:12 PM, Joe Groff via swift-dev >> > wrote: >>> Given that most open-coded resilient method lookup paths require a

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread Joe Groff via swift-dev
> On Feb 5, 2017, at 7:45 AM, Karl Wagner via swift-dev > wrote: > > >> On 3 Feb 2017, at 03:57, Andrew Trick via swift-dev > > wrote: >> >> I'm following up on a resilient dynamic dispatch discussion kicked off by >> Slava during a performance team meeting to summ

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread Andrew Trick via swift-dev
> On Feb 5, 2017, at 7:45 AM, Karl Wagner wrote: > > I have a question about current dispatching behaviour with protocols and > ‘Self’. > > protocol CustomEquatable { > func equal(to: Self) -> Bool > } > > open class Super : CustomEquatable { > func equal(to: Super) -> Bool { print("s

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread Joe Groff via swift-dev
> On Feb 3, 2017, at 8:47 PM, John McCall wrote: > >> On Feb 3, 2017, at 7:12 PM, Joe Groff via swift-dev > > wrote: >> Given that most open-coded resilient method lookup paths require an extra >> load dependency to grab the method offset before loading the method ad

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread Andrew Trick via swift-dev
> On Feb 3, 2017, at 4:12 PM, Joe Groff wrote: > > Given that most open-coded resilient method lookup paths require an extra > load dependency to grab the method offset before loading the method address > itself, we might possibly consider indirecting the vtables for each class, so > that the

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread Andrew Trick via swift-dev
> On Feb 6, 2017, at 9:02 AM, Greg Parker wrote: > >> >> On Feb 4, 2017, at 2:35 AM, Andrew Trick via swift-dev > > wrote: >> >> >>> On Feb 3, 2017, at 9:37 PM, John McCall >> > wrote: >>> > IV. The function that performs the lookup:

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-06 Thread Greg Parker via swift-dev
> On Feb 4, 2017, at 2:35 AM, Andrew Trick via swift-dev > wrote: > > >> On Feb 3, 2017, at 9:37 PM, John McCall > > wrote: >> IV. The function that performs the lookup: IV1) is parameterized by an isa IV2) is not parameterized by an isa IV1 al

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-05 Thread Karl Wagner via swift-dev
> On 3 Feb 2017, at 03:57, Andrew Trick via swift-dev > wrote: > > I'm following up on a resilient dynamic dispatch discussion kicked off by > Slava during a performance team meeting to summarize some key > points on public [swift-dev]. > > It's easy to get sidetracked by the details of dynami

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-04 Thread Dave Abrahams via swift-dev
on Fri Feb 03 2017, John McCall wrote: >> On Feb 3, 2017, at 7:12 PM, Joe Groff via swift-dev >> wrote: >> Given that most open-coded resilient method lookup paths require an >> extra load dependency to grab the method offset before loading the >> method address itself, we might possibly consi

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-04 Thread Andrew Trick via swift-dev
> On Feb 3, 2017, at 9:37 PM, John McCall wrote: > >>> IV. The function that performs the lookup: >>> IV1) is parameterized by an isa >>> IV2) is not parameterized by an isa >>> IV1 allows the same function to be used for super-dispatch but requires >>> extra work to be inlined at the call si

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread John McCall via swift-dev
> On Feb 3, 2017, at 7:06 PM, Andrew Trick wrote: >> On Feb 3, 2017, at 3:12 PM, John McCall > > wrote: >> >> I think we can generalize this discussion a bit by describing some >> mostly-independent axes of variation: > > That's great (sorry I used up the arabic+lette

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread John McCall via swift-dev
> On Feb 3, 2017, at 7:12 PM, Joe Groff via swift-dev > wrote: > Given that most open-coded resilient method lookup paths require an extra > load dependency to grab the method offset before loading the method address > itself, we might possibly consider indirecting the vtables for each class, s

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread Joe Groff via swift-dev
Given that most open-coded resilient method lookup paths require an extra load dependency to grab the method offset before loading the method address itself, we might possibly consider indirecting the vtables for each class, so that the top-level vtable contains [address of root class vtable, ad

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread Andrew Trick via swift-dev
> On Feb 3, 2017, at 3:12 PM, John McCall wrote: > > I think we can generalize this discussion a bit by describing some > mostly-independent axes of variation: That's great (sorry I used up the arabic+letter naming convention earlier in the thread)... > I. A call site: > I1) inlines the loo

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread John McCall via swift-dev
> On Feb 3, 2017, at 2:55 PM, Andrew Trick wrote: >> On Feb 3, 2017, at 10:58 AM, John McCall wrote: >> >>> On Feb 2, 2017, at 9:57 PM, Andrew Trick via swift-dev >>> wrote: >>> --- >>> #1. (thunk export) The simplest, most flexible way to expose dispatch >>> across resilience boundaries is by

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread Andrew Trick via swift-dev
> On Feb 3, 2017, at 1:27 PM, John McCall wrote: > >> On Feb 3, 2017, at 4:18 PM, Andrew Trick > > wrote: >>> On Feb 3, 2017, at 11:55 AM, Andrew Trick via swift-dev >>> mailto:swift-dev@swift.org>> wrote: >>> > #3b. (lazy resolution) Offset tables can be completel

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread John McCall via swift-dev
> On Feb 3, 2017, at 4:18 PM, Andrew Trick wrote: >> On Feb 3, 2017, at 11:55 AM, Andrew Trick via swift-dev > > wrote: >> #3b. (lazy resolution) Offset tables can be completely localized. method_index = immediate { // common per-class method looku

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread Andrew Trick via swift-dev
> On Feb 3, 2017, at 11:55 AM, Andrew Trick via swift-dev > wrote: > >>> #3b. (lazy resolution) Offset tables can be completely localized. >>> >>> method_index = immediate >>> { // common per-class method lookup >>> isa = load[obj] >>> offset = load[@local_class_method_table + method_index]

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread Andrew Trick via swift-dev
> On Feb 3, 2017, at 10:58 AM, John McCall wrote: > >> On Feb 2, 2017, at 9:57 PM, Andrew Trick via swift-dev >> wrote: >> --- >> #1. (thunk export) The simplest, most flexible way to expose dispatch >> across resilience boundaries is by exporting a single per-method entry >> point. Future com

Re: [swift-dev] Resilient dynamic dispatch ABI. Notes and mini-proposal.

2017-02-03 Thread John McCall via swift-dev
> On Feb 2, 2017, at 9:57 PM, Andrew Trick via swift-dev > wrote: > > I'm following up on a resilient dynamic dispatch discussion kicked off by > Slava during a performance team meeting to summarize some key > points on public [swift-dev]. > > It's easy to get sidetracked by the details of dyna