Skip to content

Commit

Permalink
Add pushReceiverVariableBytecode
Browse files Browse the repository at this point in the history
  • Loading branch information
guillep committed Apr 25, 2023
1 parent 283d7d8 commit 662b123
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 83 deletions.
173 changes: 90 additions & 83 deletions smalltalksrc/VMMaker/DruidJIT.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ DruidJIT class >> bytecodeTable [

<generated>
^ {
{ 1. 0. 0. #unknownBytecode }.
{ 1. 0. 0. #gen_PushReceiverVariableBytecode0.
#isInstVarRef. #needsFrameNever:. 1 }.
{ 1. 1. 1. #unknownBytecode }.
{ 1. 2. 2. #unknownBytecode }.
{ 1. 3. 3. #unknownBytecode }.
Expand All @@ -42,7 +43,8 @@ DruidJIT class >> bytecodeTable [
{ 1. 13. 13. #unknownBytecode }.
{ 1. 14. 14. #unknownBytecode }.
{ 1. 15. 15. #unknownBytecode }.
{ 1. 16. 16. #unknownBytecode }.
{ 1. 16. 16. #gen_PushLiteralVariable16CasesBytecode0.
#needsFrameNever:. 1 }.
{ 1. 17. 17. #unknownBytecode }.
{ 1. 18. 18. #unknownBytecode }.
{ 1. 19. 19. #unknownBytecode }.
Expand All @@ -60,69 +62,39 @@ DruidJIT class >> bytecodeTable [
{ 1. 31. 31. #unknownBytecode }.
{ 1. 32. 32. #gen_PushLiteralConstantBytecode0.
#needsFrameNever:. 1 }.
{ 1. 33. 33. #gen_PushLiteralConstantBytecode1.
#needsFrameNever:. 1 }.
{ 1. 34. 34. #gen_PushLiteralConstantBytecode2.
#needsFrameNever:. 1 }.
{ 1. 35. 35. #gen_PushLiteralConstantBytecode3.
#needsFrameNever:. 1 }.
{ 1. 36. 36. #gen_PushLiteralConstantBytecode4.
#needsFrameNever:. 1 }.
{ 1. 37. 37. #gen_PushLiteralConstantBytecode5.
#needsFrameNever:. 1 }.
{ 1. 38. 38. #gen_PushLiteralConstantBytecode6.
#needsFrameNever:. 1 }.
{ 1. 39. 39. #gen_PushLiteralConstantBytecode7.
#needsFrameNever:. 1 }.
{ 1. 40. 40. #gen_PushLiteralConstantBytecode8.
#needsFrameNever:. 1 }.
{ 1. 41. 41. #gen_PushLiteralConstantBytecode9.
#needsFrameNever:. 1 }.
{ 1. 42. 42. #gen_PushLiteralConstantBytecode10.
#needsFrameNever:. 1 }.
{ 1. 43. 43. #gen_PushLiteralConstantBytecode11.
#needsFrameNever:. 1 }.
{ 1. 44. 44. #gen_PushLiteralConstantBytecode12.
#needsFrameNever:. 1 }.
{ 1. 45. 45. #gen_PushLiteralConstantBytecode13.
#needsFrameNever:. 1 }.
{ 1. 46. 46. #gen_PushLiteralConstantBytecode14.
#needsFrameNever:. 1 }.
{ 1. 47. 47. #gen_PushLiteralConstantBytecode15.
#needsFrameNever:. 1 }.
{ 1. 48. 48. #gen_PushLiteralConstantBytecode16.
#needsFrameNever:. 1 }.
{ 1. 49. 49. #gen_PushLiteralConstantBytecode17.
#needsFrameNever:. 1 }.
{ 1. 50. 50. #gen_PushLiteralConstantBytecode18.
#needsFrameNever:. 1 }.
{ 1. 51. 51. #gen_PushLiteralConstantBytecode19.
#needsFrameNever:. 1 }.
{ 1. 52. 52. #gen_PushLiteralConstantBytecode20.
#needsFrameNever:. 1 }.
{ 1. 53. 53. #gen_PushLiteralConstantBytecode21.
#needsFrameNever:. 1 }.
{ 1. 54. 54. #gen_PushLiteralConstantBytecode22.
#needsFrameNever:. 1 }.
{ 1. 55. 55. #gen_PushLiteralConstantBytecode23.
#needsFrameNever:. 1 }.
{ 1. 56. 56. #gen_PushLiteralConstantBytecode24.
#needsFrameNever:. 1 }.
{ 1. 57. 57. #gen_PushLiteralConstantBytecode25.
#needsFrameNever:. 1 }.
{ 1. 58. 58. #gen_PushLiteralConstantBytecode26.
#needsFrameNever:. 1 }.
{ 1. 59. 59. #gen_PushLiteralConstantBytecode27.
#needsFrameNever:. 1 }.
{ 1. 60. 60. #gen_PushLiteralConstantBytecode28.
#needsFrameNever:. 1 }.
{ 1. 61. 61. #gen_PushLiteralConstantBytecode29.
#needsFrameNever:. 1 }.
{ 1. 62. 62. #gen_PushLiteralConstantBytecode30.
#needsFrameNever:. 1 }.
{ 1. 63. 63. #gen_PushLiteralConstantBytecode31.
#needsFrameNever:. 1 }.
{ 1. 64. 64. #unknownBytecode }.
{ 1. 33. 33. #unknownBytecode }.
{ 1. 34. 34. #unknownBytecode }.
{ 1. 35. 35. #unknownBytecode }.
{ 1. 36. 36. #unknownBytecode }.
{ 1. 37. 37. #unknownBytecode }.
{ 1. 38. 38. #unknownBytecode }.
{ 1. 39. 39. #unknownBytecode }.
{ 1. 40. 40. #unknownBytecode }.
{ 1. 41. 41. #unknownBytecode }.
{ 1. 42. 42. #unknownBytecode }.
{ 1. 43. 43. #unknownBytecode }.
{ 1. 44. 44. #unknownBytecode }.
{ 1. 45. 45. #unknownBytecode }.
{ 1. 46. 46. #unknownBytecode }.
{ 1. 47. 47. #unknownBytecode }.
{ 1. 48. 48. #unknownBytecode }.
{ 1. 49. 49. #unknownBytecode }.
{ 1. 50. 50. #unknownBytecode }.
{ 1. 51. 51. #unknownBytecode }.
{ 1. 52. 52. #unknownBytecode }.
{ 1. 53. 53. #unknownBytecode }.
{ 1. 54. 54. #unknownBytecode }.
{ 1. 55. 55. #unknownBytecode }.
{ 1. 56. 56. #unknownBytecode }.
{ 1. 57. 57. #unknownBytecode }.
{ 1. 58. 58. #unknownBytecode }.
{ 1. 59. 59. #unknownBytecode }.
{ 1. 60. 60. #unknownBytecode }.
{ 1. 61. 61. #unknownBytecode }.
{ 1. 62. 62. #unknownBytecode }.
{ 1. 63. 63. #unknownBytecode }.
{ 1. 64. 64. #gen_PushTemporaryVariableBytecode0.
#needsFrameIfMod16GENumArgs:. 1 }.
{ 1. 65. 65. #unknownBytecode }.
{ 1. 66. 66. #unknownBytecode }.
{ 1. 67. 67. #unknownBytecode }.
Expand All @@ -139,16 +111,19 @@ DruidJIT class >> bytecodeTable [
{ 1. 77. 77. #unknownBytecode }.
{ 1. 78. 78. #unknownBytecode }.
{ 1. 79. 79. #unknownBytecode }.
{ 1. 80. 80. #unknownBytecode }.
{ 1. 80. 80. #gen_PushConstantZeroBytecode.
#needsFrameNever:. 1 }.
{ 1. 81. 81. #unknownBytecode }.
{ 1. 82. 82. #unknownBytecode }.
{ 1. 83. 83. #unknownBytecode }.
{ 1. 84. 84. #unknownBytecode }.
{ 1. 85. 85. #unknownBytecode }.
{ 1. 86. 86. #unknownBytecode }.
{ 1. 87. 87. #unknownBytecode }.
{ 1. 88. 88. #unknownBytecode }.
{ 1. 89. 89. #unknownBytecode }.
{ 1. 88. 88. #gen_ReturnReceiver. #return. #isMappedInBlock.
#needsFrameIfInBlock:. 0 }.
{ 1. 89. 89. #gen_ReturnTrue. #return. #isMappedInBlock.
#needsFrameIfInBlock:. 0 }.
{ 1. 90. 90. #unknownBytecode }.
{ 1. 91. 91. #unknownBytecode }.
{ 1. 92. 92. #gen_ReturnTopFromMethod. #return. #isMappedInBlock.
Expand Down Expand Up @@ -1756,9 +1731,9 @@ DruidJIT >> gen_PrimitiveDivide [
self
DivR: ClassReg
R: TempReg
Quo: Extra0Reg
Rem: SendNumArgsReg.
self CmpCq: 0 R: SendNumArgsReg.
Quo: SendNumArgsReg
Rem: Extra0Reg.
self CmpCq: 0 R: Extra0Reg.
jump4 := self JumpNonZero: 0.
self
DivR: ClassReg
Expand Down Expand Up @@ -2190,21 +2165,22 @@ DruidJIT >> gen_PrimitiveNewWithArg [
self
DivR: Extra2Reg
R: SendNumArgsReg
Quo: SendNumArgsReg
Rem: Extra2Reg.
self MoveCq: 8 R: Extra2Reg.
self SubR: TempReg R: Extra2Reg.
self AndCq: 7 R: Extra2Reg.
self AddR: Extra2Reg R: ClassReg.
Quo: Extra2Reg
Rem: SendNumArgsReg.
self MoveCq: 8 R: SendNumArgsReg.
self SubR: TempReg R: SendNumArgsReg.
self AndCq: 7 R: SendNumArgsReg.
self AddR: SendNumArgsReg R: ClassReg.
self MoveR: Extra2Reg R: SendNumArgsReg.
jump9 := self Jump: 0.
currentBlock := self Label.
jump8 jmpTarget: currentBlock.
self MoveR: TempReg R: Extra2Reg.
self AddCq: 3 R: Extra2Reg.
self MoveCq: 4 R: SendNumArgsReg.
self MoveR: TempReg R: SendNumArgsReg.
self AddCq: 3 R: SendNumArgsReg.
self MoveCq: 4 R: Extra2Reg.
self
DivR: SendNumArgsReg
R: Extra2Reg
DivR: Extra2Reg
R: SendNumArgsReg
Quo: Extra2Reg
Rem: SendNumArgsReg.
self MoveCq: 4 R: SendNumArgsReg.
Expand Down Expand Up @@ -2521,6 +2497,15 @@ DruidJIT >> gen_PrimitiveSubtract [
^ CompletePrimitive
]

{ #category : #generated }
DruidJIT >> gen_PushConstantZeroBytecode [
"AutoGenerated by Druid"

| currentBlock |
self ssPushConstant: ConstZero.
^ 0
]

{ #category : #generated }
DruidJIT >> gen_PushLiteralConstantBytecode [
"AutoGenerated by Druid"
Expand Down Expand Up @@ -2996,6 +2981,17 @@ DruidJIT >> gen_PushReceiverBytecode [
^ 0
]

{ #category : #generated }
DruidJIT >> gen_PushReceiverVariableBytecode0 [
"AutoGenerated by Druid"

| currentBlock |
self ensureReceiverResultRegContainsSelf.
self MoveR: ReceiverResultReg R: TempReg.
self ssPushBase: TempReg offset: 8.
^ 0
]

{ #category : #generated }
DruidJIT >> gen_PushTemporaryVariableBytecode0 [
"AutoGenerated by Druid"
Expand Down Expand Up @@ -3024,7 +3020,18 @@ DruidJIT >> gen_ReturnTopFromMethod [

| currentBlock |
(self ssValue: 0) moveToReg: TempReg.
self ssTop popToReg: ReceiverResultReg.
self MoveR: TempReg R: ReceiverResultReg.
self genUpArrowReturn.
^ 0
]

{ #category : #generated }
DruidJIT >> gen_ReturnTrue [
"AutoGenerated by Druid"

| currentBlock |
self MoveCq: objectMemory trueObject R: TempReg.
self MoveR: TempReg R: ReceiverResultReg.
self genUpArrowReturn.
^ 0
]
Expand Down
1 change: 1 addition & 0 deletions smalltalksrc/VMMaker/StackInterpreter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -12638,6 +12638,7 @@ StackInterpreter >> pushReceiverVariable: fieldIndex [
{ #category : #'stack bytecodes' }
StackInterpreter >> pushReceiverVariableBytecode [
<expandCases>
<compilationInfo: #isInstVarRef>
<needsFrameNever: 1>
self
cCode: "this bytecode will be expanded so that refs to currentBytecode below will be constant"
Expand Down

0 comments on commit 662b123

Please sign in to comment.