Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultCallNode.java @ 15091:607e33885130
Truffle: Merge context sensitive inlining removal with stack trace support.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 14 Apr 2014 18:46:56 +0200 |
parents | 448338c9ce96 |
children |
comparison
equal
deleted
inserted
replaced
15090:07e7aae05983 | 15091:607e33885130 |
---|---|
40 super(target); | 40 super(target); |
41 } | 41 } |
42 | 42 |
43 @Override | 43 @Override |
44 public Object call(VirtualFrame frame, Object[] arguments) { | 44 public Object call(VirtualFrame frame, Object[] arguments) { |
45 return callProxy(this, getCurrentCallTarget(), frame, arguments); | 45 return getCurrentCallTarget().call(arguments); |
46 } | |
47 | |
48 public static Object callProxy(MaterializedFrameNotify notify, CallTarget callTarget, VirtualFrame frame, Object[] arguments) { | |
49 try { | |
50 if (notify.getOutsideFrameAccess() != FrameAccess.NONE) { | |
51 CompilerDirectives.materialize(frame); | |
52 } | |
53 return callTarget.call(arguments); | |
54 } finally { | |
55 // this assertion is needed to keep the values from being cleared as non-live locals | |
56 assert notify != null & callTarget != null & frame != null; | |
57 } | |
58 } | 46 } |
59 | 47 |
60 @Override | 48 @Override |
61 public FrameAccess getOutsideFrameAccess() { | 49 public FrameAccess getOutsideFrameAccess() { |
62 return outsideFrameAccess; | 50 return outsideFrameAccess; |