summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2014-10-02 08:16:24 +0400
committerFedor Indutny <fedor@indutny.com>2014-10-08 15:44:40 +0400
commit270e998c90323785ef5da32acc247b2963afd0b8 (patch)
tree02d09e95722780fe30ec352160f94870308bd9cd
parent9116b240c924d37627313416b7ee038d0580afbc (diff)
downloadnode-new-270e998c90323785ef5da32acc247b2963afd0b8.tar.gz
deps: apply floating irhydra patch to v8
Reviewed-By: Fedor Indutny <fedor@indutny.com> PR-URL: https://github.com/joyent/node/pull/8476
-rw-r--r--deps/v8/src/codegen.cc2
-rw-r--r--deps/v8/src/hydrogen.cc2
-rw-r--r--deps/v8/src/objects.cc5
-rw-r--r--deps/v8/src/ostreams.cc17
-rw-r--r--deps/v8/src/ostreams.h15
5 files changed, 34 insertions, 7 deletions
diff --git a/deps/v8/src/codegen.cc b/deps/v8/src/codegen.cc
index 6b12d64563..a24220d9d0 100644
--- a/deps/v8/src/codegen.cc
+++ b/deps/v8/src/codegen.cc
@@ -190,7 +190,7 @@ void CodeGenerator::PrintCode(Handle<Code> code, CompilationInfo* info) {
function->end_position() - function->start_position() + 1;
for (int i = 0; i < source_len; i++) {
if (stream.HasMore()) {
- os << AsUC16(stream.GetNext());
+ os << AsReversiblyEscapedUC16(stream.GetNext());
}
}
os << "\n\n";
diff --git a/deps/v8/src/hydrogen.cc b/deps/v8/src/hydrogen.cc
index 3ddd7cce83..63174aa5db 100644
--- a/deps/v8/src/hydrogen.cc
+++ b/deps/v8/src/hydrogen.cc
@@ -3498,7 +3498,7 @@ int HGraph::TraceInlinedFunction(
shared->end_position() - shared->start_position() + 1;
for (int i = 0; i < source_len; i++) {
if (stream.HasMore()) {
- os << AsUC16(stream.GetNext());
+ os << AsReversiblyEscapedUC16(stream.GetNext());
}
}
}
diff --git a/deps/v8/src/objects.cc b/deps/v8/src/objects.cc
index 29af1d8337..cfdb9ccb63 100644
--- a/deps/v8/src/objects.cc
+++ b/deps/v8/src/objects.cc
@@ -11417,7 +11417,10 @@ void Code::Disassemble(const char* name, OStream& os) { // NOLINT
os << "Instructions (size = " << instruction_size() << ")\n";
// TODO(svenpanne) The Disassembler should use streams, too!
- Disassembler::Decode(stdout, this);
+ {
+ CodeTracer::Scope trace_scope(GetIsolate()->GetCodeTracer());
+ Disassembler::Decode(trace_scope.file(), this);
+ }
os << "\n";
if (kind() == FUNCTION) {
diff --git a/deps/v8/src/ostreams.cc b/deps/v8/src/ostreams.cc
index 0f5bec41d2..62304eb908 100644
--- a/deps/v8/src/ostreams.cc
+++ b/deps/v8/src/ostreams.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include <algorithm>
+#include <cctype>
#include <cmath>
#include "src/base/platform/platform.h" // For isinf/isnan with MSVC
@@ -163,11 +164,21 @@ OFStream& OFStream::flush() {
}
+OStream& operator<<(OStream& os, const AsReversiblyEscapedUC16& c) {
+ char buf[10];
+ const char* format =
+ (std::isprint(c.value) || std::isspace(c.value)) && c.value != '\\'
+ ? "%c"
+ : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x";
+ snprintf(buf, sizeof(buf), format, c.value);
+ return os << buf;
+}
+
+
OStream& operator<<(OStream& os, const AsUC16& c) {
char buf[10];
- const char* format = (0x20 <= c.value && c.value <= 0x7F)
- ? "%c"
- : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x";
+ const char* format =
+ std::isprint(c.value) ? "%c" : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x";
snprintf(buf, sizeof(buf), format, c.value);
return os << buf;
}
diff --git a/deps/v8/src/ostreams.h b/deps/v8/src/ostreams.h
index f70b6de230..08f53c52ac 100644
--- a/deps/v8/src/ostreams.h
+++ b/deps/v8/src/ostreams.h
@@ -117,13 +117,26 @@ class OFStream: public OStream {
};
-// A wrapper to disambiguate uint16_t and uc16.
+// Wrappers to disambiguate uint16_t and uc16.
struct AsUC16 {
explicit AsUC16(uint16_t v) : value(v) {}
uint16_t value;
};
+struct AsReversiblyEscapedUC16 {
+ explicit AsReversiblyEscapedUC16(uint16_t v) : value(v) {}
+ uint16_t value;
+};
+
+
+// Writes the given character to the output escaping everything outside of
+// printable/space ASCII range. Additionally escapes '\' making escaping
+// reversible.
+OStream& operator<<(OStream& os, const AsReversiblyEscapedUC16& c);
+
+// Writes the given character to the output escaping everything outside
+// of printable ASCII range.
OStream& operator<<(OStream& os, const AsUC16& c);
} } // namespace v8::internal