Permalink
Browse files

Merge remote-tracking branch 'origin/master' into compiler

Conflicts:
	rakelib/blueprint.rb
  • Loading branch information...
2 parents f7b40e2 + 957a91b commit f15a614d25d27efa4c76c957d02ca05070147121 @brixen brixen committed Aug 3, 2013
Showing with 6,525 additions and 25,278 deletions.
  1. +29 −0 benchmark/library/openssl/bench_hexdigest.rb
  2. +0 −25 benchmark/library/openssl/digest.rb
  3. +3 −3 kernel/common/dir_glob.rb
  4. +1 −0 kernel/common/module.rb
  5. +13 −11 kernel/common/process21.rb
  6. +5 −5 rakelib/blueprint.rb
  7. +31 −0 spec/core/module/set_class_visibility_spec.rb
  8. +27 −0 spec/core/module/set_visibility_spec.rb
  9. +23 −0 spec/core/module/thunk_method_spec.rb
  10. +4 −0 spec/ruby/core/dir/glob_spec.rb
  11. +2 −0 spec/tags/18/ruby/core/float/to_s_tags.txt
  12. +0 −2 spec/tags/19/ruby/core/float/to_s_tags.txt
  13. +0 −2 spec/tags/20/ruby/core/float/to_s_tags.txt
  14. +2 −0 vendor/double-conversion/.gitignore
  15. +12 −0 vendor/double-conversion/AUTHORS
  16. +26 −0 vendor/double-conversion/COPYING
  17. +11 −0 vendor/double-conversion/Changelog
  18. +26 −0 vendor/double-conversion/LICENSE
  19. +20 −0 vendor/double-conversion/Makefile
  20. +11 −0 vendor/double-conversion/README
  21. +640 −0 vendor/double-conversion/src/bignum-dtoa.cc
  22. +84 −0 vendor/double-conversion/src/bignum-dtoa.h
  23. +764 −0 vendor/double-conversion/src/bignum.cc
  24. +145 −0 vendor/double-conversion/src/bignum.h
  25. +175 −0 vendor/double-conversion/src/cached-powers.cc
  26. +64 −0 vendor/double-conversion/src/cached-powers.h
  27. +57 −0 vendor/double-conversion/src/diy-fp.cc
  28. +118 −0 vendor/double-conversion/src/diy-fp.h
  29. +899 −0 vendor/double-conversion/src/double-conversion.cc
  30. +536 −0 vendor/double-conversion/src/double-conversion.h
  31. +664 −0 vendor/double-conversion/src/fast-dtoa.cc
  32. +88 −0 vendor/double-conversion/src/fast-dtoa.h
  33. +402 −0 vendor/double-conversion/src/fixed-dtoa.cc
  34. +56 −0 vendor/double-conversion/src/fixed-dtoa.h
  35. +398 −0 vendor/double-conversion/src/ieee.h
  36. +554 −0 vendor/double-conversion/src/strtod.cc
  37. +45 −0 vendor/double-conversion/src/strtod.h
  38. +309 −0 vendor/double-conversion/src/utils.h
  39. +0 −4 vendor/libgdtoa/.gitignore
  40. +0 −135 vendor/libgdtoa/Makefile
  41. +0 −336 vendor/libgdtoa/README
  42. +0 −183 vendor/libgdtoa/arithchk.c
  43. +0 −216 vendor/libgdtoa/dmisc.c
  44. +0 −753 vendor/libgdtoa/dtoa.c
  45. +0 −114 vendor/libgdtoa/g_Qfmt.c
  46. +0 −109 vendor/libgdtoa/g__fmt.c
  47. +0 −154 vendor/libgdtoa/g_ddfmt.c
  48. +0 −101 vendor/libgdtoa/g_dfmt.c
  49. +0 −88 vendor/libgdtoa/g_ffmt.c
  50. +0 −108 vendor/libgdtoa/g_xLfmt.c
  51. +0 −114 vendor/libgdtoa/g_xfmt.c
  52. +0 −758 vendor/libgdtoa/gdtoa.c
  53. +0 −153 vendor/libgdtoa/gdtoa.h
  54. +0 −687 vendor/libgdtoa/gdtoaimp.h
  55. +0 −247 vendor/libgdtoa/gethex.c
  56. +0 −86 vendor/libgdtoa/gmisc.c
  57. +0 −55 vendor/libgdtoa/hd_init.c
  58. +0 −131 vendor/libgdtoa/hexnan.c
  59. +0 −866 vendor/libgdtoa/misc.c
  60. +0 −111 vendor/libgdtoa/qnan.c
  61. +0 −191 vendor/libgdtoa/smisc.c
  62. +0 −63 vendor/libgdtoa/strtoIQ.c
  63. +0 −60 vendor/libgdtoa/strtoId.c
  64. +0 −66 vendor/libgdtoa/strtoIdd.c
  65. +0 −58 vendor/libgdtoa/strtoIf.c
  66. +0 −133 vendor/libgdtoa/strtoIg.c
  67. +0 −64 vendor/libgdtoa/strtoIx.c
  68. +0 −62 vendor/libgdtoa/strtoIxL.c
  69. +0 −982 vendor/libgdtoa/strtod.c
  70. +0 −167 vendor/libgdtoa/strtodI.c
  71. +0 −1,012 vendor/libgdtoa/strtodg.c
  72. +0 −87 vendor/libgdtoa/strtodnrp.c
  73. +0 −73 vendor/libgdtoa/strtof.c
  74. +0 −101 vendor/libgdtoa/strtopQ.c
  75. +0 −49 vendor/libgdtoa/strtopd.c
  76. +0 −178 vendor/libgdtoa/strtopdd.c
  77. +0 −73 vendor/libgdtoa/strtopf.c
  78. +0 −103 vendor/libgdtoa/strtopx.c
  79. +0 −91 vendor/libgdtoa/strtopxL.c
  80. +0 −117 vendor/libgdtoa/strtorQ.c
  81. +0 −93 vendor/libgdtoa/strtord.c
  82. +0 −199 vendor/libgdtoa/strtordd.c
  83. +0 −89 vendor/libgdtoa/strtorf.c
  84. +0 −119 vendor/libgdtoa/strtorx.c
  85. +0 −107 vendor/libgdtoa/strtorxL.c
  86. +0 −98 vendor/libgdtoa/sum.c
  87. +0 −1,180 vendor/libgdtoa/test/Q.ou0
  88. +0 −1,468 vendor/libgdtoa/test/Q.ou1
  89. +0 −173 vendor/libgdtoa/test/Qtest.c
  90. +0 −61 vendor/libgdtoa/test/README
  91. +0 −986 vendor/libgdtoa/test/d.out
  92. +0 −168 vendor/libgdtoa/test/dI.out
  93. +0 −168 vendor/libgdtoa/test/dIsi.out
  94. +0 −82 vendor/libgdtoa/test/dItest.c
  95. +0 −1,356 vendor/libgdtoa/test/dd.out
  96. +0 −376 vendor/libgdtoa/test/ddsi.out
  97. +0 −177 vendor/libgdtoa/test/ddtest.c
  98. +0 −277 vendor/libgdtoa/test/dt.c
  99. +0 −139 vendor/libgdtoa/test/dtest.c
  100. +0 −684 vendor/libgdtoa/test/dtst.out
  101. +0 −968 vendor/libgdtoa/test/f.out
  102. +0 −140 vendor/libgdtoa/test/ftest.c
  103. +0 −62 vendor/libgdtoa/test/getround.c
  104. +0 −150 vendor/libgdtoa/test/makefile
  105. +0 −76 vendor/libgdtoa/test/rtestnos
  106. +0 −2 vendor/libgdtoa/test/strtoIdSI.c
  107. +0 −2 vendor/libgdtoa/test/strtoIddSI.c
  108. +0 −2 vendor/libgdtoa/test/strtodISI.c
  109. +0 −136 vendor/libgdtoa/test/strtodt.c
  110. +0 −2 vendor/libgdtoa/test/strtopddSI.c
  111. +0 −2 vendor/libgdtoa/test/strtorddSI.c
  112. +0 −28 vendor/libgdtoa/test/testnos
  113. +0 −20 vendor/libgdtoa/test/testnos1
  114. +0 −328 vendor/libgdtoa/test/testnos3
  115. +0 −1,182 vendor/libgdtoa/test/x.ou0
  116. +0 −1,460 vendor/libgdtoa/test/x.ou1
  117. +0 −1,182 vendor/libgdtoa/test/xL.ou0
  118. +0 −1,462 vendor/libgdtoa/test/xL.ou1
  119. +0 −169 vendor/libgdtoa/test/xLtest.c
  120. +0 −46 vendor/libgdtoa/test/xQtest.c
  121. +0 −35 vendor/libgdtoa/test/xsum0.out
  122. +0 −170 vendor/libgdtoa/test/xtest.c
  123. +0 −70 vendor/libgdtoa/ulp.c
  124. +0 −48 vendor/libgdtoa/xsum0.out
  125. +1 −1 vm/builtin/block_environment.cpp
  126. +1 −1 vm/builtin/encoding.cpp
  127. +64 −23 vm/builtin/float.cpp
  128. +4 −0 vm/builtin/float.hpp
  129. +4 −2 vm/builtin/io.cpp
  130. +6 −6 vm/builtin/lookuptable.cpp
  131. +1 −1 vm/builtin/nativefunction.cpp
  132. +18 −19 vm/builtin/nativemethod.cpp
  133. +4 −2 vm/builtin/nativemethod.hpp
  134. +1 −1 vm/builtin/object.cpp
  135. +2 −2 vm/builtin/packed_object.cpp
  136. +18 −19 vm/builtin/regexp.cpp
  137. +36 −35 vm/builtin/regexp.hpp
  138. +1 −1 vm/builtin/string.cpp
  139. +2 −22 vm/capi/numeric.cpp
  140. +2 −2 vm/capi/object.cpp
  141. +1 −1 vm/capi/thread.cpp
  142. +6 −6 vm/codegen/field_extract.rb
  143. +3 −3 vm/gc/finalize.cpp
  144. 0 vm/gc/immixc
  145. +2 −2 vm/gc/inflated_headers.cpp
  146. +3 −5 vm/gc/inflated_headers.hpp
  147. +1 −1 vm/instructions.def
  148. +3 −3 vm/llvm/jit_visit.hpp
  149. +4 −0 vm/llvm/passes.cpp
  150. +9 −2 vm/marshal.cpp
  151. +11 −11 vm/objectmemory.cpp
  152. +2 −2 vm/ontology.cpp
  153. +4 −0 vm/oop.hpp
  154. +2 −2 vm/shared_state.cpp
  155. +1 −1 vm/symboltable.cpp
  156. +1 −1 vm/symboltable.hpp
  157. +5 −5 vm/test/test_bytearray.hpp
  158. +1 −1 vm/test/test_dir.hpp
  159. +1 −1 vm/test/test_io.hpp
  160. +7 −8 vm/test/test_lookuptable.hpp
  161. +4 −3 vm/test/test_nativemethod.hpp
  162. +2 −2 vm/test/test_object.hpp
  163. +25 −32 vm/test/test_objectmemory.hpp
  164. +3 −3 vm/test/test_ontology.hpp
  165. +5 −5 vm/test/test_regexp.hpp
  166. +2 −6 vm/test/test_string.hpp
  167. +6 −6 vm/util/time64.c
  168. +2 −0 vm/vm.hpp
@@ -0,0 +1,29 @@
+require 'digest/sha1'
+require 'openssl'
+require 'openssl/digest'
+require 'benchmark'
+require 'benchmark/ips'
+
+input = 'hello, world!' * 100
+
+Benchmark.ips do |bench|
+ bench.report 'Digest SHA1' do |times|
+ digest = Digest::SHA1.new
+ i = 0
+
+ while i < times
+ digest.hexdigest(input)
+ i += 1
+ end
+ end
+
+ bench.report 'OpenSSL SHA1' do |times|
+ digest = OpenSSL::Digest::SHA1.new
+ i = 0
+
+ while i < times
+ digest.hexdigest(input)
+ i += 1
+ end
+ end
+end
@@ -1,25 +0,0 @@
-require 'digest/sha1'
-require 'openssl'
-require 'openssl/digest'
-require 'benchmark'
-
-amount = 1_000_000
-input = 'hello, world!'
-
-Benchmark.bmbm(40) do |bench|
- bench.report 'Digest::SHA1' do
- digest = Digest::SHA1.new
-
- amount.times do
- digest.hexdigest(input)
- end
- end
-
- bench.report 'OpenSSL::Digest::SHA1' do
- digest = OpenSSL::Digest::SHA1.new
-
- amount.times do
- digest.hexdigest(input)
- end
- end
-end
@@ -66,7 +66,7 @@ def call(env, start)
return unless File.exists? start
# Even though the recursive entry is zero width
- # in this case, it's left seperator is still the
+ # in this case, its left separator is still the
# dominant one, so we fix things up to use it.
switched = @next.dup
switched.separator = @separator
@@ -104,7 +104,7 @@ def call(env, start)
raise "invalid usage" if start
# Even though the recursive entry is zero width
- # in this case, it's left seperator is still the
+ # in this case, its left separator is still the
# dominant one, so we fix things up to use it.
if @separator
switched = @next.dup
@@ -151,7 +151,7 @@ def call(env, start)
class Match < Node
def initialize(nxt, flags, glob)
super nxt, flags
- @glob = glob
+ @glob = glob || ""
end
def match?(str)
@@ -373,6 +373,7 @@ def set_visibility(meth, vis, where=nil)
def set_class_visibility(meth, vis)
Rubinius::Type.object_singleton_class(self).set_visibility meth, vis, "class "
end
+ private :set_class_visibility
def protected(*args)
if args.empty?
@@ -218,6 +218,8 @@ def self.setup_redirects(redirects)
key.reopen(File.open(file, mode_string, perms))
else
val = fd_to_io(val)
+ val.close_on_exec = false
+ val.autoclose = false
key.reopen(val)
end
end
@@ -238,11 +240,20 @@ def self.setup_options(options)
if umask = options[:umask]
File.umask(umask)
end
+
+ unless options[:close_others] == false
+ 3.upto(IO.max_open_fd).each do |fd|
+ begin
+ IO.for_fd(fd, :autoclose => false).close_on_exec = true
+ rescue Errno::EBADF
+ end
+ end
+ end
end
def self.exec(env, prog, argv, redirects, options)
- setup_redirects(redirects)
setup_options(options)
+ setup_redirects(redirects)
ENV.update(env)
Process.perform_exec prog, argv
end
@@ -285,18 +296,9 @@ def self.exec(*args)
def self.spawn(*args)
env, prog, argv, redirects, options = Rubinius::Spawn.extract_arguments(*args)
- unless options[:close_others] == false
- 3.upto(IO.max_open_fd).each do |fd|
- begin
- IO.for_fd(fd, :autoclose => false).close_on_exec = true
- rescue Errno::EBADF
- end
- end
- end
-
IO.pipe do |read, write|
pid = Process.fork do
- read.close
+ read.close_on_exec = true
write.close_on_exec = true
begin
View
@@ -116,15 +116,15 @@
end
files << oniguruma
- gdtoa = i.external_lib "vendor/libgdtoa" do |l|
- l.cflags = ["-I#{src}/vendor/libgdtoa"] + gcc.cflags
- l.objects = [l.file("libgdtoa.a")]
+ double_conversion = i.external_lib "vendor/double-conversion" do |l|
+ l.cflags = ["-Ivendor/double-conversion/src"] + gcc.cflags
+ l.objects = [l.file("libdoubleconversion.a")]
l.to_build do |x|
x.command make
end
end
- gcc.add_library gdtoa
- files << gdtoa
+ gcc.add_library double_conversion
+ files << double_conversion
ffi = i.external_lib "vendor/libffi" do |l|
l.cflags = ["-I#{src}/vendor/libffi/include"] + gcc.cflags
@@ -0,0 +1,31 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+
+describe "Module#set_class_visibility" do
+ before :each do
+ @module = Module.new { def self.public_method; end }
+ end
+
+ it "is a private method" do
+ Module.should have_private_instance_method(:set_class_visibility, false)
+ end
+
+ it "modifies class method visibility" do
+ @module.send :set_class_visibility, :public_method, :protected
+ @module.protected_methods(false).should include(stasy(:public_method))
+
+ @module.send :set_class_visibility, :public_method, :private
+ @module.should have_private_method(:public_method, false)
+
+ @module.send :set_class_visibility, :public_method, :public
+ @module.public_methods(false).should include(stasy(:public_method))
+ end
+
+ it "accepts a String name as Symbol" do
+ @module.send :set_class_visibility, "public_method", :private
+ @module.should have_private_method(:public_method, false)
+ end
+
+ it "returns the coerced name" do
+ @module.send(:set_class_visibility, "public_method", :private).should equal(:public_method)
+ end
+end
@@ -0,0 +1,27 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+
+describe "Module#set_visibility" do
+ before :each do
+ @module = Module.new { def public_method; end }
+ end
+
+ it "modifies instance method visibility" do
+ @module.set_visibility :public_method, :protected
+ @module.should have_protected_instance_method(:public_method, false)
+
+ @module.set_visibility :public_method, :private
+ @module.should have_private_instance_method(:public_method, false)
+
+ @module.set_visibility :public_method, :public
+ @module.should have_public_instance_method(:public_method, false)
+ end
+
+ it "accepts a String name as Symbol" do
+ @module.set_visibility "public_method", :private
+ @module.should have_private_instance_method(:public_method, false)
+ end
+
+ it "returns the coerced name" do
+ @module.set_visibility("public_method", :private).should equal(:public_method)
+ end
+end
@@ -0,0 +1,23 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+
+describe "Module#thunk_method" do
+ before :each do
+ @class = Class.new
+ @value = Object.new
+ end
+
+ it "defines a reader method that always returns same value" do
+ @class.thunk_method :a_reader, @value
+ @class.new.a_reader.should equal(@value)
+ @class.new.a_reader.should equal(@value)
+ end
+
+ it "accepts a String name as Symbol" do
+ @class.thunk_method "a_reader", @value
+ @class.new.a_reader.should equal(@value)
+ end
+
+ it "returns the coerced name" do
+ @class.thunk_method("a_reader", @value).should equal(:a_reader)
+ end
+end
@@ -121,6 +121,10 @@
Dir.glob("spec/**/*.rb").should == []
end
+ it "matches nothing when given an empty list of paths" do
+ Dir.glob('{}').should == []
+ end
+
platform_is_not(:windows) do
it "matches the literal character '\\' with option File::FNM_NOESCAPE" do
Dir.mkdir 'foo?bar'
@@ -0,0 +1,2 @@
+fails:Float#to_s uses e format for a positive value with whole part having 16 significant figures
+fails:Float#to_s uses e format for a negative value with whole part having 16 significant figures
@@ -1,4 +1,2 @@
fails:Float#to_s uses non-e format for a positive value with whole part having 17 significant figures
fails:Float#to_s uses non-e format for a negative value with whole part having 17 significant figures
-fails:Float#to_s uses non-e format for a positive value with whole part having 16 significant figures
-fails:Float#to_s uses non-e format for a negative value with whole part having 16 significant figures
@@ -1,2 +0,0 @@
-fails:Float#to_s uses non-e format for a positive value with whole part having 16 significant figures
-fails:Float#to_s uses non-e format for a negative value with whole part having 16 significant figures
@@ -0,0 +1,2 @@
+*.o
+*.a
@@ -0,0 +1,12 @@
+# Below is a list of people and organizations that have contributed
+# to the double-conversion project. Names should be added to the
+# list like so:
+#
+# Name/Organization <email address>
+
+Google Inc.
+Mozilla Foundation
+
+Jeff Muizelaar <jmuizelaar@mozilla.com>
+Mike Hommey <mhommey@mozilla.com>
+Martin Olsson <mnemo@minimum.se>
@@ -0,0 +1,26 @@
+Copyright 2006-2011, the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,11 @@
+2012-06-10:
+ Tagged v1.1.1.
+ Null terminate exponent buffer (only an issue when asserts are enabled).
+ Support more architectures.
+
+2012-02-05:
+ Merged in Single-branch with single-precision support.
+ Tagged v1.1 (based on b28450f33e1db493948a535d8f84e88fa211bd10).
+
+2012-02-05:
+ Tagged v1.0 (based on eda0196e9ac8fcdf59e92cb62885ee0af5391969).
@@ -0,0 +1,26 @@
+Copyright 2006-2011, the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,20 @@
+SRCS = src/bignum-dtoa.cc src/bignum.cc src/cached-powers.cc src/diy-fp.cc src/double-conversion.cc src/fast-dtoa.cc src/fixed-dtoa.cc src/strtod.cc
+DCLIB = libdoubleconversion.a
+OBJS = $(SRCS:.cc=.o)
+
+ifeq ($(RANLIB),)
+ RANLIB=ranlib
+endif
+
+CXXFLAGS = -Wall -g -O2
+LOADLIBES = -L./src
+
+$(DCLIB): $(OBJS)
+ $(AR) $(ARFLAGS) $(DCLIB) $(OBJS)
+ $(RANLIB) $(DCLIB)
+
+.cc.o:
+ $(CXX) $(INCLUDES) $(CXXFLAGS) -c $< -o $@
+
+clean:
+ rm -f $(OBJS) $(DCLIB)
@@ -0,0 +1,11 @@
+http://code.google.com/p/double-conversion
+
+This project (double-conversion) provides binary-decimal and decimal-binary
+routines for IEEE doubles.
+
+The library consists of efficient conversion routines that have been extracted
+from the V8 JavaScript engine. The code has been refactored and improved so that
+it can be used more easily in other projects.
+
+There is extensive documentation in src/double-conversion.h. Other examples can
+be found in test/cctest/test-conversions.cc.
Oops, something went wrong.

0 comments on commit f15a614

Please sign in to comment.