| Index: src/x64/assembler-x64.cc
|
| diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc
|
| index c7d160d971ade38a206e1fcab070940bf6e7b577..0e4b2620a44aab04d0c3223d0a77757949c533ae 100644
|
| --- a/src/x64/assembler-x64.cc
|
| +++ b/src/x64/assembler-x64.cc
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2009 the V8 project authors. All rights reserved.
|
| +// Copyright 2010 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:
|
| @@ -44,10 +44,11 @@ CpuFeatures::CpuFeatures()
|
| found_by_runtime_probing_(0) {
|
| }
|
|
|
| -void CpuFeatures::Probe() {
|
| +
|
| +void CpuFeatures::Probe(bool portable) {
|
| ASSERT(HEAP->HasBeenSetup());
|
| - ASSERT(supported_ == kDefaultCpuFeatures);
|
| - if (Serializer::enabled()) {
|
| + supported_ = kDefaultCpuFeatures;
|
| + if (portable && Serializer::enabled()) {
|
| supported_ |= OS::CpuFeaturesImpliedByPlatform();
|
| return; // No features if we might serialize.
|
| }
|
| @@ -133,7 +134,7 @@ void CpuFeatures::Probe() {
|
| found_by_runtime_probing_ &= ~kDefaultCpuFeatures;
|
| uint64_t os_guarantees = OS::CpuFeaturesImpliedByPlatform();
|
| supported_ |= os_guarantees;
|
| - found_by_runtime_probing_ &= ~os_guarantees;
|
| + found_by_runtime_probing_ &= portable ? ~os_guarantees : 0;
|
| // SSE2 and CMOV must be available on an X64 CPU.
|
| ASSERT(IsSupported(CPUID));
|
| ASSERT(IsSupported(SSE2));
|
| @@ -824,6 +825,7 @@ void Assembler::bts(const Operand& dst, Register src) {
|
|
|
|
|
| void Assembler::call(Label* L) {
|
| + positions_recorder()->WriteRecordedPositions();
|
| EnsureSpace ensure_space(this);
|
| last_pc_ = pc_;
|
| // 1110 1000 #32-bit disp.
|
| @@ -855,6 +857,7 @@ void Assembler::call(Handle<Code> target, RelocInfo::Mode rmode) {
|
|
|
|
|
| void Assembler::call(Register adr) {
|
| + positions_recorder()->WriteRecordedPositions();
|
| EnsureSpace ensure_space(this);
|
| last_pc_ = pc_;
|
| // Opcode: FF /2 r64.
|
| @@ -865,6 +868,7 @@ void Assembler::call(Register adr) {
|
|
|
|
|
| void Assembler::call(const Operand& op) {
|
| + positions_recorder()->WriteRecordedPositions();
|
| EnsureSpace ensure_space(this);
|
| last_pc_ = pc_;
|
| // Opcode: FF /2 m64.
|
| @@ -2936,6 +2940,12 @@ void Assembler::emit_sse_operand(Register dst, XMMRegister src) {
|
| }
|
|
|
|
|
| +void Assembler::dd(uint32_t data) {
|
| + EnsureSpace ensure_space(this);
|
| + emitl(data);
|
| +}
|
| +
|
| +
|
| // Relocation information implementations.
|
|
|
| void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
|
| @@ -2965,7 +2975,7 @@ void Assembler::RecordDebugBreakSlot() {
|
|
|
|
|
| void Assembler::RecordComment(const char* msg) {
|
| - if (FLAG_debug_code) {
|
| + if (FLAG_code_comments) {
|
| EnsureSpace ensure_space(this);
|
| RecordRelocInfo(RelocInfo::COMMENT, reinterpret_cast<intptr_t>(msg));
|
| }
|
|
|