Here are some comments.

http://codereview.chromium.org/619005/diff/1/3
File src/conversions.cc (left):

http://codereview.chromium.org/619005/diff/1/3#oldcode684
src/conversions.cc:684: // efficiently, we probably have to modify dtoa.
Could you quickly do a check if you are generating 3 0s or 3 9s in a
row, and only then check to see if you should truncate them?

http://codereview.chromium.org/619005/diff/1/7
File src/diy_fp.h (right):

http://codereview.chromium.org/619005/diff/1/7#newcode63
src/diy_fp.h:63: }
How about a private constructor DiyFp(a, b) f_(a.f - b.f), e_(a.e_) {
ASSERT ...   }
Could this be more efficient?  Then Minus(a, b) { return DiyFp(a,b); }

http://codereview.chromium.org/619005/diff/1/7#newcode85
src/diy_fp.h:85: }
Can we do an assembly language version for ia32, and keep the portable
version for all other platforms?  Then we have 80-bit FP in hardware.

http://codereview.chromium.org/619005/diff/1/7#newcode97
src/diy_fp.h:97:
Could you add a
while (!(f & top12bits)) {
f <<= 12;
e -= 12;
}, for example, to speed up the loop?

http://codereview.chromium.org/619005/diff/1/8
File src/double.h (right):

http://codereview.chromium.org/619005/diff/1/8#newcode46
src/double.h:46: converter_t tmp; tmp.d = d; return tmp.n;
If this was done with a reference, or a macro, could it be done in-place
(ie
#define DOUBLE_TO_UINT64(d)  \
          reinterpret_cast<converter_t *>(& (d))->n

or inline uint_64t& double_to_uint(double &d){
return reinterpret_cast<converter_t *>(& (d))->n;
}

Or is this unsave due to the spec and pointer aliasing optimizations?

http://codereview.chromium.org/619005/diff/1/8#newcode58
src/double.h:58: Double() : d_(0.0) {}
Would all the methods work faster if d64_ was a uint64_t, and the
constructor was Double(double d) : d64_(double_to_uint64(d)) {}?

http://codereview.chromium.org/619005/diff/1/4
File src/grisu3.cc (right):

http://codereview.chromium.org/619005/diff/1/4#newcode322
src/grisu3.cc:322: //      fractionals.f >>= 1; fractionals.e++; //
idempotent
idempotent means if you do something more than once, the result is the
same as if you do it only once.  I think you mean "leaves value
unchanged".

http://codereview.chromium.org/619005/diff/1/9
File src/powers_ten.h (right):

http://codereview.chromium.org/619005/diff/1/9#newcode41
src/powers_ten.h:41: GRISU_UINT64_C(0xbf29dcab,a82fdeae) ,
GRISU_UINT64_C(0xeef453d6,923bd65a) ,
GRISU_UINT64_C(0x9558b466,1b6565f8) ,
GRISU_UINT64_C(0xbaaee17f,a23ebf76) ,
GRISU_UINT64_C(0xe95a99df,8ace6f54) ,
GRISU_UINT64_C(0x91d8a02b,b6c10594) ,
GRISU_UINT64_C(0xb64ec836,a47146fa) ,
GRISU_UINT64_C(0xe3e27a44,4d8d98b8) ,
GRISU_UINT64_C(0x8e6d8c6a,b0787f73) ,
GRISU_UINT64_C(0xb208ef85,5c969f50) ,
GRISU_UINT64_C(0xde8b2b66,b3bc4724) ,
GRISU_UINT64_C(0x8b16fb20,3055ac76) ,
GRISU_UINT64_C(0xaddcb9e8,3c6b1794) ,
GRISU_UINT64_C(0xd953e862,4b85dd79) ,
GRISU_UINT64_C(0x87d4713d,6f33aa6c) ,
GRISU_UINT64_C(0xa9c98d8c,cb009506) ,
GRISU_UINT64_C(0xd43bf0ef,fdc0ba48) ,
GRISU_UINT64_C(0x84a57695,fe98746d) ,
GRISU_UINT64_C(0xa5ced43b,7e3e9188) ,
GRISU_UINT64_C(0xcf42894a,5dce35ea) ,
GRISU_UINT64_C(0x818995ce,7aa0e1b2) ,
GRISU_UINT64_C(0xa1ebfb42,19491a1f) ,
GRISU_UINT64_C(0xca66fa12,9f9b60a7) ,
GRISU_UINT64_C(0xfd00b897,478238d1) ,
GRISU_UINT64_C(0x9e20735e,8cb16382) ,
GRISU_UINT64_C(0xc5a89036,2fddbc63) ,
GRISU_UINT64_C(0xf712b443,bbd52b7c) ,
GRISU_UINT64_C(0x9a6bb0aa,55653b2d) ,
GRISU_UINT64_C(0xc1069cd4,eabe89f9) ,
GRISU_UINT64_C(0xf148440a,256e2c77) ,
GRISU_UINT64_C(0x96cd2a86,5764dbca) ,
GRISU_UINT64_C(0xbc807527,ed3e12bd) ,
GRISU_UINT64_C(0xeba09271,e88d976c) ,
GRISU_UINT64_C(0x93445b87,31587ea3) ,
GRISU_UINT64_C(0xb8157268,fdae9e4c) ,
GRISU_UINT64_C(0xe61acf03,3d1a45df) ,
GRISU_UINT64_C(0x8fd0c162,06306bac) ,
GRISU_UINT64_C(0xb3c4f1ba,87bc8697) ,
GRISU_UINT64_C(0xe0b62e29,29aba83c) ,
GRISU_UINT64_C(0x8c71dcd9,ba0b4926) ,
GRISU_UINT64_C(0xaf8e5410,288e1b6f) ,
GRISU_UINT64_C(0xdb71e914,32b1a24b) ,
GRISU_UINT64_C(0x892731ac,9faf056f) ,
GRISU_UINT64_C(0xab70fe17,c79ac6ca) ,
GRISU_UINT64_C(0xd64d3d9d,b981787d) ,
GRISU_UINT64_C(0x85f04682,93f0eb4e) ,
GRISU_UINT64_C(0xa76c5823,38ed2622) ,
GRISU_UINT64_C(0xd1476e2c,07286faa) ,
GRISU_UINT64_C(0x82cca4db,847945ca) ,
GRISU_UINT64_C(0xa37fce12,6597973d) ,
GRISU_UINT64_C(0xcc5fc196,fefd7d0c) ,
GRISU_UINT64_C(0xff77b1fc,bebcdc4f) ,
GRISU_UINT64_C(0x9faacf3d,f73609b1) ,
GRISU_UINT64_C(0xc795830d,75038c1e) ,
GRISU_UINT64_C(0xf97ae3d0,d2446f25) ,
GRISU_UINT64_C(0x9becce62,836ac577) ,
GRISU_UINT64_C(0xc2e801fb,244576d5) ,
GRISU_UINT64_C(0xf3a20279,ed56d48a) ,
GRISU_UINT64_C(0x9845418c,345644d7) ,
GRISU_UINT64_C(0xbe5691ef,416bd60c) ,
GRISU_UINT64_C(0xedec366b,11c6cb8f) ,
GRISU_UINT64_C(0x94b3a202,eb1c3f39) ,
GRISU_UINT64_C(0xb9e08a83,a5e34f08) ,
GRISU_UINT64_C(0xe858ad24,8f5c22ca) ,
GRISU_UINT64_C(0x91376c36,d99995be) ,
GRISU_UINT64_C(0xb5854744,8ffffb2e) ,
Could this be formatted into 80-character lines?

http://codereview.chromium.org/619005

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to