From fef4dd7d53505c5ea7c2663372245a787b70e59b Mon Sep 17 00:00:00 2001 From: nhantran Date: Sat, 6 Oct 2012 01:15:38 +0700 Subject: [PATCH] BYTEMAN-221: Add getObjectSize as standard method to Helper to support computing size of any object --- .../org/jboss/byteman/agent/HelperManager.java | 13 +++++++++++++ .../src/main/java/org/jboss/byteman/rule/Rule.java | 5 +++++ .../java/org/jboss/byteman/rule/helper/Helper.java | 9 +++++++++ 3 files changed, 27 insertions(+), 0 deletions(-) diff --git a/agent/src/main/java/org/jboss/byteman/agent/HelperManager.java b/agent/src/main/java/org/jboss/byteman/agent/HelperManager.java index 8b2a2eb..8b45019 100644 --- a/agent/src/main/java/org/jboss/byteman/agent/HelperManager.java +++ b/agent/src/main/java/org/jboss/byteman/agent/HelperManager.java @@ -137,6 +137,19 @@ public class HelperManager } } } + + /** + * This method is to leverage the capability of the Instrumentation object without causing any security risks. + * It computes the object size or return -1 in case not running in a real agent + */ + public long getObjectSize(Object o) + { + if (inst == null) { + System.out.println("Can not calculate object size due to not running in a real agent"); + return -1; + } + return this.inst.getObjectSize(o); + } // private parts diff --git a/agent/src/main/java/org/jboss/byteman/rule/Rule.java b/agent/src/main/java/org/jboss/byteman/rule/Rule.java index 690446a..9e9614b 100644 --- a/agent/src/main/java/org/jboss/byteman/rule/Rule.java +++ b/agent/src/main/java/org/jboss/byteman/rule/Rule.java @@ -923,4 +923,9 @@ public class Rule throw new ExecuteException("Rule.invokeAccessibleMethod : unexpected error invoking non-public method in rule " + getName(), e); } } + + public long getObjectSize(Object o) + { + return helperManager.getObjectSize(o); + } } diff --git a/agent/src/main/java/org/jboss/byteman/rule/helper/Helper.java b/agent/src/main/java/org/jboss/byteman/rule/helper/Helper.java index 4514acb..e7303b5 100644 --- a/agent/src/main/java/org/jboss/byteman/rule/helper/Helper.java +++ b/agent/src/main/java/org/jboss/byteman/rule/helper/Helper.java @@ -2243,6 +2243,15 @@ public class Helper Rule.disableTriggers(); } } + + /** + * compute the object size + * return -1 if not running in a real agent + */ + public long getObjectSize(Object o) + { + return rule.getObjectSize(o); + } /** * return a unique name for the trigger point associated with this rule. n.b. a single rule may -- 1.7.9.1