return expr.evaluate( cx, scope );
return ScriptEvalUtil.convertNativeObjToJavaObj( expr.evaluate(cx, scope ) );
	static Object evaluateCompiledExpression( CompiledExpression expr, 			org.eclipse.birt.data.engine.odi.IResultIterator odiResult,			Context cx, Scriptable scope ) throws DataException	{	    try		{	    	// Special case for DirectColRefExpr: it's faster to directly access	    	// column value using the Odi IResultIterator.		    if ( expr instanceof DirectColRefExpr )		    {		        // Direct column reference		        DirectColRefExpr colref = (DirectColRefExpr) expr;			    if ( colref.isIndexed())			    {			        int idx = colref.getColumnindex();			        // Special case: row[0] refers to internal rowID			        if (idx == 0)			        	return new Integer(odiResult.getCurrentResultIndex());					else if ( odiResult.getCurrentResult( ) != null )						return odiResult.getCurrentResult( ).getFieldValue( idx );					else						return null;			    }			    else			    {			        String name = colref.getColumnName();			        if ( odiResult.getCurrentResult( ) != null )						return odiResult.getCurrentResult( ).getFieldValue( name );					else						return null;			    }		    }		    else		    {	            return expr.evaluate( cx, scope );		    }		}	    catch ( DataException e )		{	    	throw e;		}			}