| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent d160518 commit 0f69ec4
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,7 +11,7 @@ | |||
| 11 | 11 | #define V8_MAJOR_VERSION 10 | |
| 12 | 12 | #define V8_MINOR_VERSION 9 | |
| 13 | 13 | #define V8_BUILD_NUMBER 194 | |
| 14 | - #define V8_PATCH_LEVEL 6 | ||
| 14 | + #define V8_PATCH_LEVEL 9 | ||
| 15 | 15 | ||
| 16 | 16 | // Use 1 for candidates and 0 otherwise. | |
| 17 | 17 | // (Boolean macro values are not supported by all preprocessors.) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -929,6 +929,7 @@ void Scope::Snapshot::Reparent(DeclarationScope* new_parent) { | |||
| 929 | 929 | // Move eval calls since Snapshot's creation into new_parent. | |
| 930 | 930 | if (outer_scope_->calls_eval_) { | |
| 931 | 931 | new_parent->RecordEvalCall(); | |
| 932 | + outer_scope_->calls_eval_ = false; | ||
| 932 | 933 | declaration_scope_->sloppy_eval_can_extend_vars_ = false; | |
| 933 | 934 | } | |
| 934 | 935 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1444,10 +1444,6 @@ int Assembler::branch_offset(Label* L) { | |||
| 1444 | 1444 | L->link_to(pc_offset()); | |
| 1445 | 1445 | } | |
| 1446 | 1446 | ||
| 1447 | - // Block the emission of the constant pool, since the branch instruction must | ||
| 1448 | - // be emitted at the pc offset recorded by the label. | ||
| 1449 | - if (!is_const_pool_blocked()) BlockConstPoolFor(1); | ||
| 1450 | - | ||
| 1451 | 1447 | return target_pos - (pc_offset() + Instruction::kPcLoadDelta); | |
| 1452 | 1448 | } | |
| 1453 | 1449 | ||
@@ -1458,6 +1454,11 @@ void Assembler::b(int branch_offset, Condition cond, RelocInfo::Mode rmode) { | |||
| 1458 | 1454 | int imm24 = branch_offset >> 2; | |
| 1459 | 1455 | const bool b_imm_check = is_int24(imm24); | |
| 1460 | 1456 | CHECK(b_imm_check); | |
| 1457 | + | ||
| 1458 | + // Block the emission of the constant pool before the next instruction. | ||
| 1459 | + // Otherwise the passed-in branch offset would be off. | ||
| 1460 | + BlockConstPoolFor(1); | ||
| 1461 | + | ||
| 1461 | 1462 | emit(cond | B27 | B25 | (imm24 & kImm24Mask)); | |
| 1462 | 1463 | ||
| 1463 | 1464 | if (cond == al) { | |
@@ -1472,6 +1473,11 @@ void Assembler::bl(int branch_offset, Condition cond, RelocInfo::Mode rmode) { | |||
| 1472 | 1473 | int imm24 = branch_offset >> 2; | |
| 1473 | 1474 | const bool bl_imm_check = is_int24(imm24); | |
| 1474 | 1475 | CHECK(bl_imm_check); | |
| 1476 | + | ||
| 1477 | + // Block the emission of the constant pool before the next instruction. | ||
| 1478 | + // Otherwise the passed-in branch offset would be off. | ||
| 1479 | + BlockConstPoolFor(1); | ||
| 1480 | + | ||
| 1475 | 1481 | emit(cond | B27 | B25 | B24 | (imm24 & kImm24Mask)); | |
| 1476 | 1482 | } | |
| 1477 | 1483 | ||
@@ -1481,6 +1487,11 @@ void Assembler::blx(int branch_offset) { | |||
| 1481 | 1487 | int imm24 = branch_offset >> 2; | |
| 1482 | 1488 | const bool blx_imm_check = is_int24(imm24); | |
| 1483 | 1489 | CHECK(blx_imm_check); | |
| 1490 | + | ||
| 1491 | + // Block the emission of the constant pool before the next instruction. | ||
| 1492 | + // Otherwise the passed-in branch offset would be off. | ||
| 1493 | + BlockConstPoolFor(1); | ||
| 1494 | + | ||
| 1484 | 1495 | emit(kSpecialCondition | B27 | B25 | h | (imm24 & kImm24Mask)); | |
| 1485 | 1496 | } | |
| 1486 | 1497 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5295,7 +5295,22 @@ void CodeGenerator::AssembleMove(InstructionOperand* source, | |||
| 5295 | 5295 | case MoveType::kStackToRegister: { | |
| 5296 | 5296 | Operand src = g.ToOperand(source); | |
| 5297 | 5297 | if (source->IsStackSlot()) { | |
| 5298 | - __ movq(g.ToRegister(destination), src); | ||
| 5298 | + MachineRepresentation mr = | ||
| 5299 | + LocationOperand::cast(source)->representation(); | ||
| 5300 | + const bool is_32_bit = mr == MachineRepresentation::kWord32 || | ||
| 5301 | + mr == MachineRepresentation::kCompressed || | ||
| 5302 | + mr == MachineRepresentation::kCompressedPointer; | ||
| 5303 | + // TODO(13581): Fix this for other code kinds (see | ||
| 5304 | + // https://crbug.com/1356461). | ||
| 5305 | + if (code_kind() == CodeKind::WASM_FUNCTION && is_32_bit) { | ||
| 5306 | + // When we need only 32 bits, move only 32 bits. Benefits: | ||
| 5307 | + // - Save a byte here and there (depending on the destination | ||
| 5308 | + // register; "movl eax, ..." is smaller than "movq rax, ..."). | ||
| 5309 | + // - Safeguard against accidental decompression of compressed slots. | ||
| 5310 | + __ movl(g.ToRegister(destination), src); | ||
| 5311 | + } else { | ||
| 5312 | + __ movq(g.ToRegister(destination), src); | ||
| 5313 | + } | ||
| 5299 | 5314 | } else { | |
| 5300 | 5315 | DCHECK(source->IsFPStackSlot()); | |
| 5301 | 5316 | XMMRegister dst = g.ToDoubleRegister(destination); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2099,7 +2099,7 @@ class WasmGraphBuildingInterface { | |||
| 2099 | 2099 | } | |
| 2100 | 2100 | if (exception_value != nullptr) { | |
| 2101 | 2101 | *exception_value = builder_->LoopExitValue( | |
| 2102 | - *exception_value, MachineRepresentation::kWord32); | ||
| 2102 | + *exception_value, MachineRepresentation::kTaggedPointer); | ||
| 2103 | 2103 | } | |
| 2104 | 2104 | if (wrap_exit_values) { | |
| 2105 | 2105 | WrapLocalsAtLoopExit(decoder, control); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,7 @@ | |||
| 1 | + // Copyright 2022 the V8 project authors. All rights reserved. | ||
| 2 | + // Use of this source code is governed by a BSD-style license that can be | ||
| 3 | + // found in the LICENSE file. | ||
| 4 | + | ||
| 5 | + // Flags: --stress-lazy-source-positions | ||
| 6 | + | ||
| 7 | + ((__v_0 = ((__v_0 =eval()) => {})()) => {})() | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments