[parrot/parrot] 5165f6: Don't create proxies for PMCNULL results lest PMC_...

GitHub noreply at github.com
Sun Mar 11 12:17:16 UTC 2012


  Branch: refs/heads/threads
  Home:   https://github.com/parrot/parrot
  Commit: 5165f6a8db1478666d2e3e35292dbdf1c9a26f7a
      https://github.com/parrot/parrot/commit/5165f6a8db1478666d2e3e35292dbdf1c9a26f7a
  Author: Stefan Seifert <nine at detonation.org>
  Date:   2012-03-04 (Sun, 04 Mar 2012)

  Changed paths:
    M lib/Parrot/Pmc2c/PMC/Proxy.pm

  Log Message:
  -----------
  Don't create proxies for PMCNULL results lest PMC_IS_NULL no longer works


  Commit: 97254da4ecd55723205bc52dac75d5c74a0acd15
      https://github.com/parrot/parrot/commit/97254da4ecd55723205bc52dac75d5c74a0acd15
  Author: Stefan Seifert <nine at detonation.org>
  Date:   2012-03-11 (Sun, 11 Mar 2012)

  Changed paths:
    M lib/Parrot/Pmc2c/PMC/Proxy.pm

  Log Message:
  -----------
  Block the GC while executing a proxied method

Proxy runs methods on the target with the target's interp. If GC is
triggered during this run, the foreign interp's GC could find our PMCs
on the call stack. It would also not find any PMCs which are on the
foreign interp's callstack. And most of all it could be that the foreign
interp also starts collecting garbage at the same time...

So we block the foreign GC to prevent this from happening.


  Commit: 2b11eacb94c5f554f77c66f30e35e679dbff11c8
      https://github.com/parrot/parrot/commit/2b11eacb94c5f554f77c66f30e35e679dbff11c8
  Author: Stefan Seifert <nine at detonation.org>
  Date:   2012-03-11 (Sun, 11 Mar 2012)

  Changed paths:
    M lib/Parrot/Pmc2c/PMC/Proxy.pm

  Log Message:
  -----------
  Use Parrot_thread_create_proxy to create proxies

Proxy's methods create proxies for returned objects. Before this fix, it
did this by calling Parrot_pmc_new_init itself but using the wrong (the
proxied) interp, so all Proxy objects originating from proxied method
calls would be allocated on the wrong interp.

Use Parrot_thread_create_proxy which handles this correctly, reducing
the places in which proxies are created.


  Commit: 7b7202e6a754f6ff931f15ce96c7a6ba0aaedf0a
      https://github.com/parrot/parrot/commit/7b7202e6a754f6ff931f15ce96c7a6ba0aaedf0a
  Author: Stefan Seifert <nine at detonation.org>
  Date:   2012-03-11 (Sun, 11 Mar 2012)

  Changed paths:
    M src/pmc/parrotinterpreter.pmc

  Log Message:
  -----------
  Remove some dead code from clone_interpreter


Compare: https://github.com/parrot/parrot/compare/f29b241...7b7202e


More information about the parrot-commits mailing list