deps: apply floating irhydra patch to v8

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/8476
This commit is contained in:
Fedor Indutny 2014-10-02 08:16:24 +04:00
parent 939278ac05
commit 0e1320552b
5 changed files with 34 additions and 7 deletions

View File

@ -190,7 +190,7 @@ void CodeGenerator::PrintCode(Handle<Code> code, CompilationInfo* info) {
function->end_position() - function->start_position() + 1; function->end_position() - function->start_position() + 1;
for (int i = 0; i < source_len; i++) { for (int i = 0; i < source_len; i++) {
if (stream.HasMore()) { if (stream.HasMore()) {
os << AsUC16(stream.GetNext()); os << AsReversiblyEscapedUC16(stream.GetNext());
} }
} }
os << "\n\n"; os << "\n\n";

View File

@ -3498,7 +3498,7 @@ int HGraph::TraceInlinedFunction(
shared->end_position() - shared->start_position() + 1; shared->end_position() - shared->start_position() + 1;
for (int i = 0; i < source_len; i++) { for (int i = 0; i < source_len; i++) {
if (stream.HasMore()) { if (stream.HasMore()) {
os << AsUC16(stream.GetNext()); os << AsReversiblyEscapedUC16(stream.GetNext());
} }
} }
} }

View File

@ -11417,7 +11417,10 @@ void Code::Disassemble(const char* name, OStream& os) { // NOLINT
os << "Instructions (size = " << instruction_size() << ")\n"; os << "Instructions (size = " << instruction_size() << ")\n";
// TODO(svenpanne) The Disassembler should use streams, too! // 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"; os << "\n";
if (kind() == FUNCTION) { if (kind() == FUNCTION) {

View File

@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
#include <algorithm> #include <algorithm>
#include <cctype>
#include <cmath> #include <cmath>
#include "src/base/platform/platform.h" // For isinf/isnan with MSVC #include "src/base/platform/platform.h" // For isinf/isnan with MSVC
@ -163,12 +164,22 @@ OFStream& OFStream::flush() {
} }
OStream& operator<<(OStream& os, const AsUC16& c) { OStream& operator<<(OStream& os, const AsReversiblyEscapedUC16& c) {
char buf[10]; char buf[10];
const char* format = (0x20 <= c.value && c.value <= 0x7F) const char* format =
(std::isprint(c.value) || std::isspace(c.value)) && c.value != '\\'
? "%c" ? "%c"
: (c.value <= 0xff) ? "\\x%02x" : "\\u%04x"; : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x";
snprintf(buf, sizeof(buf), format, c.value); snprintf(buf, sizeof(buf), format, c.value);
return os << buf; return os << buf;
} }
OStream& operator<<(OStream& os, const AsUC16& c) {
char buf[10];
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;
}
} } // namespace v8::internal } } // namespace v8::internal

View File

@ -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 { struct AsUC16 {
explicit AsUC16(uint16_t v) : value(v) {} explicit AsUC16(uint16_t v) : value(v) {}
uint16_t value; 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); OStream& operator<<(OStream& os, const AsUC16& c);
} } // namespace v8::internal } } // namespace v8::internal