ictvmt / mvp4g

Automatically exported from code.google.com/p/mvp4g
0 stars 0 forks source link

Limit of events in event bus #38

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
I think there is a limit of events in event bus.
Inside a temporary file generated by mvp4g, in section:
eventBus = new AbstractEventBus(){
    // event's invocations
}

I've got an error:
"Too many synthetic parameters, emulated parameter val$parameter_name is 
exceeding the limit of 255 words eligible for method parameters"

Is there any workaround to solve this issue without dividing my module into 
submodules?

Original issue reported on code.google.com by michal.k...@gmail.com on 18 Aug 2010 at 6:21

GoogleCodeExporter commented 8 years ago
Could you post the line generated by Mvp4g that creates this error? Do you have 
a method with a lot of parameters?

Original comment by plcoir...@gmail.com on 18 Aug 2010 at 10:23

GoogleCodeExporter commented 8 years ago
I have an event bus with a lot of events

When I run my application in hosted mode, on my developer's console I've got 
error:
[ERROR] Errors in 
'generated://B098917E78CA07F533B9EE7BC2A89A62/com/mvp4g/client/Mvp4gModuleImpl.j
ava'
[ERROR] Line 1554: Too many synthetic parameters, emulated parameter 
val$userShowPresenter is exceeding the limit of 255 words eligible for method 
parameters

The "val$userShowPresenter" parameter is the first event's invocation in event 
bus, which exceeds the limit of 255 parameters.

Original comment by michal.k...@gmail.com on 20 Aug 2010 at 7:07

GoogleCodeExporter commented 8 years ago
How many events do you have? At work, I have an event bus with 50-100 events 
and it works fine. Could you send me the Mvp4gModuleImpl file that is generated?

Thanks

Original comment by plcoir...@gmail.com on 23 Aug 2010 at 7:13

GoogleCodeExporter commented 8 years ago
You're right, when you have less than 255 events in eventBus everything works 
fine. Try to build an eventBus with more than 255 events.

Original comment by michal.k...@gmail.com on 25 Aug 2010 at 7:27

GoogleCodeExporter commented 8 years ago
Does this mean, that one eventBus can not have more than 255 events or the hole 
application with all modules?

At the moment I am developing an application that will have more than 255 
Events in the main module. Then every module will have 5 - 10 Events. 

Can this issue solved? Or do I have to reduce the number of events? It's 
possible, but than I have to generialze the events and every presenter has to 
check this events. Not nice. 

Original comment by frank.hossfeld on 25 Aug 2010 at 10:55

GoogleCodeExporter commented 8 years ago
I've tested it on one-module application with one event bus. I think the limit 
relates only to event bus. One of the solution is to divide entire application 
into submodules with "smaller" event buses. But I would like to avoid this...

Original comment by michal.k...@gmail.com on 25 Aug 2010 at 12:00

GoogleCodeExporter commented 8 years ago
I "google" a little bit, search for "is exceeding the limit of 255 words 
eligible for method parameters" and found this:

"Well you're breaking the VM specification, section 4.10:

    The number of method parameters is limited to 255 by the definition of a method descriptor (§4.3.3), where the limit includes one unit for this in the case of instance or interface method invocations. Note that a method descriptor is defined in terms of a notion of method parameter length in which a parameter of type long or double contributes two units to the length, so parameters of these types further reduce the limit.

I suggest you overcome the obstacles in changing the generated code... I'm 
pretty surprised it works on Linux, to be honest. I wouldn't be entirely 
surprised if the bytecode it generated was strictly invalid, and it just 
happens to be working for you at the moment.

While it's always tempting to try to find ways of keeping with the existing 
code and ignoring the limits, I think in this case you should turn your 
attention to reducing the number of parameters immediately."

(found at stackoverflow)

May be, that's the problem.

It seems, that this problem only happens when working with Windows. The Authors 
wrote, that it not happen on Linux.

Original comment by frank.hossfeld on 25 Aug 2010 at 12:13

GoogleCodeExporter commented 8 years ago
It seems they refer to the number of parameters but not the number of methods. 
Mvp4g creates a new method for each event but there is not a method where a 
parameter is added for each event. I'm going to look into it to have a better 
idea where the problem can come from.

Original comment by plcoir...@gmail.com on 25 Aug 2010 at 1:20

GoogleCodeExporter commented 8 years ago
I created a simple project with 300 events (each event having one parameter, a 
string, and one handler) and it worked fine. I attached this project.

Could it be a configuration problem? I'm using GWT 2.0.4, Jdk 1.6.0_18 & Window 
7. Would you mind trying the project I attached (it's an eclipse, you can just 
import it and run it right away) and let me know if you have the same error?

Thanks,
Pierre 

Original comment by plcoir...@gmail.com on 25 Aug 2010 at 10:09

Attachments:

GoogleCodeExporter commented 8 years ago
I checked the project and had no problems. (OS X 10.6.4, JDK 1.6, GWT 2.1M2). 
Michal's problems is not related to mvp4g. That's good news! 
Thx,
Frank

Original comment by frank.hossfeld on 26 Aug 2010 at 5:59

GoogleCodeExporter commented 8 years ago
I tested the project too and it works for me in production mode as well as in 
dev mode. I will be searching a reason of problem in my local configuration. 

Thank you very much for help!

Original comment by michal.k...@gmail.com on 31 Aug 2010 at 7:32

GoogleCodeExporter commented 8 years ago
Thank you both for the validation

Original comment by plcoir...@gmail.com on 1 Sep 2010 at 1:45

GoogleCodeExporter commented 8 years ago
I'm closing this bug since we couldn't reproduce it with a basic example but 
let me know if the error you have could come from Mvp4g. Thanks

Original comment by plcoir...@gmail.com on 13 Sep 2010 at 5:12