Skip to content

Commit

Permalink
- Increase the estimate of opcodes by bytecode as PermSpace compariso…
Browse files Browse the repository at this point in the history
…n needs to add more instructions to the comparison

- Add tests for border conditions
  • Loading branch information
tesonep committed Feb 23, 2023
1 parent 5970390 commit 6d35a30
Show file tree
Hide file tree
Showing 4 changed files with 320 additions and 2 deletions.
9 changes: 8 additions & 1 deletion smalltalksrc/VMMaker/Cogit.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -6256,7 +6256,7 @@ Cogit >> entryPointTagIsSelector: entryPoint [
{ #category : #accessing }
Cogit >> estimateOfAbstractOpcodesPerBytecodes [
<inline: true>
^ 10
^ 15
]
{ #category : #'simulation only' }
Expand Down Expand Up @@ -11856,6 +11856,13 @@ Cogit >> subsequentPrototypeMethodOop [
ifFalse: [16rBADA550]
]
{ #category : #accessing }
Cogit >> superSendTrampolineAt: anInteger put: aTrampolineAddress [
<doNotGenerate>
superSendTrampolines at: anInteger put: aTrampolineAddress
]
{ #category : #'in-line cacheing' }
Cogit >> targetMethodAndSendTableFor: entryPoint annotation: annotation into: binaryBlock [
"Evaluate binaryBlock with the targetMethod and relevant send table for a linked-send
Expand Down
2 changes: 1 addition & 1 deletion smalltalksrc/VMMaker/SistaCogit.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ SistaCogit >> defaultCogCodeSize [
SistaCogit >> estimateOfAbstractOpcodesPerBytecodes [
"Due to the counter logic, the estimation is higher"
<inline: true>
^ 11
^ 16
]

{ #category : #'generate machine code' }
Expand Down
271 changes: 271 additions & 0 deletions smalltalksrc/VMMakerTests/VMJistMethodTestObject.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
Class {
#name : #VMJistMethodTestObject,
#superclass : #Object,
#instVars : [
'var1',
'var2',
'var3',
'var4',
'var5',
'var6',
'var7',
'var8',
'var9',
'var10',
'var11',
'var12',
'var13',
'var14',
'var15',
'var16',
'var17',
'var18',
'var19',
'var20',
'var21',
'var22',
'var23',
'var24',
'var25',
'var26',
'var27',
'var28',
'var29',
'var30',
'var31',
'var32',
'var33',
'var34',
'var35',
'var36',
'var37',
'var38',
'var39',
'var40',
'var41',
'var42',
'var43',
'var44',
'var45',
'var46',
'var47',
'var48',
'var49',
'var50',
'var51',
'var52',
'var53',
'var54',
'var55',
'var56',
'var57',
'var58',
'var59',
'var60',
'var61',
'var62',
'var63',
'var64',
'var65',
'var66',
'var67',
'var68',
'var69',
'var70',
'var71',
'var72',
'var73',
'var74',
'var75',
'var76',
'var77',
'var78',
'var79',
'var80',
'var81',
'var82',
'var83',
'var84',
'var85',
'var86',
'var87',
'var88',
'var89',
'var90',
'var91',
'var92',
'var93',
'var94',
'var95',
'var96',
'var97',
'var98',
'var99',
'var100',
'var101',
'var102',
'var103',
'var104',
'var105',
'var106',
'var107',
'var108',
'var109',
'var110',
'var111',
'var112',
'var113',
'var114',
'var115',
'var116',
'var117',
'var118',
'var119',
'var120',
'var121',
'var122',
'var123',
'var124',
'var125',
'var126',
'var127',
'var128',
'var129'
],
#category : #'VMMakerTests-JitTests'
}

{ #category : #initialization }
VMJistMethodTestObject >> initialize [
super initialize.
var1 := Array new.
var2 := Object new.
var3 := Object new.
var4 := Object new.
var5 := Object new.
var6 := Object new.
var7 := Object new.
var8 := Object new.
var9 := Object new.
var10 := Object new.
var11 := Object new.
var12 := Object new.
var13 := Object new.
var14 := Object new.
var15 := Object new.
var16 := Object new.
var17 := Object new.
var18 := Object new.
var19 := Object new.
var20 := Object new.
var21 := Object new.
var22 := Object new.
var23 := Object new.
var24 := Object new.
var25 := Object new.
var26 := Object new.
var27 := Object new.
var28 := Object new.
var29 := Object new.
var30 := Object new.
var31 := Object new.
var32 := Object new.
var33 := Object new.
var34 := Object new.
var35 := Object new.
var36 := Object new.
var37 := Object new.
var38 := Object new.
var39 := Object new.
var40 := Object new.
var41 := Object new.
var42 := Object new.
var43 := Object new.
var44 := Object new.
var45 := Object new.
var46 := Object new.
var47 := Object new.
var48 := Object new.
var49 := Object new.
var50 := Object new.
var51 := Object new.
var52 := Object new.
var53 := Object new.
var54 := Object new.
var55 := Object new.
var56 := Object new.
var57 := Object new.
var58 := Object new.
var59 := Object new.
var60 := Object new.
var61 := Object new.
var62 := Object new.
var63 := Object new.
var64 := Object new.
var65 := Object new.
var66 := Object new.
var67 := Object new.
var68 := Object new.
var69 := Object new.
var70 := Object new.
var71 := Object new.
var72 := Object new.
var73 := Object new.
var74 := Object new.
var75 := Object new.
var76 := Object new.
var77 := Object new.
var78 := Object new.
var79 := Object new.
var80 := Object new.
var81 := Object new.
var82 := Object new.
var83 := Object new.
var84 := Object new.
var85 := Object new.
var86 := Object new.
var87 := Object new.
var88 := Object new.
var89 := Object new.
var90 := Object new.
var91 := Object new.
var92 := Object new.
var93 := Object new.
var94 := Object new.
var95 := Object new.
var96 := Object new.
var97 := Object new.
var98 := Object new.
var99 := Object new.
var100 := Object new.
var101 := Object new.
var102 := Object new.
var103 := Object new.
var104 := Object new.
var105 := Object new.
var106 := Object new.
var107 := Object new.
var108 := Object new.
var109 := Object new.
var110 := Object new.
var111 := Object new.
var112 := Object new.
var113 := Object new.
var114 := Object new.
var115 := Object new.
var116 := Object new.
var117 := Object new.
var118 := Object new.
var119 := Object new.
var120 := Object new.
var121 := Object new.
var122 := Object new.
var123 := Object new.
var124 := Object new.
var125 := Object new.
var126 := Object new.
" var127 := Object new."
var128 := Object new.
var129 := Object new.

]
40 changes: 40 additions & 0 deletions smalltalksrc/VMMakerTests/VMJitMethodWithImmutabilityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Class {
#name : #VMJitMethodWithImmutabilityTest,
#superclass : #VMPrimitiveCallAbstractTest,
#pools : [
'CogRTLOpcodes'
],
#category : #'VMMakerTests-JitTests'
}

{ #category : #running }
VMJitMethodWithImmutabilityTest >> initialCodeSize [

^ 32 * 1024
]

{ #category : #initialization }
VMJitMethodWithImmutabilityTest >> setUp [

super setUp.
self initializeSpecialSelectors
]

{ #category : #initialization }
VMJitMethodWithImmutabilityTest >> setUpTrampolines [

super setUpTrampolines.

cogit superSendTrampolineAt: 0 put: (self compileTrampoline: [ cogit RetN: 0 ] named:#superSendTrampoline0).
cogit ordinarySendTrampolineAt: 0 put: (self compileTrampoline: [ cogit RetN: 0 ] named:#ordinarySendTrampoline0).

]

{ #category : #tests }
VMJitMethodWithImmutabilityTest >> testCompileMethodWithALotOfAssignmentsToInstanceVariables [
| callingMethod |

callingMethod := self jitMethod: (VMJistMethodTestObject>>#initialize).

self deny: callingMethod address equals: 0.
]

0 comments on commit 6d35a30

Please sign in to comment.