Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Upgrade V8 to 3.6.4

  • Loading branch information...
ry committed Sep 15, 2011
1 parent f8b9094 commit 1b15af9dd2bf4adb7a2e73ae17a12e2e98a88f72
Showing with 4,246 additions and 2,128 deletions.
  1. +1 −0 deps/v8/AUTHORS
  2. +21 −0 deps/v8/ChangeLog
  3. +2 −2 deps/v8/build/README.txt
  4. +20 −17 deps/v8/include/v8.h
  5. +0 −2 deps/v8/samples/process.cc
  6. +1 −0 deps/v8/src/accessors.cc
  7. +39 −2 deps/v8/src/api.cc
  8. +1 −0 deps/v8/src/arguments.h
  9. +65 −21 deps/v8/src/arm/builtins-arm.cc
  10. +24 −9 deps/v8/src/arm/code-stubs-arm.cc
  11. +6 −12 deps/v8/src/arm/full-codegen-arm.cc
  12. +8 −12 deps/v8/src/arm/ic-arm.cc
  13. +17 −16 deps/v8/src/arm/lithium-arm.cc
  14. +2 −2 deps/v8/src/arm/lithium-arm.h
  15. +47 −46 deps/v8/src/arm/lithium-codegen-arm.cc
  16. +0 −1 deps/v8/src/arm/lithium-gap-resolver-arm.h
  17. +13 −13 deps/v8/src/arm/macro-assembler-arm.cc
  18. +1 −3 deps/v8/src/arm/macro-assembler-arm.h
  19. +1 −0 deps/v8/src/arm/regexp-macro-assembler-arm.h
  20. +80 −80 deps/v8/src/arm/stub-cache-arm.cc
  21. +9 −9 deps/v8/src/array.js
  22. +2 −2 deps/v8/src/ast.cc
  23. +1 −1 deps/v8/src/ast.h
  24. +1 −0 deps/v8/src/bignum.h
  25. +2 −2 deps/v8/src/bootstrapper.cc
  26. +0 −1 deps/v8/src/builtins.cc
  27. +2 −0 deps/v8/src/builtins.h
  28. +0 −1 deps/v8/src/cached-powers.h
  29. +4 −4 deps/v8/src/circular-queue-inl.h
  30. +29 −36 deps/v8/src/code-stubs.cc
  31. +11 −21 deps/v8/src/code-stubs.h
  32. +1 −0 deps/v8/src/compilation-cache.h
  33. +5 −5 deps/v8/src/compiler.h
  34. +0 −5 deps/v8/src/cpu-profiler-inl.h
  35. +0 −11 deps/v8/src/cpu-profiler.cc
  36. +0 −9 deps/v8/src/cpu-profiler.h
  37. +8 −8 deps/v8/src/d8-debug.cc
  38. +4 −4 deps/v8/src/d8-debug.h
  39. +1 −0 deps/v8/src/d8-posix.cc
  40. +18 −5 deps/v8/src/d8-readline.cc
  41. +103 −69 deps/v8/src/d8.cc
  42. +45 −29 deps/v8/src/d8.h
  43. +3 −1 deps/v8/src/dateparser.h
  44. +9 −8 deps/v8/src/debug-agent.cc
  45. +2 −2 deps/v8/src/debug-agent.h
  46. +107 −9 deps/v8/src/debug.cc
  47. +6 −0 deps/v8/src/debug.h
  48. +1 −4 deps/v8/src/disassembler.cc
  49. +12 −12 deps/v8/src/elements.cc
  50. +2 −2 deps/v8/src/elements.h
  51. +55 −10 deps/v8/src/execution.cc
  52. +6 −1 deps/v8/src/execution.h
  53. +15 −6 deps/v8/src/factory.cc
  54. +6 −5 deps/v8/src/factory.h
  55. +3 −3 deps/v8/src/flags.cc
  56. +1 −0 deps/v8/src/frames.h
  57. +3 −1 deps/v8/src/full-codegen.cc
  58. +2 −2 deps/v8/src/gdb-jit.cc
  59. +1 −16 deps/v8/src/handles.cc
  60. +0 −2 deps/v8/src/handles.h
  61. +60 −10 deps/v8/src/heap.cc
  62. +13 −5 deps/v8/src/heap.h
  63. +33 −27 deps/v8/src/hydrogen-instructions.cc
  64. +19 −10 deps/v8/src/hydrogen-instructions.h
  65. +73 −68 deps/v8/src/hydrogen.cc
  66. +2 −1 deps/v8/src/hydrogen.h
  67. +3 −0 deps/v8/src/ia32/assembler-ia32.h
  68. +67 −22 deps/v8/src/ia32/builtins-ia32.cc
  69. +26 −9 deps/v8/src/ia32/code-stubs-ia32.cc
  70. +7 −12 deps/v8/src/ia32/full-codegen-ia32.cc
  71. +7 −12 deps/v8/src/ia32/ic-ia32.cc
  72. +47 −46 deps/v8/src/ia32/lithium-codegen-ia32.cc
  73. +1 −1 deps/v8/src/ia32/lithium-codegen-ia32.h
  74. +18 −17 deps/v8/src/ia32/lithium-ia32.cc
  75. +2 −2 deps/v8/src/ia32/lithium-ia32.h
  76. +13 −13 deps/v8/src/ia32/macro-assembler-ia32.cc
  77. +43 −43 deps/v8/src/ia32/stub-cache-ia32.cc
  78. +14 −38 deps/v8/src/ic.cc
  79. +4 −5 deps/v8/src/ic.h
  80. +0 −2 deps/v8/src/inspector.h
  81. +5 −4 deps/v8/src/isolate.cc
  82. +11 −11 deps/v8/src/isolate.h
  83. +4 −4 deps/v8/src/json.js
  84. +8 −0 deps/v8/src/jsregexp.h
  85. +29 −0 deps/v8/src/list-inl.h
  86. +9 −1 deps/v8/src/list.h
  87. +14 −14 deps/v8/src/lithium.cc
  88. +3 −5 deps/v8/src/lithium.h
  89. +1 −1 deps/v8/src/liveedit.cc
  90. +9 −9 deps/v8/src/liveobjectlist.cc
  91. +0 −3 deps/v8/src/liveobjectlist.h
  92. +1 −1 deps/v8/src/log-utils.cc
  93. +0 −1 deps/v8/src/log-utils.h
  94. +57 −53 deps/v8/src/log.cc
  95. +2 −0 deps/v8/src/log.h
  96. +10 −2 deps/v8/src/macros.py
  97. +4 −3 deps/v8/src/messages.cc
  98. +1 −1 deps/v8/src/messages.h
  99. +3 −0 deps/v8/src/messages.js
  100. +11 −2 deps/v8/src/mips/assembler-mips-inl.h
  101. +194 −20 deps/v8/src/mips/assembler-mips.cc
  102. +71 −13 deps/v8/src/mips/assembler-mips.h
  103. +7 −7 deps/v8/src/mips/code-stubs-mips.cc
  104. +5 −4 deps/v8/src/mips/constants-mips.cc
  105. +39 −11 deps/v8/src/mips/constants-mips.h
  106. +10 −9 deps/v8/src/mips/disasm-mips.cc
  107. +0 −1 deps/v8/src/mips/frames-mips.h
  108. +5 −11 deps/v8/src/mips/full-codegen-mips.cc
  109. +7 −12 deps/v8/src/mips/ic-mips.cc
  110. +13 −13 deps/v8/src/mips/macro-assembler-mips.cc
  111. +1 −0 deps/v8/src/mips/regexp-macro-assembler-mips.h
  112. +5 −0 deps/v8/src/mips/simulator-mips.cc
  113. +80 −80 deps/v8/src/mips/stub-cache-mips.cc
  114. +12 −0 deps/v8/src/objects-debug.cc
  115. +55 −58 deps/v8/src/objects-inl.h
  116. +16 −0 deps/v8/src/objects-printer.cc
  117. +5 −0 deps/v8/src/objects-visiting.cc
  118. +75 −82 deps/v8/src/objects.cc
  119. +130 −102 deps/v8/src/objects.h
  120. +4 −4 deps/v8/src/parser.cc
  121. +0 −1 deps/v8/src/platform-cygwin.cc
  122. +0 −1 deps/v8/src/platform-freebsd.cc
  123. +0 −1 deps/v8/src/platform-macos.cc
  124. +0 −1 deps/v8/src/platform-solaris.cc
  125. +1 −1 deps/v8/src/platform-win32.cc
  126. +23 −26 deps/v8/src/prettyprinter.cc
  127. +0 −16 deps/v8/src/profile-generator-inl.h
  128. +32 −0 deps/v8/src/profile-generator.cc
  129. +4 −3 deps/v8/src/profile-generator.h
  130. +3 −3 deps/v8/src/property.cc
  131. +8 −8 deps/v8/src/property.h
  132. +21 −30 deps/v8/src/proxy.js
  133. +1 −0 deps/v8/src/regexp-macro-assembler-irregexp.h
  134. +1 −0 deps/v8/src/regexp-macro-assembler-tracer.h
  135. +1 −0 deps/v8/src/regexp-stack.h
  136. +167 −73 deps/v8/src/runtime.cc
  137. +5 −0 deps/v8/src/runtime.h
  138. +35 −9 deps/v8/src/runtime.js
  139. +2 −2 deps/v8/src/safepoint-table.cc
  140. +0 −21 deps/v8/src/scanner-character-streams.cc
  141. +19 −0 deps/v8/src/scanner.cc
  142. +1 −1 deps/v8/src/scanner.h
  143. +1 −1 deps/v8/src/scopeinfo.h
  144. +10 −13 deps/v8/src/scopes.cc
  145. +4 −3 deps/v8/src/serialize.cc
  146. +14 −14 deps/v8/src/{smart-pointer.h → smart-array-pointer.h}
  147. +1 −2 deps/v8/src/spaces.h
  148. +2 −3 deps/v8/src/splay-tree.h
  149. +2 −2 deps/v8/src/string-stream.cc
  150. +2 −1 deps/v8/src/string-stream.h
  151. +6 −5 deps/v8/src/string.js
  152. +15 −68 deps/v8/src/stub-cache.cc
  153. +4 −21 deps/v8/src/stub-cache.h
  154. +0 −1 deps/v8/src/type-info.cc
  155. +12 −15 deps/v8/src/utils.h
  156. +1 −7 deps/v8/src/v8globals.h
  157. +32 −14 deps/v8/src/v8natives.js
  158. +1 −0 deps/v8/src/v8threads.h
  159. +1 −1 deps/v8/src/variables.cc
  160. +5 −5 deps/v8/src/variables.h
  161. +1 −1 deps/v8/src/version.cc
  162. +0 −3 deps/v8/src/weakmap.js
  163. +3 −0 deps/v8/src/x64/assembler-x64.h
  164. +59 −18 deps/v8/src/x64/builtins-x64.cc
  165. +25 −8 deps/v8/src/x64/code-stubs-x64.cc
  166. +5 −10 deps/v8/src/x64/full-codegen-x64.cc
  167. +7 −12 deps/v8/src/x64/ic-x64.cc
  168. +47 −46 deps/v8/src/x64/lithium-codegen-x64.cc
  169. +1 −1 deps/v8/src/x64/lithium-codegen-x64.h
  170. +17 −16 deps/v8/src/x64/lithium-x64.cc
  171. +2 −2 deps/v8/src/x64/lithium-x64.h
  172. +12 −12 deps/v8/src/x64/macro-assembler-x64.cc
  173. +46 −46 deps/v8/src/x64/stub-cache-x64.cc
  174. +6 −1 deps/v8/src/zone-inl.h
  175. +13 −2 deps/v8/src/zone.cc
  176. +1 −0 deps/v8/test/cctest/cctest.h
  177. +5 −13 deps/v8/test/cctest/log-eq-of-logging-and-traversal.js
  178. +1 −1 deps/v8/test/cctest/test-cpu-profiler.cc
  179. +2 −1 deps/v8/test/cctest/test-debug.cc
  180. +2 −2 deps/v8/test/cctest/test-func-name-inference.cc
  181. +1 −1 deps/v8/test/cctest/test-heap-profiler.cc
  182. +4 −0 deps/v8/test/cctest/test-lockers.cc
  183. +4 −2 deps/v8/test/cctest/test-log.cc
  184. +2 −2 deps/v8/test/cctest/test-parsing.cc
  185. +6 −5 deps/v8/test/cctest/test-profile-generator.cc
  186. +4 −4 deps/v8/test/cctest/test-regexp.cc
  187. +1 −1 deps/v8/test/cctest/test-reloc-info.cc
  188. +1 −0 deps/v8/test/cctest/test-threads.cc
  189. +75 −0 deps/v8/test/mjsunit/debug-scopes.js
  190. +89 −0 deps/v8/test/mjsunit/debug-step-2.js
  191. +13 −0 deps/v8/test/mjsunit/external-array.js
  192. +3 −0 deps/v8/test/mjsunit/fuzz-natives.js
  193. +897 −113 deps/v8/test/mjsunit/harmony/proxies.js
  194. +4 −0 deps/v8/test/mjsunit/harmony/weakmaps.js
  195. +85 −0 deps/v8/test/mjsunit/regress/regress-1639.js
  196. +58 −0 deps/v8/test/mjsunit/regress/regress-95920.js
  197. +37 −0 deps/v8/test/mjsunit/regress/regress-96523.js
  198. +44 −0 deps/v8/test/mjsunit/regress/regress-bind-receiver.js
  199. +19 −0 deps/v8/tools/codemap.js
  200. +1 −1 deps/v8/tools/gyp/v8.gyp
  201. +9 −2 deps/v8/tools/push-to-trunk.sh
@@ -21,6 +21,7 @@ Daniel Andersson <kodandersson@gmail.com>
Daniel James <dnljms@gmail.com>
Dineel D Sule <dsule@codeaurora.org>
Erich Ocean <erich.ocean@me.com>
Fedor Indutny <fedor@indutny.com>
Jan de Mooij <jandemooij@gmail.com>
Jay Freeman <saurik@saurik.com>
Joel Stanley <joel.stan@gmail.com>
@@ -1,3 +1,24 @@
2011-09-15: Version 3.6.4

Fixed d8's broken readline history.

Removed the need for code delete events in CPU profiler (Issue 1466).

Fixed debugger stepping next with trycatch recursion (Issue 1639).

Fixing parallel execution in d8 (with -p) and some memory leaks.

Support for precise stepping in functions compiled before debugging was
started (step 1).


2011-09-13: Version 3.6.3

Implemented better support of typed arrays in the d8 shell.

Bug fixes and performance improvements on all platforms.


2011-09-08: Version 3.6.2

Added "dependencies" target to top-level Makefile.
@@ -53,11 +53,11 @@ from the Chromium repository. From the root of the V8 project do the following:

> svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin

To run GYP Python is required and it is reccomended to use the same version as
To run GYP Python is required and it is recommended to use the same version as
is used by the Chromium project. This can also be checked out from the Chromium
repository. From the root of the V8 project do the following:

> svn co http://src.chromium.org/svn/trunk/tools/third_party/python_26@70627 third_party/python_26
> svn co http://src.chromium.org/svn/trunk/tools/third_party/python_26@89111 third_party/python_26

Now generate Visual Studio solution and project files for the ia32 architecture:

@@ -1051,18 +1051,21 @@ class String : public Primitive {
NO_NULL_TERMINATION = 2
};

// 16-bit character codes.
V8EXPORT int Write(uint16_t* buffer,
int start = 0,
int length = -1,
int options = NO_OPTIONS) const; // UTF-16
int options = NO_OPTIONS) const;
// ASCII characters.
V8EXPORT int WriteAscii(char* buffer,
int start = 0,
int length = -1,
int options = NO_OPTIONS) const; // ASCII
int options = NO_OPTIONS) const;
// UTF-8 encoded characters.
V8EXPORT int WriteUtf8(char* buffer,
int length = -1,
int* nchars_ref = NULL,
int options = NO_OPTIONS) const; // UTF-8
int options = NO_OPTIONS) const;

/**
* A zero length string.
@@ -1075,7 +1078,7 @@ class String : public Primitive {
V8EXPORT bool IsExternal() const;

/**
* Returns true if the string is both external and ascii
* Returns true if the string is both external and ASCII
*/
V8EXPORT bool IsExternalAscii() const;

@@ -1132,11 +1135,11 @@ class String : public Primitive {
};

/**
* An ExternalAsciiStringResource is a wrapper around an ascii
* An ExternalAsciiStringResource is a wrapper around an ASCII
* string buffer that resides outside V8's heap. Implement an
* ExternalAsciiStringResource to manage the life cycle of the
* underlying buffer. Note that the string data must be immutable
* and that the data must be strict 7-bit ASCII, not Latin1 or
* and that the data must be strict (7-bit) ASCII, not Latin-1 or
* UTF-8, which would require special treatment internally in the
* engine and, in the case of UTF-8, do not allow efficient indexing.
* Use String::New or convert to 16 bit data for non-ASCII.
@@ -1152,7 +1155,7 @@ class String : public Primitive {
virtual ~ExternalAsciiStringResource() {}
/** The string data from the underlying buffer.*/
virtual const char* data() const = 0;
/** The number of ascii characters in the string.*/
/** The number of ASCII characters in the string.*/
virtual size_t length() const = 0;
protected:
ExternalAsciiStringResource() {}
@@ -1165,25 +1168,25 @@ class String : public Primitive {
inline ExternalStringResource* GetExternalStringResource() const;

/**
* Get the ExternalAsciiStringResource for an external ascii string.
* Get the ExternalAsciiStringResource for an external ASCII string.
* Returns NULL if IsExternalAscii() doesn't return true.
*/
V8EXPORT ExternalAsciiStringResource* GetExternalAsciiStringResource() const;

static inline String* Cast(v8::Value* obj);

/**
* Allocates a new string from either utf-8 encoded or ascii data.
* Allocates a new string from either UTF-8 encoded or ASCII data.
* The second parameter 'length' gives the buffer length.
* If the data is utf-8 encoded, the caller must
* If the data is UTF-8 encoded, the caller must
* be careful to supply the length parameter.
* If it is not given, the function calls
* 'strlen' to determine the buffer length, it might be
* wrong if 'data' contains a null character.
*/
V8EXPORT static Local<String> New(const char* data, int length = -1);

/** Allocates a new string from utf16 data.*/
/** Allocates a new string from 16-bit character codes.*/
V8EXPORT static Local<String> New(const uint16_t* data, int length = -1);

/** Creates a symbol. Returns one if it exists already.*/
@@ -1218,7 +1221,7 @@ class String : public Primitive {
V8EXPORT bool MakeExternal(ExternalStringResource* resource);

/**
* Creates a new external string using the ascii data defined in the given
* Creates a new external string using the ASCII data defined in the given
* resource. When the external string is no longer live on V8's heap the
* resource will be disposed by calling its Dispose method. The caller of
* this function should not otherwise delete or modify the resource. Neither
@@ -1244,18 +1247,18 @@ class String : public Primitive {
*/
V8EXPORT bool CanMakeExternal();

/** Creates an undetectable string from the supplied ascii or utf-8 data.*/
/** Creates an undetectable string from the supplied ASCII or UTF-8 data.*/
V8EXPORT static Local<String> NewUndetectable(const char* data,
int length = -1);

/** Creates an undetectable string from the supplied utf-16 data.*/
/** Creates an undetectable string from the supplied 16-bit character codes.*/
V8EXPORT static Local<String> NewUndetectable(const uint16_t* data,
int length = -1);

/**
* Converts an object to a utf8-encoded character array. Useful if
* Converts an object to a UTF-8-encoded character array. Useful if
* you want to print the object. If conversion to a string fails
* (eg. due to an exception in the toString() method of the object)
* (e.g. due to an exception in the toString() method of the object)
* then the length() method returns 0 and the * operator returns
* NULL.
*/
@@ -1276,7 +1279,7 @@ class String : public Primitive {
};

/**
* Converts an object to an ascii string.
* Converts an object to an ASCII string.
* Useful if you want to print the object.
* If conversion to a string fails (eg. due to an exception in the toString()
* method of the object) then the length() method returns 0 and the * operator
@@ -77,7 +77,6 @@ class HttpRequestProcessor {
*/
class JsHttpRequestProcessor : public HttpRequestProcessor {
public:

// Creates a new processor that processes requests by invoking the
// Process function of the JavaScript script given as an argument.
explicit JsHttpRequestProcessor(Handle<String> script) : script_(script) { }
@@ -88,7 +87,6 @@ class JsHttpRequestProcessor : public HttpRequestProcessor {
virtual bool Process(HttpRequest* req);

private:

// Execute the script associated with this processor and extract the
// Process function. Returns true if this succeeded, otherwise false.
bool ExecuteScript(Handle<String> script);
@@ -710,6 +710,7 @@ class FrameFunctionIterator {
} while (next_function != NULL);
return false;
}

private:
void GetFunctions() {
functions_.Rewind(0);
@@ -3266,6 +3266,42 @@ bool v8::Object::DeleteHiddenValue(v8::Handle<v8::String> key) {

namespace {

static i::ElementsKind GetElementsKindFromExternalArrayType(
ExternalArrayType array_type) {
switch (array_type) {
case kExternalByteArray:
return i::EXTERNAL_BYTE_ELEMENTS;
break;
case kExternalUnsignedByteArray:
return i::EXTERNAL_UNSIGNED_BYTE_ELEMENTS;
break;
case kExternalShortArray:
return i::EXTERNAL_SHORT_ELEMENTS;
break;
case kExternalUnsignedShortArray:
return i::EXTERNAL_UNSIGNED_SHORT_ELEMENTS;
break;
case kExternalIntArray:
return i::EXTERNAL_INT_ELEMENTS;
break;
case kExternalUnsignedIntArray:
return i::EXTERNAL_UNSIGNED_INT_ELEMENTS;
break;
case kExternalFloatArray:
return i::EXTERNAL_FLOAT_ELEMENTS;
break;
case kExternalDoubleArray:
return i::EXTERNAL_DOUBLE_ELEMENTS;
break;
case kExternalPixelArray:
return i::EXTERNAL_PIXEL_ELEMENTS;
break;
}
UNREACHABLE();
return i::DICTIONARY_ELEMENTS;
}


void PrepareExternalArrayElements(i::Handle<i::JSObject> object,
void* data,
ExternalArrayType array_type,
@@ -3284,9 +3320,9 @@ void PrepareExternalArrayElements(i::Handle<i::JSObject> object,
elements->map() != isolate->heap()->MapForExternalArrayType(array_type);
if (cant_reuse_map) {
i::Handle<i::Map> external_array_map =
isolate->factory()->GetExternalArrayElementsMap(
isolate->factory()->GetElementsTransitionMap(
i::Handle<i::Map>(object->map()),
array_type,
GetElementsKindFromExternalArrayType(array_type),
object->HasFastProperties());
object->set_map(*external_array_map);
}
@@ -3348,6 +3384,7 @@ int v8::Object::GetIndexedPropertiesPixelDataLength() {
}
}


void v8::Object::SetIndexedPropertiesToExternalArrayData(
void* data,
ExternalArrayType array_type,
@@ -75,6 +75,7 @@ class Arguments BASE_EMBEDDED {
int length() const { return length_; }

Object** arguments() { return arguments_; }

private:
int length_;
Object** arguments_;

0 comments on commit 1b15af9

Please sign in to comment.
You can’t perform that action at this time.