You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vladimir Strigun (JIRA)" <ji...@apache.org> on 2007/07/19 12:52:05 UTC

[jira] Commented: (HARMONY-4475) [drlvm][jit][opt] Pragma @Inline support in Jitrino.OPT compiler

    [ https://issues.apache.org/jira/browse/HARMONY-4475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513872 ] 

Vladimir Strigun commented on HARMONY-4475:
-------------------------------------------

It seems that commit intoduce huge degradation for several Dacapo benches, in particular for the next benches:
antlr from 2100 ms to 2283 msec
eclipse 24248 vs 30838
luindex 5248 vs 14316
lusearch 2946 vs 7067

So, I think the issue should be reopened.
Reproduced on Win IA32, woodcrest platform with the next emconf:

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#EM configuration for 'server' mode of Jitrino
chains=chain1,chain2
chain1.jits=JET_CLINIT
chain2.jits=SD1_OPT,SD2_OPT

chain1.filter=+::<clinit>
chain1.filter=-

JET_CLINIT.file=jitrino
SD1_OPT.file=jitrino
SD2_OPT.file=jitrino

# Edge profiler and recompilation parameters
EDGE_PROF.profilerType=EDGE_PROFILER
EDGE_PROF.entryThreshold=40000
EDGE_PROF.backedgeThreshold=150000
EDGE_PROF.tbsTimeout=10
EDGE_PROF.tbsInitialTimeout=0

VALUE_PROF.profilerType=VALUE_PROFILER
VALUE_PROF.vpalgo=TNV_FIRST_N
VALUE_PROF.vpSteadySize=4
SD1_OPT.genProfile=EDGE_PROF,VALUE_PROF
SD2_OPT.useProfile=EDGE_PROF,VALUE_PROF

#options for JIT

-XX:jit.JET_CLINIT.path=

#register allocator configuration
-XDjit.RA2.filter=-
-XDjit.RA2.path=bp_regalloc1,bp_regalloc2
-XDjit.RA2.path.bp_regalloc1=bp_regalloc
-XDjit.RA2.path.bp_regalloc2=bp_regalloc
-XDjit.RA2.arg.bp_regalloc1.regs=ALL_GP
-XDjit.RA2.arg.bp_regalloc2.regs=ALL_XMM
-XDjit.RA3.filter=-
-XDjit.RA3.path=webmaker,cg_regalloc
-XDjit.RA3.arg.webmaker.calc=true

-XX:jit.SD1_OPT.path=opt_init,translator,optimizer,hir2lir,codegen

-XX:jit.SD1_OPT.path.optimizer=ssa,simplify,dce,uce,vp_instrument,devirt_virtual,edge_instrument,dessa,statprof,markglobals
-XX:jit.SD1_OPT.path.devirt_virtual=devirt
-XX:jit.SD1_OPT.path.codegen=lock_method,bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,early_prop,peephole,itrace-,native,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info,unlock_method
-XX:jit.SD1_OPT.path.dce1=cg_dce
-XX:jit.SD1_OPT.path.dce2=cg_dce

-XX:jit.SD1_OPT.arg.codegen.dce1.early=yes
-XX:jit.SD1_OPT.arg.codegen.btr.insertCMOVs=no
-XX:jit.SD1_OPT.arg.codegen.btr.removeConstCompare=yes

#enable profiling of all virtual calls
-XX:jit.SD1_OPT.arg.optimizer.vp_instrument.profile_abstract=true


-XX:jit.SD2_OPT.path=opt_init,translator,optimizer,hir2lir,codegen

-XX:jit.SD2_OPT.path.optimizer=ssa,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,inline,uce,purge,simplify,dce,uce,lazyexc,so2-,simplify,dce,uce,escape,inline_helpers,purge,simplify,uce,dce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,lower,dce,uce,memopt,reassoc,dce,uce,hvn,dce,uce,classic_abcd,dce,uce,gcm,dessa,fastArrayFill,statprof,markglobals
-XX:jit.SD2_OPT.path.codegen=lock_method,bbp,btr,gcpoints,cafl,dce1,i8l,api_magic,early_prop,peephole,itrace-,native,cg_fastArrayFill,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info,unlock_method
-XX:jit.SD2_OPT.path.dce1=cg_dce
-XX:jit.SD2_OPT.path.dce2=cg_dce

#devirt configuration
-XX:jit.SD2_OPT.path.devirt_virtual=devirt
-XX:jit.SD2_OPT.path.devirt_intf=devirt
-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_intf_calls=true
-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_abstract_calls=true
-XX:jit.SD2_OPT.arg.optimizer.devirt_intf.devirt_virtual_calls=false

#inliner configuration
-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.filter=-
-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path=ssa,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf
-XX:jit.SD2_OPT.arg.optimizer.inline.pipeline=SD2_OPT_inliner_pipeline
-XX:jit.SD2_OPT.arg.optimizer.inline.connect_early=false
#devirt configuration for inliner pipeline
-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path.devirt_virtual=devirt
-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.path.devirt_intf=devirt
-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_intf_calls=true
-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_abstract_calls=true
-XX:jit.SD2_OPT.SD2_OPT_inliner_pipeline.arg.devirt_intf.devirt_virtual_calls=false

#helper inliner configuration
-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.filter=-
-XX:jit.SD2_OPT.SD2_OPT_helper_inliner_pipeline.path=ssa
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.pipeline=SD2_OPT_helper_inliner_pipeline

-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newObj=on
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newObj_className=org/apache/harmony/drlvm/gc_gen/GCHelper
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newObj_methodName=alloc
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newObj_hotnessPercent=1

-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newArray=on
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newArray_className=org/apache/harmony/drlvm/gc_gen/GCHelper
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newArray_methodName=allocArray
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.newArray_hotnessPercent=1

-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonEnter=on
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonEnter_className=org/apache/harmony/drlvm/thread/ThreadHelper
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonEnter_methodName=monitorEnterUseReservation
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonEnter_hotnessPercent=1

-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonExit=on
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonExit_className=org/apache/harmony/drlvm/thread/ThreadHelper
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonExit_methodName=monitorExit
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.objMonExit_hotnessPercent=1

-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.ldInterface=on
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.ldInterface_className=org/apache/harmony/drlvm/VMHelperFastPath
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.ldInterface_methodName=getInterfaceVTable3
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.ldInterface_hotnessPercent=1

-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.checkCast=on
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.checkCast_className=org/apache/harmony/drlvm/VMHelperFastPath
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.checkCast_methodName=checkCast
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.checkCast_hotnessPercent=1

-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.instanceOf=on
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.instanceOf_className=org/apache/harmony/drlvm/VMHelperFastPath
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.instanceOf_methodName=instanceOf
-XX:jit.SD2_OPT.arg.optimizer.inline_helpers.instanceOf_hotnessPercent=1

-XX:jit.SD2_OPT.arg.codegen.dce1.early=yes
-XX:jit.SD2_OPT.arg.codegen.btr.insertCMOVs=no
-XX:jit.SD2_OPT.arg.codegen.btr.removeConstCompare=yes
-XX:jit.arg.codegen.emitter.align=4

#system properties
-Djava.compiler=server

#GC magics support
-Dvm.components.gc_gen.startupclass=org.apache.harmony.drlvm.gc_gen.GCHelper
-XX:vm.component.classpath.gc_gen=gc_gen.jar

#TM properties
-Dvm.components.hythr.startupclass=org.apache.harmony.drlvm.thread.ThreadHelper
-XX:vm.component.classpath.hythr=hythr.jar

#VM helpers
-Dvm.components.vmcore1.startupclass=org.apache.harmony.drlvm.VMHelper
-Dvm.components.vmcore2.startupclass=org.apache.harmony.drlvm.VMHelperFastPath

-XDjit.arg.optimizer.inline.growth_factor=210 
-XDjit.arg.optimizer.inline.min_stop=240 
-XDjit.arg.optimizer.inline.inline_small_method_max_size=75 
-XDjit.arg.optimizer.inline.medium_method_max_size=1400 
-XDjit.arg.optimizer.inline.large_method_min_size=1150 
-XDjit.arg.optimizer.inline.leaf_bonus=2160 
-XDjit.arg.optimizer.inline.synch_bonus=60 
-XDjit.arg.optimizer.inline.min_benefit_threshold=70 
-XDjit.arg.optimizer.inline.inline_small_method_bonus=1000 
-XDjit.arg.optimizer.inline.medium_method_bonus=300 
-XDjit.arg.optimizer.inline.loop_bonus=200 
-XDjit.arg.optimizer.inline.recursion_penalty=600 
-XDjit.arg.optimizer.inline.exact_single_parameter_bonus=70 
-XDjit.arg.optimizer.inline.exact_all_parameter_bonus=140 


> [drlvm][jit][opt] Pragma @Inline support in Jitrino.OPT compiler
> ----------------------------------------------------------------
>
>                 Key: HARMONY-4475
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4475
>             Project: Harmony
>          Issue Type: New Feature
>          Components: DRLVM
>            Reporter: Mikhail Fursov
>            Assignee: Mikhail Fursov
>         Attachments: pragma_inline.diff
>
>
> This patch moves vmmagic's pragma @Inline support from helper inliner (inline_helpers) to general purpose HLO inliner (inline) pass.
> Now all methods marked with @Inline pragma will be inlined if 'inline' pass is on.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.