Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: m-labs/artiq
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: fbc242044345
Choose a base ref
...
head repository: m-labs/artiq
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: d3ee858d1670
Choose a head ref
  • 2 commits
  • 2 files changed
  • 1 contributor

Commits on Nov 11, 2016

  1. artiq_devtool: more robust port forwarding.

    whitequark committed Nov 11, 2016
    Copy the full SHA
    8b6418c View commit details

Commits on Nov 12, 2016

  1. llvm_ir_generator: use !{→unconditionally.}invariant.load metadata.

    This helps LICM, among other things.
    whitequark committed Nov 12, 2016
    3
    Copy the full SHA
    d3ee858 View commit details
Showing with 20 additions and 14 deletions.
  1. +3 −3 artiq/compiler/transforms/llvm_ir_generator.py
  2. +17 −11 artiq/frontend/artiq_devtool.py
6 changes: 3 additions & 3 deletions artiq/compiler/transforms/llvm_ir_generator.py
Original file line number Diff line number Diff line change
@@ -651,7 +651,7 @@ def llptr_to_var(self, llenv, env_ty, var_name, var_type=None):
llptr = self.llbuilder.gep(llenv, [self.llindex(0), self.llindex(outer_index)],
inbounds=True)
llouterenv = self.llbuilder.load(llptr)
llouterenv.set_metadata('invariant.load', self.empty_metadata)
llouterenv.set_metadata('unconditionally.invariant.load', self.empty_metadata)
llouterenv.set_metadata('nonnull', self.empty_metadata)
return self.llptr_to_var(llouterenv, env_ty.params["$outer"], var_name)

@@ -795,7 +795,7 @@ def process_GetAttr(self, insn):
inbounds=True, name="ptr.{}".format(insn.name))
llvalue = self.llbuilder.load(llptr, name="val.{}".format(insn.name))
if types.is_instance(typ) and attr in typ.constant_attributes:
llvalue.set_metadata('invariant.load', self.empty_metadata)
llvalue.set_metadata('unconditionally.invariant.load', self.empty_metadata)
if isinstance(llvalue.type, ll.PointerType):
self.mark_dereferenceable(llvalue)
return llvalue
@@ -1050,7 +1050,7 @@ def get_outer(llenv, env_ty):
llptr = self.llbuilder.gep(llenv, [self.llindex(0), self.llindex(outer_index)],
inbounds=True)
llouterenv = self.llbuilder.load(llptr)
llouterenv.set_metadata('invariant.load', self.empty_metadata)
llouterenv.set_metadata('unconditionally.invariant.load', self.empty_metadata)
llouterenv.set_metadata('nonnull', self.empty_metadata)
return self.llptr_to_var(llouterenv, env_ty.params["$outer"], var_name)
else:
28 changes: 17 additions & 11 deletions artiq/frontend/artiq_devtool.py
Original file line number Diff line number Diff line change
@@ -105,6 +105,7 @@ def drain(chan):
elif action == "connect":
def forwarder(port):
listener = socket.socket()
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listener.bind(('localhost', port))
listener.listen(1)
while True:
@@ -114,17 +115,22 @@ def forwarder(port):
remote_stream = get_ssh().get_transport() \
.open_channel('direct-tcpip', (args.ip, port), peer_addr)
while True:
r, w, x = select.select([local_stream, remote_stream], [], [])
if local_stream in r:
data = local_stream.recv(1024)
if data == b"":
break
remote_stream.send(data)
if remote_stream in r:
data = remote_stream.recv(1024)
if data == b"":
break
local_stream.send(data)
try:
r, w, x = select.select([local_stream, remote_stream], [], [])
if local_stream in r:
data = local_stream.recv(1024)
if data == b"":
break
remote_stream.send(data)
if remote_stream in r:
data = remote_stream.recv(1024)
if data == b"":
break
local_stream.send(data)
except Exception as e:
logger.exception("Forward error on port %s", port)
local_stream.close()
remote_stream.close()

for port in (1381, 1382):
thread = threading.Thread(target=forwarder, args=(port,),