88use PHPJava \Exceptions \AssembleStructureException ;
99use PHPJava \Kernel \Maps \OpCode ;
1010use PHPJava \Kernel \Maps \VerificationTypeTag ;
11+ use PHPJava \Kernel \Resolvers \TypeResolver ;
12+ use PHPJava \Kernel \Types \_Int ;
13+ use PHPJava \Kernel \Types \_Void ;
1114use PHPJava \Utilities \Formatter ;
1215
1316/**
@@ -35,7 +38,7 @@ public function getSignature(int $index): array
3538
3639 public function getClassName (): ?string
3740 {
38- return $ this ->getSignature (2 )[0 ]['class_name ' ] ?? null ;
41+ return $ this ->getSignature (2 )[0 ]['type ' ] ?? null ;
3942 }
4043
4144 public function getReturnType (): ?string
@@ -45,26 +48,27 @@ public function getReturnType(): ?string
4548
4649 public function pushToOperandStackByType (string $ type , string $ className = null ): void
4750 {
51+ if (!TypeResolver ::isPrimitive ($ type )) {
52+ $ this ->accumulator ->pushToOperandStack (
53+ [
54+ VerificationTypeTag::ITEM_Object,
55+ $ this ->getEnhancedConstantPool ()
56+ ->findClass ($ className ),
57+ ]
58+ );
59+ return ;
60+ }
4861 // TODO: Rename parseSignature
4962 switch ($ type ) {
50- case ' void ' :
63+ case _Void::class :
5164 break ;
52- case ' int ' :
65+ case _Int::class :
5366 $ this ->accumulator ->pushToOperandStack (
5467 [
5568 VerificationTypeTag::ITEM_Integer,
5669 ]
5770 );
5871 break ;
59- case 'class ' :
60- $ this ->accumulator ->pushToOperandStack (
61- [
62- VerificationTypeTag::ITEM_Object,
63- $ this ->getEnhancedConstantPool ()
64- ->findClass ($ className ),
65- ]
66- );
67- break ;
6872 default :
6973 throw new AssembleStructureException (
7074 'Invalid signature type: ' . $ this ->getReturnType ()
0 commit comments