On Fri, Jun 12, 2009 at 7:46 PM, Erik Corry<[email protected]> wrote: > 2009/6/12 Benno <[email protected]>: >> >> In follow up to my earlier post "Compile Errors" (sorry for such a >> crap subject), I have some others. Specifically there is a lot of code >> that calls the Operand method like so: >> >> Operand(0) >> >> Which produces the following: >> >> src/arm/codegen-arm.cc:4432: error: call of overloaded 'Operand(int)' >> is ambiguous >> src/arm/assembler-arm-inl.h:180: note: candidates are: >> v8::internal::Operand::Operand(v8::internal::Smi*) >> src/arm/assembler-arm.h:313: note: >> v8::internal::Operand::Operand >> (v8::internal::Handle<v8::internal::Object>) >> src/arm/assembler-arm-inl.h:173: note: >> v8::internal::Operand::Operand(v8::internal::Context**) >> src/arm/assembler-arm-inl.h:166: note: >> v8::internal::Operand::Operand(v8::internal::Object**) >> src/arm/assembler-arm-inl.h:152: note: >> v8::internal::Operand::Operand(const char*) >> src/arm/assembler-arm-inl.h:145: note: >> v8::internal::Operand::Operand(int32_t, v8::internal::RelocInfo::Mode) >> >> I'm guessing this is because '0' is special in C++ and can refer to a >> NULL pointer (I think, I'm not a C++ guru by any means!). >> >> I was able to fix this by explicitly casting: >> >> Operand((int32_t)0) >> >> Is there any problem with this? Should I create a patch for this >> change? > > Thanks for pointing out this problem. The annoying thing is that the > same code is generated so it doesn't matter which one gets called.
Got to love C++ ;) >We > don't use C-style casts in V8 so you would have to use one of the C++ > casts. It quickly gets ugly. Are there a lot of call sites involved? Yeah, something around 20-35 or so. I guess another option would be providing a constant for Operand(0) -- it is used quite often. Anyway, if someone lets me know the preferred approach I'm more than happy to put a patch together. Thanks, Benno --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
