首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整数移位的Dartium崩溃

整数移位的Dartium崩溃
EN

Stack Overflow用户
提问于 2014-02-07 14:05:20
回答 1查看 68关注 0票数 1

我为我的应用程序计算随机颜色。他们是rgba格式,我已经测试了各种版本的着色。现在,我想要完全不透明的立方体,但由于这可能会改变,我已经实现了这样的着色:

代码语言:javascript
复制
          int r = rnd.nextInt(255);
          int g = rnd.nextInt(255);
          int b = rnd.nextInt(255);
          int a = 255;
          int color = (r & 0xFF) | ((g & 0xFF) << 8) | ((b & 0xFF) << 16) | ((a & 0xFF) << 24);

现在,该代码将被重复大约。13,000立方体或者我不得不说会是。因为dartium崩溃了(‘噢,砰!显示这个网页时出了点问题。’)。为了“wtf”,如果我在a = 255;上设置了一个断点,并且在继续删除该断点之前,它会正常工作并显示正确。我必须说,现在要准确定位问题,我根本不使用颜色,它只是作为一个参数传递给另一个不使用它的函数。如果我不把它传递给函数,就不会有崩溃,我猜是因为它被完全优化了。

好吧,为了让事情变得更奇怪,下面这句话起作用了:

代码语言:javascript
复制
int color = (r & 0xFF) | ((g & 0xFF) << 8) | ((b & 0xFF) << 16) | 0xFF000000;

严格来说应该是一样的。甚至进一步的测试都得到了以下结果:如果a < 64在第一个版本->中没有崩溃。如果a >= 64 ->崩溃。

为了完成混淆:int a = rnd.nextInt(255);给出了值>= 64,每次都与第一个版本一起工作。

/EDIT:和另一个不会崩溃的版本:

代码语言:javascript
复制
          int r = rnd.nextInt(255);
          int g = rnd.nextInt(255);
          int b = rnd.nextInt(255);
          int a = 0xFF.toInt();
          int color = (r & 0xFF) | ((g & 0xFF) << 8) | ((b & 0xFF) << 16) | ((a & 0xFF) << 24);

/EDIT2:我在这个项目上打开了一个问题,为了保持同步,下面是链接:https://code.google.com/p/dart/issues/detail?id=16633

我只是没有看到什么,还是这是不想要的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-07 18:32:58

这看起来像一个VM错误。

如果问题仍然存在,请用最新版本进行验证,否则请提交一个错误(http://dartbug.com/new)。

谢谢!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21629787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档