diff graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/ReadArgumentNode.java @ 13336:d4c6dd07be76

SL: added exemplary uses of new profiling utility BranchProfile to SL.
author Christian Humer <christian.humer@gmail.com>
date Sun, 15 Dec 2013 22:20:12 +0100
parents 71991b7a0f14
children
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/ReadArgumentNode.java	Sun Dec 15 22:19:19 2013 +0100
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/ReadArgumentNode.java	Sun Dec 15 22:20:12 2013 +0100
@@ -23,12 +23,16 @@
 package com.oracle.truffle.sl.nodes;
 
 import com.oracle.truffle.api.frame.*;
+import com.oracle.truffle.api.utilities.*;
 import com.oracle.truffle.sl.runtime.*;
 
 public class ReadArgumentNode extends TypedNode {
 
     private final int index;
 
+    private final BranchProfile outOfBounds = new BranchProfile();
+    private final BranchProfile inBounds = new BranchProfile();
+
     public ReadArgumentNode(int index) {
         this.index = index;
     }
@@ -37,8 +41,10 @@
     public Object executeGeneric(VirtualFrame frame) {
         Object[] args = SLArguments.get(frame).arguments;
         if (index < args.length) {
+            inBounds.enter();
             return args[index];
         } else {
+            outOfBounds.enter();
             return SLNull.INSTANCE;
         }
     }